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.
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.
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.
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 (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.
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.
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.
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.
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.
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.
FPGAs are available in several different varieties that offer various types of configurability, power consumption, programmable elements and on-chip memory.
Versatile by nature, FPGAs are well-suited for many different applications.
FPGAs are favored for signal processing and data acquisition due to their high-speed, parallel-processing abilities.
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 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.
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.
FPGAs add value to data centers by facilitating high-bandwidth, low-latency servers, networking and storage infrastructure.
Explore the essentials of data security and understand how to protect your organization’s most valuable asset—data. Learn about the different types, tools and strategies that will help safeguard sensitive information from emerging cyberthreats.
This on-demand webinar will guide you through best practices for increasing security, improving efficiency and ensuring data recovery with an integrated solution designed to minimize risk and downtime. Don’t miss insights from industry experts.
Learn how to overcome your data challenges with high-performance file and object storage, designed to enhance AI, machine learning and analytics processes while ensuring data security and scalability.
Learn about the types of flash memory and storage and explore how businesses are using flash technology to enhance efficiency, reduce latency and future-proof their data storage infrastructure.
IBM Storage DS8000 is the fastest, most reliable and secure storage system for IBM zSystems and IBM Power servers.
IBM Storage is a family of data storage hardware, software defined storage, and storage management software.
IBM provides proactive support for web servers and data center infrastructure to reduce downtime and improve IT availability.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io