This is about my first attempt at designing and building a computer processor. It is made from 7400 series integrated circuits (I.C.'s) that contain simple logic gates, binary adders, flip-flops, registers, decoders, multiplexors etc. These series 7400 I.C.'s are carefully designed so they can be connected together in patterns to make larger logic circuits. I built a computer central processing unit (CPU) of my own design out of these I.C.s.
I am a computer hobbyist. My first computer was a Sinclair ZX-80. I learned BASIC, and later Z-80 assembly language. Using the BASIC PEEK and POKE statements I wrote simple assembly language programs on this little machine. Later, I wrote some simple video games on a TRS-80.
I was interested in how these machines worked on the electronic level, so I bought a Radio Shack Digital Logic Learning Lab, a kit with a single 7400 I.C. (four NAND gates) and various light-emitting diodes, resistors and capacitors. I got a good feel for how a digital I.C. works with this inexpensive kit. I read some books about building your own 8-bit computer, and tried it using a Z-80 processor. My first attempt was a complete failure because I did not have the ability to test the system. I built it, it didn't work, and that was that. Next time, I made sure that I designed and built the computer in such a way that I would know why it did not work. One must expect that after making several hundred connections, one will get some wrong, and one must be able to correct one's mistakes.
My next computer was an absolute minimal system, just a Z-80, a static memory, and a slow clock on a breadboard. I entered a simple program into the memory by hand, bit-by-bit, started the clock, and took the computer out of reset. After running a while, I put the computer back in reset, then examined the memory. Behold, the program had worked! I had made my first computer.
My next computer was a more complete Z80 based system. It had a 2K EPROM, 1K static RAM, and input and output ports. Importantly, I made a display that showed the state of data, address and control lines. When run with a slow clock, one can watch the activity of the computer and figure out what is going wrong. This allowed me to debug the hardware and get the system to work reliably.
I understood these computers well, but the processor itself was still a mystery. I wanted to understand that part too, at the logic gate level. I sometimes thought about making my own processor, and designed small instruction sets and instruction formats. But the task seemed beyond the grasp of a hobbyist such as myself.
One day, a co-worker taking a computer class showed me her textbook. It was Computer Organization and Design, 2nd edition by David Patterson and John Hennessy (1998, Morgan Kaufmann). As I flipped through its pages I saw that this was a textbook about designing a computer processor! When she finished her class, she gave me the book (thanks, Lan!). By the time I finished Chapter 5, I was ready to start designing my processor.
The lessons learned in building the Z80 microcomputer systems I put to good use in the processor project. I built knowing that I would make errors, and I tested each subsystem as I went along. It took many months and weekends of patient wire-wrapping and testing, but it worked.
Links to original CPU pages: