In a computer, a register is one of a small set of data holding places that are part of a computer processor . A register may hold a computer instruction , a storage address, or any kind of data (such as a bit sequence or individual characters). Some instructions specify registers as part of the instruction. For example, an instruction may specify that the contents of two defined registers be added together and then placed in a specified register.
A register must be large enough to hold an instruction - for example, in a 32-bit instruction computer, a register must be 32 bits in length. In some computer designs, there are smaller registers - for example, half-registers - for shorter instructions. Depending on the processor design and language rules, registers may be numbered or have arbitrary names.
A 4-bit register is basically a combination of 4 different Flip-Flops that can store 4 bits in each of its Flip-Flop discretely. Every Flip-Flop gets discrete input and hence provide discrete output. Clock input is provided concurrently to every Flip-Flop. Thus when clock pulse becomes high, every Flip-Flop gets activated instantly.
The Shift Register is another type of sequential logic circuit that can be used for the storage or the transfer of data in the form of binary numbers. This sequential device loads the data present on its inputs and then moves or "shifts" it to its output once every clock cycle, hence the name "shift register".
A shift register basically consists of several single bit "D-Type Data Latches", one for each data bit, either a logic "0" or a "1", connected together in a serial or parallel type arrangement.
Shift Registers are categorized normally in the following four types:
A basic four-bit Serial In - Serial Out shift register can be constructed using four D flip-flops, as shown below. The operation of the circuit is as follows. The register is first cleared, forcing all four outputs to zero. The input data is then applied sequentially to the D input of the first flip-flop on the left. During each clock pulse, one bit is transmitted from left to right. Assume a data word to be 1001. The least significant bit of the data has to be shifted through the register from left to right.
For this kind of register, data bits are entered serially in the same manner as in Serial In - Serial Out. The difference is the way in which the data bits are taken out of the register. Once the data are stored, each bit appears on its respective output line, and all bits are available simultaneously. A construction of a four-bit serial in - parallel out register is shown below.
A four-bit parallel in - serial out shift register is shown below. The circuit uses D flip-flops, AND Gates & OR gates for entering data (i.e. writing) to the register. I0, I1, I2 and I3 are four parallel inputs. Except for the Flip-Flop storing LSB bit, every other Flip-Flop needs a MUX that can SELECT either fresh input or the shifted bit from Least Significant Position.
A Parallel Input - Parallel Output Shift Register is very similar to a simple register that takes discrete inputs and provides discrete outputs. Here I0, I1, I2 and I3 are the inputs and R0, R1, R2 and R3 are the outputs. A Clock input is used to initialize the circuit and a Clear input is used to clear the Flip-Flops at any moment.