Background of the Invention
Field of the Invention
[0001] This invention relates in general to error correction and, in the preferred embodiment
to an error correcting system for correcting multibyte errors in a codeword in which
the identity of the error locations and the identity of the error patterns are achieved
simultaneously.
Cross-Referenced Application
[0002] Reference is made to Application serial number (US 454392) (IBM) , entitled "Syndrome
Processing for Multibyte Error Correcting Systems", Applicant's reference SA982029A),
which may be employed in a system of the present invention.
Description of the Prior Art
[0003] Most data storage subsystems associated with modern information handling systems
employ some type of error correction system in order to obtain cost effective design
for high reliability and data integrity. The ability of the data processing system
to retrieve data from the storage system, i.e., access time, is a well recognized
measure of the efficiency of the overall storage system. In most data processing systems,
the decoding time for the error correction code is a direct factor in the total access
time. As the capacity of storage devices has increased, the need for increased reliability
and availability has also increased. As a result, the time required to process soft
errors by the error correcting system becomes a larger percentage of the total access
time. Multibyte error correcting systems suggested in the prior art require a relatively
long time for decoding of the multibyte errors. This has been one of the main objections
to their use in high performance storage systems.
[0004] The following references disclose basic and significant aspects of prior art error
correcting systems:
1. I. S. Reed and G. Solomon, "Polynomial Codes Over Certain Finite Fields", J. Siam,
8 (1960) p. 300-304.
2. R. C. Bose and D. K. Ray-Chaudhuri, "On a Class of Error Correcting Binary Group
Codes", Information and Control, 3 (1960) p. 68-79.
3. A Hocquenghem, "Codes Correcteurs d'erreurs", Chiffres (Paris) 2 (1959) p. 147-156.
4. W. W. Peterson, "Encoding and Error Correction Procedures for the Bose-Chaudhuri
Codes", IEEE Transaction Information Theory, 6 (1960) p. 459-470.
5. D. C. Gorenstein and N. Zierler, "A Class of Error-Correcting Codes in pm Symbols", Journal of Soc. Indus. Applied Math. 9 (1961) p. 207-214.
6. E. R. Berlekamp, "On Decoding Binary Bose-Chaudhuri-Hocquenghem Codes", IEEE Trans.
Info. Theory 11 (1965) p. 577-579.
7. J. L. Massey, "Step-by-Step Decoding of the Bose-Chaudhuri-Hocquenghem Codes",
IEEE Trans. Info. Theory 11 (1965) p. 580-585.
8. R. T. Chien, "Cyclic Decoding Procedure for the Bose-Chaudhuri-Hocquenghem Codes", IEEE Trans. Info. Theory 10 (1964) p. 357-363.
9. G. D. Forney, Jr., "On Decoding BCH Codes", IEEE Trans. Info. Theory 11 (1965)
p. 549-557.
10. W. W. Peterson and E. J. Weldon, Jr., Error Correcting Codes, 2nd Edition (MIT Press,
1972).
[0005] References 1, 2 and 3 provide a wide class of cyclic error correcting codes which
are commonly known as Reed-Solomon Codes and BCH Codes. These codes, when defined
over nonbinary or extended binary finite fields, can be used for correction of symbol
errors as binary byte errors.
[0006] References 4 and 5 provide the basic key to the solution of the multi-error decoding
problem by suggesting the use of the "error locator polynomial". These references
(4 and 5) suggest the use of a set of linear equations to solve for the coefficients
of the error locator polynomial.
[0007] References 6 and 7 suggest the use of an interative method to compute the coefficients
of the error locator polynomial. The roots of the error locator polynomial represent
the locations of the symbols in error.
[0008] Reference 8 suggests a simple mechanized method, the "Chien Search", for searching
these roots using a cyclic trial and error procedure, while reference 9 provides further
simplification in the computation of error values in the case of codes with non-binary
or higher order binary symbols.
[0009] The contribution of the error locator polynomial in references 4 and 5 was significant
in that the roots of this polynomial represent the locations of the symbols in error
for a multibyte error correcting system. The cross-referenced copending application
discloses an improved syndrome processing unit for developing the coefficients of
the error locator polynomial.
[0010] The method of decoding multibyte errors in a multibyte error correcting system generally
comprises four sequential steps:
Step 1 - calculating of the error syndromes.
Step 2 - determination of the coefficients of the error locator polynomial from the
error syndromes.
Step 3 - identifying the error locations from the error locator polynomial by "Chien
Search".
Step 4 - determination of the byte error values for each of the error locations.
[0011] All known methods for decoding multiple errors require completion of step 3 before
beginning step 4. Because of that situation, prior art systems also require additional
hardware to accumulate the results of step 3 for use subsequently by the hardware
that implements step 4. References 6 and 10 provide good discussion on the prior art
decoding methods.
Summary of the Invention
[0012] The present invention is directed to an error correcting system in which the problems
of the prior art have been eliminated.
[0013] In accordance with the present invention, an error correcting system is provided
in which steps 3 and 4 of the decoding procedure for multibyte errors are completed
simultaneously. In particular, the location and value of each error are computed in
cyclic order without the explicit information regarding the locations of the remaining
errors which are yet to be determined. Step 3, which involves the "Chien Search" function
is expanded into a complete mechanization of the error correcting procedure, and as
a result, data characters in the codeword can be transferred from the error correcting
system to the data processing system one at a time in synchronism with each cycle
of the Chien Search. The access time to the first byte of data is, therefore, not
impacted by the time required for the identification of the error locations and development
of the error values for the errors. The hardware of the error correcting system is
also highly simplified since the results of step 3 which normally had to be stored
no longer need to be stored. The same set of hardware obtains the error values and
the correction for all errors at the appropriate cycle during the Chien Search even
when the actual number of errors is less than the designed maximum. Such an arrangement
was only possible in prior art single symbol correcting codes.
[0014] The improved system also avoids all division operations in obtaining the coefficients
of the error location equation when the syndrome processing unit disclosed in the
copending application is employed in connection with the error pattern processing
circuits of the present invention.
[0015] As discussed in the copending application, the situation where less than the maximum
number of errors are present in the code word results in additional simplification
of the hardware which becomes important when the circuitry of the error correcting
system is being implemented in very large scale integration. The simplification is
important in that when the circuitry has been implemented in VLSI to operate with
2t input syndrome bytes, the same VLSI circuitry can be used in environments which
provide less than 2t input syndrome bytes.
[0016] It is, therefore, an object of the present invention to provide a multibyte error
correcting system which has a minimal effect on the access time of an associated data
storage system.
[0017] A further object of the present invention is to provide a multibyte error correcting
system in which the transfer of the codeword from the error correcting system is initiated
prior to the time that the identity of all the error locations is known.
[0018] A still further object of the present invention is to provide a multibyte error correcting
system in which the location and error pattern of each byte of the codeword that is
in error is simultaneously identified as bytes are being transferred from the error
correcting system so that errors are corrected on-the-fly.
[0019] A further object of the present invention is to provide an ECC system which is operable
to correct any number of errors up to the maximum number for which it has been designed
so that the same hardware may be employed to correct less than the maximum number
of errors in one application or, alternately, employed with a different application
which employs a fewer number of check bytes and syndrome bytes.
[0020] A further object of the present invention is to provide an ECC system in which only
one inverse operation is involved in developing the error patterns.
[0021] The foregoing and other objects, features and advantages of the invention will be
apparent from the following more particular description of a preferred embodiment
of the invention as illustrated in the accompanying drawing.
Brief Description of the Drawing
[0022]
FIG. 1 is a block diagram of a multibyte error correcting system embodying the present
invention;
FIGS. 2 and 3 are schematic diagrams of the syndrome processing unit shown in FIG.
1 for developing the error locator coefficients of the error locator polynomial;
FIG. 4 is a schematic logic diagram of the logic for generating the coefficients for
the error value expression;
FIG. 5 is a schematic diagram of the circuitry for implementing the error search,
determination of the error value, and delivery of data with on-the-fly correction
of the erroneous bytes.
Description of the Preferred Embodiment
[0023] A description of the system shown in FIG. 1 will first be provided. The description
of the syndrome processing logic for identifying error locations and the method of
operating the logic will then be followed by a mathematical explanation and proof
of the manner in which the logic has been implemented. This explanation will describe
in mathematical terms the operation of the error correcting system for the general
case of any number of errors.
[0024] FIG. 1 shows the block diagram of an on-the-fly ECC system, which includes a syndrome
processing logic disclosed and claimed in our previously cross-referenced application.
As described in that application, the syndrome processing unit developes the coefficients
for the error locator equation. The correcting process of the FIG. 1 system is continuous.
An uninterrupted stream of data enters and leaves the decoder in the form of a chain
of n-symbol codewords, hence the name, on-the-fly decoding.
[0025] From a practical viewpoint, a given decoding process can be considered on-the-fly
if it meets the following test, namely, the corrected data bytes of a previously received
codeword are delivered to the user system while the data bytes of the following codeword
are being received.
[0026] The decoder, comprising blocks 6, 7, 8, 9, computes syndromes for the incoming codeword
as it decodes and corrects errors in the previously received outgoing codeword. Each
clock cycle corresponds to an input of one data symbol of the incoming codeword concurrent
with an output of one corrected data symbol of the outgoing codeword. A buffer 5 holds
at least n-symbols of the uncorrected data in between the incoming and outgoing symbols.
[0027] A three-error correcting Reed-Solomon Code in GF(2
8) is used as an example of special interest for applications in computer products.
The 256 elements of GF(2
8) are conventionally represented by the set of 8-bit binary vectors. One such representation
is given in Table 1. In a three-error correcting Reed-Solomon code, there are six
check symbols corresponding to the roots α
0, α
1, α
2, α
3, α
4, α
5 of the generator polynomial where is an element of a finite field GF(2
8) and is represented by an 8-bit binary vector. The corresponding syndromes computed
by block 6 are denoted by S
0, S
1, S
2, S
3, S
4, and S
5 respectively. These syndromes are computed from the received codeword in the conventional
manner in accordance with any known prior art process. The implementation for this
step is well known and makes use of exclusive-OR circuits and shift registers. The
details of the block 7 logic circuits are shown in FIGS. 2 and 3.
[0028]

[0029] 0114938 The overall function of the block 7, shown in FIGS. 2 and 3, is first to
implement the following four equations in FIG. 2 to develop the locator parameters
Δ
33' Δ
32, Δ
31 and
A30 for the three error case, which also includes the parameters Δ
22' Δ
21 and Δ
20 for the two error case where, for example, the subscript 33 identifies one of four
parameters. From these locator parameters, the coefficients Δ
3' Δ
2' Δ
1 and Δ
0 are selected by the logic shown in FIG. 3 in accordance with the exact number of
errors that are involved in the particular codeword. The equations for Δ
33, Δ
32' Δ
31 and Δ
30 are as follows:




[0030] These parameters are used to determine the coefficients of the error locator equation
(17). The error locations and error patterns are then determined by the blocks 8 and
9 of the "on-the-fly" system shown in FIG. 1. The details of block 7 are shown in
FIG. 2 and 3.
[0031] The combinatorial logic shown in FIG. 2 includes two basic logic blocks 10 and 11.
The first block 10, represented by an X, corresponds to a product operation in GF(2
)involving two 8-bit binary vectors, while the second block 11 represents a sum operation
in GF(2
8) involving two 8-bit binary vectors. The operation of block 11 is a simple bit-by-bit
exclusive-OR logical function using eight 2-way exclusive-OR gates. The product operation,
on the other hand, represented by block 10 is more complex and involves 71 exclusive-OR
circuits and 64 AND circuits. The need for the 71 XOR circuits and 64 AND circuits
may be seen from the following explanation of the product function of block 10.
[0032] The product operation of block 10 involves two 8-bit vectors A and B to produce a
third vector C where
[0034] Second, reduce the polynomial F, modulo p(x), where p(x) is a primitive binary polynomial
of degree 8. Use p(
x) = 1 + x
3 + x
5 + x
7 + x
8. The reduction of f
i modulo p(x) requires at the most 22 EX-OR gates.








[0035] The implementation of the product process involves one 2-input AND-gate for each
product term required for the coefficient f
0 through f
14 and a 2-input exclusive-OR gate for combining the outputs of the AND-gates. Each
block 10, therefore, represents 64 AND-gates, 71 exclusive-OR gates.
[0036] The first term of the error locator polynomial S
2(S
1,
S3 ⊕
S2,
S2) of the Δ
33 equation is implemented by dashed block 16 in FIG. 2. The output of block 16 is exclusive-ORed
in gate 18 with the second term of the equation and the result exclusive-ORed in gate
19 with the last term of the equation.
[0037] The blocks involved in developing each of the other parameters Δ
32' Δ
31 and Δ
30 may be traced in a similar manner in FIG. 2. '
[0038] The parameters Δ
22, Δ
21 and Δ
20 for the case when only two errors occur are cofactors in equation (1) for Δ
33. These cofactors are:



[0039] In FIG. 2, the computations for Δ
22, Δ
21 and Δ
20 are shown as the interim byproducts within the computations for Δ
33. Similarly, Δ
11 and Δ
10 are cofactors in equation (48) for Δ
22 which are given by


[0040] It is shown later in the specification how the equations for developing locator parameters
are derived from the following prior art relationship of the error locator polynomial
with the syndromes.

[0041] FIG. 3 illustrates the logic for selecting the coefficients of the error locator
polynomial from the locator parameters Δ
33 through Δ
30 and the cofactors L
22 through Δ
10. The FIG. 3 logic functions to identify the number of errors from the input parameters
Δ
33 through Δ
30 and the cofactors Δ
22 through Δ
10 and select the appropriate value Δ
m in the general equation

[0042] • When Δ
33 is non-zero, indicating the presence of three errors, the coefficients Δ
3 through Δ
0 will assume the values Δ
33 through Δ
30. As shown, when Δ
33 is non-zero, the output of AND-gate 41 is low, permitting the Δ
32, Δ
31 and A
30 signals to be gated through AND-gates 42, 43 and 44 respectively since the output
of AND-gate 41 is inverted at the input to each gate 42-44 to enable each of the AND-gates.
[0043] A similar logic function is achieved by Δ
22 if Δ
33 is zero indicating not more than two errors are present. In such a situation, Δ
2, Δ
1 and Δ
0 will take the values of Δ
22, Δ
21 and Δ
20 respectively through the operation of AND-gates 51, 52 and 53 respectively. This
function corresponds to the syndrome equation for two errors.
[0044] The logic circuitry of FIG. 3 functions similarly - if Δ
22 is also zero to cause Δ
1 and Δ
0 to assume the values of Δ
11 and Δ
10. AND-gates 61 and 62 gate Δ
11 and Δ
10 respectively through OR-gates 71, 72 if Δ
33 and Δ
22 are both zero since AND-gate 60 provides the enabling signal.
[0045] The overall logic of FIG. 3, therefore, functions to produce or to select the correct
values of the coefficients Δ
3, Δ
2, Δ
1 and Δ
0 for the error locator equations from the locator parameters developed by the logic
of FIG. 2.
[0047] The logic circuitry of FIG. 4 in effect implements the above three equations and
comprises two basic logic blocks 110 and 111. Block 110 functions to provide the product
function of the two 8-bit vectors and is identical to block 10 described earlier in
connection with FIG. 2. Block 111 is a sum function of two 8-bit vectors and is identical
to block 11 described earlier in FIG. 2. With the error value coefficients W and the
error location coefficients A being developed, the circuitry of FIG. 5 is employed
to mechanize the trial and error systematic search, i.e., the Chien Search, for the
actual error locations and error patterns. The circuit of FIG. 5 functions to implement
the error value equation when that equation is rewritten as

[0048] As shown, FIG. 5 comprises four feedback shift registers 120-0, 120-1, 120-2 and
120-3 which receive the error location coefficients and three feedback shift. registers
130-0, 130-1 and 130-2 which receive the three error pattern coefficients. The block
labelled 120 implements the following equation

while block 130 implements the numerator of equation 16. The denominator of equation
16 is developed by the inverse block 140 from the output of exclusive-OR gate 125 which
is one term developed for equation 17 The function and details of the inverse block
140 are discussed further on in the specification. The output of the exclusive-OR
gate 127 functions through AND-gate 128 to provide an indication of an uncorrectable
error condition which, depending on the length of the codeword, would occur in some
cases if the number of errors exceeds the designed correction capability of the code.
[0049] The product block 145 multiples the two 8-bit vectors in a manner identical to product
blocks 110 and 10 described earlier and comprises 76 exclusive-OR gates and 64 AND-gates,
each of which are 2-input gates.
[0050] The output of product brock 145 is the error pattern E
. supplied to AND-block 146 comprising eight 2-input AND-gates. The error pattern vector
E
i supplied to gate 146 is supplied to exclusive-OR block 147 only when the error locator
logic indicates that the output of exclusive-OR block 127 is zero. The other input
to exclusive-OR block 147 is from buffer 4.
[0051] As shown in FIG. 5, a clock signal C is supplied to the shift registers and buffers
so that the bytes of data in error are each supplied to exclusive-OR block 147 at
the appropriate time determined by the recognition that the error is located as indicated
by a zero at the output of exclusive-OR block 127, thereby signifying that the output
of the product block 145 contains the correct error pattern for that byte position.
[0052] The operation of the FIG. 5 circuitry is as follows. The computed values of the coefficients
Δ
3, Δ
2, Δ
1 and Δ
0 and Φ
2 , Φ
1 and Φ
0 are entered into the appropriate shift registers at clock 0 time. Each clock cycle
generates a shifting operation of these registers. A shifting operation multiplies
the contents of each register by a specific constant, namely α
3, a
2 and a , in the case of the shift
[0053] registers for Δ
3, Δ
2, and Δ
1 respectively and α
2 and a in the case of registers of Φ
2 and Φ
1 respectively. At the ith clock cycle, the upper set of exclusive-OR circuits 121,
125 and 127 in FIG. 5 at the output of shift registers 120 are presented with all
the terms of equation 17. When the sum is 0, equation 17 is satisfied and one error
location is identified. Similarly, at the i
th clock cycle, the lower set of exclusive-OR circuits 131, 132 at the output of shift
registers 130 are presented with all the terms of the numerator in equation 16. The
denominator for equation 16 is readily available, as mentioned previously, from exclusive-OR
circuit 125. Block 140 for an inverse operation and block 146 for the product . operation
compute the error pattern E for each position in accordance with equation 16.
[0054] The algebraic inverse in GF(2
8) can be obtained through combinational logic which maps each 8-digit binary sequence
into a specific 8-digit binary sequence. This mapping requires, at the most, 304 two-terminal
AND-gates and 494 two-terminal OR-gates. The method of developing the inverse is shown
later on in the specification. When the error location is identified, data character
from buffer 4 is modified by E
i through the output-sum network 146-147. For all other values of i, the computed value
of E
i is ignored since AND-gate 146 is closed. When all bytes of the codeword are delivered
(at the final clock cycle c), if an error location was not identified in spite of
nonzero syndromes, then there are too many errors. The latch 156 and AND-gate 157
indicates this with an UE (uncorrectable error) signal.
[0055] The corrected bytes in the decoder of FIG. 5 are delivered in the order B
0, B
1, B
2, ..., B
c-1. This is the reverse order compared to that in the encoding operation since the check
bytes correspond to the low-order positions. This reversal can easily be removed by
introducing a reversal relationship between clock cycle count j and the byte location
number i by substituting (c-j) for i in the decoding equations 17 and 16 and rewriting
them as


[0056] In these equations, j represents the clock cycle count, and j=l to c, successively,
correspond to the byte-position values i = (c-1) to 0. This provides delivery of bytes
in the order B
c-1, ..., B
1, B
0' which is the same as that in the encoding process.
[0057] To accomplish the above-mentioned modification, the following chages are made in
the logic of FIG. 5: (1) the shift register multipliers α
3, α
2, and a are replaced by a a and α
-1, respectively; (2) the coefficients δ
3, δ
2, δ
1, Φ
2, and Φ
1 are premultiplied by the constants α, α
2c, α
c, α
2c, and α
c respectively. These premultiplication circuits depend on the value of c and each
requires a small number of exclusive-OR gates. Note that when c = 255, this premultiplication
is not needed since α
255 = 1. The modified logic described above appears in FIG. 6.
[0058] The following is the mathematical derviation for the equations used in the logic
implementation of FIGS.
2 and 3.
[0059] In the three-error correcting Reed-Solomon Code in GF(2
8) there are six check symbols corresponding to the roots α
0, α
1, a , α
3,α
4, α
5 of the generator polynomial. The corresponding syndromes are denoted by S
0, S
1, S
2, S
3, S
4 and S
5 respectively.
[0060] We assume that, at the most, three symbols are in error. The error values.are denoted
by Ei
l, Ei
2 and Ei
3 and the locations of erroneous symbols are denoted by i
1, i
2 and i3. Then the relationships between the syndromes and the errors are given by

[0061] Consider the polynomial with roots at α
i1, α
i2 and α
i3. This is called error locator polynomial, given by

Substituting x = α
i in (2A) we get

[0062] From equations (lA) and (3A), we can derive the following relationship between the
syndromes S
. and the coefficients σ
i of the error location polynomial.

[0063] We can solve Equation (4A) and obtain σ
0, σ
1 and σ
2 as

where Δ
33, Δ
32, Δ
31 and Δ
30 are given by




[0064] If the value of Δ
33 is 0, then Equation (4A) is a dependent set which implies that there are fewer than
three errors. In that case, the syndromes will be processed for two errors where the
parameters Δ
22, Δ
21 and Δ
20 are derived from similar equations for the case of two errors and are given by



[0065] Note that these are cofactors of Δ
33 as seen from Equation (6A) which can be rewritten as

[0066] Thus, the values Δ
22' Δ
21 and Δ
20 for the case of two errors need not be computed separately. They are available as
byproducts of the computation for Δ
33. Similarly, Δ
11 and Δ
10 for the case of one error are given by


which are cofactors of Δ
22 and are also readily available as syndromes.
[0067] Let v denote the exact number of errors, which may be 3, 2, 1 or 0.
[0068] The exact number of errors is determined as follows:

The special cases of two and one errors can be accomodated automatically by selecting
appropriate determinants. To this end, let Δ
3, Δ
2, Δ
1 and Δ
0 be defined as




[0069] Then equation (5A) can be rewritten as

[0070] Conventionally, the error locator polynomial (3A) with the coefficients σ
0, σ
1 and σ
2 of equation (21A) is used to determine error locations through the well known Chien
search procedure. However, the error locator equation can be modified in order to
avoid the division by Δ
v. The modified error locator equation is given as

[0071] The error location numbers are the set of v unique values of i which satisfy Equation
(22A).
[0072] Next an expression is derived for the error values E
i1,
Ei2 and E
i3. From Equations (
lA) for j = 0, 1 and 2

[0073] Solving (23A) for E
i1
[0074] From Equation (2A)


[0075] From Equations (24A), (25A) and (26A)

[0076] Using Equation (5A) Equation (27A) can be reduced to
[0077] 
Notice that the error value E
i1 in Equation (
28A) is expressed in terms of i
1 and hence it can be computed without explicit values for i
2 and i3. The other error values E
i2 and E
i3 have similar expressions. A more general expression for error value is obtained by
rewriting Equation (28A) with a running variable i in place of i
1 as follows:

where the coefficients Φ
0, Φ
1 and Φ
2 are given by



[0078] The Equation (29A) makes it possible to combine the conventional Step 4 with Step
3 of the decoding process where the error values E
i1. E
i2 and
Ei3 are computed in synchronism with the "Chien Search" of the error locations.
[0079] The syndrome decoder then consists of computation of various quantities in Equations
(22A) and (29A) for each value of i in a cyclic iterative manner and then affecting
the correction of an outgoing symbol with E whenever Equation (22A) is satisfied.
The General Case of t Errors
[0080] The following is the mathematical derivation for the general case to establish that
the logic set forth in FIGS. 2, 3, 4 and 5 for the special case of up to three errors
is applicable in general for t errors.
[0081] In a general BCH or Reed-Solomon code, the codeword consists of n-symbols which include
r check symbols corresponding to the roots α
a, α
a+1, α
a+2, ..., α
a+r-1 of the generator polynomial where a is an element of the Galois field GF(256). The
integer a will be taken to be zero, although all of the following results can be derived
with any value of a. The corresponding syndromes are denoted by S
0, S
1,
S2, ..., S
r-1 respectively. The syndromes can be computed from the received codeword as

where B
0, B
1' B
2' ..., B
n-1 are the n-symbols of the received codeword.
[0082] Let v denote the actual number of symbols in error in a given codeword. The error
values are denoted by E
i where i represents an error location value from a set of v different error locations
given by {I} = {i
1, i
2, ..., i
v}. The relationship between syndromes and the errors are then given by

[0083] Any non-zero value of a syndrome indicates the presence of errors. The decoder processes
these syndromes in order to 'determine the locations and values of the errors. Let
t denote the maximum number of errors that can be decoded without ambiguity. A set
of r=2t syndromes are required to determine the locations and values of t errors.
[0084] Consider the polynomial with roots at a where iε{i}. This is called the error locator
polynomial defined as

where σ
0 = 1, σ
v ≠ 0 and for m >v, σ
m = 0 . The unknown coefficients σ
m for m ≤ v can be determined from the syndromes of Equation 1B as shown below.
[0085] Substituting x=α
i in Equation 3B we get

[0086] Using Equations
2B and
4B , it is easy to show that the syndromes S and the coefficients σ
m of the error locator polynomial satisfies the following set of relationships:

[0087] The set of equations 5B can be rewritten in matrix notation as

[0088] Let M denote the tx(t+l) syndrome matrix on left side of Equation
6B. Let M
t denote the square matrix obtained by eliminating the last column in matrix M. If
M
t is nonsingular, then the above set of equations can be solved using Cramer's rule
to obtain

where Δ
tt is the non-zero determinant of matrix M
t and Δ
tm denotes the determinant of the matrix obtained by replacing the m
th column in matrix M
t by negative of the last column of the syndrome matrix M for each m = 0, 1, ..., t-1.
[0089] If matrix M
t is singular, (i.e., Δ
tt is 0) then Equation 5B is a dependent set which implies that there are fewer than
t errors. In that case, σ
t is 0. We can delete σ
t and last row and last column of the syndrome matrix in 6B. The resulting matrix equation
corresponds to that for t-1 errors. This process is repeated if necessary so that
the final matrix equation corresponds to that for v errors and M is nonsingular. Then
we need the set of determinants A where m=0, 1, ..., v.
[0090] It can be easily seen that Δ
vm for v=t-l is a cofactor of Δ
tt corresponding to the (m-1)
st column and t
th row - in matrix M
t. We can express Δ
tt in terms of these cofactors:

Thus the values Δ
vm for v=t-1 need not require separate computations. They are available as byproduct
of the computation for Δ
tt. In fact, Δ
vm for subsequent smaller values of v are all available as byproducts of the computation
for Δ
tt through the hierarchical relationships of lower order cofactors. Thus, in case of
fewer errors, the decoder finds Δ
tt =0 and automatically back tracks into prior computations to the correct value for
v and uses the already computed cofactors Δ
vm. This is illustrated previously through hardware implmentation of the case t=3..
[0091] In order to accomodate the special cases of all fewer errors, we will replace Equation
7B by a more convenient general form

where v is determined from the fact that Δ
mm=0 for all m>v and A ≠0; and A is defined with the new notation vv m as

[0092] Since σ
0=1 , one can determine σ
m for all values of m using Equation
9B. However, we will see that the coefficients σ
m are not needed in the entire decoding process. To this end, we obtain a modified
error locator equation from Equations
4B and 9B as given by

[0093] The error location values i
E{I} are the set of v unique values of i which satisfy Equation 11B.
[0094] The error locator polynomial as defined by Equation 2B has v roots corresponding
to v error location values. Consider a polynomial which has all roots of the error
locator polynomial except one corresponding to the location value i=j. This polynomial
is defined as

[0095] When the actual number of error locations v is less than
t, the coefficients σ
j,m are 0 for m=v,...,t-1. This is done in order to affect processing of all values of
v through a single set of hardware. Substituting x=α
i in Equation
12B we get

[0096] Examine an expression similar to one in Equation 5B involving the syndromes S. and
the coefficients a of the new polynomial. Using Equation 2B , we substitute for S
m and get

[0097] Interchanging the order of summing parameters m and i in Equation 14B we get

[0098] Now using Equations 13B and 15B we obtain

[0099] Thus we have an expression for the error values

[0100] The above expression for error values is well-known. We will reduce it further to
obtain a more convenient form. To this end, we prove the following Lemmas 1, 2 and
3.
[0101] In Lemma 1, we obtain a relation which expresses the coefficients σ
j,m in terms of the known coefficients σ
k of the error locator polynomial.
Lemma 1
[0102] 
[0103] Proof: From the definitions of polynomials in Equations 3B and 12B we have

[0104] Comparing the coefficients of each term in the polynomials on the two sides of equation
19B we have

[0105] Using Equation 20B, we can substitute for σ
k and obtain

[0106] On eliminating the cancelling terms from Equation 21B we get

[0107] This completes the proof of Lemma 1.
[0108] Next we rewrite the denominator of the expression in Equation 17B using the result
of Lemma 1.
Lemma 2
[0109] 
Proof: Using Lemma 1 we obtain

[0110] Interchanging the order of summing parameters m and k, we get

[0111] Using Equation 4B, we can rewrite Equ'ation 25B as

[0112] This completes the proof of Lemma 2.
[0113] Now we use the result of Lemma 1 and obtain a more convenient expression for the
numerator in Equation 17B in the following Lemma.
Lemma 3
[0114] 
[0115] Proof: Using Lemma 1 we can express σ
j,m in terms of σ
k. On substituting these values we obtain

[0116] Let RHS denote the right-hand side of Equation (28B) In order to prove the Lemma,
we rearrange RHS. First, we use the result from Equation 4B and rewrite some of the
terms in RHS (the terms with m>µ) as

[0117] Then, substituting k by m+h in the above RHS becomes

[0118] Interchanging the order of summing parameters m and h, we obtain another form for
RHS as

[0119] Substituting m by k-h, the expression RHS becomes

[0120] However, from Equation 5A we have

[0121] Thus using Equation 33B in 32B we have the final form for RHS:

[0122] This completes the proof of Lemma 3.
[0123] We also have the following corollary of Lemma 3 from Equation 32B
Corollary:
[0124] 
[0125] where 0 ≤ µ ≤ t and the coefficients φ
m are given by

[0126] Lemma 3 and its corollary provides a family of expressions for the numerator in Equation
17B through a choice of values for µ. We make the following observations:
(a) The expression in Lemma 3 requires the syndromes Sµ+0, Su+1, ..., Sµ+t-1; whereas the expression in the corollary requires the syndromes S0, S1, ..., St-1. This is especially important in the case of erasure correction.
(b) The expression. in the corollary requires fewer number of multiplications of the
type σkSk-m compared to the expression in Lemma 3. In. the corollary, this number depends on
the choice of µ and is the minimum when u=µ where u is the largest integer under t/2.
The number of multiplications with the choice µ=µ is the integer closest to (t2+2t)/4.
(c) The cases of fewer errors (v<t) are automatically processed by the same hardware as that for processing t errors.
With a given choice of µ, the same hardware can be also used in applications with
a smaller set of syndromes, S0, S1, ..., St1 and up to tl errors provided that t≥t1>µ. From this point .of view, lower values
of µ are desirable and the choice of µ=0 offers the maximum flexibility in applicability
of the decoder hardware. The number of multiplications required by the expression
in the corollary with µ=0 is (t2-t+2)/2 which is less than two times the minimum of (t2+2t)/4 when u=µ.
[0127] In view of the above observations, we will use expression in the corollary of Lemma
3 in decoder implementation. For large values of t, it is advisable to use u=µ for
the greatest economy in hardware. In case of small values of t, we use u=0 for flexibility
in being able to reduce the value of t, later if necessary, without modifying the
already fabricated hardware.
[0128] Now we can rewrite Equation 17B using the results of Lemma 2 and the corollary of
Lemma 3 with µ=0. As a result, any error value E. can be expressed as

where

[0129] In view of Equation 9A, the above expressions can be normalized to obtain error values
in terms of A as follows:

where

[0130] In case of binary base field, the terms with even values of m, (m mod 2=0) in the
denomination of Equation 39B vanish. The resultant expression for E. for binary base
field is

where

[0131] Note that the computations for the denominator in Equation 41B is already available
as a byproduct from the computations of Equation 11B for each value of i in the Chien
Search of error locations. The numerator for each value of i can be computed and multiplied
by the inverse of the denominator in synchronism with the search for error locations.
The resultant E. is used for correction of the outgoing i
th data symbol B
i whenever the error locator Equation 11B is satisfied.
[0132] Table 2 which follows lists 255 non-zero elements of GF(2
8), each with the corresponding inverse element. A primitive polynomial p(
x) = x
8 + x
7 + x5 + x3 + 1 was used to generate these elements. The elements are represented by 8-digit binary
vectors which in polynomial notation have the coefficient for the high order term
on the left. The inverse function of this table was implemented through block 40 using
the conventional 8-bit encode-decode logic. This requires at the most 304 AND-gates
and 494 OR-gates.
[0133] While the invention has been particularly shown and described with reference to a
preferred embodiment thereof, it will be understood by those skilled in the art that
various other changes in the form and details may be made therein without departing
from the spirit and scope of the invention.
