What is an FPGA - Field Programmable Gate Array: what it is,how it works

An FPGA, field-programmable gate array is an integrated circuit into which firmware is loaded which defines the functionality of the chip - this firmware can easily be changed by installing new firmware.

    Home   » Electronic components » this page


Programmable Logic Devices Includes:
Types of Programmable Logic Device     FPGA: Field Programmable Gate Array    


The Field Programmable Gate Array, or FPGA is a programmable logic device that can have its internal configuration set by software or as it is termed, “firmware.”

This enables the FPGA functionality to be updated or even totally changed as required, because the FPGA firmware is updated when it is in circuit.

Circuit using an FPGA to provide reconfigurability
A PCB using an FPGA to enable the circuit to be reconfigured to provide oscilloscope, logic analyzer, spectrum analyzer, etc functionality

The FPGA programmable logic components, or logic blocks as they are known, may consist of anything from logic gates, through to memory elements or blocks of memories, or almost any element.

This provides a considerable degree of flexibility.

FPGA applications

The reconfigurable nature of the FPGA means that it can be used in a wide number of different applications.

FPGAs are used in a host of different areas where complex logic circuits and systems are needed - from various logic circuits to high performance processors.

  • ASIC prototyping:   ASICs or application specific integrated circuits are often used in high volume production, but they are very costly to develop and changes are very expensive and time consuming to make. Once an ASIC chip is made, its functionality is fixed. Also ASIC chips are typically very complicated and to ensure that the functionality is correct, often an FPGA is used instead of the ASIC chip during development and even early production until all the issues are removed.
  • Software defined equipment:   With equipment now tending more towards being software defined as in the case of the software defined radio the concept is being widely used in many areas of technology. Software defined test equipment is also becoming more widely used - here the functionality of the test instrument can be modified according to what is needed.
  • Digital Signal Processing (DSP):   The ability to implement complex algorithms efficiently makes FPGAs ideal for applications like signal filtering, modulation, and data compression. Their speed copared to other forms of logic makes them ideal for this. They are also reconfigurable, making them ideal for use in software defined radios which can be reconfigured to meet changing requirements.

  • High-Performance Computing (HPC):   FPGAs can be used as accelerators within HPC systems to offload specific tasks, improving overall performance.

  • Embedded Systems:   Due to their small size and low power consumption options, FPGAs can be integrated into embedded systems for custom logic and real-time processing needs.

  • Medical Imaging:   Reconfigurable logic within FPGAs enables real-time image processing and data analysis in medical imaging applications.

  • Networking:   FPGAs can be employed in network equipment for tasks like packet processing and traffic management.

FPGA vs ASIC

FPGAs and ASICs can often be seen to have comparatively similar functions, i.e. that of providing a large amount of specific logic functionality within a circuit.

However there are significant differences between ASICs and FPGs and this means that they are used in different areas.

Although FPGAs offer many advantages, there are naturally some disadvantages. They are slower than equivalent ASICs (Application Specific Integrated Circuit) or other equivalent ICs, and additionally they are more expensive. (However ASICs are very expensive to develop by comparison).

This means that the choice of whether to use an FPGA based design should be made early in the design cycle and will depend on such items as whether the chip will need to be re-programmed, whether equivalent functionality can be obtained elsewhere, and of course the allowable cost. Sometimes manufacturers may opt for an FPGA design for early product when bugs may still be found, and then use an ASIC when the design is fully stable.

FPGAs are used in many applications. In view of the cost they are not used in cheap high volume products, but instead FPGAs find applications in a variety of areas where complex logic circuitry may be needed, and changes may be anticipated. FPGA applications cover a wide range of areas from equipment for video and imaging, to circuitry for aerospace and military applications, as well as electronics for specialized processing and much more.

Here is a summary of the differences:


Comparison of FPGA v ASIC
 
Attribute FPGA ASIC
Development Cost Medium High
Development timescale Low to medium Long
Unit cost in large production High Low
Reconfigurability Easy Not possible
Speed of operation Slower than ASIC Very fast
Power consumption Tends to be higher Normally lower
Manufacture Off the shelf purchase and in-house or in-equipment programming Lengthy manufacturing cycle
Area efficiency Lower Higher

As a result of the characteristics of FPGAs and ASICs, FPGAs tend to be used for development and lower volume production, whereas ASICs tend to be used for higher performance, overall lower cost in large quantities and faster performance.

FPGA basics

The great advantage of the FPGA is that the chip is completely programmable and can be re-programmed. In this way it becomes a large logic circuit that can be configured according to a design, but if changes are required it can be re-programmed with an update.

Thus if circuit card or board is manufactured and contains an FPGA as part of the circuit, this is programmed during the manufacturing process, but can later be re-programmed to reflect any changes.

FPGA internals

The internal architecture of the FPGA is the key to its flexibility and hence its success. Essentially an FPGA consists of two basic elements:

  • Common logic blocks, CLBs:   These are the fundamental units of logic within an FPGA. They contain an array of logic gates (AND, OR, NOT, etc.) and flip-flops (memory elements) that can be interconnected in various configurations.

    The logic block in an FPGA can be implemented in variety of ways. The actual implementation depends upon the manufacturer and also the series of FPGA being used. The variations include the number of inputs and outputs, the general complexity of the logic block in terms of circuitry and the number of transistors used. This naturally has an impact on the amount of area consumed on the chip, and hence the size the silicon used.

  • FPGA internal routing & programmable interconnections:   The routing channels within the FPGA comprise wires that can be interconnected using electrically configurable switches. In this way it is possible to link different points on the chip together and thereby connect the different Common Logic Blocks in whatever way is required.

  • Input/Output (I/O) Blocks:   These interfaces connect the FPGA to the external world, allowing it to receive data and send processed information.

FPGA firmware development

As the FPGA is a configurable logic array, the logic needs to be set to meet the requirements of the system. The configuration is provided by firmware - a set of data that is

In view of the complexity of FPGAs, software is used to design the function of an FPGA. The FPGA design process is started by the user providing a Hardware Description Language (HDL) definition or a schematic design.

Common HDLs are VHDL (where VHDL stands for VHSIC Hardware Description Language) and Verilog.

Once this has been completed the next task in the FPGA design process is to produce a netlist is generated for the particular FPGA family being used. This describes the connectivity required within the FPGA and it is generated using an electronics design automation tool.

The netlist can then be fitted to the actual FPGA architecture using a process called place-and-route, usually performed by the FPGA company's proprietary place-and-route software.

Finally the design is committed to the FPGA and it can be used in the electronic circuit board for which it is intended.

Note on the FPGA programming:

FPGAs require firmwave to be available to set the configuration of the logic within the chip. This firmwave can be developed in a variety of ways and there are several different software platforms that can be used.

Read more about the FPGA programming

FPGA testing

In view of their complexity, it is necessary to undertake rigorous testing of the FPGA design. This testing will normally be undertaken at each stage of the FPGA development process.

It includes functional simulation, and other verification methodologies, but one of the key issues can be that of timing as the size and complexity of the basic logic can mean that timing issues can arise.

Once the design and validation process is complete, the binary file generated (also using the FPGA company's proprietary software) is used to configure the FPGA device.

FPGA tools

The tools for developing and testing FPGAs are available from a variety of sources. Obviously the manufacturer is able to offer many FPGA development tools, but there are many other sources for third party FPGA HDL synthesis, FPGA physical synthesis and verification tools. These include the actual development and for the various stages of testing of the FPGAs.

Ian Poole   Written by Ian Poole .
  Experienced electronics engineer and author.



More Electronic Components:
Batteries     Capacitors     Connectors     Diodes     FET     Inductors     Memory types     Phototransistor     Quartz crystals     Relays     Resistors     RF connectors     Switches     Surface mount technology     Thyristor     Transformers     Transistor     Unijunction     Valves / Tubes    
    Return to Components menu . . .