You are on page 1of 7

Convolutional coding and decoding

Convolutional codes
Convolutional coding is done by combining the fixed no. of input bits. The input bits are stored
in the fixed length register and they are combined with the help of modulo-2 adders. A
convolutional encoder generates redundant bits by using modulo-2 convolutions, hence the
name.
Convolutional codes are commonly described using two parameters:

Code rate: The code rate, k/n, is expressed as a ratio of the number of bits into the
convolutional encoder (k) to the number of channel symbols output by the convolutional
encoder (n) in a given encoder cycle.

Constraint length: The constraint length of a convolution code is defined as the number of
shifts over which a single message bit can influence the encoder output.

Convolutional Encoder
A convolutional encoder is a linear finite-state machine consisting of a L-stage shift register with
prescribed connections to n modulo-2 adders and a multiplexer that serializes the outputs of the
adders.

Figure 1 Convolutional encoder with L=-3, k=1 and n=2

Encoder state diagram

Figure 2: State diagram of the encoder

Code tree representation


It is traditional and instructive to exhibit a convolutional code by means of a tree diagram as
shown in Fig. 3. If the first input bit is a zero, the code symbols are those shown on the first
upper branch, while if it is a one, the output code symbols are those shown on the first lower
branch. Similarly, if the second input bit is a zero, we trace the tree diagram to the next upper
branch, while if it, is a one, we trace the diagram downward. In this manner all 32 possible
outputs for the first five inputs may be traced. From the diagram it also becomes clear that after
the first three branches the structure becomes repetitive.

Figure 3: Code tree representation of encoder

Trellis diagram
A trellis is a tree-like structure with remerging branches. We adopt the convention here that code
branches produced by a zero input bit are shown as solid lines and code branches produced by
a one input bit are shown dashed.

Figure 4: Encoder Trellis Diagram

Decoding Convolutional Codes


There are mainly two decoding methods for convolutional codes, namely
1. Sequential Decoding
2. Maximum Likelihood Decoding : Viterbi Algorithm

Sequential Decoding
A sequential decoder works by generating hypothesis about the transmitted codeword sequence;
it computes a metric between these hypotheses and the received signal. It goes forward as long as
the metric indicates that its choices are likely; otherwise goes backwards, changing hypothesis
until, through a systematic trail and search, it finds a likely hypothesis.
Following tree diagram shows the method of sequential decoding.

Figure 5: Sequential decoding example

Maximum Likelihood decoding


Maximum likelihood decoding means finding the code branch in the code trellis that was most
likely to be transmitted. Therefore maximum likelihood decoding is based on calculating the
hamming distances for each branch forming encode word.

Viterbi Algorithm
Maximum Likelihood algorithm is too complex to search all available paths as end to end
calculation is required. Viterbi algorithm performs maximum likelihood decoding by reducing its
6

complexity. It eliminates least likely trellis path at each transmission stage and it reduces
decoding complexity with early rejection of unlike paths. Viterbi algorithm gets its efficiency via
concentrating on survival paths of the trellis.

Figure 7: Viterbi Algorithm


Example:
Input data : m =1 1 0 1 1, Codeword : X = 11 01 01 00 01, Received code : Z = 11 01 01 10 01

You might also like