# Chapter 5 BCH Codes

1. Introduction
BCH (Bose – Chaudhuri - Hocquenghem) Codes form a large class of multiple random error-correcting codes. They were first discovered by A. Hocquenghem in 1959 and independently by R. C. Bose and D. K. Ray-Chaudhuri in 1960.

BCH codes are cyclic codes. Only the codes, not the decoding algorithms, were discovered by these early writers.

The original applications of BCH codes were restricted to binary codes of length 2 m − 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).

The first decoding algorithm for binary BCH codes was devised by Peterson in 1960. Since then, Peterson’s algorithm has been refined by Berlekamp, Massey, Chien, Forney, and many others.

2. Primitive BCH Codes
m 1 For any integer m ≥ 3 and t < 2 − there exists a primitive

BCH code with the following parameters:

n = 2m − 1 n − k ≤ mt d min ≥ 2t + 1

(5- 1)

This code can correct t or fewer random errors over a span of

2 m − 1 bit positions.
The code is a t-error-correcting BCH code.

For example, for m=6, t=3

n = 2 6 − 1 = 63 n − k = 6 × 3 = 18 d min = 2 × 3 + 1 = 7
This is a triple-error-correcting (63, 45) BCH code.

3. Generator Polynomial of Binary BCH Codes
Let α be a primitive element in GF( 2 m ). For 1 ≤ i ≤ t , let φ 2 i −1 ( x ) be the minimum polynomial of the field element α 2 i −1 . The degree of φ 2 i −1 ( x ) is m or a factor of m.

The generator polynomial g(x) of a t-error-correcting primitive BCH codes of length 2 m − 1 is given by

g ( x ) = LCM { 1 ( x ), φ 3 ( x ), L, φ 2 t −1 ( x )} φ

(5- 2)

Note that the degree of g(x) is mt or less. Hence the number of parity-check bits; n-k, of the code is at most mt.

Example 5.1, 5.2, 5.3, 5.4. (m = 4, m = 5)

(pp. 191-196)

Note that the generator polynomial of the binary BCH code is originally found to be the least common multiple of the minimum polynomials φ 1 , φ 2 , L, φ 2 t

φ i.e. g ( x ) = LCM { 1 ( x ), φ 2 ( x ), φ 3 ( x ), L, φ 2 t −1 ( x ), φ 2 t ( x )}
However, generally, every even power of α in GF( 2 m ) has the same minimal polynomial as some preceding odd power of α in GF( 2 2 m ). 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 ), L, φ 2 t −1 ( x )}. φ

Example: m = 4, t = 3 Let α be a primitive element in GF( 2 4 ) which is constructed
4 based on the primitive polynomial p( x ) = 1 + x + x

φ 1 ( x ) = 1 + x + x 4 corresponding to α φ 3 ( x ) = 1 + x + x 2 + x 3 + x 4 corresponding to α 3 φ 5 ( x ) = 1 + x + x 2 corresponding to α 5
g ( x ) = LCM { 1 ( x ), φ 3 ( x ), φ 5 ( x )} φ = φ 1 ( x )φ 3 ( x )φ 5 ( x ) = 1 + x + x 2 + x 4 + x 5 + x 8 + x 10
The code is a (15, 5) cyclic code.

4. Properties of Binary BCH Codes
m Consider a t-error-correcting BCH code of length n = 2 − 1

with generator polynomial g(x).

2 3 2t g(x) has as α , α , α ,L, α roots, i.e.

g (α i ) = 0 for 1 ≤ i ≤ 2t
3)

(5-

Since a code polynomial c(x) is a multiple of g(x), c(x) also has

α , α 2 , L, α 2 t as roots, i.e. c (α i ) = 0 for 1 ≤ i ≤ 2t .

A polynomial c(x) of degree less than 2 m − 1 is a code polynomial
2 2t if and only if it has α , α , L, α as roots.

5. Decoding of BCH Codes
m Consider a BCH code with n = 2 − 1 and generator polynomial

g(x).

n −1 Suppose a code polynomial c( x ) = c0 + c1 x + L + c n−1 x is

transmitted.
n −1 Let r ( x ) = r0 + r1 x + L + rn−1 x be the received polynomial.

Then r(x)=c(x)+e(x), where e(x) is the error polynomial.

To check whether r(x) is a code polynomial or not, we simply test
2 2t whether r (α ) = r (α ) = L = r (α ) = 0 .

If yes, then r(x) is a code polynomial, otherwise r(x) is not a code polynomial and the presence of errors is detected.

Decoding procedure (1) syndrome computation. (2) determination of the error pattern. (3) error correction.

6. Syndrome computation
The syndrome consists of 2t components in GF( 2 m )

S = ( S1 S 2 L S 2 t )
4)
i and S i = r (α ) for 1 ≤ i ≤ 2t .

(5-

Computation: Let φ i ( x ) be the minimum polynomial of α i . Dividing r(x) by φ i ( x ) , we obtain

r ( x ) = a( x )φ i ( x ) + b( x )
i Then S i = b(α )

(5- 5)

S i = b(α i ) can be obtained by linear feedback shift-register with
connection based on φ i ( x ) .

7. Syndrome and Error Pattern
Since r(x)=c(x)+e(x)
i i i i then si = r (α ) = c (α ) + e (α ) = e (α )

(5-

6) for 1 ≤ i ≤ 2t . This gives a relationship between the syndrome and the error pattern.

Suppose e(x) has ν errors (ν ≤ t ) at the locations specified by

x j1 , x j2 ,L, x jν .
j j j i.e. e ( x ) = x 1 + x 2 + L + x ν

(5- 7)

where 0 ≤ j1 < j2 < L < jν ≤ n − 1 .

From equations (5-6) & (5-7), we have the following relation between syndrome components and error location:

S1 = e (α ) = α j1 + α j2 + L + α jν S 2 = e (α 2 ) = (α j1 ) 2 + (α j2 ) 2 + L + (α jν ) 2 M S 2 t = e (α 2t ) = (α j1 ) 2 t + (α j2 ) 2 t + L + (α jν ) 2 t

(5- 8)

It
1

we
2

can

solve

the

2t

equations,

we

can

determine

α j , α j , L, α jν .

j The unknown parameter α u = Z u for u = 1, 2, L ,ν are called

the “error location number”.
j When α u , 1 ≤ u < ν are found, the powers j u , u = 1, 2, L ,ν

give us the error locations in e(x). these 2t equation of eq. (5-8) Are known as power-sum symmetric function.

11.Direct Solutions of Some Simple Cases.
(1) Single-error correction:

σ 1 = S1

L( z ) = 1 + S1 z

S1 ≠ 0 S 3 = S13

(2) Double-error correction:

σ 1 = S1 σ 2 = S ( S3 + S )
−1 1 3 1

S1 ≠ 0, S 3 ≠ S13  S13 + S 3  2 L( z ) = 1 + S1 z +  z S1  

(3) Triple-error correction:

σ 1 = S1
S S3 + S5 S13 + S 3 σ 3 = ( S13 + S 3 ) + S1σ 2

S1 ≠ 0 S 3 ≠ S13

σ2 =

2 1

Example: m = 4, t = 3 BCH code over GF( 24 ).
4 The primitive polynomial for m = 4 is φ ( x ) = 1 + x + x

The minimum 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
n = 2 4 − 1 = 15
g ( x ) = LCM{φ 1 ( x ), φ 3 ( x ), φ 5 ( x )} = φ 1φ 3φ 5 = 1 + x + x 2 + x 4 + x 5 + x 8 + x 10

The code is a (15, 5) cyclic code.
2 3 4 5 6 The generator polynomial g(x) has α , α , α , α , α , α as

roots. The roots α , α 2 and α 4 have the same polynomial

φ1 ( x ) = φ 2 ( x ) = φ 4 ( x ) = 1 + x + x 4
The root α 3 and α 6 have the same minimum polynomial

φ 3 ( x) = φ6 ( x) = 1 + x + x 2 + x 3 + x 4
The minimum polynomial of α 5 is

φ5 ( x) = 1 + x + x 2
Suppose all-zero code word c = (0 0 0 L 0) is transmitted
2 5 12 and r ( x ) = x + x + x is received.

Dividing r(x) by φ1 ( x ) , φ 3 ( x ) and φ 5 ( x ) , respectively, we obtain the remainders:

b1 ( x ) = 1 b3 ( x ) = 1 + x + x 3 b5 ( x ) = x 2
The syndrome components are

s1 s2 s4 s3 s6 s5

= b1 (α ) = 1 = b1 (α 2 ) = 1 = b1 (α 4 ) = 1 = b3 (α 3 ) = 1 + α 6 + α 9 = α 10 = b3 (α 6 ) = 1 + α 12 + α 18 = α 5 = b3 (α 5 ) = α 10

10 10 5 Hence S = (1 , 1 , α , 1 , α , α ) .

Example: (p. 209) consider t = 2, m = 5, (32, 21) BCH code The primitive polynomial for m = 5 is

φ ( x) = 1 + x 2 + x 5 α , α 2 , α 4 , α 8 and α 16 have the same minimum polynomial α 3 , α 6 , α 12 , α 24 and α 17 have the same minimum polynomial φ3 ( x) = 1 + x 2 + x 3 + x 4 + x 5 α 5 , α 10 , α 20 , α 9 and α 8 have the same minimum polynomial φ5 ( x) = 1 + x + x 2 + x 4 + x 5 α 7 , α 14 , α 28 , α 25 and α 19 have the same minimum polynomial φ7 ( x) = 1 + x + x 2 + x 3 + x 5 α 11 , α 22 , α 13 , α 26 and α 21 have the same minimum polynomial φ 11 ( x ) = 1 + x + x 3 + x 4 + x 5
The generator polynomial of (32, 21) code is

g ( x ) = φ 1 ( x )φ 3 ( x ) = 1 + x 3 + x 5 + x 6 + x 8 + x 9 + x 10
2 3 The roots of the generator polynomial include α , α , α and

α4
2 7 8 11 12 Since r ( x ) = x + x + x + x + x

We obtain

S1 S2 S3 S4

= r (α ) = α 7 = r (α 2 ) = α 14 = r (α 3 ) = α 8 = r (α 4 ) = α 28

2 4 Note here that S4 = ( S 2 ) = ( S1 )

Then the error-locator polynomial is obtained by the equation

σ1 =α7 α 8 + (α 7 ) 3 σ2 = = α 15 7 α ∴ L( z ) = 1 + α 7 z + α 15 z 2 = (1 + α 5 z )(1 + α 10 z ) ∴ Z 1 = α 5 = α 31− 26 Z 2 = α 10 = α 31− 21
Thereby indicating errors at 26th and 21st coordinates of r

∴ c ( x ) = x 2 + x 5 + x 7 + x 8 + x 10 + x 11 + x 12
r (Note Z i = α i )

The system equations can be reduced to the following matrix form:

 Z1 Z 2 D⋅e =  1  M  ν Z1

Z 2 L Zν   e i1   S1    2 Z 2 L Zν2  e i2   S 2   =   M  M M M     ν ν  Z 2 L Zν  e iν   Sν 

(5- 20)

Decoding is completed by solving for the {e il } This is a general case of nonbinary BCH codes.

Example (5.9) Consider a nonbinary BCH code (7, 3) of length 7 (symbols) this code is constructed over GF(8) with generator polynomial

g ( x ) = ( x − α )( x − α 2 )( x − α 3 )( x − α 4 ) = x4 + α 3 x3 + x2 + α 3
Let the received polynomial be

r( x ) = α 2 x 6 + α 2 x 4 + x 3 + α 5 x 2
Then the syndrome components are

S1 = α 6 , S 2 = α 3 , S 3 = α 4 , S 4 = α 3

Eq. (5-19) gives

α 6 α 3  σ 2  α 4  S' Λ =  3   =   α α 4  σ 1  α 3   ⇒ σ1 = α 2, σ 2 = α
2 2 Thus L( x ) = αx + α x + 1

The error locations are founded to be

Z 1 = α 3 = α 7−4 , Z 2 = α 5 = α 7− 2 ⇒ e( x ) = e 3 x 3 + e5 x 5
Eq. (5-20) gives

α 3 α 5  e 3  α 6  D⋅e =  6  =  3 3  α α  e 5  α 
The error magnitudes are found to be

e3 = α , e5 = α 5 ⇒ e ( x ) = αx 3 + α 5 x 5
Finally

c( x ) = e( x ) + r( x ) = α 2 x 6 + α 5 x 5 + α 2 x 4 + α 3 x 3 + α 5 x 2
Note that m = 3, the primitive polynomial is

p( x ) = 1 + x + x 3

Sign up to vote on this title