IIT Convolution Codes
IIT Convolution Codes
Channel Coding
Convolutional Codes
Convolutional codes are commonly described using two parameters: the code rate
and the constraint length. 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. The constraint length parameter, K,
denotes the "length" of the convolutional encoder, i.e. how many k-bit stages are
available to feed the combinatorial logic that produces the output symbols. Closely
related to K is the parameter m, which indicates how many encoder cycles an input bit is
retained and used for encoding after it first appears at the input to the convolutional
encoder. The m parameter can be thought of as the memory length of the encoder.
A simple convolutional encoder is shown in Fig. 6.35.1. The information bits are
fed in small groups of k-bits at a time to a shift register. The output encoded bits are
obtained by modulo-2 addition (EXCLUSIVE-OR operation) of the input information
bits and the contents of the shift registers which are a few previous information bits.
x(1) D D
+
C2
If the encoder generates a group of ‘n’ encoded bits per group of ‘k’ information
bits, the code rate R is commonly defined as R = k/n. In Fig. 6.35.1, k = 1 and n = 2. The
number, K of elements in the shift register which decides for how many codewords one
information bit will affect the encoder output, is known as the constraint length of the
code. For the present example, K = 3.
00 11
1/10
0/00 1/00
0/11
0/01
01
t1 00 t2 t3 t4 t5 t6
00 00 00 00
State a = 00
11 11 11 11 11 Codeword
branch
11 11 11
b = 00 00 00 00
10 10 10 10
c = 00
01 01 01 01 01 01 01
d = 00
Legend 10 10 10
Input bit 0
Input bit 1
Transmitted codeword U: 11 01 01 00 01 …
Received sequence Z: 11 01 01 10 01 ….
t1 2 t2 1 t3 1 t4 1 t5 1 t
State a = 00
0 1 1 1 1 1 1 1
Branch
metric
b = 00 1 1
1
2 2 0 2
c = 00 0 …
0 2 0
0 2
0
d = 00 2 0 2
Fig.6.35.4(b) Trellis diagram, used in the decoder corresponding to the encoder in Fig.
6.35.1
Sb
1/00
0/00
Sa
1/00 Sc
The Viterbi algorithm utilizes the trellis diagram to compute the path metrics. The
channel is assumed to be memory less, i.e. the noise sample affecting a received bit is
independent from the noise sample affecting the other bits. The decoding operation starts
from state ‘00’, i.e. with the assumption that the initial state of the encoder is ‘00’. With
receipt of one noisy codeword, the decoding operation progresses by one step deeper into
the trellis diagram. The branches, associated with a state of the trellis tell us about the
corresponding codewords that the encoder may generate starting from this state. Hence,
upon receipt of a codeword, it is possible to note the ‘branch metric’ of each branch by
determining the Hamming distance of the received codeword from the valid codeword
associated with that branch. Path metric of all branches, associated with all the states are
calculated similarly.
Now, at each depth of the trellis, each state also carries some ‘accumulated path
metric’, which is the addition of metrics of all branches that construct the ‘most likely
path’ to that state. As an example, the trellis diagram of the code shown in Fig. 6.35.1,
has four states and each state has two incoming and two outgoing branches. At any depth
of the trellis, each state can be reached through two paths from the previous stage and as
per the VA, the path with lower accumulated path metric is chosen. In the process, the
‘accumulated path metric’ is updated by adding the metric of the incoming branch with
the ‘accumulated path metric’ of the state from where the branch originated. No decision
about a received codeword is taken from such operations and the decoding decision is
deliberately delayed to reduce the possibility of erroneous decision.
The basic operations which are carried out as per the hard-decision Viterbi Algorithm
after receiving one codeword are summarized below:
a) All the branch metrics of all the states are determined;
b) Accumulated metrics of all the paths (two in our example code) leading to a state
are calculated taking into consideration the ‘accumulated path metrics’ of the
states from where the most recent branches emerged;
c) Only one of the paths, entering into a state, which has minimum ‘accumulated
path metric’ is chosen as the ‘survivor path’ for the state (or, equivalently ‘node’);
d) So, at the end of this process, each state has one ‘survivor path’. The ‘history’ of a
survivor path is also maintained by the node appropriately ( e.g. by storing the
codewords or the information bits which are associated with the branches making
the path);
The above procedure is repeated for each received codeword hereafter. Thus, the
decision for a codeword is delayed but once the decision process starts, we decide once
for every received codeword. For most practical applications, including delay-sensitive
digital speech coding and transmission, a decision delay of Lx k codewords is acceptable.
Fig. 6.35.5(b) Viterbi decoded BER vs Eb/No for the rate – half convolutional codes; 1) b
= 3 HDD), 2) b = 5 (HDD), 3) b = 3 (SDD), 4) b = 5 (Transfer function bound) and 5)
Uncoded system.
Fig. 6.35.6 (b) Decoded BER vs Eb/No (in dB) for the rate – half convolutional codes with
Viterbi Algorithm ; 1) Uncoded system; 2) with k = 3 (HDD) and 3) k = 3 (SDD). HDD:
Hard Decision Decoding; SDD: Soft Decision Decoding.