ALU Design: Function Decoder

This post covers the design of a 3-to-8 Function Decoder which along with the Zero Detect circuit and Condition Registers will all go in to the ALU Control Card. The Decoder takes a 3-bit ALU Function code as its input and activates 1 of 8 control lines accordingly. The function codes are as follows:

CodeOperationDescription
000CLRClear/No Operation
001ADDB + C
010INCIncrement B
011ANDB AND C
100ORB OR C
101XORB XOR C
110NOTNOT C
111SHLShift Left B

The control lines which are fed to the Arithmetic and Logic Units via the Ctrl-Z bus are:

OperationDescription
ADDALU Add Output Enable
INCALU Increment Output Enable
ANDALU AND Output Enable
ORRALU OR Output Enable
XORALU XOR Output Enable
NOTALU NOT Output Enable
SHLALU Shift Left Output Enable

Note that there’s only 7 lines here as the control line for CLR produced by the 3-to-8 decoder is left unconnected — this is because if no other control lines are active the ALU will be effectively disconnected from the data bus therefore if the ‘result’ of the ALU is loaded to a register it will effectively clear that register (set all bits to off). The 3-to-8 decoder is pretty straightforward:

This design is taken directly from the Harry Porter Relay Computer and as usual I’ll need to adapt it to use the smaller DPDT relays. The physical layout diagram is therefore:

… and here’s the same diagram with relays and wires omitted and with partial ground rails added …

In the next couple of posts I’ll cover the Zero Detect circuit and Condition Registers and then cover putting all three together on the ALU Control Card.