FPGA Design
An FPGA is not a microcontroller with different syntax. It is a chip full of programmable logic, flip-flops, memories, routing, clock networks, and I/O blocks that you configure into hardware.
This section is now separated like a course: first the FPGA fabric and tool flow, then Verilog HDL, then VHDL, then simulation and validation. That way students do not meet always or process before they understand the hardware those constructs create.
What You'll Learn
- what programmable logic is and how LUTs implement Boolean functions;
- the difference between software execution and hardware concurrency;
- open-source FPGA flows using Yosys, nextpnr, APIO, simulators, and waveform tools;
- Verilog HDL patterns for combinational and sequential logic;
- VHDL patterns for combinational and sequential logic;
- simulation, testbenches, timing constraints, and static timing analysis;
- finite-state machines, resets, PLLs, clock-domain crossing, RAMs, ROMs, and FIFOs;
- how to build and validate a small FPGA peripheral system.
Prerequisites
- Digital electronics: gates, truth tables, flip-flops, counters, and memories.
- Boolean algebra and binary arithmetic.
- Basic programming discipline, especially version control and testing.
- Comfort reading timing diagrams.
Course Map
The order matters. Students often jump directly to a board tutorial, see an LED blink, and still do not know what the FPGA actually became. Here we build the mental model first, then the code.
Recommended Reading Order
| Track | What it teaches | Start here |
|---|---|---|
| FPGA fundamentals | Programmable circuits, LUTs, routing, timing, memories, clocks, toolchains | What Is an FPGA? |
| Verilog HDL | Modules, ports, combinational logic, sequential logic, FSMs, style | Introduction to Verilog HDL |
| VHDL | Entities, architectures, signals, types, processes, FSMs | Introduction to VHDL |
| Simulation and validation | Testbenches, Verilator, Icarus Verilog, GHDL, GTKWave, timing exercises | Simulation and Testbenches |
Popular FPGA Ecosystems
| Ecosystem | Common tools | Typical learning use |
|---|---|---|
| AMD/Xilinx | Vivado, Vitis | Artix-7, Zynq, larger education boards |
| Intel/Altera | Quartus Prime | Cyclone boards and industrial designs |
| Lattice | Radiant, Diamond, open-source flows on some parts | Small low-power FPGAs |
| Open-source | Yosys, nextpnr, APIO, Verilator, Icarus Verilog, GHDL, GTKWave | transparent learning and CI-friendly experiments |
Applications
- Signal processing
- Custom hardware acceleration
- High-speed interfaces
- Prototyping ASICs
- glue logic and protocol bridging
- motor control and deterministic I/O
- soft processors and teaching CPUs
How to Study This Section
Do not memorize HDL syntax first. For every design, ask:
- What hardware should exist after synthesis?
- Which signals are combinational and which are registered?
- What clock domain owns each register?
- How will I prove the design behaves correctly before downloading it?
- What timing requirement must the implementation meet?
That discipline is what separates “code that compiles” from real FPGA engineering.
Safety and Hardware Note
The examples here are low-voltage digital designs for education. Always check your FPGA board manual before connecting external hardware. I/O bank voltage, current limits, configuration mode, oscillator pins, and pin constraints are board-specific.
Start here: What Is an FPGA?.