Claims
- 1. An error correction processor for correcting errors in binary data read from a disk storage medium, wherein the binary data comprises a first and second set of intersecting ECC codewords of a multi-dimensional codeword, the error correction processor comprising:
- (a) a data buffer for storing the ECC codewords read from the disk storage medium;
- (b) a syndrome generator for generating ECC syndromes in response to an ECC codeword in the second set;
- (c) an error-locator polynomial generator for generating an error locator polynomial .sigma.(x) in response to the ECC syndromes;
- (d) a selector for selecting between the error-locator polynomial .sigma.(x) and an erasure polynomial .sigma.(x).sub.EP, wherein:
- (i) the erasure polynomial .sigma.(x).sub.EP is generated while processing the first set codewords; and
- (ii) the erasure polynomial .sigma.(x).sub.EP is used to correct at least two codewords in the second set; and
- (e) an error corrector for generating correction values in response to either the error-locator polynomial .sigma.(x) or the erasure polynomial .sigma.(x).sub.EP output by the selector, the correction values for correcting errors in the ECC codeword in the second set.
- 2. The error correction processor as recited in claim 1, wherein a factor of the erasure polynomial is generated for at least two uncorrectable codewords encountered while processing the first set codewords.
- 3. The error correction processor as recited in claim 2, wherein:
- (a) the first and second set codewords are generated according to a generator polynomial G(x) of a finite field;
- (b) the erasure polynomial .sigma.(x).sub.EP is generated according to ##EQU14## (c) .alpha. is a primitive element of the finite field; and (d) k is a symbol location in a second set codeword corresponding to where the second set codeword intersects with an uncorrectable first set codeword.
- 4. The error correction processor as recited in claim 3, further comprising an erasure polynomial generator for generating the erasure polynomial .sigma.(x).sub.EP by multiplying an intermediate polynomial .sigma.(x) by a factor (1+.alpha..sup.k x) when an uncorrectable first set codeword is encountered.
- 5. The error correction processor as recited in claim 4, wherein the erasure polynomial generator comprises an inner-product multiplier for multiplying a first coefficient of the intermediate polynomial .sigma.(x) by a constant corresponding to k to generate a product.
- 6. The error correction processor as recited in claim 5, wherein the coefficient of the intermediate polynomial .sigma.(x) is represented in a first basis and the constant corresponding to k is represented in a second basis.
- 7. The error correction processor as recited in claim 5, wherein the erasure polynomial generator further comprises an adder for adding the product to a second coefficient of the intermediate polynomial .sigma.(x).
- 8. The error correction processor as recited in claim 7, wherein
- (a) the product is generated serially in a plurality of steps by computing a plurality of intermediate products; and
- (b) each intermediate product comprises less bits than the second coefficient of the intermediate polynomial .sigma.(x).
- 9. The error correction processor as recited in claim 5, wherein the erasure polynomial generator further comprises a plurality of registers for storing coefficients of the intermediate polynomial .sigma.(x), wherein:
- (a) the registers are connected in series to form a shift register; and
- (b) one of the registers is connected to the inner-product multiplier.
- 10. The error correction processor as recited in claim 4, wherein the erasure polynomial generator further comprises an .alpha..sup.j multiplier connected to multiply the constant corresponding to k by .alpha..sup.j, where j is an integer.
- 11. The error correction processor as recited in claim 10, wherein j is -1.
- 12. A method of correcting errors in binary data read from a disk storage medium, wherein the binary data comprises a first and second set of intersecting ECC codewords of a multi-dimensional codeword, comprising the steps of:
- (a) generating a first erasure polynomial .sigma.(x).sub.EP while processing the first set codewords;
- (b) generating ECC syndromes in response to a second set codeword;
- (c) generating an error locator polynomial .sigma.(x) in response to the ECC syndromes;
- (d) generating correction values in response to either the error-locator polynomial .sigma.(x) or the first erasure polynomial .sigma.(x).sub.EP ;
- (e) correcting errors in the second set codeword using the correction values; and
- (f) repeating steps (b) through (e) at least once.
- 13. The method of correcting errors as recited in claim 12, further comprising the step of generating a factor of the first erasure polynomial for at least two uncorrectable codewords encountered while processing the first set codewords.
- 14. The method of correcting errors as recited in claim 13, further comprising the steps of:
- (a) generating the first and second set codewords according to a generator polynomial G(x) of a finite field;
- (b) generating the first erasure polynomial .sigma.(x).sub.EP according to ##EQU15## wherein .alpha. is a primitive element of the finite field, and k is a symbol location in a second set codeword corresponding to where the second set codeword intersects with an uncorrectable first set codeword.
- 15. The method of correcting errors as recited in claim 14, wherein the step of generating the first erasure polynomial .sigma.(x).sub.EP comprises the steps of multiplying an intermediate polynomial .sigma.(x) by a factor (1+.alpha..sup.k x) when an uncorrectable first set codeword is encountered.
- 16. The method of correcting errors as recited in claim 15, wherein the step of generating the first erasure polynomial .sigma.(x).sub.EP further comprises the step of taking an inner-product of a first coefficient of the intermediate polynomial .sigma.(x) and a constant corresponding to k to generate a product.
- 17. The method of correcting errors as recited in claim 16, wherein the coefficient of the intermediate polynomial .sigma.(x) is represented in a first basis and the constant corresponding to k is represented in a second basis.
- 18. The method of correcting errors as recited in claim 16, wherein the step of generating the first erasure polynomial .sigma.(x).sub.EP further comprises the step of adding the product to a second coefficient of the intermediate polynomial .sigma.(x).
- 19. The method of correcting errors as recited in claim 18, wherein the step of taking the inner-product comprises the step of generating a plurality of intermediate products, where each intermediate product comprises less bits than the second coefficient of the intermediate polynomial .sigma.(x).
- 20. The method of correcting errors as recited in claim 16, wherein the step of generating the first erasure polynomial .sigma.(x).sub.EP further comprises the step of:
- (a) shifting the coefficients of the intermediate polynomial .sigma.(x) through a plurality of registers; and
- (b) taking the inner-product of one of the registers and the constant corresponding to k.
- 21. The method of correcting errors as recited in claim 15, wherein the step of generating the first erasure polynomial .sigma.(x).sub.EP further comprises the step of multiplying the constant corresponding to k by .alpha..sup.j, where j is an integer.
- 22. The method of correcting errors as recited in claim 21, wherein j is -1.
- 23. The method of correcting errors as recited in claim 12, further comprising the steps of:
- (g) generating a second erasure polynomial .sigma.(x).sub.EP while processing the second set codewords;
- (h) generating ECC syndromes in response to a first set codeword;
- (i) generating an error locator polynomial .sigma.(x) in response to the ECC syndromes;
- (j) generating correction values in response to either the error-locator polynomial .sigma.(x) or the second erasure polynomial .sigma.(x).sub.EP ;
- (k) correcting errors in the first set codeword using the correction values; and
- (l) repeating steps (h) through (k) at least once.
- 24. An error correction processor for correcting errors in binary data read from a disk storage medium, wherein the binary data comprises intersecting row and column ECC codewords of a product code, the error correction processor comprising:
- (a) a syndrome generator for generating ECC syndromes in response to a column codeword;
- (b) an error-locator polynomial generator for generating an error locator polynomial .sigma.(x) in response to the ECC syndromes;
- (c) a selector for selecting between the error-locator polynomial .sigma.(x) and an erasure polynomial .sigma.(x).sub.EP, wherein:
- (i) the erasure polynomial .sigma.(x).sub.EP is generated while processing the row codewords; and
- (ii) the erasure polynomial .sigma.(x).sub.EP is used to correct at least two column codewords; and
- (d) an error corrector for generating correction values in response to either the error-locator polynomial .sigma.(x) or the erasure polynomial .sigma.(x).sub.EP output by the selector, the correction values for correcting errors in the column codeword.
- 25. The error correction processor as recited in claim 24, wherein a factor of the erasure polynomial is generated for at least two uncorrectable codewords encountered while processing the row codewords.
- 26. The error correction processor as recited in claim 25, wherein:
- (a) the row and column codewords are generated according to a generator polynomial G(x) of a finite field;
- (b) the erasure polynomial .sigma.(x).sub.EP is generated according to ##EQU16## (c) .alpha. is a primitive element of the finite field; and (d) k is a symbol location in a column codeword corresponding to where the column codeword intersects with an uncorrectable row codeword.
- 27. The error correction processor as recited in claim 26, further comprising an erasure polynomial generator for generating the erasure polynomial .sigma.(x).sub.EP by multiplying an intermediate polynomial .sigma.(x) by a factor (1+.alpha..sup.k x) when an uncorrectable row codeword is encountered.
CROSS REFERENCE TO RELATED APPLICATIONS AND PATENTS
This application is related to U.S. Pat. No. 5,446,743 entitled "COEFFICIENT UPDATING METHOD AND APPARATUS FOR REED-SOLOMON DECODER," and U.S. Pat. No. 5,467,297 entitled "FINITE FIELD INVERSION," which are incorporated herein by reference.
US Referenced Citations (16)
Non-Patent Literature Citations (4)
Entry |
Fast Erasure-And-Error Decoding of Algebraic Geometry Codes up to the Feng-Rao Bound (Sakata, et al., IEEE), Jul. 1998. |
An On-The-Fly Decoding Technique For Reed-Solomon Codes {Yuan Xing Lee, et al., IEEE), Sep. 1996. |
Closed Solution Of Brelekamp's Algorithm For Fast Decoding Of BCH Codes (Clifford Kraft, IEEE), Dec. 1991. |
New Decoder For Double-Error-Correcting Binary BCH Codes (E.-H Lu, et al., IEE), Jun. 1996. |