Documente Academic
Documente Profesional
Documente Cultură
1. Introduction
The Reed-Solomon codes (RS codes) are nonbinary cyclic codes with code symbols from a Galois field. They were discovered in 1960 by I. Reed and G. Solomon. The work was done when they were at MIT Laboratory.
In the decades since their discovery, RS codes have enjoyed countless applications from compact discs and digital TV in living room to spacecraft and satellite in outer space.
The most important RS codes are codes with symbols from GF( 2m ).
One of the most important features of RS codes is that the minimum distance of an (n, k) RS code is nk+1. Codes of this kind are called maximum-distance-separable codes.
For
any
positive
integer
t 2m 1 ,
there
exists
t-symbol-error-correcting RS code with symbols from GF( 2m ) and the following parameters:
n = 2m 1 n k = 2t k = 2 m 1 2t d min = 2t + 1 = n k + 1
(6- 1)
g ( x ) = ( x + )( x + 2 ) L ( x + 2 t ) = g 0 + g 1 x + g 2 x 2 + L + g 2 t 1 x 2 t 1 + x 2 t
2)
m Where g i GF( 2 )
2 2t Note that g(x) has , , L , as roots.
(6-
Example:
3. Encoding of RS Codes
Let
m ( x ) = m 0 + m1 x + L + m k 1 x k 1
be
the
message
polynomial to be encoded
m Where m i GF( 2 ) and k = n - 2t.
x 2 t m ( x ) = a( x ) g ( x ) + b ( x )
2 t 1 where b( x ) = b0 + b1 x + L + b2 t 1 x
(6- 3) (6- 4)
is the remainder.
2t Then b( x ) + x m( x ) is the codeword polynomial for the
message m(x).
L
X 2 t a( X )
Suppose an (n, k) RS code with symbols from GF( 2m ) is used for encoding binary data. A message of km bits is first divided into k m-bit bytes. Each m-bit byte is regarded as a symbol in GF( 2m ). The k-byte message is then encoded into n-byte codeword based on the RS encoding rule.
By doing this, we actually expand a RS code with symbols from GF( 2m ) into a binary (nm, km) linear code, called a binary RS code.
Binary RS codes are very effective in correcting bursts of bit errors as long as no more than t bytes are affected.
5. Decoding of RS Codes
RS codes are actually a special class of nonbinary BCH codes.
Decoding of a RS code is similar to the decoding of a BCH code except an additional step is needed.
e( x ) = r( x ) c( x ) = e 0 + e 1 x + e 2 x 2 L + e n 1 x n 1
Where e i = ri c i is a symbol in GF( 2m ).
(6- 5)
e ( x ) = e j1 x j1 + e j2 x j2 + L + e j x j
The error-location numbers are
(6- 6)
Z j1 = j1 , Z j2 = j2 , L , Z j = j
The error values are
e j1 , e j2 , L , e j
Thus, in decoding a RS code, we not only have to determine the error-locations but also have to evaluate the error values.
If there are s erasure symbols and v errors in the received polynomial r(x), then the (n, k) RS decoder and correct these erasure symbols and errors if 2v + s d 1 = n k The received polynomial is represented by
r ( x ) = c ( x ) + e ( x ) + e * ( x ) = c ( x ) + u( x )
Where e(x) and are e*(x) are the error and erasure polynomials, respectively.
Suppose there are errors, where 2 n k at positions iw for w = 1, 2, L , . The objective of the RS decoder is to find the number of errors, their positions and then their values.
7. Syndrome Computation
n1 Let r ( x ) = r0 + r1 x + L + rn1 x
(6-
7)
2 2t The generator polynomial has , , L , as roots. i i i Since c ( ) = m( ) g ( ), i = 1, 2, L, 2t
r ( ) = c ( ) + e ( ) = e ( ) = e j ij
i i i i j =0
n 1
(6- 8)
S = ( S1 , S 2 , L, S 2 t )
i where S i = r ( )
r ( x ) = a( x )( x + i ) + bi
m where bi = GF( 2 ) i Thus, S i = r ( ) = bi
r( X )
L
i
Figure 6.14 Syndrome computation circuits for Reed-Solomon codes: (a) over GF(2m); (b) in binary form.
O(n 3 ) .
In 1967, E. Berlekamp demonstrated an extremely efficient algorithm for both BCH and RS codes. Berlekamps algorithm allowed for the first time the possibility of a quick and efficient decoding of dozens of symbol errors in some powerful RS codes. Ref: (1) E. R. Berlekamp, On Decoding IEEE Binary Trans.
Bose-Chaudhuri-Hocquenghem
Codes,
Information Theory, pp. 577-580, Oct. 1965. (2) E. R. Berlekamp, Nonbinary BCH Decoding, Int.
Symposium on Information Theory, Italy, 1967. (3) E. R. Berlekamp, Algebraic Coding Theory, McGraw Hill, New York, 1968.
9. Berlekamps Iterative Method for Finding L(z) [Chen / Reed pp. 263-269]
The Berlekamp-Massey algorithm is an efficient algorithm for determining the error-locator polynomial.
The algorithm solves the following modified problem: Find the smallest for 2t such that the system of eq. (5-19) has a solution and find a vector ( 1 , 2 , L , ) that is a solution. Eq. (5-19) can be expressed as
S j = i S ji
i =1
for
j = + 1, + 2, L, 2t
(6- 9)
For a fixed ( x ) , eq. (6-9) is the equation for the classical auto-regressive filter. It is known that such a filter can be implemented as a linear-feedback shift register (LFSR) with taps, given by the coefficients of ( x ) .
is
designed
for
producing
the
syndrome
components
( x ) = 1 + 1 x + 2 x 2 + L + x
The length Li of this shift register can be greater than the
(i) degree of ( x ) . (i) A shift register is designated by the pair ( ( x ) , Li ) . At the
start of the i-th iteration, it is assumed that a list of LFSR had been constructed,
(1) ( 2) ( i 1 ) i.e. the list ( ( x ) , L1 ), ( ( x ) , L2 ), L , ( ( x ) , Li 1 ) for
L1 L2 L Li 1 already is found.
The operation principle of the Berlekamp-Massey algorithm is iterative and inductive: At the iteration step i, compute the next output of the (i-1)-th LFSR to obtain the next estimate of the i-th syndrome as follows:
S i = ( ji 1) S i j
j =1
Li 1
(6-
10)
i = S i S i = S i + ( ji 1 ) S i j
j =1
Li 1
(6-
i = ( ji 1 ) S i j
j =0
Li 1
(6- 12)
and the i-th iteration is complete. Otherwise, the LFSR are modified as follows:
( x ) = ( x ) + i A( x ) = ( (li 1) + i a l ) x l
(i) (i) l =0 Li
L1
(6- 13)
A flowchart of the Berlehamp-Massey algorithm for the errors-only decoding of (nonbinary & binary) BCH codes as RS codes is shown in Fig. 6.7.
i = 0, 0 = 1, u = 0 ( 0 ) ( x ) = ( 1 ) ( x ) = 1, L0 = 0
i = i +1
i = Si + (li 1 ) Si 1
l =1
Li 1
i = 0?
( i ) ( x ) = ( i 1) ( x ), Li = Li 1
( i ) ( x ) = ( i 1 ) ( x ) i u1 x i u ( u1 ) ( x )
Li 1 i Li 1 ? Li = Li 1 u=i Li = i Li 1
i = n k?
Example: ( Example 6.9 p.269) For the (15, 9) RS code over GF( 2 4 )
m = 4, 15 = 1 r ( x ) = x 8 + 11 x 7 + 8 x 5 + 10 x 4 + 4 x 3 + 3 x 2 + 8 x + 12 S1 = 1 S2 = 1 S3 = 5 S4 = 1 S5 = 0 S6 = 10
Use the Berlekamp-Massey algorithm to find the error-locator polynomial.
Solution: n k = 6 For i = 0
0 = 1, u = 0 ( 1) ( x ) = 1 ( 0 ) ( x ) = 1 L0 = 0
For i = 1
1 = S1 + (li 1) S i l = S1 = 1
l =0
Li 1
For i = 2
For i = 3
For i = 4
S4 = 1 i 1 = 3 Li 1 = L3 = 2 ( 3) ( 2) 4 = S4 + 1 S 3 + 1 S 2 = S4 + S 3 + 10 S 2 = 1 + 5 + 10 =0 ( 4 ) ( x ) = ( 3 ) ( x ) = 1 + x + 10 x 2 L4 = L3 = 2
For i = 5
( 4 ) ( x ) = 1 + x + 10 x 2
For i = 6
S6 = 10 i 1 = 5 6 = S6 + (15 ) S5 + (25 ) S4 = 10 + 0 + 10 1 =0 ( 6 ) ( x ) = ( 5 ) ( x ) = 1 + x + 10 x 2
Li 1 = L5 = 2
10 2 Thus we have ( x ) = 1 + x + x