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 and have a wide capacity.

One of the benefits of FPGAs is that they are relatively power efficient, compared to GPUs (so they can be used in machine learning). We can also specify the precision we need, and they’re useful for time-dependent tasks (i.e., autonomous vehicles needing to identify stop signs).

FPGAs are also useful for hardware testing (I heard Tenstorrent does this with their hardware) — hardware can be tested on FPGAs before they’re fabricated into ASICs.

Internals

We have configurable logic blocks that contain look-up tables (LUTs) and flip-flops insides, connected by configurable wires. -input LUTs can implement any logic function with inputs. Think of a table of outputs associated with all possible inputs. Outputs are stored in memory cells and are chosen as the output depending on the inputs.

Chips have pins on the edge for I/O.tocheck if this is correct 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.

Sub-pages