10 Channel Coding and Interleaving
10.3 Convolutional Codes
Besides block codes, convolutional codes are the second code group in channel coding.
Convolutional codes are also using a linear mapping of a set of message words
on a set of code words. Conceptual message and code words are of infinite
length and therefore information or code sequences are considered.
The decoding methods allow processing of soft input, i.e.
for correction the knowledge about the validity of a detected symbol value can
be taken into consideration. In contrast to the algebraic decoding of block
codes decoding for convolutional codes is based on the optimum estimation of
the received sequence.
If we
assume binary data for convolutional coding, a message sequence is separated in
blocks of m bits and by a coder coded on n bits. Then an n
bit code word not only depends on the momentary information sequence at the
coder but in addition on k previous sequences, the coder has a memory of
order k.
The
convolutional coder can be assumed as a digital LTI system with m inputs
and n outputs. The code bits depend on the momentary message bit and on the state of the memory.
For every step the input data of length m bit is written in a serial shift register of length (k+1)·m and together with the remaining k·m bit of the
register linked to n code bit. The output data result in
a combination of different taps of the register (mostly XOR connections (addition
modulo 2)) (cf. Figure 10-10). We assume that the shift register at the
beginning of the coding only contains zeros. For convolutional codes the input
bits always affect more than one output bit, i.e. convolutional codes in
contrast to block codes have a memory. There are 2k·m different memory contents. The constraint length of the code Lcode is (k+1)·m and therefore
equals the length of the memory plus the momentary character.
With this type of coding
convolutional codes are suitable for correcting single bit errors.
A generator polynomial describes the circuit of the taps of the shift registers as shown in Figure 10-10.
There are different possibilities to describe
convolutional codes. In the following the state-chart and the trellis
diagram are explained.
State | A |
B |
C |
D |
---|---|---|---|---|
Memory content at moment t (xt-1 xt-2) | 0 0 |
1 0 |
0 1 |
1 1 |
Input bit xt | 0 1 |
0 1 |
0 1 |
0 1 |
New state at moment t+1 | A B |
C D |
A B |
C D |
Resulting code bits (c1 c2) | 00 11 |
10 01 |
11 00 |
01 10 |
For the circuit in Figure 10-10 the state chart
in Tab. 10-4 and Figure 10-11 results.
Figure 10-11: State chart.
Trellis diagramA trellis diagram consists of nodes and edges. Every node represents one of the 2k·m states which the memory of the coder can take. Every edge is a valid change from one state to a valid successor state. The edges are labeled with the output bits and the input bits separated by a slash. The edges may also be marked in colors or graphically. The trellis diagram is the basis of the description of the Viterbi decoder (Figure 10-12, Figure 10-13).
For every valid sequence Λ = Σ λi is calculated. The sequence with the largest Λ is that which is sent with highest probability, i.e. the sequence with the highest number of correctly receives bits.
Example: Decoding after ViterbiGiven is the generator polynomial in Figure 10-10 G1(z) = z² + z + 1 and G2(z) = z² + 1. Hence, the following assignment of the register and the following coding results as in Tab. 10-5. The message is added to the left of the register. The output follows the example in Figure 10-12 on the right.
Message | 1 |
0 |
1 |
1 | 0 | 0 | 0 |
---|---|---|---|---|---|---|---|
Register (x xt-1 xt-2) | 100 | 010 | 101 | 110 | 011 | 001 | 000 |
Coded bits (G1 G2) | 11 |
10 |
00 |
01 | 01 | 11 | 00 |
Figure 10-12: Trellis diagram.
For decoding the single nodes are labeled with the distances. If different distances arrive at a node, then the paths that do not have the minimum distance are not considered anymore (light grey paths in Figure 10-13). The paths that remain are called survivors.
Figure 10-13: Trellis diagram labeled with distances.