07.01.2015 Views

Chapter 5 BCH Codes

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Chapter</strong> 5<br />

<strong>BCH</strong> <strong>Codes</strong><br />

1. Introduction<br />

<br />

<strong>BCH</strong> (Bose – Chaudhuri - Hocquenghem) <strong>Codes</strong> form a large<br />

class of multiple random error-correcting codes.<br />

They were first discovered by A. Hocquenghem in 1959 and<br />

independently by R. C. Bose and D. K. Ray-Chaudhuri in 1960.<br />

<br />

<strong>BCH</strong> codes are cyclic codes. Only the codes, not the decoding<br />

algorithms, were discovered by these early writers.<br />

<br />

The original applications of <strong>BCH</strong> codes were restricted to binary<br />

m<br />

codes of length 2 − 1<br />

for some integer m. These were extended<br />

later by Gorenstein and Zieler (1961) to the nonbinary codes with<br />

symbols from Galois field GF(q).


The first decoding algorithm for binary <strong>BCH</strong> codes was devised<br />

by Peterson in 1960. Since then, Peterson’s algorithm has been<br />

refined by Berlekamp, Massey, Chien, Forney, and many others.<br />

2. Primitive <strong>BCH</strong> <strong>Codes</strong><br />

For any integer m ≥ 3<br />

and<br />

t < 2 m−1<br />

there exists a primitive<br />

<strong>BCH</strong> code with the following parameters:<br />

m<br />

n = 2 − 1<br />

n − k ≤ mt<br />

dmin ≥ 2t<br />

+ 1<br />

(5- 1)<br />

<br />

This code can correct t or fewer random errors over a span of<br />

m<br />

2 − 1<br />

bit positions.<br />

Thecodeisat-error-correcting <strong>BCH</strong> code.<br />

For example, for m=6, t=3<br />

6<br />

n = 2 − 1 = 63<br />

n − k = 6 × 3 = 18<br />

d = 2×<br />

3 + 1 = 7<br />

min<br />

This is a triple-error-correcting (63, 45) <strong>BCH</strong> code.


3. Generator Polynomial of Binary <strong>BCH</strong> <strong>Codes</strong><br />

m<br />

Let α be a primitive element in GF( 2 ).<br />

For<br />

1 ≤ i ≤ t ,let φ )<br />

( 2i−1 x<br />

be the minimum polynomial of the<br />

field element<br />

2i−1<br />

α .<br />

Thedegreeof φ2i−1(<br />

x)<br />

is m or a factor of m.<br />

<br />

The generator polynomial g(x) ofat-error-correcting primitive<br />

m<br />

<strong>BCH</strong> codes of length 2 − 1<br />

is given by<br />

{ ( x),<br />

φ ( x),<br />

, ( )}<br />

g( x)<br />

= LCM φ1 3<br />

L φ2t−1<br />

x<br />

(5- 2)<br />

<br />

Note that the degree of g(x)ismt or less.<br />

Hence the number of parity-check bits; n-k, of the code is at<br />

most mt.<br />

Example 5.1, 5.2, 5.3, 5.4. (pp. 191-196)<br />

(m =4,m =5)


Note that the generator polynomial of the binary <strong>BCH</strong> code is<br />

originally found to be the least common multiple of the minimum<br />

polynomials<br />

φ , φ<br />

1<br />

φ<br />

2,<br />

L,<br />

2t<br />

i.e. g x)<br />

= LCM{ φ ( x),<br />

φ ( x),<br />

φ ( x),<br />

L,<br />

φ ( x),<br />

φ ( )}<br />

(<br />

1 2 3<br />

2t−1<br />

2t<br />

x<br />

However, generally, every even power of α<br />

m<br />

in GF( 2 )hasthesame<br />

minimal polynomial as some preceding odd power of α<br />

2m<br />

in GF( 2 ).<br />

As a consequence, the generator polynomial of the t-error-correcting<br />

binary <strong>BCH</strong> code can be reduced to<br />

{ ( x),<br />

φ ( x),<br />

, ( )}<br />

g( x)<br />

= LCM φ1 3<br />

L φ2t−1<br />

x .


Example: m =4,t =3<br />

Let α<br />

4<br />

be a primitive element in GF( 2 ) which is constructed<br />

based on the primitive polynomial<br />

p ( x)<br />

= 1 + x + x<br />

4<br />

φ ( x + x + x<br />

1<br />

) = 1<br />

4<br />

corresponding to α<br />

φ<br />

2 3 4<br />

3<br />

( x ) = 1 + x + x + x + x<br />

corresponding to<br />

3<br />

α<br />

φ ( x + x + x<br />

5<br />

) = 1<br />

2<br />

corresponding to<br />

5<br />

α<br />

{ φ ( x),<br />

φ ( x),<br />

φ ( x)<br />

}<br />

g(<br />

x)<br />

= LCM<br />

1 3<br />

= φ1(<br />

x)<br />

φ3<br />

( x)<br />

φ5<br />

( x)<br />

2 4<br />

= 1 + x + x + x + x<br />

5<br />

5<br />

+ x<br />

The code is a (15, 5) cyclic code.<br />

8<br />

+ x<br />

10


4. Properties of Binary <strong>BCH</strong> <strong>Codes</strong><br />

Consider a t-error-correcting <strong>BCH</strong> code of length n = 2 m − 1<br />

with generator polynomial g(x).<br />

<br />

g(x) has as<br />

2 3 2t<br />

α, α , α , L,<br />

α roots, i.e.<br />

i<br />

g( α ) = 0 for 1 ≤ i ≤ 2t<br />

(5-<br />

3)<br />

<br />

Since a code polynomial c(x) is a multiple of g(x), c(x) alsohas<br />

2 2t<br />

i<br />

α, α , L,<br />

α as roots, i.e. c( ) = 0 for 1 ≤ i ≤ 2t<br />

α .<br />

m<br />

A polynomial c(x)ofdegreelessthan 2 − 1<br />

is a code polynomial<br />

ifandonlyifithas<br />

2 2t<br />

α, α , L,<br />

α as roots.


5. Decoding of <strong>BCH</strong> <strong>Codes</strong><br />

Consider a <strong>BCH</strong> code with n = 2 m − 1<br />

and generator polynomial<br />

g(x).<br />

Suppose a code polynomial<br />

n−1<br />

c(<br />

x)<br />

= c0<br />

+ c1x<br />

+ L+<br />

c n −1x<br />

is<br />

transmitted.<br />

Let<br />

n−1<br />

r(<br />

x)<br />

= r0<br />

+ r1<br />

x + L+<br />

r n −1x<br />

be the received polynomial.<br />

<br />

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

<br />

To check whether r(x) is a code polynomial or not, we simply test<br />

2<br />

2t<br />

whether r(<br />

α)<br />

= r(<br />

α ) = L = r(<br />

α ) = 0 .<br />

If yes, then r(x) is a code polynomial, otherwise r(x) is not a code<br />

polynomial and the presence of errors is detected.<br />

<br />

Decoding procedure<br />

(1) syndrome computation.<br />

(2) determination of the error pattern.<br />

(3) error correction.


6. Syndrome computation<br />

<br />

m<br />

The syndrome consists of 2t components in GF( 2 )<br />

S<br />

= S S L S )<br />

(5-<br />

(<br />

1 2 2t<br />

4)<br />

i<br />

and S = r(<br />

α ) for 1 ≤ i ≤ 2t<br />

.<br />

i<br />

<br />

Computation:<br />

Let φ (x)<br />

i<br />

be the minimum polynomial of<br />

i<br />

α .<br />

Dividing r(x)by φ (x)<br />

,weobtain<br />

r( x)<br />

= a(<br />

x)<br />

φ<br />

i<br />

( x)<br />

+ b(<br />

x)<br />

i<br />

i<br />

Then S = b(<br />

α )<br />

(5- 5)<br />

i<br />

i<br />

S = b(<br />

α ) can be obtained by linear feedback shift-register with<br />

i<br />

connection based on φ (x)<br />

.<br />

i


7. Syndrome and Error Pattern<br />

<br />

Since r(x)=c(x)+e(x)<br />

i<br />

i<br />

i<br />

i<br />

then s = r(<br />

α ) = c(<br />

α ) + e(<br />

α ) = e(<br />

α )<br />

(5-<br />

6)<br />

i<br />

for<br />

1 ≤ i ≤ 2t<br />

.<br />

This gives a relationship between the syndrome and the error<br />

pattern.<br />

Suppose e(x) hasν errors ( ν ≤ t)<br />

at the locations specified by<br />

j j2<br />

x , x , ,<br />

1 L j<br />

x ν<br />

.<br />

i.e.<br />

e = L+<br />

j1<br />

j2<br />

j<br />

( x)<br />

x + x + x ν<br />

(5- 7)<br />

where ≤ j < j < L < j ≤ n 1 .<br />

0<br />

1 2<br />

ν<br />

−<br />

<br />

From equations (5-6) & (5-7), we have the following relation<br />

between syndrome components and error location:<br />

S<br />

S<br />

S<br />

1<br />

2<br />

2t<br />

j1<br />

= e(<br />

α)<br />

= α<br />

j2<br />

+ α<br />

jν<br />

+ L + α<br />

2 j1<br />

2<br />

= e(<br />

α ) = ( α )<br />

j2<br />

2<br />

+ ( α )<br />

jν<br />

2<br />

+ L+<br />

( α )<br />

M<br />

2t<br />

j1<br />

2t<br />

= e(<br />

α ) = ( α )<br />

j2<br />

2t<br />

+ ( α )<br />

jν<br />

+ L + ( α )<br />

2t<br />

(5- 8)


It we can solve the 2t equations, we can determine<br />

j<br />

α<br />

1 j2<br />

jν<br />

, α , L , α .<br />

ju The unknown parameter α = Z<br />

u for u = 1,2,<br />

L,<br />

ν<br />

are called<br />

the “error location number”.<br />

When<br />

1 are found, the powers j u ,<br />

ju<br />

α , ≤ u < ν<br />

u = 1,2,<br />

L,<br />

ν<br />

give us the error locations in e(x). these 2t equation of eq. (5-8)<br />

Are known as power-sum symmetric function.


8. Error-Location Polynomial<br />

(Error-Locator Polynomial)<br />

suppose that ν ≤ t<br />

errors actually occur.<br />

Define error-locator polynomial L(z)as<br />

L(<br />

z)<br />

= (1 + Z z)(1<br />

+ Z z)<br />

L(1<br />

+ Z<br />

=<br />

ν<br />

∏<br />

i=<br />

1<br />

(1 + Z z)<br />

= σ + σ z + σ z<br />

0<br />

1<br />

1<br />

i<br />

2<br />

2<br />

2<br />

+ L+<br />

σ z<br />

ν<br />

ν<br />

ν<br />

z)<br />

(5- 9)<br />

where σ = 0<br />

1 .<br />

<br />

L(z)has<br />

Z L as roots.<br />

−1<br />

−1<br />

−1<br />

1<br />

, Z2<br />

, , Z ν<br />

Note that<br />

Z<br />

u<br />

j<br />

= α u<br />

.<br />

If we can determine L(z) from the syndrome S = S , S , L,<br />

S ) ,<br />

(<br />

1 2 2t<br />

then the roots of L(z) give us the error-location numbers.


9. Relationship between S and L(z)<br />

<br />

From eq. (5-9), we find the following relationship between the<br />

coefficients of L(z) and the error-locator numbers:<br />

σ<br />

σ<br />

1<br />

σ<br />

σ<br />

2<br />

ν<br />

=<br />

= Z<br />

= Z<br />

M<br />

= Z<br />

0<br />

1<br />

1<br />

1<br />

1<br />

+ Z2<br />

+ L+<br />

Zν<br />

Z + Z Z + L+<br />

Z<br />

Z<br />

2<br />

2<br />

2<br />

LZ<br />

ν<br />

3<br />

Z<br />

ν − 1 ν<br />

(5- 10)<br />

eq. (5-10) is called “elementary symmetric functions”.<br />

<br />

From eq. (5-8) and eq. (5-10), we have the following relationship<br />

between the syndrome and the coefficients of L(z):<br />

S<br />

ν<br />

+ σ S<br />

1<br />

ν −1<br />

+ σ S<br />

2<br />

S<br />

3<br />

ν −2<br />

S<br />

+ σ S<br />

1<br />

2<br />

2<br />

+ L+<br />

σ<br />

S1<br />

+ σ<br />

1<br />

+ σ<br />

1S1<br />

+ 2σ<br />

2<br />

+ σ S + 3σ<br />

2<br />

ν −1<br />

S<br />

1<br />

1<br />

+<br />

νσ<br />

3<br />

ν<br />

= 0<br />

= 0<br />

= 0<br />

M<br />

= 0<br />

(5- 11)<br />

Here for binary case<br />

iσ = σ<br />

i<br />

i<br />

when i is odd,<br />

and iσ = 0<br />

i<br />

otherwise.<br />

<br />

The equations of (5-11) are called the Newton’s identities.


If we can determine σ , σ , 1 2<br />

L,<br />

σ<br />

ν from the Newton’s identities,<br />

then we can determine the error-location numbers<br />

Z , Z , 2<br />

, Z<br />

1<br />

L<br />

ν ,<br />

by finding the roots of L(z).<br />

<br />

Note that the Newton’s identities in (5-11) can be expressed also in<br />

the following single-equation form:<br />

S<br />

i<br />

+<br />

1 i−1<br />

2 i−2<br />

i−1<br />

1 i<br />

L<br />

σ S + σ S + L + σ S + iσ<br />

= 0 for i = 1,2, , ν<br />

(5- 12)


10.Peterson’s Direct-Solution (W. W. Peterson, 1960)<br />

Considerthecasefor i > ν<br />

First multiply L(z) in eq. (5-9) By<br />

i<br />

z − , we have<br />

z<br />

−i<br />

L<br />

−i<br />

1−i<br />

2−i<br />

ν −1−i<br />

ν −i<br />

( z)<br />

= z + σ<br />

1z<br />

+ σ<br />

2z<br />

+ L + σ ν −1z<br />

+ σ<br />

ν<br />

z (5- 13)<br />

<br />

Next substituting the roots of L(z) (i.e.<br />

Z L ) into eq.<br />

−1<br />

−1<br />

−1<br />

1<br />

, Z2<br />

, , Z ν<br />

(5-13) produces the following set of equations:<br />

Z<br />

Z<br />

Z<br />

i<br />

1<br />

i<br />

2<br />

i<br />

ν<br />

+ σ<br />

1Z<br />

+ σ Z<br />

1<br />

+ σ Z<br />

1<br />

i−1<br />

1<br />

i−1<br />

2<br />

i−1<br />

ν<br />

+ σ<br />

2<br />

Z<br />

+ σ Z<br />

2<br />

+ σ Z<br />

2<br />

i−2<br />

1<br />

i−2<br />

2<br />

i−2<br />

ν<br />

+ L + σ<br />

+ L + σ<br />

+ L + σ<br />

ν −1<br />

ν −1<br />

ν −1<br />

Z<br />

Z<br />

Z<br />

i−ν<br />

+ 1<br />

1<br />

i−ν<br />

+ 1<br />

2<br />

i−ν<br />

+ 1<br />

ν<br />

+ σ<br />

ν<br />

Z<br />

+ σ Z<br />

ν<br />

+ σ Z<br />

ν<br />

i−ν<br />

1<br />

i−ν<br />

2<br />

i−ν<br />

ν<br />

= 0<br />

= 0<br />

M<br />

= 0<br />

(5- 14)<br />

Adding these ν<br />

equation term by term yield<br />

( Z<br />

i<br />

1<br />

+ Z<br />

i<br />

2<br />

+ L+<br />

Z<br />

i<br />

ν<br />

i−1<br />

i−1<br />

) + σ<br />

1(<br />

Z1<br />

+ Z<br />

2<br />

+ L+<br />

Z<br />

i−ν<br />

i−ν<br />

+ σ ( Z , Z , L,<br />

Z<br />

ν<br />

1<br />

2<br />

i−1<br />

ν<br />

i−ν<br />

ν<br />

) + L<br />

) = 0<br />

(5- 15)<br />

<br />

Now express eq. (5-15) in terms of syndrome components, then<br />

S<br />

i<br />

+<br />

−<br />

σ<br />

1Si−1<br />

+ L + σ<br />

ν −1Si−ν<br />

+ 1<br />

+ σ<br />

ν<br />

Si<br />

ν<br />

= 0 for i > ν (5- 16)<br />

In particular, for i =ν + 1 ,weobtain<br />

S<br />

ν + 1<br />

+<br />

1 ν<br />

ν −1<br />

2 ν<br />

S1<br />

=<br />

σ S + L + σ S + σ 0<br />

(5- 17)<br />

Thus, the Newton’s identities can be extended to the unknown<br />

syndrome<br />

S for i > ν .<br />

i


From eq. (5-16) & eq. (5-17), we can see that the σ<br />

j<br />

for<br />

0 ≤ j ≤ν are closely related to the syndrome components S<br />

i ,<br />

1 ≤ i ≤ν<br />

+ 1 .<br />

Thus, σ<br />

j<br />

can be determined by solving the set of syndrome<br />

equations eq. (5-16) & eq. (5-17). Then the error-locations for can<br />

be found by solving<br />

ju α = Z<br />

u for ≤ u ≤ν<br />

1 the root of L(z). This<br />

L(z) produces an error-pattern e(x) with the minimum number of<br />

errors. Hence if<br />

ν ≤<br />

t<br />

errors occur, L(z) will give the actual error<br />

pattern e(x).<br />

<br />

Finally, the error-correcting procedure for the binary <strong>BCH</strong> codes<br />

can be outlined as follows:<br />

(1) Compute the syndrome components S<br />

j ,<br />

1 ≤ j ≤ 2t<br />

,fromthe<br />

received polynomial r(x). [eq. (5-5)]<br />

(2) Set each σ = 0 for ν + 1 ≤ j ≤ t<br />

j<br />

and solve the first ν equations of eq. (5-11) for the σ<br />

j ,<br />

1 ≤ j ≤ν in terms of S<br />

j .<br />

(3) Determine the error-locator polynomial L(z) fromthese σ<br />

j


in terms of syndrome component<br />

S for 0 ≤ j ≤ 2t<br />

.<br />

j<br />

(4) Find the error-location numbers Z , Z , 1 2<br />

L,<br />

Zν<br />

by solving<br />

for the roots of L(z). Use these roots to correct the errors in<br />

r(x).


11.Direct Solutions of Some Simple Cases.<br />

(1) Single-error correction:<br />

σ<br />

1<br />

= S1<br />

L(<br />

z)<br />

= 1 + S1z<br />

S1<br />

≠ 0<br />

3<br />

S3<br />

= S1<br />

(2) Double-error correction:<br />

σ<br />

σ<br />

1<br />

2<br />

= S<br />

1<br />

= S<br />

−1<br />

1<br />

( S<br />

3<br />

+ S<br />

3<br />

1<br />

)<br />

3<br />

S1<br />

≠ 0, S3<br />

≠ S1<br />

3<br />

⎡ S1<br />

+ S<br />

L(<br />

z)<br />

= 1 + S1z<br />

+ ⎢<br />

⎣ S<br />

1<br />

3<br />

⎤<br />

⎥z<br />

⎦<br />

2<br />

(3) Triple-error correction:<br />

σ<br />

σ<br />

σ<br />

1<br />

2<br />

3<br />

= S<br />

S<br />

=<br />

= ( S<br />

1<br />

2<br />

1<br />

S3<br />

3<br />

S1<br />

3<br />

1<br />

+ S<br />

3<br />

5<br />

+ S3<br />

+ S ) + S σ<br />

1<br />

2<br />

S<br />

S<br />

1<br />

3<br />

≠ 0<br />

≠ S<br />

3<br />

1<br />

4<br />

Example: m =4,t = 3 <strong>BCH</strong> code over GF( 2 ).<br />

The primitive polynomial for m =4is<br />

φ( x ) = 1+<br />

x + x<br />

4<br />

The minimum polynomials of α ,<br />

3<br />

α<br />

and<br />

5<br />

α<br />

are<br />

φ1(<br />

x)<br />

= 1 + x + x<br />

φ3(<br />

x)<br />

= 1 + x + x<br />

φ ( x)<br />

= 1 + x + x<br />

5<br />

4<br />

2<br />

2<br />

+ x<br />

3<br />

+ x<br />

4<br />

n = 2 4 − 1 =<br />

15<br />

g(<br />

x)<br />

= LCM{<br />

φ1(<br />

x),<br />

φ<br />

3(<br />

x),<br />

φ5<br />

( x)}<br />

= φ1φ<br />

3φ5<br />

2 4 5 8<br />

= 1 + x + x + x + x + x + x<br />

10


The code is a (15, 5) cyclic code.<br />

The generator polynomial g(x) has<br />

α<br />

2 3 4 5 6<br />

, α , α , α , α , α<br />

as<br />

roots. The roots α ,<br />

2<br />

α<br />

and<br />

4<br />

α<br />

have the same polynomial<br />

φ ( x + x + x<br />

1<br />

) = φ2(<br />

x)<br />

= φ4<br />

( x)<br />

= 1<br />

4<br />

The root<br />

3<br />

α<br />

and<br />

6<br />

α<br />

have the same minimum polynomial<br />

φ<br />

2 3 4<br />

3( x ) = φ6<br />

( x)<br />

= 1 + x + x + x + x<br />

The minimum polynomial of<br />

5<br />

α<br />

is<br />

φ ( x + x + x<br />

5<br />

) = 1<br />

2<br />

Suppose all-zero code word c = ( 0 0 0L0)<br />

is transmitted<br />

and<br />

r ( x)<br />

+ x<br />

2 5 12<br />

= x + x is received.<br />

Dividing r(x)by φ ( ) , φ ( ) and φ ( ) , respectively,<br />

1 x<br />

we obtain the remainders:<br />

b1<br />

( x)<br />

= 1<br />

b3<br />

( x)<br />

= 1 + x + x<br />

2<br />

b ( x)<br />

= x<br />

5<br />

3<br />

3 x<br />

5 x<br />

The syndrome components are<br />

s<br />

s<br />

s<br />

s<br />

s<br />

s<br />

1<br />

2<br />

4<br />

3<br />

6<br />

5<br />

= b1<br />

( α)<br />

= 1<br />

2<br />

= b1<br />

( α ) = 1<br />

4<br />

= b1<br />

( α ) = 1<br />

3<br />

6 9 10<br />

= b3<br />

( α ) = 1 + α + α = α<br />

6<br />

12 18 5<br />

= b3<br />

( α ) = 1 + α + α = α<br />

5 10<br />

= b ( α ) = α<br />

3<br />

10 10 5<br />

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


Example: (p. 209) consider t =2,m = 5, (32, 21) <strong>BCH</strong> code<br />

The primitive polynomial for m =5is<br />

φ<br />

2 5<br />

( x ) = 1 + x + x<br />

α<br />

2 4 8<br />

, α , α , α<br />

and<br />

16<br />

α<br />

have the same minimum polynomial<br />

α<br />

3 6 12 24<br />

, α , α , α<br />

and<br />

17<br />

α<br />

have the same minimum polynomial<br />

φ<br />

2 3 4 5<br />

3( x ) = 1 + x + x + x + x<br />

α<br />

5 10 20 9<br />

, α , α , α<br />

and<br />

8<br />

α<br />

have the same minimum polynomial<br />

φ<br />

2 4 5<br />

5( x ) = 1 + x + x + x + x<br />

α<br />

7 14 28 25<br />

, α , α , α<br />

and<br />

19<br />

α<br />

have the same minimum polynomial<br />

φ<br />

2 3 5<br />

7<br />

( x ) = 1 + x + x + x + x<br />

α<br />

11 22 13 26<br />

, α , α , α<br />

and<br />

21<br />

α<br />

have the same minimum polynomial<br />

φ<br />

3 4 5<br />

11( x ) = 1 + x + x + x + x<br />

The generator polynomial of (32, 21) code is<br />

g +<br />

3 5 6 8 9 10<br />

( x)<br />

= φ1(<br />

x)<br />

φ3(<br />

x)<br />

= 1 + x + x + x + x + x x<br />

The roots of the generator polynomial include<br />

α<br />

2 3<br />

, α , α<br />

and<br />

4<br />

α<br />

Since<br />

r +<br />

2 7 8 11 12<br />

( x)<br />

= x + x + x + x x


We obtain<br />

S<br />

S<br />

S<br />

S<br />

1<br />

2<br />

3<br />

4<br />

7<br />

= r(<br />

α)<br />

= α<br />

2<br />

= r(<br />

α ) = α<br />

3 8<br />

= r(<br />

α ) = α<br />

4<br />

= r(<br />

α ) = α<br />

14<br />

28<br />

Note here that<br />

S =<br />

2 4<br />

4<br />

= ( S2<br />

) ( S1<br />

)<br />

Then the error-locator polynomial is obtained by the equation<br />

7<br />

σ<br />

1<br />

= α<br />

8 7 3<br />

α + ( α ) 15<br />

σ<br />

2<br />

= = α<br />

7<br />

α<br />

7 15<br />

∴L(<br />

z)<br />

= 1 + α z + α z<br />

5 31−26<br />

∴ Z1<br />

= α = α<br />

10 31−21<br />

Z = α = α<br />

2<br />

2<br />

5<br />

10<br />

= (1 + α z)(1<br />

+ α z)<br />

Thereby indicating errors at 26 th and 21 st coordinates of r<br />

∴c +<br />

2 5 7 8 10 11 12<br />

( x)<br />

= x + x + x + x + x + x x<br />

(Note<br />

Zi<br />

r<br />

= α i<br />

)


12.Computation of Error-Location Numbers<br />

– Chien Search. (R.T. Chien, 1964)<br />

A Chien-search circuit is shown in Fig. 5.2.<br />

L ( z ) = σ<br />

where σ 0<br />

= 1<br />

ν<br />

ν<br />

+ σ z + σ z 2<br />

+ L + σ z<br />

0 1 2<br />

ν<br />

= ∏(1<br />

+ Z z i<br />

)<br />

i=<br />

1<br />

m<br />

The roots of L(z) inGF( 2 ) can be determined by substituting<br />

m<br />

the elements of GF( 2 )inL(z).<br />

i<br />

If L( α ) = 0 ,then<br />

i<br />

α<br />

is the root of L(z) and<br />

α<br />

− i<br />

= α<br />

n−i<br />

is an<br />

error-location number.<br />

To decode the first received digit r<br />

n−1<br />

, we check whether α is a<br />

root of L(z). If L ( α)<br />

= 0 , then rn−<br />

1<br />

is erroneous and must be<br />

corrected.<br />

If L ( α)<br />

≠ 0 ,then rn−<br />

1<br />

is error-free.<br />

i<br />

i<br />

To decode rn<br />

− i ,wetestwhether L( α ) = 0 .if L( α ) = 0 , n i<br />

r −<br />

is<br />

erroneous and must be corrected, otherwise<br />

rn<br />

− i<br />

is error free.


= ( r ,r , L,<br />

1)<br />

0 1<br />

rn-<br />

c'<br />

c'<br />

<br />

<br />

<br />

c'<br />

e i<br />

e<br />

i<br />

⎧ 1, if Di<br />

= 1<br />

= ⎨<br />

⎩0,<br />

otherwise<br />

<br />

D<br />

i<br />

t<br />

ij<br />

= ∑σ<br />

jα<br />

j=<br />

1<br />

i<br />

= L(α<br />

) − 1<br />

<br />

∑<br />

σ 1<br />

σ<br />

2<br />

L<br />

σ<br />

t<br />

2<br />

α α<br />

t<br />

α<br />

Figure 5.2 Chien search and error-correction for binary code.


13.Peterson-Gorenstein-Zierler Decoding Algorithm<br />

From equation (5-16) [Chen / Reed eq. (5-38)]<br />

σ<br />

ν<br />

S<br />

j−ν<br />

+ σ<br />

ν −<br />

S<br />

j−ν<br />

+<br />

+ + σ S<br />

j−<br />

= −S<br />

j<br />

for j > ν<br />

1 1<br />

L<br />

1<br />

1<br />

Assuming that<br />

ν =<br />

t ,then<br />

σ S σ S + L + S = −S<br />

for j t (5- 18)<br />

t j−t<br />

+<br />

t−1 j−t+<br />

1<br />

σ<br />

1 j−1<br />

j<br />

><br />

e.g. j = t + 1, we have<br />

σ S<br />

t<br />

1<br />

+ σ<br />

t−1S2<br />

+ L+<br />

σ<br />

1St<br />

= −St+<br />

1<br />

The following matrix equation is obtained for the symmetric<br />

function<br />

σ<br />

j<br />

as follows:<br />

S'<br />

Λ =<br />

⎡S<br />

⎢<br />

S<br />

⎢<br />

⎢ M<br />

⎢<br />

⎣S<br />

1<br />

2<br />

t<br />

S<br />

S<br />

S<br />

M<br />

2<br />

3<br />

t+<br />

1<br />

L<br />

L<br />

S<br />

S<br />

t−1<br />

S<br />

M<br />

t<br />

2t−2<br />

S<br />

S<br />

S<br />

t<br />

t+<br />

1<br />

M<br />

2t−1<br />

⎤⎡<br />

σ<br />

t<br />

⎥⎢<br />

σ<br />

⎥⎢<br />

t−<br />

⎥⎢<br />

M<br />

⎥⎢<br />

⎦⎣<br />

σ<br />

1<br />

1<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

=<br />

⎡−<br />

⎢<br />

−<br />

⎢<br />

⎢<br />

⎢<br />

⎣ −<br />

S<br />

S<br />

M<br />

S<br />

t+<br />

1<br />

t+<br />

2<br />

2t<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

(5- 19)<br />

It can be shown that S'<br />

is nonsingular if the received word<br />

contains exactly t errors. It also can be shown that<br />

S'<br />

is singular<br />

if fewer than t errors occur. If<br />

S'<br />

is singular, then the rightmost<br />

column and bottom rows can be removed and the determinant of<br />

the resulting matrix computed.


This process is repeated until one reaches a non-singular matrix.<br />

The coefficients of the error-locator polynomial are then founded<br />

by the use of standard algebraic technique.<br />

Once the ν error locations are known, hen we can use the<br />

relation between syndrome components and error locations.<br />

[eq. (5-8)]<br />

The syndrome components can be computed by<br />

S<br />

j<br />

j<br />

= e(<br />

α ) =<br />

n−1<br />

∑<br />

k=<br />

0<br />

e<br />

k<br />

j<br />

⋅ ( α )<br />

k<br />

=<br />

ν<br />

∑<br />

l=<br />

1<br />

e<br />

i<br />

l<br />

⋅ Z<br />

j<br />

l<br />

where<br />

e(<br />

x)<br />

= e<br />

0<br />

+ e<br />

1<br />

x + e<br />

2<br />

x<br />

2<br />

+ L+<br />

e<br />

n<br />

−<br />

∑ − 1<br />

n 1<br />

n− 1<br />

x =<br />

k=<br />

0<br />

e<br />

k<br />

x<br />

k<br />

Thus we have<br />

S<br />

S<br />

S<br />

1<br />

2<br />

2t<br />

= e<br />

i<br />

= e<br />

M<br />

= e<br />

i<br />

i<br />

1<br />

1<br />

1<br />

Z<br />

Z<br />

Z<br />

1<br />

2<br />

1<br />

2t<br />

1<br />

+ e<br />

i<br />

+ e<br />

2<br />

i<br />

2<br />

+ e<br />

i<br />

Z<br />

2<br />

Z<br />

2<br />

2<br />

2<br />

Z<br />

+ L+<br />

e<br />

2t<br />

2<br />

+ L + e<br />

+ L+<br />

e<br />

i<br />

ν<br />

i<br />

ν<br />

Z<br />

i<br />

ν<br />

2<br />

ν<br />

Z<br />

ν<br />

Z<br />

2t<br />

ν


The system equations can be reduced to the following matrix<br />

form:<br />

D ⋅ e<br />

⎡ Z1<br />

⎢ 2<br />

Z<br />

= ⎢<br />

1<br />

⎢ M<br />

⎢<br />

⎣Z1<br />

ν<br />

Z<br />

Z<br />

M<br />

Z<br />

2<br />

2<br />

2<br />

ν<br />

2<br />

L<br />

L<br />

L<br />

Z<br />

Z<br />

Z<br />

ν<br />

2<br />

ν<br />

M<br />

ν<br />

ν<br />

⎤⎡ei<br />

⎥⎢<br />

e<br />

⎥⎢<br />

i<br />

⎥⎢<br />

M<br />

⎥⎢<br />

⎦⎣<br />

ei<br />

1<br />

2<br />

ν<br />

⎤<br />

⎥<br />

⎥ =<br />

⎥<br />

⎥<br />

⎦<br />

⎡S<br />

⎢<br />

S<br />

⎢<br />

⎢ M<br />

⎢<br />

⎣S<br />

1<br />

2<br />

ν<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

(5- 20)<br />

Decoding is completed by solving for the { e il<br />

}<br />

This is a general case of nonbinary <strong>BCH</strong> codes.<br />

Example (5.9)<br />

Consider a nonbinary <strong>BCH</strong> code (7, 3) of length 7 (symbols) this<br />

code is constructed over GF(8) with generator polynomial<br />

2<br />

3<br />

4<br />

g(<br />

x)<br />

= ( x − α)(<br />

x − α )( x − α )( x − α )<br />

4 3 3 2 3<br />

= x + α x + x + α<br />

Let the received polynomial be<br />

r<br />

2 6 2 4 3 5 2<br />

( x)<br />

= α x + α x + x + α x<br />

Then the syndrome components are<br />

S<br />

3<br />

= α , S = S = S = α<br />

6<br />

3<br />

4<br />

1 2<br />

α ,<br />

3<br />

α ,<br />

4


Eq. (5-19) gives<br />

S' Λ =<br />

6<br />

⎡α<br />

⎢ 3<br />

⎣α<br />

3<br />

α ⎤⎡σ<br />

2 ⎤<br />

4 ⎥⎢<br />

α σ<br />

⎥<br />

⎦⎣<br />

1 ⎦<br />

=<br />

4<br />

⎡α<br />

⎤<br />

⎢ 3 ⎥<br />

⎣α<br />

⎦<br />

⇒ σ<br />

1<br />

2<br />

= α ,<br />

σ<br />

2<br />

= α<br />

2 2<br />

Thus L(<br />

x)<br />

= αx<br />

+ α x + 1<br />

The error locations are founded to be<br />

Z<br />

1<br />

3<br />

= α<br />

= α<br />

7−4<br />

,<br />

Z<br />

2<br />

5<br />

= α<br />

= α<br />

7−2<br />

⇒ e(<br />

x)<br />

= e<br />

3<br />

x<br />

3<br />

+ e<br />

5<br />

x<br />

5<br />

Eq. (5-20) gives<br />

D<br />

3<br />

⎡α<br />

= ⎢ 6<br />

⎣α<br />

5<br />

α ⎤⎡e<br />

3 ⎥⎢<br />

α ⎦⎣e<br />

6<br />

⎤ ⎡α<br />

⎤<br />

⎥ = ⎢ ⎥<br />

⎦ ⎣α<br />

⎦<br />

3<br />

⋅ e<br />

3<br />

5<br />

The error magnitudes are found to be<br />

e<br />

3<br />

= α,<br />

e<br />

5<br />

5<br />

= α<br />

⇒ e(<br />

x)<br />

= αx<br />

3<br />

5<br />

+ α x<br />

5<br />

Finally<br />

c<br />

2 6 5 5 2 4 3 3 5 2<br />

( x)<br />

= e(<br />

x)<br />

+ r(<br />

x)<br />

= α x + α x + α x + α x + α x<br />

Note that m = 3, the primitive polynomial is<br />

p ( x)<br />

= 1 + x + x<br />

3


14.<strong>BCH</strong> <strong>Codes</strong> as Industry Standards<br />

(a) (511, 493) <strong>BCH</strong> code in ITU-T. Rec. H.261 “video codec for<br />

audiovisual service at kbit/s” a video coding a standard used for<br />

video conferencing and video phone.<br />

n = 511<br />

k = 493<br />

m = 9<br />

n − k = 18<br />

t = 2<br />

(b) (40, 32) <strong>BCH</strong> code in ATM (Asynchronous Transfer Mode) pp.<br />

223-227.<br />

This is shortened cyclic code that can correct 1-bit error and<br />

detect 2-bit errors.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!