Field Programmable Gate Arrays (FPGAs) are semiconductor devices based around a matrix of configurable logic blocks (CLBs) connected via programmable interconnects.
FPGAs can be reprogrammed to desired application or functionality requirements after manufacturing. FPGAs are found in automobiles, data centers, medical equipment, image and video processing tools, wired communications, etc.
FPGA is indeed much more complex than a simple array of gates. Some FPGAs have built-in hard blocks such as Memory controllers, high-speed communication interfaces, PCIe Endpoints, etc. But the point is, there are a lot of gates inside the FPGA that can be arbitrarily connected together to make a circuit of your choice. More or less like connecting individual logic gate ICs (again oversimplified but a good mental picture nonetheless). FPGAs are manufactured by companies like Xilinx, Altera, Microsemi, etc. FPGAs are fundamentally similar to CPLDs but CPLDs are very small in size and capability compared to FPGAs.
FPGA vs Microcontroller (MCU)
The fixed hardware architecture is the main difference between a microcontroller and an FPGA. The hardware structure of the FPGA is not fixed, although the FPGA contains fixed logic units, these units together with the interconnect can be programmed in parallel using the HDL coding language. This means that the FPGA is not predefined and can be changed based on the user’s application.
A microcontroller (MCU) has a fixed hardware architecture, which means that all of its components (including the processor, memory, peripherals, and connections) are predefined. Using the software, designers can program the processor to perform the required tasks.
- MCU does not change the hardware structure, but by changing its instructions (including read, write or jump instructions) execution sequence to achieve the function we need;
- FPGA programming and design is to change the internal hardware circuit structure of the chip to achieve the user needs;
- When doing microcontroller or computer programming, MCU only takes an hour, but FPGA can take a day or even a few months;
- FPGA needs to do the underlying design, development, and optimization work, FPGA development difficulty is far higher than the MCU.
FPGA Architecture
FPGA architecture is very different than microcontrollers FPGA hardware architecture is based on a “sea of gates”. It involves Look-up-Tables (LUTs), Configurable Logic Blocks (CLBs), routing elements, switch matrix between the CLBs, and Input/Output Block. This means that engineering can program can use this flexibility to design any digital block required to fulfill any requirement. FPGA architectures are flexible by default.
Depending on the manufacturer, the CLB may also be referred to as a logic block (LB), a logic element (LE), or a logic cell (LC).
The functions of an FPGA architecture module are discussed below:
- CLB (Configurable Logic Block) includes digital logic, inputs, and outputs. It implements user logic.
- Interconnects provide direction between the logic blocks to implement the user logic.
- Depending on the logic, the switch matrix provides switching between interconnects.
- I/O Pads are used by the outside world to communicate with different applications.
Configurable Logic Block (CLB)
A CLB is the fundamental piece of an FPGA and is what gives it its ability to take on different hardware configurations. An FPGA in its most basic form is a chip of CLBs–together, they make an FPGA. The many thousands of these that can be found on modern FPGAs can be programmed to perform virtually any logic function. An individual CLB consists of a number of discrete logic components itself, such as look-up tables (LUTs) and flip-flops.

Some Advantages of FPGA
- Long-term availability
- Updating and adapting to the customer
- Very short time-to-market
- Fast and efficient systems
- Acceleration of software
- Real-time applications
- Massively parallel data processing
Some Disadvantages of FPGA
- Slower
- Size of dataset
- Complexity
- More expensive than custom silicon
- No analog stuff
- Can not get as much circuitry as a single chip