Convolutional Codes

Convolutional Codes
ECEN 5682 Theory and Practice of Error Control
Codes
Convolutional Codes
Peter Mathys
University of Colorado
Spring 2007
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Basic Definitions, Convolutional Encoders
Linear (n, k) block codes take k data symbols at a time and encode
them into n code symbols. Long data sequences are broken up into
blocks of k symbols and each block is encoded independently of all
others. Convolutional encoders, on the other hand, convert an
entire data sequence, regardless of its length, into a single code
sequence by using convolution and multiplexing operations. In
general, it is convenient to assume that both the data sequences
(u0 , u1 , . . .) and the code sequences (c0 , c1 , . . .) are semi-infinite
sequences and to express them in the form of a power series.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The power series associated with the data sequence
u = (u0 , u1 , u2 , . . .) is defined as
u(D) = u0 + u1 D + u2 D 2 + . . . =
∞
X
ui D i ,
i=0
where u(D) is called the data power series. Similarly, the code
power series c(D) associated with the code sequence
c = (c0 , c1 , c2 , . . .) is defined as
2
c(D) = c0 + c1 D + c2 D + . . . =
∞
X
ci D i .
i=0
The indeterminate D has the meaning of delay, similar to z −1 in
the z transform, and D is sometimes called the delay operator.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
A general rate R = k/n convolutional encoder converts k data
sequences into n code sequences using a k × n transfer function
matrix G(D) as shown in the following figure.
u(D)
D
e
m
u
x
u(1) (D)
..
.
(k)
u (D)
Convolutional
Encoder
G(D)
c(1) (D)
..
.
c
(n)
(D)
M
u
x
c(D)
Fig.1 Block Diagram of a k-Input, n-Output Convolutional Encoder
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
The data power series u(D) is split up into k subsequences,
denoted u (1) (D), u (2) (D), . . . , u (k) (D) in power series notation,
using a demultiplexer whose details are shown in the figure below.
u(D) −→
(u0 , u1 , . . . , uk−1, uk , uk+1, . . . , u2k−1 , u2k , u2k+1 , . . . , u3k−1 , . . .)
(1)
(1)
...
u0
(2)
u0
(2)
u1
...
(k)
u0
(1)
...
u1
u2
(2)
u2
...
. . . u(k)
1
...
. . . −→ u(1) (D)
...
. . . −→ u(2) (D)
..
.
...
(k)
u2
. . . −→ u(k) (D)
Fig.2 Demultiplexing from u(D) into u(1) (D), . . . , u(k) (D)
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
The code subsequences, denoted by c (1) (D), c (2) (D), . . . , c (n) (D)
in power series notation, at the output of the convolutional
encoder are multiplexed into a single power series c(D) for
transmission over a channel, as shown below.
c(1) (D) → c(1)
0
c(2) (D) →
..
.
c(n) (D) →
(1)
...
(2)
c0
(2)
c1
...
(n)
c0
(1)
...
c1
c2
(2)
...
c2
. . . c(n)
1
...
...
...
...
...
(n)
c2
...
(c0 , c1 , . . . , cn−1 , cn , cn+1 , . . . , c2n−1 , c2n , c2n+1 , . . . , c3n−1 , . . .)
→ c(D)
Fig.3 Multiplexing of c(1) (D), . . . , c(n) (D) into Single Output c(D)
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: A q-ary generator polynomial of degree m is a
polynomial in D of the form
g (D) = g0 + g1 D + g2 D 2 + . . . + gm D m =
m
X
gi D i ,
i=0
with m + 1 q-ary coefficients gi . The degree m is also called the
memory order of g (x).
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Consider computing the product (using modulo q arithmetic)
c(D) = u(D) g (D) .
Written out, this looks as follows
c 0 + c1 D + c 2 D 2 + . . . =
= (g0 + g1 D + g2 D 2 + . . . + gm D m ) (u0 + u1 D + u2 D 2 + . . .) =
= g0 u0 + g0 u1 D + g0 u2 D 2 + . . . + g0 um D m + g0 um+1 D m+1 + g0 um+2 D m+2
+ g1 u0 D + g1 u1 D 2 + . . . + g1 um−1 D m + g1 um D m+1 + g1 um+1 D m+2
+ g2 u0 D 2 + . . . + g2 um−2 D m + g2 um−1 D m+1 + g2 um D m+2
..
..
..
.
.
.
+ gm u0 D m + gm u1 D m+1 + gm u2 D m+2
+ ...
+ ...
+ ...
+ ...
Thus, the coefficients of c(D) are
cj =
m
X
gi uj−i ,
j = 0, 1, 2, . . . ,
where u` = 0 for ` < 0 ,
i=0
i.e., the code sequence (c0 , c1 , c2 , . . .) is the convolution of the
data sequence (u0 , u1 , u2 , . . .) with the generator sequence
(g0 , g1 , . . . , gm ).
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
A convenient way to implement the convolution
cj =
m
X
gi uj−i ,
j = 0, 1, 2, . . . ,
where u` = 0 for ` < 0 ,
i=0
is to use a shift register with m memory cells (cleared to zero at
time t = 0), as shown in following figure.
m memory cells
. . . , u2 , u1 , u0
•
g0
···
g1
g2
+
+
gm
···
+
. . . , c2 , c1 , c0
Fig.4 Block Diagram for Convolution of u(D) with g(D)
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
A general k-input, n-output convolutional encoder consists of k
such shift registers, each of which is connected to the outputs via
n generator polynomials.
Definition: A q-ary linear and time-invariant convolutional encoder
with k inputs and n outputs is specified by a k × n matrix G(D),
called transfer function matrix, which consists of generator
(`)
polynomials gh (D), h = 1, 2, . . . , k, ` = 1, 2, . . . , n, as follows
 (1)

(2)
(n)
g1 (D) g1 (D) . . . g1 (D)
 (1)

g2 (D) g2(2) (D) . . . g2(n) (D)

G(D) =  .
..
.. 
.
.
. 
 ..
(1)
(2)
(n)
gk (D) gk (D) . . . gk (D)
The generator polynomials have q-ary coefficients, degree mh` , and
are of the form
(`)
(`)
(`)
(`)
(`)
gh (D) = g0h + g1h D + g2h D 2 + . . . + gmh` h D mh` .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
Define the power series vectors
u(D) = [u (1) (D), u (2) (D), . . . , u (k) (D)] ,
c(D) = [c (1) (D), c (2) (D), . . . , c (n) (D)] .
The operation of a k-input n-output convolutional encoder can
then be concisely expressed as c(D) = u(D) G(D). Each individual
output sequence is obtained as
c (`) (D) =
k
X
(`)
u (h) (D) gh (D) .
h=1
Note: By setting u (h) (D) = 1 in the above equation, it is easily
seen that the generator sequence
(`)
(`)
(`)
(`)
(g0h , g1h , g2h , . . . , gmh` h ) ,
is the unit impulse response from input h to output ` of the
convolutional encoder.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The total memory M of a convolutional encoder is the
total number of memory elements in the encoder, i.e.,
M=
k
X
h=1
max mh` .
1≤`≤n
Note that max1≤`≤n mh` is the number of memory cells or the
memory order of the shift register for the input with index h.
Definition: The maximal memory order m of a convolutional
encoder is the length of the longest input shift register, i.e.,
m = max max mh` .
1≤h≤k 1≤`≤n
Equivalently, m is equal to the highest degree of any of the
generator polynomials in G(D).
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The constraint length K of a convolutional encoder is
the maximum number of symbols in a single output stream that
can be affected by any input symbol, i.e.,
K = 1 + m = 1 + max max mh` .
1≤h≤k 1≤`≤n
Note: This definition for constraint length is not in universal use.
Some authors define constraint length to be the maximum number
of symbols in all output streams that can be affected by any input
symbol, which is nK in the notation used here.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder #1. Binary rate R = 1/2 encoder with
constraint length K = 3 and transfer function matrix
G(D) = g (1) (D) g (2) (D) = 1 + D 2 1 + D + D 2 .
A block diagram for this encoder is shown in the figure below.
+
. . . , u2 , u1 , u0
(1)
(1)
(1)
(2)
(2)
(2)
. . . , c2 , c1 , c0
•
+
+
. . . , c2 , c1 , c0
Fig.5 Binary Rate 1/2 Convolutional Encoder with K = 3
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
At time t = 0 the contents of the two memory cells are assumed to
be zero. Using this encoder, the data sequence
u = (u0 , u1 , u2 , . . .) = (1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0 . . .) ,
for example, is encoded as follows
u = 110100111010...
u = 110100111010...
uD = 110100111010...
uD 2 = 110100111010...
----------------c (2) = 100011101001.....
uD 2 =
c (1)
110100111010...
----------------= 111001110100.....
After multiplexing this becomes
(1)
(2)
(1)
(2)
(1)
(2)
c = (c0 c1 , c2 c3 , c4 c5 , . . .) = (c0 c0 , c1 c1 , c2 c2 , . . .)
= (11, 10, 10, 00, 01, 11, 11, 10, 01, 10, 00, 01, . . .) .
The pairs of code symbols that each data symbol generates are
called code frames.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: Consider a rate R = k/n convolutional encoder, let
u = (u0 u1 . . . uk−1 , uk uk+1 . . . u2k−1 , u2k u2k+1 . . . u3k−1 , . . .)
(1)
(2)
= (u0 u0
(k)
(1)
(2)
. . . u0 , u1 u1
(k)
(1)
(2)
. . . u1 , u2 u2
(k)
. . . u2 , . . .) ,
and let
c = (c0 c1 . . . cn−1 , cn cn+1 . . . c2n−1 , c2n c2n+1 . . . c3n−1 , . . .)
(1)
(2)
= (c0 c0
(n)
(1)
(2)
. . . c0 , c1 c1
(n)
(1)
(2)
. . . c1 , c2 c2
(n)
. . . c2 , . . .) .
Then the set of data symbols (uik uik+1 . . . u(i+1)k−1 ) is called the
i-th data frame and the corresponding set of code symbols
(cin cin+1 . . . c(i+1)n−1 ) is called the i-th code frame for
i = 0, 1, 2, . . . .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder #2. Binary rate R = 2/3 encoder with constraint length
K = 2 and transfer function matrix
#
" (1)
# "
(2)
(3)
g1 (D) g1 (D) g1 (D)
1+D D 1+D
G(D) =
=
(1)
(2)
(3)
D
1
1
g2 (D) g2 (D) g2 (D)
A block diagram for this encoder is shown in the figure below.
+
(1)
(1)
(1)
. . . , u2 , u1 , u0
•
•
+
(2)
(2)
(1)
(1)
(1)
(2)
(2)
(2)
(3)
(3)
(3)
. . . , c2 , c1 , c0
+
. . . , c2 , c1 , c0
+
+
. . . , c2 , c1 , c0
(2)
. . . , u2 , u1 , u0
•
•
Fig.6 Binary Rate 2/3 Convolutional Encoder with K = 2
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
In this case the data sequence
u = (u0 u1 , u2 u3 , u4 u5 , . . .) = (11, 01, 00, 11, 10, 10, . . .) ,
is first demultiplexed into u(1) = (1, 0, 0, 1, 1, 1, . . .) and
u(2) = (1, 1, 0, 1, 0, 0, . . .), and then encoded as follows
u (1) = 100111...
u D = 100111...
u (2) D = 110100...
---------c (1) = 101110....
(1)
u
u (1) = 100111...
u D = 100111...
u (2) = 110100...
---------c (3) = 000000....
(1)
(1)
D = 100111...
u (2) = 110100...
---------c (2) = 100111....
Multiplexing the code sequences c(1) , c(2) , and c(3) yields the
single code sequence
(1)
(2)
(3)
(1)
(2)
(3)
c = (c0 c1 c2 , c3 c4 c5 , . . .) = (c0 c0 c0 , c1 c1 c1 , . . .)
= (110, 000, 100, 110, 110, 010, . . .) .
Because this is a rate 2/3 encoder, data frames of length 2 are
encoded into code frames of length 3.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: Let u = (u0 , u1 , u2 , . . .) be a data sequence (before
demultiplexing) and let c = (c0 , c1 , c2 , . . .) be the corresponding
code sequence (after multiplexing). Then, in analogy to block
codes, the generator matrix G of a convolutional encoder is defined
such that
c = uG .
Note that G for a convolutional encoder has infinitely many rows
and columns.
(`)
Let G(D) = [gh ] be the transfer function matrix of a
convolutional encoder with generator polynomials
P
(`)
(`) i
gh (D) = m
i=0 gih D , h = 1, 2, . . . , k, ` = 1, 2, . . . , n, where m
is the maximal memory order of the encoder. Define the matrices
2
(1)
gi1
6 (1)
g
6 i2
Gi = 6
6 ..
4 .
(1)
gik
(2)
gi1
(2)
gi2
..
.
(2)
gik
...
...
...
3
(n)
gi1
(n) 7
gi2 7
.. 7
7,
. 5
(n)
gik
Peter Mathys
i = 0, 1, 2, . . . , m .
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
In terms of these matrices, the generator matrix G can be
conveniently expressed as (all entries below the diagonal are zero)


G0 G1 G2 . . . Gm
0
0 ...

G0 G1 . . . Gm−1 Gm
0 . . .



G0 . . . Gm−2 Gm−1 Gm . . .




..
..
..
..


.
.
.
.
.
G=

G0
G1
G2 . . .



G0
G1 . . .




G
.
.
.
0


..
.
Note that the first row of this matrix is the unit impulse response
(after multiplexing the outputs) from input stream 1, the second
row is the unit impulse response (after multiplexing the outputs)
from input stream 2, etc.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder #1 has m = 2,
G0 = 1 1 ,
G1 = 0 1 ,
and thus generator matrix

11 01
00 11


G = 00 00
00 00

..
..
.
.
11
01
11
00
..
.
00
11
01
11
..
.
00
00
11
01
..
.
G2 = 1 1 ,
00
00
00
11
..
.

...
. . .

. . .
.
. . .

Using this, it is easy to compute, for example, the list of (non-zero)
datawords and corresponding codewords shown on the next page.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
u = (u0 , u1 , . . .)
c = (c0 c1 , c2 c3 , . . .)
1,0,0,0,0,...
1,1,0,0,0,...
1,0,1,0,0,...
1,1,1,0,0,...
1,0,0,1,0,...
1,1,0,1,0,...
1,0,1,1,0,...
1,1,1,1,0,...
11,01,11,00,00,00,00,...
11,10,10,11,00,00,00,...
11,01,00,01,11,00,00,...
11,10,01,10,11,00,00,...
11,01,11,11,01,11,00,...
11,10,10,00,01,11,00,...
11,01,00,10,10,11,00,...
11,10,01,01,10,11,00,...
One thing that can be deduced from this list is that most likely the
minimum weight of any non-zero codeword is 5, and thus, because
convolutional codes are linear, the minimum distance, called
minimum free distance for convolutional codes for historical
reasons, is dfree = 5.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder #2 has m = 1,
1 0 1
1 1 1
G0 =
,
G1 =
,
0 1 1
1 0 0
and therefore generator

101
011

000

000


G = 000
000

000

000

..
.
matrix
111
100
101
011
000
000
000
000
..
.
000
000
111
100
101
011
000
000
..
.
Peter Mathys
000
000
000
000
111
100
101
011
..
.
000
000
000
000
000
000
111
100
..
.

...
. . .

. . .

. . .

. . .
.
. . .

. . .

. . .

ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
The first few non-zero codewords that this encoder produces are
u = (u0 u1 , . . .)
c = (c0 c1 c2 , . . .)
10,00,00,...
01,00,00,...
11,00,00,...
10,10,00,...
01,10,00,...
11,10,00,...
10,01,00,...
01,01,00,...
11,01,00,...
10,11,00,...
01,11,00,...
11,11,00,...
101,111,000,000,...
011,100,000,000,...
110,011,000,000,...
101,010,111,000,...
011,001,111,000,...
110,110,111,000,...
101,100,100,000,...
011,111,100,000,...
110,000,100,000,...
101,001,011,000,...
011,010,011,000,...
110,101,011,000,...
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The code generated by a q-ary convolutional encoder
with transfer function matrix G(D) is the set of all vectors of
semi-infinite sequences of encoded symbols c(D) = u(D) G(D),
where u(D) is any vector of q-ary data sequences.
Definition: Two convolutional encoders with transfer function
matrices G1 (D) and G2 (D) are said to be equivalent if they
generate the same codes.
Definition: A systematic convolutional encoder is a convolutional
encoder whose codewords have the property that each data frame
appears unaltered in the first k positions of the first code frame
that it affects.
Note: When dealing with convolutional codes and encoders it is
important to carefully distinguish between the properties of the
code (e.g., the minimum distance of a code) and the properties of
the encoder (e.g., whether an encoder is systematic or not).
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Neither encoder #1 nor encoder #2 are systematic. But
the following binary rate 1/3 encoder, which will be called encoder
#3, with constraint length K = 4 and transfer function matrix
G(D) = 1 1 + D + D 3 1 + D + D 2 + D 3 ,
is a systematic convolutional encoder. Its

111 011 001 011 000
000 111 011 001 011


G = 000 000 111 011 001
000 000 000 111 011

..
..
..
..
..
.
.
.
.
.
generator matrix is

000 000 . . .
000 000 . . .

011 000 . . .
.
001 011 . . .

..
..
.
.
Note that the first column of each triplet of columns has only a
single 1 in it, so that the first symbol in each code frame is the
corresponding data symbol from the data sequence u.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Much more interesting systematic encoders can be obtained if one
allows not only FIR (finite impulse response), but also IIR (infinite
impulse response) filters in the encoder. In terms of the transfer
function matrix G(D), this means that the use of rational
polynomial expressions instead of generator polynomials as matrix
elements is allowed. The following example illustrates this.
Example: Encoder #4. Binary rate R = 1/3 systematic encoder
with constraint length K = 4 and rational transfer function matrix
1 + D + D3 1 + D + D2 + D3
G(D) = 1
.
1 + D2 + D3
1 + D2 + D3
A block diagram of this encoder is shown in the next figure.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
»
1 + D + D3
1 + D2 + D3
G(D) = 1
1 + D + D2 + D3
1 + D2 + D3
–
.
c(1) (D)
+
+
•
+
u(D)
•
+
c(2) (D)
c(3) (D)
•
+
Fig.7 Binary Rate 1/3 Systematic Convolutional Encoder with K = 4
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Encoder State Diagrams
Convolutional encoders have total memory M. Thus, a
time-invariant q-ary encoder can be regarded as a finite state
machine (FSM) with q M states and it can be completely described
by a state transition diagram called encoder state diagram. Such a
state diagram can be used to encode a data sequence of arbitrary
length. In addition, the encoder state diagram can also be used to
obtain important information about the performance of a
convolutional code and its associated encoder.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder state diagram for encoder #1. This is a binary encoder with
G(D) = [1 + D 2 1 + D + D 2 ] that uses 2 memory cells and 22 = 4 states. With
reference to the block diagram in Figure 5, label the encoder states as follows:
S0 = 00 ,
S1 = 10 ,
S2 = 01 ,
S3 = 11 ,
where the first binary digit corresponds to the content of the first (leftmost)
delay cell of the encoder, and the second digit corresponds to the content of
the second delay cell.
At any given time t (measured in frames), the encoder is in a particular state
S (t) . The next state, S (t+1) , at time t + 1 depends on the value of the data
frame at time t, which in the case of a rate R = 1/2 encoder is just simply ut .
(1)
(2)
The code frame ct ct
S
(t)
that the encoder outputs at time t depends only on
and ut (and the transfer function matrix G(D), of course). Thus, the
(1)
(2)
possible transitions between the states are labeled with ut /ct ct . The
resulting encoder state diagram for encoder #1 is shown in the following figure.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
S1
1/10
1/11
0/00
S0
0/01
1/00
0/11
S3
1/01
0/10
S2
Fig.8 Encoder State Diagram for Binary Rate 1/2 Encoder with K = 3
To encode the data sequence u = (0, 1, 0, 1, 1, 1, 0, 0, 1, . . .), for instance, start
in S0 at t = 0, return to S0 at t = 1 because u0 = 0, then move on to S1 at
t = 2, S2 at t = 3, S1 at t = 4, S3 at t = 5, S3 at t = 6 (self loop around S3 ),
S2 at t = 7, S0 at t = 8, and finally S1 at t = 9. The resulting code sequence
(after multiplexing) is
c = (00, 11, 01, 00, 10, 01, 10, 11, 11, . . .) .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Encoder state diagram for encoder #2 with
"
#
1+D D 1+D
G(D) =
D
1
1
and block diagram as shown in Figure 6. This encoder also has
M = 2, but each of the two memory cells receives its input at time
t from a different data stream. The following convention is used to
label the 4 possible states (the upper bit corresponds to the upper
memory cell in Figure 6)
0
S0 = ,
0
1
S1 = ,
0
0
S2 = ,
1
1
S3 = .
1
Because the encoder has rate R = 2/3, the transitions in the
encoder state diagram from time t to time t + 1 are now labeled
(1) (2) (1) (2) (3)
with ut ut /ct ct ct . The result is shown in the next figure.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
10/010
S1
00/111
10/110
11/001
10/101
10/001
11/110
00/000
S0
S3
11/101
00/011
01/100
00/100
01/011
01/000
11/010
S2
01/111
Fig.9 Encoder State Diagram for Binary Rate 2/3 Encoder with K = 2
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: The figure on the next slide shows the encoder state
diagram for encoder #4 whose block diagram was given in Figure
7. This encoder has rational transfer function matrix
1 + D + D3 1 + D + D2 + D3
G(D) = 1
,
1 + D2 + D3
1 + D2 + D3
and M = 3. The encoder states are labeled using the following
convention (the leftmost bit corresponds to the leftmost memory
cell in Figure 7)
S0 = 000 , S1 = 100 , S2 = 010 , S3 = 110 ,
S4 = 001 , S5 = 101 , S6 = 011 , S7 = 111 .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
1/100
S1
0/011
1/111
S3
0/011
0/001
0/010
S0
0/000
1/110
S2
S5
0/000
1/110
S7
1/100
1/111
1/101
S4
1/101
0/010
0/001
S6
Fig.10 Encoder State Diagram for R = 1/3, K = 4 Systematic Encoder
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Trellis Diagrams
Because the convolutional encoders considered here are
time-invariant, the encoder state diagram describes their behavior
for all times t. But sometimes, e.g., for decoding convolutional
codes, it is convenient to show all possible states of an encoder
separately for each time t (measured in frames), together with all
possible transitions from states at time t to states at time t + 1.
The resulting diagram is called a trellis diagram.
Example: For encoder #1 with G(D) = 1 + D 2 1 + D + D 2
and M = 2 (and thus 4 states) the trellis diagram is shown in the
figure on the next slide.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
01
•
S3
01
•
10
10
S2
01
•
10
10
•
01
10
•
11
S0
•
t=0
•
11
00
•
t=1
11
•
t=2
•
01
•
11
•
t=3
•
01
···
00
•
11
00
10
00
11
00
•
10
00
S1
01
•
11
•
11
00
•
t=4
00
•
t=5
Fig.11 Trellis Diagram for Binary Rate 1/2 Encoder with K = 3
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Note that the trellis always starts with the all-zero state S0 at time
t = 0 as the root node. This corresponds to the convention that
convolutional encoders must be initialized to the all-zero state
before they are first used. The labels on the branches are the code
frames that the encoder outputs when that particular transition
from a state at time t to a state at time t + 1 is made in response
to a data symbol ut . The highlighted path in Figure 11, for
example, coresponds to the data sequence u = (1, 1, 0, 1, 0, . . .)
and the resulting code sequence
c = (11, 10, 10, 00, 01, . . .) .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Viterbi Decoding Algorithm
In its simplest and most common form, the Viterbi algorithm is a
maximum likelihood (ML) decoding algorithm for convolutional
codes. Recall that a ML decoder outputs the estimate ĉ = ci iff i
is the index (or one of them selected at random if there are
several) which maximizes the expression p
(v|ci ) , over all
Y |X
codewords c0 , c1 , c2 , . . . . The conditional pmf p
defines the
Y |X
channel model with input X and output Y which is used, and v is
the received (and possibly corrupted) codeword at the output of
the channel. For the important special case of memoryless
channels used without feedback, the computation of p
can be
Y |X
considerably simplified and brought into a form where metrics
along the branches of a trellis can be added up and then a ML
decision can be obtained by comparing these sums. In a nutshell,
this is what the Viterbi algorithm does.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: A channel with input X and output Y is said to be
memoryless if
p(yj |xj , xj−1 , . . . , x0 , yj−1 , . . . , y0 ) = p
Y |X
(yj |xj ) .
Definition: A channel with input X and output Y is used without
feedback if
p(xj |xj−1 , . . . , x0 , yj−1 , . . . , y0 ) = p(xj |xj−1 , . . . , x0 ) .
Theorem: For a memoryless channel used without feedback
p
(y|x) =
Y |X
N−1
Y
p
Y |X
(yj |xj ) ,
j=0
where N is the length of the channel input and output vectors X
and Y.
Proof: Left as an exercise.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The ML decoding rule at the output Y of a discrete
memoryless channel (DMC) with input X , used without feedback
is: Output code sequence estimate ĉ = ci iff i maximizes the
likelihood function
p
(v|ci ) =
Y |X
N−1
Y
p
Y |X
(vj |cij ) ,
j=0
over all code sequences ci = (ci0 , ci1 , ci2 , . . .) for i = 0, 1, 2, . . . .
The pmf p
is given by specifying the transition probabilities of
Y |X
the DMC and vj are the received symbols at the output of the
channel. For block codes N is the blocklength of the code. For
convolutional codes we set N = n (L + m), where L is the number
of data frames that are encoded and m is the maximal memory
order of the encoder.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The log likelihood function of a received sequence v at
the channel output with respect to code sequence ci is the
expression
X
N−1
(vj |cij ) ,
log p
log p
(v|ci ) =
Y |X
Y |X
j=0
where the logarithm can be taken to any basis.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
Definition: The path metric µ(v|ci ) for a received sequence v given
a code sequence ci is computed as
µ(v|ci ) =
N−1
X
µ(vj |cij ) ,
j=0
where the symbol metrics µ(vj |cij ) are defined as
µ(vj |cij ) = α log[p
Y |X
(vj |cij )] + f (vj ) .
Here α is any positive number and f (vj ) is a completely arbitrary
real-valued function defined over the channel output alphabet B.
Usually, one selects for every y ∈ B
f (y ) = − log min p
(y |x) ,
x∈A
Y |X
where A is the channel input alphabet. In this way the smallest
symbol metric will always be 0. The quantity α is then adjusted so
that all nonzero metrics are (approximated by) small positive
integers.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
Example: A memoryless BSC with transition probability < 0.5 is
characterized by
p
Y |X
(v |c)
c =0
c =1
minc p
Y |X
v =0
v =1
1−
1−
(v |c)
Thus, setting f (v ) = − log[min p
c
Y |X
(v |c)], yields
f (0) = f (1) = − log .
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
With this, the bit metrics become
µ(v |c)
v =0
v =1
c =0
c =1
α(log(1−)− log )
0
0
α(log(1−)− log )
Now choose α as
α=
1
,
log(1 − ) − log so that the following simple bit metrics for the BSC with < 0.5
are obtained
µ(v |c)
v =0
v =1
c =0
c =1
1
0
0
1
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: The partial path metric µ(t) (v|ci ) at time t,
t = 1, 2, . . ., for a path, a received sequence v, and given a code
sequence ci , is computed as
µ(t) (v|ci ) =
t−1
X
(`)
µ(v(`) |ci ) =
tn−1
X
µ(vj |cij ) ,
j=0
`=0
(`)
where the branch metrics µ(v(`) |ci ) of the `-th branch,
` = 0, 1, 2, . . ., for v and a given ci are defined as
(`+1)n−1
(`)
µ(v(`) |ci ) =
X
µ(vj |cij ) .
j=`n
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
The Viterbi algorithm makes use of the trellis diagram to
compute the partial path metrics µ(t) (v|ci ) at times t = 1, 2, . . . , N
for a received v, given all code sequences ci that are candidates for
a ML decision, in the following well defined and organized manner.
(1) Every node in the trellis is assigned a number that is equal to
the partial path metric of the path that leads to this node.
By definition, the trellis starts in state 0 at t = 0 and
µ(0) (v|ci ) = 0.
(2) For every transition from time t to time t + 1, all q (M+k)
(there are q M states and q k different input frames at every
(t)
time t) t-th branch metrics µ(v(t) |ci ) for v given all t-th
codeframes are computed.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
(3) The partial path metric µ(t+1) (v|ci ) is updated by adding the
t-th branch metrics to the previous partial path metrics
µ(t) (v|ci ) and keeping only the maximum value of the partial
path metric for each node in the trellis at time t + 1. The
partial path that yields the maximum value at each node is
called the survivor, and all other partial paths leading into the
same node are eliminated from further consideration as a ML
decision candidate. Ties are broken by flipping a coin.
(4) If t + 1 = N (= n(L + m) where L is the number of data
frames that are encoded and m is the maximal memory order
of the encoder), then there is only one survivor with
maximum path metric µ(v|ci ) = µ(N) (v|ci ) and thus ĉ = ci
is announced and the decoding algorithm stops. Otherwise,
set t ← t + 1 and return to step 2.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Theorem: The path with maximum path metric µ(v|ci ) selected by
the Viterbi decoder is the maximum likelihood path.
Proof: Suppose ci is the ML path, but the decoder outputs
ĉ = cj . This implies that at some time t the partial path metrics
satisfy µ(t) (v|cj ) ≥ µ(t) (v|ci ) and ci is not a survivor. Appending
the remaining path that corresponds to ci to the survivor cj at
time t thus results in a larger path metric than the one for the ML
path cj . But this is a contradiction for the assumption that cj is
the ML path.
QED
Example: Encoder #1 (binary R = 1/2, K = 3 encoder with
G(D) = [1 + D 2 1 + D + D 2 ]) was used to generate and transmit
a codeword over a BSC with transition probability < 0.5. The
following seqence was received:
v = (10, 10, 00, 10, 10, 11, 01, 00, . . .) .
To find the most likely codeword ĉ that corresponds to this v, use
the Viterbi algorithm with the trellis diagram shown in Figure 12.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
3
•
S3
10
S2
1
01 •
4
01
•
10
X
10
01
10
4
01 •
10
•
1
11
2
S0 •
00
v:
10
0
•
11 •
3
11 X
11
00
1
•
X
•
00
2
10
6
01 •
X
X 00
11 •
00
•
5.
10
7
X •
10
7
01 •
00
X •
10
10
00
11 •
7
00
5.
10
8.
01
•
X
01
10
X
8.
01 •
10
10
•
X
11
01 •
01
10
11.
X •
X
10
11.
01 •
X
11 X
11
4
00
01
X
X
S1
5
X •
X 00
X 00
11 •
9
11 •
10
11
X •
11
00
7
10
X •
00
9
11
X
•
00
11 X
00
10
01
···
11 •
13
X
•
12
00
Fig.12 Viterbi Decoder: R = 1/2, K = 3 Encoder, Transmission over BSC
At time zero start in state S0 with a partial path metric µ(0) (v|ci ) = 0. Using
the bit metrics for the BSC with < 0.5 given earlier, the branch metrics for
each of the first two brances are 1. Thus, the partial path metrics at time
t = 1 are µ(1) (10|00) = 1 and µ(1) (10|11) = 1.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
(1)
Continuing to add the branch metrics µ(v(1) |ci ), the partial path metrics
µ(2) ((10, 10)|(00, 00)) = 2, µ(2) ((10, 10)|(00, 11)) = 2,
µ(2) ((10, 10)|(11, 01)) = 1, and µ(2) ((10, 10)|(11, 10)) = 3 are obtained at time
t = 2. At time t = 3 things become more interesting. Now two branches enter
into each state and only the one that results in the larger partial path metric is
kept and the other one is eliminated (indicated with an “X”). Thus, for
instance, since 2 + 2 = 4 > 1 + 0 = 1, µ(3) ((10, 10, 00)|(00, 00, 00)) = 4
whereas the alternative path entering S0 at t = 3 would only result in
µ(3) ((10, 10, 00)|(11, 01, 11)) = 1. Similarly, for the two paths entering S1 at
t = 3 one finds either µ(3) ((10, 10, 00)|(00, 00, 11)) = 2 or
µ(3) ((10, 10, 00)|(11, 01, 00)) = 3 and therefore the latter path and
corresponding partial path metric survive. If there is a tie, e.g., as in the case
of the two paths entering S0 at time t = 4, then one of the two paths is
selected as survivor at random. In Figure 12 ties are marked with a dot
following the value of the partial path metric. Using the partial path metrics at
time t = 8, the ML decision at this time is to choose the codeword
corresponding to the path with metric 13 (highlighted in Figure 12), i.e.,
ĉ = (11, 10, 01, 10, 11, 11, 01, 00, . . .)
Peter Mathys
=⇒
û = (1, 1, 1, 0, 0, 1, 0, 1, . . .).
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Definition: A channel whose output alphabet is the same as the
input alphabet is said to make hard decisions, whereas a channel
that uses a larger alphabet at the output than at the input is said
to make soft decisions.
Note: In general, a channel which gives more differentiated output
information is preferred (and has more capacity) than one which
has the same number of output symbols as there are input
symbols, as for example the BSC.
Definition: A decoder that operates on hard decision channel
outputs is called a hard decision decoder, and a decoder that
operates on soft decision channel outputs is called a soft decision
decoder.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Example: Use again encoder #1, but this time with a soft
decision channel model with 2 inputs and 5 outputs as shown in
the following figure.
1
•
Input
X
0
•
•
1
•
!
•
∆
•
@
•
0
Output
Y
Fig.13 Discrete Memoryless Channel (DMC) with 2 Inputs and 5 Outputs
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
The symbols “@” and “!” at the channel output represent “bad”
0’s and “bad” 1’s, respectively, whereas “∆” is called an erasure
(i.e., it is uncertain whether ∆ is closer to a 0 or a 1, whereas a
bad 0, for example, is closer to 0 than to 1). The transition
probabilities for this channel are
p
Y |X
(v |c)
v =0
v =@
v =∆
v =!
v =1
0.5
0.06
0.2
0.1
0.14
0.14
0.1
0.2
0.06
0.5
c =0
c =1
After taking (base 2) logarithms
log2 [p
Y |X
(v |c)]
c=0
c=1
− log2 [minc p
Y |X
(v |c)]
v =0
v =@
v =∆
v =!
v =1
−1.00
−4.06
−2.32
−3.32
−2.84
−2.84
−3.32
−2.32
−4.06
−1.00
4.06
3.32
2.84
3.32
4.06
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Convolutional Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Using
µ(v |c) = α log2 [p
Y |X
(v |c)] − log2 [min p
Y |X
c
(v |c)]
with α = 1 and rounding to the nearest integer yields the bit
metrics
µ(v |c)
v =0
v =@
v =∆
v =!
v =1
c =0
c =1
3
0
1
0
0
0
0
1
0
3
The received sequence
v = (11, !@, @0, ∆0, 1!, 00, ∆0, 10, . . .) ,
can now be decoded using the Viterbi algorithm as shown in Figure
14 on the next page.
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes
Basic Definitions, Convolutional Encoders
Encoder State Diagrams
Viterbi Decoding Algorithm
Convolutional Codes
8
•
S3
10
S2
6
01 •
9
01
•
10
X
10
11
01 •
X
•
S1
•
6
11
1
S0 •
00
v:
11
0
•
00
0
•
1
!@
10
13
X •
12
01 •
00
11 •
10
11 •
14
00
11 X
X •
6
@0
01
10
10
X
00
11 X
11
01
10
00
17
X •
16
01 •
X
X 00
11 •
15
X •
00
11
∆0
X •
01
X
10
20
01 •
10
25
X •
23
01 •
00
00
11 •
22
11 •
23
00
X
•
11 X
00
22
00
01
10
10
X
X
16
1!
•
10
11 X
11
20
01
10
X
•
31
01 •
X
···
X 00
11 •
28
11
00
25
∆0
29
X •
X
•
28
10
Fig.14 Viterbi Decoder: R = 1/2, K = 3 Encoder, 2-Input, 5-Output DMC
Clearly, the Viterbi algorithm can be used either for hard or soft decision
decoding by using appropriate bit metrics. In this example the ML decision (up
to t = 8) is
ĉ = (11, 01, 00, 10, 10, 00, 10, 10, . . .) ,
corresponding to û = (1, 0, 1, 1, 0, 1, 1, 0, . . .).
Peter Mathys
ECEN 5682 Theory and Practice of Error Control Codes