Convolutional Codes

Convolutional Codes
Dr. Muqaibel \ EE430
Convolutional Codes
1
Basic Definitions
•
•
•
•
k =1, n = 2 , (2,1) Rate-1/2 convolutional code
Two-stage register ( M=2 )
Each input bit influences the output for 3 intervals (K=3)
K = constraint length of the code = M + 1
Dr. Muqaibel \ EE430
Convolutional Codes
2
Generator Polynomial
• A convolutional code may be defined by a set of n
generating polynomials for each input bit.
• For the circuit under consideration:
g1(D) = 1 + D + D2
g2(D) = 1 + D2
• The set {gi(D)} defines the code completely. The length of
the shift register is equal to the highest-degree generator
polynomial.
Dr. Muqaibel \ EE430
Convolutional Codes
3
State Diagram Representation
• The output depends on the current input and the state of the
encoder ( i. e. the contents of the shift register).
Dr. Muqaibel \ EE430
Convolutional Codes
4
Trellis Diagram Representation
• Expansion of state diagram in time.
Dr. Muqaibel \ EE430
Convolutional Codes
5
Decoding
• A message m is encoded into the code sequence c.
• Each code sequence represents a path in the trellis diagram.
• Minimum Distance Decoding
– Upon receiving the received sequence r, search for the
path that is closest ( in Hamming distance) to r .
Dr. Muqaibel \ EE430
Convolutional Codes
6
The Viterbi Algorithm
• Walk through the trellis and compute the Hamming
distance between that branch of r and those in the trellis.
• At each level, consider the two paths entering the same
node and are identical from this node onwards. From these
two paths, the one that is closer to r at this stage will still
be so at any time in the future. This path is retained, and
the other path is discarded.
• Proceeding this way, at each stage one path will be saved
for each node. These paths are called the survivors. The
decoded sequence (based on MDD) is guaranteed to be one
of these survivors.
Dr. Muqaibel \ EE430
Convolutional Codes
7
The Viterbi Algorithm (cont’d)
• Each survivor is associated with a metric of the
accumulated Hamming distance (the Hamming distance up
to this stage).
• Carry out this process until the received sequence is
considered completely. Choose the survivor with the
smallest metric.
Dr. Muqaibel \ EE430
Convolutional Codes
8
6.3 The Viterbi Algorithm:
• The viterbi algorithm is used to decode convolutional codes
and any structure or system that can be described by a trellis.
• It is a maximum likelihood decoding algorithm that selects
the most probable path that maximizes the likelihood
function.
• The algorithm is based on add-compare-select the best path
each time at each state.
Example: For the convolutional code example in the previous lecture, starting from state
zero, Decode the following received sequence.
At the end of the
trellis, select the
path with the
minimum
cumulative
Hamming weight
This is the
survival
path in
this
example
Add the weight of the
path at each state
Compute the two possible paths at
each state and select the one
with less cumulative Hamming
weight

Decoded
sequence is
m=[10 1110]
This is called
the survival
path
Distance Properties of Conv. Codes
• Def: The free distance, dfree, is the minimum Hamming
distance between any two code sequences.
• Criteria for good convolutional codes:
– Large free distance, dfree.
– Small Hamming distance (i.e. as few differences as
possible ) between the input information sequences that
produce the minimally separated code sequences. dinf
• There is no known constructive way of designing a conv.
code of given distance properties. However, a given code
can be analyzed to find its distance properties.
Dr. Muqaibel \ EE430
Convolutional Codes
11
Distance Prop. of Conv. Codes (cont’d)
• Convolutional codes are linear. Therefore, the Hamming
distance between any pair of code sequences corresponds
to the Hamming distance between the all-zero code
sequence and some nonzero code sequence. Thus for a
study of the distance properties it is possible to focus on
the Hamming distance between the all-zero code sequence
and all nonzero code sequences.
• The nonzero sequence of minimum Hamming weight
diverges from the all-zero path at some point and remerges
with the all-zero path at some later point.
Dr. Muqaibel \ EE430
Convolutional Codes
12
Distance Properties: Illustration
• sequence 2: Hamming weight = 5, dinf = 1
• sequence 3: Hamming weight = 7, dinf = 3.
Dr. Muqaibel \ EE430
Convolutional Codes
13
Modified State Diagram
• The span of interest to us of a nonzero path starts from the
00 state and ends when the path first returns to the 00 state.
Split the 00 state (state a) to two states: a0 and a1.
• The branches are labeled with the dummy variables D, L
and N, where:
The power of D is the Hamming weight (# of 1’s) of the
output corresponding to that branch.
The power of N is the Hamming weight (# of 1’s) of the
information bit(s) corresponding to that branch.
The power of L is the length of the branch (always = 1).
Dr. Muqaibel \ EE430
Convolutional Codes
14
Modified State Diagram (cont’d)
Dr. Muqaibel \ EE430
Convolutional Codes
15
Properties of the Path
Sequence 2:
code sequence:
state sequence:
Labeled:
Prop. : w =5, dinf
Sequence 3:
code sequence:
state sequence:
Labeled:
Prop. : w =7, dinf
Dr. Muqaibel \ EE430
.. 00 11 10 11 00 ..
a0 b c a1
(D2LN)(DL)(D2L) = D5L3N
=1, diverges from the allzero path by 3 branches.
.. 00 11 01 01 00 10 11 00 ..
a0 b d c b c a1
(D2LN)(DLN)(DL)(DL)(LN)(D2L) = D7L6N3
=3, diverges from the allzero path by 6 branches.
Convolutional Codes
16
Transfer Function
• Input-Output relations:
a0 = 1
b = D2LN a0 + LNc
c = DLb + DLNd
d = DLNb + DLNd
a1 = D2Lc
• The transfer function T(D,L,N) = a1 /a0
D5 L3
T(D,L, N) 
1  DNL(1  L)
Dr. Muqaibel \ EE430
Convolutional Codes
17
Transfer Function (cont’d)
• Performing long division:
T = D5L3N + D6L4N2 + D6L5N2 + D7L5N3 + ….
• If interested in the Hamming distance property of the code
only, set N = 1 and L = 1 to get the distance transfer
function:
T (D) = D5 + 2D6 + 4D7
There is one code sequence of weight 5. Therefore dfree=5.
There are two code sequences of weight 6,
four code sequences of weight 7, ….
Dr. Muqaibel \ EE430
Convolutional Codes
18