What is Reed-Solomon?
Reed-Solomon codecs (coder/decoders) are all about error correction. The maths behind RS codes was developed
by Irving Reed and Gus Solomon back in 1959, hence the name. In recent years this type of coding has been used
in many applications where data is transmitted and received. Examples include cellphones, digital TV broadcast,
space communications and CD players. In fact any application where data is likely to be corrupted by noise or other
error
sources. Users are likely to be any company involved in wireless communications, communications or data transmission.
RS codes are specified in many data transmission standards, e.g. the ATSC digital TV standard.
RS codes provide extremely good error correction. It is one of the most effective forms of coding for errors
that occur in a burst. For this reason they are often coupled with Viterbi codecs in a system. Viterbi (or convolution)
coding is another type of error correction that is very good at random errors.
RS is a block-code, i.e. data is processed a block at a time. Each block contains n words (or symbols). Of the
n symbols, k are the original information symbols to be transmitted and (n-k) are extra check symbols added by
the RS Encoder. The RS Decoder is able to correct (n-k)/2 wrong symbols, no matter where they are in the block.
The core can report how many errors were found and also attempts to determine if it failed to correct the block,
due to too many errors.
Erasures are an optional extra that double the number of errors that can be corrected at the expense of a much
bigger circuit. An erased symbol is one that is coming in and the system already knows it has an error. An extra
input to the Decoder tells it the symbol is erased. This sort of information can come from a threshold detector
in a demodulator for example. Therefore the system designer has to add extra hardware to his board. For this reason
erasure decoding isn't that common.
The coding is based on Galois Field arithmetic and this is where terms like "primitive polynomial"
come from. The user doesn't actually need to know anything about this.
Back to the Xilinx Reed Solomon Solution page
What files are sent by the Reed-Solomon configuration tool?
Once you have submitted a request via the web-based configuration and download tool, you will be
emailed a zip or tar file containing the following items:
- EDIF netlist
This is the netlist for the Reed-Solomon core, elaborated with your required parameters.
- VHDL and Verilog instantiation examples
These show you how to instantiate the cores into your VHDL or Verilog design.
- VHDL and Verilog behavioral models
These models allow you to perform quick functional simulations. The back-annotated VHDL or Verilog netlist
should be used for accurate timing simulation.
- Datasheet
Back to the Xilinx Reed Solomon Solution page
What size is the core?
The area of the core increases with the parameters n, n-k and the symbol width. Some example configurations
are shown in the data sheets. These can be used to give a ballpark figure for your particular set of parameters.
To obtain a precise figure, the core must be generated and passed through the Xilinx place and route tools. The
CLB counts can be reduced slightly by selecting the option to map primary I/O registers into IOBs during placement.
This option should certainly be selected if the core I/Os are to be connected directly onto a PCB via the FPGA
package pins. This will give lower output clock-to-out times and predictable set up and hold times. The results
in the data sheet were obtained with the "-c 1" packfactor option applied during mapping. This causes
the Xilinx mapper to pack as much logic as possible into each CLB.
Back to the Xilinx Reed Solomon Solution page
What is the maximum clock frequency?
Performance increases as n, n-k and the symbol width decrease. The examples in the data sheet can be used to
give ballpark figures for your particular set of parameters. It is important that the core's clock input, "clk",
is driven by a global buffer ("bufg") component. This guarantees low clock skew and minimizes routing
delays on the clock net. It is also important to set a maximum period constraint on the core clock input.
The core asynchronous reset input, "reset", should be driven by the global set/reset driver using
the appropriate "startup" component. Information on driving GSR and "startup" components is
available in the Xilinx on-line documentation. It may be possible to improve slightly on the values in the data
sheet by trying different seed values for the place and route software. A seed value of 1 was used in the data
sheet examples. The place effort level was also set to the maximum
possible value.
If necessary, performance can easily be increased by selecting a part with a faster speed grade.
Back to the Xilinx Reed Solomon Solution page
|