I got pretty far with this project; as far as actually getting everything built on PCB's.
Unfortunately I ran into some issues that prevent the real (non-simulated) computer from properly working:
- I never considered reset circuitry:
- The 74x377 registers don't have a reset line, so the only way of resetting them is to load empty data.
- None of the modules have a reset line exposed
- I tried to "quick fix" this with a 2nd revision of the controller, but it failed
- The controller is way to complicated, which is a result of the way microcode is stored:
- Each instruction takes 6 bytes to store control lines state
- The controller has its own internal clock that runs independent from the rest
- In Logisim this results in a very slow simulation because every microtick (t-state) takes 6 clock cycles to retrieve control lines from the microcode ROM.
These issues don't necessarily mean I have to abandon the project - I could try to fix just those things and move on, but this project was done over the course of 1,5 years and I have learned a lot in that time!
I would prefer to apply all lessons learned to a completely new design.
Even though the final product is not fully functional, I still consider this project to be a success. I've learned so much about (homebrew) CPU architecture, simulating designs in Logisim, assembly languages, digital electronics and much more.
And I'll take all that knowledge with me to the next project!
The 74xx Computer Mk. II project will soon be shared here.