Class Report 林格名 : Reed Solomon Encoder
Reed-Solomom Error Correction When a codeword is decoded, there are three possible outcomes –If 2s + r < 2t (s errors, r erasures) then the original transmitted code word will always be recovered –The decoder will detect that it cannot recover the original code word and indicate this fact –The decoder will mis-decode and recover an incorrect code word without any indication The probability of each of the three possibilities depends on the particular Reed-Solomom code and on the number and distribution of errors Reed-Solomon codes are particularly suited to correcting burst errors (a series of bit errors) One symbol error means one bit or more than one bits in a symbol are incorrect
RS(15,9) Example Parameters Any valid code polynomial must a multiple of the generator polynomial It implies that it must have roots the same 2t consecutive powers of that form the roots of g(x) Block lengthn = 15 symbols Message lengthk = 9 symbols Code rater = k/n = 60% Parity-check symbols lengthn – k = 6 symbols Minimum distanced = n – k + 1 symbols Error-correction capabilityt = (n – k)/2 = 3 symbols Finite field orderq = n + 1 = 2 m = 2 4 = 16 symbols Field generatorp(x) = x 4 + x + 1 Code generator polynomialg(x) = x 6 + 10 x 5 + 14 x 4 + 4 x 3 + 6 x 2 + 9 x + 6
DVB RS(204,188) Code Reed-Soromon RS(204,188,8) is applied. Code length 204 Data length 188 Correct up to 8 random erroneous bytes Overhead 16/204 = 7.84% Code Generator Polynomial with = 02 HEX g(x) = (x+ 0 )(x+ 1 )(x+ 2 ) (x+ 15 ) Field Generator Polynomial p(x) = x 8 + x 4 + x 3 + x Parity bytes187 bytes Randomized Data SYNCn Reed-Solomon RS(204,188,8) error protected packets
RS(n,k,t) Code Encoding 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 n – k = 2t d k-1 d k-2 d1d1 d0d0 c0c0 c1c1 c 2t-2 c 2t-1 User Data Parity
Encoding of Systematic RS Codes To encode RS code in a systematic manner, the codeword polynomials generated by a use of the division algorithm. Dividing the shifted message polynomial x d-1 m(x) by g(x), we obtain where g(x) is the generator polynomial and p(x) is the parity Check polynomial. The codeword vector will be in a form of c = (p 0, p 1, , p d-2, m 0, m 1, , m k-1 ) Example: Consider the (15,9) RS code with g(x) = x 6 + 10 x 5 + 14 x 4 + 4 x 3 + 6 x 2 + 9 x + and m(x) = 11 x. Then, c(x) = x 6 m(x) + (x 6 m(x) mod g(x)) = (x 6 )( 11 x) + (x 6 )( 11 x) mode g(x) = 11 x 7 + 8 x 5 + 10 x 4 + 4 x 3 + 14 x 2 + 8 x + 12 The message symbol appears unchanged in the encode codeword.
Finding Parity Check Symbols by LFSR RS is a cyclic code and often implemented as a LFSR with GF(2 m ) operators Example Input Data Parity Path Output Data g0g0 g1g1 g2g2 g 2t-1 Galois Multiply Galois Addition s-bit register 66 55 55 22 LFSR: Linear Feedback Shift Register (parity byte, input messages) = ( ) L1L1 L2L2 L3L3 L4L4 G(x) = (x + 0 )(x + 1 )(x + 2 )(x + 3 )
Finite Field – Galois Field GF(2 4 ) Power Repre. Binary Repre. Polynomial Representation 2 22 3 33 4 5 + 2 6 2 + 3 7 + 3 8 2 99 1 0 + 3 + 2 + 2 + 3 + 2 + 3 2 + 3 3 GF Addition and subtraction is the same by using the exclusive OR operation Example of GF multiplication 4 5 = (1 + ) ( + 2 ) = + 2 + 2 + 3 = + 3 = 9 Example of GF division 4 / 10 = 4 (15-10) = 9 Primitive polynomial: x 4 +x +1 = 0
Example of Reed-Solomon Encoder DDDD Output Input Control jj kk (j+k) mod 15 66 00 44 12 jj kk j kj k g0g0 g1g1 g2g2 g3g3 Message: m(x) = x x x x x x 9 + 7x 8 + 8x 7 + 9x x x 4 Generator: g(x) = x x 3 + 3x 2 + x + 12 Remainder: r(x) = 3x 3 + 3x x + 12 Codeword: c(x) = m(x) + r(x) ( ) Parity ( ) Linear Feedback Shift Register
Pipelined Polynomial Division for (15,11) Reed-Solomon Encoder Initial g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch g(x) latch Message: m(x) = x x x x x x 9 + 7x 8 + 8x 7 + 9x x x 4 Generator: g(x) = x x 3 + 3x 2 + x + 12 Remainder: r(x) = 3x 3 + 3x x + 12 Codeword: c(x) = m(x) + r(x)
Polynomial Division x 14 x 13 x 12 x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 x x 13x 7x 10x x 0x 12x 0x 2x 11x 1x Message: x x x x x x 9 + 7x 8 + 8x 7 + 9x x x 4 Generator: x x 3 + 3x 2 + x + 12, Remainder: 3x 3 + 3x x + 12, c(x) = m(x) + r(x)