Professional Documents
Culture Documents
Lecture Notes 5 5510 - 2017
Lecture Notes 5 5510 - 2017
Lecture Notes 5 5510 - 2017
Communication Systems
Lecture 5
Error Control Coding II
Prof. Yonghui Li
Lecture Outline
Satellite
Error
control
coding
Earth
Downlink
station
channel
antenna
Speech Channel Demodu
decoder decoder -lator
3
Decoding of Convolutional Codes
4
Decoding of Convolutional Codes
10 10 10 10 10
0/01 0/01 0/01 0/01
0/01 1/00 1/00 1/00
10 10 10 10 10
0/01 0/01 0/01 0/01
0/01 1/00 1/00 1/00
Example (continued):
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r=( 01, 11, 10, 10, 00, 11, 10)
12
The Viterbi Decoding Algorithm
Example (continued):
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
13
The Viterbi Decoding Algorithm
Example (continued): Path metrics shown above a node
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
14
The Viterbi Decoding Algorithm
Example (continued):
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
15
The Viterbi Decoding Algorithm
Example (continued):
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
16
The Viterbi Decoding Algorithm
Example (continued):
2
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
17
The Viterbi Decoding Algorithm
Example (continued):
2
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1
10 10 10 10 10
0/01 0/01 0/01 0/01
0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
18
The Viterbi Decoding Algorithm
Example (continued):
2
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
19
The Viterbi Decoding Algorithm
Example (continued):
2
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
20
The Viterbi Decoding Algorithm
Example (continued):
2
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
21
The Viterbi Decoding Algorithm
Example (continued):
2 4
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
22
The Viterbi Decoding Algorithm
Example (continued):
2 4
1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1 1/10 1/10
1 1
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
23
The Viterbi Decoding Algorithm
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
24
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10
3 10 10 10
0/01 0/01 0/01 0/01 0/01
2 1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
25
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1
10 10
3 10 10 10
0/01 0/01 40/01 0/01 0/01
2
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
26
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
2 1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
27
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
28
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
21/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
29
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
30
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
31
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
32
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
33
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
34
The Viterbi Decoding Algorithm
Example (continued):
2 1
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
2 1/00 2 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
35
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
36
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
37
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 2 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
38
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 40/01 0/01
21/00 2 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
39
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 21/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
40
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 2 1/00 11/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
41
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01 0/01
21/00 2 1/00 1 1/00
1/11 1/11 01 01 5 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
42
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 2 1/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
43
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 2 1/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
44
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 2 1/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
45
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
46
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
47
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
48
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
49
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
50
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
51
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 50/01
2 1/00 21/00 1 1/00
1/11 1/11 01 01 01 1/11 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
52
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
53
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
54
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
55
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
56
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 21/00 1 1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
57
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
58
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 5
1/00 4
1/11 1/11 01 01 01 01 01
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
59
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1 5
1/00 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3
00 0/00 00 0/00 0/00 0/00
00 00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
60
The Viterbi Decoding Algorithm
Example (continued):
2 1 3 4
1/01 1/01
11 11 11 11
0/10 0/10 0/10
1/10 1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3
00 0/00 00 0/00 0/00 0/00
00 00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
61
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
1/00 2 1/00
2 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3
00 0/00 00 0/00 0/00 0/00
00 00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
62
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3 4
00 0/00 00 0/00 0/00 0/00
00 00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
63
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 21/00 1 4
1/00
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3 4
00 0/00 00 0/00 0/00 0/00
00 00 00 00
5
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
64
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01
0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11 0/11
1 3 3 4
00 0/00 00 0/00 0/00
00 00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
65
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11 0/11
1 3 4
00 0/00 00 0/00
00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
66
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00
1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11
1 4
00 0/00 00 0/00
00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
67
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
21/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11
1 4
00 0/00 00 0/00
00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
68
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11
1 4 3
00 0/00 00 0/00
00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
69
The Viterbi Decoding Algorithm
Example (continued):
2 1 3
1/01
11 11 11
0/10 0/10 0/10
1/10 1/10 1/10
1 1 3 3 1
10 10 10 10 10
0/01 0/01 0/01
2 1/00 2 1/00 1 1/00 4
1/11 1/11 01 01 01 01
2 01
0/11 0/11
1 4 3
00 0/00 00 0/00
00 00
5
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
70
The Viterbi Decoding Algorithm
Example (continued):
1
11
0/10
1/10
1 1
10 10
0/01
1 1/00
01
1/11 2 01
1 0/11
3
00 0/00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
71
The Viterbi Decoding Algorithm
Example (continue):
1
11
1/10
1 1
0/10
10 10
1/00
1 0/01
01
1/11 2 01
0/11
1 3
0/00
00 00 00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( 01, 11, 10, 10, 00, 11, 10)
72
The Viterbi Decoding Algorithm
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( -2 ,1, 2 ,2, -3, 3, 1, 1, -1 ,-1, 3 ,-1, 1, -2)
73
The Viterbi Decoding Algorithm
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( -2, 1, 2 ,2, -3, 3, 1, 1, -1 ,-1, 3, -1, 1, -2)
74
The Viterbi Decoding Algorithm
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( -2, 1, 2 ,2, -3, 3, 1, 1, -1, -1, 3, -1, 1, -2)
d E 2 (2 1) 2 (1 1) 2 32 02 9
75
The Viterbi Decoding Algorithm
Euclidean distance as the branch and path metrics for AWGN
channel: 1/01 1/01 1/01
11 11 11 11
0/10 0/10 0/10 0/10
1/10 1/10 1/10 1/10
9
10 10 10 10 10
0/01 0/01 0/01 0/01 0/01
1/00 1/00 1/00
S0 S1 S2 S3 S4 S5 S6 S7
r = ( -2 1, 2, 2, -3, 3, 1, 1, -1, -1, 3, -1, 1, -2)
76
Example of the Viterbi Algorithm
If the received sequence has a finite length, it is decoded by
appending 2 zero’s (in general m zeros) to the end of the
message sequence to clear the register.
If the received sequence is very long and continuous, the
decision depth is fixed to 10 (in general 5m). After processing
each new branch the decoder moves back 10 branches and
decodes a message block on the path with the smallest metric.
77
Error Performance for Convolutional Codes
with Hard Decision Decoding
78
Error Performance for Convolutional Codes
with Hard Decision Decoding
On a BSC channel the transition probability for QPSK and
BPSK is given by
2E 1 E /No
p Q e
N0 2
where E is the energy per transmitted uncoded bit and No is
the one-sided noise power spectral density and the
approximation applies for large E /N0.
For a code of rate R = k/n, the energy per message bit is
E
Eb
R
For large Eb/N0, the bit-error probability with hard decision
d free
decoding is 1 ( Rd /2)( Eb / No )
Pb Bd free 2 2 e free
k 79
Error Performance of Convolutional Codes
with Soft Decision Decoding
80
Coding Gain of Convolutional Codes
81
Coding Gain of the (2,1,2) Convolutional
Code with Hard Decision Decoding
If the modulator output is quantised to 8 levels, the
coding gain of the soft-decision decoding is about 0.25
dB lower than for an unquantised demodulator output.
Example : The most widely used convolutional code is
the (2,1,6) code generated by the generator sequences
g (1) (1101101)
g ( 2) (1001111)
This code has dfree=10. The hard decision decoding
asymptotic coding gain is
Rd free
G 10 log10
2
10 log10 (10 / 4) 3.98dB
82
Coding Gain of the (2,1,2) Convolutional
Code with Soft Decision Decoding
G 10 log10 Rd free
10 log10 (10 / 2) 6.98dB
83
FEC Codes in Intelsat International
Business Services (IBS) Systems
84
Concatenated Codes
85
A concatenated coded system
86
Standard Concatenated Codes
87
Interleaving
89
Block Interleaver
Read in the interleaver row by row: x0, x1, x2,x3, x4, x5 , x6 , x7 , x8, x9,
x10, x11
Interleaved- transmitted column by column: x0, x3 , x6 ,x9 ,x1 ,x4 , x7, x10,
x 2, x 5, x 8, x 1 1
Transmission with a burst error: x0, x3 , x6 ,x9 ,x1 ,x4 , x7, x10, x2, x5, x8,
x1 1
Received codewords after deinterleaving: x0, x1, x2,
x 3, x 4, x 5 ,
x 6, x 7, x 8,
x9, x10, x11
One error in each codeword – easier to correct than a burst
90
Convolutional Interleaver
91
Error Performance of a Concatenated Error
Code Used in the NASA standard
92
Four Jupiter Moons
Galileo Photos
93
Binary Linear Block Codes: Review
v H T (0 0 0)
n-k
Let v = (1 1 1 0 0 1 0). .
v H T (000)
Syndrome and Error Detection
To test whether a received vector r contains
transmission errors, we compute the syndrome of r
s ( s0 , s1 , , sn k 1 ) r H T
If s = 0, r is a codeword, and r is assumed to be error-
free and accepted by the receiver.
If s 0, r is not a codeword and must contain
transmission errors.
LDPC Codes
98
Tanner Graph
99
Tanner Graph - Example
Example: Consider a (7,4) linear block code with parity check
matrix
1 0 0 1 0 1 1
H 0 1 0 1 1 1 0
0 0 1 0 1 1 1
It can be represented by the following Tanner graph
v0 v1 v2 v3 v4 v5 v6
Variable nodes
Check nodes
s0 s1 s2
100
Encoding of LDPC Codes
H row
operations
I n k PT
Collect the parity part and construct G
G P Ik
Encode
v c G
101
Decoding of LDPC Codes
102
LDPC Decoding by Bit-Flipping
1 0 0 1 0 1 1
s0 s1 s2
H 0 1 0 1 1 1 0
Check nodes 0 0 1 0 1 1 1
Transmitted code word – unknown to the receiver
u = (1 0 1 0 0 0 1)
103
LDPC Decoding by Bit-Flipping
Check nodes s ( s0 , s1 , s2 )
s0 s1 s2
104
LDPC Decoding by Bit-Flipping
s0 v0 v3 v5 v6 1; s1 v1 v3 v4 v5 1
s2 v2 v4 v5 v6 0
v0 v1 v2 v3 v4 v5 v6
Variable nodes v (1011001)
s0 1 s2 0
Check nodes s (110)
s1 1
106
LDPC Decoding by Bit-Flipping
Pass this new value of the variable node v3 to all check nodes
and recalculate parity check values.
They are all zeros now, which means that v is a codeword.
Send this codeword as the estimate of the transmitted
Codeword.
107
LDPC Decoding by Bit-Flipping
s0 0 s1 0 s2 0
108
Generalised Bit-flipping Decoding
Step 1: Compute parity-checks
- If all checks are zero, stop decoding
109
Sum-Product Algorithm (SPA)
Decoding is accomplished by passing messages
along the graph edges.
The messages on the edges that connect to the i-the
variable node vi , are estimates of Pr[ vi =1] (or some
equivalent information).
At the nodes the various estimates are combined in a
particular way and transmitted again.
v0 v1 v2 v3 v4 v5 v6
s0 s1 s2
110
Performance of LDPC Codes
n=106
R=1/2
111
LDPC Standards
DVB – S2 Standard
Applications: Satellite Video Broadcasting
LDPC
Codes
Block
Code Rates
Length
113