I'm building an 8-bit computer, inspired by Ben Eater's video series but based on the 6502 instruction set, and using 74HC logic. I'd originally planned to use all breadboards like he did but might instead design the modules as PCBs. That aside, I've been thinking about the clock generation. My design will use only one 64Kbit parallel EEPROM for the microcode, requiring its own clock for sequentially pulling out 4 bytes to make the full 32-bit control word. Other designs I've seen use up to 4 EEPROMs but that's not appealing to me as a design. For reference the least significant 8 bits of the EEPROM's address will be the instruction opcode, the next 3 bits the timing and most significant 2 bits the address offsets for the control word segments. In order to do this I need a clock that will run at least four cycles within the low time of my master clock, since the control logic is triggered when the master clock goes from high-to-low.
So, say my master clock runs at 10KHz, and ideally has a 50% duty cycle, the low time will be 50μs. My EEPROM read clock will therefore need to be around 100KHz to comfortably complete its four cycles before the master clock goes high again, since its period is 10μs. I'm not bothered about running the master clock that fast TBH as it's all for learning purposes.
Ben Eater and the other projects I've seen based on his all use 555 timer chips for their clocks. I know I can comfortably generate 10KHz using a NA555 timer circuit in astable mode but doing my research I've seen people describing the 555 as a dinosaur, with better solutions available. However what, in your opinions are the best solutions?
Here are my requirements for the clock module:
- Slow mode - adjustable using a pot for running anywhere between 1Hz and up
- Fast mode - fixed frequency, e.g. 10KHz.
- Manual mode - debounced switch for stepping through instructions.
The Schmitt Trigger inverter method looks interesting, however I don't yet have a 74HC14 to test with, and have been considering the TLC555 (a more up-to date LinCMOS chip, whatever that is...) as this can operate at frequencies up to 2MHz. From my basic understanding the Schmitt Trigger method results in a 50% duty cycle using just one cap and one resistor.
Happy to still use a 555 for debouncing the switch for manual mode, but can look for alternatives.
I'm not interested in using crystals as these tend to work at much higher frequencies than I need, and I'm not bothered if the timing has some degree of tolerance, as long as it's within 10% of my target speed.
Thoughts? I'm a mostly-newbie, having rediscovered electronics 25 years after I last made circuits at school, so any and all useful info gratefully received!
Thanks!
So, say my master clock runs at 10KHz, and ideally has a 50% duty cycle, the low time will be 50μs. My EEPROM read clock will therefore need to be around 100KHz to comfortably complete its four cycles before the master clock goes high again, since its period is 10μs. I'm not bothered about running the master clock that fast TBH as it's all for learning purposes.
Ben Eater and the other projects I've seen based on his all use 555 timer chips for their clocks. I know I can comfortably generate 10KHz using a NA555 timer circuit in astable mode but doing my research I've seen people describing the 555 as a dinosaur, with better solutions available. However what, in your opinions are the best solutions?
Here are my requirements for the clock module:
- Slow mode - adjustable using a pot for running anywhere between 1Hz and up
- Fast mode - fixed frequency, e.g. 10KHz.
- Manual mode - debounced switch for stepping through instructions.
The Schmitt Trigger inverter method looks interesting, however I don't yet have a 74HC14 to test with, and have been considering the TLC555 (a more up-to date LinCMOS chip, whatever that is...) as this can operate at frequencies up to 2MHz. From my basic understanding the Schmitt Trigger method results in a 50% duty cycle using just one cap and one resistor.
Happy to still use a 555 for debouncing the switch for manual mode, but can look for alternatives.
I'm not interested in using crystals as these tend to work at much higher frequencies than I need, and I'm not bothered if the timing has some degree of tolerance, as long as it's within 10% of my target speed.
Thoughts? I'm a mostly-newbie, having rediscovered electronics 25 years after I last made circuits at school, so any and all useful info gratefully received!
Thanks!