3

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.

h0m3
  • 85
  • 7
  • 1
    Traditionally, people augmented the TTL with a 6845 video controller. –  Dec 19 '17 at 11:20
  • 1
    I guess, you'd better not avoid FPGA. – Marko Buršič Dec 19 '17 at 11:33
  • Very hard to do with just TTL - even back in the day the 8 bit home computer systems used CPLD or ULA semi-custom logic devices to achieve this. – pjc50 Dec 19 '17 at 11:35
  • @pjc50. Do you know some CPLD or PLD wich i can easly program to do just that task but 5v and DIP packaged? – h0m3 Dec 19 '17 at 11:41
  • 1
    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. – Finbarr Dec 19 '17 at 12:01
  • 1
    Atmel seem to have some: http://www.mouser.com/ds/2/268/DOC0425-1066264.pdf ("easily" is relative!) – pjc50 Dec 19 '17 at 12:02
  • @Finbarr, yes! Standard VGA signal. Im still designing the model. But i realised that just displaying color text is a real challenge. My biggest problem is speed and timing right now. – h0m3 Dec 19 '17 at 12:13
  • @pjc50. That PLD looks amazing. Its just hard to find. But i will keep looking. – h0m3 Dec 19 '17 at 12:15
  • 1
    I chose it because it was actually in stock at Mouser :) – pjc50 Dec 19 '17 at 12:16
  • @pjc50. Yeah. Global stores as Mouser arent a option here. Im limited to local stores. Government burocracy. That is the reason im not using FPGA or CLPD, they are really expensive here and there's no much options. – h0m3 Dec 19 '17 at 12:44
  • 1
    This is an old thread, but you may see how actually looks like a VGA card from TTL signals, well it uses a programmable gate array or similar ASIC https://electronics.stackexchange.com/questions/331214/ega-display-converting-to-vga-screens-shaking – Marko Buršič Dec 20 '17 at 09:29

1 Answers1

2

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.

Dave Tweed
  • 168,369
  • 17
  • 228
  • 393
  • 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. – h0m3 Dec 19 '17 at 12:50
  • 1
    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! – Dave Tweed Dec 19 '17 at 12:57
  • 1
    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. – Finbarr Dec 19 '17 at 13:39
  • @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. – h0m3 Dec 19 '17 at 15:10