M
Marcus
hello,
i want to implement an algorithm for an universal reed solomon decoder as
described in "A Universal Reed-Solomon Decoder" by R.E. Blahut, IBM J. Res.
Develop. Vol.28 No.2 March 1984. (free download)[1]
This is a time domain implementation of the berlekamp algorithm and the
forney algorithm.
the berlekamp algorithm computes the error locator polynomial, its formal
derivative and the error evaluator polynomial in the time domain.
after that, the errors are corrected using the forney algorithm.
the used RS-code is described IEEE Std. 802.16 section 8.4.3.2.1. its
generator polynomial is: (x+a^0)*(x+a^1)...(x+a^15) in GF(256).
i had to make some modification for this code to the described[1] decoder:
computation of the dicrepancy: the exponent of omega is (r-1)*i not r*i
forney algorithm: a factor of omega^(2*i) has to be multiplied to gamma(i)
for the correction
the remainder of the algorithm is as described by r. e. blahut at page
155(figure 3).
Everything works fine with my decoder as long as i only correct errors. the
decoder corrects up to 8 errors as it should be.
but when i want to correct erasures the decoder fails.
lets say the last four symbols are set to zero in the recieved codeword, the
others are correct.
if i set rho to zero (no erasures, errors only) everything is fine.
if i set rho(the number of erasures) to 4 the decoder fails( erasure
location ir=(0,1,2,3) for r=1 to 4).
i think the error locator polynomial and its derivative are ok because they
are the same as if i set rho to zero.
so i think there is something wrong with the initialisation/computation of
the error evaluator polynomial if i have erasures.
i hope somebode can tell me where i have made a mistake
thanks,
marcus
i want to implement an algorithm for an universal reed solomon decoder as
described in "A Universal Reed-Solomon Decoder" by R.E. Blahut, IBM J. Res.
Develop. Vol.28 No.2 March 1984. (free download)[1]
This is a time domain implementation of the berlekamp algorithm and the
forney algorithm.
the berlekamp algorithm computes the error locator polynomial, its formal
derivative and the error evaluator polynomial in the time domain.
after that, the errors are corrected using the forney algorithm.
the used RS-code is described IEEE Std. 802.16 section 8.4.3.2.1. its
generator polynomial is: (x+a^0)*(x+a^1)...(x+a^15) in GF(256).
i had to make some modification for this code to the described[1] decoder:
computation of the dicrepancy: the exponent of omega is (r-1)*i not r*i
forney algorithm: a factor of omega^(2*i) has to be multiplied to gamma(i)
for the correction
the remainder of the algorithm is as described by r. e. blahut at page
155(figure 3).
Everything works fine with my decoder as long as i only correct errors. the
decoder corrects up to 8 errors as it should be.
but when i want to correct erasures the decoder fails.
lets say the last four symbols are set to zero in the recieved codeword, the
others are correct.
if i set rho to zero (no erasures, errors only) everything is fine.
if i set rho(the number of erasures) to 4 the decoder fails( erasure
location ir=(0,1,2,3) for r=1 to 4).
i think the error locator polynomial and its derivative are ok because they
are the same as if i set rho to zero.
so i think there is something wrong with the initialisation/computation of
the error evaluator polynomial if i have erasures.
i hope somebode can tell me where i have made a mistake
thanks,
marcus