Wednesday, August 1, 2012

What is FPGA?

Altera Cyclone II FPGA chip. Image source: Wikipedia


When a new acronym appear in our personal vocabulary it is a good practice to find the prime components of it. FPGA  stands for Field-Programmable Gate Array. This is very logical term, and I will explain why.

Field-programmable means that functions of FPGA are defined by a user. This is huge difference comparing FPGAs with ASIC (application-specific integrated circuit). Typical ASIC devices perform particular functions, that were defined by the manufacturer. In FPGA case, manufacturer has nothing in common with the device functions. Program, that configures FPGA can be loaded form external memory each time  the device is powered up. This means that any complex solution can be made using FPGA. One day it can be used as complex DSP device, and the other day (if configuration was changed) it can works as simple adder or multiplexor. The configuration of FPGA is specified using HDL (Hardware Description Language). There are two main languages used. It's Verilog and VHDL. Maybe there are more languages, but at the moment I do not know nothing about them.

FPGA evolved from various PLD's (Programmable Logic Dvices). The first PLD devices could handle only 10-20 logic functions. 50 years ago it was quite enough to handle simple operations. PLD's evolved into CPLD devices (Complex PLD). You can read more about PLDs, CPLDs and FPGAs here.
FPGA appeared with completely different approach comparing with CPLD devices. The basic FPGA structure is shown in the picture.
Simplified block diagram of FPGAs. Source: B. Nezamfat dissertation
Architecture, that is commonly used for FPGA devices are commonly used island-type architecture. Such a device consists of large number of programmable logic blocks that are surrounded wires. Wires are connected to programmable interconnect blocks. Logic blocks has several programmable LUTs (Look Up Table). Look up tables can implement logic functions. Interconnect blocks are programmable multiplexors. Using logic blocks and interconnect blocks various combinations of logic functions can be made.



No comments:

Post a Comment