3
\$\begingroup\$

Im building a VGA (640x480@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 (8x8 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.

\$\endgroup\$
  • 1
    \$\begingroup\$ Traditionally, people augmented the TTL with a 6845 video controller. \$\endgroup\$ – Brian Drummond Dec 19 '17 at 11:20
  • 1
    \$\begingroup\$ I guess, you'd better not avoid FPGA. \$\endgroup\$ – Marko Buršič Dec 19 '17 at 11:33
  • 1
    \$\begingroup\$ If your aim is to have a standard VGA connector to plug a monitor into you have a whole world of work ahead of you. If you just want a simple display, buy an LCD module with an SPI or parallel interface and a built-in buffer. \$\endgroup\$ – Finbarr Dec 19 '17 at 12:01
  • 1
    \$\begingroup\$ Atmel seem to have some: mouser.com/ds/2/268/DOC0425-1066264.pdf ("easily" is relative!) \$\endgroup\$ – pjc50 Dec 19 '17 at 12:02
  • 1
    \$\begingroup\$ I chose it because it was actually in stock at Mouser :) \$\endgroup\$ – pjc50 Dec 19 '17 at 12:16
2
\$\begingroup\$

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.

\$\endgroup\$
  • \$\begingroup\$ Yes. That documentation will be really helpful. Im using SRAM because i will add a microcontroller on the back to allow the user to change the character font. Allowing to create fonts to games scenery. Creating a sort of tiled scenery generation from 80's consoles. \$\endgroup\$ – h0m3 Dec 19 '17 at 12:50
  • 1
    \$\begingroup\$ I really should re-scan the schematics and convert everything to PDF, now that I have the technology to do so. As I said, that was a long time ago! \$\endgroup\$ – Dave Tweed Dec 19 '17 at 12:57
  • 1
    \$\begingroup\$ If I was designing that now with RAM chips and the like I'd program a microcontroller to generate all the timing signals. Massive reduction in component count, power consumption and complexity. \$\endgroup\$ – Finbarr Dec 19 '17 at 13:39
  • \$\begingroup\$ @Finbarr, I will. Most of timing will be done by the microcontroller. But i dont have a fast micro, so i will reduce the load by using some counters and shift registers. Probably the micro will be running at the same 25MHz that i will output to display. \$\endgroup\$ – h0m3 Dec 19 '17 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.