64 Xilinx Development System
Xilinx System Generator v2.1 Reference Guide
type of errors that can be corrected depends on the characteristics of the Reed-
Solomon code.
Reed-Solomon codes are a subset of BCH (Bose, Chaudhuri, and Hocquenghem)
codes and are linear block codes. A Reed-Solomon code is specified as RS(n,k) with s-
bit symbols. Reed-Solomon codes are usually referred to as (n,k) codes, where n is the
total number of symbols in a code block and k is the number of information or data
symbols. Normally, n = 2
(sw)
-1, where sw is symbol width. If n is less than this, the
code is referred to as a shortened code. The RS Encoder core handles both full length
and shortened codes.
The RS Encoder block generates systematic code blocks. This means that the encoder
takes k data symbols of s bits each and adds parity symbols to make an n symbol
codeword. There are (n-k) parity symbols of s bits each. The following diagram shows
a typical Reed-Solomon codeword. This is known as a Systematic code because the
data is left unchanged and the parity symbols are appended.
Figure 3-42: Example of a Reed Solomon codeword
A Reed-Solomon code is characterized by two polynomials: the field polynomial and
the generator polynomial. The field polynomial defines the Galois field, of which the
symbols are members. The generator polynomial defines how the check symbols are
generated. Both of these polynomials are usually defined in the specification for any
particular Reed-Solomon code. The Reed-Solomon codeword is generated using the
generator polynomial. All valid codewords are exactly divisible by the generator
polynomial.
The general form of the generator polynomial is:
and the codeword is constructed using:
where
g(x) is the generator polynomial
i(x) is the information block
c(x) is a valid codeword
x is referred to as the field polynomial.
For example: Generator for RS(204,188) is:
gx() xa
i
–()xa
i 1+
–()= xa
i 2t+
–()
. . . .
cx() gx()ix()⋅=
gx() xa
0
–()xa
1
–()xa
2
–()= xa
15
–()
. . . .