For whatever reason, the Video Graphics Array standard seems to attract a lot of hardware hacks. Most of them tend to center around tricking a microcontroller into generating the signals needed to send images to a VGA monitor. We love those hacks, but this one takes a different tack – a microcontroller-free VGA display that uses only simple logic chips and EEPROMs.
When we first spied this project, [PH4Nz] had not yet shared his schematics and code, but has since posted everything on GitHub. His original description was enough to whet our appetite, though. He starts with a 27.175-MHz clock and divides that by 4 with a 74HCT163, which has the effect of expanding the 160×240 pixels image stored in one of the EEPROMs to 640×480. Two 8-bit counters keep track of horizontal and vertical positions, while the other EEPROM takes care of generating the Hsync and Vsync signals. It’s all quite hackish, but it works. [PH4Nz] tells us that the whole thing is in support of a larger project: an 8-bit computer made from logic chips. We’re looking forward to seeing that one too.
This isn’t the first microcontroller-less VGA project we’ve seen, of course. Here’s a similar one also based on EEPROMs, and one with TTL logic chips. And we still love VGA on a microcontroller such as the ESP32; after all, there’s more than one way to hack.
Thanks to [John U] for the tip.
An EEPROM *is* a microcontroller, no?
No
No, microcontroller is a CPU + RAM + EEPROM + flash + IO ports + timers + other devices, all of that integrated in one package.
EEPROM is just a memory chip, nothing else.
Replace the EEPROM with a dual ported RAM chip with 2x the space needed for one frame and moving images are possible. Read one half to display while the other half is written then swap addresses for read and write. Flip-flop back and forth and Bob’s your video display.
Nothing new here. Old known stuff. Did mine when was 19, more than two decades ago, and by then it was already nothing new (but certainly exciting).
Nothing is exciting if you’ve seen it.
I find it easier to work with 800×600 72Hz 50MHz divided down to 25MHz or 12.5MHz to give 400×300 or 200×150.
25.175MHz crystals are hard to find and most CPLD/FPGA boards have 50MHz or 100MHz oscillators.
Also, I’m not so keen on 4:3 aspect ratio any more. Most monitors are 16:9 now. The WXGA aspect ratio seems more appropriate.
Though most monitors only expect the number of vertical lines to conform to a standard and will stretch the horizontal to fit the width of the wider screen.
It can be programmed, but it can’t execute code.
It executes code. It has 3 instructions that must come out of the ROM at the right time: nextPixel(color), nextLine(), nextFrame(). That’s why it has so few components.