I2C SPI USB CAN eSPI Cable Testing View All Videos Quick Start Guides Software Downloads App Notes White Papers User Manuals Knowledge Base Sales Support About Us
Products Blog Sales Support Contact Search
What is FPGA? Introduction to Field Programmable Gate Array
Staff Writer

What is FPGA?

A field-programmable gate array, or FPGA for short, is a special type of semiconductor device that can be programmed by a customer, a product designer, or embedded systems engineer after the hardware has been manufactured and sold. An FPGA gets its name from two of its defining properties: field-programmable refers to the fact that these integrated circuits can be programmed in the field and a gate-array is a reference to the two-dimensional array of logic gates that make up the circuit.

An FPGA can be described as an integrated circuit, a set of circuits that includes wiring, programmable logic gates, and registers. Logic gates are the basis for the functionality of digital circuits. They perform logical operations using Boolean algebra on electrical pulses that represent the binary language of computers. FPGAs allow embedded systems engineers to reprogram these logic gates with customized digital logic on an as-needed basis, updating or modifying the functionality of the circuit to match requirements in the field.

FPGA vs ASIC - What's the Difference?

ASIC is an acronym for application-specific integrated circuit. This type of integrated circuit is configured for a specific application, and they maintain that same functionality throughout their entire operational life. The central processing unit (CPU) in your home computer is an ASIC - it will function as a CPU for its whole life.

The key difference between an FPGA and the CPU in your home computer is that your CPU cannot be reprogrammed. In an ASIC, the digital circuitry consists of permanently connected logic gates and flip-flops in silicon. These logic gates cannot be configured or programmed after manufacturing - you simply get what you get.

In contrast, an FPGA can be configured in the field to deliver new features and functions, adapt to changing design standards, or meet the requirements of specific applications, even when the FPGA is already installed in a system. FPGAs offer increased flexibility in design with reduced costs and a decreased likelihood of delays in product design.

Field Programmable Gate Array (FPGA) Applications

FPGAs were first developed in the 1980s, but they have evolved and changed significantly since their initial inception. The first FPGA circuits were large and took up a lot of space, but as circuit components continued to get smaller, hardware engineers were able to incorporate an increasing number of devices. This ultimately allowed for more complex functionality and faster arithmetic on FPGAs, which opens up a whole new set of FPGA applications for hardware developers and engineers.

The FPGAs in use by embedded systems designers today are highly sophisticated and feature-rich. They include mixes of configurable static random access memory (SRAM), logic blocks, routing, and high-speed input/output pins. FPGAs may also include other hard intellectual property (IP) such as memory blocks, transceivers, protocol controllers, calculating circuits, and even entire CPUs. While these IP features are typically not configurable, they do provide additional functionality with lower cost and power consumption than other types of circuits.

Build Your Own CPU with FPGA

With the added sophistication of today's FPGAs, embedded engineers can build an entire processor using an FPGA. There are several electronics manufacturers encouraging their customers to use their design tools and framework to develop a customized 32-bit CPU using an FPGA. Customized central processing units can be uniquely configured and optimized to run a specific application, and may even do so faster than the best available mass market processor.

Of course, building your own CPU from scratch requires a level of expertise in device design and logic programming. You will need to determine what peripherals the processor has to manage, define the communication protocols that will be used to interact with those peripherals, determine how much logic and memory is needed for data and programs, and create an optimized instruction-set for implementation.

Then it's time to create and compile your code onto the FPGA - and you'll also need to build a custom compiler if you plan to write any software that will run on your new processor.

FPGA Application in Wireless Data

The widespread proliferation and availability of wireless data has had a significant impact on how we access information and technology each day. New technologies like 4G and 5G networking protocols are enabling faster data transfer rates and making it easier to send more data through the internet from more devices at higher speeds than before. As new technology standards emerge for wireless data transfer, FPGAs can help wireless carriers reduce the expenses associated with upgrading their telecommunications infrastructure.

FPGAs today are equipped with built-in low-latency modules that work well with advanced networks, along with tools that help mobile carriers leverage the key advantages associated with FPGAs: lower power consumption and cost, with greater productivity and performance.

FPGA Application in the Automotive Sector

Driven by a need to increase safety performance and customer convenience, auto-makers have integrated electronics and computerization into virtually every aspect of automotive design. From safety features like airbags and automatic braking systems to ease-of-use features like navigation systems and 360-degree cameras, vehicles today use microcontrollers to integrate sensory information, interpret the environmental conditions and trigger autonomous responses or relay information to the driver.

Driver assistance cameras are a common area of FPGA application in the automotive sector. Camera systems for vehicles require high-speed video processing, the complex fusion of data from sensors on the vehicle, and real-time data analytics that help determine the best course of action. These systems depend on data from radar and laser sensors, which provide data in different formats that may not integrate well on some architectures.

screen on dashboard of backup camera in car Photo by Erik Mclean on Pexels

Traditional digital signal processors or microcontrollers are not sufficient for these high-tech camera systems, as they lack the necessary capacity and power output to perform data analytics and real-time video processing at the same time. There may also be a need for high dynamic range (HDR) processing to support modern cameras that can equally visualize both darkly and brightly lit areas of a scene.

As an alternative to traditional microcontrollers, engineers can integrate the whole camera system using a single FPGA. The FPGA can be programmed with a customized configuration to manage the unique computing requirements of the camera system, including using parallel processing engines to satisfy functions that require a lot of computing power.

FPGAs in High Performance Computing

FPGAs are increasingly being used in high-performance computing, despite the fact that CPU's may run at least an order of magnitude faster. This change has to do with the fundamental architectural differences between FPGAs and manufactured processing chips.

CPUs process requests in sequence. They break an algorithm into a sequence of operations and execute those operations one at a time until they are completed. In contrast, FPGAs can be configured as parallel processing devices - they can break an algorithm into parts and process them all at once. As a result, FPGAs can perform the same task in fewer clock ticks than a CPU despite having a lower clock speed.

The ability to process a high volume of data or transactions in a shorter period of time is essential for applications where a large volume of data is inherent, such as financial options trading, molecular dynamics, bioscience, and finite impulse response filters, among others. These applications depend on floating-point arithmetic that generates more accurate results than would be obtained using integer calculations.

Developers working in these areas use FPGAs to design and implement application-specific co-processors that help manage the increased need for memory resources and logical operations.

Summary

FPGAs are one of the most valuable development options for embedded systems engineers, as they give complete control over hardware functionality. This allows engineers to design their own application-specific functions and operations that are uniquely suited for specific tasks or products.

Total Phase makes it easier to build FPGA-based products with our Cheetah SPI Host Adapter. Embedded systems engineers can use our Cheetah adapter to load FPGA images into SPI flash memory. Stored FPGA images add configuration flexibility during the debug process for FPGA devices, helping to streamline the testing process and reduce time-to-market.

Learn More About Our Product