Section 3.5
Shift registers
A shift register is a device which delivers a digit at every tick of
a clock. The shift register has a number of units,
called registers. They are linked in series; each register contains a
digit.
We think of the registers as being positioned next to one another. At a tick of the clock, the content of each register shifts to the next register to the right, except for the rightmost register, which delivers the output digit. The leftmost register receives the so-called feedback: the content of the digit coming about as a fixed linear combination of the contents of all registers. Once started, the shift register will continue to produce digits, without external input or control.
We shall write n for the number of registers. We number the registers from right to left in the picture, starting from 0. The working of the shift register is determined by the values of the shift parameters s0, ..., sn-1. These data are put into the polynomial s = s0 + s1X + ··· + sn-1Xn-1.
If the i-th register contains the value gi, the feedback (the (k + 1)-st register, with k + 1 > n) becomes
The following algebraic definition describes what happens to the shift register after repeated ticks of the clock. The parameters si and gi take their values in a ring R; this will mostly be Z or Z/mZ.
Let
s = s0 + s1X + ···
+ sn-1Xn-1
R[X]
be a polynomial of degree n - 1
over the ring R.
The shift register over R
with shift polynomial s
is the map that assigns to an input sequence g0, ...,
gn-1 of n elements of R,
the sequence
gi (i
0)
of elements of R satisfying the
recurrence
n).
Shift registers, especially those over the ring Z/2Z, are manufactured in hardware for various purposes, for instance to generate `pseudo random sequences'.
The next two pages show two useful connections between polynomials
and shift registers.