Reed Solomon Decoder, Chein Search

The Berlekamp-Massey algorithm provides an error locater polynomial.  Similar to the syndromes, this polynomial doesn’t provide the required information directly.  Instead, it is the multiplicative inverse of the roots of this polynomial that correspond to the error locations.  Just like integers, general factoring of polynomials is not a simple task.  The task is simplified by making assumptions about the polynomial though.

For codewords 255 elements or less, the roots of the error locater polynomial fall to simple factors of (x + \alpha^n).  The chein search simply evaluates the error locater polynomial, \Lambda(x), at all valid values of \alpha^n.  This can be done using similar hardware as the previous stages.

Chein Search

Chein Search Hardware

A set of repeated multiply elements can be used with the N-input XOR gate summation circuit to evaluate \Lambda(x) efficiently.  The coefficients of the non-zero degree elements of the error locater are loaded into this array first.  From here, Galois-Field multiply by constant circuits are used to perform the multiplies.  The summation circuit XORs all of the non-zero terms with the zero’th degree term, which is always \alpha^0.

In my implementation, I load the array with the error locater, multiplied by the powers of \alpha first.  This allows the first element to be evaluated to be \alpha^1, and the last to be \alpha^{255} = \alpha^0.  This allows the inverses of the roots to be detected in-order, which will have desirable properties later.  The roots are detected when the large summation is equal to zero.

The code for this article is:

This entry was posted in FPGA and tagged . Bookmark the permalink.

Comments are closed.