330 likes | 750 Views
Introduction to Reed-Solomon Coding ( Part II ). Reed-Solomon (RS) code. The RS code is a cyclic symbol error-correcting code. An RS codeword will consist of I information or message symbols, together with P parity or check symbols. The word length is N=I+P .
E N D
Reed-Solomon (RS) code • The RS code is a cyclic symbol error-correcting code. • An RS codeword will consist of I information or message symbols, together with P parity or check symbols. The word length is N=I+P. • The symbols in an RS codeword are usually not binary, i.e., each symbol is represent by more than one bit. In fact, a favorite choice is to use 8-bit symbols. This is related to the fact that most computers have word length of 8 bits or multiples of 8 bits.
In order to be able to correct ‘t’ symbol errors, the minimum distance of the code words ‘D’ is given by D=2t+1. • If the minimum distance of an RS code is D, and the word length is N, then the number of message symbols I in a word is given by I = N – ( D – 1 ) • Combining with the formula N=I+P, above, P = D – 1
An example of the structure of a code word in a practical RS code is as follow: 1 223 255 32 parity symbols 223 message symbols Each symbol consists of 8 bits. Thus, each codeword has 255 symbols, or 255*8 bits, consisting of 223*8 message bits and 32*8 check bits. This code is capable of correcting 16 symbol errors.
Relationships between RS coding and Finite Field GF(Fn) • The symbols used in the RS code must be elements of GF(Fn), where Fn=22n+1. • It is convenient to choose the codeword length N=2n+1. • The number of bits needed to represent a symbol is determined by the number of different symbols used, which is equal to 22n+1. Therefore, for Fn=22n+1, the number of bits/symbol is 2n+1.
To construct an RS code of wordlengthEqual to 8 symbols,and capable of correcting 2 symbol errors • Since N=8=2n+1, we choose n=2, i.e., GF(F2)= GF(222+1)=GF(17). • The symbols in the RS code will be the elements of GF(17). Also, the number of bits/symbol will be 22+1=5. • In order to correct 2 errors, the minimum distance of the codeword is D=2t+1=2*2+1=5. • The number of message codeword is I=N-(D-1)=8-(5-1)=4. • The number of check symbols is P=N-I=8-4=4.
To construct an RS code with minimum distance D, we first define a generator polynomial as follows:
Assume the message symbols to be • Let us form f(Z)=Z7+2Z6+3Z5+2Z4 of degree N-1=7, using the message symbols as coefficients. • In order to generate a “codeword in a polynomial C(Z),” which is a multiple of g(Z), we proceed as follows: f(Z) = q(Z)g(Z) + R(Z) where q(Z) = quotient polynomial, g(Z) = generator polynomial, R(Z) = residue polynomial. • C(Z) =q(Z)g(Z) = f(Z) - R(Z)
Thus, f(Z) = Z7+2Z6+3Z5+2Z4 g(Z) = Z4+4Z3+8Z2-8Z+4 q(Z) = Z3-2Z2+3Z-3 R(Z) = 2Z3+5Z2-2Z+12 • The encoded codeword is C(Z) =q(Z)g(Z) = f(Z) - R(Z) = Z7+2Z6+3Z5+2Z4 -2Z3-5Z2+2Z-12 = Z7+2Z6+3Z5+2Z4 -2Z3-5Z2+2Z+5
The codewords have the properties C(2i) =q(2i)g(2i) = q(2i)0 = 0, for i = 1,2,3,4 • Thus, it can be shown that C(21) =0 C(22) =0 C(23) =0 C(24) =0
It can be shown also that if there are errors in the received codewords: r(21)≠0 r(22)≠0 r(23)≠0 r(24)≠0
Suppose 2 errors exist in the received codeword at the positions underlined below: r(Z) = 5Z0+2Z1+9Z2+15Z3+2Z4+1Z5+2Z6+Z7 or, written differently, (r0,r1,r2,…,r7) = (5,2,9,15,2,1,2,1) = (5,2,12-3,15,2,3-2,2,1) • The error pattern (e0,e1,e2,…,e7) is (0,0,-3,0,0,-2,0,0) or (0,0,14,0,0,15,0,0)
The received pattern can be rewritten as (C0,C1,C2,…,C7) + (e0,e1,e2,…,e7) = (5,2,12,15,2,3,2,1) + (0,0,14,0,0,15,0,0) where (C0,C1,C2,…,C7) are the uncorrupted symbols.
The syndromes Sk can be computed by for k=1,2,…,D-1=2t (i.e., k=1,2,3,4).
The problem in decoding the RS code is to try to determine the value of ei , i=0,1,2,…,7. • Since ei are not known, we let Yi and Xi be the ith error amplitude and the ith error location, respectively. • Thus, the syndrome Sk can be re-expressed as where t is the maximum number of symbol errors that can be corrected.
Hence, ∴ S1=-8, S2=-5, S3=11, S4 = -1. • Also,
Since • The rest of the transform, i.e., E0, E5, E6, E7, can be computed from those already known, i.e., E1, E2, E3, E4. • Let us define a generating function as in which it is noted that E8= E0, E9= E1 , etc.
Hence, where
σ(x) is called the “error location polynomial” since its roots help to locate the errors: • It can be shown that σ(x) can be obtained by the “continued fraction method” as
Since • Multiplying by • Substituting • ∴ • Thus,
Thus, • Since the inverse DFT of Ek is defined by • Since E0, ..., E7 are now known, e0, ..., e7 can be solved.
Thus, • ∵ received codeword = (5,2,9,15,2,1,2,1) error pattern = (0,0,14,0,0,15,0,0) • ∴ corrected codeword = (5,2,9,15,2,1,2,1) - (0,0,14,0,0,15,0,0) = (5,2,-5,15,2,-14,2,1) = (5,2,12,15,2,3,2,1)