CA1310125C - Real-time bch error correction code decoding mechanism - Google Patents

Real-time bch error correction code decoding mechanism

Info

Publication number
CA1310125C
CA1310125C CA000566886A CA566886A CA1310125C CA 1310125 C CA1310125 C CA 1310125C CA 000566886 A CA000566886 A CA 000566886A CA 566886 A CA566886 A CA 566886A CA 1310125 C CA1310125 C CA 1310125C
Authority
CA
Canada
Prior art keywords
error
value
polynomial
delta
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA000566886A
Other languages
French (fr)
Inventor
Lih-Jyh Weng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quantum Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/146,850 external-priority patent/US4866716A/en
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of CA1310125C publication Critical patent/CA1310125C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

ABSTRACT

This invention relates to error correction code decod-ing mechanisms for digital computer systems in general and more particularly to the decoding of Bose-Chaudhuri-Hocquenghem (BCH) error correction codes, including Reed-Solomon error correction codes. The invention calculates the locations and values of the errors simultaneously and thus more quickly corrects the errors.
Using this technique, errors can be corrected in "real-time" even with fast data transfer rates. The error locations and error values are found by evaluating various expressions, at values of x, where x is an element of the Galois Field used to encode the data.
All values of x corresponding to possible error locations are systematically tried using an iterative evaluation technique which uses the values of each of the terms of the equations calculated for one value of x in evaluating the equations at the next value of x, in, for example, the error locator equation .delta.(x) = 0 where .delta.(x) is the error locator polynomial, to find all the exist-ing solutions to the equation.

Description

FIELD OF I~VENTION
This invention relates to error correction code decoding mechanisms in general and more particularly to the decoding of Bose-Chaudhuri-Hoc~uenyhem (BCH) error correction codes, including Reed-Solomon error correction codes.
DEiSCRIPTION OF PRIOR ART
The importance of error correction coding of da-ta in digital computer systems has increased greatly as the density oi the data recorded on mass storage media, more particularly magnetic disks, has increased. With higher recording densities, a tiny imperfection in the recording surface of a disk can corrupt a large amount of data. In order to avoid losing that data, error correction codes ~"ECC's") are employed to, as the name implies, correct the erroneous data.

~k ~ 2~ 83-395A/86-042 sefore a string of data symbols is recorded on a disk, it is mathematically encoded to form ECC symbols. The ECC symbols are then appended to the data string to form code words - data symbols plus ECC symbols - and the code words are then stored on the disk. When the stored data is to be accessed from the disk, the code words containing the data symbols are retrieved from the disk and mathematically decoded. During decoding any errors in the data are detected and, if possible, corrected through manipulation of the ECC symbols [For a detailed description of decoding see Peterson and Weldon, Error Correction Codes, 2d Edition, ~IT Press, 19721-Stored digital data can contain multiple errors. One ofthe most effective types of ECC used for the correction of multiple errors is a Reed-Solomon code [For a detailed description of Reed-Solomon codes, see Peterson and Weldon, Error Correction Codes]. Error detection and correction techniques for Reed-Solomon ECC's are well known. Id. One such technique begins with again encoding the code word data to generate ECC symbols and then comparing these ECC symbols with the ECC symbols in the code word, i.e. the ECC sym~ols generated by the pre-storage encoding of the data, to detect any errors in the retrieved data. [Eor a detailed discussion of this error detection technique, see United States Patent 4,413,339 issued to Riggle and Weng].

~ 3 ~ 83-395A/86-042 The comparison of the two sets of ECC symbols is made by exclusive OR'ing ("XOR'ing") them. IE there are no errors in the retrieved data, the XOR'ing will produce a string of symbols containing only zeros. If there are errors in the retrieved data, the result of the XOR'ing will be non-zero and error correction will be performed, iE possible. If the number of non-zero symbols which result from the XOR'ing is less than the number of errors the code is designed to correct, all the errors are in the ECC symbols and no error correction is required. If the number of non-zero resulting symbols is equal to or greater than the number of errors the code is designed to correct, the data contains one or more errors and error correction is then performed.
n order to correct the data errors, the locations and the magnitudes or "values" of the errors must be determined. The first step in determining the error locations and the erxor values is to form error syndrome equations fxom the results of the XOR'ing of the ECC symbols. [For a detailed discussion of the generation of the error syndromes refer to United States Patent 4,413,339 issued to Riggle and Weng]. The error syndromes are then used to generate polynomials which, when evaluated, will identify the location and the value of each of the errors.

.. ' .
-~ 3 ~ 5 83-395~/86-042 Alternatively the error syndromes may be formed using the entire retrieved code word. This avoids the steps of re-encoding the retrieved data and comparing the ECC symbols with the retrieved ECC symbols. However, error syndromes will be generated for every code word, even those without errors, although in the latter case the syndromes will be identically zero. Where there are errors, i.e. the error syndromes are not zero, the syndromes are then used to locate and correct any errors in exactly the same manner as the syndromes formed from the results of the XOR'ing of the ECC symbols. The choice between these two arrangements may, for example, depend on whether the syndromes are generated in software or hardware.
The calculation of the values of the errors is necessarily dependent on their locations. Typically, the error locations are calculated first by using the error syndromes to generate an error locator polynomial S(x). The solutions or roots of the equation, S(x) = 0, designate the locations of the errors.
The roots, xr, are then substituted into an error evaluator polynomial ~(x) and the polynomial is evaluated. The results are then divided by the corresponding values of the first derivative, ~'(xr), of the error locator polynomial to provide the values of the errors. Once both the error locations and the corresponding error values are known, the data can then be corrected.

, ~ 3 ~ ~ ~ 83-395A/86 042 The time it takes to perform error correction significantly affects the rate at which data can be retrieved from a storage device. As the potential for errors in stored data increases with the use of higher recording densities, the effect of slow error correction has a material effect on the average speed with which the data can be retrieved. The increased data retrieval time in turn limits the speed of all computer applications that require the retrieval of the stored data. This speed limitation occurs at a time when computer system technology advances have otherwise made possible faster data transfer operations.
What is needed is an error correction technique that can be performed significantly more quickly than the methods currently in use. Such a technique will enable computer systems to operate at the faster rates permitted by the advances in the state of the art computer technology.

SUMMARY OF THE INVENTION
The invention calculates the locations and values of the errors simultaneously and thus more quickly corrects the errors. Using this technique, errors can be corrected in ~ 3 ~ ~ ~ 2 ~ 83-395A/86-042 "real-time" even with fast data transfer rates. The error locations and error values are found by evaluating various expressions, at values of x, where x is an element of the Galois Field used to encode the data. All values of x corresponding to passible error locations are systematically tried using an iterative evaluation technique which uses the values of each of the terms of the equations calculated for one value of x in evaluating the equations at the next value of x, in, for example, the error locator equation ~(x) = O (1) where S(x) is the error locator polynomial, to find all the existing solutions to the equation. Each solution to the equation indicates the location of an error.
The error locator polynomial ~; ( X ) ~ * X ~ 2 * X + ~ ~ n x ( 2 ) can be rewritten ~(x) = 1 + ~ev~n(x) + Sodd(X) (2a) ~ 2 ~ 83-395A/86-042 and equation (1) can be rewritten ~even(X~ + ~Odd(x) ~ 1 ~la) where ~even(x) and ~Odd(x) are the even- and odd-power terms of polynomial (2) and the ~'s are calculated by the error s~ndrome generator. Thus the iterative evaluation technique is used to find the solutions, Xrl of equation (1), where ~(x) is in the form of polynomial (2a).
Solutions to polynomial (2a) are found by simultaneously inserting a first value of x, xa1, into the expressions ~even(x) and ~Odd(x) and also into an error value polynomial ~(x). Next, while the error locator equation (la) is evaluated at the .
calculated values of ~ev~n(x~l) and ~Odd(x~1) to determine al is a solution, the now known values of the error evaluator polynomial ~(x~1) and the expression ~Odd(x~l) are substituted into an error value formula v x * ~(x) (3) Sodd(X) where the expression ~iodd( X ) ( ~I ) .

1 3 ~
6990~-130 represents a simplified version of the first derivative, ~'~x), of ~(x). Equation (3) is then evaluated using the method for Galois Field division disclosed in United States Patent ~,975,867 which issued to Digital Equipment Corporation on December ~, 1990. Thus as soon as an error location is found, i.e., xa1 satisfies equation (la), the error value, v~1, associated with that location is also known. The error can then be quickly corrected.
Ne~t, the values of expressions ~Odd(x)~ ~even(x) and the polynomial ~(x) are calculated for another value of x, xa2.
The reSpective terms of ~odd(Xa2)~ ~even(xa2) a2 calculated uslng the previously calculated terms of ~odd(xa1), (xal) and ~(xa1~, and the calculations are thus simplified.
The newly evaluated expressions ~even(xa2)l ~Odd(xa2) and polynomial ~(xa2) are then substituted into the error locator equation (la) and the error value equation (3) to determine if ~a2 is a solution, and if so, where the corresponding error is located. If xa2 is a solution, the error value va2 which was simultaneously calculated for xa2 is used to correst the error.
If xa2 is not a solutionr the calculated error value is ignored.
Then, the expressions ~Odd(x), ~even(x) and the ~olynomial ~(x) are similarly evaluated at the other values of x. Once all the solutions are found, that is, the last error in the data is located, the data is corrected, if possible, and thus the data can then be immediately transferred. The system is then ready to process the ne~t block of stored data.
According to one aspect, the present invention is a ' ~,.

L ~
69904~130 method of correcting data wllich i~ encoded into code words using a BCH error correction code based on Galois Field GF(2P~ and a selected generator polynomial, said methocl comprising the steps of: A. generating error synd.romes corresponding to a given data code word containing errors; B. using said error syndromes, generating an error evaluator polynomial ~(x) and an error locator polynomial ~(x) of the form ~(x)=l~even(x)~odd( ), (x) and ~Odd(x) are the even- and odd-terms o~ ~(x), respectively; C. for each successive value of x, which are each elements of GF(2P) corresponding to possible locations of errors in the code word, simultaneously substituting x into expressions for the error evaluator polynomial, ~(x), and ~even(x) and ~Odd(x); D. evaluating said expressions; E. substituting the results of step D into the error locator polynomial and an error value formula; F. evaluating said error locator polynomial and said error value formula to obtain the location of a possible error in the code word and a corresponding error value, respectively; G. (a) if said error locator pol~nomial is equal to one for a given x, indicating that there is an error at the code word location corresponding to x, correcting the error with the corresponding calculated error value, or (b) if said error locator polynomial is not equal to one for a given x, indicating that there is no error at the code word location corresponding to x, disregarding the corresponding calculated error value; and H. repeating steps ~-G for all remaining values o~ x corresponding to possible error locations in the code word.

~3 ~ ~
69gO4-130 Accordiny to another aspec-t, the present invention is an apparatus for correcting data whicll is encoded into code words using a BCH error correction code based on Galois Field GF(2P), comprising: A. an error syndrome generator for generating error syndromes; B. a polynomial generator connected to receive the error syndromes for generating, using the error syndromes, an error evaluator polynomial ~(x) and an error locator polynomial ) ~even(X)+~odd(x)r where ~ (x) and ~Odd(x) are the even- and odd- terms of ~(x), respectlvely; C.
code word error correction means for locating the errors in the code word and correcting them, said code word error correction means including: 1. first substitution means for, for each successive value of x, which are elements of GF(2P~ corresponding to possible error locations in the code word, simultaneously substituting x into expressions for the error evaluator polynomial ~(x)~ ~even(x) and ~odd(x); 2. first evaluating means for evaluating said expressions at the substitutes values of x;
3. second substitution means for substituting the values of the evaluated expressions into the error locator polynomial and an error value formula; 4. second evaluating means for evaluating said error locator polynomial and said error value formula to obtain the locations of errors in the code word and corresponding error values; and 5. correc-ting means for (1) if said error locator polynomial is equal to one, correcting the error at the code word location corresponding to x using the calculated error value, or (2) if said error locator polynomial is not equal to one, disregardin~ the ~alculated error value; 6. repeating steps ~ 9a ,i .

' ,' .

~ 3 ~

1-5 for all remaining values of x corresponding to possible error locations in the code word.
DESCRIPTION OF THE D~AWINGS
This invention is pointed out with particularity in the appended claims. The above and further advantages of this invention may be better unders~ood by referring to the following description taken in conjunction with the accompanyiny drawings, in which:
Figure 1 is a functional block diagram of an error correcting system in accordance with the preferred embodiment of the invention. The system simultaneously determines data error locations and values and corrects the errors.
Figure 2 is a functional block diagram of an error correction system constructed in accordance with the preferred embodiment of the invention;
Figure 3 is a functional block diagram of the calculators shown in Figure 2.
DETAILED DESCRIPTIO~
It should be understood that all additionr multiplication and division operations per~ormed during the error correction process are Galois Field operations, the variable x is a Galois 9b 2 ~
83-395A/86-0~2 Field element of the form ai, where a is the primitive polynomial associated with a Galois Field, and the Galois Field is of the form GF(2P).
With reference to Figures 1 and 2, a retrieved code word is first checked for the presence of any data errors (Steps 10-16), as described above. Specifically, the data portion of the retrieved code word is encoded in an encoder 42 (Step 12), and the ECC symbols generated by this encoding are compared in a comparator 44, or XOR'ed, with the code word ~CC
symbols. (Step 14).
If the results of the comparison indicate that there are one or more errors in the retrieved data, error correction is performed. The results of the comparison are used to generate the error syndromes (Step 18b) in an error syndrome generator 48 which is enabled by a gate 46. The error syndromes are then utilized to generate an error locator polynomial, ~(x), and an error evaluator polynomial, ~(x), (Step 20) in generators 50 and 54, respectively. The error locator polynomial and the error evaluator polynomial are evaluated to identify the locations and the values of the data errors.
The error locator polynomial ~(x) is defined as: -~(x) = 1 ~ ~1*x + ~2*x +.. + ~n*x (2) -, ' ~ 2 ~3 83-395A/86-042 The locations of the errors are typically identified by the solutions of the error locator equation (1), ~(x) - 0. Each root, xr, of this equation identifies the location of one error.
In conventional error code correction methods, the roots of the error locator equation are substituted into an error evaluator polynomial and into the first derivative, ~'(x), of the error locator polynomial to calculate the values of the respective errors. The error evaluator polynomial ~(x) is defined as:

~x) = ~O*x ~ *x1 + ~2*x2~ u*x (5) where u = n - 1. The value vr of an error corresponding to a root xr is given by the error value formula v = x *~(x) ~' (x) where ~'(x) is the first derivative of ~(x), and C is a constant, the value of which depends on the ECC generator polynomial selected and the roots of the generator polynomial.

. ~

~ 3 ~ ~ ~ 2 ~ 83-395A/~6-042 The generator polynomial has been selected such that xl is the lowest root, and therefore, C is equal to one. If a generator polynomial is selected which does not have xl as the lowest root, the expression (xCl*~(x)) should be substituted for ~(x).
Calculation of the first derivative of S(x) can be simplified by exploiting a property of Galois Fields o~
characteristic 2, i.e. GF(2P). Consider polynomial (2) with n being an even number. This expression can be rewritten:

~S(X)=1+[ ~S1*X + S3*x +. . .+ Sn l*X ]+[ ~i2*X + ~i4*X +. . .+ Sn*X ]
~ -odd----------/ /------------even---------/

which is S(x) = 1 + SOdd(x) + Sev~n(X) (2a) The first derivative of polynomial (2a) is Sl (X) = + ~odd (X) + ~even (X) (2b) In a Galois Field of characteristic 2, the derivative of a variable "Y" raised to an even power, for example y2n, whose derivative is 2n ~ y2n-l, is equal to zero. The derivative of y2nl~ however, which is (2n-1)*Y2n 2, is non-zero; it is equal to y2n-2. Thus the first derivative of S(x) can be rewritten - ~

.
-~ ~ ~ 83-395A/86-042 S'(x) = 0 -~ S1*x + 3*S3*x + 5*~5*x +---+ (n-l)*Sn1*x . (6) By ta]cing advantage of the properties of Galois Fields of characteristic 2, this can be further simplified to:

S (x) = 0 + S1 + S3*x + Ss*x + . . . + Sn l*Xn 2 ( 6a) Formula (6a) can be further rewritten as ~(x) = Sodd(X) (6b) As stated above, error locations are indicated by the roots of equation (1). This equation can be rewritten, using polynomial (2a) as:

~v~n(x) + ~Odd(x) ~ 1 (la) The corresponding error value formula will then be v x * ~(x) (3) ~odd ( X ) ; The solutions of equation (la) are found by using an iterative technique to evaluate the expressions SOdd(x) and ~- 13 -' ~ 3 ~1 3 ~i 2 -~
69gO~-~30 ~even(x) for successive values of x in calculators 56 and 58, respectively. For each such eva].uation, the values of ~Odd(x) and (x) are khen added to determine if the sum i5 equal to 1.
Basically, the iterative technique tries the values of x, where x represents possible locations of errors in the encoded data, in a specified order, as solutions to equation (la), unkil all the values of x have been tried. At the same time that the pr ssions ~Odd~x) and ~even(x) are being evaluated at each value of x, the iterative technique is used to evaluate the error evaluator polynomial ~(x) at the same x value in calculator 60.
The iterative technique is discussed in detail in connection with Figure 3.
Continuing with reference to Figures 1 and 2, an adder 64 sums the evaluations of ~odd(Xal) and ~even(Xal) time, results of the evaluations of the error evaluator polynomial ~(x) and the expression ~ dd(x) are substltuted into the error value formula (3) (Step 28) and the error value is calculated in an error value generator 62. The generator 62 may, for example, use the method ~or Galcis Field division disclosed in above-mentioned United States Patent 4,975,867.
The output of adder 64 is applied to a one-detector 65, 1~

2~

which asserts its output whenever ~Odd(x) + ~ev~n(x) = 1, that is, whenever a particular x is a root of equation (la) (Step 32). The asserted output of the one-detector 65 enables an error corrector 66 which quickly corrects the error with the then known error value v obtained from the generator 62. If a particular x is not a root of equation (la), the output of the one-detector 65 is not asserted and the calculated error value v is disregarded, that is, the error corrector 66 is not enabled. The process is continued until all the values of x corresponding to possible error locations have been tried as solutions to equation (la) (Steps 36, 38).
If, after all values of x corresponding to possible error locations have been tried (Step 36), the number of solutions found for equation (la), which are totaled in a counter 70, is equal to the degree of the error locator polynomial ~(x), ths corrected data is passed to the circuitry requesting the data.
If the number of solutions found for equation (la) is less than the degree of the error locator polynomial ~(x), the data is labeled uncorrectable.
Figure 3 illustrates the iterative technique used in evaluating the expressions ~Odd(x), Seven(x) and the polynomial ~(x) in calculators 56, 58, and 60, respectively. Calculator 56 contains a plurality of Galois Field multipliers 100, 102 and 103. Each Galois Field multiplier computes the values of a particular term of ~Odd(x) at various values of x. Thus ~ $ ~ 3 83-395~/86-042 multiplier 100 calculates the value of x*~1, multiplier 102 calculates X3*S3, etc. The calculated values of each of the terms at a particular x are stored in the multipliers and then added modulo 2 in a summer 101 to evaluate SOdd(x).
Specifically, to evaluate SOdd(x) at various x's the multipliers 100, 102 and 103 are set to an inital condition using the SOdd(x) terms. Multiplier :L00, for example, is set to S1, and multiplier 102 is set to S3. Next, to calculate the values of the SOdd(x) terms at a first value of x, xa1, where x is typically a, the contents of the multipliers are multiplied by the constants a, a3..., an~l, respectively. Thus, for example, the Sn1 term is multiplied by the constant an1 to calculate the value of (xa1)n1*Snl. The products are then stored in the multipliers, and added by the summer 101 to calculate Sodd( Xal ) -Thereafter, to calculate the value of SOdd(x) at the nextvalue of x, xa2, i.e. a2 if xa1 - ~, the contents of the multipliers are again multiplied by the constants a, ~3, a5...
an1, respectively, the products are stored in the multipliers, and the stored terms are again added to calculate SOdd(x~2).
This calculation process is repeated until SOdd(x) is calculated for all values of x corresponding to possible error locations.
Calculators 58 and 60 (Figure 2), consisting of Galois Field multipliers 104-109, operate similarly to calculate the values of Sev~n(x) and ~(x) at the various values of x.

-.

If the first value of x tried as a solution is xnr rather than x1, the constants used in the respective multipliers are a~l, a~2, CC-3 a-n Evaluating the expressions ~Odd(x), ~even(x) and ~(x) for the various values of x is simplified using the iterative evaluation technique. The iterative evalua-tion technique is adapted from the well-known Chien search technique.
Ascertaining the locations and the values of the data errors simultaneously provides that the errors can be quickly and efficiently corrected. Using conventional techniques for the individual components of the process, the error locations are first calculated and then the error values are found, and only after these two calculations have been performed can the errors be corrected. Moreover, the technique described above takes advantage of the properties of Galois Fields GF(2P) to simplify the evaluation of the first derivative of the error locator polynomial, and thus the calculation of the error values is simplified and quickened. The ability to simultaneously ascertain the locations and values of the data errors and to then immediately correct them permits a computer system to take advantage of faster transfer rates which are technologically feasible.
The foregoing description has been limited to a specific embodiment of this invention. It will be apparent, however, that variations and modifications may be made to the invention, ~ 3~ ~ 2~

with the attainment of some or all of the advantages of the invention. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope o~ the invention.

Claims (7)

1. A method of correcting data which is encoded into code words using a BCH error correction code based on Galois Field GF(2P) and a selected generator polynomial, said method comprising the steps of: A. generating error syndromes corresponding to a given data code word containing errors; B. using said error syndromes, generating an error evaluator polynomial .PHI.(x) and an error locator polynomial .delta.(x) of the form .delta.(x)=1+.delta.even(x)+.delta.odd(x), where .delta.even(x) and .delta.odd(x) are the even- and odd-terms of .delta.(x), respectively; C. for each successive value of x, which are each elements of GF(2P) corresponding to possible locations of errors in the code word, simultaneously substituting x into expressions for the error evaluator polynomial, .PHI.(x), and .delta.even(x) and .delta.odd(x); D. evaluating said expressions; E. substituting the results of step D into the error locator polynomial and an error value formula; F. evaluating said error locator polynomial and said error value formula to obtain the location of a possible error in the code word and a corresponding error value, respectively; G. (a) if said error locator polynomial is equal to one for a given x, indicating that there is an error at the code word location corresponding to x, correcting the error with the corresponding calculated error value, or (b) if said error locator polynomial is not equal to one for a given x, indicating that there is no error at the code word location corresponding to x, disregarding the corresponding calculated error value; and H.

repeating steps C-G for all remaining values of x corresponding to possible error locations in the code word.
2. The method for correcting errors in claim 1 wherein: A.
if the generator polynomial has x1 as a root, said error value formula for determining the value of an error, v, at the code word location corresponding to x is:

V = and B. if the generator polynomial does not have x1 as a root, said error value formula for determining the value of an error, v, at the code word location corresponding to x is:

V = where C is a constant which depends on the generator polynomial.
3. The method for correcting errors in claim 2 wherein the error correction code used to encode the data is a Reed-Solomon code.
4. The method for correcting errors in claim 2 wherein said error evaluation polynomial and error locator expressions for determining the location and value of errors in a data code word are evaluated using an iterative evaluation method comprising the steps of: A. calculating the values of the terms of the two error locator expressions .delta.even(x) and .delta.odd(x) and the values of the terms of the error evaluator polynomial .PHI.(x) for a first value of x corresponding to a given code word location; B. storing the calculated value of each term of the error locator expressions and the error evaluator polynomial; C. substituting the stored values into the error locator polynomial and the error value formula to determine the locations and values of errors in the code word corresponding to x; D. to try a next value of x corresponding to another possible error location, multiplying each stored value by a constant B , where: i. x * B is equal to the next value of x to be tried, and ii. n is the exponent of the variable in the term having that value; and E. repeating steps B-D for each x corresponding to a possible error location.
5. An apparatus for correcting data which is encoded into code words using a BCH error correction code based on Galois Field GF(2P), comprising: A. an error syndrome generator for generating error syndromes; B. a polynomial generator connected to receive the error syndromes for generating, using the error syndromes, an error evaluator polynomial .PHI.(x) and an error locator polynomial .delta.(x) of the form .delta.(x)=1+.delta.even(x)+.delta.odd(x), where .delta.even(x) and .delta.odd(x) are the even- and odd- terms of .delta.(x), respectively; C. code word error correction means for locating the errors in the code word and correcting them, said code word error correction means including: 1. first substitution means for, for each successive value of x, which are elements of GF(2P) corresponding to possible error locations in the code word, simultaneously substituting x into expressions for the error evaluator polynomial .PHI.(x), .delta.even(x) and .delta.odd(x); 2. first evaluating means for evaluating said expressions at the substituted values of x; 3. second substitution means for substituting the values of the evaluated expressions into the error locator polynomial and an error value formula; 4. second evaluating means for evaluating said error locator polynomial and said error value formula to obtain the locations of errors in the code word and corresponding error values; and 5. correcting means for (1) if said error locator polynomial is equal to one, correcting the error at the code word location corresponding to x using the calculated error value, or (2) if said error locator polynomial is not equal to one, disregarding the calculated error value; 6. repeating steps 1-5 for all remaining values of x corresponding to possible error locations in the code word.
6. The apparatus for correcting errors in claim 5 wherein said error value formula into which the first substitution means substitutes the calculated expression value is V = if the generator polynomial has x1 as the lowest root the error value formula, or V - if the generator polynomial does not have x1 as the lowest root the error value formula, where C is a constant which depends on the generator polynomial.
7. The apparatus for correcting errors in claim 6, wherein said first evaluating means includes: 1. calculating means for calculating the values of the terms of the two error locator expressions .delta.even(x) and .delta.odd(x) and the values of the terms of the error evaluator polynomial for a first value of x corresponding to a given code word location; 2. storage means for storing the calculated values of each of the terms of the error locator expressions and the error evaluator polynomial and applying said values to said second substitution means; and 3.
multiplication means for calculating a next value of x corresponding to another possible error location by multiplying each of the stored values by a constant where, i. x * B is equal to the next value of x to be tried, and ii. n is the exponent of the variable in the term having that value.
CA000566886A 1988-01-22 1988-05-16 Real-time bch error correction code decoding mechanism Expired - Fee Related CA1310125C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/146,850 US4866716A (en) 1987-05-15 1988-01-22 Real-time BCH error correction code decoding mechanism
US146,850 1988-01-22

Publications (1)

Publication Number Publication Date
CA1310125C true CA1310125C (en) 1992-11-10

Family

ID=22519250

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000566886A Expired - Fee Related CA1310125C (en) 1988-01-22 1988-05-16 Real-time bch error correction code decoding mechanism

Country Status (1)

Country Link
CA (1) CA1310125C (en)

Similar Documents

Publication Publication Date Title
EP0318547B1 (en) Real-time bch error correction code decoding mechanism
US6615387B1 (en) Method and apparatus for error detection
EP1131893B1 (en) Forward error corrector
US6374383B1 (en) Determining error locations using error correction codes
US4975867A (en) Apparatus for dividing elements of a Galois Field GF (2QM)
EP0112988A2 (en) Syndrome processing for multibyte error correcting systems
TWI227599B (en) Reed-Solomon decoder
US8201061B2 (en) Decoding error correction codes using a modular single recursion implementation
US5001715A (en) Error location system
US5107506A (en) Error trapping decoding method and apparatus
US6651214B1 (en) Bi-directional decodable Reed-Solomon codes
US6643819B1 (en) Hybrid root-finding technique
US6735737B2 (en) Error correction structures and methods
US6915478B2 (en) Method and apparatus for computing Reed-Solomon error magnitudes
CA1310125C (en) Real-time bch error correction code decoding mechanism
EP0341862B1 (en) Error location system
EP0329775A4 (en) High bandwidth reed-solomon encoding, decoding and error correcting circuit
JP2944813B2 (en) Error correction code decoding device
TWI395412B (en) Error correction code decoder and its error correction value calculation device
KR100335482B1 (en) Error correcting system
JP3230888B2 (en) Euclidean circuit
JP2532258B2 (en) Error detection method
JP2553571B2 (en) Galois field arithmetic unit
JP2611204B2 (en) Error correction method
CN1267964A (en) Fast Reid-Solomen code decoding method and decoder

Legal Events

Date Code Title Description
MKLA Lapsed