EP0316063A2  Error correction using lookup tables  Google Patents
Error correction using lookup tables Download PDFInfo
 Publication number
 EP0316063A2 EP0316063A2 EP19880308881 EP88308881A EP0316063A2 EP 0316063 A2 EP0316063 A2 EP 0316063A2 EP 19880308881 EP19880308881 EP 19880308881 EP 88308881 A EP88308881 A EP 88308881A EP 0316063 A2 EP0316063 A2 EP 0316063A2
 Authority
 EP
 Grant status
 Application
 Patent type
 Prior art keywords
 value
 error
 errors
 syndromes
 log
 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.)
 Granted
Links
Images
Classifications

 G—PHYSICS
 G11—INFORMATION STORAGE
 G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
 G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
 G11B20/10—Digital recording or reproducing
 G11B20/18—Error detection or correction; Testing, e.g. of dropouts
 G11B20/1806—Pulse code modulation systems for audio signals
 G11B20/1809—Pulse code modulation systems for audio signals by interleaving

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
 H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
 H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
 H03M13/13—Linear codes
 H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, BoseChaudhuriHocquenghem [BCH] codes
Abstract
Description
 This invention relates to a method and apparatus for correcting errors in encoded uncorrected data using an implementation involving lookup tables for decoding syndromes of error indicative of at least two errors in the data.
 The following references disclose basic theories and various methods and arrangements for correcting errors in storage devices: W. W. Peterson, ErrorCorrecting Codes, M.I.T. Press, 1961; R. C. Bose and D. K. RayChaudhuri, "On a class of errorcorrecting binary group codes", Inf. Control 3, pp. 6869, 1960; I. S. Reed and G. Solomon, "Polynomial codes over certain finite fields", J. Soc. Indust. Appl. Math 8, pp. 300304, 1960; and R. T. Chien, "Cyclic decoding procedures for BoseChaudri Hocquenghem codes", IEEE Trans. Inf. Theory, Vol. IT10, pp. 357363, 1964.
 In copending EPA0 218 413, there is disclosed a twolevel error correction code structure in an improved multibyte errorcorrecting subsystem. Data is formatted on a disk track into a number of subblocks, each within a respective block. There are also two sets of three subblock check bytes C₁, C₂ and C₃. One set is associated with the even phase and the other with the odd phase, thus providing interleaved codewords. With this arrangement, the first level of correction (of subblock errors) is done onthefly at the storage device after being delayed one subblock, and the data is sent to the storage director for correction of any second level (block) errors. This onthefly correction is suitable only for systems operating in an asynchronous environment. The second (block) level correction is carried out using one additional check byte C₀ for each phase at the end of the block.
 The aforementioned copending application discloses hardware in a disk storage device that receives uncorrected data in real time and generates three firstlevel syndrome bytes and one secondlevel syndrome byte (corresponding to each phase). The firstlevel syndromes are decoded at the device into error pattern and error location information that is transmitted to a storage director.
 The aforementioned application describes how the system functions if there are no errors in any subblock, and how errors are corrected if there is not more than one error per subblock and if there is more than one error per subblock. More specifically, syndromes S₁, S₂, S₃ corresponding to each phase associated with a particular subblock codeword are held in a local memory. They are retained for further processing at the block level if that particular subblock's syndromes were not all zeros and no nonzero error pattern was generated by a first level decoder. The local memory also retains the identification of an uncorrected subblock as subblock identifier "f". At the end of the block, a second level syndrome, S₀, from a second level syndrome generator and the first level syndromes S₁, S₂, S₃ for subblock f from the local memory are processed by a second level decoder to correct two errors in subblock f.
 There is a need for a less expensive, yet efficient, arrangement for so doing.
 Accordingly, the present invention provides a method of correcting two byte errors in encoded uncorrected data in records of a predetermined length read from a storage device by decoding and processing four error syndromes, the method comprising:
responsive to two errors in any one record, decoding the syndromes by computing vectors which are functions of the four syndromes;
calculating two binary numbers from the vectors by table lookup;
calculating one value from the sum of the binary numbers for the purpose of determining the locations of the two errors;
determining another value, having a specific mathematical relation to the one value, by table lookup; and
calculating values identifying the locations of the errors by calculating the offset of the binary numbers from the other value.  Apparatus for performing the method is also provided.
 Hereinafter, there is disclosed a method and apparatus for correcting up to two byte errors in encoded uncorrected data in records of a predetermined length (such as a preidentified subblock of a block in the case of a multilevel error correction code format). The data is read from a storage device and corrected by decoding and processing four syndromes of error (S₁, S₂, S₃, S₀) that are generated by means disclosed in the aforementioned copending application. These syndromes are decoded in response to uncorrected errors in any one record by computing vectors P, Q and R, which are functions of the four syndromes. Binary numbers u and v are then calculated from these vectors by table lookup to enable calculation of a value of d from the sum of the binary numbers toward determining error locations. A value t, having a specific mathematical relation to the value of d, is then determined by table lookup and the error location values y and z are calculated from the offset of binary numbers u and v from the value t. Finally, the error patterns E_{y} and E_{z} are determined by table lookup.
 As illustrated, and more specifically, errors in encoded uncorrected data in a disk storage device are corrected using a multiple level error correction code formatted into a block containing a number of subblocks. During a read operation, first level syndromes of error (S₁, S₂, S₃) for each subblock and an additional second level syndrome (S₀) common to all subblocks of the block are generated by hardware in the storage device. The first level syndromes are decoded by table lookup to provide first level error pattern and location information. The second level syndromes are decoded by computing vectors that are functions of the first and second level syndromes. The second level error locations and error patterns are determined by software or firmware using lookup tables. Any correction of errors, if needed, is done later by sending error information in a deferred mode.
 The present invention will be described further by way of example with reference to a preferred embodiment thereof as illustrated in the accompanying drawings, in which:
 Fig. 1 illustrates a data format of a disk track that embodies a twolevel code structure; and
 Fig. 2 is a block diagram of the first and second level correcting portions of an ECC apparatus of one embodiment of the invention showing flow of the data and depicting the hardware resident in the storage device and software resident in the storage director.
 Fig. 1 illustrates the data format of a disk track that embodies a twolevel code structure. As illustrated, data is recorded along a track 11, formatted into a plurality of fixed or variable length blocks 12. Each block 12 is divided into fixed length subblocks 14. As illustrated, each subblock 14 comprises two interleaved codewords 18, 19. Each codeword 18, 19 comprises 48 data byte positions and three subblock check bytes C₁, C₂, C₃. Each block 12 thus comprises subblocks, each having 96 (two pairs of 48) data byte positions and three pairs of subblock check bytes C₁, C₂, and C₃. In addition, four check bytes CR₁CR₄ for data integrity checking after ECC correction and one pair of check bytes C₀ for second level error correction are appended to the end of each block 12 in a block check byte area 15. The manner in which the error correction check bytes C₁C₃ in each subblock 12 and check bytes CR₁CR₄ and C₀ at the end of each block 12 are determined and produced forms no part of the present invention. The reader is referred to the aforementioned copending application, for a detailed explanation. In the following description of this invention, all process steps will be described for one of the two phases (even or odd); however, it is to be understood that the same steps and process are repeated for the other phase.
 Referring now to Fig. 2, data from a data processing system (not shown) is sent via a control unit or storage director 20 to storage disk 21 of a disk storage device 100 for writing on a track which is formatted as shown in Fig. 1. In the writing and transfer of this data, three sets of check bytes C₁, C₂ and C₃ are developed for each subblock by an ECC encoder 22. Block check byte C₀ (and data integrity check bytes CR₁CR₄) are also developed by encoder 22. A subblock formatter 22A appends check bytes C₁, C₂ and C₃ to each corresponding subblock. A block formatter 22B appends block check byte C₀ (as well as data integrity check bytes, CR₁CR₄) at the end of the block. The formatted data is then recorded on storage disk 21. Computation and processing of the data integrity check bytes CR₁CR₄ forms no part of the present invention and is described in U. S. Patent 4,703,485, issued October 27, 1987.
 In the readback process, the read data are checked by coding equations (1), (2), (4) and (5) in the aforementioned copending application in order to develop the syndromes of error in the conventional manner. Subblock check bytes C₁, C₂ and C₃ are associated with syndromes S₁, S₂ and S₃, while blocklevel check byte C₀ is associated with the S₀ syndrome byte.
 The subscript numbers assigned to the syndromes, e.g., S₀, S₁, etc., are related to the particular T matrix employed to generate the respective check characters. Specifically, S₀, which is developed from C₀, corresponds to a conventional parity check byte. S₃, on the other hand, is developed from C₃ which is generated in accordance with logic that involves multiplying the input byte by a matrix T³ . Syndromes S₁ and S₂, which correspond to check bytes C₁ and C₂, respectively, are similarly generated, using logic which involves matrices T¹ and T² , respectively. Such logic for syndrome generation is well known and forms no part of the present invention.
 During the readback process, uncorrected data is read from disk 21 to a first level syndrome generator 23 and a secondlevel syndrome generator 25 which generate firstlevel syndrome bytes S₁, S₂, S₃ for each subblock and a secondlevel syndrome S₀ common to all subblocks of the block. The syndrome bytes S₁, S₂, S₃ are transmitted to a first level decoder 24 in storage director 20 for decoding into error pattern data. The softwareimplemented decoding process for decoder 24 is described below in a separate section entitled "First Level Decoding Process".
 Briefly, a nonzero value for S₁, S₂ or S₃ indicates an error. If a subblock has only one byte in error, its location x and error pattern E_{x}, as determined by decoder 24, will be supplied to the software 26 for correction of the appropriate byte fetched from subblock buffer 27. After correction, this byte is restored into buffer 27. The error pattern E_{x} will also be stored in local memory 28 for each of the subblocks that obtained firstlevel correction of one error. The secondlevel syndrome S₀ will be modified by software at 29 to include the error pattern information E_{x} corresponding to all of the corrected subblocks. When decoder 24 has received a nonzero value for S₁, S₂ or S₃ and is unable to correct the subblock, it indicates the presence of more than one error in the subblock by providing a subblock identifier f to the local memory 28. The unprocessed syndromes S₁, S₂ and S₃ for subblock f are also passed on to the local memory for later processing by the secondlevel decoder. Secondlevel decoding software 30 will combine syndrome S₀ with the syndromes S₁, S₂, S₃ from local memory 28 and convert these combined inputs by table lookup into outputs y and z indicative of the error locations and E_{y} and E_{z} indicative of the error patterns. These outputs y, z, E_{y}, E_{z} will be combined with the identifier f of the subblock in error for causing the bytes in error B_{y} and B_{z} to be corrected. The secondlevel error correction software 31 fetches the subblocks from the buffer 27 and delivers corrected data by providing correction of bytes B_{y} and B_{z} of subblock f using the error location information y,z and error patterns E_{y} and E_{z}.
 The basic twolevel ECC scheme, as described in the aforementioned copending application has n subblocks in a block with N bytes in each subblock. The capability at the first level of decoding provides correction of up to one byte error in each of the subblocks. The capability, including the second level of decoding provides correction of up to twobyte errors in one subblock and onebyte error in all other subblocks in a block.
 The basic error event is a "byte in error". A burst error may cause correlated errors in adjacent bytes; however, sufficient interleaving is assumed to effectively randomise these errors. With appropriate interleaving, all bytes are assumed equally likely to be in error as seen by the error correction code (ECC) scheme. Each byte contains a preselected number of bits m; the corresponding operations for the error correction code will be carried out in a finite field, GF(2^{m}), of 2^{m} elements. As illustrated, m is 8 and the finite field, GF(2⁸), has 256 elements.
 Let G(x) denote a primitive polynomial of degree 8 with binary coefficients.
G(x) = g₀ ⊕ g₁x ⊕ g₂x² ⊕ ... ⊕ g₇x⁷ ⊕ x⁸

 The matrix T^{i} denotes T multiplied by itself i times and all numbers reduced modulo2. The matrices T, T² , T³ , ..., T²⁵⁵ are all distinct, and T²⁵⁵ is the identity matrix, which can also be written as T^{o}. These 255 matrices represent (2⁸1) nonzero elements of GF(2⁸ ). Let a denote the primitive element of GF(2⁸). Then T^{i} represents the nonzero element a^{i} for all i. The zero element is represented by the 8x8 allzero matrix. The sum and product operations in GF(2⁸) are, then, defined by the modulo2 matrixsum and matrixproduct operations, using these matrix representations of the field elements.
 The elements of GF(2⁸) can also be represented by the 8digit binary vectors. The square matrices in the above representation are very redundant. In fact, each matrix can be uniquely identified by just one of its columns (in a specific position), which can very well be used for representation of the corresponding field element without ambiguity. In particular, the first column of each 8x8 matrix in the above set is the commonly used 8digit vector representation of the corresponding field element. This establishes a onetoone correspondence between the set of all nonzero 8digit vectors and the set of T^{i} matrices representing the field elements a^{i}. Thus, each nonzero 8digit vector S corresponds to a unique integer i (0 ≦ i ≦ 254) which can be regarded as its logarithm to the base a.
 Appendix A.1 is a table of logarithms which maps all field elements into powers of a. Appendix A.2 is a table of antilogarithms which maps integer powers of a into corresponding field elements. These tables were generated, using the following companion matrix T as the representation for the base element a:

 Each table requires a memory of 8x256 bits in which the word number or memory location expressed as 8bit vector is the input vector. The stored 8bit vector in that memory location represents the logarithm and the antilogarithm corresponding to the input vector in the two tables, respectively. Note that A=0 (the allzero vector) cannot be processed using the log and antilog tables. Thus, it should be treated as a special case as follows: Multiplication by zero always produces zero and division by zero should not be permitted.
 As illustrated herein, decoding of first level errors can be accomplished using a software method involving table lookup operations.
 A nonzero value for S₁, S₂ or S₃ indicates the presence of error. Assume the subblock has only one byte (byte x) in error; then the read byte B̂_{x} corresponds to the written byte B_{x} as
B̂ = B_{x} ⊕ E_{x} (1)
where E_{x} is the error pattern in the byte x.  When the subblock has only one byte (byte x) in error, the syndromes are related to E_{x} as
S₁ = T^{x}E_{x} (2)
S₂ = T^{2x}E_{x} (3)
S₃ = T^{3x}E_{x} (4)
 Equations (2), (3) and (4) are viewed as relations among field elements in GF(2⁸). In particular, the matrix multiplication of the type T^{i} B represents the product of field elements a^{i} and @, where a^{i} is represented by the first column of matrix T^{i}, and @ is represented by the column vector B.
 The product operation in GF(2⁸) has been discussed above, with reference to the log and antilog tables (Appendices A.1 and A.2 respectively) to the base a, where a is a primitive field element. With the help of these tables, the errorposition or location value x can be computed from Equations (2), (3) and (4) as follows:
x = (log_{a}S₂  log_{a}S₁) modulo255 (5)
Also x = (log_{a}S₃  log_{a}S₂) modulo255
The error pattern E_{x} can be computed from Equations (2) and (5) as:
E_{x} = log (log_{a}S₁  x) modulo255 (6)
 All terms in Equations (5) and (6) are 8digit binary sequences. In modulo255 computations, subtraction of an 8digit binary number is equivalent to addition of its complement. For this, it is convenient to use an 8digit binary adder with endaround carry, in which the 8digit allones sequence (value 255) represents the number zero, and a highorder carry (value 256) is equivalent to the number one.
 Each computation of x requires two references to the log table (Appendix A.1) and one modulo255 subtract operation. Similarly, the computation of E_{x} requires one reference to the antilog table (Appendix A.2). The byte B_{x} is then corrected as B̂_{x} + E_{x}.
 Note that, if S₁ = S₂ = 0 and S₃ ≠ 0, the error is in check byte C₂. In Equation (5), x is computed two ways, the result of which must be the same or else there is more than one byte in error. Also, if S₁ ≠ S₂ and S₁ or S₂ is zero, there is more than one byte in error. The subblock in that case has errors but remains uncorrected through the first level processing. Such subblock is identified by the subblock number f and the corresponding syndromes S₁, S₂, S₃ are stored in local memory and passed on for later second level processing.
 Assume only one subblock contains two bytes in error denoted by y and z with error patterns E_{y} and E_{z}, respectively. The syndromes S₀, S₁, S₂ and S₃ are related to E_{y} and E_{z} as follows:
S₀ = E_{y} ⊕ E_{z} (7)
S₁ = T^{y}E_{y} ⊕ T^{z}E_{z} (8)
S₂ = T^{2y}E_{y} ⊕ T^{2z}E_{z} (9)
S₃ = T^{3y}E_{y} ⊕ T^{3z}E_{z} (10)
 The first level processing for the corresponding subblock will have detected these errors as a multiple error. With S₁, S₂ and S₃ available at the subblocklevel, the subblocklevel processing of syndromes will not miscorrect these errors as a onesymbol error E_{x} in position x.
 Appendix B explains the theory behind the decoding algorithm used to decode the combined set of subblock and blocklevel syndromes for twosymbol errors. Firstly, vectors P, Q and R are obtained. As illustrated, they are 8digit constants which are functions of the syndromes S₀, S₁, S₂, and S₃, as given by:
P = (S₂ x S₂) ⊕ (S₃ x S₁) (11)
Q = (S₂ x S₁) ⊕ (S₃ x S₀) (12)
R = (S₀ x S₂) ⊕ (S₁ x S₁) (13)
where x denotes the product operation of the field elements in GF(2⁸), and the field elements are represented by binary 8digit vectors. The product operation can be realised using hardwired logic or through the use of log and antilog tables in GF(2⁸).  Note that P, Q, and R are necessarily nonzero when two bytes of the subblocks are in error and both are data bytes. In contrast, when the two bytes in error include a check byte C₁ or C₂, this is indicated by P = 0 and R = 0, respectively.
 Assume now that there are exactly two erroneous bytes in one of the subblocks. The errorlocation values y and z are two unique solutions of i in the equation:
T^{2i}P ⊕ T^{i}Q = R (14)
where P, Q, and R are functions of the syndromes S₀, S₁, S₂, and S₃, as given by Equations (11) to (13).  For each of the two solution values of i, the error pattern is given by:
E_{i} = R/(T^{2i}S₀ ⊕ S₂) (15)
The proof of this appears in Appendix B.  Decoding of the combined set of subblock and blocklevel syndromes for twosymbol errors can be accomplished using a software method involving table lookup operations. Vectors P, Q and R are computed from syndromes S₀, S₁, S₂ and S₃, using the log and antilog tables of Appendices A.1 and A.2, respectively. This requires, at the most, eighteen references to the tables in memory, six binaryadd (modulo255) operations, and three vectoradd (modulo2) operations.
 The errorlocation values y and z can be obtained through a simple table lookup procedure. The table and the theory behind this procedure appear in Appendix C. The errorlocation values y and z are obtained through the following fourstep procedure.
 Obtain two binary numbers u and v from vectors P, Q, and R, using log and antilog tables Appendices A.1 and A.2, respectively, where
u = (log_{a}P  log_{a}Q) modulo255 (16)
v = (log_{a}R  log_{a}Q) modulo255 (17)
 Calculate the value d from the sum of the two binary numbers as a step toward determining the locations of the two errors, as follows:
d = (u + v) modulo255 (18)
 Obtain the value t, having a specific mathematical relation to value d, from the table of Appendix C.1.
 Obtain errorlocation values y and z by calculating the offset of the binary numbers from the value t, as follows:
y = (u  t) modulo255 (19)
z = (t  v) modulo255 (20)
 All terms in Equations (16) to (20) of the above procedure are 8digit binary sequences undergoing modulo255 add or subtract operations. The procedure requires four table lookup operations, four modulo255 subtract operations, and one modulo255 add operation. In this procedure, an invalid value of d (the one with no entry in Appendix C.1) or an invalid error location value for y or z (greater than m+1) indicates an uncorrectable error involving three or more bytes in error.
 The error pattern E_{y} can be computed using the log and antilog tables (Appendices A.1 and A.2, respectively) in accordance with Equation (15), in which matrix multiplication T^{2y}S₀ is replaced by the corresponding field element given by the product a^{2y} x S₀ of two field elements.
 The error pattern E_{z} can be computed similarly, using Equation (15) or alternatively from Equation (9) , which gives:
E_{z} = S₀ ⊕ E_{y} (21)
 The subblock error correction is then accomplished by correcting bytes B_{y} and B_{z} with error patterns E_{y} and E_{z}.
 While the embodiment, as illustrated, assumed a twolevel code structure in which a onebyte error in a codeword is correctable at the first level and a twobyte error in a codeword is correctable at the block level, it should be understood that the method and apparatus may be used to correct two byte errors in any single or multilevel code structure.
 It should also be recognised that the disclosed method and apparatus will also operate to decode the syndromes for twobyte errors in a record of a predetermined number of bytes, in which each byte contains a preselected number of bits.
 Also, while the method and apparatus, as disclosed, correct errors in encoded uncorrected data in a magnetic disk storage device, they are equally applicable to data stored in a tape or optical storage device and to data buffered for transmission or at reception.
 Finally, it should be understood that, if preferred, in lieu of the software implementation herein described, decoding of first level (single) errors may be accomplished by hardware, such as that disclosed in U.S. Patent 4,525,838, issued June 25, 1985.

 This Appendix B provides the background for the decoding algorithm for twosymbol errors. This is derived from the wellknown prior art method called Chien Search in decoding the generalised BCH code, which is described in the Chien paper cited above in the "Background Art" section.
 Assume that there are exactly two erroneous bytes in one of the subblocks. The following proof will establish that errorlocation values y and z are two unique solutions of i in the equation:
T^{2i}P ⊕ T^{i}Q = R (B1)
where P, Q and R are functions of syndromes S₀, S₁, S₂ and S₃, as given by Equations (11)(13). The error patterns E_{i} for i=y or i=z each satisfies the following equation:
R = (T^{2i}S₀ ⊕ S₂) ⊗ E_{i} (B2)
Proof:The syndromes are expressed as functions of the two errors in Equations (7)(10). These equations are rewritten here as:
S₀ = E_{y} ⊕ E_{z} (B3)
S₁ = T^{y}E_{y} ⊕ T^{z}E_{z} (B4)
S₂ = T^{2y}E_{y} ⊕ T^{2z}E_{z} (B5)
S₃ = T^{3y}E_{y} ⊕ T^{3z}E_{z} (B6)
Combining appropriate equations from (B3) through (B6), we have:
T^{y}S₀ ⊕ S₁ = (T^{y} ⊕ T^{z})E_{z} (B7)
T^{y}S₁ ⊕ S₂ = T^{z}(T^{y} ⊕ T^{z})E_{z} (B8)
T^{y}S₂ ⊕ S₃ = T^{2z}(T^{y} ⊕ T^{z})E_{z} (B9)
Matrix Equations (B7), (B8), and (B9) are relations among field elements in GF(2⁸) represented by matrices. In particular, the matrix multiplication of the type T^{i} B represents the product of field element a^{i} and @, where a^{i} is represented by the first column of matrix T^{i}, and @ is represented by the column vector B. In view of this interpretation, Equations (B7), (B8), and (B9) yield the following relationship:
(T^{y}S₀ ⊕ S₁) ⊗ (T^{y}S₂ ⊕ S₃) = (T^{y}S₁ ⊕ S₂)² (B10)
where ⊗ denotes the product of corresponding elements in GF(2⁸). The Equation (B10) can be rearranged into the following matrix equation:
T^{2y}R ⊕ T^{y}Q ⊕ P = 0 (B11)
In these equations, P, Q and R are column vectors given by:
P = (S₂ ⊗ S₂) ⊕ (S₃ ⊗ S₁) (B12)
Q = (S₂ ⊗ S₁) ⊕ (S₃ ⊗ S₀) (B13)
R = (S₀ ⊗ S₂) ⊕ (S₁ ⊗ S₁) (B14)
Thus y is one of the solutions for i in the equation
T^{2i}P ⊕ T^{i}Q = R (B15)
 By exchanging the variables y and z in the above process, it can be shown that z is the second solution for i in Equation (B15).
 Equation (B2) for each error pattern can be verified by direct substitution of values for R, S₀, S₁ and S₂. Both sides of Equation (B2) reduce to the expression:
(T^{2y} ⊕ T^{2z}) (E_{y} ⊗ E_{z}) (B16)
thereby completing the proof.  In Appendix B, it was shown that the error locations y and z for two errors in a subblock can be determined by solving for i in Equation (B1). That equation is rewritten here as:
T^{2i}P ⊕ T^{i}Q = R (C1)
 The constants P, Q and R are functions of syndromes S₀, S₁, S₂ and S₃, given by Equations (B12)(B14), respectively. We can obtain logarithms of P, Q and R from the logantilog tables of Appendices A.1 and A.2.
p = log_{a}P (C2)
q = log_{a}Q (C3)
r = log_{a}R (C4)
Then the matrix Equation (C1) can be rewritten as a relation among field elements in GF(2⁸) as follows:
a^{2i.} a^{p} ⊕ a^{i.} a^{q} = a^{r} (C5)
Multiplying both sides of Equation (C5) by a^{p2q}, we obtain:
a^{(2i+2p2q)} ⊕ a^{(i+pq)} = a^{(r+p2q)} (C6)
Substituting t for (i+pq) in Equation (C6), gives
a^{2t} ⊕ a^{t} = a^{(r+p2q)} (C7)
and i = (u)t, where u = pq (C8)
The righthand side of Equation (C7) is a known field element a^{d}, in which the exponent d is:
d = u + v, where u = pq, and v = rq (C9)
 A table lookup solution is then provided for Equation (C7) which can be rewritten as:
a^{t} (a^{t} ⊕ a⁰) = a^{d} (C10)
 Using this expression, each value of t (from 0 to 254) can be related to a value of d. Note that some values of d are absent in this relationship, and that each valid value of d corresponds to two values of t. For a given value of d, if t = t₁ is one of the solutions of Equation (C10), then it is apparent that t = t₂ is also a solution where:
d = t₁ + t₂ (C13)
 From equations (C8), (C9) and (C13), the following two error location values i₁ and i₂ are obtained:
i₁ = ut₁ (C14)
i₂ = ut₂ = t₁v (C15)
 Appendix C.1 relates each valid value of d to one of the two values of t. Values of d are listed in ascending order for easy reference as addresses of an 8x256bit memory. The corresponding value of t is stored in memory as an 8bit binary number. The allzeros vector (invalid value shown by dashes in the table) is stored at addresses corresponding to the invalid values of d, and is so interpreted.
 In case of two errors, the computed value of d fetches one of the two values for t from Appendix C.1. With this one value of t, Equations (C14) and (C15) provide the two values of i as the error locations y and z. An invalid value of d fetches t = 0 from Appendix C.1, which is interpreted as an uncorrectable error involving three or more bytes of the codeword.
Claims (12)
responsive to two errors in any one record, decoding the syndromes by computing vectors (P, Q, R) which are functions of the four syndromes;
calculating two binary numbers (u, v) from the vectors by table lookup;
calculating one value (d) from the sum of the binary numbers for the purpose of determining the locations of the two errors;
determining another value (t), having a specific mathematical relation to the one value, by table lookup; and
calculating values (y, z) identifying the locations of the errors by calculating the offset of the binary numbers from the other value.
the binary numbers u and v are calculated from the vectors by table lookup, as
u = (log_{a}P  log_{a}Q) modulo(2^{b}1)
v = (log_{a}R  log_{a}Q) modulo(2^{b}1); and
the binary number d is the binary number
d = (u + v) modulo(2^{b}1).
determining a value t, having a specific mathematical relation to value d, from a lookup table wherein the value of d for each of (2^{b}1) values of t is predetermined by computing the value of d using an expression which will provide for each valid value of d two values of t; and
in the case of two errors, fetching from the computed value of d one of the two values of t for the purpose of determining the locations of the errors.
the value t, corresponding to value d, is obtained from a lookup table of t vs. d in a^{d} = a^{t} (a^{t} + a^{o}); and
error location values y and z, are determined as
y = (ut) modulo(2^{b}1); and
z = (tv) modulo(2^{b}1).
error patterns E_{y} and E_{z} are calculated using the log and antilog tables, as
E_{y} = R/(T^{2y}S₀ + S₂); and
E_{z} = S₀ + E_{y}
means responsive to two errors in any one record for decoding the syndromes by computing vectors which are functions of the four syndromes;
means, including log and antilog lookup tables, for calculating two binary numbers from the vectors; and
means, including the binary numbers for calculating one value from the sum of the binary numbers for the purpose of determining the locations of the errors;
means for determining another value, having a specific mathematical relation to the one value; and
means for calculating values identifying the locations of the errors by calculating the offset of the binary numbers from the other value.
Priority Applications (2)
Application Number  Priority Date  Filing Date  Title 

US07119011 US4849975A (en)  19871110  19871110  Error correction method and apparatus 
US119011  19871110 
Publications (3)
Publication Number  Publication Date 

EP0316063A2 true true EP0316063A2 (en)  19890517 
EP0316063A3 true EP0316063A3 (en)  19920325 
EP0316063B1 EP0316063B1 (en)  19941214 
Family
ID=22382104
Family Applications (1)
Application Number  Title  Priority Date  Filing Date 

EP19880308881 Expired  Lifetime EP0316063B1 (en)  19871110  19880923  Error correction using lookup tables 
Country Status (4)
Country  Link 

US (1)  US4849975A (en) 
EP (1)  EP0316063B1 (en) 
JP (1)  JPH0444447B2 (en) 
DE (2)  DE3852474D1 (en) 
Cited By (3)
Publication number  Priority date  Publication date  Assignee  Title 

WO1991016709A1 (en) *  19900416  19911031  Optical Radiation Corporation  Digital audio recording format for motion picture film 
EP0563491A1 (en) *  19920331  19931006  International Business Machines Corporation  Method and apparatus for implementing a triple error detection and double error correction code 
US8155075B2 (en)  20040908  20120410  Nec Corporation  Wireless communication system, mobile station and handover control method 
Families Citing this family (34)
Publication number  Priority date  Publication date  Assignee  Title 

US4890287A (en) *  19880309  19891226  Magnetic Peripherals Inc.  Onthefly error correction 
US5068855A (en) *  19880718  19911126  Canon Kabushiki Kaisha  Error correcting method and apparatus 
US4951284A (en) *  19881214  19900821  International Business Machines Corporation  Method and means for correcting random and burst errors 
US5179560A (en) *  19890515  19930112  Mitsubishi Denki Kabushiki Kaisha  Apparatus for decoding bch code for correcting complex error 
US5598422A (en) *  19900430  19970128  Dell Usa, L.P.  Digital computer having an error correction code (ECC) system with comparator integrated into reencoder 
US5280488A (en) *  19901108  19940118  Neal Glover  ReedSolomon code system employing kbit serial techniques for encoding and burst error trapping 
JPH05158722A (en) *  19911210  19930625  Hitachi Ltd  Error detection/correction system 
JP2721099B2 (en) *  19911218  19980304  インターナショナル・ビジネス・マシーンズ・コーポレイション  Modify method of trial and error method and multibyte error for error burst correction 
US5761220A (en) *  19940919  19980602  Cirrus Logic, Inc.  Minimum latency asynchronous data path controller in a digital recording system 
JP3248098B2 (en) *  19970526  20020121  日本プレシジョン・サーキッツ株式会社  Syndrome computing device 
US5946328A (en) *  19971117  19990831  International Business Machines Corporation  Method and means for efficient error detection and correction in long byte strings using integrated interleaved ReedSolomon codewords 
US6275965B1 (en) *  19971117  20010814  International Business Machines Corporation  Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reedsolomon codewords 
US6061824A (en) *  19980305  20000509  Quantum Corporation  Pipelined error correction for minimizing disk rereading in hard drives 
JP2000242440A (en) *  19990225  20000908  Alps Electric Co Ltd  Disk device 
US6662334B1 (en) *  19990225  20031209  Adaptec, Inc.  Method and device for performing error correction on ECC data sectors 
US6378105B1 (en) *  19990524  20020423  Oak Technology, Inc.  ReedSolomon multiplication method 
US6532566B1 (en)  19990524  20030311  Oak Technology, Inc.  Modified ReedSolomon multiplication 
US6915475B1 (en) *  19990629  20050705  Emc Corporation  Data integrity management for data storage systems 
JP3735498B2 (en) *  19991109  20060118  株式会社東芝  Information recording medium, information recording apparatus, information recording method 
JP3975245B2 (en)  19991216  20070912  株式会社ルネサステクノロジ  Recording and reproducing apparatus and semiconductor memory 
US6732320B1 (en)  20000428  20040504  Promos Technologies Inc.  Method and system for improved error correction in optical media data processing 
US7624330B2 (en) *  20051212  20091124  Lsi Corporation  Unified memory architecture for recording applications 
JP4846384B2 (en) *  20060220  20111228  株式会社東芝  A semiconductor memory device 
JP2007305267A (en) *  20060515  20071122  Toshiba Corp  Semiconductor storage device 
US7890841B2 (en) *  20061114  20110215  Samsung Electronics Co., Ltd.  Postviterbi error correction method and apparatus 
US8127209B1 (en) *  20070730  20120228  Marvell International Ltd.  QCLDPC decoder with listsyndrome decoding 
US8799742B1 (en)  20070730  20140805  Marvell International Ltd.  QCLDPC decoder with listsyndrome decoding 
KR101466695B1 (en) *  20080430  20141201  삼성전자주식회사  Encoding and decoding of multibit level data method 
US8365036B2 (en) *  20090916  20130129  Freescale Semiconductor, Inc.  Soft error correction in a memory array and method thereof 
US20130117632A1 (en) *  20111108  20130509  Sony Corporation  Storage control apparatus 
KR20150058315A (en) *  20121019  20150528  후지쯔 가부시끼가이샤  Record/play device, error correction method, and control device 
US9444580B2 (en)  20130806  20160913  OptCTS, Inc.  Optimized data transfer utilizing optimized code table signaling 
US9455799B2 (en)  20130806  20160927  OptCTS, Inc.  Dynamic control of quality of service (QOS) using derived QOS measures 
US10056919B2 (en)  20140702  20180821  Agilepq, Inc.  Data recovery utilizing optimized code table signaling 
Citations (5)
Publication number  Priority date  Publication date  Assignee  Title 

EP0117287A2 (en) *  19830228  19840905  International Business Machines Corporation  Method for correcting errors in digital data and system employing such method 
EP0164027A2 (en) *  19840530  19851211  Canadian Patents and Development Limited Société Canadienne des Brevets et d'Exploitation Limitée  Method and apparatus for coding digital data to permit correction of one or two incorrect data packets (bytes) 
US4637021A (en) *  19830928  19870113  Pioneer Electronic Corporation  Multiple pass error correction 
EP0218413A2 (en) *  19850927  19870415  International Business Machines Corporation  System and method for correcting errors in coded data recorded in blocks and subblocks 
EP0233075A2 (en) *  19860210  19870819  International Business Machines Corporation  Method and apparatus for generating error detection check bytes for a data record 
Family Cites Families (4)
Publication number  Priority date  Publication date  Assignee  Title 

JPH0351140B2 (en) *  19810814  19910805  Sony Corp  
US4464753A (en) *  19811230  19840807  International Business Machines Corporation  Two bit symbol SEC/DED code 
JPH0744463B2 (en) *  19831216  19950515  ソニー株式会社  Error  correction circuit 
US4769818A (en) *  19840530  19880906  Canadian Patents And Development LimitedSociete Canadienne Des Brevets Et D'exploitation Limitee  Method and apparatus for coding digital data to permit correction of one or two incorrect data packets (bytes) 
Patent Citations (5)
Publication number  Priority date  Publication date  Assignee  Title 

EP0117287A2 (en) *  19830228  19840905  International Business Machines Corporation  Method for correcting errors in digital data and system employing such method 
US4637021A (en) *  19830928  19870113  Pioneer Electronic Corporation  Multiple pass error correction 
EP0164027A2 (en) *  19840530  19851211  Canadian Patents and Development Limited Société Canadienne des Brevets et d'Exploitation Limitée  Method and apparatus for coding digital data to permit correction of one or two incorrect data packets (bytes) 
EP0218413A2 (en) *  19850927  19870415  International Business Machines Corporation  System and method for correcting errors in coded data recorded in blocks and subblocks 
EP0233075A2 (en) *  19860210  19870819  International Business Machines Corporation  Method and apparatus for generating error detection check bytes for a data record 
Cited By (5)
Publication number  Priority date  Publication date  Assignee  Title 

WO1991016709A1 (en) *  19900416  19911031  Optical Radiation Corporation  Digital audio recording format for motion picture film 
US5194996A (en) *  19900416  19930316  Optical Radiation Corporation  Digital audio recording format for motion picture film 
EP0563491A1 (en) *  19920331  19931006  International Business Machines Corporation  Method and apparatus for implementing a triple error detection and double error correction code 
US5459740A (en) *  19920331  19951017  International Business Machines Corporation  Method and apparatus for implementing a triple error detection and double error correction code 
US8155075B2 (en)  20040908  20120410  Nec Corporation  Wireless communication system, mobile station and handover control method 
Also Published As
Publication number  Publication date  Type 

EP0316063B1 (en)  19941214  grant 
US4849975A (en)  19890718  grant 
EP0316063A3 (en)  19920325  application 
JPH01155721A (en)  19890619  application 
DE3852474T2 (en)  19950720  grant 
DE3852474D1 (en)  19950126  grant 
JPH0444447B2 (en)  19920721  grant 
Similar Documents
Publication  Publication Date  Title 

US5107503A (en)  High bandwidth reedsolomon encoding, decoding and error correcting circuit  
US5946328A (en)  Method and means for efficient error detection and correction in long byte strings using integrated interleaved ReedSolomon codewords  
US6219815B1 (en)  Highspeed syndrome calculation  
US4597083A (en)  Error detection and correction in digital communication systems  
US5428630A (en)  System and method for verifying the integrity of data written to a memory  
US5724368A (en)  Cyclical redundancy check method and apparatus  
US6048090A (en)  Error correction and concurrent verification of a product code  
US3818442A (en)  Errorcorrecting decoder for group codes  
US5440570A (en)  Realtime binary BCH decoder  
US4821268A (en)  Soft decision ReedSolomon decoder  
Ramabadran et al.  A tutorial on CRC computations  
US6347389B1 (en)  Pipelined high speed reedsolomon error/erasure decoder  
US5224106A (en)  Multilevel error correction system  
US4486882A (en)  System for transmitting binary data via a plurality of channels by means of a convolutional code  
US4589112A (en)  System for multiple error detection with single and double bit error correction  
US4833679A (en)  Method and apparatus with improved error correction and error information availability  
US6148430A (en)  Encoding apparatus for RAID6 system and tape drives  
US5027357A (en)  ECC/CRC error detection and correction system  
US5343481A (en)  BCH errorlocation polynomial decoder  
US4413339A (en)  Multiple error detecting and correcting system employing ReedSolomon codes  
US5157669A (en)  Comparison of an estimated CRC syndrome to a generated CRC syndrome in an ECC/CRC system to detect uncorrectable errors  
US6119262A (en)  Method and apparatus for solving key equation polynomials in decoding error correction codes  
US5414719A (en)  Operating circuit for galois field  
US5383204A (en)  Parallel encoding apparatus and method implementing cyclic redundancy check and ReedSolomon codes  
US4839896A (en)  Fast remainder decoding for a ReedSolomon code 
Legal Events
Date  Code  Title  Description 

AK  Designated contracting states: 
Kind code of ref document: A2 Designated state(s): DE FR GB 

17P  Request for examination filed 
Effective date: 19890906 

AK  Designated contracting states: 
Kind code of ref document: A3 Designated state(s): DE FR GB 

17Q  First examination report 
Effective date: 19940316 

AK  Designated contracting states: 
Kind code of ref document: B1 Designated state(s): DE FR GB 

REF  Corresponds to: 
Ref document number: 3852474 Country of ref document: DE Date of ref document: 19950126 Format of ref document f/p: P 

ET  Fr: translation filed  
PGFP  Postgrant: annual fees paid to national office 
Ref country code: GB Payment date: 19950822 Year of fee payment: 08 

PGFP  Postgrant: annual fees paid to national office 
Ref country code: FR Payment date: 19950911 Year of fee payment: 08 

PGFP  Postgrant: annual fees paid to national office 
Ref country code: DE Payment date: 19950921 Year of fee payment: 08 

26N  No opposition filed  
PG25  Lapsed in a contracting state announced via postgrant inform. from nat. office to epo 
Ref country code: GB Effective date: 19960923 

PG25  Lapsed in a contracting state announced via postgrant inform. from nat. office to epo 
Ref country code: FR Effective date: 19960930 

GBPC  Gb: european patent ceased through nonpayment of renewal fee 
Effective date: 19960923 

PG25  Lapsed in a contracting state announced via postgrant inform. from nat. office to epo 
Ref country code: DE Effective date: 19970603 

REG  Reference to a national code 
Ref country code: FR Ref legal event code: ST 

REG  Reference to a national code 
Ref country code: FR Ref legal event code: ST 