Monochrome Text-Mode VGA Video Display Adapter

Project maintainers


Name: interface_vga80x40
Created: Nov 16, 2007
Updated: Sep 8, 2020
SVN Updated: Mar 10, 2009
SVN: Browse
Latest version: download (might take a bit to start...)
Statistics: View
Bugs: 2 reported / 1 solved
Star3you like it: star it!

Other project properties

Category:Video controller
Development status:Stable
Additional info:Design done, FPGA proven
WishBone compliant: No
WishBone version: n/a
License: LGPL


This VHDL macro is a Text Mode Monochrome Video Display Adapter for VGA monitors. It can be used as a peripheral for a soft-processor, external microcontroller or other non-programmable hardware. It's not much better than the original IBM MDA card appeared in 1981 ;-)


- resolution is 80x40 characters, dot resolution is 640x480 pixels at 60Hz so the core needs a clock signal of 25MHz. I prefer 80x40 instead the classical 80x25, in my opinion, the latter is an annoyance.
- monocrome, it hasn't "attribute" memory to store the color of each character. The unique output color is selectable among 8 different colours
- the video text buffer is an external memory (or BRAM inside the FPGA) of 80×40 = 3200 bytes. The character at (column, row) = (0, 0) is at the RAM address 0, the character at (79, 39) is at 3199.
- 8-bit ASCII codes (iso-latin-0 or other that you prefer)
- the ROM that store fixed-width bitmap font is also external, the bitmap can be changed modifying the COE file. The COE file provided is iso-8859-15 (also called iso-latin-0), is very similar to the iso-8859-1 but with the Euro (€) symbol added.
- hardware cursor, with two different shapes; with enable/disable control.
- simple IO interface. Three registers
- CRX. Position (column) for HW cursor
- CRY. Position (row) for HW cursor
- CTL. Control register for de/activate the HW cursor, change its shape, de/activate VGA signal, output colour, etc.
- uses 100 slices in a Xilinx Spartan-3.
- the design is vendor-agnostic. You can use it in Xilinx/PicoBlaze, Altera/NIOSII or with other non-programmable hardware.


You can find the documentation for this macro in the downloads section and also at


See "Downloads" in the menu bar. There is VHDL design files plus documentation.