Professional Documents
Culture Documents
2b
1 b+1
2(b+1)
H = .
..
..
.
1 b+d2 2(b+d2)
Design parameters:
(n1)b
(n1)(b+1)
..
...
(n1)(b+d2)
1
1
.
.
1
2 (n1)
2 4 2(n1)
,
..
..
..
...
2t 4t 2t(n1)
Each row of H is a row of the finite field Fourier transform matrix of size n.
Codewords are n-tuples whose spectra have 0s at 2t consecutive frequencies.
EE 387 Notes #7, Page 2
Reed-Solomon codes
Reed-Solomon codes are BCH codes where decoder alphabet = channel alphabet.
Minimal polynomials over GF(Q) of elements of GF(Q) have degree 1.
Thus the generator polynomial of a t-error-correcting Reed-Solomon code is
g(x) = (x b)(x b+1) (x b+2t1)
= g0 + g1x + + g2t1x2t1 + x2t ,
where g0, g1 . . . , g2t1 are elements of GF(Q).
The minimum distance is 2t + 1, independent of the choice of and b.
Usually is chosen to be primitive in order to maximize blocklength.
The base exponent b can be chosen to reduce encoder/decoder complexity.
There are no prime trinomials of degree 8; in fact, there are no prime trinomials of degree 8m for any m .
1
0
"
#
0
0
1 2 3 14
H=
=
3
6
9
42
1
1
0
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
1
0
1
1
1
0
0
1
1
1
1
0
1
1
0
1
0
0
0
0
0
1
1
0
0
0
1
1
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
0
1
1
0
1
0
1
1
0
1
1
Since rows of H are linearly independent, there are 28 syndromes. There are
1+
15
1
15
2
error patterns of weight 2. This code does not achieve the Hamming bound.
A systematic parity-check matrix can be found using the generator polynomial.
There is no (15,8) binary linear block code with minimum distance 5 .
EE 387 Notes #7, Page 5
c(x)
Modified error trapping can be used for (15, 7, 5) binary BCH code.
Any 2 -bit error pattern can be rotated into the 8 check positions. However, two error trapping passes may be needed.
1
0
2
14
1
1
3
6
42
H = 1 =
0
5
10
70
0
1
0
0
0
1
0
0
0
0
0
1
0
1
1
0
0
0
1
0
0
0
1
1
1
1
1
0
0
0
0
1
0
1
0
1
1
0
0
0
1
1
0
0
1
1
1
1
0
1
1
0
0
1
1
0
1
0
0
0
1
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
0
1
0
1
0
0
1
0
1
1
1
1
0
0
1
0
1
1
1
1
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
1
0
0
1
1
1
0
0
0
1
1
1
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
0
1
1
0
1
0
1
0
1
1
0
1
0
1
0
H=
1
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
0
1
0
0
0
1
0
0
1
0
1
1
1
1
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
1
1
0
1
0
1
0
0
1
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
0
0
1
0
0
1
0
1
0
0
0
1
1
0
0
0
0
1
1
0
1
1
0
0
1
1
1
1
0
1
0
1
1
0
1
0
1
1
1
1
0
1
0
1
0
1
1
1
1
0
0
0
1
0
1
0
0
1
0
1
1
0
0
1
1
1
0
0
0
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
0
1
0
0
1
0
0
1
0
0
0
1
1
1
1
0
1
1
0
0
0
0
1
0
1
0
1
1
1
1
1
1
0
0
1
0
1
1
0
1
1
1
1
1
1
0
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
1
0
0
1
0
0
1
1
0
1
1
1
1
0
1
1
0
0
0
1
1
1
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
0
1
0
0
1
0
0
0
0
1
1
0
1
0
0
1
0
0
0
1
0
1
0
0
0
1
1
0
1
0
0
0
0
1
1
1
0
1
0
1
0
1
0
0
0
0
1
1
1
0
0
1
1
1
1
1
0
0
0
1
0
1
1
0
1
0
1
0
1
1
1
1
1
0
0
0
1
1
1
0
1
0
1
0
0
1
1
0
0
1
1
1
0
1
0
0
0
1
1
1
0
1
1
1
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
0
1
1
1
0
0
0
1
1
0
1
1
0
1
0
1
1
1
0
1
1
0
1
0
1
1
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1 2 14
1 2 4 28
H =
1 3 6 42
1 4 8 56
The three possible channel alphabets are GF(2) , GF(22) , and GF(24):
The BCH codes corresponding to these channels alphabets are
(15,7) binary BCH code over GF(2) (presented earlier in lecture)
(15,9) BCH code over GF(4)
(15,11) Reed-Solomon code over GF(16)
The blocklengths in symbols are 15; blocklengths in bits are 15, 30, and 60.
EE 387 Notes #7, Page 10
1
0
0
H[22] =
1
1
0
1
1
1
1
1
0
1
1
1
1
0
1
0
1
0
1
0
1
0
1
0
The final two rows, corresponding to conjugate 4 over GF(4), are redundant.
(Row 7 equals row 1 + row 2, while row 8 equals row 2).
Thus g(x) = f1(x)f2(x)f3(x) has degree 6 (15, 9, 5) code over GF(4) .
EE 387 Notes #7, Page 12
1
0
0
0
0
H[21] =
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
0
1
0
1
1
0
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
1
0
1
0
1
1
1
1
1
1
1
0
0
1
0
1
0
1
1
1
1
0
1
0
0
0
1
1
0
1
1
1
0
1
0
0
0
0
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
0
1
0
1
1
1
0
1
1
0
0
1
0
0
1
1
1
0
1
1
1
0
1
0
0
1
0
0
0
1
0
1
0
0
1
0
0
1
0
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
1
0
0
1
1
0
1
0
0
0
1
1
1
0
0
1
1
1
1
1
0
1
0
0
0
1
1
0
0
1
1
1
1
1
0
1
0
1
0
0
1
1
0
0
0
1
1
0
1
1
0
1
1
1
0
1
0
1
1
1
0
1
1
0
0
1
1
1
1
1
1
1
When we delete the redundant rows of H , we obtain the parity-check matrix of the
(15, 7) 2EC BCH code over GF(2) shown earlier.
EE 387 Notes #7, Page 13
Vandermonde matrix
Definition: The Vandermonde matrix V (X1, . . . , X) is
1
1
1
X1
X2
X
V =
..
..
...
.
..
X11 X21 X1
One application of Vandermonde matrices is for polynomial interpolation.
Given values of f (x) of degree 1 at distinct points X1, . . . , X ,
Yi = f (Xi) = f0 + f1Xi + + f1X 1
(i = 1, . . . , )
(Xi Xj ) =
i>j
i1
Y
Y
(Xi Xj ) .
i=1 j=1
( 1)
=
.
2
2
Y
Xii1 = 1 X2 X32 . . . X1
i=1
equals 1 in both the determinant and the above formula for the determinant.
EE 387 Notes #7, Page 15
BCH bound
Theorem: A BCH code whose parity-check matrix has d 1 rows has dmin d.
Proof : Every set of d 1 columns of H is linearly independent over GF(q m).
To see this, consider a submatrix consisting of columns i1, . . . , id1 .
i1 b
id1b
i1(b+1)
id1(b+1)
det
=
..
..
...
i1(b+d2)
id1(b+d2)
id1
i1
i1 b
id1b
(
) det .
6= 0
..
...
.
(d2)i1
(d2)id1
0
01
4C
9D
46
5F
FD
D9
81
85
A8
E6
E3
82
51
12
2C
1
02
98
27
8C
BE
E7
AF
1F
17
4D
D1
DB
19
A2
24
58
2
04
2D
4E
05
61
D3
43
3E
2E
9A
BF
AB
32
59
48
B0
3
08
5A
9C
0A
C2
BB
86
7C
5C
29
63
4B
64
B2
90
7D
4
10
B4
25
14
99
6B
11
F8
B8
52
C6
96
C8
79
3D
FA
5
20
75
4A
28
2F
D6
22
ED
6D
A4
91
31
8D
F2
7A
E9
6
40
EA
94
50
5E
B1
44
C7
DA
55
3F
62
07
F9
F4
CF
7
80
C9
35
A0
BC
7F
88
93
A9
AA
7E
C4
0E
EF
F5
83
8
1D
8F
6A
5D
65
FE
0D
3B
4F
49
FC
95
1C
C3
F7
1B
9
3A
03
D4
BA
CA
E1
1A
76
9E
92
E5
37
38
9B
F3
36
10
74
06
B5
69
89
DF
34
EC
21
39
D7
6E
70
2B
FB
6C
11
E8
0C
77
D2
0F
A3
68
C5
42
72
B3
DC
E0
56
EB
D8
12
CD
18
EE
B9
1E
5B
D0
97
84
E4
7B
A5
DD
AC
CB
AD
13
87
30
C1
6F
3C
B6
BD
33
15
D5
F6
57
A7
45
8B
47
14
13
60
9F
DE
78
71
67
66
2A
B7
F1
AE
53
8A
0B
8E
15
26
C0
23
A1
F0
E2
CE
CC
54
73
FF
41
A6
09
16
01
1 2 254
1 2 4 508
H =
1 3 6 752
1 4 8 1016
Degree
4
8
12
16
Polynomial coefficients
01 1E D8 E7 74
01 D6 01 DD 0B 98 98 98 D7
01 01 00 D7 00 00 00 D6 D7 D7 01 D7 01
1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1
EE 387 Notes #7, Page 19
c(x)
Syndrome s(x) mod g(x) used for error detection has a similar circuit.
m7
0
1
2
3
4
5
6
7
0
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
00000010
00000001
10111000
0 1 0 1 1 1 0 0 6
00101110
00010111
10110011
11100001
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
00011110
00001111
10111111
1 1 1 0 0 1 1 1 78
11001011
11011101
11010110
01101011
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
01101100
00110110
00011011
1 0 1 1 0 1 0 1 249
11100010
01110001
10000000
00000000
0 1 2 3 4 5 6 7
11110000
01111000
00111100
0 0 0 1 1 1 1 0 75
00001111
10111111
11100111
11001011
0 1 2 3 4 5 6 7
Reed-Solomon encoder
A Reed-Solomon code with d = 8 has the following generator polynomial:
g(x) = (x + 3)(x + 2)(x + 1)(x + 1)(x + +1)(x + +2)(x + +3)
= x7 + 6bx6 + 09x5 + 9ex4 + 9ex3 + 09x2 + 6bx + 1
Since the reciprocals of its zeroes are also zeroes, g(x) is its mirror image.
Thus the encoder corresponding to g(x) has only 3 distinct scalers.
m(x)
9e
09
6b
c(x)
(1xXi)
i=1
X 1 = i1 , . . . , X = i
error magnitudes:
Syndrome equations
Error locators are elements of the decoder alphabet GF(q m).
Error magnitudes are elements of the channel alphabet GF(q).
Important special case: Yi = 1 for channel alphabet GF(2).
For today, assume narrow-sense BCH code (b = 1) with d = 2t + 1.
Partial syndromes are constants in system of 2t equations in 2 unknowns:
S1 = Y 1 X 1 + + Y X
S2 = Y1X12 + + Y X2
..
S2t = Y1X12t + + Y X2t
This is an algebraic system of equations of degree 2t.
Goal: reduce to one-variable polynomial equation with solutions.
Error-locator polynomial
The error-locator polynomial (x) is defined by
(x) = (1 xX1)(1 xX2) (1 xX )
=
=
(1 xXi)
i=1
(Xi)
i=1
(x Xi1)
i=1
= 1 + 1 x + + x .
The zeroes of (x) are X11, . . . , X1 the reciprocals of error locators.
The degree of (x) is the number of errors.
elegant!
j = 1, . . . , 4
Suppose two errors. Then zeroes of (x) = 1 + 1x + 2x2 are X11, X21 .
0=1+
1X11
0=1+
1X21
2X12
2X22
Y1 X13
S2
S1
S3
S2
=
.
S2 S3 1
S4
S4 + S3 1 + S3 2 = 0
S2 S3 + S1 S4
,
S1S3 + S22
2 =
S32 + S2S4
.
S1S3 + S22
S2
S1
x X11 =
S1
S2
If S2 6= 0 then the single error locator is the reciprocal of the zero of (x):
Y1X12
S2
=
X1 =
S1
Y 1 X1
Error magnitude is obtained from S1 = Y1X1 :
Y1 =
S2
Y 2X 2
S1
= 1 = 1 21 .
X1
S2
Y 1 X1
PGZ in general
By definition of the error locator polynomial, (Xi1) = 0:
1 + 1Xi1 + + Xi = 0
(i = 1, . . . , )
X
i=1
YiXij+
+ 1
YiXij+1
+ +
i=1
YiXij = 0
i=1
S+1
S1 S2
S
S2 S3 S+1 1 S+2
.
..
..
...
.. = ..
.
S2
1
S S+1 S21
S1
S2
S2
S3
M =
..
...
..
S S+1
S
S+1
..
.
S21
Lemma: Suppose that there are t symbol errors. Then M is nonsingular, but
M is singular for > .
Matrices that are constant along anti-diagonals are called Hankel matrices.
EE 387 Notes #7, Page 33
1
Y
X
Y
X
i
i
i
i
P 1
S1
S
P1
+1
2
Y
X
Y
X
i
i
.
.
.
i
1
1
i
..
.. =
M = ..
...
.
...
P ..
P
S S21
21
1 Yi Xi
1 Yi Xi
1
Y1 X1 Y X
X
X
1
.
.
.
.
.
.
.
.
.
..
=
...
...
.
Y1X1 YX
X11 X1
1
Y1 X1
0
1 X11
... ..
... ... . . .
...
...
...
= ...
.
0
Y X
X11 X1
1 X1
(X 1 )
i
, is a closed form solution for step 5.
(X 1 )
i
1
1
1
H=
1
1
1
1
1
1
1
2 3
n1
2 4 6 2(n1)
3 6 9 3(n1)
4 8 12 4(n1)
5 10 15 5(n1)
=
=
=
=
=
=
Y1
Y 1 X1
Y1X12
Y1X13
Y1X14
Y1X15
+ Y2
+ Y 2 X2
+ Y2X22
+ Y2X23
+ Y2X24
+ Y2X25
+ Y3
+ Y 3 X3
+ Y3X32
+ Y3X33
+ Y3X34
+ Y3X35
where X1, X2, X3 are error location numbers and Y1, Y2, Y3 are error magnitudes.
The coefficients of the error locator polynomial (x) satisfy the linear equations:
S3
3
S0 S1 S2
S1 S2 S3 2 = S4
S5
1
S2 S3 S4
EE 387 Notes #7, Page 37
X 2 = i2 ,
X 3 = i3 .
Y2 =
Y3 =
Starting from the partial syndromes S0, S1, . . . , S5 , approximately 30 Galois field
multiplications and 3 Galois field divisions are needed to perform decoding.
This estimate does not count the effort needed to find the zeroes of (x).
Horners method:
5
r(x)
Multiplication by
, 3 uses matrices:
(5 + 2 + 1 = 0)
S1
0
0
M = 0
0
1
1
0
0
0
0
0
1
0
0
1
0
0
1
0
0
0
0
0 ,
1
0
S3
M3
0
0
= 1
0
0
0
0
0
1
0
0
0
1
0
1
1
0
0
1
0
0
1
0
0
1
Circuit for
r() and r(3)
r(x)
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
10000000
01000000
00100000
00010000 0
00001000 a
00000100
00000010
00000001
0 1 2 3 4 5 6 7
r0
r7
0 1 2 3 4 5 6 7
01000000
00100000
00010000
00001000 1
00000100 a
00000010
00000001
10111000
0 1 2 3 4 5 6 7
00100000
00010000
00001000
0 0 0 0 0 1 0 0 a2
00000010
00000001
10111000
01011100
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
00010000
00001000
00000100
00000010 3
00000001 a
10111000
01011100
00101110
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
Chien search
The Chien search is a clever method for finding zeroes of the error locator
polynomial by brute force.
The Chien search evaluates (i) for i = 1, 2, . . . , n using constant
multiplications instead of general multiplications.
Key idea: use state variables Q1, . . . , Q such that at time i
Qj = j ji ,
j = 1, . . . , .
i = 1, . . . , n .
Qj = (i) 1.
j=1
1
1
/ERRLOC
2t
1
1
ERRLOC0 (ERRLOC1)
/ERRLOC0
/ERRLOC1
This circuit is more efficient than two separate copies of the Chien search engine
because the memory storage elements are shared.
EE 387 Notes #7, Page 44
/ERRLOC1
/ERRLOC0
The cascade of two scalers for i may be slightly slower than one scaler for 2i .
Forney Algorithm
Consider a BCH code defined by the zeroes b, b+1, . . . , b+2t1 .
Forney algorithm: the error magnitude Yi corresponding to error locator Xi is
Xi1b(Xi1)
Yi =
,
(Xi1)
where (x) is the formal derivative of the error-locator polynomial,
(x) =
iixi1 ,
i=1
In both cases, the left hand side is the coefficient of x+j1 in the polynomial
product S(x)(x).
We can define partial syndromes Si for every i > 0 . However, the decoder can compute only the first 2t values.
EE 387 Notes #7, Page 48
Formal derivative
We can obtain a closed formula for Yi in terms of (x), (x), and Xi .
First we need the notion of the formal derivative of a polynomial.
Definition: The formal derivative of
f (x) = f0 + f1x + f2x2 + + fnxn
is the polynomial
f (x) = f1 + 2f2x + 3f3x2 + + nfnxn1
Most of the familiar properties of derivatives hold. In particular, product rules:
(f (x)g(x)) = f (x)g(x) + f (x)g (x)
n
n
X
Y
Y
fi(x) =
fi(x)
fj (x)
i=1
i=1
j6=i
2t1
X
Sb+j xj
j=0
2t1
XX
YiXib+j xj
j=0 i=1
X
i=1
YiXib
2t1
X
Xij xj
j=0
Y
l=1
X
i=1
YiXib
1 (Xix)2t
1 Xi x
1 Xlx to compute S(x)(x).
EE 387 Notes #7, Page 52
X
YiXib
i=1
X
YiXib
i=1
1 (Xix)2t
1 Xi x
Y
Y
(1 Xlx)
l=1
(1 Xlx) 1 (Xix)
2t
l6=i
YiXib
i=1
(1 Xlx)
YiXib(Xix)2t
i=1
l6=i
(1 Xlx)
l6=i
2t
X
i=1
YiXib
(1 Xlx) .
l6=i
X
Y
(x) =
(Xl) (1 Xj x) .
(1 Xlx) =
l=1
l=1
j6=l
When we evaluate (x) at Xi1 , only one term in the sum is nonzero:
Y
(Xi1) = Xi (1 Xj Xi1) .
j6=i
Similarly, the value of (x) at Xi1 includes only one term from the sum:
(Xi1)
X
l=1
Thus
YlXlb
Y
j6=l
(1
Xj Xi1)
YiXib
(1 Xj Xi1) .
j6=i
1
YiXib
(Xi1)
(b1) (Xi )
=
.
Yi = Xi
Xi
(Xi1)
(Xi1)
b1
m
m
1
2
m
Yi
(i)
m
1
m 2
(i)
Unless Si = 0 for i t , and not all Si = 0 , in which case an uncorrectable error has occurred.
EE 387 Notes #7, Page 57
t(x)
2t
X
Sj xj1 ;
j=1
1 0
A(x)
;
0 1
s(x)
Q(x)
;
t(x)
s(x)
0
1
s(x)
;
t(x)
1 Q(x) t(x)
0
1
A(x)
A(x) ;
1 Q(x)
4. Finalize:
A22(0);
The quotient
s(x)
t(x)
(x) 1A22(x);
is defined by s(x) =
(x) 1t(x) ;
s(x)
t(x) + r(x) , deg r(x) < deg t(x) .
t(x)
EE 387 Notes #7, Page 58
S S S S S S S S S S S S
1
q1 q0
q1 q0
q1 q0
q1 q0
q1 q0
q1 q0
q1 q0
(x)
(x)
Qi(x)
CE A7
ai(x)
00
01
CE A7
00
28
f9
db
00
1d
3f
eb
00
d2
05
a6
00
52
34
87
00
5d
04
bc
00 00 00 01
19 57 ec
76 66
4a
Qi(x)
1c 6d
6e d8
ae e1
ai(x)
1c 6d
5d 97 17
d3 f2 ad 2b
(x) = 10 b3 f5 , (x) = 01 5c d7 4f
Op count: mul = 91 , div = 13
EE 387 Notes #7, Page 60
00
19
A4
DA
3E
2B
33
E2
00
50
36
D8
51
5F
CC
0D
00
23
F1
39
46
D7
1F
83
00
BB
B0
2E
82
ED
E2
78
00
AF
C5
52
BA
F3
84
DB
00
AE
75
3D
35
45
07
00
F6
08
A6
21
C8
00
41
79
DC
65
00 00 00 01
CB 0A AB
E9 6B
51
Qi(x)
A7
8B
2D
0C
69
AD
3C
71
5C
4F
5C
47
ai(x)
00
01
A7
DD
2D
1C
25
3B
3C
3C
23
8C
55
EB
B3
06
5F
7C
8C
23
36 C4
53 6B D2
C9 FE 8E BA
(x) = 04 F4 16 CC F2 BA , (x) = 01 7C 95 B7 09 DA 82
Op count: mul = 169 , div = 25
S1 S2
S3
S
S
S4 S+1
2 S3
S5 S+2 ,
M = S3 S4
.
..
..
..
...
.
S1 S2
...
...
S2
S1
...
(k)
i = 0, . . . , k L
1
xkr (r)(x)
(r)
When the degree of (x) has increased, we save (k1)(x) for future steps:
T (x) =
(k) (x) is called the discrepancy at step k .
1
x(k1)(x)
(k)
/* "connection polynomial" */
/* L always equals deg (x) */
/* "correction polynomial" */
/* Sk + 1Sk1 + + LSkL1 */
i=0
if ( == 0 ) {
N (x) = (x) ;
} else {
N (x) = (x) T (x) ;
if ( L < k L ) {
L = k L;
T (x) = 1(x) ;
}
}
T (x) = xT (x) ;
(x) = N (x) ;
Berlekamp-Massey tableau
The following figure shows typical computation for 6EC BCH code.
k
(x)
T (x)
0
T T
T T
T T T
T T T
T T T T
T T T T
T T T T T
T T T T T
10
T T T T T T
11
T T T T T T
12
T T T T T T T
(k)(x)
01 6F
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
01 0A
T (k)(x)
00 32
00 00 32
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
32
00
00
00
00
00
00
00
00
00
32
00
00
00
00
00
00
00
00
32
00
00
00
00
00
00
00
32
00
00
00
00
00
00
32
00
00
00
00
00
32
00
00
00
00
32
00 32
00 00 32
00 00 00 32
(k)(x)
01 B0
01 AB
01 AB A6
01 44 87
01 44 87
01 44 87
01 44 87
01 44 87
01 44 87
01 44 87
01 44 87
01 44 87
T (k)(x)
00 87
00 00 87
00 6F 16
00 00 6F
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
00 00 00
16
6F
00
00
00
00
00
00
00
16
6F
00
00
00
00
00
00
16
6F
00
00
00
00
00
16
6F
00
00
00
00
16
6F
00
00
00
16
6F 16
00 6F 16
00 00 6F 16
(k)(x)
01 BC
01 F2
01 F2 7E
01 D9 9D
01 D9 89
01 88 05
01 88 88
01 9A ED
01 9A 06
01 DF 87
01 DF BA
01 62 B4
74
58
CC
96
2D
96
05
E9
7A
23
43
D9
06
48
T (k)(x)
00 95
00 00 95
00 98 F4
00 00 98
00 AC 6F
00 00 AC
00 C9 66
00 00 C9
45
00 77 57
C2
00 00 77
50 B4 00 5E E6
F7 57 00 00 5E
F4
AD
6F
CA
66
E6
57
BB
E6
AD
3A
CA
09
E6
6C
BB
3A
DF
09 DF
3F 9E
6C 3F 9E
(k)(x)
01 F1
01 CC
01 CC 24
01 9D D9
01 9D 0A
01 04 1B
01 04 9C
01 8F 8A
01 8F 1E
01 0B D8
01 0B 36
01 0F 1A
A2
64
A5
51
3B
53
CA
8D
BD
66
A6
10
F8
A9
T (k)(x)
00 E7
00 00 E7
00 CE 0B
00 00 CE
00 30 6F
00 00 30
00 4C 2D
00 00 4C
F3
00 F3 04
1B
00 00 F3
B6 D7 00 57 7B
F6 BB 00 00 57
0B
33
6F
3A
2D
1C
04
37
7B
33
B2
3A
6E
1C
84
37
B2
0D
6E 0D
19 62
84 19 62
3
2
1
0
0
=4
=3
2
1
0
0
k
EE 387 Notes #7, Page 72
T (x)
1x(x)
Storage requirements: 2t decoder alphabet symbols, for (x) and T (x).
Worst case running time (multiply/divide):
2 + 4 + + 4t 4t2
The running time with a fixed number of multipliers is O(t2).
If t multipliers are available, the algorithm can be performed in O(t) steps.
Some authors refer to this as linear run time.
EE 387 Notes #7, Page 73
1
u. Then (x) = 0 becomes
2
(x) = 2x2 + 1x + 1
2
1
1
u + 1
u +1
= 2
2
2
21
2
21 2 21
2
u + u+1 =
u +u+ 2
=
2
2
2
1
The simplified equation is of the form u2 + u + c = 0.
It can be solved using the precomputed pseudo-inverse of S + I .
If U1 is a zero of u2 + u +
X2 =
1
1
(U1 + 1) = X1 +
.
2
2
Erasure correction
Erasures are special received symbols used to represent uncertainty. Examples:
Demodulator erases a symbol when signal quality is poor.
Lower level decoder erases symbols of codeword that has an uncorrectable error.
Theorem: A block code can correct up to d 1 erasures.
Proof : If the number of erasures is less than d , then there is only one codeword
that agrees with the received sequence.
c1
r
11111111
00000000
00000000
11111111
00000000
11111111
00000000
11111111
< d erasures
c2
H = 0
0
0 0 1 0 1 1
1 0 1 1 1 0 .
0 1 0 1 1 1
The parity-check matrix yields three equations for the erased bits x and y:
0 = 10 + 00 + 0x + 1y + 00 + 11 + 10 = 1 + y
0 = 00 + 10 + 0x + 1y + 10 + 11 + 00 = 1 + y
0 = 00 + 00 + 1x + 0y + 10 + 11 + 10 = 1 + x
Therefore x = 1, y = 1 and the decoded codeword is c = [ 0 0 1 1 0 1 0 ].
l = 1, . . . , .
= E1U1b
+ E2U2b
+ + EUb
S2
= E1U1b+1 + E2U2b+1 + + EUb+1
..
.
Sd1 = E1U1b+d2 + E2U2b+d2 + + EUb+d2
This system of linear equations has a unique solution for E1, E2, . . . , E because
the coefficient matrix is column-scaled Vandermonde.
The Forney algorithm provides a faster solution.
EE 387 Notes #7, Page 78
l=1
(1 Ulx) = 1 + 1x + 2x2 + + x
Qi
(1 Ulx) = (1 Uix)
l=1
Q i1
l=1
(1 Ulx)
1
2 (
1).
Ul1b
(Ul1)
,
(Ul1)
l = 1, . . . , .
row checks
subframe 1
subframe 2
subframe 3
checkframe 1
111
000
000
111
000
111
000
111
checkframe 2
r0
0000 ...
r1
1111 ...
???? ...
21 + 12 (d 1 ) =
1
2 (d
1) .
.
This shows that r is within the decoding sphere of c
EE 387 Notes #7, Page 82
l=1 (1
Ulx).
(Xi1)
,
(Xi1)
El = Ul1b
(Ul1)
(Ul1)
for i = 1, . . . , and l = 1, . . . , .
EE 387 Notes #7, Page 83
t = 1, 2, . . . , T .
checks
deleted
Then use errors-and-erasures decoding, where missing check symbols are erased.
(x) = S(x)
S2
(1 + ix)
l=1
S3
1
S4
1
T1
S5
1
T2
S6
1
T3
S7
1
S8
T4
EE 387 Notes #7, Page 86