Sunteți pe pagina 1din 3

Reed-Solomon Codes

Reed-Solomon Codes are error-correcting codes with applications ranging


from data retrieval to bar codes and QR codes in our daily lives to sending
transmissions to and from spacecrafts launched in deep-space missions. The
Reed-Solomon (RS) Code was discovered by Irving Reed and Gus Solomon
and the work was done when they were at MIT Lab. Reed-Solomon (RS)
Codes are non binary cyclic codes with code symbols from a Galois field.
Reed-Solomon Codes have been an integral contributor to the
telecommunications revolution that took place in the last half of the
twentieth century. In particular, Reed-Solomon codes are the most frequently
used digital error control codes in the world, due their usage in computer
memory and non-volatile memory applications. Lists of significant
applications include the Digital Audio Disk, Deep Space Telecommunication
Systems, error Control for Systems with Feedback, Spread-Spectrum
Systems, and Computer Memory.
The most important RS codes are codes with symbols from GF (m 2). 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-distanceseparable codes.

RS Codes with Symbols from GF (m2)


Let be a primitive element in GF (m 2). For any positive integer t 2m- 1 ,
there exists a t-symbol-error-correcting RS code with symbols from GF ( m 2 )
and the following parameters:
n = 2m- 1
n k = 2t
k = 2m - 1 - 2t
dmin = 2t + 1 = n k + 1

The generator polynomial is:


g(x) = (x+ ) (x+ 2) (x+ 2t)

g(x) = g0 + g1x + g2x2 + + g2t-1x2t-1 +


Where gi GF (2m)

x2t

Encoding of RS Codes
Let m(x) = m0 + m1x + ... + mk-1xk-1 be the message polynomial to be encoded
where mi GF (m2) and k = n 2t.
Dividing x2tm(x) by g(x), we have:
x2tm(x) = a(x)g(x) + b(x)
remainder.

where b(x) = b0 + b1x + + b2t-1x2t-1 is the

Then b(x) + x2tm(x) is the codeword polynomial for the message m(x).

Decoding of RS Codes
RS codes are actually a special class of non binary BCH (Bose Chaudhuri and
Hocquenghem) codes. Decoding of a RS code is similar to the decoding of a
BCH code except an additional step is needed.
Let c(x) = c0 + c1x + +cn-1xn-1, ci GF (m2) and r(x) = r0 + r1x + + rn-1xn-1,
ri GF (m2)
Then the error polynomial is:
e(x) = r(x) - c(x)
e(x) = e0 + e1x + e2x + + en-1xn-1
(m2).

Where ei = ri ci is a symbol in GF

Suppose e(x) has M errors at the locations xj1, xj2, , xjm, then
e(x) = ej1xj1 + ej2xj2 + + ejmxjm
The error location numbers are:
Zj1 = j1 , Zj2 = j2 , , Zjm = jm
The error values are:
ej1 , ej2 , ... , ejm
Thus, in decoding a RS code, we not only have to determine the errorlocations 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 is used to 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 e*(x) are the error and erasure polynomials, respectively.

S-ar putea să vă placă și