====== Blitz 68030 ====== ====== Feature highlights ====== * Motorola 68030 @25-50MHz 68882 FPU * 4MB of static RAM 64MB DRAM * 512k of Flash ROM * VT8242 based PS/2 Keyboard interface * AIC37C65CL based Floppy interface * ATA hard disk interface * 3x 8-bit ISA expansion slots * MicroATX form factor & PSU connector * Glue logic handled by a single XC9572XL CPLD ====== 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. [[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=10543e&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-Overview-1-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-Overview-1-scaled.jpg?direct&1280x836 |Revision K of the stage-3 Blitz motherboard.}}]] [[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=ff33c4&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-ISA.png|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-ISA.png?direct&1152x864 |Stage-3 motherboard with a CGA card installed into it’s ISA bus.}}]] 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 [[https://hackaday.io/project/166537-diapason-m68k-homebrew-with-fpga-graphics|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. |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=e93c89&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/fputs-testing-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/fputs-testing-scaled.jpg?direct&640x480 |Testing the G-DOS shell and file manipulation commands.}}]]|[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=b1fb72&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/isa-ide-regdump-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/isa-ide-regdump-scaled.jpg?direct&640x480 |Dumping a segment of memory in G’Mon. I believe the data visible is from the ATA/IDE hard disk controller interface.}}]]| |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=08b5f2&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/shell-cat-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/shell-cat-scaled.jpg?direct&640x480 |Dumping the contents of a G-DOS source file from a running Blitz instance.}}]]|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/ps2-keyboard-debug-scaled.jpg?nolink&478x640 |The first signs of life from the Linux kernel, having been boot-loaded in by G-DOS.}}| ====== 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. |{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/PROG0.jpg?direct&515x317 |The backside of the stage-0 Blitz prototype. This is about the extent of the wiring I did before moving to a PCB.}}|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/PS2-controller-card.jpg?direct&596x447 |A wire-wrapped PS/2 keyboard ISA card used to test the stage-1 and stage-2 Blitz prototypes.}}| === 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. |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=2869b3&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_2_completed-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_2_completed-scaled.jpg?direct&640x480 |The complete stage-2 Blitz prototype motherboard.}}]]|[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=40da0e&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_2_ISA-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_2_ISA-scaled.jpg?direct&640x480 |The stage-2 Blitz prototype with a CGA card installed.}}]]| |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=323498&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Overview-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Overview-scaled.jpg?direct&640x480 |Left: stage-1, Right: stage-2, Top: stage-3}}]]|[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=a7fb78&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_1-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_1-scaled.jpg?direct&640x640 |The stage-1 motherboard being built for the first time.}}]]| === 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. |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=583f81&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/CGA-512colors-1-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/CGA-512colors-1-scaled.jpg?direct&640x480 |512 color bitmap displayed using the CGA card.}}]]|[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=528e03&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/PR0.png|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/PR0.png?direct&639x365 |From an early revision where blitz was going to be a 16-bit ISA backplane design.}}]]| |[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=2af21d&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-render.png|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Stage_3-render.png?direct&639x406 |3D render of the stage-3 motherboard.}}]]|[[https://www.retrobrewcomputers.org/lib/exe/fetch.php?tok=83773b&media=https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Thanks-scaled.jpg|{{ https://blog.notartyoms-box.net/wp-content/uploads/2021/03/Thanks-scaled.jpg?direct&640x284 |The super secret silkscreen credits on the latest boards.}}]]| ====== Videos ====== |{{youtube>D9bGbcfDvn8?large}}|{{youtube>RyrOLyxxSC0?large}}| |{{youtube>9qnqj9sJyQ4?large}}|{{youtube>XZKD6WbR8RI?large}}| |{{youtube>C3eMo7sHN6k?large}}|{{youtube>UgJ__9ouEZE?large}}| {{youtube>ksXWgkbyrKo?large}} ====== 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! \\