Home Think Topics Field programmable gate array What is a field programmable gate array (FPGA)?
Explore IBM Storage FlashSystem Subscribe for cloud topic updates
Illustration with collage of pictograms of computer monitor, server, clouds, dots

Published: May 8 2024
Contributors: Josh Schneider, Ian Smalley

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.

How to help IT manage itself with autonomous operations

Discover how forward-thinking IT leaders are using AI and automation to drive competitiveness with autonomous IT operations.

Related content

Subscribe to the IBM 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.

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
IBM® Storage FlashSystem 5300

Enterprise-grade storage that’s ready to grow with you. IBM Storage FlashSystem 5300 is an NVMe storage option for entry-level enterprises that need compact, powerful storage. It unifies data management across the core, cloud and edge and is designed in a revolutionary 1U form factor. 

Explore IBM Storage FlashSystem 5300

IBM PCIe Cryptographic Coprocessor

A coprocessor that allows you to offload computationally intensive cryptographic processes from your host server. IBM PCIe Cryptographic Coprocessors are a family of high-performance hardware security modules (HSM). These programmable PCIe cards work with certain IBM Z®, x64 and IBM Power® servers to offload computationally intensive cryptographic processes such as secure payments or transactions from the host server.

Explore IBM PCIe Cryptographic Coprocessor

Apache Spark on IBM® Power®

An open-source cluster computing framework optimized for extremely fast and large-scale data processing. Apache Spark was developed in the AMPLab at UC Berkeley. It can help reduce data interaction complexity, increase processing speed and enhance mission-critical applications with deep intelligence.

Explore Apache Spark on IBM Power
Resources What is flash storage?

Flash storage is a solid-state storage technology that uses flash memory chips for writing and storing data, known as input/output operations per second (IOPS).

What is IT infrastructure?

Information technology infrastructure, or IT infrastructure, refers to the combined components needed for the operation and management of enterprise IT services and IT environments.

What is data storage?

Data storage refers to magnetic, optical or mechanical media that records and preserves digital information for ongoing or future operations.

What is Apache Spark?

Apache Spark is a lightning-fast, open source data processing engine for machine learning and AI applications, backed by the largest open source community in big data.

What is AI infrastructure?

AI is a term that refers to the hardware and software needed to create and deploy AI-powered applications and solutions.

What is encryption?

Data encryption is a way of translating data from plaintext (unencrypted) to ciphertext (encrypted).

Take the next step

Simplify data and infrastructure management with IBM Storage FlashSystem, a high-performance, all-flash storage solution that streamlines administration and operational complexity across on-premises, hybrid cloud, virtualized and containerized environments.

    Explore FlashSystem storage Take a tour