44
CHAPTER 1.
CHANNEL CODES
encodes interleaved bits. The iterative decoding requires that both component
codes be systematic and of the same type, that is, both convolutional or both
block.
A turbo convolutional code uses two binary convolutional codes as its compo-
nent codes. The multiplexer output comprises both the information and parity
bits produced by encoder 1 but only the parity bits produced by encoder 2. Be-
cause of their superior distance properties, recursive systematic convolutional
encoders are used in turbo encoders [1]. Each of these encoders has feedback
that causes the shift-register state to depend on its previous outputs. Usually,
identical rate-1/2 component codes are used, and a rate-1/3 turbo code is pro-
duced. However, if the multiplexer punctures the parity streams, a higher rate
of 1/2 or 2/3 can be obtained. Although it requires frame synchronization in
the decoder, the puncturing may serve as a convenient means of adapting the
code rate to the channel conditions. The purpose of the interleaver, which may
be a block or pseudorandom interleaver, is to permute the input bits of encoder
2 so that it is unlikely that both component codewords will have a low weight
even if the input word has a low weight. Thus, a turbo code has very few
low-weight codewords, whether or not its minimum distance is large.
Terminating tail bits are inserted into both component convolutional codes
so that the turbo trellis terminates in the all-zero state and the turbo code
can be treated as a block code. Recursive encoders require nonzero tail bits
that are functions of the preceding nonsystematic output bits and, hence, the
information bits.
To produce a rate-1/2 turbo code from rate-1/2 convolutional component
codes, alternate puncturing of the even parity bits of encoder 1 and the odd
parity bits of encoder 2 is done. Consequently, an odd information bit has
its associated parity bit of code 1 transmitted. However, because of the in-
terleaving that precedes encoder 2, an even information bit may have neither
its associated parity bit of code 1 nor that of code 2 transmitted. Instead,
some odd information bits may have both associated parity bits transmitted,
although not successively because of the interleaving. Since some information
bits have no associated parity bits transmitted, the decoder is less likely to be
able to correct errors in those information bits. A convenient means of avoiding
this problem, and ensuring that exactly one associated parity bit is transmitted
for each information bit, is to use a block interleaver with an odd number of
rows and an odd number of columns. If bits are written into the interleaver
matrix in successive rows, but successive columns are read, then odd and even
information bits alternate at the input of encoder 2, thereby ensuring that all
information bits have an associated parity bit that is transmitted. This proce-
dure, or any other that separates the odd and even information bits, is called
odd-even separation. Simulation results confirm that odd-even separation im-
proves the system performance when puncturing and block inter leavers are used,
but odd-even separation is not beneficial in the absence of puncturing [8]. In a
system with a small interleaver size, block interleavers with odd-even separation
usually give a better system performance than pseudorandom interleavers, but
the latter are usually superior when the interleaver size is large.