
104 CONVOLUTIONAL CODES
σ
i
= (00) and the input bit u
i
at time i is a 1, then the state of the encoder changes from
σ
i
= (00) to σ
i+1
= (10). Along with this transition, the two output bits b
i
= (11) are
generated. Similarly, the information sequence u = (1, 1, 0, 1, 0, 0,...) corresponds to the
state sequence σ = (00, 10, 11, 01, 10, 01, 00,...), subject to the encoder starting in the
all-zero state. The code sequence is again b = (11, 01, 01, 00, 10, 11, 00,...). In gen-
eral, the output bits only depend on the current input and the encoder state. Therefore, we
label each transition with the k input bits and the n output bits (input/output).
3.1.4 Code Termination
In theory, the code sequences of convolutional codes are of infinite length, but for practical
applications we usually employ finite sequences. Figure 3.7 gives an overview of the three
different methods to obtain finite code sequences that will be discussed below.
Assume we would like to encode exactly L information blocks. The easiest procedure to
obtain a finite code sequence is code truncation. With this method we stop the encoder after
L information blocks and also truncate the code sequence after L code blocks. However,
this straightforward approach leads to a substantial degradation of the error protection for
the last encoded information bits, because the last encoded information bits influence only
a small number of code bits. For instance, the last k information bits determine the last n
code bits. Therefore, termination or tail-biting is usually preferred over truncation.
In order to obtain a terminated code sequence, we start encoding in the all-zero encoder
state and we ensure that, after the encoding process, all memory elements contain zeros
again. In the case of an encoder without feedback this can be done by adding k · m zero
bits to the information sequence. Let L denote the number of information blocks, i.e. we
Methods for code termination
There are three different methods to obtain finite code sequences:
■ Truncation: We stop encoding after a certain number of bits without any
additional effort. This leads to high error probabilities for the last bits in a
sequence.
■ Termination: We add some tail bits to the code sequence in order to ensure
a predefined end state of the encoder, which leads to low error probabilities
for the last bits in a sequence.
■ Tail-biting: We choose a starting state that ensures that the starting and
end states are the same. This leads to equal error protection.
■ Note, tail-biting increases the decoding complexity, and for termination
additional redundancy is required.
Figure 3.7: Methods for code termination