LED Matrix Driver Get in touch

How it works

A 128×64 RGB LED panel driver in SystemVerilog on an iCE40. What LED Matrix Driver does, what it’s built with, and how far along it is.

Title
Product
Dwg no.
Q6-PRO
Rev
2026.1
Part of
LED Matrix Driver

The premise

A SystemVerilog driver for a custom 128×64 RGB LED matrix on a Lattice iCE40UP5K. An STM32 sends frames over SPI. The FPGA double-buffers them, applies gamma correction, and drives the panel with 8-bit binary code modulation at 120 Hz or more, with global dimming.

The design passes all of its simulation and synthesis checks: 9 of 9 cocotb tests, a 121.7 Hz refresh, and timing closed at 39 MHz against a 33 MHz target, using 16% of the chip. It hasn’t run on real hardware yet. The board it will run on is drawn as a schematic, with the layout still to do.

What’s included

8-bit binary code modulation at 120 Hz or higher, with global dimming

Double-buffered frames streamed over SPI from an STM32

cocotb testbenches checked against a Python model of the panel

An all open-source toolchain: yosys, nextpnr-ice40, icestorm and Verilator

How it’s built

LED Matrix Driver is built on SystemVerilog, iCE40, cocotb, Python and yosys.

The repository is 70% SystemVerilog, 27% Python, 3% Makefile by volume.

It carries 1 commits since Jul 2026, most recently changed in Jul 2026.

How the work is done

Every project here starts as a written spec, and the spec stays the source of truth once there’s code. The repository keeps a build plan with current status, an append-only decision log of where the code departed from the plan, and a handoff document that describes where things stand, including the unfinished parts.

That’s how one person keeps this many projects moving, and it’s what this page is written from.

Current state

Prototype. Works, but isn’t finished.

The source is private, so the way to check what this page says is to use the product.

Next

Build on LED Matrix Driver

Ask about licensing the platform, bringing up a board, or contract firmware work.

This site isn't finished. Anything on it may still change, and none of it is binding until the site is live.