Abstract:
A data error correcting method and apparatus reads two dimensional block data having row data and row error correcting codes and column data and column error correcting codes. In the block data, one column error correcting code is assigned to one column data group, and individual column data groups and individual column error correcting codes are alternately arranged. A control unit corrects errors in the block data on a row by row basis using the row error correcting codes and the row data. The control unit also corrects errors on a column by column basis, in parallel with the row errors, using the column error correcting codes and the column data. The control unit includes a compensation input data generator having a data adjustor and a Galois multiplier. The data adjustor computes a Compensation Galois constant for compensating the input order of the data.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to a data error correcting method and apparatus which correct errors in data read from a recording medium. 
     As the recording capacity of recording media, such as an optical disk, increases, the time required to read data from such recording media increases. The time necessary for data reading includes the time required for an error correcting operation. In order to decrease data reading time, it is necessary to shorten the time required for error correction. 
     An ECC (Error Correcting Code) has previously been affixed to data recorded on a recording medium (an audio tape, video tape, CD, DVD or the like) to correct an error which may occur at the time of reading the data. Data to be recorded on a DVD-ROM, for example, is formatted as illustrated in FIG. 1. A sector 1 includes an ID and reserve area of 12 bytes, user data of 2 Kbytes and an EDC (Error Detecting Code) of 4 bytes. Each sector 1 includes twelve rows of data which extend in the PI direction (row direction). The first row of data in each sector 1 consists of 172 bytes. Recorded in the first row are the 12-byte ID and reserve area and 160-byte user data. In the last row are recorded 168-byte user data and 4-byte EDC. Each of the intermediate rows has 172-bytes of user data. 
     As shown in FIG. 2, a data block 2 includes sixteen sectors 1, a PO-ECC section 3 and a PI-ECC section 4. The PO-ECC section 3 is an error correcting code for data in the PO direction (column direction) which exist over the individual sectors 1, and the PI-ECC section 4 is an error correcting code for data in each sector 1. The PI-ECC section 4 is affixed to generate a syndrome for error correction for each row in the PI direction in the data block 2 or for each PI interleave. The PO-ECC section 3 is affixed to generate a syndrome for error correction for each column in the PO direction in the data block 2 or for each PO interleave. 
     The data block 2 is stored on the DVD-ROM in the encoding format as shown in FIG. 5. The PO-ECC section 3 is segmented for the individual interleaves, with one interleave inserted between sectors 1. &#34;One interleave&#34; is a row or a column of data which includes user data and an error correcting code. The format can ensure high error detecting and correcting performance in an error correcting operation at the time of data reproduction. 
     FIG. 7 shows a syndrome operation unit which generates a syndrome in an error correcting operation. An EOR gate 5 receives data, read from a recording medium, byte by byte, and sends an output signal to a latch circuit 6. The latch circuit 6 receives the signal from the EOR gate 5 (Exclusive-OR) and sends a signal to a Galois constant multiplier 7. The Galois constant multiplier 7 performs an arithmetic operation on the signal received from the latch circuit 6. The Galois constant multiplier 7 sends an acquired Galois constant to the EOR gate 5. In the syndrome operation unit, every time data is sequentially input to the EOR gate 5, the latch circuit 6 outputs an error correcting syndrome Sy. 
     A conventional error correcting operation in a mode of reading data recorded in the above-described format will now be discussed with reference to FIG. 8. 
     When data in the PI direction from each sector 1 in the data block 2 is sequentially input byte by byte (step 1), PI syndromes are sequentially generated (step 2). At the same time, the input data in the PI direction is sequentially stored in a buffer memory for each interleave as shown in FIG. 3 (step 3). 
     When an error correcting syndrome Sy for one interleave in the PI direction is generated, the position and correction value for error data are computed interleave by interleave (step 4), and rewriting of the error data is carried out on the buffer memory (step 5). Such an operation is repeated for every PI interleave. 
     Next, error correction for the individual PO interleaves in the data block 2 is executed. Data read in the PI direction is stored in the buffer memory as a data block 2a as shown in FIG. 5. 
     When data is read in the PO direction from the data block 2, PO-ECC data is read byte by byte for every 12 bytes as shown in FIG. 6. The PO interleaves which have been read in the order shown in FIG. 6 are sorted in the order shown in FIG. 4 (step 6), and error correcting syndromes for the individual PO interleaves are generated in that situation (step 7). 
     The reason for rearranging the PO-ECC data in this manner is because the PO-ECC data is generated based on the data in each sector 1 which has continuously been read in the PO direction as shown in FIG. 2. In other words, it is because arithmetic operations of syndromes have weights in the order of data input. Even when data, which has been weighed in the state shown in FIG. 2, is input to the syndrome operation unit in the input order shown in FIG. 6, the operation unit cannot generate accurate syndromes. 
     When an error correcting syndrome for one interleave in the PO direction is generated, the position and correction value for error data are computed interleave by interleave (step 8), and rewriting of the error data is carried out on the buffer memory (step 9). The operation is repeated for every PO interleave. Through the operation, data read from the data block 2a is subjected to a high-precision error correcting operation both in the PI and PO directions. 
     A recording medium like the aforementioned DVD-ROM is used as a data storage means which belongs to the peripheral devices of a computer, and an improvement on the operational speeds of computers demands faster error correction of data read from a recording medium. The above-described conventional error correction, however, takes a relatively long time for data reading and writing with respect to a buffer memory and demands that time to be shortened. As the operational speeds of computers increase, the time required for arithmetic operations for error correction is shortened while the time for data reading and writing with respect to a buffer memory is not shortened as much as desired. 
     Reading and writing data to and from a buffer memory are executed in steps 3, 5 and 6 in the arithmetic operation on syndromes. In step 5, data reading and writing with respect to the buffer memory are carried out for error correction of data, stored in the buffer memory, in the PI direction. In step 6, data reading and writing with respect to the buffer memory are performed for rearranging data in the PO direction. To shorten the time required for rearranging the data in a different order, it is possible to previously store data in the buffer memory in a rearranged form (see FIG. 2). However, even this case requires an operation for reading data from the buffer memory for error correction in the PO direction. 
     Because data reading and writing with respect to the buffer memory is repeatedly executed, the time for error correction is undesirably long. As the amount of data in a single data block on a DVD-ROM is very large, the access time for the buffer memory is increased, which inevitably increases the time required for error correction. 
     The reason error correction takes so long is because error correction in the PI direction and error correction in the PO direction are not carried out in parallel. After the error correction in the PI direction is executed, rearranging data in the PO direction is carried out, and then the error correction in the PO direction is performed. Even in the case where data is stored in the buffer memory in the state of the data block 2 shown in FIG. 2 before error correction in the PI direction, it is necessary to perform error correction in the PI direction after which data id read in the PO direction and is then subjected to error correction. 
     Accordingly, it is an objective of the present invention to provide a data error correcting method and apparatus which can shorten the time required for error correction. 
     SUMMARY OF THE INVENTION 
     To achieve the above objective, the present invention provides a method of correcting an error in two-dimensional block data having row error correcting codes for individual rows of data and column error correcting codes for individual column of data, one column error correcting code being assigned to one column data group, individual column data groups and the individual column error correcting codes being alternately arranged, the method comprising the steps of: correcting errors in block data row by row using the row error correcting codes and row data; and correcting errors column by column in parallel to the row error correcting step, by using the column error correcting codes and column data. 
     The present invention further provides a method of correcting an error in two-dimensional block data having row error correcting codes for individual rows of data and column error correcting codes for individual columns of data, one column error correcting code being assigned to a predetermined number of the column data, the column data and the individual column error correcting codes being alternately arranged, the row data and the column error correcting codes having a first weight according to a first order such that the individual column error correcting codes are arranged after all of the column data groups, the method comprising the steps of: correcting errors column by column using the row data and the row error correcting codes; receiving the column data; compensating the first weight for generating a second weight according to the received column data when the received column data is in a second order different from the first order; and correcting errors row by row based on the generated second weight, using the column data and the column error correcting codes. 
     The present invention provides an error correcting apparatus for correcting an error in two-dimensional block data having row error correcting codes for individual rows of data and column error correcting codes for individual columns of data, one column error correcting code being assigned to one column data group, individual column data groups and the individual column error correcting codes being alternately arranged, the apparatus comprising: a control unit which corrects errors in block data row by row using the row error correcting codes and row data, and corrects errors column by column in parallel to the row error correcting, using the column error correcting codes and the column data. 
     The present invention further provides an error correcting apparatus comprising: a control unit for correcting an error in two-dimensional block data having row error correcting codes for individual rows of data and column error correcting codes for individual column of data, one column error correcting code being assigned to one column data group, the column data group and the individual column error correcting codes being alternately arranged, the column data and the column error correcting codes having a first weight according to a first order such that the individual column error correcting codes are arranged after all column data groups; and a compensating device for compensating the first weight for generating a second weight according to the received column data when the received column data is in a second order different from the first order, wherein the control unit corrects errors column by column using the row data and the row error correcting codes, and corrects errors row by row based on the generated second weight using the column data and the column error correcting codes. 
     Other aspects and advantages of the invention will become apparent from the following description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention, together with objects and advantages thereof, may best be understood by reference to the following description of the presently preferred embodiments together with the accompanying drawings. 
     FIG. 1 is a schematic diagram showing the contents of a sector on a DVD-ROM; 
     FIG. 2 is a schematic diagram of a data block of the sectors of FIG. 1; 
     FIG. 3 is a schematic diagram of a PI interleave; 
     FIG. 4 is a schematic diagram of a PO interleave; 
     FIG. 5 is a schematic diagram depicting a data block with inserted PO-ECC sections; 
     FIG. 6 is a schematic diagram showing a PO interleave with inserted PO-ECC sections; 
     FIG. 7 is a schematic block diagram of a conventional syndrome operation unit; 
     FIG. 8 is a flowchart illustrating a conventional error correcting operation; 
     FIG. 9 is a schematic block diagram depicting an optical disk controller in accordance with the present invention; 
     FIG. 10 is a schematic block diagram of a compensation input data generator in accordance with the present invention; 
     FIG. 11 is a schematic block diagram showing a syndrome operation unit in accordance with the present invention; 
     FIG. 12 is a schematic block diagram depicting a first embodiment of data adjuster in accordance with the present invention; 
     FIG. 13 is a table showing the number of compensation operations with respect to the input order for PO interleaves in accordance with the present invention; 
     FIG. 14 is a data table showing compensation Galois constants with respect to the input order for PO interleaves in accordance with the present invention; 
     FIG. 15 is a flowchart illustrating an error correcting operation; 
     FIG. 16 is a schematic block diagram depicting a second embodiment of the data adjuster in accordance with the present invention; 
     FIG. 17 is a schematic block diagram showing a third embodiment of the data adjuster in accordance with the present invention; 
     FIG. 18 is a schematic block diagram depicting a fourth embodiment of the data adjuster in accordance with the present invention; 
     FIG. 19 is a block diagram showing a part of an error correcting apparatus according to a second embodiment of the present invention; and 
     FIG. 20 is a block diagram showing a part of an error correcting apparatus according to a third embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     First Embodiment 
     A first embodiment of the present invention will now be described referring to the accompanying drawings. 
     As shown in FIG. 9, an optical disk controller 21 is connected to a computer 22 via an interface, preferably ATAPI (AT Attachment Packet Interface). The optical disk controller 21 is also connected to an optical disk drive 23 via another interface. 
     The optical disk drive 23 rotates a recording medium, i.e., a digital video disk (DVD) 24 at a predetermined velocity, and reads data recorded on the DVD 24 by means of an optical pickup (not shown). Then, the optical disk drive 23 sends the read data to the optical disk controller 21. 
     The optical disk controller 21 comprises an optical disk control unit (hereinafter simply called control unit) 25, a microprocessor 26, a storage device, such as an external buffer memory 27, an interface circuit 28 and an input/output (I/O) driver 29. 
     The control unit 25 carries out various processes, such as transfer of commands to the optical disk drive 23 and reception of status information therefrom, decoding of the read format from an optical disk and correction of errors in data therefrom, data transfer between the optical disk drive 23 and the buffer memory 27, and data transfer between the interface circuit 28 and the buffer memory 27. 
     The control unit 25 receives data, read by the optical disk drive 23, via the I/O driver 29. The control unit 25 performs a process like error correction on the input data and stores the processed data in the buffer memory 27. Based on a command from the microprocessor 26, the control unit 25 transfers data, stored in the buffer memory 27, to the computer 22 via the interface circuit 28. 
     The control unit 25 is capable of generating error correcting syndromes in the PO direction without rearranging data even when PO interleaves are input in the order including PO-ECC data every 12 bytes, as shown in FIG. 6, from a data block 2. As shown in FIG. 10, the control unit 25 has a compensation input data generator 30 which comprises a data adjuster 31 and a Galois multiplier 32. The data adjuster 31 receives a data position signal from the optical disk drive 23. The data adjuster 31 computes a compensation Galois constant for compensating the input order of data based on data position signal, and sends the computed compensation Galois constant to the Galois multiplier 32. The Galois multiplier 32 receives the compensation Galois constant from the data adjuster 31 and data from the drive 23, and generates and outputs compensation input data a the compensated input order based on the computed compensation Galois constant. 
     The data adjuster 31 computes the order affixed with a difference between the position of the input data and the original position of the data. The original position is the position of the data at the time of the conventional syndrome generation (see FIGS. 3 and 4), i.e., the position of the data which has been rearranged for the generation of syndromes. As discussed below, syndrome operation unit 50 (FIG. 11) computes correct syndromes even when receiving non-rearranged compensation input data, for the compensation input data already has an order weight which is included in the data corresponding to the input order for syndrome calculation. 
     Provided that the original data sequence for accurate computation of syndromes is given by ##EQU1##  a polynomial representing the order weight is expressed by ##EQU2## 
     When the data is a Reed Solomon code, a syndrome Sy(x) is expressed by ##EQU3## 
     Letting Syi denote the i-th coefficient of the syndrome Sy and ai denote the Galois constant, the equation (3) is rewritten as ##EQU4## 
     When the k-th and (k+1)-th items in the input data are rearranged, ##EQU5##  and the input polynomial is expressed by the following equation (6). ##EQU6## 
     To accurately calculate syndromes, therefore, compensation for multiplying data Y k  and Y k  +1 by a Galois constant ai m  as given by ##EQU7## where m is acquired from a relationship between the data position of the input data and the original data position required for syndrome computation. The compensation Galois constant makes the equation (7) equal to the equation (4). 
     The compensation Galois constant compensates the input data for the Galois constant computation which is performed in the conventional syndrome calculation, based on the difference between the number of operations on the data position of the input data and those on the original data position (the difference in order). 
     In the equation (7), the number of operations of ai as an operational difference for the k-th data is decreased by one while the number of operations of ai as an operational difference for the (k+1)-th data is increased by one. 
     When the relationship between the data position of the input data and the original position of the input data is as obvious as above, it is possible to compute a compensation Galois constant based on a previously set relative equation or determine it from a previously set data table. 
     The number of compensation computations for the input order of PO interleaves is determined according to a table as shown in FIG. 13. With regard to PO-ECC data which is the twelfth input data of a PO interleave, for example, the Galois constant ai is computed 195 times from the viewpoint of the input order, but the necessary number of operations is actually 15 times because the original input order is the 192nd. Based on the difference in the number of computations, therefore, the number of compensations is -180. 
     To compute the compensation Galois constant, the data adjuster 31 may be designed as shown in FIG. 12 or FIGS. 16 to 18. The data adjuster 31 shown in FIG. 12 has a correlation table 33 of the data positions of the input data and the original data positions of the input data. The data adjuster 31 extracts the original data position signal from the correlation table 33 based on the input data position signal. Then, a difference calculator 34 receives the data position signal of the input data and the original data position signal, and computes a compensation Galois constant based on both signals. 
     The second embodiment of the data adjuster 51, shown in FIG. 16 has a calculator 35 for computing the original data position and a difference calculator 34 for computing a Galois constant. The calculator 35 computes the original data position signal based on the data position signal to be input. The difference calculator 34 receives both signals and computes a compensation Galois constant. 
     The third embodiment of the data adjuster 52 shown in FIG. 17 has a correlation table 36 of the data positions of the input data and compensation Galois constants corresponding to the data positions, and extracts an associated compensation Galois constant based on the input data position signal. 
     The fourth embodiment of the data adjuster 53 shown in FIG. 18 has a calculator 37 for computing the data position of input data and a compensation Galois constants corresponding to that data position, and calculates an associated compensation Galois constant based on the input data position signal. 
     The correlation tables 33 and 36 and the calculators 35 and 57 may be properly combined as required. In this case, the correlation table or the calculator is properly selected based on the data position signal to compute a compensation Galois constant. 
     FIG. 14 shows a data table which holds compensation Galois constants with respect to the input order of PO interleaves. In the table, the individual constants are expressed by hexadecimal numbers. 
     The syndrome operation unit 50 including a PI syndrome operation unit and a PO syndrome operation unit is equipped in the control unit 25 to generate syndromes in the PI direction and PO direction. As shown in FIG. 11, the syndrome operation unit 50 comprises an EOR gate 38, a RAM 39, a Galois constant multiplier 40 and an initializer 41. 
     The EOR gate 38 receives compensation input data from the Galois multiplier 32 and generates a syndrome Sy. 
     The RAM 39 stores the generated syndrome Sy. The Galois constant multiplier 40 reads the syndrome Sy from the RAM 39 and sends a signal, obtained by computing the syndrome Sy, to the EOR gate 38 via the initializer 41. The initializer 41 receives the signal from the Galois constant multiplier 40 and an initialization signal &#34;I&#34;, and initializes the syndrome from the Galois constant multiplier 40 based on the initialization signal I which is input, for example, when computation of the PO syndrome starts. When no initialization signal I is input, the initializer 41 sends the output signal of the Galois constant multiplier 40 directly to the EOR gate 38. 
     The syndrome operation unit 50 can compute the syndrome of a PO interleave based on the data input sequentially in the PI direction. The syndrome acquired by the EOR gate 38 is temporarily stored in the RAM 39. When the EOR gate 38 receives compensation input data next, which belongs to the same PO interleave, the Galois constant multiplier 40 reads out the syndrome of the PO interleave from the RAM 39 and performs an operation thereon. The EOR gate 38 receives the computation result from the Galois constant multiplier 40 and generates a syndrome. The RAM 39 stores that syndrome. By repeating such an operation, the syndromes of the individual PO interleaves are generated based on the input compensation input data in the PI direction. 
     An error correcting operation under the control of the above-described control unit 25 will now be discussed with reference to FIG. 15. 
     The control unit 25 receives data in the PI direction from each sector 1 of the data block 2a, byte by byte (step 11), and sequentially generates PI syndromes for each single PI interleave (step 12). 
     When generating an error correcting syndrome of one interleave in the PI direction by means of the PI syndrome operation unit, the control unit 25 computes the position of error data in the interleave and a correction value for the error data (step 13), and performs an operation to rewrite the error data for one interleave stored in the control unit 25 (step 14). The control unit 25 repeats the above-described operation for every PI interleave and sequentially stores the corrected PI interleaves in the buffer memory 27 (step 18). The error correction in the PI direction consists of steps 1 to 14 and 18. 
     The control unit 25 generates compensation input data from each corrected PI interleave through the operations of the data adjuster 31 and the Galois multiplier 32. The control unit 25 sends the compensation input data to the PO syndrome operation unit (step 15), and generates a PO syndrome in the PO syndrome operation unit (step 16). 
     At this time, the control unit 25 sequentially generates syndromes of the individual PO interleaves based on the byte-by-byte inputs of the PO interleaves. When 1-byte data in the PI direction is input, for example, a PI syndrome for the PI interleave to which that input data belongs is generated. At the same time, one PO syndrome for the PO interleave to which the input data belongs is generated. One PI syndrome and one PO syndrome are generated in order in the mentioned manner for the input of one data in the PI direction. 
     When the syndrome of the individual PI interleaves are generated, the control unit 25 computes the position of error data and a correction value for the data for each interleave (step 17), and performs an operation of rewriting the error data on the buffer memory 27 (step 18). 
     The control unit 25 repeats such an operation for every PO interleave. The error correction in the PO direction steps 15 to 19. 
     In the error correction of the PO interleaves described above, the following effects can be obtained. 
     PI syndromes are generated without temporarily storing input data, read in the PI direction, in the buffer memory 27. After errors in data of PI interleaves are corrected, the individual PI interleaves are stored in the buffer memory 27. It is thus unnecessary to read data from the buffer memory 27 to correct an error in a PI interleave. This results in a reduced number of accesses to the buffer memory 27 and a shortened time for the generation of syndromes. 
     Since the syndrome of PO interleaves are generated on the basis of the input of the error-corrected PI interleaves in the PI direction, input data of one data block read in the PI direction need not be temporarily stored in the buffer memory. Therefore, the number of accesses to the buffer memory and the time for the generation of syndromes are further reduced. 
     Second Embodiment 
     A second embodiment of the present invention will now be described referring to FIG. 19. To perform 16-byte PO syndrome computation on 1-byte input data, the compensation input data generator and syndrome operation unit according to the second embodiment separately performs two operations on the 1-byte input data, one for the upper eight bytes and the other for the lower eight bytes according to the order. 
     To execute a syndrome computation for the upper eight bytes on the higher order side, the data generator extracts a compensation Galois constant for the upper eight bytes from the compensation Galois constant correlation table 36 based on the data position signal of input data and the upper/lower identification (ID) signal, and computes corrected input data in the Galois multiplier 32. The upper syndrome operation unit computes a syndrome for the upper eight bytes based on data from the Galois multiplier 32 and the syndromes stored the RAM 39. 
     Next, the data generator likewise extracts a compensation Galois constant for the lower eight bytes from the table 36 and computes corrected input data in the Galois multiplier 32. The lower syndrome operation unit computes a syndrome for the lower eight bytes based on data from the Galois multiplier 32 and the syndromes stored in the RAM 39. 
     Computing syndromes eight bytes each in this manner contributes to reducing the circuit scale of the syndrome operation unit. 
     The operational division by the operational order may be carried out every four bytes, every two bytes or every one byte, instead of the aforementioned units of eight bytes. 
     Third Embodiment 
     Data error correcting apparatus according to a third embodiment, like that of the second embodiment, performs a syndrome operation separately for upper and lower eight bytes, but by using a single syndrome operation unit, as shown in FIG. 20. 
     The operation of an identifying circuit 42 based on an upper/lower ID signal switches the generation of syndromes between the upper eight bytes and the lower eight bytes. This allows Galois constant multipliers 40c and 40d to operate in the same manner as the Galois constant multiplier in the second embodiment. The structure eliminates one EOR gate and further reduces the circuit scale. 
     Therefore, the present examples and embodiment are to be considered as illustrative and not restrictive and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims.