Fast remainder decoding for a Reed-Solomon code
First Claim
1. A decoder for an error detection and correction system using a Reed-Solomon code or related code of degree d-1 for detection and correction of a plurality of errors in code words of n symbols comprised of k data symbols and d-1 check symbols, wherein each symbol is comprised of m binary bits of information and d, k, m, and n are positive integers, and further wherein t=INT((d-1)/2)≧
- 3, said decoder comprising;
data buffer means for storing said k data symbols;
remainder generator means for dividing a codeword polynomial C(x) by a generator polynomial G(x) of said code and producing a remainder polynomial R(x) having remainder coefficients R1 ;
remainder buffer means for storing said remainder coefficients Ri produced by said remainder generator means;
first table means comprising a table f(i,L) wherein each element is comprised of error correction information, and wherein 0≦
i<
d-1, and d-1<
L<
2m -1; and
processor means comprisingmeans for accessing said remainder buffer to retrieve said remainder,means for applying said remainder to index said first table means and retrieve said correction information, andmeans for applying said correction information to said data symbols in said data buffer to correct symbols that are in error.
2 Assignments
0 Petitions
Accused Products
Abstract
Apparatus and methods are disclosed for providing fast decoding of Reed-Solomon and related codes. Cases of one and two data symbol errors are decoded directly from the remainder using a large pre-computed table without calculating syndromes. Techniques for decoding cases of more than two errors are given where an optimized Chien search is used when more than four errors remain; when four or fewer errors remain, the Chien search is eliminated in favor of locating an error by direct solution of the error locator polynomial. The error locator and syndrome polynomials are adjusted after each error is found, and the error evaluator polynomial need not be computed.
29 Citations
47 Claims
-
1. A decoder for an error detection and correction system using a Reed-Solomon code or related code of degree d-1 for detection and correction of a plurality of errors in code words of n symbols comprised of k data symbols and d-1 check symbols, wherein each symbol is comprised of m binary bits of information and d, k, m, and n are positive integers, and further wherein t=INT((d-1)/2)≧
- 3, said decoder comprising;
data buffer means for storing said k data symbols; remainder generator means for dividing a codeword polynomial C(x) by a generator polynomial G(x) of said code and producing a remainder polynomial R(x) having remainder coefficients R1 ; remainder buffer means for storing said remainder coefficients Ri produced by said remainder generator means; first table means comprising a table f(i,L) wherein each element is comprised of error correction information, and wherein 0≦
i<
d-1, and d-1<
L<
2m -1; andprocessor means comprising means for accessing said remainder buffer to retrieve said remainder, means for applying said remainder to index said first table means and retrieve said correction information, and means for applying said correction information to said data symbols in said data buffer to correct symbols that are in error. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
- 3, said decoder comprising;
-
28. In a decoder for an error detection and correction system using a Reed-Solomon code or related code of degree d-1 for detection and correction of a plurality of errors in codewords of n symbols comprised of k data symbols and d-1 check symbols, wherein each symbol is comprised of m binary bits of information and d, k, m, and n are positive integers, and further wherein t=INT((d-1)/2)≧
- 3, an error decoding method comprising the steps of;
storing said k data symbols in a data buffer; generating a remainder polynomial R(x) having remainder coefficients Ri by dividing a codeword polynomial C(x) by a generator polynomial G(x) of said code; storing said remainder coefficients in a remainder buffer; applying said remainder coefficients to index a first table f(i,L), each element of said table being comprised of a coefficient of the xi term of xL MOD G(x) wherein L varies from d-1 to 2m -2 and i varies from 0 to d-2, to produce correction information; applying said correction information to said data symbols in said data buffer to correct symbols that are in error. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
- 3, an error decoding method comprising the steps of;
-
47. In a decoder for an error detection and correction system using a Reed-Solomon code or related code of degree d-1 for detection and correction of a plurality of errors wherein a message block is comprised of N interleaved codewords of said code wherein codeword i is comprised of ni -(d-1) data symbols and d-1 check symbols comprising a total of D data symbols stored in a data buffer means and N*(d-1) check symbols stored in a remainder buffer means where d, i, N, and ni are positive integers, and further wherein the first check symbol in said remainder buffer means is remainder coefficient Rd-2 of codeword D MOD N and the last symbol in said remainder buffer means is remainder coefficient R0 of codeword (D-1) MOD N, with other coefficients interleaved between, a method for accessing said data buffer means and said remainder buffer means for detection and correction of said errors comprising the steps of:
-
(1) initializing a parameter DMN equal to said number of data symbols D MODULO said number of interleaves N and initializing a counter I to zero; (2) if said parameter DMN is equal to zero, resetting said parameter DMN to said number of interleaves N; (3) computing a forward displacement within said remainder buffer means of coefficient R0 of codeword I by calculating N*(d-1)-DMN; (4) computing forward displacements within said remainder buffer means of other coefficients Ri of said codeword I by repeated subtraction of said number of interleaves N from said forward displacement of said coefficient R0 of said codeword I; (5) determining location(s) Li and value(s) Ei of error(s) in said codeword I; (6) computing a forward displacement within said data buffer means of a last data symbol within said codeword I as Fmax =d-DMN; (7) computing a forward displacement within said data buffer means of an error at a location Li >
d-1 as Fi =Fmax -N*Li ;(8) correcting said error at said forward displacement Fi using error value Ei ; (9) repeating said steps (7) and (8) for all errors in said codeword I; (10) decrementing said parameter DMN and incrementing said counter I; and (11) repeating said steps (2) through (10) for values of said counter I up to and including N-1.
-
Specification