ONLY the register that is being selected will be updated with the output from the ALU. All other registers should keep their old values.
The output of the ALU is ofcourse the result of the computation and we have seen just a while ago how the inputs for the ALU were switched to the ALU using many multiplexors. If you have already forgotten about it, the notes are here: click here
Only the intended register (specified in the computer instruction) will be modified (with the result from the computation which is the output of the ALU). All other registers remain unchanged.
The register is similar to a single-memory calculator (you know, the kind you buy for $2.99..., it has a Min (store), MC (clear), M+ (add) and M- (subtract) keys...). When you press Min (Memory Input), the value on the display is stored. As long as you do not press Min, the value in the memory remains unchanged.
The input signal is the display of the calculator, the write signal is the Min key and the output signal is the value inside the memory.
When we wire the register for writing (updating), we don't need to wire the output signal of the register, so I will show only the wiring of the input and the write signals. (FYI, the output of the register is wired to the input of the MUX's so that the ALU can obtain the values stored in the register - see here: click here)
To form a multi-bit register, you use multiple one-bit registers. In the example below, I used 4-bit registers, so there will be 4 "one-bit registers" that make up one "4-bit register".
/home/cs355001/bin/cs355sim /home/cs355001/demo/circuits/alu-reg |
How to operate this circuit:
|