MC68000 graphics card

A project log for Motorola 68000 computer

A mc68k-based computer motherboard, some expansion cards, and a very basic multitasking OS, all built from scratch.

StuartStuart 10/18/2016 at 22:012 Comments

This is the shortest log ever, written mainly because a) I'm feeling guilty about not having written a log for so long, and b) to prove that I'm still making progress on the MC68000 computer project.

I've already got an ATA (IDE) interface and serial ports on the MC68000 motherboard; other project logs describe my adventures creating Ethernet and PS/2 controller expansion cards for the system. The obvious next step is therefore to add video support. This is what I've been up to for the last month or two.

Initially I designed a framebuffer card based on an MC6845. I managed to get a viable-looking design together using some fast SRAMs, a couple of high-speed shift registers, a triple video DAC and a *lot* of bus transceivers. The prototype looked a bit like this while it was under construction.

I became a bit demotivated when the time came to route the (gigantic) PCB. I have already routed one fairly gigantic PCB (the motherboard), and it can be a real time-sink. So: I ended up breaking a few of my own rules.

So far I've kept the MC68000 project fairly "vintage". Except for the Ethernet controller, the system uses technology consistent with the 68k's era: no surface-mount, all DIL packages, no fancy stuff. The point of the project, however, has always been to learn as much as possible. Readers of my other logs will know that I've tried to avoid using too much pre-packaged stuff; there are plenty of good, easy-to-use 80s/90s-era video controller ICs out there, and it would be quite easy to throw together a graphics card based on one of those, but where would be the fun in that? So, I thought - stick with me on this - what better way to learn about video hardware than to design my own video controller IC, and build a graphics card around it?

I started a design based on a Lattice iCE40HX1K FPGA. I had already played around with a Lattice iCEstick and found the FPGA (and, crucially, the tools) quite easy to use. I learnt a bit of VHDL, and implemented a VGA pattern generator:

Having done this, it wasn't much of a leap to start work on a graphics card for the MC68000 system. I settled on a minimal specification, to keep things straightforward.
On-board video RAM1MB SRAM (512k x 16), 12ns access time
Supported video modes640x480, 800x600, 1024x768 (all at 60Hz)
Colour depth8 bit (3:3:2 R:G:B) via ladder DAC
Interface15-pin high-density D connector (analogue VGA)
Host interface16-bit data bus, direct-mapped RAM, zero wait state, zero contention
Host interrupt supportVSYNC / HSYNC / both

Anyway, the design is done and the PCB is ready to go to manufacture. I'm still working on the logic implementation in VHDL, but I'm reasonably confident that it can all be made to work.

Here's a poorly-rendered 3D image of the completed board.

The design is almost entirely surface-mount. The two ICs in the top-right corner are the SRAMs; the FPGA is in the centre. The ladder DAC is the collection of resistors to the right of the 15-pin D connector. Most of the remaining ICs implement the host interface; the host connector (a DIN41612 plug) is missing from the image, as I don't have a 3D model for it. The 10-pin header connector below the VGA socket is a programming header for the SPI Flash ROM which contains the FPGA configuration bitstream.

I hope to be able to upload a photograph of the real thing very soon!


Daniel Riches wrote 02/03/2020 at 14:17 point

Any progress on your ice stick graphics card? I'm looking to do the same at some point and have the ice stick too so anything you have would be great to look at. I bought a 'kit' of 68k parts from eBay and the NEC video chipset looks daunting and very much out of date plus needs so much more logic to get anything up and running so I think your idea of using an fpga is much better. I use Diptrace too, great package with almost no learning curve so top marks for that ;)

  Are you sure? yes | no

Peter Noyes wrote 10/18/2016 at 23:07 point

Nice work! Also fun to see another DipTrace user!

  Are you sure? yes | no