Electronic – Generation of text on composite video

i2cmicrocontrollerspivideo

I'm building a homebrew computer. I want some way to get video out, preferably along the lines of 80×25 text. I'm not interested in framebuffer graphics.

Does such a thing exist as a single-chip text generation system, complete with clock, internal character generator ROM and video memory? Preferably speaking something like I2C…

Back in the old days there was the SAA5243 Teletext video generator, which did almost all of this. It would surprise me a lot if there wasn't something similar (but better) available today. I have found things like the MAX7456, but that's really intended for OSD use and only does 30×16, which is a bit small. Is there any kind of modern equivalent?

Of course, I'm aware that any reasonably fast microcontroller can bit-bang composite video in software, but then I'd have to write it myself and I'd kinda like something which works.

(Incidentally, and this is not part of the question, but if anyone knows where I can get hold of an HD44780-style character LCD larger than about 80×16 I would be delighted.)

Update: Of course, anything that emits VGA is fine too. I basically want some form of video that's cheap and easy to display.

Best Answer

What sort of processor and memory system are you using? Many home computers in the 1980's had the video system that takes data directly from the processor's memory. Depending upon the processor, it may be possible to have the video system receive data from memory when the processor isn't using it (this was done on e.g. the Apple ][ series); even if that's not possible, having the video receive data directly from the CPU will often allow nicer screen updates than would be possible if the data had to be fed to another chip; one can vary the complexity of the hardware based upon the level of CPU loading that would be considered "acceptable". Note that if your processor/microcontroller has a spare DMA channel, the level of hardware required may be very slight--especially for a bitmap display--and the CPU may only need to be interrupted once per frame [depending upon the DMA controller, you might not even need that].

It would be possible to use a CPLD along with either a parallel or serial RAM to create a video subsystem which could run mostly or totally autonomously but would allow the main CPU to perform some display updates during the time when the display was blanked (depending upon how much logic you want to put in the CPLD, the main CPU may have to make sure it reset the address on the SPI RAM in time for video to resume clocking). You could also use a CPLD along with a parallel RAM to emulate a serial RAM; if you were planning on interfacing a serial RAM with your CPU anyway, that might be the best approach. Since the main CPU and the video would each only need to access two million bytes per second maximum (assuming one-bit video), there should be no problem interleaving the parallel memory cycles. I would guess that a CPLD with 64 or 72 macrocells could do the job "barely", or one with 128 or 144 macrocells could do the job "comfortably". I'd be inclined to go with the latter, since it could probably include a variety of features that would greatly expedite display updates (e.g. the ability to automatically bit-shift or mask incoming data).