ERROR CORRECTION METHODS

Abstract: An error correction method for successively correcting burst errors which may occur in product-coded data while the data is successively transmitted along its row (or column) direction. 1-symbol errors are detected and corrected by a C₂ parity provided to correct data errors of the product-coded data in its column (or row) direction, the C₂ parity being capable of detecting and correcting 1-symbol errors and effecting an erasure correction on up to 2-symbol errors. When it is detected that a burst error has occurred, which cannot be corrected by a C₁ parity provided to correct data errors in the row (or column) direction, and such burst error extends over 3 rows (or columns) (i-1,i,i+1), inherent 2-symbol errors within such burst error are detected from 3-symbol errors which are located in columns (or rows) before and after the columns (or rows) at which 1-symbol errors have been detected and corrected by the C₂ parity with reference to detection information of the burst error detected by the C₁ parity. Erasure correction is then effected on such 2-symbol errors thus detected.

Description: This invention relates to error correction methods, and more particularly but not exclusively to such methods which are capable of successfully correcting burst errors which may occur over a plurality of rows or columns of product-coded data while the product-coded data is sequentially transmitted along the row or column directions. A method has been previously proposed in which digital data is product-coded in order to correct data errors which will be caused when the digital data is transmitted (the term "transmitted" including recording/reproducing) along a transmission path. The product-coded data is such that a predetermined quantity or number of data to be transmitted is arranged in a two-dimensional array. A first error correcting code (hereinafter also referred to as "C₁ parity") for correcting errors possibly occurring in the row direction of the two-dimensional array data is generated, a second error correcting code (hereinafter also referred to as "C₂ parity") for correcting errors possibly occurring in the column direction of the two-dimensional array data is generated, and the first and second error correcting codes are added to the two-dimensional array data. The product-coded data thus formed is sequentially delivered, for example along the row direction, to a transmission path. Since the C₂ parity may, for example, be formed by a two-byte Reed-Solomon code, it can detect the correct one symbol error as well as effect an erasure correction on up to 2-symbol errors. Let is now be assumed that while the product-coded data is being sequentially transmitted along the row direction, a burst error occurs over 3 rows so that this burst error can no longer be corrected by the use of the C₁ parity. On such n occurrence, a flag indicative of a data error is set to all data allocated in each of the rows containing the error. However, the C₂ parity can be applied to effect erasure correction on up to 2-symbol errors only, so that if a flag indicating the occurrence of a 3-symbol error is set to each data in the column direction, erasure correction can no longer be effected on the data by the C₂ parity. Such methods are disclosed, for example, in "Conference Record : 1978 National Telecommunications Conference, Birmingham, Alabama, USA, 3 to 6 December 1978, vol. 2, pages 20.6.1 to 20.6.5, IEEE, New York, USA". According to the invention there is provided an error correction method for a predetermined quantity of data arranged in a two-dimensional matrix, wherein a first error correcting code is produced for data arranged in a first direction of said two-dimensional matrix of data and added to said two-dimensional matrix of data, and a second error correcting code is produced for data arranged in a second direction of said two-dimensional matrix of data different from said first direction and added to said two-dimensional matrix of data, said second error correcting code being capable of detecting and correcting 1-symbol errors and effecting an erasure correction on up to 2-symbol errors, said method enabling correction of errors which will occur in said two-dimensional matrix of data with said first error correcting code and said second error correcting code when said two-dimensional data is transmitted sequentially along said first direction, said method being characterised by the steps of: (a) detecting the occurrence of errors extending over three successive lines in said first direction; (b) detecting and correcting all 1-symbol errors in those of the lines in said second direction which contain such 1-symbol errors by the use of said second error correcting code; (c) detecting whether the 1-symbol errors detected and corrected by said second error correcting code are located in the centre line of said three successive lines; and (d) effecting an erasure correction by the use of said second error correcting code on 2-symbol errors in the remaining lines in said second direction. A preferred embodiment of the present invention, to be described in greater detail hereinafter, provides an error correction method which can effectively correct, by the use of the second error correcting code, a burst error which may occur when product-coded data, in which the first and second error correcting codes each consist of two bytes and which can detect and correct a 1-symbol error and effect an erasure correction on up to 2-symbol errors, is sequentially transmitted along the direction in which the first error correcting code is produced. In the preferred method, even if a burst error occurs which cannot be corrected by the first error correcting code, each 1-symbol error is first detected and corrected by the use of the second error correcting code, and then the erasure correction is effected on 2-symbol errors on the basis of the result of the error correction effected using the first error correcting code, thereby to enhance the error correction ability of the error correcting method. Even if a flag indicative of the existence of a 3-symbol data error is set to data subjected to data correction by the use of the second error correcting code on the basis of the result of the data correction effected by the use of the first error correcting code, the preferred method determines whether the error indicated by the flag is a true data error or a false data error, and if the error is determined to be a true 2-symbol error, erasure correction is effected on the error by the use of the second error correcting code. The invention will now be described by way of example with reference to the accompanying drawings, in which: Figure 1 is a diagram schematically showing an example of a data format of a magneto-optical disc; Figure 2 is a diagram showing an example of a data block formation to which is applicable an error correction method according to an embodiment of the present invention; and Figure 3 is a diagram similar to that of Figure 2 used to explain an error correction method according to the present invention. An error correction method according to an embodiment of the present invention will be explained hereinafter, by way of example, wherein data is recorded on and reproduced from a recordable and reproducible magneto-optical disc. First, however, the magneto-optical disc and an example of a data format therefor will be described. An optical disc is known which is referred to as a Write Once (WO) disc on which data can be recorded only once; however, there has also been proposed a so-called magneto-optical disc on which data can be repeatedly recorded and reproduced, the disc being suitable as a data storage medium for a computer. Referring to Figure 1, a magneto-optical disc 1 can be rotated at a constant angular velocity so that data is recorded on and reproduced from tracks 2 concentrically or spirally formed on the magneto-optical disc 1. Each of the tracks 2 is divided into a plurality of sectors in its circumferential direction and on each of the sectors there is recorded a predetermined quantity of data. In the example of Figure 1, a single track 2 is formed of n+1 sectors (0 to n). Each sector comprises a header portion, a data portion, and gap portions GAP provided after each of the header and data portions. In the header portion, a preamble signal is located at its head and following thereto there are twice written the combination of an address signal ADD comprising track address data TA and sector address data SA with an address synchronising signal ASYNC and an error correcting code ECC. In the data portion, a preamble signal and a data synchronising signal DSYNC are positioned at its head, followed by the data and an error correcting code ECC for correcting possible errors in the data. The number or quantity of data to be recorded in the data portion of one sector, is that, the data capacity of one sector, has generally been selected to be 512 bytes when the disc is to be used as a storage device for a computer. However, recently, the data capacity has been increased, for example to 1 kbytes, 2 kbytes or 4 kbytes. When an error correction method is employed for the data recorded in one sector as mentioned above, the data portion in one sector is formed in the following manner. A predetermined unit quantity of data, for example, 512 bytes, 1 kbytes, 2 kbytes or the like, is arranged in a matrix form, a first parity C₁ for error correction is added to the data arranged in the row direction of the matrix, and a second parity C₂ for error correction is added to the data arranged in the column direction of the matrix, whereby the error correcting codes are formed for the predetermined data recorded in each sector. As an example of such an error correcting code, there will now be considered a product code, as follows. Figure 2 shows an example of formation of data to be recorded in respective sectors of each track 2 on the aforementioned magneto-optical disc, wherein the predetermined quantity of number of data to be recorded in one sector is determined to be 512 bytes. As shown in Figure 2, prior to the 512 bytes of data D₀ to D₅₁₁, there is first included 12 bytes of supplementary information including a track number (TrNo), a sector number, a block number and so on. A 4-byte error detecting code (EDC) is produced for these 524 bytes of data. For example, a CRC (Cyclic Redundancy Check) code is added after the data D₅₁₁ of the 524 bytes of data in such a manner that a total of 528 bytes (44 x 12) of data is arranged in a matrix form, as shown in Figure 2. Then, the first parity C₁ for error correction, constituted by 4 check symbols (4 bytes) produced from, for example, a (48,44) Reed-Solomon code, is added to 44 bytes of data (symbols) arranged in each of the rows of the 528-bytes data matrix including the 4 bytes of EDC (Error Detecting Code). In other words, the parity C₁, the redundancy of which is 4 bytes in the row direction, is added to the extended portion of each row of data. A synchronising signal (hereinafter referred to as "RESYNC") indicative of the head of each row is added to each row at its head. Further, the second parity C₂ for error correction, constituted by 2 check symbols (2 bytes) produced form, for example, a (14,12) Reed-Solomon code is added to the 12 bytes of data (symbols) arranged in each of the columns of the 528-bytes data matrix. In other words, the parity C₂, the redundancy of which is 2 bytes in the column direction, is added to the extended portion of each column of data. Thus, the data to be recorded is transformed into product-coded data and then recorded in each of the sectors. Writing and reading of the product-coded data in and from an encoder and a decoder are performed along the row direction as shown in Figure 2, and sequentially from the uppermost row to the lowermost row. In the case of this example, the data matrix is arranged such that the row is longer than the column, each row having 44 bytes and each column 12 bytes, and the parity C₂ is added to data arranged in the column direction, so that the resulting product-coded data is effective with regard to burst errors. Further in this example, the parity C₁ is a Reed-Solomon code, the minimum distance of which is 5, so that it can detect the correct 2-symbol (byte) errors for the data in the row direction as well as detect 4-symbol (byte) errors for the same data in the row direction. On the other hand, the parity C₂ is a Reed-Solomon code, the minimum distance of which is 3, so that it can detect the correct 1-symbol (byte) errors as well as detect 2-symbol (byte) errors for the data in the column direction, and also effect an erasure correction on up to 2-symbol errors. Symbols "X" in Figure 2 mark the occurrence of a supposed burst error in the data from a row (i-1) to a row i which cannot be corrected by the use of the C₁ parity. An effective method for correcting such a burst error will now be considered. First, a flag indicative of a data error is set for the data located in the rows (i-1) and i, or the rows themselves, when more than three errors exist in each such row which cannot be corrected by the C₁ parity. Next, each 1-symbol error is detected and corrected by the use of the C₂ parity, while if there are 2-symbol errors, their error symbol positions are specified with reference to the flags set by the use of the C₁ parity and then an erasure correction is carried out for such data errors. This method renders it possible to correct, by the C₂ parity, burst errors existing over two successive rows that cannot be corrected by the C₁ parity. Let it now be assumed that, while using a method in which the error correction is first carried out with respect to data arranged in the row direction by the use of the C₁ parity, and then to data arranged in the column direction by the use of the C₂ parity, there occurs a burst error wherein erroneous data successively exist from the row (i-1) to the row (i+1) without any other error in other rows, or with the other errors in other rows (which can be corrected by the C₁ parity) having all been corrected. Figure 3 is a diagram showing such a case wherein a burst error that cannot be corrected by the C₁ parity occurs over three successive rows (i-1), i and (i+1). When the error correction is effected using the C₁ parity, a flag indicative of a data error is set to each of the erroneous data in the rows (i-1), i and (i+1) or the rows themselves since the C₁ parity cannot correct 3-symbol (data) errors. When uncorrectable errors of more than 3 bytes occurs in each row of three successive rows, it is assumed that a burst error has occurred. In the present embodiment, the C₁ parity is used as a technique to detect that the burst error exists over three successive rows. However, other suitable techniques may be used for this propose. For example, in a system which effects a data conversion or modulation, such as a so-called 8 to 10 conversion upon recording data on a disc, when the converted data is subjected to the conversion process to be recovered to byte-unit data by the 10 to 8 conversion upon reproducing, if there exists successively a so-called out-of-rule 10-bit data which is not in a 10 to 8 conversion table or map, the period in which the out-of-rule 10-bit data succeeds can be considered as a burst error occurring location. Further, this detection of burst error occurring location on the basis of the existence of out-of-rule data in the 10 to 8 conversion and that detection by the use of the C₁ parity, as mentioned above, may be combined to detect a burst error occurring location in data arranged in a matrix form. Next, error correction is effected by using the C₂ parity. Errors occurring in data positioned at a middle portion of the row i are 1-symbol errors so that they could be corrected by the C₂ parity. However, since the flag indicative of a data error is respectively set to the data in the rows (i-1), i and (i+1), all data in the three rows is assumed as an error and thus each column is assumed to have a three symbol error extending over these rows. Therefore, even an erasure correction cannot be effected for these errors by using the C₂ parity. Thus, a maximum correctable burst error length for the case wherein only error detection and error correction are effected using the C₁ and C₂ parities in the example of Figure 3 is calculated by adding [(the number of bytes which can be detected and corrected by the C₁ parity) x 2 + 1] to [(the number of bytes which can be detected and corrected by the C₂ parity) x (the number of bytes contained in one row)], for example 53 bytes in the example of Figure 3. However, according to embodiments of the present invention, the maximum correctable burst error length can be increased as hereinafter explained. First, 1-symbol errors in the column direction, occurring at the middle portion of the row i in Figure 3, are detected and corrected by the C₂ parity and at the same time the locations of the error are stored in memory. In this case, it is detected, by the use of the C₂ parity, that the data positioned on the row i which can be detected and corrected by the C₂ parity exceed a value a (for example 10) and the detection result may be used as information for assuming the beginning and end of the aforementioned occurrence of the burst error. An erasure correction is next effected using the C₂ parity on erroneous, but correctable, data located in the rows i and (i+1) before the first data of the data a in the row i which could be corrected, that is, erroneous data in the rows i and (i+1) at columns before the column at which the first erroneous data of the data a is located. In the same manner, an erasure correction is effected using the C₂ parity on erroneous data in the rows (i-1) and i located after the last data of the data a in the row i which could be corrected, that is, erroneous, but correctable data in the rows i and (i-1) located at columns after the column at which the last erroneous data of the data a is located. As will be understood from the explanation given above, it is detected that the burst error occurs over a zone from the row (i-1) to the row (i+1) by using C₁ parity as well as the location of the 1-symbol errors which have been detected and corrected by the C₂ parity. Therefore, it is understood that the remaining erroneous data are the data in the right portion of the rows (i-1) and i and in the left portion of the rows i and (i+1) in Figure 3. Therefore, even if a burst error which cannot be corrected by the C₁ parity occurs over three successive rows and hence the error flag is set to the respective data located in each of the three rows, true 2-symbol errors are specified and subjected to erasure correction by detecting and correcting the 1-symbol errors by using the C₂ parity. In this instance, the data which can be detected and corrected by the C₂ parity is successive for a symbols in the portion where the burst error occurs and it is possible to effect the erasure correction on the true error data over the two rows before and after the correction position. Therefore, the maximum correctable burst error length is increased by about a byte length of the row, compared with a previously-proposed method in which errors are detected and corrected by the C₁ and C₂ parities. Specifically, in the above example, the maximum correctable burst error length which was 53 bytes in the previous proposal is increased to 96 bytes using the presently-described method. If the quantity of 1-symbol errors which are detected and corrected by the C₂ parity is assumed to be a , the correctable burst error length is calculated as 96-a bytes. In the example given above, the transmission direction or recording/reproducing direction of data is perpendicular to the production direction of the C₂ parity. However, the present invention can also be applied to the case where these two directions are not perpendicular to each other. The present invention can further be applied to the case where the data transmission direction is in an oblique direction. The present invention can still further be applied to the case where only the C₂ parity is added to the data array in the column direction, or only the C₁ parity is added to the data array in the row direction. It should be noted, however, that when only the C₁ parity in the row direction is added, the data transmission direction is determined as the column direction or oblique direction. When computer data or the like is involved, a sector in which the erasure correction has been effected may be subjected to an error detection by an error detecting code (EDC) to judge whether or not the sector contains errors. If errors are detected, the data in the sector may not be used. Further, it will be understood that the row and column directions can be reversed, with the same effect. That is to say, the terms "row" and "column" are relative to each other and are not absolute terms. As described above, in order to correct a burst error which occurs over three successive rows (i-1), i, and (i+1) in the product-coded data converted from a predetermined quantity or number of data when it is transmitted, the C₂ parity, which can correct 1-symbol errors in the column direction or achieve an erase correction of up to 2-symbol errors, is used to detect and correct 1-symbol errors at the middle portion of the row i . When 1-symbol errors are found, even if a burst error which cannot be corrected by the C₁ parity occurs over three successive rows and hence the flag is set to all the data in the respective three rows which are assumed to be all erroneous, it can be determined that 2-symbol errors actually exist in the rows i and (i+1) at the columns before the column at which the first 1-symbol error can be detected and corrected, and that 2-symbol errors actually exist in the rows (i-1) and i at the columns after the column at which the last 1-symbol error can be detected and corrected. Then, an erasure correction can be effected on these 2-symbol errors. Hence, even when it has been detected that a burst error occurs over three successive rows (i-1), i and (i+1), if there are 1-symbol errors which can be detected and corrected by the C₂ parity in the median row (the row i ), it is assured that the burst error will be corrected.

Claims: An error correction method for a predetermined quantity of data arranged in a two-dimensional matrix, wherein a first error correcting code (C₁) is produced for data arranged in a first direction of said two-dimensional matrix of data and added to said two-dimensional matrix of data, and a second error correcting code (C₂) is produced for data arranged in a second direction of said two-dimensional matrix of data different from said first direction and added to said two-dimensional matrix of data, said second error correcting code (C₂) being capable of detecting and correcting 1-symbol errors and effecting an erasure correction on up to 2-symbol errors, said method enabling correction of errors which will occur in said two-dimensional matrix of data with said first error correcting code (C₁) and said second error correcting code (C₂) when said two-dimensional data is transmitted sequentially along said first direction, said method being characterised by the steps of: (a) detecting the occurrence of errors extending over three successive lines (i-1, i, i+1) in said first direction; (b) detecting and correcting all 1-symbol errors in those of the lines in said second direction which contain such 1-symbol errors by the use of said second error correcting code (C₂); (c) detecting whether the 1-symbol errors detected and corrected by said second error correcting code (C₂) are located in the centre line (i) of said three successive lines; and (d) effecting an erasure correction by the use of said second error correcting code (C₂) on 2-symbol errors in the remaining lines in said second direction. A method according to claim 1, wherein step (d) comprises the steps of effecting an erasure correction by the use of said second error correcting code (C₂) on 2-symbol errors in the first and the centre lines (i-1,i) of said three successive lines, and on 2-symbol errors in the centre and the third lines (i,i+1) of said three successive lines which cannot be corrected by said second error correcting code (C₂), when it is detected at step (c) that the 1-symbol errors are located in the centre line (i). A method according to claim 1 or claim 2, wherein step (b) includes storing the locations of the beginning and end of said 1-symbol correctable errors, said beginning and end locations defining a middle portion (a) of said centre line (i) of said three successive lines, and step (d) includes erase correcting 2-symbol errors in the lines in said second direction which intersect the remaining portion on one side of said middle portion (a) of the first and centre lines (i-1,i) of said three successive lines, and the remaining portion on the other side of said middle portion (a) of the centre and third lines (i,i+1) of said three successive lines. A method according to claim 1, claim 2 or claim 3, wherein said errors occurring over the three successive lines (i-1, i, i+1) in the first direction are detected by the use of said first error correcting code (C₁). A method according to any one of the preceding claims, wherein said first and second error correcting codes (C₁,C₂) are respective Reed-Solomon codes. A method according to any one of the preceding claims, wherein the first and second directions are respective ones of rows and columns of the two-dimensional matrix, said data and said first and second error correcting codes (C₁,C₂) forming a product code. A method according to any one of the preceding claims, wherein the errors to be corrected are errors arising during transmission of the data.

Inventors: SAKO, YOICHIRO C/O PATENT DIVISION
Applicants: SONY CORPORATION
Application year: 1987
Main classification: H03M13
IPC codes: G11B20, H04L1, H03M13