Abstract:
An error correction system includes an encoder that uses a modified Reed-Solomon code to encode m-bit data symbols over GF(2.sup.m+i) and form a preliminary code with d-1 (m+i)-bit ECC symbols. The encoder then modifies the ECC symbols by combining the preliminary code word with a combination of one or more modifying code words to produce modified ECC symbols that have i bits set in a pre-selected pattern. This combination also results in "R" pseudo redundancy symbols that include the i-bit pattern being appended to the modified ECC symbols. The encoder truncates the i-bit pattern from each of the ECC symbols and the pseudo-redundancy symbols, to produce a data code word that has symbols that are elements of GF(2.sup.m). To decode the data code word, the decoder fills in the i-bit pattern in each of the data code word symbols and decodes the code word, treating the first R of the modified ECC symbols as code word data, or information, symbols, and the remaining modified ECC symbols and the pseudo redundancy symbols as code word ECC symbols. The system determines for the encoder the generator polynomial, g(x), and the modifying code words by determining a g(x)=(x+.alpha..sup.L)*(x+.alpha..sup.L+1) . . . *(x+.alpha..sup.L+d-2) with L=1, 2, . . . that produces i*(d-1) modifying code words that have only one selected bit of the i-bit pattern set to a one.
Abstract:
A system for determining a cubic root of an element .alpha..sup.3k of a Galois Field GF(2.sup.2m) raises the element .alpha..sup.3k to the 2.sup.m +1 power if m is even or to the 2.sup.m -1 power if m is odd. Next the system uses a small look-up table to determine the cube root of .alpha..sup.3k(2.spsp.m.sup..+-.1). The system then multiplies this cube root .alpha..sup.k(2.spsp.m.sup..+-.1) by .alpha..sup.3k raised to the ##EQU1## power, to produce ..alpha..sup.k(2.spsp.m.sup.+1)..alpha..sup.k(2.spsp.m.sup.-1) =.alpha..sup.k(2.spsp.m+1.sup.). The system then raises the result to the ##EQU2## power, to produce the cube root .alpha..sup.k. Since not all elements of GF(2.sup.2m) have cube roots within the field, the system tests the result by multiplying it by itself twice, to determine if the product is .alpha..sup.3k.
Abstract:
An encoding system uses a modified 8/9 rate modulation code to encode 8-bit data symbols into 9-bit cells in a conventional manner in accordance with the modified code and 9-bit ECC symbols into 10-bit cells by (i) encoding 8 bits of the symbol into a 9-bit cell in accordance with the modified code, and (ii) inserting into the 9-bit cell the remaining, that is, the non-encoded, bit of the ECC symbol. The system reproduces the 8-bit data symbols by decoding the 9-bit cells in a conventional manner in accordance with the modified code, and the 9-bit ECC symbols by (i) removing from the associated 10-bit cell the bit inserted during encoding, (ii) decoding the remaining 9 bits to reproduce 8 bits of the symbol, and (iii) inserting into the 8 bits the bit that was earlier removed. In an exemplary embodiment, the 8 least significant bits of the ECC symbol are encoded using the modified 8/9 rate code. The 9 bits produced by the code are used essentially as the first "c" bits and last "10-c" bits of a 10-bit cell. The most significant bit of the ECC symbol is included in the cell as the c+1.sup.st bit. The mapping of 8 bits to 9-bit cells is such that the inclusion of this c+1.sup.st bit does not violate the code's run length limitations, either within the cell or within a modulation code word, which is a concatenation of the cells. The system can similarly encode, using a modified n/m rate code, n-bit and (n+i)-bit symbols, where (n+i)
Abstract:
Addresses corresponding to magnetic disk sectors are encoded using an error correction code (ECC), such that addresses which are in a neighborhood, that is, addresses which are mathematically or numerically close, are mapped to addresses which differ in at least D-1 bits where the ECC is a distance D code. An original n-bit sector address is separated into two segments. One segment is a "k"-bit neighborhood address segment containing the k lower order address bits identifying the location of the selected sector within a neighborhood. The second segment is an "n-k" bit higher order address segment identifying the neighborhood containing the selected sector. The k-bit neighborhood address segment is then encoded with an (n,k) distance D linear code to form an n-bit preliminary code word containing n-k redundancy (ECC) bits appended, as the most significant bits, to the k neighborhood address bits. The (n-k)-bit higher order address segment is encoded by representing the segment in Gray code. The (n-k)-bit Gray coded segment is added modulo 2 to the n-k redundancy (ECC) bits of the preliminary code word. The resulting n-bit address code word is recorded on the disk as the sector address. When a particular sector is to be accessed, the address is first encoded in the manner set forth above, and the read/write head is moved to the logical neighborhood containing the sector. The encoded address is then compared to the addresses written in the various sectors in the neighborhood. When a match within (D-2)/2 bits is found, the sector is identified as the correct sector.
Abstract:
An error correction system generates a residue for data symbols encoded in accordance with an (n,k) code which has a distance "d" and a generator polynomial g(x). If the residue contains fewer than "T" non-zero symbols, where T
Abstract:
A pipelined error correction circuit iteratively determines syndromes, error locator and evaluator equations, and error locations and associated error values for received Reed-Solomon code words. The circuit includes a plurality of Galois Field multiplying circuits which use a minimum number of circiut elements to generate first and second products. Each Galois Field multiplying circuit includes a first GF multiplier which multiplies one of two input signals in each of two time intervals by a first value to produce a first product. The circuit includes a second GF multiplier which further multiplies one of the first products by a second value to generate a second product. The first and second products are then applied to the first GF multiplier as next input signals. The multiplying circuit minimizes the elements required to generate two products by using a first, relatively complex multiplier for both the first and second products and then a second relatively simple multiplier to generate the second product. This simplifies the multiplying circuit which would otherwise require two relatively complex multipliers. The error correction circuit determines, for each received code word, an error locator equation by iteratively updating a preliminary error locator equation. The circuit determines for a given iteration whether or not to update the preliminary error locator equation by comparing a particular variable with zero.
Abstract:
The invention is an error correcting system which calculates the error locations, that is, finds the roots of the error locator equation:1+.delta..sub.1 *x+.delta..sub.2 *x.sup.2 +.delta..sub.3 x.sup.3 + . . . +.delta..sub.v-1 *x.sup.v-1 +.delta..sub.v *x.sup.v =0 (1)where "+" and "*" represent Galois Field addition and Galois Field multiplication, respectively, and "v" is the number of errors in the data by substituting the error location equation coefficients into a succession of v error location formulas along with successive values of x to determine if the various x's are roots of equation (1). When the first root is found, extraction of the root corresponds to reducing the degree of equation (1) by one, to (v-1), and also to reducing the number of error location formulas by one to (v-1). Thus substitution in the error location formulas of further values of x to find the next root requires one fewer addition operation and one fewer multiplication operation. When another root is found, the error location formulas are further reduced by one. This procedure is repeated until, depending on the system utilized, all v roots are found or v is reduced to a value of 2, 3 or 4, and a fast-decoding method is utilized to find the remaining roots.
Abstract:
The invention is an apparatus and/or method which enables one to divide two elements, A and B, of GF(2.sup.2M), that is, perform the operation B/A, by finding the multiplicative inverse of the divisor A, and then multiplying the inverse by the numerator, B. The multiplicative inverse, A.sup.-1, of A is found by computing a conversion factor, D, and then multiplying A by D to convert it to an element C, where C is also an element of a smaller Galois Field, GF(2.sup.M), which is a subfield of GF(2.sup.2M). Specifically, C is equal to A.sup.2.spsp.M.sbsp.+1), or A.sup.2.spsp.M *A, in the field GF(2.sup.2M). Next, the multiplicative inverse, C.sup.-1, of C in GF(2.sup.M) is found by appropriately entering a stored look-up table containing the 2.sup.M elements of GF(2.sup.M).The multiplicative inverse, C.sup.-1, of C is thereafter converted, by multiplying it by the conversion factor D calculated above, to the element of GF(2.sup.2M) which is the multiplicative inverse, A.sup.-1, of the original divisor, A. The multiplicative inverse, A.sup.-1, of A is then multiplied by B to calculate the quotient, B/A.
Abstract:
Data compression/decompression apparatus and methods are provided which exhibit significant data compression improvement over prior art methods and apparatus. This is achieved by providing an adaptive characteristic in which a pair of data compression/decompression translation tables are constructed based on the data which is to be compressed or decompressed. One table is used to compress or decompress while the other is being rebuilt, thus reflecting the characteristics of the most recent input data.
Abstract:
An encoding system manipulates L m-bit data symbols or sequences in accordance with a “restricted-symbol” code to produce code words that include error correction code (ECC) redundancy information and also meet modulation requirements, such as run length. The system combines the data and associated redundancy information of a code word D of the underlying code and one or more predetermined symbols or sequences that are appended to the data code word with the corresponding symbols or bit sequences of a selected code word F, to produce a transmission code word C that consists of symbols or sequences that meet the modulation requirements. Thereafter, the system corrects any errors in the retrieved or received code word C using the included redundancy information and the L m-bit data symbols or sequences are then recovered by removing therefrom the contributions of the code word F. The system may instead use the restricted-symbol code strictly as a data code, by combining the respective m-bit data symbols or sequences and one or more predetermined symbols with one or more selected m-bit symbols or sequences, to produce L+1 m-bit symbols or sequences that meet the modulation requirements. The predetermined symbols or sequences are appended to the data to aid in decoding, with the corresponding symbols in the encoded code word or data symbols or sequences indicating to a decoder which selected code word, symbols or sequences have been combined with the data.