Projects on real boards

Each project is small enough to finish in an evening or a weekend, and complete enough to actually run: HDL, constraints, build steps, and what to look for when it works.

Beginner

From blinky to PWM breathing LEDs on the Tang Nano 9K with open-source tools

Install Yosys, nextpnr-himbaechel and openFPGALoader, then make the six LEDs on the Tang Nano 9K breathe with a triangle wave, a gamma lookup and a PWM module you write yourself.

Sipeed Tang Nano 9K · about 2 h · verilog
Beginner

UART echo on the Basys 3

Build a 115200-baud UART receiver and transmitter in Verilog, echo typed characters back with their case toggled, simulate it, then test it from a serial terminal.

Digilent Basys 3 · about 3 h · verilog
Intermediate

VGA test pattern on the iCEBreaker

Generate 640x480 at 60 Hz from an iCE40 UP5K with the open-source flow, with a PLL-derived pixel clock, a sync generator, colour bars, a chequerboard and a bouncing block on a 12-bit VGA Pmod.

1BitSquared iCEBreaker · about 4 h · verilog
Advanced

Your first custom AXI peripheral on the PYNQ-Z2 (or Zybo Z7)

Write an AXI4-Lite slave with four registers by hand, drop it into a Zynq block design, export the hardware, and drive it from Python on PYNQ or from bare-metal C in Vitis.

TUL PYNQ-Z2 · about 6 h · verilog