Abstract:
A system for performing a Chien search simultaneously tests multiple elements of GF(2P) as possible roots of a degree-t error locator polynomial &sgr;(x) using a plurality of simplified multipliers that each simultaneously produce the corresponding terms of &sgr;(x). In one embodiment of the system, t−1 simplified multipliers over GF(2P) are used to simultaneously test as possible roots &agr;2, (&agr;2)2, (&agr;2)3 . . . (&agr;2)j. Each multiplier includes a plurality of adders that are set up in accordance with precomputed terms that are based on combinations of the weight-one elements of GF(2P). A summing circuit adds together the associated terms produced by the multipliers and produces j sums, which are then evaluated to test the j individual elements as possible roots. The coefficients of &sgr;(&agr;2)j are then fed back to the multipliers, and the multipliers test, during a next clock cycle, the elements &agr;2*(&agr;2)j, (&agr;2)2*(&agr;2)j . . . , (&agr;2)2j and so forth. Similar multipliers also test the odd powers of &agr; as roots of &sgr;′(x)=&sgr;(&agr;x). If P=mn the system may be implemented using a plurality of GF(2m) multipliers. The field GF(2m) is a subfield of GF(2P), and the elements of GF(2P) can each be represented by a combination of n elements of GF(2m). The error locator polynomial &sgr;(x) can thus be represented by a combination of n expressions &sgr;0(x), &sgr;2(x) . . . &sgr;n−1(x), each with coefficients that are elements of GF(2m). Each of the n expressions has 2m−1 coefficients for the terms x0, x1, x2 . . . x2m−1. Thus, n(2m−2) constant GF(2m) multipliers are used to test each element of GF(2P) as a possible root. The number of GF(2m) multipliers in the system is independent of the degree of the error locator polynomial, and each multiplier operates over a subfield of GF(2P). Accordingly, the system can simultaneously tests j elements using j sets of n(2m−2) constant multipliers over GF(2m).
Abstract:
An n-stage pipelined combined encoder and syndrome generator system includes n stages that are essentially identical. Each of the stages includes two associated delay circuits, namely, a first delay circuit in a chain of feedback adders that operate as a feedback path during encoding, and a second delay circuit in a data input line. During encoding operations, the delay circuits in the feedback adder chain segment the chain of j feedback adders into n stages of j/n adders, and the delay circuits in the data input line delay the data symbols by the latencies associated with the respective stages. The delay circuits thus simultaneously provide to the various stages the corresponding data symbols and propagating sums. After the last data symbol is encoded, the ECC symbols are available after a time lag associated with the j/n adders in the last stage. During syndrome generation operations, the feedback adders are essentially decoupled from one another by AND gates that are included in the feedback path and switches in the data input line bypass the delay circuits, to avoid introducing latency into the syndrome generation operations.
Abstract:
A Reed-Solomon error-correction coding (ECC) scheme selectively supports two different-length codes to optimize the trade-off between error performance and the amount of disk space required to store protection symbols. The encoder contains two sets of alpha multipliers; part of one set is multiplexed with the other depending on which code is being used. Also, a shift register within the encoder is selectively lengthened or shortened depending on the code. The code pair is selected so that the generator polynomial of the shorter code is a complete divisor of the generator polynomial of the longer code. Thus, one code is a sub-code of the other. Accordingly, the ECC system is able to use the same syndrome calculator for each code. The error-correction decoder uses those syndromes that correspond to the roots of the generator polynomial of the code being used.
Abstract:
A method and apparatus for identifying and synchronizing to two different fields in a disk drive employs different synchronization or "sync" patterns to reduce the chances of mis-identifying and false-identifying a field. Two very distinct synchronization patterns have been found that satisfy the d=1, k=7 run-length constraints of a data code used in the disk drive. During operation, one sync pattern is searched for to identify and synchronize to its associated field, then the field itself is read. This procedure is then repeated for the other sync pattern and its associated field. Also, the phase of a preamble preceding each sync character is established, so that the number of comparisons needed to find either sync character is reduced. A sync detector operates on cell pairs, and has a selector that selects which sync pattern to search for. The sync detector also has special features that enable it to find preamble and DC Erase fields in the disk cell stream.
Abstract:
A method for determining whether particular information was used in encoding a codeword; the codeword is formed by encoding information as a first preliminary code sequence using a first code and then combining the first preliminary code sequence with a second preliminary code sequence generated using a second code; the particular information is encoded as a desired first preliminary code sequence in accordance with said first code; the desired first preliminary code sequence is then stripped from the codeword to derive a test sequence; the test sequence is decoded in accordance with the second code, and a determination is made, based on the decoding, whether the particular information was used in encoding the codeword. In another aspect, bad sector, servo correction, and sector address values are encoded for storage in a header associated with a sector of storage on a storage medium by encoding the address value with leading zero symbols in accordance with a code having a first rate, encoding the bad sector and servo correction values in a systematic code having a second rate, and combining these sequences to generate a codeword of the first code such that the bad sector and servo correction values appear explicitly in the codeword.
Abstract:
The invention is an error detection and correction system which encodes data twice, once for error detection by using a cyclic redundancy check (CRC) code with a generator polynomial, g(x) [in octal form]:g(x)=2413607036565172433223and a second time for error correction by using a Reed-Solomon error correction code. The system then uses the CRC code to check the data for errors. If errors are found the system uses the error location information supplied by the CRC code and the Reed-Solomon code to correct the errors.
Abstract:
The location of the sequence of data bits stored on a storage medium is identified by generating a predetermined synchronization bit sequence; storing on the storage medium a bit sequence corresponding to the predetermined synchronization sequence to indicate the location of the data bit sequence; deriving from the stored corresponding bit sequence on the storage medium a trial sequence; and determining whether the trial sequence corresponds to the predetermined synchronization sequence by determining the number of symbols in which the trial sequence differs from the predetermined synchronization sequence, each symbol comprising a plurality of bits, whereby the effect of clustered bit errors is reduced. The stored data bits are encoded from raw data bits in accordance with a code in which raw data symbols are encoded as data bit groups of at least two different lengths; a bit sequence corresponding to the synchronization sequence is stored on the medium as an indication of the location of the stored data bits; and the synchronization sequence comprises a sequence of raw data symbols which encode as stored encoded groups all of a single length, whereby error propagation is reduced.
Abstract:
The invention simultaneously calculates error locations and associated error values by solving the error locator polynomial equation re-written as:1=.delta..sub.even (x)+.delta..sub.odd (x)where .delta..sub.even (x) and .delta..sub.odd (x) are the even- and odd-power terms of the error locator polynomial. A first value of x, x.sub.a1, is simultaneously inserted into the expression .delta..sub.even (x) and .delta..sub.odd (x) and also into an error value polynomial .PHI.(x). Next, while the error locator equation is evaluated at the calculated values of .delta..sub.even (x.sub.a1) and .delta..sub.odd (x.sub.a1) to determine if x.sub.a1 is a solution, the now known values of the error evaluator polynomial .PHI.(x.sub.a1) and .delta..sub.odd (x.sub.a1) are substituted into an error value formula: ##EQU1## Thus as soon as an error location is found, the error value, v.sub.a1, associated with that location is also known. The error can then be quickly corrected. Next, these calculated terms are used to calculate similar expressions for a next value of x, x.sub.a2. If x.sub.a2 is a solution, the error value v.sub.a2 which was simultaneously calculated for x.sub.a2 is used to correct the error. If x.sub.a2 is not a solution, the calculated error value is ignored. The expression .delta..sub.odd (x), .delta..sub.even (x) and the polynominal .PHI.(x) are similarly evaluated for each of the remaining values of x.
Abstract:
The invention encodes magnetic disk sector addresses using a large distance, "d", Reed-Solomon code to produce code words which vary by at least "d" symbols for any two different encoded addresss. The result of the encoding is a set of redundancy symbols, which are usually associated with error correction. These symbols are appended to the address symbols to produce address code words. An address code word read from a disk can contain up to (d-1)/2 errors and still be identified as the correct sector address. To protect the encoded sector address from synchronization errors the address code words are further encoded by adding them to a coset leader to produce header code words. The header code words are then recorded in the address portions of the sectors. When a header code word is read from a sector, the coset leader is subtracted from the header code word to produce an address code word. The address code word is then compared with the address code word for the specified address. If there is a synchronization error, the comparison of the resulting address code word with the address code word for the specified address will result in a difference of more than (d-1)/2 symbols and the sector will not be treated as the specified address.
Abstract:
A system that produces one or more non-repeating randomizer sequences of up to 2m−1 or more m-bit symbols includes a randomizer circuit that is set up in accordance with a polynomial with primitive elements of GF(2m) as coefficients. The system combines the randomizer sequence with all the symbols of ECC code words that are encoded using a BCH code over GF(2m) to produce a randomized code word. The particular primitive elements used and/or an initial state of one or more registers in the system specifies the particular sequence produced by the system. The initial state of each of the one or more registers is a selected one of the 2m−1 elements of GF(2m), and thus, 2m−1 different sequences may be produced by selecting a different initial state for a given one of the registers. If the coefficients are also selected from, for example, a set of “p” possible values, the system produces p*(2m−1) different sequences. The system may thus be used to encrypt the ECC code word by associating the code word with a particular selected initial state and/or coefficient. The coefficients may be selected to produce randomizer sequences that are predetermined minimum distances away from both the ECC code words.