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.
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.
The reconfigurable nature of the FPGA means that it can be used in a wide number of different applications.
- 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.
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. Thus it is programmable in the field, and in fact this gives rise to its name.
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.
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: 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: 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.
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
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.
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.