January 11, 2022
Over the end-of-the-year break, I stumbled across Ben Eater’s YouTube channel, specifically a play list, all about building an 8-bit computer. For a couple of days all I accomplished was watching video after video in the series, until I had seen all 44 of them. Not only was the content fascinating, it was clearly and succinctly explained with a minimum of fuss.
Prior to watching the videos I was familiar with some of the concepts and terms. I knew about AND, OR, NAND, and NOR logic. I recognized terms like ALU and Instruction Processor. A lot of the content reminded me of parts of “The Soul of a New Machine”, by Tracy Kidder.
By the end of the series I had a far better grasp of the hardware level activities that make a computer work. Since the computer is built on breadboards, with all the wiring and chips exposed, you can literally see how different components are related to each other. Ben does a superb job of explaining the entire process.
After inhaling all the videos in the series, I decided I wanted to build my own 8-bit computer. So I ordered the first kit, the Clock Module. It arrived Monday. I’ve also ordered wire strippers, and a supply of 22 AWG wire to supplement the wire jumpers that can precut and bent with the kit. (The kit has no black wires at all, making it impossible to use red for positive and black for negative when connecting to the power rails.) The additional supplies are set to arrive Wednesday.
The clock module Ben builds has three parts. Part one is an oscillating or a-stable clock. Part two creates a monostable or manual pulse clock. The last part is a switch to allow which of these pulses to output to the rest of the computer. The oscillator also has a potentiometer to allow varying the speed of the pulse.
The clock that Ben creates in his videos has the parts ordered from left to right as oscillator, manual pulse, and switch. I wanted to reorder the parts so that the switch was first, the manual pulse second, and the oscillator last on the board. That way I could select manual or a-stable at the leading edge of the board, and then pulse (if manual was selected) in the middle of the board.
Ordering the kit through eater.net was easy. It comes with the breadboard, three 555 timer chips, an inverter chip, an AND gate chip, and an OR gate chip. There’s also enough resistors and capacitors, and LED lights to complete the module. The kit contains a set of jumper cables—precut in a variety of lengths. My only complaint about the provided wiring is the colors. No black wire is provided. You’ll need a pair of needle nose pliers, a wire cutter, and a wire stripper. I also made good use of a pair of needle nose tweezers from an iFixIt kit.
The kit has a small 5 volt power supply, and plug adapter that allows for two wire leads to be attached. This makes powering the board simple. You can easily connect and disconnect the power as you add to and test the circuit.
The kit also includes a thin booklet that identifies all the parts, has some suggestions, and has a schematic of the entire clock module.
On Monday evening I put together the oscillating (or a-stable) clock circuit, using a 555 timer chip, some resistors, a capacitor, and a single LED light. So far I haven’t cut down the leads on anything, so the resistors and capacitor stick up a half inch or more from the board. Once I have the additional wire, and once I have completed the entire clock module, then I’ll go back and clean up wire lengths and shorted the leads on things.
Putting together the oscillating circuit was relatively straightforward. I discovered that LED lights are directional. Plug the LED in with the leads reversed and it won’t light up. Since I didn’t yet have wire strippers some of my temporary wiring was long and looping. Plugging in the power the first time and having the light start pulsing was very satisfying.
On Tuesday I completed the manual pulse section of the board. In the accompanying video, Ben explains that the switch may bounce or stutter when pressed, resulting in multiple pulses. Since we want to control the pulse for step-by-step operation of the computer, having a potential extra pulse is not desirable. Using the SR Latch in the 555 timer it is possible to make a debounce circuit that captures the state change on the first contact the switch makes. Any subsequent contacts through an errant bounce will be ignored.
The last part of the circuit is setting up a switch to select either the manual pulse or the oscillating pulse. This switch is combined with and inverter, some OR gates and some AND gates to control the clock. It also incorporates a HALT signal that allows for stopping the clock.
The switch uses the third and final 555 timer chip. The logic gates to combine the switch output with the outputs from the manual pulse and oscillating pulse require three additional chips: an inverter, OR gates, and AND gates. Since my board has the modules ordered differently than Ben’s example, I had to spend some time ensuring that the wires were all in the correct places. I didn’t pay close enough attention to the leads on the blue LED used to show the selected output, resulting it no output at all. Using my voltmeter I spent some time tracing the flow through the various gates. Eventually I could see that the correct voltage was arriving at the final OR gate. I swapped LED lights, thinking maybe I had a bad one, and then realized that I had the shorter, negative lead, in the wrong spot. Once I reversed the light, the completed board was working as intended.
With the entire circuit now working, I spent some time cutting down the wires to the exact lengths needed. I also trimmed the resistor leads, and the leads to the blue LED. The yellow LED lights that had been used to show the current state of the oscillator, the manual pulse, and the switch, I left full length. I can remove those, and their associated resistors, now, leaving the board with a single light.
Working with the wire strippers and fitting the wires as neatly as possible against the board was surprisingly satisfying. Understand how it all works is even more satisfying.
The next module is the registers and Arithmetic and Logic Unit (ALU). A total of four more breadboards are required to hold all the necessary chips and electrical components. It is a much more involved build than the clock. The increased number of small parts will require a better management solution that I have employed so far. For the clock I use a small muffin tin to sort the various parts. This works very nicely, but it is open and therefore could easily be spilled. I see on Amazon that you can buy what amounts to a tackle box for sorting and keeping all the small bits.
I’ll also need a larger work space. I used the area of my desk where the keyboard normally sits for the clock. I’ll want some kind of board that I can use the spread things out on, something that can be picked up and set aside without having to move everything individually. A brighter light may be useful too. The lettering on the chips is faint and tiny. I have to use a magnifying glass to read the identifying numbers.
I also want to recreate the diagrams Ben uses in his videos to explain the logic gates and circuits employed in the computer. Having those in a small binder to keep with the computer feels like an appropriate approach.
I am thrilled with this project. The videos by themselves are fantastic. Ben’s explanations are very good, and very clear. Seeing his computer come together and actually work was exciting. Being able to create my own 8-bit computer is something I am looking forward to.