Electronic – Character mask VGA display

character-lcdmemoryttlvga

Im building a VGA (640×480@60Hz) adapter for my homebrew project but i dont have enought memory to store a framebuffer. Since im using 8 bit memory i plan to do 8 bit color, but 8 colors would be enought for my project.

How is the most efficient way to implement a character mask (8×8 pixels) using only memory and TTL? I was thinking about using a memory bank (6264) to store the character mask, another bank linked to that to select wich mask i want to use in a sequency using binary counters. Then using a PISO Shift Register (74166) at 25MHz to feed a multiplexer (74157) that selects background or foreground color stored at another memory bank. But this seems overcomplicated.

Since only the 74166 and the 74157 would be running at 25MHz i can get off with HC ones? Or better to run with another model (they are harder to find here).

I want to avoid FPGAs. Use only TTL, SRAM and microcontrollers.

Best Answer

You are definitely on the right track.

For example, the J. B. Ferguson "Big Board" (CP/M) computer used exactly that technique and technology to produce a 25×80 text display. It has 2k of SRAM to hold the characters and 2k of EPROM as a character generator, which could just as well be SRAM too. All of the timing and control is done using LSTTL logic. It uses a clever address mapping technique (requiring just one additional mux chip) that allows the character RAM to be addressed by rows and columns instead of as a linear memory space.

If you want to investigate further, I scanned the documentation some time ago and put it online here.