Hand made / wide discrete logic computer
This guy deserves a medal!
http://www.stevechamberlin.com/cpu/category/bmow1/
Here’s a summary of the project, for everyone following the link from the article.
Big Mess o’ Wires 1 is an original CPU design. It does not use any commercial CPU, but instead has a custom CPU constructed from dozens of simple logic chips. Around this foundation is built a full computer with support for a keyboard, sound, video, and external peripherals.
My original goals were:
* Build the CPU from scratch, primarily using basic 7400-series logic. No 6502, Z-80, etc.
* Keep the hardware complexity to a minimum. I’m not an electrical engineer.
* Be capable of running “real” programs, not a 4-bit CPU or toy machine.
* Provide a way to interface with a PC.
* Be fast enough to run interesting programs interactively.
Stretch goals:
* Boot into a simple integer BASIC program, capable of interactively editing and running its own programs.
* Support multiple programs executing simultaneously, via a pre-emptive multitasking OS.
* Provide keyboard input, VGA video and sound output.
Initial design began in November 2007 with a high-level sketch of the CPU internal design. A simplified Verilog hardware simulation proved the key design details. Construction began in earnest in February 2008, using a large wire-wrap board to interconnect the 50 or so chips needed. In April, a half-finished BMOW 1 booted up for the first time, computing fibonacci(12) = 144 using a simple ROM-based program. One by one the original system goals and stretch goals were met, including VGA video, three voice audio, BASIC, and a bootloader for communication with an attached PC. BMOW 1 eventually gained the ability to run complex programs written in assembly or compiled from C. The main construction phase ended in February 2009, with the completion of a customized case to house everything. As of March 2009, Big Mess o’ Wires 1 is fully functional, but will probably never be “finished”.
Architecture
BMOW 1 borrows liberally from other homebrew designs, as well as the MAYBE design presented in the book Computation Structures by Stephen Ward and Robert Halstead. Data busses are 8 bits wide, and the address bus is 24 bits. Four 8-bit registers are used for general data, and three 24-bit registers store the program counter, stack pointer, and a scratch/working address pointer. Registers and the arithmetic and logic unit are interconnected by one data bus, while RAM, ROM, and memory-mapped hardware devices use a second data bus. The ALU also has dedicated left and right data input busses.
Machine language instructions are implemented as a series of micro-instructions, stored in three parallel ROMs to create a 24-bit microcode word. One micro-instruction is executed each clock cycle, and the micro-instruction bits are used directly as enable and select inputs to control all the chips in the machine. Up to 16 micro-instructions may be needed to implement a single machine language instruction.
Note: Some additional devices are not shown here, including the VGA display circuitry and real-time clock.
24-bit addresses allow for up to 16MB of memory, but only a little more than 1MB of combined RAM and ROM is installed. The most-significant byte of the address is called the bank byte, and is normally invisible to programs. The standard instruction set presents a 16-bit interface to programs, with most instructions implicitly referencing the current bank. Cross-bank references are possible, but awkward (think x86 segment registers).
A 512K ROM contains a bootloader/menu program. A USB-to-TTL interface based on an FTDI chip provides an easy way to move data to and from a connected PC. A standard PC keyboard with PS/2 connector is used for keyboard input, and a 24×2 character text LCD serves as a debug output display. Custom video circuitry drives a standard VGA monitor, with a maximum resolution of 512 x 480. A three-voice programmable sound generator provides music and sounds.
BMOW 1 is built on an Augat wire-wrap board pre-populated with thousands of wire-wrap pins. The chips are pushed into the board without soldering, and can be easily removed, similar to a prototyping breadboard. Unlike a breadboard, the pins are individually connected on the underside of the board according to the needs of the circuit design. A wire-wrap tool is used to wrap stripped wire ends tightly around each pin. Wires can be removed fairly easily in case of a mistake. BMOW 1 contains about 2500 such wire wraps.
Specs
* Current clock speed is 2MHz. It could theoretically go to about 3MHz (untested).
* 512 KBytes of RAM, 512 KBytes of ROM.
* Power draw is 10 Watts, 2.0A at 5V.
* VGA video output is 512×480 with two colors, or 128×240 with 256 colors.
* Audio and music is provided by a three-voice programmable sound generator.
* Keyboard input is a standard PC keyboard with PS/2 connector.
* Debug display is a 24×2 character text LCD.
* There are roughly 1250 wires connecting the components, so 2500 individual hand-turned wire wraps.
- CraigB's blog
- Login or register to post comments

