1. Introduction to
Reed-Solomon Code
Peng Xu
C5000 Software Development Group
Texas Instruments Inc.
Stafford, Texas
2. What is Reed-Solomon Code?
⊠Word-oriented non-binary BCH code
⊠Simplicity, Robustness and good
performance for burst errors
⊠Code block length N = 2 â 1
m
⊠t errors correcting capacity with 2t parity
check words
⊠Galois Field based coding technique
3. Generator Polynomial
⊠The generator polynomial determines the
properties of the code:
G(x) = (x âα m0 +1
)(x âα m0 +2
) (x âα m0 +2t
)
2t â1
= x + g2tâ1x
2t
+ + g1x + g0x 0
where α is a primitive element of GF ( 2 m )
m0 is some integer usually set to 0
4. Encoding RS Codes
C ( x) = D( x) â x 2t â [ D( x) â x 2t mod G ( x)]
where C(x) is the transmitted codeword polynomial, of
degree N-1
D(x) is the user data polynomial, of degree K-1
G(x) is the generator polynomial of the code, of
degree 2t
and N â K = 2t
d K â1 d K â 2 d1 d0 c2t â1 c2t â 2 c1 c0
User Data Parity
5. Encoding RS Codes
â d0 , ,â d K â 2 , â d K â1
+
-D(x)
â g 2t â1 â g1 â g0
+ +
c2t â1 c2 t â 2 c1 c0
RS Encoder Polynomial Remainder Circuit
6. Decoding RS Codes
let R(x) = C(x) + E(x)
where R(x) is the received message polynomial with errors
C(x) is the transmitted correct codeword polynomial
E(x) is the unknown error polynomial
let S(x) = R(x) mod G(x) = E(x) mod G(x)
where S(x) is the syndrome of the received message
G(x) is the generator polynomial of the code
7. RS Decoding Procedure
1. Calculate Syndrome Ei = r(αi ) i = 0,1,...,2t â1
2. Calculate Error Locator Polynomial Î (x)
using BerlekampâMassey algorithm
3. Determine the roots of Î (x) which are related
to the error locations using Chien Search
4. Calculate the coefficients of the error evaluator
polynomial âŠ(x) using Forney Algorithm
5. Calculate the error magnitude
6. Recover the corrected codeword
8. Syndrome &
Error Locator polynomial
Syndrome Ei = r (α i ) i = 0,1,...,2t â 1
Error Locator polynomial v
Î( x) = â (1 â α ) = 1 + Î1 x1 +
ljx
Îv xv
j =1
where the are the index of the errors
lj v
Et â1 E0 Î1 Et
=
E2t â2 Et â1 Î t E2t â1
9. Berlekamp-Massey Algorithm
This algorithm was developed by Berlekmap
and Massey to solve the problem of
determining the error locator polynomial.
It reduces the complexity from O(t 3 ) of
matrix inversion to O(t 2 ) .
10. Chien Search
Factoring the roots of the error locator
polynomial is typically done by evaluating
it at every point and testing to see if the
result is zero.
The Chien search is a way of doing this
which has a fairly regular structure.
11. Forney algorithm
Error Evaluator polynomial
E ( x)Î( x) = âŠ( x)( x n â 1)
Error Value
α k âŠ(α â k )
ek =
ÎâČ(α âk )
12. Future Tasks
⊠More flexible generator polynomial?
⊠More Logarithm tables of GF?
⊠Convert C54x to C55x codes?
⊠Application Notes?
⊠MoreâŠ