Domain-Specific Architectures & Accelerators

an FPGA

/ F-P-G-A /

Imagine a giant pegboard with thousands of little logic blocks and a web of wires between them, where you get to decide which blocks connect to which. You are not writing software for a fixed processor — you are wiring up a circuit. And the magic is you can re-wire it whenever you like. An FPGA (field-programmable gate array) is exactly this: a chip full of generic logic and programmable connections that you configure, after the chip is made, into whatever digital circuit you need — and reconfigure later for a different one.

Concretely, an FPGA contains a sea of small lookup tables (tiny configurable truth tables that can imitate any logic gate), flip-flops to hold state, blocks of on-chip memory, and dedicated multiply units, all stitched together by a programmable routing fabric. You describe your desired hardware in a language like Verilog or VHDL; a tool compiles that into a 'bitstream' that sets every lookup table and every switch in the routing. Load the bitstream and the FPGA becomes that circuit — a custom video filter, a network packet processor, a prototype CPU. Change the bitstream and it becomes something else. It is real parallel hardware, not instructions running on a processor.

The honest trade-off: an FPGA sits in the middle of the flexibility spectrum. It is far more efficient than a CPU for the right task because it is actual specialized circuitry, yet far more flexible than an ASIC because you can reprogram it. But that reconfigurability is not free — all those generic blocks and switches make an FPGA slower, larger, and more power-hungry than an ASIC built for the same function. So FPGAs shine where you need custom hardware but cannot justify (or cannot yet commit to) the enormous cost of fabricating a fixed chip: prototyping, low-to-medium volumes, and workloads that keep changing.

A startup designing a new networking chip first loads its design onto an FPGA to test it in real hardware at a fraction of an ASIC's cost. They find a bug, edit the Verilog, recompile a new bitstream, and reload it in minutes — fixing in software what would have meant scrapping a multimillion-dollar fabricated ASIC.

An FPGA is hardware you can re-wire: more efficient than a CPU, more flexible (but less efficient) than an ASIC.

An FPGA is not 'programmed' the way a CPU runs a program — you are configuring circuitry, not executing instructions. For the same function it is slower and less power-efficient than an ASIC; its value is reconfigurability, not raw peak speed.

Also called
field-programmable gate arrayreconfigurable hardware可重組硬體