This is about my homebuilt TTL computer processor. TTL stands for "transistor-transistor logic" and refers to a set of first-generation integrated circuits (I.C.'s) that contain simple logic gates, buffers, a binary adder, 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 not an engineer or computer scientist. 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 Z-80 based system. It had a 2K EPROM, 1K static RAM, input and output ports, and a keyboard. 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. I had a very tough problem with that computer. A drop of solder had fused two wire-wrap wires together, and then the solder fell off, leaving no visible trace of the damage. But by watching the display, and using my head, I was eventually able to find the fused wires. I pulled them apart, and the computer worked. Here is a Z-80 single board homebuilt computer I made recently.
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 on how to design 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 8-bit 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. This is truly My Computer.
NEW: A portion of a book (223 kb) about this CPU design as a pdf file. It includes a fairly complete description of the data path and control logic designs. Please read it and give me some feedback. Thanks.
I would love to answer any questions you have about this project. I would also like to try to answer any questions you may have about digital logic, CPU design, or microcomputers. If you are a student, I can help you with your homework! My email address is below in a small image to prevent web-crawling spam bots from capturing the address. Just type what you see in your email address field, and I will get your message.