My IBM Log in Subscribe

What is a field programmable gate array (FPGA)?

8 May 2024 

Authors

Josh Schneider

Senior Writer

IBM Blog

Ian Smalley

Senior Editorial Strategist

What is a field programmable gate array (FPGA)?

A field programmable gate array (FPGA) is a versatile type of integrated circuit, which, unlike traditional logic devices such as application-specific integrated circuits (ASICs), is designed to be programmable (and often reprogrammable) to suit different purposes, notably high-performance computing (HPC) and prototyping.

The phrase “field programmable” refers to an FPGA’s ability to be programmed "in the field" or after the chip has been released from the manufacturer. Xilinx, a technology manufacturer, first introduced FPGAs in 1985.

FPGAs can be adapted to suit multiple use cases, including emerging or experimental purposes, without the need to physically modify or alter their hardware. This reconfigurable versatility is achieved through an array of fixed programmable logic blocks (PLBs) and flexible interconnects that can be configured to perform either complex operations or to serve as simple logic gates. FPGAs also include memory elements, ranging from single-bit flip-flops to very dense memory arrays, for digital data storage within the device.

FPGAs are highly valued for their combination of high performance and extreme versatility. They are particularly useful in applications requiring high performance, low latency and real-time flexibility. For this reason, they are commonly used in the telecommunications, automotive and aerospace industries.

3D design of balls rolling on a track

The latest AI News + Insights 


Discover expertly curated insights and news on AI, cloud and more in the weekly Think Newsletter. 

Field programmable gate arrays (FPGAs) vs. application-specific integrated circuits (ASICs)

FPGAs and ASICs serve different purposes.

An ASIC is developed and optimized for a specific application and cannot be reconfigured. Its internal circuit elements (transistors) are arranged in a fixed structure with fixed and unchangeable interconnect (wiring) in between.

Because an ASIC serves only one purpose, it incorporates only the logic elements that are necessary for that purpose; for example, if a floating-point multiplier is not needed, then it is not incorporated into the design.

Conversely, an FPGA may be configured and reconfigured for any potential applications. Like an ASIC, its internal circuit elements are arranged in a fixed structure (programmable logic blocks or PLBs) but with reconfigurable interconnects in between. The logic elements in an FPGA are selected to support a wide variety of applications but suffer from “use it or lose it” when specific logic elements are not used. If a floating-point multiplier is not required for a particular application, but the FPGA contains one, then that resource is unconnected and represents “wasted space” within the FPGA.

While both devices can contain hundreds of millions of transistors, an ASIC can use those transistors to deliver high efficiency and performance at the expense of flexibility. The upfront NRE charges to develop an ASIC can be exorbitant, while the unit costs can be relatively low.

An FPGA uses its transistors to deliver high efficiency and high performance but with tremendous flexibility. The upfront NRE charges to develop an FPGA can be extremely low, while the unit costs are generally higher. It is important to note that these are not hard and fast rules. In the performance arena, for example, recent FPGAs have evolved to deliver clock rates of more than 500 MHz and are generally fabricated at state-of-the-art silicon process geometries. In short, the boundary between FPGAs and ASIC becomes increasingly fuzzy with each new FPGA generation.

IBM Storage FlashSystem

IBM Storage FlashSystem: Optimizing VMware for Cost, Simplicity and Resilience

Discover how IBM FlashSystem optimizes VMware environments for cost efficiency, simplicity, and resilience. This session highlights how FlashSystem can enhance data safety, accessibility, and performance, making it an ideal solution for modern IT infrastructures.

How do field programmable gate arrays work?

An FPGA becomes a customized hardware device by configuring its PLBs and interconnects using a standard hardware description language (HDL) like Verilog or VHDL.

Specific FPGA-based functions, as well as the interconnects between those functions, are “described” in an HDL. The description is compiled to produce an FPGA configuration file. Using a hardware description language, it is possible to use built-in FPGA resources (memory arrays, PCI cores and many more), as well as to create customized logic circuits (adders, multiplexers and other application-specific functions) from more primitive FPGA elements.

In a process known as synthesis, the HDL code is translated into a netlist, an effective description of the logic gates and interconnects needed to implement the HDL code. The netlist is then mapped onto the PLBs and interconnects that physically form the unique circuit.

Modern FPGAs produced by manufacturers like Intel and Altera offer a wide range of digital and analog features, including impressive logic densities, flash memory, embedded processors and digital signal processing (DSP) blocks. FPGAs can be configured and reconfigured by modifying electrical inputs and outputs, choosing which internal resources are used and determining how these resources are connected through configurable routing resources—the end result being a dedicated hardware solution to solve a particular problem.

As with software, the development of complex FPGA designs might be streamlined by using pre-designed libraries of various functions and digital circuits, referred to as intellectual property (IP) cores. These libraries are available for purchase or lease from FPGA vendors and third-party suppliers who often specialize in developing various functions.

Field programmable gate array modules and components

In addition to traditional circuitry components like microcontrollers and converters, to achieve their reconfigurable functions, modern FPGA devices use a combination of various programmable elements.

These programmable elements are primarily configurable logic blocks (CLBs), programmable interconnects, programmable routing, programmable input/output blocks (IOBs), on-chip memory and digital signal processing blocks (DSPs).

Configurable logic blocks

Configurable logic blocks (CLBs) are the primary component of FPGAs. CLBs generally contain a few primitive logic elements (logic gates, small look-up tables, flip-flops, multiplexers and many more). Within the CLB, a flip-flop generally serves as the main data storage element, although newer device families might also incorporate shallow memory elements within the CLB.

Programmable interconnects

Linkages constructed from wire segments joined by electrically programmable switches provide routing pathways between the FPGA’s logic block. Switch boxes containing multiple basic semiconductor switches are commonly used to establish an FPGA’s programmable interconnect. These interconnects allow the outputs of a specific unit or an input pad to be linked to any other cell or pad within the circuitry.

Programmable routing

Prefabricated wire segments are joined together (or left unconnected) by the programmable interconnects to deliver a fully programmable routing infrastructure within an FPGA. Routing resources are hierarchical in nature, with a combination of long, medium and short wires spanning various “lengths” within the FPGA. This programmable routing infrastructure, enabled by the programmable interconnects, allows users to configure FPGA resources for the implementation of a particular task or application.

Programmable input/output blocks (IOBs)

The interface between an FPGA and other external devices is enabled by input/output (I/O) blocks (IOBs). IOBs are programmable input and output resources that are configured to match the protocols of any external devices to which the FPGA connects. All signals entering or leaving the FPGA do so through device pins and associated IOBs.

On-chip memory

The earliest FPGAs used only flip-flops (FFs) to integrate memory into the FPGA logic blocks. However, as FPGA capabilities increased, increasingly complex designs required dedicated on-chip memory for data buffering and reuse. Modern FPGAs use large SRAM memory arrays, smaller look-up tables (LUTs) and traditional flip-flop elements to provide the necessary storage for a specific application.

Digital signal processing (DSP) blocks

In early FPGAs, the sole available arithmetic resources were simple adders; anything more complex was constructed from more primitive logic elements. However, as silicon technology advanced, more complex arithmetic resources were incorporated into FPGAs, culminating in the modern FPGA DSP block. DSP blocks provide highly optimized resources (multipliers, accumulators and many more) for the implementation of high-performance arithmetic functions.

Their use eliminates the need to implement these functions in general-purpose CLBs, hence freeing up the CLBs for other purposes. Operations like digital filtering, convolution, Fourier transforms, trigonometric operations and many more can take advantage of these resources to obtain real-time performance in applications ranging from radar processing, beamforming, pattern recognition and many more.

Types of field programmable gate arrays

FPGAs are available in several different varieties that offer various types of configurability, power consumption, programmable elements and on-chip memory.

  • Antifuse-based FPGAs: FPGAs that are configurable but not reconfigurable. They use a one-time programmable element called an antifuse, which is configured by applying a high voltage to create connections between internal wires. An antifuse-based FPGA can only be configured once and cannot be reconfigured.
  • SRAM-based FPGAs: These types of FPGAs are highly versatile and can be configured at run time. SRAM-based FPGAs use static random-access memory (SRAM) to store their configuration instructions and require external memory to hold the configuration code.
  • Flash-based FPGAs: Unlike SRAM-based FPGAs, flash-based FPGAs store their configuration in nonvolatile flash memory, which has the added benefit of being reprogrammable.
  • EEPROM-based FPGAs: This variety of FPGA is similar to flash-based FPGAs, but electronically erasable programmable read-only memory (EEPROM) stores the FPGA’s configuration. Both styles are nonvolatile and are reprogrammable.
  • Hybrid FPGAs: Hybrid FPGAs provide varying levels of performance, low-power operation and versatility through a combination of different programmable elements, such as SRAM- or flash-based logic blocks.
  • System-on-chip FPGAs: System-on-chip (SoC) FPGAs integrate programmable logic with hard processor cores, combining the functionality of both an FPGA and an SoC, a single silicon chip that combines multiple system processing chips like CPUs, GPUs and RAM into one unit.

Field programmable gate array use cases

Versatile by nature, FPGAs are well-suited for many different applications.

Radar applications

FPGAs are favored for signal processing and data acquisition due to their high-speed, parallel-processing abilities.

Unmanned aerial vehicles (UAVs)

High-speed signal processing algorithms make FPGAs well-suited for performing the flight control, sensor processing and communication tasks used in unmanned aircraft like drones.

Industrial control systems (ICS)

Industrial control systems used to monitor infrastructure like power grids, oil refineries and water treatment plants use FPGAs that can be easily optimized to meet the unique needs of various industries. In these critical industries, FPGAs can be used to implement various automations and hardware-based encryption features for efficient cybersecurity.

ASIC prototyping

While FPGAs are useful solutions for tasks requiring flexibility, task-specific ASICs are often better suited to standardized operations. As new systems are developed, FPGAs are valuable for developing and prototyping new ASICs for emerging technologies.

Data centers

FPGAs add value to data centers by facilitating high-bandwidth, low-latency servers, networking and storage infrastructure.

Related solutions

Related solutions

IBM Storage DS8000

IBM Storage DS8000 is the fastest, most reliable and secure storage system for IBM zSystems and IBM Power servers.

Explore Storage DS8000
Enterprise Data Storage Solutions

IBM Storage is a family of data storage hardware, software defined storage, and storage management software.

Explore data storage solutions
Hardware and Software Support Services  

IBM provides proactive support for web servers and data center infrastructure to reduce downtime and improve IT availability.

Web servers services
Take the next step

From managing hybrid cloud environments to ensuring data resilience, IBM storage solutions empower you to unlock insights from your data while maintaining robust protection against threats.

Explore data storage solutions Take a product tour