DrPetter's homepage


This is a university project that two other guys and myself were occupied with during two months in early 2004.

Partners in crime:

The goal of the course was to implement a more or less advanced digital system using at least some programmable logic. Common projects were calculators and simple computers, but we were feeling ambitious and wanted to go for a full games console with graphics and sound. Although our tutor was slightly pessimistic to start with, we charged ahead and had most of the basic systems implemented within a week. At this point it played some bleepy sounds (driving fellow students mildly crazy) and displayed the (random) contents of video RAM.

The following couple of weeks we finished everything except some "minor" issues with the CPU and hardware signal quality. The system was quite unstable and crashed inexplicably every now and then. The entire remainder of the project was spent working on these problems (we basically only slept and worked, only rarely did we take a break for dinner or other such trivialities), while simultaneously developing some software tools and a few games and demos.

It turned out that there were serious issues with signal quality in our wires, especially with the clock signal. We finally managed to improve it to the point where it would be stable as long as you didn't touch it :)

There was also a problem in the CPU logic that perplexed us for far too long. It's quite embarrasing really, since it was located in my CPU control module. What was happening was that accelerated memory transfers (where you'd issue a transfer instruction to the CPU and it would transfer a set number of bytes from ROM to RAM) sometimes failed, depending on the data transferred. They were of course not supposed to care what data was being transferred, and we didn't consider that option until the last few weeks of the project. We naturally expected it to be related to the hardware problems we were experiencing, since it seemed so random. It did actually behave differently when wires were manipulated at run-time, so there were definitely some hardware problems involved, but we finally did find an error in the VHDL code for the mentioned control unit, and fixing that solved everything.

There were a couple of demos made, but only one of the games was completed. A Tetris game was cancelled due to time constraints and a Dance Dance Revolution style game had to be aborted due to it failing inexplicably on the hardware while working fine on the emulator.

My commitments on the project were mainly CPU/ALU, sound hardware and the PC based tools (assembler/tracker/emulator). I also wrote the only finished game.
The audio output of the tracker was initially not an authentic emulation of the sound hardware, and there were probably minor bugs left in the assembly music player even at the end of development. I've included the original version of a song I made early on as well as the final emulated version for comparison.
Unfortunately there was never any video or audio recorded from the actual hardware, even though we had plans on doing that initially. I did drag a VCR to the lab one day to study the video signal, but obviously the hardware was far too primitive then to make for any interesting recordings. At the end of the course we were just too tired to bother bringing it and setting it up again.


- 8 MHz homebrew processor implemented in programmable logic
- 8kB RAM, 8kB double buffered VRAM, 16kB Program ROM
- Monochrome 128x128 bitmap graphics with hardware accelerated screen fill
- 4 channel audio (square, saw, triangle, noise)
- Two joystick ports supporting TAC-2 joysticks
- Custom macro assembler, emulator and music tracker


dkstation_emulator.zip (157 kB)
tnn-hejhopp7.mp3 (1.8 MB)
tnn-tetris.mp3 (1.6 MB)
drpetter-finally2.mp3 (722 kB)
drpetter-finally2hq.mp3 (720 kB)
(high quality version from the tracker, not authentic)

dkpresentation.zip (615 kB)
Project presentation slides (swedish)

dks_schematic_mainboard.png (237 kB)
dks_schematic_ioboard.png (275 kB)
dkstation_wallpaper.jpg (255 kB)

Back to all projects

Page updated on March 25   2010