EP0407101A2

Error detection and correction system for long burst errors.

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) = 2413607036565172433223 and 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.

EP0407101A2, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Projected expiry passed 28 June 2010, 16.2 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

19 claims: 10 independent, 9 dependent

  1. 1
    A system for encoding data and recording it by means of storage medium while detecting and correcting errors, characterized by:A. a first encoder for encoding a stream of d data symbols to generate error detection redundancy symbols, the encoder using a cyclic redundancy code having as a generator polynomial g(x) (in octal form): g(x) = (3)*(3)*(100003)*(102043)*(110013)*(1560513) or g(x) = 2413607036565172433223 where the vector components are the binary coefficients of the terms of the polynomial representing from left-to-right the coefficients of the highest-to-lowest degree terms, the generated redundancy symbols being appended to the data symbols to form a series of CRC code words;B. a second encoder for encoding,using an error correction code, a predetermined number, h, of data symbols from h CRC code words to generate error correction redundancy symbols, the h data symbols and the associated error correction redundancy symbols forming error correction code words;andC. recording means for recording by applying to the storage medium the h CRC code words and the associated error correction redundancy symbols.
  2. 4
    An error correction apparatus for correcting errors in data, the data being encoded for detection using a Cyclic Redundancy Check (CRC) code to form CRC redundancy bits, the redundancy bits and the data forming a CRC code word, and encoded for error correction using an error correction code to form error correction redundancy symbols, the error correction redundancy symbols and the data forming an error correction code word, the error correction apparatus being characterised by:A. a decoder for decoding the data using the CRC code to detect the locations of errors in the data;B. an error corrector responsive to the locations of the detected errors for calculating error values for v detected errors, where v is less than a predetermined maximum value, f, the error corrector including: 1. means for calculating a remainder for each error correction code word,2. means for simultaneously solving the equations, Σ XikY(ei) = REMk where Xik is the kth term of the vector Xi modulo G(x), G(x) being the generator polynomial of the error correction code used to encode the data, and Y(ei) is the error value associated with the symbol in location i, the means including: i. formulating means for formulating a matrix M′ for each error correction code word with a non-zero remainder, the matrix M′ having: a. v rows corresponding to the detected error,the v rows having elements corresponding to a vector with components representing Xe modulo G(x) where e is the location of a detected error and G(x) is the generator polynomial of the error correction code used to encode the data, andb. a last row corresponding to the code word remainder,ii. means for manipulating the matrix M′ columns to form a matrix M˝ having a v x v identity matrix in the first v matrix columns of matrix rows 1-v and having ZEROS as the remaining elements of the matrix rows 1-v, and,iii. means for combining, by using the matrix M˝ last row elements as the error values associated with the symbols in the detected error locations, the error values with the corresponding symbols.
  3. 8
    The error correction apparatus of any of claims 4 to 7, wherein the apparatus further includes means for determining the location of an error when there are more than f detected errors, the means including:A. means for selecting v error locations from the detected locations and supplying the selected locations to the formulating means, said formulating means formulating a matrix M′ corresponding to the selected rows;B. means for manipulating the rows of matrix M′ to form a matrix M˝ having a v x v identity matrix in the first v rows;C. means for appending a vector Xe, where e is a vertical location of a detected error other than a selected location, to the matrix M˝ is a last row to form a matrix N;D. means for manipulating the columns of matrix N until the identity matrix contained therein is located in the upper-right-hand corner of the matrix;andE. means for determining if the appended row Xe is a linear combination of the rows of matrix M′, the means including: i. means for determining if the elements of the manipulated matrix N satisfy the conditions: sj₂′ = a₂′*sj₀′ + b₂′*sj₁′ sj₃′ = a₃′*sj₀′ + b₃′*sj₁′ if the number of selected error locations is one, or the condition sj₃′ = a₃′*sj₀′ + b₃′*sj₁′ + c₃′*sj₂′ if the number of selected error locations is two.
  4. 9
    A method for encoding a stream of data symbols to allow detection of errors, the method using a cyclic redundancy code having as a generator polynomial g(x) (in octal form):g(x) = (3)*(3)*(100003)*(102043)*(110013)*(1560513) or g(x) = 2413607036565172433223 where the vector components are the binary coefficients of the terms of the polynomial representing from left-to-right the coefficients of the highest-to-lowest degree terms.
  5. 10
    A method for encoding data and recording it using a storage medium, including the steps of:A. encoding a stream of d data symbols to generate error detection redundancy symbols using a cyclic redundancy code having as a generator polynomial g(x) (in octal form): g(x) = (3)*(3)*(100003)*(102043)*(110013)*(1560513) or g(x) = 2413607036565172433223 where the vector components are the binary coefficients of the terms of the polynomial representing from left-to-right the coefficients of the highest-to-lowest degree terms, the generated redundancy symbols being appended to the data symbols to form a series of CRC code words;B. encoding using an error correction code a predetermined number, h, of data symbols from h CRC code words to generate error correction redundancy symbols, the data symbols and the corresponding error correction redundancy symbols forming an error correction code word;andC. recording by applying to the storage medium the h CRC code words and the associated error correction redundancy symbols.
  6. 13
    A method of correcting errors in data, the data being encoded for detection using a CRC coded to form CRC redundancy bits, the redundancy bits and the data forming a CRC code word, and encoded for error correction using an error correction code to form error correction redundancy symbols, the error correction redundancy symbols and the data forming an error correction code word, the error correction method including the steps of:A. decoding the data using the CRC code to detect the locations of errors in the data;B. correcting the errors in the detected locations provided that only v errors are detected, where v is less than a predetermined maximum value, f, the error correcting step including the steps of: 1. calculating a remainder for each error correction code word,2. simultaneously solving the equations, Σ XikY(ei) = REMk where Xik is the kth term of the vector Xi modulo G(x), G(x) being the generator polynomial of the error correction code used to encode the data, and Y(ei) is the error value associated with the symbol in location i, the solving step including the steps of: i. formulating a matrix M′ for each error correction code word with a non-zero remainder, the matrix M′ having: a. v rows corresponding to the detected errors, the v rows having elements corresponding to a vector with components representing Xe modulo G(x) where e is the location of a detected error and G(x) is the generator polynomial of the error correction code used to encode the data, andb. a last row corresponding to the code word remainder,ii. manipulating the matrix M′ columns to form a matrix M˝ having a v x v identify matrix in the first v matrix columns of matrtix rows 1-v and having ZEROS as the remaining elements of the matrix rows 1-v, and,iii. combining, by using the matrix M˝ last elements as the error values associated with the symbols in the detected error locations, the error values with the corresponding symbols.
  7. 16
    The method of correcting errors of any of claims 13 to 15, wherein the method further includes the step of labeling code words with remainders equal to ZERO as error-free and refraining from performing further error correction on the symbols in these code words.
  8. 17
    The method of correcting errors of any of claims 13 to 16, wherein the method further includes, for determining the location of an error when there are more than f detected errors, the steps of:A. selecting v error locations from the detected locations and supplying the selected locations to the formulating means, the formulating means formulating a matrix M′ corresponding to the selected rows;B. manipulating the rows of matrix M′ to form a matrix M˝ having a v x v identity matrix in the first v rows;C. appending a vector Xe, where e is a location of a detected error other than a selected location, to the matrix M˝ as a last row to form a matrix N;D. manipulating the columns of matrix N until the identity matrix contained therein is located in the upper-right- hand corner of the matrix;andE. determining if the appended row Xe is a linear combination of the rows of matrix M′, by determining if the elements of the manipulated matrix N satisfy the conditions: sj₂′ = a₂′*sj₀′ + b₂′*sj₁′ sj₃′ = a₃′*sj₀′ + b₃′*sj₁′ if the number of selected error locations is one, or the condition: sj₃′ = a₃′*sj₀′ + b₃′*sj₁′ + c₃′*sj₂′ if the number of selected error locations is two.
  9. 18
    A data encoding system for encoding a stream of data symbols to allow detection of errors, the system including an encode which encodes data using a cyclic redundancy code having as a generator polynomial g*(x) (in octal form):g*(x) = (3)*(3)*(140001)*(1142041)*(150011)*(1512073) or g*(x) = 3113305362565703417205 and the vector components are the binary coefficients of the terms of the polynomial representing from left-to-right the coefficients of the highest-to-lowest degree terms.
  10. 19
    A method for encoding a stream of data symbols to allow detection of errors, the method using a cyclic redundancy code having as a generator polynomial g*(x), where g*(x) is (in octal form):g*(x) = (3)*(3)*(140001)*(1142041)*(150011)*(1512073) or g*(x) = 3113305362565703417205 and the vector components are the binary coefficients of the terms of the polynomial representing from left-to-right the coefficients of the highest-to-lowest degree terms.