Breadboard computer - Clock module
This is part 1 of my series on building a breadboard computer. - Next>
Introduction
As many others, I have wanted to build a breadboard computer from scratch since discovering Ben Eater’s excellent YouTube series on the subject.
After many years, I finally have gotten around to starting the build. My build will not be a one-to-one replication of Ben Eater’s build, I’ll attempt to make it my own. Some of the changes I plan to make:
- I’ll be using 74HCxx CMOS logic chips instead of 74LSxx TTL chips.
- Make sure to focus on signal and power integrity: Decoupling caps, don’t leave unused inputs floating, better power distribution.
- Incorporate improvements from breadboard computers from other people as they seem fit.
- Use 8 bit instructions instead of only 4 bits.
- Use 8 bit memory adressing for 256 bytes of RAM
Initial clock module design
The first module I decided to tackle was the clock module. Ben Eater’s clock module uses three separate 555 timers, and doubles as a tutorial on different use cases for the 555 timer. As I want to try designing my own circuits as a part of the project, I wanted to try designing a clock module that doesn’t use 555 timers. I also had to wait for parts before I could start building. After reading up on button/switch debouncing and oscillators, I came up with the following design using a 74HC132 quad 2 input Schmitt trigger NAND for button/switch debouncing and for the oscillator, and a 74HC00 quad 2 input NAND for the selection logic:
Updated clock module design after feedback
Being new to electronics, I posted my design on the r/beneater subreddit for feedback. I got several great tips, including a simplified circuit by u/sarahMCML:
Building and debugging
As this is my first breadboard project, I was a bit unsure on how building and debugging the circuit would be. There were a few snags, as the one of the inputs of the first 74HC132 not working, and me not having any potentiometers, so the free running clock has a constant frequency of 20Hz at the moment, but all in all the build went well. I haven’t tied all unused inputs to 5V or ground yet, as I’ll add a reset circuit on the same breadboard and might use some of the unused gates for the reset circuit. Before using the clock module to actually drive something I’ll tie any unused inputs high or low, so they won’t create any noise due to them being floating
Final design
The final design is more or less identical to the the second design, with the exception of the free running clock not being adjustable yet, and the addition of a clock led, and a 74HC86 XOR to buffer/invert the clock signal to get clock and inverted clock. The reason for using two XOR gates instead of a single inverter gate is to make sure there is no shift between them due to different propagation delay. Probably nothing I need to think about with the frequencies I’ll be running, but I’ll like to design thing “correctly” from the start.
The following clip show the clock running in both single step and free-running mode:
Next step
The next step in the build is going to be a reset circuit.