08/07/2021, hardwarebee

FPGA stands for Field-Programmable Gate Array and can be defined as a hardware chip that is used to carry out logical operations. They are composed of an integrated network or sets of logic blocks placed across a chip; where the circuits are the programmable logic gates. FPGAs consist of individual configurable logic blocks, or CLBs, which are connected through programmable interconnects. As suggested by the name of the semiconductor technology, advantages of FPGA are known for their ability to be programmed when implemented in the field as opposed to other kinds of semiconductor chips (e.g ASICs) which are largely rigid in their design and execution.
An FPGA is made up of an array of blocks called programmable logic blocks, these blocks are connected by configurable interconnect matrix. This means that both the logic behavior and internal routing can be programmed by the designer, giving the device its flexibility. The number of logic blocks is depending on the FPGA size (and price). The larger the FPGA the more logics blocks you could use. More logic blocks will allow you to use more “gates” and hence more functionality. The following diagrams show a general overview of FPGA architecture. Since the 1980’s and still today FPGAs are using the same architecture as shown below.

Figure 1: FPGA Architecture
The logic blocks and the interconnect structure are arranged in the form of a two-dimensional array and spread across the FPGA.
The following paragraphs describe the internal architecture of an FPGA:
Logic blocks are the fundamental elements in an FPGA that provide the logic function capabilities. An FPGA consists of many logic blocks that together can perform any possible logic implementation. A logic block is configurable and generally consists of a flip-flop along with a look-up-table and a muliplexer.
The following drawing shows a typical FPGA logic block architecture:

Figure 2: FPGA Logic Block Example
Input and output blocks are located next to every physical input or output pin. The IO blocks allow the user to select each pin functionality: whether it’s input, output or tri-state. And consist of some buffers and logic that are beneficial to have near the input or output pin. In some cases, the user can also control the signal slew rate to operate on fast or slow mode.

Figure 3: FPGA IOB Example
Using the internal routing, the signal is redirected in or from the IO block to the logic block.
An FPGA chip’s internal routing is one of the most critical components of the device. It is the path that is used to connect all signals, as well as your clock to the different parts of your FPGA. The various logic blocks are connected to one another with the help of this internal routing which consists of channels comprising of interconnecting wires and electrically reconfigurable switches. These switches can be manipulated to connect and disconnect the various common logic blocks at different points and create a unique FPGA chip that is specific to your requirements.

Figure 4: FPGA Interconnect Example
When it comes to FPGA programming, one of the most important parts is the design language. This is the medium using which you will communicate with your technology and tell it what you want it to do. Using this language, you will basically be defining the operations of the hardware of that particular semiconductor chip and the device it powers. In the modern day, there are a huge number of computer design languages that can be used for this purpose.
Normally, you will use any hardware description language, or HDL, in the process of FPGA programming. You can use low level languages for circuits having relatively lower capacity. Higher end languages such as VHDL and Verilog which are used for higher complexity circuits and devices. Other factors that play a part in deciding which language to use include previous experience, personal preference and expertise, availability of models, synthesis capabilities, financial restraints, and hardware design.
An ASIC, or Application Specific Integrated Circuit for example, is designed to accomplish a particular task. As such, it will only perform that one function and cannot be modified to anything else, neither can it be erased and rewritten so as to reuse the chip. A new one must be created for a new purpose. An FPGA, on the other hand, can be reprogrammed and reused, and is much more flexible when it comes to customization and personalization, especially when deployed out in the field. This makes FPGA much more suitable and preferable over an ASIC in certain applications, which will be discussed ahead.
With the help of an FPGA , you can write a program which is loaded onto a silicon chip, and then execute the functions. If you want to optimize a chip, to fit a certain workload, then you can use an FPGA chip. Like mentioned before, FPGAs are field programmable and offer much more scalability and flexibility. They are able to keep up with modern requirements of high complexity and high performing devices. They also offer greater logic density, embedded processors, DSP blocks, and clocking among other prominent features.
FPGA are ideal for systems where consistent updates are a requirement. If a processor needs some changing, then FPGA chips can be used for making those changes if they are installed, eliminating the need to purchase new hardware. If FPGA chips are used in cars, then they can be updated with the help of these chips, even after they have been sold. These chips are also used frequently by enterprise businesses, because they can be reprogrammed using a data path that matches data analytics, image inference, and even compression.
The main purpose of an FPGA chip, at least originally, was for the prototyping of ASICs. The benefit of using an FPGA for this purpose is that it can be reprogrammed again and again, until a design is finalized and there are no bugs found in the design. Intel, a huge name in the IT industry, uses FPGAs to prototype new permanent chips so as to ensure their quality, function, and integrity.
Since FPGAs work in a parallel fashion, they boast much higher speeds and thus can be used to solve complex computable problems, together with the re-programmability ability — this makes FPGAs both powerful and flexible machines. Some of the most common uses and applications for FPGAs today are:


Xilinx FPGAs are being offered by Amazon Web Services to accelerate compute intensive applications.
