Claims
- 1. In a computer system comprising a central processing unit and a storage medium, a method for detecting and locating up to two symbols in error or erasures in an n.times.mA (n,m,4) parity coded bit array where n is a prime number, m.ltoreq.n comprising the steps of:
- (a) rotating, using said computer system, m column vectors in said n.times.m A(n,m,4) parity coded bit array by predetermined amounts;
- (b) forming, using said computer system, m modulo 2 summed syndromes from said rotated m column vectors, and in a presence of any error, deriving at least one non-zero syndrome;
- (c) computing, using said computer system, first, second, and third test vectors, each test vector being a modulo 2 sum of a unique selected syndrome and a unique selected rotated syndrome; and
- (d) initializing, using said computer system, a tracking variable L and incrementing L for each repetition of step (d) and:
- (1) either providing signal indication of exactly one error at a column location defined by L in a presence of first and second null test vectors,
- (2) providing signal indication of exactly two errors and said two errors' column locations in a presence of the second test vector, said second test vector being equivalent of the first test vector rotated by L positions and the third test vector being equivalent of the second test vector rotated by K positions, L<K,
- (3) repeating steps (d) in an absence of cyclic equivalence among the test vectors, or
- (4) providing signal indication of more than two errors either in a presence of at least two zero test vectors or when L=m.
- 2. In a computer system comprising a central processing unit and a storage medium, a method for locating up to two symbols in error or two columns in error in a n.times.m parity coded bit data array, m.ltoreq.n, n being prime, the method comprising the steps of:
- (a) forming, using said computer system, a plurality of syndromes from predetermined cyclic rotations and modulo 2 addition across the data array columns for each syndrome;
- (b) in an event of at least one non-zero syndrome, initializing, using said computer system, at least one tracking variable L and iteratively:
- (1) incrementing, using said computer system, said tracking variable L by a predetermined amount,
- (2) forming, using said computer system, first, second, and third test vectors each as a modulo 2 sum of a different selected syndrome and a selected rotated syndrome; and
- (3) either:
- providing signal indication of exactly one error at column location L.ltoreq.(m-1) when the first and second test vectors are zero,
- providing signal indication of exactly two errors at column locations L and L.ltoreq.K.ltoreq.(m-1) where the second and third test vectors are respective Kth rotations of the first and second test vectors,
- repeating step (b) where (when) the first and second test vectors are not L-th rotations of each other or when the second and third test vectors are not the K-th rotations of each other, or
- providing signal indication of more than two errors if the incremented value L=m.
- 3. The method according to claim 2, wherein said method further comprises the step of:
- (c) responsive to an indication of exactly one or two errors, encoding, using said computer system, said n.times.m parity coded bit data array by
- (1) traversing m parity lines projected onto said n.times.m parity coded bit data array for each one of a set of slopes consisting of slope magnitudes 0, 1, 2, and 3, and extending cyclically over said n.times.m parity coded bit data array; and
- (2) inserting Boolean values into the n.times.m parity coded bit data array during each traverse such that logically combined (XORed) values of the data encountered over each of the traverses sum to zero modulo 2 (even parity), said n.times.m parity coded bit data array being fully encoded in multiple parity line traverses.
- 4. The method according to claim 2, wherein step (a) includes forming, using said computer system, four syndromes and further wherein each i-th column of each syndrome j.ltoreq.m being rotated (i-1)*j bit positions relative to a first array column in a predetermined wrap-around direction, each syndrome j.ltoreq.m being the modulo 2 bitwise sum across the rotated array columns.
- 5. A computer system having at least one multi-tracked storage device, means for recording an n.times.m coded bit array across counterpart tracks of said storage device, buffer means, and insane for copying selected ones of said recorded n.times.m coded bit arrays from said device into said buffer means where m.ltoreq.n, n being prime, said computer system further comprises:
- means for determining each of j.ltoreq.m syndromes s.sub.j from the n.times.m coded bit array in said buffer means in which ##EQU10## where .rho..sub.j*i is a column vector rotational operator, a.sub.i ' are columns of said n.times.m coded bit array; and
- means responsive to at least one non-zero syndrome s.sub.j for initializing at least one tracking variable L and iteratively:
- (1) incrementing said tracking variable L by a predetermined amount,
- (2) forming first y.sub.i ', second y.sub.2 ', and third y.sub.3 ' test vectors from the syndromes s.sub.j such that:
- y.sub.1 '=s.sub.1 '+.rho..sub.L (s.sub.0 '), y.sub.2 '=s.sub.2 '+.rho..sub.L (s.sub.1 '),
- y.sub.3 '=s.sub.3 '+.rho..sub.L (s.sub.2 '), and
- (3) either providing signal indication of exactly one error at column location L.ltoreq.(m-1) when the y.sub.1 '=y.sub.2 '=0, providing signal indication of exactly two errors at column locations L and L.ltoreq.K.ltoreq.(m-1) when y.sub.2 '=.rho..sub.k (y.sub.1 ') and y.sub.3 '=.rho..sub.k (y.sub.2 '), repeating iteratively (1) through (3) when y.sub.2 '.noteq..rho..sub.k (y.sub.1 '), or providing signal indication of more than two errors if the incremented value L=m.
- 6. In a computer system comprising a central processing unit and a storage medium, a method for detecting and correcting errors and erasures in an n.times.m A(n,m,4) parity coded data array, comprising the steps of:
- (a) deriving, using said computer system, a plurality of syndromes from the parity coded data array, at least one non-zero syndrome being indicative of either error or erasure;
- (b) forming, using said computer system, first, second, and third test vectors from the syndromes, each test vector being a sum of a unique syndrome and a unique selected rotated syndrome;
- (c) initializing, using said computer system, a tracking variable L and incrementing L for each repetition of step (c) and:
- (1) providing signal indicating of exactly a single error at column location L where all the test vectors are null;
- (2) providing signal indication of exactly two errors when said two errors' column locations in the presence of the second test vector being equivalent of the first test vector rotated by L positions and the third test vector being equivalent of the second test vector rotated by K positions, L<K,
- (3) repeating step (c) in an absence of cyclic equivalence among the test vectors, or
- (4) providing signal indication of more than two errors either in a presence of at least two zero test vectors or when L=m; and
- (d) correcting, using said computer system, any array bits in error by parity encoding said array according to the A(n,m,4) code and the provided signal indications.
- 7. In a computer system comprising a central processing unit and a storage medium, a method for detecting and locating up to three symbols or three columns in error in an n.times.m A(n,m,6) parity encoded data bit array, n being a prime number and m.ltoreq.n, comprising the steps of:
- (a) deriving, using said computer system, six syndromes from the n.times.m A(n,m,6) parity encoded data bit array, a presence of at least one non-zero syndrome being indicative of either error or erasure;
- (b) forming, using said computer system, first through fifth test vectors from the syndromes, each first through fifth test vector being a sum of a unique syndrome and a unique rotated syndrome, and forming a sixth through ninth test vectors, each sixth through ninth test vectors being the sum of a unique one of the first through fifth test vectors and a unique rotated one of the first through fifth test vectors;
- (c) initializing, using said computer system, a first L and a second tracking variable J and incrementing L and J for each repetition of step (c) and:
- (1) providing signal indicating of exactly a single error at a column location L where the first through fifth test vectors are null;
- (2) providing signal indication of exactly two errors and said two errors' column locations L and J where the sixth and seventh test vectors are null;
- (3) providing signal indicating of exactly three errors in the presence of the eighth test vector being equivalent of the seventh test vector rotated by K positions and the ninth test vector being equivalent of the eighth test vector rotated by K positions, L<J<K;
- (4) repeating step (c) in an absence of cyclic equivalence among the sixth through ninth test vectors, or
- (5) providing signal indication of more than three errors either when at least three of the sixth through ninth test vectors are null or when L=m.
- 8. The method according to claim 7, wherein the method further includes the step of:
- (d) correcting, using said computer system, any array bits in error by parity encoding said parity encoded data bit array according to the A(n,m,6) code and the provided signal indications.
- 9. In a computer system having at least one multi-tracked storage device, means for encoding and recording m.times.n data bit arrays on counterpart tracks of said storage device, said m.times.n data bit arrays being parity encoded with a A(n,m,4) code, m.ltoreq.n, n being a prime number, means for accessing, means for copying into a buffer means, and means for decoding an array recorded on said multi-tracked storage device, said decoding means comprising:
- means for deriving a plurality of syndromes from the array, at least one non-zero syndrome being indicative of either error or erasure;
- means for forming first, second, and third test vectors from the plurality of syndromes, each test vector being a sum of a unique syndrome and a unique selected rotated syndrome;
- means for iteratively evaluating the either error or erasure condition of the array by initializing a tracking variable L and incrementing L for each iteration and further including means for either causing another iteration in an absence of cyclic equivalence among the test vectors or providing mutually exclusive signal indication of:
- (1) exactly a single error at a column location L where all the test vectors are null,
- (2) two errors and said two errors' column locations in a presence of the second test vector being equivalent of the first test vector rotated by L positions and the third test vector being equivalent of the second test vector rotated by K positions, L<K,
- (3) providing signal indication of more than two errors either in a presence of at least two zero test vectors or where L=m; and
- means for correcting any array bits in error by parity encoding said array according to the A(n,m,4) code and the provided signal indications.
RELATED U.S. APPLICATIONS
This application is a continuation in part of the Blaum et. al., U.S. Ser. No.:08/177,633, filed Jan 3, 1994 and now U.S. Pat. No. 5,351,246.
US Referenced Citations (4)
Non-Patent Literature Citations (1)
Entry |
"Shift Register synthesis and BCH Decoding", IEEE Transactions on Information Theory, vol. IT-15, pp. 123-127, copyright 1969. |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
177633 |
Jan 1994 |
|