What is an FPGA?

What is FPGA—How Does it Work and its Uses

What is an FPGA?

A Field Programmable Gate Array, or FPGA, is a type of integrated circuit (IC) that enables the development of custom logic for rapid prototyping and final system design. FPGAs are different than other custom or semi-custom ICs due to their inherent flexibility that allows it to be programmed and re-programmed via software download to adapt to the evolving needs of the larger system in which it is designed into. FPGAs are ideally suited for today’s fastest growing applications, like edge computing, artificial intelligence (AI), system security, 5G, factory automation, and robotics.

Why use an FPGA instead of other types of ICs?

Figure 1

The primary advantage of FPGAs is their programmable fabric, which allows a designer to rapidly program (and re-program) the device to perform nearly any function. This re-programmability is possible even after the FPGA is integrated into an application by using downloadable software updates (hence the “field programmable” in “field programmable gate array”). This inherent flexibility also helps speed time-to-market for FPGA-based designs as the functionality of the FPGA can be developed, or changed, in parallel with the overall system design.

Another benefit of FPGAs is their parallel processing capability. Through a “sea of gate” architecture, FPGAs are capable of processing data in a parallel fashion whereby operations are performed at the same time, not sequentially. This type of processing is better suited for high performance computing applications (such as AI), which allows the FPGA to deliver significantly higher performance using lower clock speeds consuming lower power.

Other types of ICs like Microcontrollers (MCU), Microprocessors (MPU), Application Specific Integrated Circuit (ASIC), and Application Specific Standard Product (ASSP) have a fixed function upon deployment and operate sequentially (i.e. one after the other). The lack of programmability can contribute to shortening the lifespan of the system once deployed. And serial processing can lead to higher power consumption as the ICs use higher speed clocks to keep pace with the processing workload. This is problematic for applications requiring higher compute performance such as Edge AI where support for low power operation is also required).

How is an FPGA programmed or configured?

FPGAs require configuration so the device’s logic circuits and interconnects know what role they should play in the implementation of a specific application. Using specialized software (generally provided by the FPGA supplier), developers design the logic to be implemented in the FPGA using either graphical design capture (generally used for smaller FPGAs) or a hardware description language (HDL).

The software then “compiles” the design by synthesizing it and then placing and routing the logic that best fits the target FPGA, after which the software creates a bitstream that is used to configure (or program) the FPGA. Once the bitstream is downloaded to the FPGA, the device is then ready to perform its defined task. Lattice offers developers a suite of software design tools and IP (Intellectual Property), or pre-configured design blocks, that designers can use to reduce the time and effort of the design process to simplify and accelerate the creation of bitstreams that run on Lattice FPGAs.

Where are FPGAs used?

The DCA1000EVM real-time data-capture adapter (Image source: Mistral Solutions)

Short answer, everywhere.

As the leading provider of FPGAs globally by volume, Lattice FPGAs are used by thousands of customers around the world across applications in the growing Communications, Computing, Industrial, Automotive, and Consumer markets. Applications for Lattice FPGAs include AI and machine learning (ML) inferencing, data co-processing, embedded vision, and secure system control just to name a few.

Which FPGA should I buy?

The right FPGA for your design depends on the application you’re developing. Lattice Semiconductor is known as the leading provider of low power, highly reliable, small form factor FPGAs.

Lattice FPGAs are classified into categories based on the type of application the FPGA is designed to support:

  • General purpose – designed for a broad range of application needs
  • Embedded vision – designed for video bridging and processing
  • Ultra-low power – designed for power- and space-constrained applications
  • System control and security – designed for platform management and security

In addition, Lattice offers a suite of intuitive, easy-to-use software design tools and solution stacks for applications like Edge AI, embedded vision, security, and industrial automation, all created to make it easier to design with Lattice FPGAs and to get to market quickly. For more information on our product portfolio please download our Product Selector Guide.