The basic structure of FPGAs
Field programmable gate arrays (FPGAs) are a type of reconfigurable integrated circuit made up of configurable logic blocks (CLBs) which themselves consist of look-up tables (LUTs) as well as other logic such as registers and logic gates. LUTs are the perhaps the core element of CLBs as they can be programmed to store any given output for each combination of their input signals. Thus provide FPGAs with the ability to implement any logical function.
There are different sizes of LUTs with different inputs 4 input and 6 input LUTs are the most common. The CLBs are interconnected via an interconnection network of programmable switches thus allowing for different connection configurations between the CLBs. I/O Blocks are available on the perimeter to allow communication with external devices. In addition, recent generations of FPGAs also come equipped with dedicated hardwired processing blocks such as embedded processors, MAC units, and embedded memory. All these components make FPGAs a fully programmable integrated circuit which the designer can use to develop any desired digital processing system. As a result FPGAs have been used in a number of diverse and cutting edge applications such as financial forecasting, aerospace, and smart vision.
FPGAs as a System-On-Chip Solution
A digital circuit (hardware architecture) is configured on the FPGA using a hardware description language (HDL) which specifies its behavior and functionality. The huge benefit of FPGAs compared to more traditional computing platforms is that the application circuit can be tailored to the demands of the application with respect to how the processing will be performed, the data flow, control and synchronization of various components and interfacing with I/O. Hence, FPGAs offer a large amount of parallel resources that can be exploited with the appropriate hardware architecture in order to provide the necessary performance, and since they can be reconfigured also provide a high degree of flexibility. In addition, FPGAs offer a deterministic performance and a complete solution since a full system along with peripherals can be integrated on the same FPGA with a in order to to carry out the computations. However, the downside is that designing with FPGAs requires long development cycles which can be substantial, hence FPGAs are mostly used as prototyping platforms for potential future application specific accelerators for vision applications.
However, we have started to see an integration of higher level system tools into the design flow in order to accelerate the design process. Another potential challenge in using FPGAs is that their relatively lower frequencies compared to other platforms because of the complex fixed interconnection network which results in longer delay paths. However, herein lies the challenge and beauty of FPGA-based design as the aforementioned shortcomings can alleviated be designing an efficient parallel architecture. As such, there is a growing research effort to design dedicated hardware architectures for various applications in order to provide the real-time performance along lower power consumption.