As we have already mentioned, the polynomial code (n, k) is determined by listing the full set of code polynomials of degree not higher thann−1, which have a common factor called a generator polynomial g(x)of degree n−k. As a result, each code polynomial can be expressed in the form
c(x)=a(x)g(x) (2.40)
in which a(x)depends on message bits. Let g(x)=1+x+x3 and a(x)=a0+a1x+ a2x2+a3x3. The resulting code polynomial is then described by the expression
c(x)=(a0+a1x+a2x2+a3x3)(1+x+x3)
=a0+(a0⊕a1)x+(a1⊕a2)x2+(a0⊕a2⊕a3)x3
+(a1⊕a3)x4+a2x5+a3x6 (2.41) As we see the derived (7,4) code is nonsystematic. One can easily transform it into a systematic code if the following substitutions are performed
b3=a3, b2=a2, b1=a1⊕a3, b0=a0⊕a2⊕a3 (2.42) Thus, if we use the coefficients b0, b1,b2, b3, calculation of the remaining polynomial coefficients results in the systematic form of the code polynomial, which is further divisible by g(x)=1+x+x3:
c(x)=(b0⊕b2⊕b3)+(b0⊕b1⊕b2)x+(b1⊕b2⊕b3)x2
+b0x3+b1x4+b2x5+b3x6 (2.43) Consider now possible realizations of the polynomial code encoder. Let us start from the simple case of creation of the codeword described by equation (2.40). Let us turn our attention to the analogy of the polynomial notation for a given sequence with the Z-transform of this sequence ifx=z−1is applied. Polynomials with the given coefficients are analogous to the Z-transform of the coefficient sequence, so multiplication of two polynomials results in a new polynomial with coefficients that are the convolution of the coefficients of the multiplied polynomials.2Thus, the polynomialg(x)=1+x+x3can be treated as a transform of the filter impulse response of the form 1, 1, 0, 1. The sequence a3,a2,a1,a0 is fed to the filter input. This implies the encoder implementation shown in Figure 2.4.
As we have already noticed, this encoder generates a nonsystematic code. Below we show how to generate codewords of a systematic code. This structure is often applied in practice. The fact that a code is systematic is particularly advantageous if the code is used only for error detection. The number of redundant bits is then very low compared with the message bits, and placing them at the end of the whole block substantially simplifies the decoder.
As we remember, in polynomial codes, code polynomials are divisible by the generator polynomial. Thus, we can place message bits in the form of the polynomial coefficients at the highest powers of variablex and subsequently calculate the remaining coefficients playing the role of parity bits in such a way that the whole polynomial is divisible by the generator polynomialg(x).
2Multiplication of the transforms is equivalent to convolution of the related sequences in the time domain.
a3 a3 a3 a3
a0
a0
a3 a2
a2 a2
a2 a3
a3 a2+a3
a1+a2a2+a3 a1+a3
a2 a3 a1+a3 a0+a2+a3 a0+a1a1+a2
a1
a1 cycle 1 cycle 2 cycle 3 cycle 4
Figure 2.4 Encoder scheme for the nonsystematic code with additional memory cells storing the whole codeword
Let us return to the (7,4)code. Denote message bits asb0,b1,b2,b3. The associated message polynomial takes the form
b(x)=b3x3+b2x2+b1x+b0 (2.44) In general, for a(n, k) code the polynomialb(x)has a degree at most equal tok−1. In order to place the message bits at the highest powers of x in the code polynomial, the polynomialb(x)should be multiplied byxn−k. Leta(x)be the remainder of the division of the polynomial xn−kb(x)byg(x), i.e.
a(x)=
xn−kb(x)
modg(x) (2.45)
This means that the following equation is fulfilled
xn−kb(x)=m(x)g(x)+a(x) (2.46)
where m(x)is the result of division of the polynomial xn−kb(x) byg(x). If we add the remainder polynomiala(x) to both sides of (2.46), the result is
c(x)=xn−kb(x)+a(x)=m(x)g(x) (2.47) As we see, the resulting polynomial is a systematic code polynomial. Technical imple- mentation of that kind of encoder is shown in Figure 2.5 and the encoder operates in the following way.
Assume that at the starting moment all memory cells are set to zero. The message bits of the codeword are fed to the encoder input during the firstkclock cycles. In this phase of the encoder operation switches P1and P2remain in position “1”. Thus, the message bits are immediately directed to the encoder output and, owing to the linear feedback register determined by the form of the generator polynomial g(x), the remainder bits a(x) are also determined. In the (k+1)st cycle the switches change their positions, which results
+
+
0
x
2 1 1
2 b0
bk−2 bk−1 P1
P2 1
′′ ′′
Figure 2.5 Scheme of the encoder for the systematic polynomial code(7,4)
in breaking the feedback connection (switch P1) in the feedback register and sending the calculated remainder bits through switch P2set in position “2” to the encoder output. Let us note that feeding the encoder input with zero bits through switch P1starting from the (k+1)st cycle results in gradual filling of the encoder register with zeros. Thus after n cycles the encoder is ready to encode the next message block.
Consider a more general case when the code polynomial coefficients are nonbinary, e.g.q-ary. The generator polynomial has the form
g(x)=gn−kxn−k+gn−k−1xn−k−1+ ã ã ã +g1x+g0 (2.48) however, this time the polynomial coefficients belong to the Galois field GF (q). All additive and multiplicative operations on the polynomial coefficients are performed in this field. The circuit calculating the remainder resulting from division of the polynomial xn−kb(x)by the generator polynomialg(x)is shown in Figure 2.6. Let us note that the feedback signal in the circuit is introduced in appropriate places of the shift register with the weights that are the opposite numbers to the generator polynomial coefficients in GF (q), while the feedback signal is received as the weighted sum of the contents of the last register cell and the input symbol bi (i =k−1, . . . ,0) in GF (q). The weighting coefficient is the inverse number to the highest power coefficient gn−k of the generator polynomial. We have to stress that each memory cell constituting the shift register stores a single nonbinary symbol. Thus, more than one binary cell is practically required to store each ofq-ary symbols.
−g0 −g1 −gn−k−2 −gn−k−1
gn−k−1
+ + +
+
P1
P2 0”“
1 2 1
2
...
...
b0 b…k−1
Figure 2.6 Encoder scheme for the nonbinary code with code symbols belonging to the nonbinary Galois fieldGF (q)