Field-programmable gate arrays (FPGAs) are types of programmable logic devices with billions of transistors that can be flexibly user-programmed. They’re popular because they can be tailored to the needs of an application — including implementing any arbitrary digital circuit or prototyping quickly.

FPGAs are useful for hardware testing, since circuits can be prototyped with FPGAs before they’re fabricated into ASICs. FPGAs are also relatively power efficient, compared to GPUs (so they can be used in machine learning). We can also specify the preciseness of the solution we need, and they’re useful for time-dependent tasks (i.e., autonomous vehicles needing to identify stop signs).

The main FPGA vendors are Altera, Xilinx, and Microchip.

Architecture

Internally, FPGAs contain configurable logic blocks (CLBs). These themselves consist of look-up tables (LUTs) and flip-flops inside. -input LUTs can implement any logic function with inputs. Outputs are stored in memory cells and are chosen as the output depending on the inputs. Each CLB is stored in a grid-like pattern, with wires that are selectively interconnected by the programmer. CLBs are routed together to construct more complicated digital circuits, largely with graph algorithms, like the A-star algorithm.

FPGAs often have configurable memory blocks, i.e., their word length and number of rows can vary depending on what the user needs. They often can also interface with external memory, like DDR SDRAM. Modern FPGAs also contain specific logic blocks that may otherwise be expensive to implement with discrete logic gates, especially with digital signal processors, floating-point units, or matrix multipliers.

Sub-pages