Section 7.3
Control Points

The CSC-1 architecture has a number of control points, which are wires that cause things to happen, like registers to load or the ALU to add or subtract or the memory to read or write. Another part of the computer, the control unit, sets these wires according to the instruction being executed.

Go back and carefully examine Fig. 7.1.1, the block diagram for the CSC-1. Notice that each register has a load wire, which is not explicitly labeled. PC also has an increment and clear wire. We will name these wires as PC-LD or S-LD or A-LD. PC also has PC-CLR and PC-INCR. MBR-LD is the old familiar MBRCK of Chapter 5.

Multiplexors are used to channel more than one input into a register. In fact, only IR and TMP do not have a mux. Remember that all these inputs to registers are 16 bits wide, so these muxes take in 32, 48 or 64 wires and output 16 to the register. The mux that feeds the MAR has 48 wires because data from three different sources can be directed into the MAR. The mux that feeds the accumulator, A, has 64 wires because there are four input sources. All others have 2 sources, hence 32 wires.

Each multiplexor is controlled by a mux selector wire or wires which tells which of the inputs to let pass through into the register. Two input muxes have just one wire, which decides between the two sources using 0 and 1. The A mux has four inputs, so it needs 2 mux control wires, which function as a 2-bit address, deciding between the four inputs. The MAR mux has three inputs, but it still needs two control wires, even though one of the combinations is wasted. Remember that a register doesn't actually load until its LD wire goes high, so just because a value is put on the mux control wire doesn't mean anything happens yet.

We will name the mux control wires by appending the name of the register they feed, along with subscripts if there is more than one. Thus, the mux feeding PC has just one control wire, PC-MUX. The wires going into A's mux are A-MUX0 and A-MUX1. Likewise for the others.

The main memory is controlled by the familiar WR and MA wires.

The ALU does the main work of the computer: adding, taking the 2's complement, doing the Boolean logical operations, and other things. Each of these functions is distinguished by a mini-opcode whose binary number is put onto the three wires F0, F1 and F2. Here are the operations that the CSC-1 ALU performs:

  F2  F1  F0
--------------------------------------------------------------------
  0   0   0     identity A     pass through A's value unchanged
  0   0   1     identity TMP   pass through TMP's value unchanged
  0   1   0     A and TMP      bitwise Boolean AND of A and TMP
  0   1   1     A or TMP       bitwise Boolean OR of A and TMP
  1   0   0     not A          bitwise Boolean NOT of A (TMP ignored)
  1   0   1     A + TMP        arithmetic addition of A and TMP
  1   1   0     A - TMP        arithmetic subtraction of A and TMP
  1   1   1     unused

Subtraction is accomplished by forming the 2's complement of TMP before feeding it into the adder. All these circuits are inside the ALU box.

After the ALU forms its results, the CNVZ bits are set as discussed in Chapter 6.

The shifter is a separate box that takes the output of the ALU and performs either a logical shift or passes through the value unchanged. It is controlled by a 2-bit mini-opcode in the control wires S1 and S0:

  S1  S0
------------------------------------------------------------------
  0   0     do nothing           pass input to output unchanged
  0   1     right shift 1 bit    logical right shift
  1   0     left shift 1 bit     logical left shift
  1   1     unused