VGA Graphics On An FPGA
Posted: April 20, 2008
This is my first FPGA project. I got this Xilinx Spartan3 FGPA starter kit which came with 5 pins hooked up to a VGA port. Basically all it does is takes the 50MHz clock crystal and halves it to 25MHz. This creates a VGA clock where each pixel is 1 clock cycle. It uses a 10 bit counter for doing the horizontal timing and a 10 bit counter for the vertical timing. Using these counters it calculates when to apply voltage to the horizontal and vertical sync pins and data on the red, green, and blue pins. Coding was all done in VHDL (source code is below). Btw, anyone interested in reading about video timings, I found this page quite useful: https://www.epanorama.net/documents/pc/vga_timing.html.
I have a video of vga2.vhd working on YouTube.com:
Update (2014-Sep-02): I did a new VGA project recently in Java with a more full explanation on how VGA works here: Java VGA
Related Projects @mikekohn.net
This is the Spartan 3 starter kit from Digilent.
This is vga.vhd running on my old Gateway monitor. I didn't want to risk doing something dumb and blowing up a CRT I liked :).
This is vga2.vhd. This is an animation of a square changing colors really fast and bouncing around the screen. All source code is downloadable at the bottom of this page.
Update June 12, 2011: I updated the ucf file for the Digilent Nexys2 board and made vhdl file for it. The colorbars and square move around the screen in this. For information on how to compile and run this from the command line on linux see here.
LinksDigilent - This is the web site where I got my FPGA starter kit from. They have some really nice stuff there.
Copyright 1997-2021 - Michael Kohn