It's been quite a while since my last update but I wanted to start getting some of the schematics and PCBs on here for thoughts and comments. Things are progressing quite nicely with the project - I have schematics for the Register, Status Register, ALU, Buffers & Constants and the Control Unit, and running alongside I've made some more improvements to the emulation.
I was struggling somewhat with the practicalities of how all this would fit together. The idea all along was for a long "bus board" that would have tracks for each of the five buses (Read, Write, Data, Address Low and Address High), as well as power, ground and clock signals. Each card would have right-angled headers that would push into sockets, and the control signals would come via ribbon cables from the Control Unit boards. However looking at the cost of building the cables, and the sockets for each, not to mention the room on the already very congested CU boards I figured that a card-edge connector might be a more elegant solution. I found these PCI-E style (albeit larger pitch) sockets on Toby https://www.toby.co.uk/board-to-board-p ... ge-socket/, which have 120 contacts - enough for all the power, buses, clocks and control signals. So I redesigned the register card to use an edge connector that would fit such a socket and it all seems to work quite nicely in theory.
So here's the schematic and a screengrab of the PCB layout for the Register card, along with the little daughterboard that converts the registers into counter registers. The text reads for the Register card:
Register A (top) can output to the Read Bus (RB) or the Address Low Bus (ADLB);
Register B (bottom) can output to the Read Bus or the Address High Bus (ADHB). In some cases (A, T, X and Y) only the A-RB and B-RB output buffers are required, since these registers don't need to access the Address bus.
On-board 74HC377 ICs are used for the static registers A, T, X and Y due to their Load Enable pins.
A daughterboard with 2 x 74HC161 (up-only counters like PC) or 2 x 74LS169 (up-down counters for the stack) can be attached via headers for the counter registers. In such instances the 74377 ICs aren't used.
Outputs are buffered using either 74HC245 ICs configured to output A-B, or 74HC541 ICs, which share an almost identical pinout.
Jumper JP1 is used to set which IC is used (at present all output ICs must match).
In the case of the Stack pointer, 74HCT245 ICs are used for the output buffers to cope with the reduced voltage signals from the 74LS169 chips.
Solder-bridge jumpers are employed to select which registers are being built, as all control signals are available to the card via the edge connector.
Two 9-pin headers are used to connect a small LED display board if required when running in slow or single-step mode, to view the current value of the register.
or 2 x 74LS169 4-bit up/down counter ICs for the Stack Pointer.
Carry Out (COUT) and Carry In (CIN) headers are available to provide ripple carry for 16-bit registers.
The 2.2k resister network pulls any high outputs of the 74LS169 ICs up to 5v. However this may not be required if using 74HCT245/541 ICs as the output buffers on
the main register board.
The short SH1 is used to tie both Count Enable pins to the single COUNT control signal. This is cut if the register is the upper byte of the 16-bit word to use the CIN signal instead.
I'm 90% convinced that the edge connector is the way to go, but as yet haven't updated the other cards with the new connector, so I'll hold off uploading them for now. In the meantime I'd love to hear your thoughts on any of this. PCB layouts should be taken with a pinch of salt - the silkscreen info is barely started and I'll need to print them out and try components for spacing, etc.
Christian