gitmyhub

TinyCoDesign

Verilog ★ 27 updated 2mo ago

Minimal FPGA hardware/software co-design demo with UART protocol, scratchpad memory, and an int8 dot-product accelerator, plus Python/C++ runtimes.

A minimal teaching demo showing how a PC program can send commands over a serial link to an FPGA that runs a small dot-product accelerator.

VerilogPythonC++UARTVivadosetup: hardcomplexity 4/5

TinyCoDesign is a teaching demo that shows how to connect a computer program to a piece of programmable hardware (an FPGA — a chip you can configure to do custom tasks). The specific board used is the DaVinci Pro 100T, which contains an Xilinx Artix-7 chip. The goal is deliberately small: show the complete loop from a software command on a PC all the way through to a hardware calculation and back, without the complexity of large AI chips or full-scale deep learning systems.

The hardware side implements a scratchpad memory (a simple scratch space for storing numbers) and a dot-product accelerator, which multiplies two lists of small integers element-by-element and sums the results — a building block of neural-network math. Communication between the PC and the FPGA happens over UART, a basic serial protocol running at 115200 baud, which is the same standard used by many microcontrollers and USB-serial adapters. The software side has two runtimes: one in Python and one in C++, each able to talk to either the real board or a software simulator for testing without hardware.

You would use this project if you are learning FPGA-based hardware acceleration, studying how software and programmable hardware cooperate on a task, or exploring how to send commands over a serial link and get results back. The code is written in Verilog for the hardware description and Python plus C++ for the host software. Vivado (Xilinx's design tool) is required to synthesize and program the hardware.

Where it fits