16-Bit Processor (Approach to Bus and Modules)
Updated: Jul 15, 2022
I have previously built an 8-bit processor (my 8-bit) using Ben Eater's video series. Since then, I have been spending time on 6502 and 65816 system development. I think it would be a fun challenge to extend Ben's 8-bit processor to 16-bit (registers, bus). I see many nice examples of 16-bit processors that people have built. I am not sure exactly where I will end up with this project, but I need to start somewhere.
My first step is to come up with an approach for the bus and "modules." I will have plenty of breadboard-based work to do, but I would like to have a PCB for distribution of clock, address, data, and a few other miscellaneous signals. Hopefully, this will save me a bunch of effort in wiring. I will probably use the bus PCB to distribute power also, going with a four-layer board with inner VCC and GND planes (just on the bus PCB).
The following comes to mind. Dimensions are not fully dialed in yet, but this should illustrate what I am thinking.
This layout gives me room for a dozen PCB modules, and in its entirety will be approximately 19 inches (480 mm) wide by 22 inches (560 mm) high. Initial modules that come to mind:
Program counter, instruction counter, instruction register
To be determined
To be determined
Debug or to be determined
Each module is sized so that a BB830 breadboard will fit on the PCB. As I start to layout actual PCB modules, I will get a better feel for whether the sizing above will work out. If I can consolidate, I will. For example, if I can fit both A and B registers on a single module, that would be great. I can widen the overall setup, too (I do not want to go any taller, though, as it will not fit on my workbench 😂).
I expect I am overlooking many things at this stage. I would love to hear any and all suggestions.
As I wait to get some initial PCBs to help with the build, I am going to work on prototyping some concepts in an FGPA. I have an 8-bit processor running in VHDL. I might try to extend that to 16-bit. More to come on that later.
My FPGA build of a 16-bit processor has been coming along fairly well. I am now going to start working on hardware implementation of the registers. For this, I plan to use the following ICs.
SN74ACT16374DL 16-bit D-type triggered flip-flop with 3-state outputs
SN74ABT16245ADGGR 16-bit bus transceivers with 3-state outputs
To support my initial work, I have ordered a PCB for the bus and an adapter PCB for the ICs (to fit them into breadboards). I guess I will be able to practice my surface mount soldering with the adapter. 😏
Tentative component list (what I have so far, at least):
Bus transceivers: SN74ABT16245A
Binary counters: SN74HC161N
Binary adders: 74HC283N
Misc logic: 74AHC/HCT series (or HC/HCT)
The above list is based on what I could cost-effectively source. In-depth analysis of voltage levels and timing hasn't been done yet.