FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6259 Discussions

Reed-Solomon decoder parameters

Honored Contributor II

Hi team - 


Perhaps someone who has experience with the Reed-Solomon decoder core can nudge me in the right direction? 


I am using the reed_solomon 12.0 decoder core in DSP Builder/Simulink (2012a). The codeword we are trying to decode is a DOCSIS cable modem range request (RNG-REQ), which appears to be encoded using a RS(44,34) scheme [34 information bytes + 10 RS parity bytes = 44 byte RS codeword. 


I understand most of the parameters for this Reed-Solomon decoder core and believe the correct parameters, as defined by the DOCSIS spec, are: 


1. RS codeword of 8 bits/symbol 

2. 44 RS symbols/codeword 

3. 10 check symbols/codeword 

4. field polynomial of 285 


The parameters I am not sure about are the "5. first root of polynomial generator" (set to 0 currently) and the "6. root spacing in polynomial generator" (set to 1 currently). can anyone shed a little light on how to explicitly determine these two values? I found the example in the RS Compiler User Guide to be a little lacking. 


When I try to decode a captured codeword, the decoder asserts decfail which tells me 1) the core parameters are wrong for my codeword, or 2) the codeword I am trying to decode is bad or not assembled properly. 


I know the rest of the model is operating correctly, since when I switch the decoder to the supplied "DVB Standard" and use a known-good RS(204,188) test vector the decoder behaves perfectly. 


Anyway, thanks in advance for any help, suggestions, or appropriate voodoo! :) 


0 Kudos
1 Reply
Honored Contributor II

I think most RS codes use the 0 and 1 for your first root and root spacing parameters. CCSDS is the only code I remember that used different values. My guess is that if the spec doesn't explicitly mention these values then these values are correct. 


You say you're decoding a captured codeword. Do you know if this captured codeword is corrupted? If it isn't then just send the first 34 bytes through an encoder parameterised the same as your decoder. If it doesn't generate the same parity symbols then your parameterisation is wrong.
0 Kudos