Skip to main content
Home▸ Forums▸ 68kMLA▸ Homebrew microcomputers & video generation — #5
Post #5 by Grackle
Source Forum68kMLA
CategoryHardware
Post DateTue, 26 Feb 2013 - 00:52
Original URLhttps://68kmla.org/bb/threads/homebrew-microcomputers-amp-video-generation.27426/
Post
Hi guys, thanks for all the responses! You've given me a lot to think about.

To start off I'll try to explain my goal a little better:

I'm taking inspiration from the old 80s microcomputers. I want to build something simple & hackable with some external bus expansion slots, video output, sound output, keyboard, serial, etc, and a ROM toolbox with monitor and high level language interpreter and useful routines and drivers for the on-board hardware.

That's what comes to mind when I think of the Apple II... It's a highly expandable yet relatively simple computer that has everything you need to get started built right into the ROM. I want to build something like that, but with common and inexpensive modern components.

Gorgonops asked if this is my first homebrew computer project. Yeah, it is. This is something I've wanted to do for a long time, and I've done a lot of reading about computer system architecture stuff, but that and some computer and microcontroller programming experience are all I have going for me. At best, I'm familiar with some of the concepts involved.

Anyway, getting back to video. Originally I had looked at dual ported RAMs with the intention of using them with some sort of external video generator, but they seem uncommon and the ones I could find (on Digikey) were way too expensive to even consider. So, I went off trying to figure out how to manage with just the CPU and system memory, and when I figured out the throughput required, I panicked and came here for help. :|

It seems that using the CPU to generate the signal is pretty much out. It's entirely possible to do it, either with lots of "analog voodoo" (hah) like Gorgonops described, or using a video DAC with a built-in timing generator like the TI THS8200 (something I had looked at earlier), but doing so would be a monumental waste of CPU time. Even with DMA like Commodorejohn suggested, the memory/expansion bus will have a lot of work to do. Overall... not a good way to do it.

So if I can't use the typical method with dual ported RAM (because it's too expensive,) and I can't use the CPU and system memory (because that's just plain terrible,) what's left?

The RPi, or devices like it... Very tempting. My biggest argument against that option is that I really want an expansion bus on the external memory interface. If I made my own board, there's the added complexity of package-on-package devices and BGA devices in general, even higher clock speeds and faster edge rates than what I'm dealing with now, etc.

Next up... an FPGA. It could handle the timing and talk to a simple DAC (or DACs), and it could interface with its own framebuffer memory. With a fast enough device and fast enough memory and proper synchronization, my CPU could talk to the FPGA as if it were an external memory. Plus there's all sorts of flexibility there, like ian.finder said, I could even use an FPGA CPU core. Hell, I could probably do everything on the FPGA. I'm a little hesitant to pick this option though, it would be a steep learning curve for me.

At this point I was going to talk about using a second CPU to generate video signals, but while I was searching around I discovered a couple other NXP processors that sound promising. First there's this Cortex M4 with M0 coprocessor and LCD controller in an LQFP208 package. Then there's this ARM720T SoC with LCD controller in an LQFP208 or LQFP176 package. Somehow I missed these devices in my previous searches. I'll have to mull over the datasheets; maybe they're a better fit than the LPC2420.