Subject Seminar
on
BCH Codes
(Bose , Chaudhuri, Hocquenghem Codes)
Presented by
Umamaheswar.V
4JN12LDS17
MTech DECS, III Sem
JAWAHARLAL NEHRU NATIONAL COLLEGE OF ENGINEERING,
SHIMOGA.
CONTENTS
first slide
CONTENTS
Introduction
Binary primitive BCH codes
Generator polynomial of Binary BCH Codes
Properties of Binary BCH Codes
Parity Check Matrix of the BCH code
Decoding procedures
Syndrome computation.
Determination of the error pattern.
Error correction.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
2 / 35
Introduction
Introduction
The Bose, Chaudhuri, and Hocquenghem (BCH) codes form a large
class of powerful random error-correcting cyclic codes.
This class of codes is a remarkable generalization of the Hamming
codes for multiple-error correction.
Binary BCH codes were first discovered by Hocquenghem in 1959 and
independently by Bose and Chaudhuri in 1960.
The original applications of BCH codes were restricted to binary
codes of length 2m 1 for some integer m. These were extended later
by Gorenstein and Zieler (1961) to the nonbinary codes with symbols
from Galois field GF(q).
Among the nonbinary BCH codes, the most important subclass is the
class of Reed-Solomon (RS) codes.
Among all the decoding algorithms for BCH codes, Berlekamps
iterative algorithm, and Chiens search algorithm are the most efficient
ones.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
3 / 35
Binary primitive BCH codes
Binary primitive BCH codes
For any integer m 3 and t < 2m1 there exists a primitive BCH code
with the following parameters:
n=2m - 1 Block length
n k mt Number of parity-check digits
dmin 2t + 1 Minimum distance
This code can correct t or fewer random errors in a block of 2m 1 digits.
The code is a t-error-correcting BCH code.
For example, for m=6, t=3
n=26 -1=63
n-k=6 3=18
dmin =23+1=7
This is a triple-error-correcting (63, 45) BCH code.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
4 / 35
Binary primitive BCH codes
Generator polynomial of Binary BCH Codes:
Generator polynomial of Binary BCH Codes
Let be a primitive element in GF (2m ) .
For 1 i 2t, let i (x) be the minimum polynomial of the field
element i .
The degree of i (x) is m or a factor of m.
The generator polynomial g(x) of a t-error-correcting primitive BCH
codes of length 2m -1 is given by
g (x) = LCM{1 (x), 3 (x)..., 2t1 (x)}
Since deg[i (x)]m,the deg[g(x)]mt. Hence the number of parity
-check digits n-k of the code is atmost mt.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
5 / 35
Binary primitive BCH codes
Generator polynomial of Binary BCH Codes:
Note that the generator polynomial of the binary BCH code is originally
found to be the least common multiple of the minimum polynomials
1 (x), 2 (x), 3 (x)..., 2t (x)
g (x) = LCM{1 (x), 2 (x), 3 (x)..., 2t (x)}
However, generally, every even power of in GF( 2m ) has the same
minimal polynomial as some preceding odd power of in GF( 22m ).As a
consequence, the generator polynomial of the t-error-correcting binary
BCH code can be reduced to
g (x) = LCM{1 (x), 3 (x)..., 2t1 (x)}
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
6 / 35
Binary primitive BCH codes
Example 1
Example:
Let be a primitive element of the Galois field GF(24 )given by table below
such that 1++4 =0 Find the generator polynomial of Single
error,double error and tripple error correcting BCH code.
The minimal polynomials of ,3 and 5 are
1 (x) = 1 + X + X 4
3 (x) = 1 + X + X 2 + X 3 + X 4
5 (x) = 1 + X + X 2
The single-error-correcting BCH codes of length n=24 -1=15 is generated
by g(x)=1 (x) since t =1.
The double-error-correcting BCH code of length 15 is generated by
g (x) = LCM{1 (x), 3 (x)}
Since 1 (x) and 3 (x) are two distinct irreducible polynomials,
g(x)=(1 + X + X 4 )(1 + X + X 2 + X 3 + X 4 )
=1 + X 4 + X 6 + X 7 + X 8
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
7 / 35
Binary primitive BCH codes
Example 1
Thus the code is a (15,7)cyclic code with dmin [Link] the weight of
the generator plolynomial is 5, the minimum distance of this code is
exactly 5.
The triple-error-correcting BCH code of length 15 is generated by
g (x) = LCM{1 (x), 3 (x), 5 (x)}
=(1 + X + X 4 )(1 + X + X 2 + X 3 + X 4 )(1 + X + X 2 )
=1 + X + X 2 + X 4 + X 5 + X 8 + X 10
Its a (15,5) cyclic code with dmin [Link] the weight of the generator
plolynomial is 7, the minimum distance of this code is exactly 7.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
8 / 35
Binary primitive BCH codes
Power
representation
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Umamaheswar.V
(III Sem [Link])
Example 1
Polynomial
4 Tuple
representation
representation
0
(0000)
1
(1000)
(0100)
2
(0010)
3
(0001)
1+
(1100)
+ 2
(0110)
2 + 3
(0011)
3
1++
(1101)
1 + 2
(1010)
3
+
(0101)
1 + 2 + 3
(1110)
+ 2 + 3
(0111)
2
3
1++ +
(1111)
1 + 2 + 3
(1011)
3
1+
(1001)
BCH Codes
November 11, 2013
9 / 35
Binary primitive BCH codes
Properties of Binary BCH Codes
Properties of Binary BCH Codes
Consider a t-error-correcting BCH code of length n =2m -1 with
generator polynomial g(x).
g(x) has as , 2 , 3 , ..., 2t roots, i.e.
g(i )=0 for 1 i 2t
The code polynomial v(x) is a multiple of g(x), v(x) also has
, 2 , 3 , ..., 2t as roots, i.e. v(i )=0 for 1 i 2t
We have a new definition for t-error-correcting BCH code:
A binary n-tuple v = (v0 , v1 , v2 , ..., vn1 ) is a code word if and only if
the poly.
v (x) = v0 + v1 x + ... + vn1 x n1
has , 2 , 3 , ..., 2t as roots
i.e. v (i ) = v0 + v1 i + v2 2i + ... + vn1 (n1)i =0
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
10 / 35
Binary primitive BCH codes
v = (v0 , v1 , v2 , ..., vn1 ).
Umamaheswar.V
(III Sem [Link])
1
i
2i
.
.
.
(n1)i
Properties of Binary BCH Codes
= 0 for 1 i 2t
BCH Codes
November 11, 2013
11 / 35
Binary primitive BCH codes
Parity Check Matrix of the BCH code
H matrix (Parity Check Matrix) of the BCH code
1 ... n1
1 (2 )...(2 )n1
H =
.
2t
2t
n1
1 ( )...( )
If v is a code word in the t-error-correcting BCH code, then
v HT = 0
j is a conjugate of i , then v(j )=0 iff v(i )=0(Thm. 2.11) j-th row of
H can be omitted. As a result H can be reduced to the following form :
1 2 ... n1
1 3 (3 )2 ... (3 )n1
H =
.
1 (2t1) (2t1 )2 ... (2t1 )n1
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
12 / 35
Binary primitive BCH codes
Parity Check Matrix of the BCH code
Note that the entries of H are elements in GF(2m ). Each element in
GF(2m ) can be represented by a m-tuple over GF(2). If each entry of H is
replaced by its corresponding m-tuple over GF(2) arranged in column
form, we obtain a binary parity-check matrix for the code.
EX 6.2
For Double-error-correcting (15,7) BCH code,find the parity check
matrix. Let be a primitive element in GF(24 )
The parity-check matrix is
1 2 3 4 5 6 7 8 9 10 11 12 13 14
H=
13 6 9 12 15 18 21 24 27 30 33 36 39 42
Using 15 =1 , and representing each entry of H by its 4-tuple,
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
13 / 35
Binary primitive BCH codes
H =
Parity Check Matrix of the BCH code
100010011010111
010011010111100
001001101011110
000100110101111
100011000110001
000110001100011
001010010100101
011110111101111
The t-error-correcting BCH code defined above indeed has minimum
distance at least 2t + 1.
The parameter 2t + 1 is usually called the designed distance of the
t-error-correcting BCH code.
The true minimum distance of a BCH code may or may not be equal
to its designed distance. There are many cases where the true
minimum distance of a BCH code is equal to its designed distance.
However, there are also cases where the true minimum distance is
greater than the designed distance.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
14 / 35
Binary primitive BCH codes
Parity Check Matrix of the BCH code
Binary BCH code with length n 6= 2m 1 can be constructed in the
same manner as for the case n = 2m 1.
Let be an element of order n in GF(2m ) ,n | 2m 1 and g(x) be the
binary polynomial of minimum degree that has , 2 , ..., 2t as roots.
Let 1 (x), 2 (x), ..., 2t (x) be the minimal poly. of , 2 , ..., 2t
respectively then
g (x) = LCM{1 (x), 2 (x), ..., 2t (x)}
n = 1, , 2 , ..., 2t are roots of X n + 1
g (x)|(x n + 1)
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
15 / 35
Binary primitive BCH codes
Parity Check Matrix of the BCH code
We see that g(x) is a factor of X n + 1.
The cyclic code generated by g(x) is a t-error-correcting BCH code of
length n.
The number of parity-check digits mt
dmin 2t + 1
If not a primitive element of GF (2m ), the code is called a nonprimitive
BCH code.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
16 / 35
Binary primitive BCH codes
Parity Check Matrix of the BCH code
Example 6.3:Consider the Galois field GF(26 ).The element =3 has order
n=[Link] t=[Link] g(x) be the binary polynomial of minimum degree that
has , 2 , 3 , 4 as roots.
The elements , 2 and 4 have the same minimal polynomial,which is
1 (x) = 1 + X + X 2 + X 4 + X 6
The minimal polynomial of 3 is
3 (x) = 1 + X 2 + X 3
Therefore,
g (x) = 1 (x)3 (x)
= 1 + X + X4 + X5 + X7 + X8 + X9
The (21,12) code generated by g(x) is a double-error- correcting
nonprimitive BCH code.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
17 / 35
Decoding of BCH Codes
Decoding of BCH Codes
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
18 / 35
Decoding of BCH Codes
Decoding
Suppose that a code word v (x) = v0 + v1 x + ... + vn1 x n1 is transmitted
and the transmission errors result :
r (x) = r0 + r1 x + r2 x 2 + ... + rn1 x n1
Let e(x) be the error pattern. Then
r (x) = v (x) + e(x)
Decoding procedure:
(1) Syndrome computation.
(2) Determination of the error pattern.
(3) Error correction.
(1)Syndrome computation:
The syndrome is 2t-tuple,
S = (S1 , S2 , ..., S2t ) = r .H T
Si = r (i ) = r0 + r1 i + ... + rn1 (i )n1 for 1 i 2t
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
19 / 35
Decoding of BCH Codes
Decoding
Computation:
Let i (x) be the minimum polynomial of i .
Dividing r(x) by i (x),we obtain
r (x) = ai (x)i (x) + bi (x)
Where bi (x) is the remainder and i (i )=0.
Then Si = r (i ) = bi (i )
Thus, the syndrome component Si can be obtained by computing bi (x)
with x=i .
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
20 / 35
Decoding of BCH Codes
Decoding
EX6.4
Let be a primitive element of the Galois field GF (24 ) such that
1 + + 4 = [Link] double-error-correcting (15, 7) BCH code. If r =
(100000001000000)is the received vector, find the syndrome components.
The corresponding received polynomial is
r (x) = 1 + x 8
The syndrome consists of four components:
S = (S1 , S2 , S3 , S4 )
The minimal polynomials for , 2 and 4 are identical and
1 (x) =2 (x) =4 (x) =1 + x + x 4
The minimal polynomials of 3 is
3 (x) =1 + x + x 2 + x 3 + x 4
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
21 / 35
Decoding of BCH Codes
Decoding
Dividing r (x) = 1 + x 8 by 1 (x) =1 + x + x 4 ,we obtain the remainder
b1 (x) = x2
Dividing r (x) = 1 + x 8 by 3 (x) =1 + x + x 2 + x 3 + x 4 ,we obtain the
remainder
b3 (x) = 1 + x3
Substituting , 2 and 4 into b1 (x),we obtain
S1 = b1 () = 2
S2 = b1 (2 ) = 4
S4 = b1 (4 ) = 8
Substituting 3 into b3 (x),we obtain
S3 = b3 (3 ) = 1 + 9 = 1 + + 3 = 7
S = (2 , 4 , 7 , 8 )
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
22 / 35
Decoding of BCH Codes
Decoding
(2)Determination of error pattern:
Since r(x)=v(x)+e(x) then Si = r (i ) = v (i ) + e(i ) = e(i ) for 1
i 2t
This gives a relationship between the syndrome and the error pattern.
Suppose
e(x) = xj1 +xj2 +....+xjv
0 j1 < j2 <...j3 < n
S1 =j1 +j2 +....+jv
S2 = (j1 )2 +(j2 )2 +....+(jv )2
..
.
S2t = (j1 )2t +(j2 )2t +....+(jv )2t
Where j1 , j2 ,....,jv are unknown.
Any method for solving these equations is a decoding algorithm for the
BCH codes.
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
23 / 35
Decoding of BCH Codes
Decoding
Once j1 , j2 ,....,jv have been found, the powers j1 , j2 , ..., jv tell us
the error locations in e(x).
If the number of errors in e(x) is t or less, the solution that yields an
error pattern with the smallest number of errors is the right solution.
For convenience,let l = jl , 1 l v be the error location numbers.
S1 =1 +2 +...+v
2
2
2
S2 =1 +2 +...+v
power sum symmetricfunction
..
S2t =12t +22t +...+v2t
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
24 / 35
Decoding of BCH Codes
Decoding
Define
(x) = (1 + 1 x)(1 + 2 x)...(1 + v x)
= 0 + 1 x + 2 x 2 + ... + v x v
Where (x)is called the error-location polynomial.
The roots of (x) are 11 , 21 , ..., v1 which are the inverse of the
error location numbers.
Coefficients of (x):
0 = 1
1 = 1 + 2 + ... + v
2 = 1 2 + 2 3 + ... + v 1 v
..
.
v = 1 2 ...v
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
25 / 35
Decoding of BCH Codes
Decoding
These coefficients are known as elementary symmetric functions. i0 s are
related to sj0 s by Newtons identities.
S1 + 1 = 0
S2 + 1 S1 + 22 = 0
S3 + 1 S2 + 2 S1 + 33 = 0
..
.
Sv + 1 Sv 1 + ... + v 1 S1 + v v = 0
Sv +1 + 1 Sv + ... + v 1 S2 + v S1 = 0
Note that, for binary case, 1+1=2=0,we have
i for odd i
ii =
0 for
even i
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
26 / 35
Decoding of BCH Codes
Decoding
Berlekamps iterative algorithm: To carry out the iteration of finding
(X ) , we begin with the following table:
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
27 / 35
Decoding of BCH Codes
Decoding
l is the degree of () (x).
If d = 0, then +1 (x) = (x)and l+1 = l .
If d 6= 0, find another row prior to the th row such that d 6= 0
and the number l in the last column of the table has the largest
[Link] +1 (x) is given by
(+1) (x) = () (x) + d d1 x () () (x)
and l+1 = max(l , l + ).
(+1)
In either case,d+1 = S+2 + 1
(+1)
S+1 + ... + l+1 S+2l+1
The polynomial 2t (x) in the last row should be the required (x).
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
28 / 35
Decoding of BCH Codes
Decoding
Ex 6.5: Let be a primitive element of the Galois field GF (24 ) such that
1 + + 4 = [Link] (15,5) triple-error-correcting BCH codes with
p(x) = 1 + x + x 4 .
Assume that the codeword of all zeros,
v = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
is transmitted and the received vector is
r = (0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0)
Then r (x) = x 3 + x 5 + x 12
Obtain the error polynomial and corrected vector.
Solution:
The minimal polynomials for , 2 and 4 are identical and
1 (x) =2 (x) =4 (x) =1 + x + x 4
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
29 / 35
Decoding of BCH Codes
Decoding
The minimal polynomials for 3 and 6 are identical and
3 (x) =6 (x) =1 + x + x 2 + x 3 + x 4
The minimal polynomials of 5 is
3 (x) =1 + x + x 2
1 (x) = 1 + X + X 4
3 (x) = 1 + X + X 2 + X 3 + X 4
5 (x) = 1 + X + X 2
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
30 / 35
Decoding of BCH Codes
Decoding
Dividing r(x) by 1 (x), 3 (x)and5 (x),respectively,we obtain the following
remainders:
b1 (x) = 1
b3 (x) = 1 + X 2 + X 3
b5 (x) = X 2
Substituting , 2 and 4 into b1 (x),we obtain the following syndrome
components:
S1 = S2 = S4 = 1
Substituting 3 and 6 into b3 (x),we obtain
S3 = 1 + 6 + 9 = 10
S6 = 1 + 12 + 18 = 5
Substituting 5 into b5 (x),we obtain
S5 = 10
S = (1, 1, 10 , 1, 10 , 5 )
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
31 / 35
Decoding of BCH Codes
(+1)
Decoding
(+1)
d+1 = S+2 + 1
S+1 + ... + l+1 S+2l+1
(+1)
()
(x) = (x) + d d1 x () () (x)
l+1 = max(l , l + )
S1 = 1
= 0; d0 = 1 6= 0
= 1
1 (0+1) (1)
(1) (x) = (0) (x) + d0 d1
x
(x) = 1 + 1.1.x.1 = 1 + x
l1 = max(l0 , l1 + ) = max(0, 0 + 0 + 1) = 1
l = 1 l1 = 1 1 = 0
(1)
d1 = S2 + 1 S1 = 1 + 1.1 = 0
(2) (x) = (1) (x) = 1 + x
l2 = l1 = 1
l = 2 l2 = 2 1 = 1
(2)
(2)
d2 = S3 + 1 S2 + 2 S1 = 10 + 1.1 + 0.1 = (1 + + 2 ) + 1 = 5
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
32 / 35
Decoding of BCH Codes
Decoding
d2 = 5 6= 0
=0
(3) (x) = (2) (x) + d2 d01 x (20) (0) (x) = 1 + x + 5 .1.x 2 .1
= 1 + x + 5 x 2
l3 = max(l2 , l0 + ) = max(1, 0 + 2 0) = 2
l = 3 l3 = 3 2 = 1
(3)
(3)
(3)
d3 = S4 + 1 S3 + 2 S2 + 3 S1 = 1 + 1.10 + 5 .1 + 0.1
= 1 + (1 + + 2 ) + ( + 2 ) = 0
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
33 / 35
Decoding of BCH Codes
Decoding
(x) = (6) (x) = 1 + x + 5 x 3
x = 3 , 10 , 12
Error location numbers
1 = 3 = 12 , 2 = 10 = 5 , 3 = 12 = 3
e(x) = x 3 + x 5 + x 12
r (x) = r (x) + e(x) = 0
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
34 / 35
End
Umamaheswar.V
(III Sem [Link])
BCH Codes
November 11, 2013
35 / 35