Feature highlights

Hardware

I went for a relatively large amount of SRAM onboard since i knew getting the DRAM working was going to take a while. The SRAM is mapped starting at the base of memory extending upwards to 0x400000, and the DRAM is mapped in a nonconsecutive bank starting at 0xC000000. Once the DRAM is working, I’ll likely move the malloc heap into there to take advantage of all the extra memory. Since that frees up a lot of the SRAM, I might be worth copying the OS there on boot to take advantage of the single bus cycle memory access; much faster compared to the flash.

The large chip next to it is a PIC24FJ256, which has hardware LCD controller that i planned to hijack. I never got around to implementing it, since I had started an FPGA based solution around the same time. It was removed from the latest revision board, since I had success with using a CGA card for video instead. There is no serial port onboard, since it was much easier to just add a PC serial card to on of the ISA slots.

Software

Blitz runs my 32-bit operating system G-DOS. It supports FAT filesystems, and uses a flexible driver & init subsystem that handles hardware interfacing. G-DOS has my custom shell (G-Shell) and monitor (G-Mon) built-in, and boots directly from the onboard Flash ROM. A CGA card can be installed in an ISA slot to provide video output, and is required to use Blitz effectively. Lastly, it includes a boot-loader that can load & bootstrap a Linux kernel off a disk.

A quick history of Blitz

Wire-Wrapped Prototype

Blitz started as a wire-wrap prototype. It had the 68030 hooked up to 2MB of RAM and ROM with GALs for logic, plus an LED register as its only output. Once I had proof of code execution by seeing it blink the LEDs, I realized that wire-wrapping two 32-bit buses around was a pain in the ass, and went to design a PCB. Around this time, I started development of G-DOS, which I would develop concurrently with the hardware.

PCB Revisions

I then went through 3 PCB stages; The first board was just the CPU+FPU, RAM, and ROM. The second stage added on the ISA slots and the CPLD-based DRAM interface. The third stage changed the DRAM design, then added on-board IDE, Floppy, and PS/2 interfaces. This revision was compatible with the MicroATX form-factor so it could be installed in a PC case, and this ended up being the last revision. Each of these stages got produced, assembled, debugged, and tested over about 2 years.

Bring-up

While bringing up the PCB version of blitz, I struggled a lot with the CPU randomly freezing. This problem would go away if I just held my finger on the metal lid of the CPU. I assumed it was a power supply problem, maybe lacking the current supply for the CPU or something. I kept spamming more and more capacitors on later board revisions and the problem subsided, though never fully went away.

For a long time, there was a nasty issue with my CPLD code; The data bus byte selects were being driven completely backwards! Despite this, it still managed to boot G’Mon all the way to the prompt before I realized anything was wrong. It took until I created an emulator front-end for Blitz’s hardware for me to finally figure it out.

Videos

Reflections

Blitz has been a 3 year long journey that took me from doing simple 8-bit brews all the way to designing complex 32-bit systems. I’ve learned an incredible amount about the complexities of 32-bit bus design and system logic in general. Thousands of hours were put into this thing, going through countless revisions, and a lot of trial and error.

Although I have moved focus to other projects, there are still some parts left incomplete. Some of the stuff hasn’t been implemented fully, like the DRAM interface, and imperfections still exist. But it has reached a point where i am content with what I’ve accomplished, so I am releasing all my design files and sources here. I plan on resuming development of Blitz shortly, now that I have a break from school.

Are you selling kits/can I make my own Blitz?

I have no plan on selling any sort of kit for Blitz. It was made as a passion project, and I have no financial interests with it. There are still parts that don’t fully work, like the DRAM, so I recommend that you don’t try and assemble one yourself, at least for now. Since I am continuing to develop Blitz, if you want to build one, try waiting until I release a final revision board and software. However, if you still decide to make one, I am happy to answer any questions you have. Shoot me an email (notartyomowo@gmail.com) and I’ll do my best to respond.

Blitz is licensed under the GNU General Public License v2. Although I don’t expect contributions I’d appreciate if you shared any improvements with me, by either doing a pull request, or notifying me through email. Thanks!