Register Design: Instruction Register
The next card up for design is the (mercifully straightforward) 8-bit instruction register. I say straightforward as this card shares much of its design with the B/C register card already constructed. The instruction register is permanently connected to the instruction bus just as the B/C registers are permanently connected to the ALU. However where the B/C registers are general purpose, and so can be set from and selected to the data bus, the instruction register can only be read from the data bus.
So, as I've done in previous design posts, I'll start with a card schematic of what the main bit relays look like for the 8-bit instruction register when placed on the usual 55 x 40 hole pad board (excluding wire links):
V23079A2003B301) are 12V but the coil can operate as low as 9V so given the 1V drop of the 1N4148 diodes I'm using I should be able to safely get 2 diodes in line before things get dicey. If I do get in trouble later I can either pop in a 'relay' relay downstream to pass the signal on and get the voltage back up to 12V or I can wire link over the diodes on this card and accept the risk of back-feed.
Relay wise that's it for this card. As with all the register cards designed so far I'd like to display the current value being stored in the register (even though the same value is always present on the instruction bus). This allows me to confirm correct operation and test/debug the card independently. For this 9 LEDs are needed ... 8 for the bit register values and 1 to show when the register is being loaded from the data bus. The LEDs are the same 12V ones used in all the previous cards (with an integral resister). Colour wise I'm continuing with the theme of red for a bit value and yellow for control signals. Diagram wise it looks like this:
Next up is the connections to other parts of the computer and there's something new this time. All the cards designed so far have been marked 'type Z' and they share a common set of connectors on the back of the card such that Z cards can talk to each other directly as needed. There are five Z cards which fit in to the corresponding Z backplane that sits in the lower left bay of the enclosure. The instruction register card requires slightly different connections (like the instruction bus) and doesn't need some of the Z connections (like the B/C bus) so this card will be a new 'type X' card. As you might expect X cards can talk directly to other X cards via a new X backplane and the X and Z backplanes have their common connections (like the data bus) hooked up together to allow them to talk to each other.
The 'X' connections consist of the 8-bit data bus, 16-bit address bus (to be used by future X cards), 8-bit instruction bus, power connections and finally the control signals to load this register. The diagram of the connectors look like this:
- Ctrl-X (Control Line Bus)
- LIN ... Instruction Register Load
- A0-AF ... 16-bit Address Bus
- D/I-Bus (Data Bus + Instruction Bus)
- D0-D7 ... 8-bit Data Bus
- I0-I7 ... 8-bit Instruction Bus
Google Docs as a PDF (so you can zoom right in on the detail).
So, that's the instruction register all designed and ready for construction however as I've still not got anywhere suitable for soldering in the house just yet that'll be on hold for a bit. In the meanwhile though there's plenty more cards to design and the next one in line is the decoder. This card will take the value on the instruction bus and decode what class of instruction that value represents. Following that card I'll design the sequencer and control cards introduced in my last post. When all of that is done it'll finally be time to get constructing and put together these four cards which will get the computer to the stage where a single instruction can be performed fully by manually pulsing the clock line.