By Peter Alexander Greczner

This project realizes a simple graphics processing unit (GPU) on an FPGA which can be used as a GPU for Atmega microcontrollers to output graphics to a VGA display. An Altera Cyclone II FPGA will be used to implement the GPU. The FPGA and the host device will communicate via a RS-232 serial interface using a handshaking command structure to ensure accuracy of instruction delivery. Final output of the graphics will be displayed on a VGA compatible monitor. The result of the project is a GPU as well as VGA driver for the host device that allows a user to set up a graphical window to draw into and display on the VGA screen. The GPU supports multiple drawing functions such as text writing, line drawing, and rectangular fills. It also provides two different screen resolutions to draw into, 640x480 and 320x240, as well as capability for both single and double buffered graphics. The end product allows a simple method for one to use a microcontroller or other host device to create high quality graphical program without sacrificing memory, speed, or timing constraints of said microcontroller.

Full report (pdf)

GPU code

C-VGA code