Creating Video From A ROM

We’re used to computers with display screens, yet how many of us have created the circuitry to drive one directly? Sure, we’ve coded up an SPI display driver on a microcontroller, but create the hardware to generate a usable video signal? That’s a little more difficult. [Jdh] has given it a go though, with a TTL video card.

In this case it’s not a card so much as a collection of breadboards, but all the logic is there to generate the complex array of video timings necessary for synchronisation, and to output the bits sequentially at the right voltage levels for the analogue monitor. It’s worth pointing out though that it’s not a composite video signal that’s being created sinceit’s monochrome only with no subcarrier.

In the end he encounters the problem that his ROM isn’t fast enough for the pixel rate and thus the image has artefacts, but it does at least produce a recognisable and readable something on the screen. Old hands in the video business might point out that analogue TVs were a bit forgiving when it came to exact timings and line counts so the circuit could quite possibly be simplified, and also that trading away some of the resolution might fix the ROM speed issue. But it’s an impressive piece of work, and should be of particular interest for anyone interested in how video works.

Fans of video cards on breadboards should also check out [Ben Eater’s] 7400-series video card.

Thanks [Måns Almered] for the tip.

14 thoughts on “Creating Video From A ROM

  1. I remember finding a website for a museum of UK 405-line TVs, and a tiny (and ancient) ROM-and-counters generator that produced the proper 372i video for them. Having trouble finding it now, however.

  2. Interesting about the speed of the ROM. That makes me wonder if this was the reason that a late 70’s TTL video game split the images up into 3 different ROM chips.

    Those old TTL games did pretty much what this video card is doing: generate composite video from TTL chips (NTSC in my case). I don’t actually know what the resolution is on my sample size of 1.

    1. More likely that it is a design choice. The character generator ROM is usually a last stage table look up to translate character code to the character bitmap that is serialize to video output. Part of its address input is from the text buffer and the other part comes from a row counter that keep track of the character scan line. It does not belong to the processor bus, so it has to be a separate device.

      The other ROMs are probably because the memory density wasn’t sufficient back in the days for the code and game data. i.e. process nodes are ancient, so you don’t get to fit too many transistors in a chip.

  3. Did this back in the late 70’s. You have 0.8? microseconds per character and the character generator EPROM access time will be well inside that. Just wait the access time, latch the output into a shift register and shift it out. I used a ZN[something] sync generator chip for the timing. Finding the required crystal was the biggest headache of the whole design. Can’t be bothered to rummage through the files to find the circuit diagram to see what he’s done.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.