Registers

Registers are an array of flip-flops designed to store multiple bits of data at once.  All of the flip-flops in a register are triggered at once by a single clock input.  Registers can be made using of an array of any flip-flop as long as all the flip-flops are the same type.  A single clock will toggle all of the flip-flops at once.  If the flip-flops have an asynchronous reset, then they will all be controlled by a single reset input as well.  Below is an example of a register built from positive-edge-triggered D flip-flops.

The logic gates in the D flip-flops shown above have been rearranged to take up less space on the page.  Registers can be expanded to be as big as you need them to be.  And they don't have to be made out of D flip-flops.  Flip-flops however, will make sure that the data inside the registers can only be changed once per clock cycle.  Registers may be a bit more complex than what is shown above.  For example, it may have write enable, read enable and reset inputs.  The reset would clear the register.  The write enable would allow the register to be written to.  And the read enable would allow the register to output to the data bus.  The image below shows an example of a register with all three of those inputs.

To learn more about how the reset wire works, read our article on asynchronous sets and resets.  You can also read our article on write enable circuits to learn more about how the write-enable input works.  The reset, read enable, and write enable inputs shown in the circuit above are all active low.  This is simply for consistency because an active low reset input is the natural type of input for the type of D flip-flop used in this register.