This repository contains a free and open-source, fully synthesizable VGA controller requesting pixel data directly using configurable AXI bursts. It is part of the PULP ecosystem.
While future improvements may relax these constraints, currently:
- We only support AXI data widths of 32b to 1024b.
- The pixel size in memory must be equal to the sum of the hardware channel widths.
- The pixel size in memory must be a divisor of the data bus width.
To simplify VGA reconfiguration in your project, you can include the GNU Make fragment axi_vga.mk
in your makefile, for example:
include $(shell bender path axi_vga)/axi_vga.mk
# Inject alternative register layout if needed
$(AXI_VGA_ROOT)/data/axi_vga.hjson: config/axi_vga.json
cp $< $@
# Rebuild VGA RTL
all: axi_vga
A simple standalone testbench is provided. If you have access to Questa Advanced Simulator, you can run it using the scripts provided in vsim
:
make vsim
Everything in this repository is licensed under the Solderpad Hardware License 0.51 (see LICENSE
), with the exception of the regfile RTL (src/axi_vga_reg_*.sv
) which is generated by a fork of lowRISC's regtool
and licensed under Apache 2.0.