Registers

The principle component of a digital computer is the register (sometimes called a latch). A string of N flip-flops, it stores a code of length N. Reading a register simply means using the contents of the register. Reading does not destroy the register's data. Registers typically come with a load capability, which could be implemented simply by inhibiting the clock pulse to the flip-flops until it is time to load the data-in. Other functionality available could include clear (synchronous or asynchronous), shift, count, output enable, load disable, and others. The primary functionality assigned to registers is to store a code (instruction or operand) indefinitely. For example, in the Arithmetic Logic Unit (ALU) the result of one step may need to be stored so that it may be used as an operand a little later. Below is a one-bit register with load and increment functionality.

1-Bit Register with Increment and Load ...click to enlarge

Notice the timing signals, with the load high, when the data goes to 1 on the next clock pulse the output A goes to 1. After the data goes to 0 output A follows on the next clock pulse. Once the load is low, functionality changes and as long as Cin is high, the register increments.

Below is an extension of the 1-bit register to a 4-bit register with parallel load and increment features. This circuit is easily modified to include set to 1's and set to 0's using the asynchronous preset (S) and clear (R) inputs of the JK flip-flops. 4BitRegister.cct

4-bit register with parallel load and increment
4BitRegisterSubCircuit.cct

BACK