Introduction
Field-programmable gate arrays (FPGAs) occupy a unique position in the digital design landscape. Unlike fixed-function chips or general-purpose microprocessors, FPGAs offer hardware that can be reconfigured after manufacturing. This capability creates distinct advantages for prototyping, specialized computing, and adaptive systems.
Understanding what distinguishes an FPGA from other programmable devices requires examining three core characteristics: standard-part construction, multi-level logic implementation, and programmable interconnect. In this article, you will gain a technical understanding of FPGA architecture, the distinction between FPGA and CPU programming models, and the emerging category of platform FPGAs.
(toc) #title=(Table of Content)
Defining Characteristics of FPGAs
FPGAs are standard parts manufactured without a predetermined function. The end customer programs the device for their specific application. This distinguishes FPGAs from application-specific integrated circuits (ASICs), which are designed for a single purpose.
Multi-Level Logic vs Two-Level Logic
The fundamental architectural difference between FPGAs and programmable logic devices (PLDs) lies in logic implementation depth. PLDs use two levels of NAND or NOR functions to implement all their logic. This approach works for simple combinational functions but becomes restrictive for complex operations.
FPGAs implement multi-level logic, meaning logic blocks can connect in networks of arbitrary depth. A logic signal may pass through several configurable logic blocks before reaching an output, with each block performing transformations. This depth enables FPGAs to implement complex state machines, arithmetic functions, and digital signal processing pipelines.
The Fabric Model
Because FPGAs require multi-level logic, they need two programmable elements:
- Programmable logic blocks that perform Boolean operations
- Programmable interconnect that routes signals between blocks
This combination of logic and routing resources forms what engineers call a fabric. The fabric possesses a regular, grid-like structure that design tools can efficiently utilize when mapping logical descriptions onto physical resources.
FPGA Programming vs Microprocessor Programming
A critical distinction exists between programming an FPGA and programming a microprocessor. Misunderstanding this difference leads to incorrect assumptions about how FPGAs operate.
Stored-Program Model
A microprocessor operates as a stored-program computer. The system includes:
- A CPU that fetches and executes instructions
- Separate memory storing both instructions and data
- An instruction pointer that advances sequentially through code
The microprocessor fetches an instruction from memory, decodes it, executes the operation, then moves to the next instruction. This fetch-decode-execute cycle repeats continuously.
Direct Logic Implementation
An FPGA uses a fundamentally different model. The FPGA's program—also called a personality or bitstream—is interwoven directly into the logic structure. An FPGA does not fetch instructions. There is no instruction pointer, no sequential execution model, and no separation between program memory and data memory.
The configuration bits directly control:
- Lookup table contents defining logic functions
- Multiplexer settings for routing
- Register configurations for sequential elements
Once configured, every logic element operates continuously and in parallel with all others.
Programming Technologies and Reconfigurability
FPGAs use various technologies for programming. Some devices are permanently programmed once. Others support reprogramming, making them reconfigurable devices.
Reconfigurable Systems
Reprogrammable FPGAs are generally preferred for prototype development because the device remains usable after design changes. Reconfigurable systems can also be reprogrammed during operation, allowing one hardware platform to perform multiple functions sequentially.
A practical example is the Radius computer display, which operated in both landscape and portrait modes. When the user rotated the physical display, a mercury switch triggered the FPGA to reload a different configuration optimized for the new orientation.
Note: Reconfigurability implies that different functions cannot execute simultaneously. The hardware reconfigures from one state to another, performing one task at a time.
Logic Granularity: Fine-Grained vs Coarse-Grained
Traditional FPGAs use fine-grained logic elements. A typical logic element implements the function of several basic gates plus a storage register. This granularity provides flexibility but requires many interconnections.
As chip densities increase, coarse-grained FPGAs have emerged. A single logic element in these devices may implement a multi-bit arithmetic logic unit (ALU) with a register. Coarse-grained architectures can make more efficient use of chip area for datapath-intensive functions such as digital signal processing or cryptography.
Platform FPGAs
The newest category of FPGAs extends beyond the traditional fabric. Platform FPGAs integrate multiple structure types so different system components can execute on the most efficient resource.
Integrated Components
A platform FPGA typically includes:
- A CPU core (either hard or soft) for software-executed functions
- Specialized bus logic for standard interfaces such as PCI Express
- Dedicated memory controllers
- High-speed serial transceivers
- Digital signal processing blocks
This integration allows system designers to partition functionality appropriately. Control-oriented tasks run on the embedded CPU as software. Data-intensive or timing-critical operations implement directly in the FPGA fabric as hardware.
Practical Applications
Engineers use FPGAs across multiple domains:
| Application Area | Typical Use Case | Why FPGA |
|---|---|---|
| Telecommunications | Packet processing, protocol conversion | Parallel processing, low latency |
| Aerospace | Signal processing, motor control | Radiation tolerance, reconfigurability |
| Medical imaging | Real-time image filtering | Deterministic timing, high throughput |
| Industrial control | Multi-axis motion control | Deterministic response, I/O flexibility |
| Prototyping | ASIC emulation | Reprogrammability, debug visibility |
Conclusion
FPGAs provide a distinct computing model separate from both fixed-function ASICs and stored-program microprocessors. The combination of programmable logic blocks, configurable interconnect, and reconfigurability creates hardware that adapts to changing requirements. As platform FPGAs continue integrating more specialized resources—CPUs, bus interfaces, memory controllers—the boundary between programmable logic and complete system-on-chip solutions continues to blur. Engineers selecting compute platforms should evaluate FPGAs when applications demand parallel processing, deterministic latency, or the ability to update hardware functionality after deployment.