Build a DIY VGA Video Card Utilizing the Correct Signal Timing and Crystal Oscillators
Developer and pilot Ben Eaten is known for creating project build using a combination of new and outdated technology, such as his 8-bit…
Developer and pilot Ben Eater is known for projects that use a combination of new and outdated technology, such as his 8-bit Computer and Error Detection Board, which were created with some logic ICs and other electronics tied together on a series of breadboards. His latest project involves building a homebrew VGA video card — not a powerhouse Nvidia GTX Series 10 capable of 4K resolutions, but rather one that maxes-out at driving just a few thousand pixels at best.
Eater’s goal was to see if he could make a video card using the same outdated electronics he’s employed for his other projects, and while this is an ongoing project, he’s already had some promising results. Eater begins his endeavor by explaining VGA standards, and what resolution his card would be able to push, eventually settling on 800 x 600 (@ 60MHz). Realizing that resolution wouldn’t work with the technology he has, he scaled it back to 200 x 150 (@ 10MHz).
While Eater’s chosen resolution works just fine for displaying images, he needed to do a little finagling with the horizontal timing to get it to work correctly. To overcome this issue, he designed a circuit to count out 200 pixels, and inject data to the front porch, sync pulse, and back porch at the end of each horizontal pass.
Eater’s circuit was created using a series of 74LS161 binary counters to count said pixels (from 0 to 264), as well as several 8-input NAND gates that handle the front porch, sync, and back porch signals. The complete DIY VGA video card uses 20 logic chips, along with the circuit, all housed on four breadboards strung together. While Eater’s project isn’t finished, he goes into detail of how his idea came to fruition, and what work he still has left to go in the clip above.
UPDATE: In his second video, Eater discusses how VGA uses analog RGB signals to send different color pixels to the monitor. He utilized an EEPROM to store an image and built a simple digital-to-analog converter to generate the color signals to successfully display an image. Watch his ‘exciting conclusion’ below!