Você está na página 1de 29

BCH Codes

APARNA: 4JN11LDS03

DECS(M.tech),
JNNCE,
SHIMOGA

November 16, 2012


Contents

Binary primitive BCH codes

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


Contents

Binary primitive BCH codes


Decoding procedures

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


Contents

Binary primitive BCH codes


Decoding procedures
Implementation of Galois field Arithmetic

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


Contents

Binary primitive BCH codes


Decoding procedures
Implementation of Galois field Arithmetic
Implementation of Error correction

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


Contents

Binary primitive BCH codes


Decoding procedures
Implementation of Galois field Arithmetic
Implementation of Error correction
Non-binary BCH codes

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


Contents

Binary primitive BCH codes


Decoding procedures
Implementation of Galois field Arithmetic
Implementation of Error correction
Non-binary BCH codes

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 2 / 28


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.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 3 / 28


Binary primitive BCH codes

For any integer m ≥ 3 and t < 2m−1 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 =2×3+1=7
This is a triple-error-correcting (63, 45) BCH code.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 4 / 28


Binary primitive 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)..., φ2t−1 (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.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 5 / 28


Binary primitive 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)..., φ2t−1 (x)}

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 6 / 28


Binary primitive BCH codes

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 is generated by


g(x)=φ1 (x) since t =1.

The double-error-correcting BCH code of length n=24 -1=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

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 7 / 28


Binary primitive BCH codes

Thus the code is a (15,7)cyclic code with dmin ≥ 5.Because 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 ≥ 7.Because the weight of the generator
plolynomial is 7, the minimum distance of this code is exactly 7.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 8 / 28


Binary primitive BCH codes

Power Polynomial 4 − Tuple


representation representation representation
0 0 (0000)
1 1 (1000)
α α (0100)
α2 α2 (0010)
α3 α3 (0001)
α4 1+α (1100)
α5 α + α2 (0110)
α6 α2 + α3 (0011)
α7 1+α+α 3 (1101)
α8 1 + α2 (1010)
α9 α+α 3 (0101)
α10 1 + α2 + α3 (1110)
α11 α + α2 + α3 (0111)
α12 1+α+α +α 2 3 (1111)
α13 1 + α2 + α3 (1011)
α14 1+α 3 (1001)
APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 9 / 28
Binary primitive 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 , ..., vn−1 ) is a code word if and only if
the poly.
v (x) = v0 + v1 x + ... + vn−1 x n−1
has α, α2 , α3 , ..., α2t as roots
i.e. v (αi ) = v0 + v1 αi + v2 α2i + ... + vn−1 α(n−1)i =0

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 10 / 28


Binary primitive BCH codes

 
1
 αi 
α2i
 
 
 
v = (v0 , v1 , v2 , ..., vn−1 ). .  = 0 for 1 ≤ i ≤ 2t
 

 . 

 . 
α(n−1)i

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 11 / 28


Binary primitive BCH codes

H matrix (parity-check matrix) of the BCH code:


1 α... αn−1
 
 1 (α2 )...(α2 )n−1 
 
 . 
H =
 
 . 

 . 
1 (α2t )...(α2t )n−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 ... αn−1
 
 1 α3 (α3 )2 ... (α3 )n−1 
 
 . 
H =  
 . 

 . 
1 α(2t−1) (α2t−1 )2 ... (α2t−1 )n−1
APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 12 / 28
Binary primitive BCH codes

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=
1α3 α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,

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 13 / 28


Binary primitive BCH codes

 
100010011010111

 010011010111100 


 001001101011110 

 000100110101111 
H = 

 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.
APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 14 / 28
Binary primitive BCH codes

The t-error-correcting BCH code has minimum distance of at least


2t + 1.
Proof: To prove this, we need to show that no 2t or fewer columns of H
sum to zero.Suppose that there exists a nonzero code vector
v = (v0 , v1 , ..., vn−1 ) with weight δ ≤ 2t.
Let vj1 , vj2 , vj3 ..., vjδ be the nonzero components of v(i.e. all ones)
 
αj1 (α2 )j1 ...(α2t )j1
 j2 2 j2
 α (α ) ...(α2t )j2 

 .
 
⇒ 0 = vH T = (vj1 , vj2 , ..., vjδ ). 

 .


 .
 

jδ 2 jδ 2t jδ
α (α ) ...(α )

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 15 / 28


Binary primitive BCH codes

αj1 (αj1 )2 ...(αj1 )2t


 

 αj2 (αj2 )2 ...(αj2 )2t 

 . 
⇒ (1, 1, 1, ..., 1).  =0

 . 

 . 
αjδ (αjδ )2 ...(αjδ )2t

αj1 (αj1 )2 ...(αj1 )δ


 

 αj2 (αj2 )2 ...(αj2 )δ 

 . 
⇒ (1, 1, 1, ..., 1).   =0

 . 

 . 
αjδ (αjδ )2 ...(αjδ )δ
| {z }
%
A,a δ×δ square matrix(δ≤2t)

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 16 / 28


Binary primitive BCH codes

⇒ |A| = 0
Taking out the common factor from each row of the determinant.

1αj1 ...α(δ−1)j1
 
 1αj2 ...α(δ−1)j2 
(j1+j2+...+jδ) 
⇒α .  ... =0

...
 ... 
1αjδ ...α(δ−1)jδ

The determinant in the equality above is a Vandermonde determinant


which is nonzero.Therefore,the product on the left-hand side of
cannot be zero.
This is a contradiction and hence our assumption that there exists a
nonzero codeword v of weight δ ≤ 2t is invalid.This implies that the
minimum weight of t-error-correcting BCH code is at least 2t+1.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 17 / 28


Binary primitive BCH codes

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)}

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 18 / 28


Binary primitive BCH codes

Example 6.3:Consider the Galois field GF(26 ).The element β=α3 has order
n=21.Let t=2.Let 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.

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 19 / 28


Binary primitive BCH codes

Decoding of BCH Codes

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 20 / 28


Binary primitive BCH codes Decoding

Suppose that a code word v (x) = v0 + v1 x + ... + vn−1 x n−1 is transmitted


and the transmission errors result :

r (x) = r0 + r1 x + r2 x 2 + ... + rn−1 x n−1

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 + ... + rn−1 (αi )n−1 for 1 ≤ i ≤ 2t
APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 21 / 28
Binary primitive 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 .

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 22 / 28


Binary primitive BCH codes Decoding

EX6.4
Let α be a primitive element of the Galois field GF (24 ) such that
1 + α + α4 = 0.Consider 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
APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 23 / 28
Binary primitive 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 )

APARNA: 4JN11LDS03 (DECS(M.tech),JNNCE,SHIMOGA) BCH Codes November 16, 2012 24 / 28

Você também pode gostar