An Introduction to FPGA
FPGA stands for (Field Programmable Gate Array). As the name implies, the FPGA is an integrated circuit (IC) that is basically an array of logic gates and is programmed/configured by the end user in the field (wherever he is) as opposed to the designers.
What is FPGA made of..?
The basic logic gates are the core building blocks of the FPGA. It is not like the FPGA IC is full of these logic gates, but FPGA is based on digital sub-circuits carefully interconnected with each other to perform the desired function. It is like for example to make a shift register the AND gates and OR gates ICs are required, so there are two ways either to buy these individual ICs and interconnect them together to obtain the functionality of Shift register. The other way is to buy a shift register IC instead and make your design much more compact.
This is the case with FPGA, the sub-circuits are already made of basic AND, OR and NOT gates and these sub-circuits are then interconnected very accurately to design the internal hardware blocks called Configurable Logic Block ( CLB).The CLBs can also be defined as Look up Tables (LUT) that is programmed by Hardware Description Language (HDL) to achieve desired output.
These thousands of CLBs are then connected with IOBs to interface with external world circuitry. The IOB stands for “Input Output Blocks”. These IOBs are made of pull up, pull down resistors, buffer circuitry and inverter circuits.
Reprogram-ability of FPGA:
The biggest advantage of FGPA is its ability to be reprogrammed at the field. Its flexibility to be used as microprocessor, graphic card or image processor or all of them at the same time make it solid upper hand to basic micro-controllers or micro-processors.
These FPGAs are programed by HDL like VHDL or Verilog. Some additional features are being added nowadays in FPGAs like dedicated hard-silicon blocks for attaining functions of External Memory Controllers, RAM block, PLL, ADC and DSP block and many other components.
Difference between the Micro-controller and FPGA:
Today, many of the projects are based on micro-controllers. As our trend in developing student project, professional circuits, industrial products development is based on micro-controller based circuits, we did not got much familiarized with FPGAs.
The main difference between the micro-controller and FPGA is that, “A micro-controller is versatile IC and can be programmed in different ways to fit in various types of applications while the FPGA is a dedicated IC specifically designed to perform special functions according to the needs of a particular application”.
Another important difference is that “The FPGAs are hardware Configurable Logic Blocks (CLBs)based ICs that can be interconnected to external circuits through Hardware Description Language HDL codeby means of IOBs while micro-controllers are based on software/programming/coding where instructions are executed sequentially.”
The micro-controller / micro-processor has constraints of inability to execute multiple instructions simultaneously and also functionality you want to perform must have the availability in instructions sets of a particular controller/processor.
(The Block Diagram of 8051 Micro-controller)
FPGA vs ASIC:
The FPGAs are somewhat similar to ASIC “Application Specific Integrated Circuits” but not very much. The key difference in FPGA and ASIC is that CLBs in FPGA can be reconfigured to perform different task/operation/function but in the case of ASIC the dedicated ASIC chip will perform the same operation for the entire life time for which it was designed.
The analogy of FPGA and ASIC is that you build a house using LEGO parts, then you demolish it and built a car using same LEGO parts. These LEGO parts are same as CLBs of FPGA.
The analogy of ASIC is that you build the same house using concrete blocks and cement (not the LEGO) but now you cannot demolish it and build other thing from this. This work is permanent. Hence this is ASIC.
So the ASICs are dedicated ICs in which digital circuitry (logic gates and sequential circuits) is hardwired or permanently connected internally on silicon wafer.
FPGAs are suitable for low volume production and require much less time and money as compared toothier ASIC counterparts. FPGAs require less than a minute to reconfigure. Another important advantage is that FPGAs can be partially reconfigured and rest of FPGA portion is still working.
However, FPGAs on the other hand are slower and more power hungry due to their large area size due to dense routing programmable interconnection. This complex interconnection accounts for 90% of the total size of FPGA.
Detailed Insight of FPGA Structure:
The main constituents of FPGA are
- Configurable Logic Blocks (CLBs)
- Input Output Blocks (IOBs)
- Switch Box (SB)
- Connection Box (CB)
- Look Up Table (LUT)
- Horizontal and Vertical Routes
Configurable Logic Block (CLB):
A CLB is made up of the cluster of BLE (Basic Logic Element) through a dense interconnect scheme. A BLE has the multiplexer, SRAM and D Type Flip Flop. These three components forms the BLE and the cluster of BLEs form the CLB
Input Output Blocks (IOBs):
These are the blocks that make interconnection between the FPGA and outside circuitry. The IOBs are the end connection of the programmable routing network.
Switch Box (SB):
Switch Box is the collection of switches to connect different horizontal and vertical routes (tracks). Ability of a track to connect to multiple tracks is defined as the connectivity of SB.
Connection Box (CB):
Connection Box is the collection of switches to connect CLB to multiple routes. Ability of the CLB to connect to multiple routes/tracks is defined as the connectivity of CB
Look Up Table (LUT):
The lookup table is made of multiplexer and SRAM. A 4 input LUT requires (24) 16 SRAM bits to implement a 4 bit Boolean expression.
Horizontal and Vertical Routing Channels:
The horizontal and vertical lines/routes that creates the mesh network of FPGA
Flexibility of CB:
The flexibility of CB is defined as (FC). A FC = 1 means that all the adjacent routing channels are connected to the inputs of CLB
Flexibility of SB:
The flexibility of SB is defined as (FS). It is defined as the total number of tracks with which every track entering the SB connects to.
It is therefore concluded that FPGAs have advantages over other options like ASIC and microprocessor / micro-controller in the sense that FPGAs are handy and easily reconfigurable at the user end. It can be customized by a simple HDL code and are easily available in the market for reasonable rates between 50 to 100 USD.