|
|
TURBO CODES (Cont) |
|
|
|
|
INTERLEAVER DESIGN In order to generate a block code using a parallel concatenation of convolutional encoders, it is desirable for both constituent encoders to start and end in the all-zeros state. By properly terminating both trellises, joint maximum likelihood estimation is possible, at least in theory. Due to the presence of the interleaver a2 it is seemingly difficult to simultaneously terminate the trellises of both convolutional encoders using a single m bit tail . The condition on the interleaver is based on the fact that the impulse response of each RSC constituent encoder is periodic with period:
p <= 2m- 1 --------------------- (6) If the feedback polynomial is primitive with degree m, then the impulse response is a maximal length sequence and equality holds in the above equation. The feedback polynomial for our example encoder is: g(D) = 1 +D + D2 ----------------------------------------------------------(7) which is indeed primitive. Thus, we can conclude that the impulse response of our example constituent RSC encoder is periodic with period p = 22-1 =3. The
interleaver is a function that maps an integer l Î [1; n] to another
integer l Î[1; n]. A bit in position l at the input to the interleaver
is placed in position l at the output of the interleaver. If we call this
mapping function a, then the l = a(l) ---------------------------------(8) The condition for the interleaver that allows both RSC encoders to be terminated with the same tail is l mod p = a(l) mod p "l -----------------------------(9) This condition states that taking l modulo p must yield the same result as taking a (l) modulo p. Any pseudo-random interleaver that meets this design condition can be used in a turbo encoder. If we use the example turbo encoder of figure 3 and encode data words of length k = 32, then the interleaver must be capable of encoding blocks of length n = k + m = 34. An interleaver that meets the conditions of equation (9) is shown in table 1.
It is common practice to puncture the output of the encoder in order to increase the code rate to 1/2. For a rate 1/2 punctured turbo code, the first output stream is the input stream itself (plus the necessary padding), while the second output stream is generated bymultiplexing the M nonsystematic outputs of the RSC encoders. An example rate 1/2 punctured turbo encoder is shown in figure 6. In this example, the multiplexer chooses its odd indexed outputs from the output of the upper RSC encoder and its even indexed outputs from the output of the lower RSC encoder.It is not necessary to take half of the parity stream's bits from the first encoder and half from the second. If n1 bits per block are taken from the output of the first encoder and n2 bits per block are taken from the output of the second encoder, then the punctured code rate of encoder one is : R1 = k / (2n1 + n2) -------------------------(10) and the punctured code rate of the second encoder is: R2 = k / (n1 + 2n2) ---------------------------(11) If n1 ¹ n2 then the overall turbo code can be viewed as the parallel concatenation of two codes of unequal code rate. It is suggested that using unequal code rates can improve the performance of the decoder. Unequal code rates are used by the turbo encoding circuit ,in which the multiplexer chooses three bits from the output of the first encoder for every one bit chosen from the output of the second encoder. When puncturing is used, the joint effect of the interleaver and multiplexer on the code's distance properties must be taken into account. It is suggested that when puncturing is used, the interleaver should be designed so that even indexed bits are mapped to even indexed bits and odd indexed bits are mapped to odd indexed bits .Note that puncturing can be used to set the code rate to any arbitrary value, not just /=2. This feature has interesting applications in unequal error protection .When the channel is relatively clean or the information bits relatively unimportant, puncturing can be used to achieve a rate of 1/2. If the channel becomes noisy, or the information bits require extra protection, then the encoder could stop puncturing the output, which would decrease the bit error rate at the cost of lowering the code rate to 1/3.
|