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  
		
  |