A solution for high-level interface to multiplexed 8×8 LED matrix. Fully custom PCB, FPGA-based driver and JS-based interface using Node.js backend.
In sections below you can find description, videos, pictures, source code:
Photos
Connected and working:
Etching the PCB:
Video
(Flicker only visible through camera)
Description
#VHDL adventure ^^ This is a bench setup for driving 8×8 multiplexed #led#matrix. The #display has 8 #anode and 8 #cathode pins connected to an #FPGA through #transistors.
The FPGA chip implements #serial TX and RX modules and matrix driver module, all written in VHDL. Matrix driver is configured to keep reading bytes from serial interface and put them in a ‘frame buffer’, where they await being multiplexed. Additionally I implemented dimming option, which multiplexes the thing over once again in the time domain (every byte is a intensity value for a specific LED). Serial data from and to an FPGA goes through a #node.js #server – an intermediate layer responsible for redirecting serial byte stream to a #websocket. Finally a web #browser is used as a #frontend. Here data is being read and written to a websocket with #javascript.
PHYSICAL LAYER:
PC <-> USB to Serial <-> 5V/3.3V shifter <-> FPGA -> 8×8 LED #bjt#driver -> 8×8 Multiplexed LED Matrix
LOGIC LAYER:
Web browser <-> JavaScript <-> Websocket <-> Node.js <-> (serial link) <-> VHDL Serial -> VHDL LED Matrix driver