Method and apparatus for error correction

Information

  • Patent Grant
  • 6738947
  • Patent Number
    6,738,947
  • Date Filed
    Tuesday, October 24, 2000
    24 years ago
  • Date Issued
    Tuesday, May 18, 2004
    20 years ago
Abstract
The present invention provides an apparatus and method for error correction that can directly performs the operation without deinterleaving read data, that has an increased parallel operation and performs at high-speed. An error correction apparatus 50 comprises a plurality of syndrome operation circuits 21 based on a parallel operation, and a second Galois field multiplication circuit 25 for multiplying a syndrome operation result halfway through the operation by index compensating coefficients.
Description




FIELD OF THE INVENTION




The present invention relates to a method and apparatus for error correction and, more particularly, to an error correction method and apparatus which executes a syndrome operation without deinterleaving information data, which has been interleaved, and performs error correction.




BACKGROUND OF THE INVENTION




A-syndrome operation of error correction processings for the CD-ROM (Compact Disc-Read Only Memory) is described with reference to

FIGS. 4

to


7


.

FIG. 4

is a diagram showing a data format of one sector of the CD-ROM, which is represented on the basis of audio data (L and R stereo signals). L-CH denotes data of the left channel and R-CH denotes data of the right channel. “L” denotes a Least Significant Bit (LSB) and “M” denotes a Most Significant Bit (MSB). Upper three lines denoted by reference numeral


1


show a synchronous pattern representing one sector, and the next


585


lines below numeral


1


, denoted by numeral


2


, show the pattern of data.





FIG. 5

is a map which is formed by selecting only less significant bytes in the data of one sector shown in FIG.


4


. The plane which is composed of only less significant bytes is referred to as a least significant plane. Further, a plane which is composed of only more significant bytes is referred to as a most significant plane. The upper


24


lines denoted by numeral


4


show the header except the synchronous pattern and user data. The next two lines denoted by numeral


5


show P parity and the subsequent two lines denoted by numeral


6


show Q parity. The most significant plane has the same form as that of the least significant plane. The respective planes are subjected to the same ECC (Error Check and Correct). In addition, in the case of the CD-ROM, the ECC is performed for two codeword sequences, i.e., P sequence and Q sequence.





FIGS. 6 and 7

show the data of Q sequence shown in

FIG. 5

, which are rearranged in the direction of row (j). It can be seen that code sequences each having a code length n composed of 45 bytes (j=0-44) are arranged in


26


(i=0-25) rows. When i=0, the syndrome operation is executed with reading data every “44”, i.e., “0”, “44”, “88”, . . . . Similarly when i=1, the operation is executed with reading data every “44”, i.e., “43”, “87”, “131”, . . . . This is given by the following expression:








Q


=43


i


+44


j


mod 1118 (


i


=0-25


, j


=0-44)  (Expression 13)






Japanese Published Patent Application No. Hei.5-12814 shows a method of executing syndrome operations in parallel and performing(error correction, without putting the data of Q sequence which have been rearranged in byte units, i.e., interleaved, in their original places, i.e., without deinterleaving the data. In this method, with utilizing the property that ECCs (Error-Correcting Codes) for the most significant plane and the least significant plane are irrelevant to each other, i.e., independent, 1 byte of data is respectively read on the most significant plane and the least significant plane (referred to as page


0


and page


1


in this Published Application) successively from the first data of codeword sequences arranged in the direction of row (j) among data stored at contiguous addresses in a buffer memory, i.e., 2 bytes of data are read, and the operations are executed in parallel by two syndrome operation circuits which are provided so as to respectively correspond to the most significant plane and the least significant plane.




As described above, the prior art error correction apparatus reads 1 byte of data on the most significant plane and the least significant plane, respectively, i.e., reads 2 bytes of data in total, successively from the first data of the interleaved data in each codeword sequence, and executes the operations in the two syndrome operation circuits in parallel, thereby increasing the speed of the operations. However, it is difficult to increase the parallelism of the operation to further increase the speed with this error correction apparatus.




In order to more specifically describe this, assume that in addition to 2 bytes of data as in the prior art, 2 bytes of data at the subsequent addresses are further read. In this case, “0001L” and “0001M” are read in addition to “0000L” and “0000M”, i.e., 4 bytes of data are read in total. Here, “0000L” and “0000M” correspond to “0” shown in FIG.


6


and are the first (j=0) data in the codeword sequence of i=0. On the other hand, “0001L” and “0001M” correspond to “1” shown in FIG.


6


and are the second (j=1) data in the codeword sequence of i=25.




More specifically, since the order in which “0000L” and “0000M” are subjected to the operations is different from the order in which “0001L” and “0001M” are subjected to the operation, their operations cannot be performed in parallel. In addition, when the operation is started from data halfway through the codeword sequence like “0001L” and “0001M”, an error occurs in the syndrome operation result. Thus, it is required to put the interleaved data in the their original places, i.e., deinterleave the data, and then execute the syndrome operation. Accordingly, the parallel operation of the syndrome cannot be performed by merely increasing the number of bytes of read data.




SUMMARY OF THE INVENTION




It is an object of the present invention to provide an error correction method and apparatus for performing a high-speed operation, which can directly execute the operation, without deinterleaving plural bytes of data which are read according to the parallelism of the syndrome operation circuits.




Other objects and advantages of the present invention will become apparent from the detailed description and specific embodiments described are provided only for illustration since various additions and modifications within the spirit and scope of the invention will be apparent to those of skill in the art from the detailed description.




A method for error correction according to a 1st aspect of the present invention comprises a first step of repeating a product-sum operation using (n−s) codewords from an s-th codeword (1≦S≦n−1) halfway through a codeword sequence of a code length n (n is a positive integer) composed of 0th to (n-1)-th codewords, which is taken as an operation start data, to the (n-1)-th codeword, and obtaining a first partial syndrome polynomial; a second step of multiplying the first partial syndrome polynomial by index compensating coefficients to obtain a second partial syndrome polynomial; and a third step of repeating a product-sum operation using s pieces of codewords from the 0th codeword which is a first codeword in the codeword sequence, taken as an operation restart data, to a (s−1)-th codeword on the basis of the second partial syndrome polynomial and obtaining a syndrome polynomial of the codeword sequence. Therefore, the operation can be performed directly without deinterleaving the read data, whereby the high-speed syndrome operation can be realized.




According to a 2nd aspect of the present invention, in the error correction method of the 1st aspect, when the 0th codeword which is the first codeword of the codeword sequence is taken as the operation start data, the product-sum operation is repeatedly performed using n pieces of codewords from the 0th codeword to the (n−1)-th codeword to obtain the syndrome polynomial of the code sequence. Therefore, the high-speed syndrome operation can be performed.




According to a 3rd aspect of the present invention, in the error correction method of the 1st aspect, when the 0th codeword which is the first codeword in the code sequence is taken as the operation start data, the first and second steps are executed to obtain the syndrome polynomial of the codeword sequence. Therefore, the syndrome operation having a high parallelism can be executed.




An apparatus for error correction according to a 4th aspect of the present invention comprises syndrome operation means for repeating a cycle in which a syndrome operation is started taking an s-th codeword (1≦s≦n−1) in a codeword sequence i (i is an integer which is 0 or more) of a codeword length n (n is a positive integer) composed of 0th to (n−1)-th codewords as an operation start data, and when the syndrome operation for the s-th codeword is completed, a syndrome operation is performed for a polynomial which is obtained by adding a result of the syndrome operation and a next (s+1)-th codeword, n times, thereby obtaining a syndrome polynomial composed of n terms. The syndrome operation means comprises: addition means for adding a result of a syndrome operation of a p-th (1≦p≦n−1) cycle and a codeword of a (p+1)-th cycle to obtain a polynomial composed of(p+1) terms; first Galois field multiplication means for multiplying each term of the polynomial from the addition means by an element α


i


α


γ


of a Galois field to obtain a syndrome polynomial of the (p+1)-th cycle; operation result storage means for containing the syndrome polynomial of the (p+1)-th cycle from the first Galois field multiplication means as an operation interim result; second Galois field multiplication means for multiplying the operation interim result from the operation result storage means by index compensating coefficients, and outputting a partial syndrome; and index compensated output selecting means for selecting one of the operation interim result from the operation result storage means and the partial syndrome from the second Galois field multiplication means, and outputting selected one to the addition means as a result of a syndrome operation in the (p+1)-th cycle, and the index compensated output selecting means selects the partial syndrome from the second Galois field multiplication means in a (n−s)-th cycle in which a syndrome operation of a last codeword in the codeword sequence is performed. Therefore, the operation can be performed directly without deinterleaving the read data, whereby the high-speed syndrome operation can be executed.




According to a 5th aspect of the present invention, in the error correction apparatus of the 4th aspect, a plurality of the syndrome operation means are included, and codewords of plural codeword sequences are respectively input to the syndrome operation means for corresponding codeword sequences, to perform syndrome polynomial operations for the plural codeword sequences in parallel. Therefore, the syndrome operation realizing a high parallelism can be performed, whereby the operation can be executed at high speed.




According to a 6th aspect of the present invention, the error correction apparatus of the 4th or 5th aspect comprises counter means for generating an index compensation cycle signal of a codeword sequence which is subjected to index compensation first among the plural codeword sequences; and delay means for generating h pieces of delay signals corresponding to the number h (h is a positive integer) of the plural syndrome operation means, said delay signals being delayed with respect to the index compensation cycle signal successively by k cycles (k is a positive integer) based on the index compensation cycle signal, and the delay means outputs the delay signals to the index compensated output selecting means included in each of the syndrome operation means as selection signals, respectively, thereby executing the index compensation for the operation interim result in each of the syndrome operation means with delay of k cycles each. Therefore, the index compensation for each codeword sequence can be automatically performed and the syndrome operation can have a high parallelism, whereby the operation can be performed at high speed.











BRIEF DESCRIPTION OF THE DRAWINGS





FIG. 1

is a block diagram for explaining a structure of an error correction apparatus


50


according to the present invention.





FIG. 2

is a diagram for explaining an operation of accessing data in a syndrome operation for Q sequence according to the present invention.





FIG. 3

is a diagram for explaining the operation of accessing data in the syndrome operation for Q sequence according to the present invention.





FIG. 4

is a data format of one sector of the CD-ROM, which is represented on the basis of audio data.





FIG. 5

is a map diagram which is formed by selecting only less significant bytes from one sector of data.





FIG. 6

is a diagram for explaining the order in which a syndrome operation of Q sequence is performed.





FIG. 7

is a diagram for explaining the order in which the syndrome operation of Q sequence is performed.











DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS




[Embodiment 1]





FIG. 1

is a block diagram for explaining a structure of an error correction apparatus


50


according to the first embodiment of the present invention. The error correction apparatus


50


comprises a format interface


10


for protecting synchronization of input serial data


100


and executing descrambling processing for the serial data


100


, a buffer memory


31


containing processed information data from the format interface


10


, an error correction unit


20


for executing error correction for information data stored in the buffer memory


31


, a data transfer circuit


32


for transferring the data whose error is corrected to an external device, and a buffer memory manager


30


for arbitrating access requests from the format interface


10


, the error correction unit


20


and the data transfer circuit


32


to the buffer memory


31


and controlling writing onto the buffer memory


31


and reading from the buffer memory


31


.




The error correction unit


20


comprises first and second syndrome operation circuits


21




a


and


21




b


each repeatedly executing a product-sum operation for a codeword sequence i having a given codeword length n (n is a positive integer) composed of 0th to (n−1)-th codewords, and obtaining a syndrome polynomial for each codeword sequence, an error location calculation circuit


27


for calculating error locations in the respective codeword sequences from the syndrome operation results


202




a


and


202




b


of the first and second syndrome operation circuits


21




a


and


21




b


, and an error correction circuit


28


for obtaining error values of the respective codeword sequences from the error locations


205


from the error location calculation circuit


27


and the syndrome operation results


202




a


and


202




b


of the first and second syndrome operation circuits


21




a


and


21




b


, and executing error correction for each codeword sequence i.




The first and second syndrome operation circuits


21




a


and


21




b


each start the operation taking the s-th codeword s (1≦s≦n−1) halfway through the codeword sequence n as an operation start data. The first and second syndrome operation circuits


21




a


and


21




b


each comprise an addition circuit


22


for adding a syndrome polynomial which is obtained as a syndrome operation result


204


in the p-th (1≦p≦n−1) cycle and a codeword


208


of the (p+1)-th cycle in the code sequence i and obtaining a polynomial


200


composed of (p+1) terms, a first Galois field multiplication circuit


23


for multiplying each term of the polynomial


200


from the addition circuit


22


by the element α


i


α


γ


of the Galois field and obtaining a syndrome polynomial


201


of the (p+1)-th cycle, an operation result storage circuit


24


containing the syndrome polynomial


201


of the (p+1)-th cycle from the first Galois field multiplication circuit


23


as the operation interim result, a second Galois field multiplication circuit


25


for multiplying the operation interim results


202


from the operation result storage circuit


24


, i.e., the result


202




a


in the first syndrome operation circuit


21




a


and the result


202




b


in the second syndrome operation circuit


21




b


by index compensating coefficients, and outputting the obtained result as a partial syndrome, and an index compensated Output selecting circuit


26


for selecting one of the operation interim result


202


from the operation result storage circuit


24


and the partial syndrome


203


from the second Galois field multiplication circuit


25


, and outputting the selected one to the addition circuit


22


as a syndrome operation result of the (p+1)-th cycle. The index compensated output selecting circuit


26


is constructed so as to select the partial syndrome from the second Galois field multiplication circuit


25


in the (n−s)-th cycle when the syndrome operation for the last codeword in the codeword sequence is performed.




As described above, the error correction unit


20


comprises the two syndrome operation circuits


21


, and the codewords of two codeword sequences which are read from the buffer memory


31


are input to the corresponding syndrome operation circuits


21




a


and


21




b


, respectively, for each codeword sequence, and the syndrome polynomial operations for the two codeword sequences are performed in parallel while the index compensation of the operation interim result is properly performed halfway through the syndrome operation, as needed.




Further, though not shown in the figure, a microcontroller


40


for controlling the operations of the respective circuits in the error correction apparatus


50


is provided with a counter means for generating an index compensation cycle signal for a codeword sequence which is first subjected to the index compensation among the codeword sequences, and a delay means for generating “h” delay signals, which are delayed with respect to the index compensation cycle signal successively by “k” g cycles (“k” is a positive integer), i.e., 0×k cycles, 1×k cycles, . . . , (h−1)×k cycles, based on the index compensation cycle signal according to the number “h” (“h” is a positive integer) of syndrome operation circuits. This delay means outputs the delay signal to the index compensated output selecting circuit


26


included in each of the syndrome operation circuits


21




a


and


21




b


as the selection signal. Accordingly, the error correction unit


20


is constructed so that the index compensation of the syndrome polynomial in the respective syndrome operation circuits


21




a


and


21




b


are executed with the delay of k cycles each.




Next, the operation of the error correction apparatus


50


will be described. Initially, the serial data


100


is input from a Compact Disc-Digital Signal Processor (not shown) to the error correction apparatus


50


. The serial data


100


is subjected to the synchronization protection and the descrambling processing by the format interface


10


. Processed data


101


is stored in the buffer memory


31


via the buffer memory manager


30


. The buffer memory manager


30


arbitrates access requests from plural bus masters such as the format interface


10


, the error correction unit


20


and the data transfer circuit


32


to the buffer memory


31


, and controls writing/reading onto/from the buffer memory


31


.




Data


208


read from the buffer memory


31


is input to the error correction unit


20


, then the syndrome operation results


202




a


and


202




b


are obtained by the first syndrome operation circuit


21




a


and the second syndrome operation circuit


21




b


, and the obtained syndrome operation results are output to the error location calculation circuit


27


and the error correction circuit


28


. Here, the syndrome operation circuits


21




a


and


21




b


have the same structure. In each of the syndrome operation circuits, the syndrome operation for codeword sequences assigned to each circuit is performed.




To be specific, in the error correction unit


20


, two codeword sequence data


300


are read from the buffer memory


31


, then the codeword sequences are assigned to the first and second syndrome operation circuits


21




a


and


21




b


and input thereto via the buffer memory manager


30


, respectively. In each of the first and second syndrome operation circuits


21




a


and


21




b


, the syndrome polynomial operation is started successively from a codeword as the operation start data of the codeword sequence. These syndrome polynomial operations are performed in parallel by the first and second syndrome operation circuits


21




a


and


21




b.






In each of the syndrome operation circuits


2




1


, when the codeword as the operation start data of the codeword sequence is input, the input codeword is input to the first Galois field multiplication circuit


23


through the addition circuit


22


. In the first Galois field multiplication circuit


23


, the input codeword is multiplied by the element α


i


α


γ


of the Galois field and the multiplication result


201


is output to the operation result storage circuit


24


. In the operation result storage circuit


24


, the input multiplication result


201


is stored as the operation interim result. The operation interim result from the operation result storage circuit


24


is selected by the index compensated output selecting circuit


26


, and output to the addition circuit


22


as the syndrome operation result of the first cycle.




In the next second cycle, the syndrome operation result of the first cycle from the index compensated output selecting circuit


26


and a codeword in the second operation order are added by the addition circuit


22


and thereby the polynomial


200


composed of two terms is obtained. In the first Galois field multiplication circuit


23


, each of the terms of the polynomial


200


is multiplied by the element α


1


α


γ


of the Galois field and the syndrome polynomial


201


of the second cycle is obtained. The obtained syndrome polynomial


201


of the second cycle is stored in the operation result storage circuit


24


as the operation interim result. The operation interim result from the operation result storage circuit


24


is selected by the index compensated output selecting circuit


26


and output to the addition circuit


22


.




Similarly, in the third cycle, the syndrome operation result of the second cycle from the index compensated output selecting circuit


26


and a codeword in the third operation order are added by the addition circuit


22


and the polynomial


200


composed of three terms is obtained. In the first Galois field multiplication circuit


23


, each term of the polynomial


200


is multiplied by the element α


i


α


γ


of the Galois field and the syndrome polynomial


201


of the third cycle is obtained. The obtained syndrome polynomial


201


of the third cycle is stored in the operation result storage circuit


24


as the operation interim result.




The above cycle is repeated by each of the first and second syndrome operation circuits


21




a


and


21




b


up to the (n−1)-th codeword, i.e., the last codeword (n−1) in the codeword sequence from each operation start data.




Then, when the syndrome operation reaches the codeword (n−1) which is arranged last in the codeword sequence in the first or second syndrome operation circuit


21




a


or


21




b


, the index compensated output selecting circuit


26


selects the output from the second Galois field multiplication circuit


25


, i.e., the partial syndrome which is obtained by multiplying the operation interim result


202


from the operation result storage circuit


24


by the index compensating coefficients α


−n


, i.e:, α


−45


in this embodiment, and outputs the selected partial syndrome to the addition circuit


22


.




To be specific, when the syndrome operation is started taking the codeword s (1≦s≦n−1) halfway through the codeword sequence as the operation start data, the error occurs in the index of the obtained syndrome polynomial from the first term. Accordingly, the index compensation of the obtained syndrome polynomial is performed once in the (n−s)-th cycle halfway through the syndrome operation for the codeword sequence. In this index compensation, when the operation start data is a codeword which is arranged first in the codeword sequence, the index of the obtained syndrome polynomial has no error. However, when the index compensation is performed also in the case where the operation is started from the codeword which is arranged first in the codeword sequence, the commonality of processing with the other operation start data is attained. In addition, the compensation for the whole of the finally obtained syndrome polynomial is properly performed in the processing subsequent to the syndrome operation.




In the addition circuit


22


, the input partial syndrome and the codeword of the next cycle, i.e., the codeword which is arranged at the head of tile codeword sequence are added, and the addition result


200


is input to the first Galois field multiplication circuit


23


. The addition result


200


is multiplied by the element α


i





γ


of the Galois field by the first Galois field multiplication circuit


23


, and the multiplication result


201


is stored in the operation result storage circuit


24


as the operation interim result. The operation interim result from tile operation result storage circuit


24


is selected by the index compensated output selecting circuit


26


, input to the addition circuit


22


, and added to the codeword of the next cycle by the addition circuit


22


. Subsequently, the above cycle is repeated until the syndrome operation for the assigned code sequences i is completed.




When the syndrome operations for the respectively assigned codewords i are completed in the first and second syndrome operation circuits


21




a


and


21




b


, the obtained syndrome operation results


202




a


and


202




b


are stored in the operation result storage circuits


24


, respectively. Thereby, the syndrome operations can be performed in parallel.




In the error location calculation circuit


27


, the error locations


205


are obtained from the syndrome operation results


202




a


and


202




b


which are input from the respective operation result storage circuits


24


in the first and second syndrome operation circuits


21




a


and


21




b


, respectively, and output to the error correction circuit


28


.




In the error correction circuit


28


, the error values are obtained from the error locations


205


which are output by the error location calculation circuit


27


and the syndrome operation results


202




a


and


202




b


, respectively. When there is a correctable error, error data


206


is read out and subjected to the error correction. Data


207


which has been subjected to the error correction is written again to the buffer memory


31


.




Data


300


which has been subjected to the error correction is read from the buffer memory


31


, data


301


is input to the data transfer circuit


32


via the buffer memory manager


30


, and transfer data


302


are output from the error correction apparatus


50


to the external device such as the host computer.




The overall control for these operations is performed on the basis of control signal


400


output by the microcontroller


40


.




Next, a detailed description is given of a series of arithmetic processing which is performed by the error correction unit


20


.




The syndrome operation results


202




a


and


202




b


obtained by the first and second syndrome operation circuits


21




a


and


21




b


are given by the following polynomials (Expression 1) to (Expression 6):






i
=

0


{








S
0

=







D
0

×

α
0


+


D
44

×

α
0


+


D
88

×

α
0


+














D
132

×

α
0


+


D
176

×

α
0


+

+


D
220

×

α
0


+

+














D
686

×

α
0


+


D
730

×

α
0


+


D
1118

×

α
0


+













D
1144

×

α
0









(

Expression





1

)










S
1

=







D
0

×

α
44


+


D
44

×

α
43


+


D
88

×

α
42


+














D
132

×

α
41


+


D
176

×

α
40


+


D
220

×

α
39


+

+














D
686

×

α
3


+


D
730

×

α
2


+


D
1118

×

α
1


+













D
1144

×

α
0









(

Expression





2

)



















i
=

1


{








S
0

=







D
43

×

α
0


+


D
87

×

α
0


+


D
131

×

α
0


+














D
175

×

α
0


+


D
219

×

α
0


+


D
263

×

α
0


+

+














D
729

×

α
0


+


D
773

×

α
0


+


D
1119

×

α
0


+













D
1145

×

α
0









(

Expression





3

)










S
1

=







D
43

×

α
44


+


D
87

×

α
43


+


D
131

×

α
42


+














D
175

×

α
41


+


D
219

×

α
40


+


D
263

×














α
39

+

+


D
729

×

α
3


+


D
773

×

α
2


+














D
1119

×

α
1


+


D
1145

×

α
0










(

Expression





4

)



















i
=

25


{








S
0

=







D
1075

×

α
0


+


D
1

×

α
0


+


D
45

×

α
0


+














D
89

×

α
0


+


D
133

×

α
0


+


D
177

×

α
0


+

+














D
643

×

α
0


+


D
687

×

α
0


+


D
1145

×

α
0


+













D
1169

×

α
0









(

Expression





5

)










S
1

=







D
1075

×

α
44


+


D
1

×

α
43


+


D
45

×

α
42


+














D
89

×

α
41


+


D
133

×

α
40


+


D
177

×

α
39


+

+














D
643

×

α
3


+


D
687

×

α
2


+


D
1143

×

α
1


+













D
1169

×

α
0









(

Expression





6

)
















In the case of CD-ROM, two syndromes S


0


and S


1


are defined for each codeword sequence. S


0


is obtained by only adding received data, i.e., only obtaining an exclusive-OR of the received data, because the element α


0


of the Galois field is 1. Since the addition result does not depend on the addition order, this is not described here and the description is given of only S


1


particularly with regard to the case where the syndrome operation on the least significant plane is performed in parallel in two codeword sequences.




With reference to

FIGS. 6 and 7

, assuming that the syndrome operations are performed for the codeword sequences, of i=0 and i=25 which are read from the buffer memory


31


and the codeword sequence of i=0 is subjected to the syndrome operation by the first syndrome operation circuit


21




a


and the codeword sequence of i=25 is subjected to the syndrome operation by the second syndrome operation circuit


21




b


respectively.

FIGS. 2 and 3

show

FIG. 4

in more detail and, more particularly, these figures show the operation order in which the codeword sequences of i=0 and i=25 are subjected to the syndrome operations in parallel.




With reference to

FIG. 2

, “0, 1” is read as the data


208


in the first cycle, and then “44, 45” is read in the following second cycle. To the first syndrome operation circuit


21




a


, “0” is input and then “144” is input subsequent to “0”. To the second syndrome operation circuit


21




b


, “1” is input and then “45” is input subsequent to “1”. Here, “0” corresponds to “0000L” and “1” corresponds to “0001L” shown in

FIG. 4

or


5


. In addition, “44” corresponds to “0044L” and “45” corresponds to “0045L”.




It can be easily seen from

FIGS. 2 and 3

that 2 byte of data at contiguous addresses are read except for cases where Q parity is included like in the case of “730, 1143”, “1118, 1169” and “1144, 1075”. In addition, “26, 27” are read out subsequent to “1100, 1101” and thereby it can be seen that wrapping occurs because of the residue arithmetic




In passing, as seen in

FIG. 6

, the first (j=0) data is initially read as the operation start data s in the case of the codeword sequence i=0 while the second (j=1) data is read in the case of the codeword sequence i=25. The operations are started from the data of j=0 in the codeword sequence of i=0 and from the data of j=1 in the codeword sequence of i=25, respectively.




The multiplication for the index compensation is performed for the data


202


after the operation is executed for the last data in the codeword sequence (j=44), for example data “1169” in the 44th cycle in the case of the codeword sequence of i=25. This multiplication for the index compensation is performed in the cycles varying with the codeword sequence. In general, the index compensation cycle is given by








c=n−s


  (Expression 14)






Here, c is the index compensation cycle, i is the codeword length, and s is the operation start data.




In the case of code sequence of i=0, the operation is started from the first data (j=0) and essentially the index compensation cycle is not required. However, when it is generalized that the index compensation is performed in the 45th cycle also in the codeword sequence of i=0 as shown in (Expression 14), the index compensation cycle differs by one cycle between adjacent codeword sequences for which the parallel operations are performed. Utilizing this property, when the codeword sequences of i=0 and i=25 are subjected to the operations in parallel, “44” is set in an index compensation cycle counter (not shown) provided in the microcontroller


40


in agreement with the codeword sequence of i=25. Further, a signal which is delayed based on the index compensation cycle signal by one cycle is generated by the delay circuit. Then, the index compensations are executed in the 45th cycle using the index compensation cycle signal in the first syndrome operation circuit


21




a


which subjects the code sequence of i=0 to the operation, and in the 44th cycle using the signal which is delayed with respect to the index compensation cycle signal by one cycle in the second syndrome operation circuit


21




b


which subjects the code sequence of i=25 to the operation, respectively.




When the syndrome operation is executed in this way, the polynomials as shown in (Expression 7), (Expression 8) and (Expression 9) among the following expressions are obtained at the end of the operation, and stored in the operation result storage circuit


24


.






i
=

0


{








S
1

=





(

(






(



(



D
0

×

α
1


+

D
44


)

×

α
1


+

D
88


)


×

α
1


+





















D
132

)

×

α
1


+

D
176


)

×

α
1


+

D
220


)

+

α
1

+

+



















D
686

)

×

α
1


+

D
730


)

×

α
1


+

D
1118


)

×

α
1


+

D
1144







=







D
0

×

α
44


+


D
44

×

α
43


+


D
88

×

α
42


+


D
132

×















α
41

×

D
176

×

α
40


+


D
220

×

α
39


+

+


D
686

×














α
3

+


D
730

×

α
2


+


D
1118

×

α
1


+


D
1144

×

α
0










(

Expression





2

)










S
1


=





(

(






(



(



D
0

×

α
2


+

D
44


)

×

α
1


+

D
88


)


×

α
1


+





















D
132

)

×

α
1


+

D
176


)

×

α
1


+

D
220


)

+

α
1

+

+



















D
686

)

×

α
1


+

D
730


)

×

α
1


+

D
1118


)

×

α
1


+













D
1144

×


α

-
45


_




index





compensation













(

It





is





for





commonality





of





processing





and













essentially





not





required

)






=







D
0

×

α

-
1



+


D
44

×

α

-
2



+


D
88

×

α

-
3



+


D
132

×















α

-
4


×

D
176

×

α

-
5



+


D
220

×

α

-
6



+

+


D
686

×














α

-
42


+


D
730

×

α

-
43



+


D
1118

×

α

-
44



+


D
1144

×













α

-
45









(

Expression





7

)







S
1

=


S
1


×

α
45






(

Expression





10

)
















codeword length n: 45




operation start data s: 0




compensation cycle c=n−s: 45




index of coefficient by which the whole is multiplied index=−(n−s): −45






i
=

0


{








S
1

=





(

(






(



(



D
43

×

α
1


+

D
87


)

×

α
1


+

D
132


)


×

α
1


+





















D
175

)

×

α
1


+

D
219


)

×

α
1


+

D
263


)

+

α
2

+

+



















D
729

)

×

α
1


+

D
773


)

×

α
1


+

D
1119


)

×

α
1


+

D
1145







=







D
43

×

α
44


+


D
87

×

α
43


+


D
131

×

α
42


+


D
175

×















α
41

×

D
219

×

α
40


+


D
263

×

α
39


+

+


D
729

×














α
3

+


D
773

×

α
2


+


D
1119

×

α
1


+


D
1145

×

α
0










(

Expression





4

)










S
1


=





(

(






(



(



D
25

×

α
1


+

D
69


)

×

α
1


+

D
113


)


×

α
1


+






















D
157

)

×

α
1


+

D
201


)

×

α
1


+

D
245


)

×

α
1


+

+





















D
1119

)

×

α
1


+

D
1145


)

×
α

)

1

×



α

-
45


_




+

D
43


)

×














α
1

+

+

D
1055


)

×

α
1


+












D
1099





)






index





compensation






=







D
43

×

α
24


+


D
87

×

α
23


+


D
131

×

α
22


+


D
175

×















α
21

×

D
219

×

α
20


+


D
263

×

α
19


+

+


D
729

×














α

-
17


+


D
773

×

α

-
18



+


D
1119

×

α

-
19



+


D
1145

×













α

-
20









(

Expression





8

)







S
1

=


S
1


×

α
20






(

Expression





11

)
















codeword length n: 45




operation start data s: 25




compensation cycle c=n−s




index of coefficient by which the whole is multiplied index=−(n−s): −20






i
=

25


{








S
1

=





(

(


(



(



D
1075

×

α
1


+

D
1


)

×

α
1


+























D
45

)

×

α
1


+

D
89


)

×

α
1


+

D
133


)

×

α
1


+















D
177

)

+

α
1

+

+

D
643


)

×

α
1


+
















D
687

)

×

α
1


+

D
1143


)

×

α
1


+

D
1169







=







D
1075

×

α
44


+


D
1

×

α
43


+


D
45

×

α
42


+














D
89

×

α
41

×

D
133

×

α
40


+


D
177

×














α
39

+

+


D
643

×

α
3


+


D
687

×

α
2


+














D
1143

×

α
1


+


D
1169

×

α
0










(

Expression





6

)










S
1


=





(

(






(



(



D
1

×

α
1


+

D
45


)

×

α
1


+

D
89


)


×

α
1


+





















D
133

)

×

α
1


+

D
177


)

×

α
1


+

+

D
643


)

×



















α
1

+

D
687


)

×

α
1


+

D
1143


)

×

α
1


+

D
1169


)

×













α
)

1

×



α

-
45


_




+












D
1075






index











compensation







=







D
1075

×

α
0


+


D
1

×

α

-
1



+


D
45

×














α

-
2


+


D
89

×

α

-
3


×

D
133

×

α

-
4



+


D
177

×














α

-
5


+

+


D
643

×

α

-
41



+


D
687

×

α

-
42



+














D
1143

×

α

-
43



+


D
1169

×

α

-
44











(

Expression





9

)







S
1

=


S
1


×

α
44






(

Expression





12

)
















codeword length n: 45




operation start data s: 1




compensation cycle c=n−s: 44




index of coefficient by which the whole is multiplied index=−(n−s): −44




When these expressions are compared with the syndrome (Expression 2), (Expression 4) and (Expression 6) which are to be obtained, it can be seen that the whole is multiplied by the coefficients, respectively, as shown in (Expression 10), (Expression 11) and (Expression 12). When the index part of the coefficients α


index


by which the whole is multiplied is generally shown,






index=−(


n−s


)  (Expression 15)






Therefore, when the coefficients by which the whole of the syndrome polynomial is multiplied are compensated, the syndrome polynomial which is to be obtained is obtained. Here, the coefficients by which the whole of the syndrome polynomial is multiplied can be compensated as needed during the subsequent processing, for example, during the processing for obtaining the error location.




As described above, in the error correction apparatus according to the first embodiment, each of the syndrome operation circuits is provided with the second Galois field multiplication circuit for the index compensation, to perform the index compensation when required during the operation. Therefore, the syndrome operation can be performed without deinterleaving data of Q sequence. Accordingly, the syndrome operation circuit which corresponds to the parallelism, i.e., the number of bytes of data to be read can be provided, whereby the operation can be directly performed without deinterleaving the read data. Consequently, the syndrome operation can be executed at high speed.




In addition, only when the data which has been read from the buffer memory is supplied to the syndrome operation circuit without being deinterleaved, the syndrome operations having a high parallelism can be executed. Therefore, useless accesses to the buffer memory which are generated to deinterleave the data are dispensed with and the power consumption can be reduced, as well as the reduction in performance due to the waiting which occurs in the syndrome operation circuit while deinterleaving the data can be avoided. Further, when the parallelism of the syndrome operation circuits is decided according to the required performance, the error correction apparatus which has an optimum circuit scale and a high error correction performance can be provided.




While the description is given of only the syndrome S


1


, the syndromes S


0


and S


1


can be also obtained in parallel. However, as for S


0


, since the coefficients are 1, the first Galois field multiplication circuit


23


is not required and thereby the operation result does not depend on the operation order. Therefore, it is unnecessary to perform the index compensation, and accordingly the second Galois field multiplication circuit


25


and the index compensated output selecting circuit


26


are dispensed with. That is, the syndrome S


0


can be obtained only by the addition circuit


22


and the operation result storage circuit


24


.




In this first embodiment, the 2-byte parallel operation, i.e., the parallel operation for two codeword sequences is described. However, when the number of bytes of data to be read is increased more and the corresponding number of syndrome operation circuits are provided, the high-speed processing according to the number of bytes of the data to be read can be attained. In addition, while the syndrome operation for the Q sequence on the least significant plane is described here for the simplicity, the operation can be performed similarly for the most significant plane. Further, since the buffer memory contains the data of most significant plane and the least significant plane contiguously, when the data are read in parallel the parallel operation for the codeword sequences on the most significant plane and the least significant plane can be easily performed.




In addition, while the index compensation cycle counter is provided in the microcontroller


40


, it can be provided in the error correction unit


20


.



Claims
  • 1. A method for error correction comprising:repeating a product-sum operation using n−s codewords from an s-th codeword halfway through a codeword sequence of a codeword length n, composed of 0th to (n−1)-th codewords, which is taken as an operation start data, to the (n−1)-th codeword, and obtaining a first partial syndrome polynomial; multiplying the first partial syndrome polynomial by index compensating coefficients to obtain a second partial syndrome polynomial; and repeating a product-sum operation using s pieces of codewords from the 0th codeword which is a first codeword in the codeword sequence, taken as an operation restart data, to a (s−1)-th codeword on the basis of the second partial syndrome polynomial and obtaining a syndrome polynomial of the code sequence, wherein 1≦s≦n−1, and wherein n is a positive integer.
  • 2. The error correction method of claim 1, whereinwhen the 0th codeword, which is the first codeword of the codeword sequence, is taken as the operation start data, the product-sum operation is repeatedly performed using n pieces of codewords from the 0th codeword to the (n−1)-th codeword to obtain the syndrome polynomial of the codeword sequence.
  • 3. The error correction method of claim 1, whereinwhen the 0th codeword, which is the first codeword in the codeword sequence, is taken as the operation start data, said repeating, a product-sum operation and said multiplying the first partial syndrome polynomial are executed to obtain the syndrome polynomial of the codeword sequence.
  • 4. An apparatus for error correction comprising syndrome operation means for repeating a cycle in which a syndrome operation is started taking an s-th codeword in a codeword sequence i of a codeword length n composed of 0th to (n−1)-th codewords as an operation start data, and when the syndrome operation for the s-th codeword is completed, a syndrome operation is performed for a polynomial which is obtained by adding a result of the syndrome operation and a next (s+1)-th codeword, n times, thereby obtaining a syndrome polynomial composed of n terms, whereinthe syndrome operation means comprise: addition means for adding a result of a syndrome operation of a p-th cycle and a codeword of a (p+1)-th cycle to obtain a polynomial composed of (p+1) terms; first Galois field multiplication means for multiplying each term of the polynomial from said addition means by an element αi αγ of a Galois field to obtain a syndrome polynomial of the (p+1)-th cycle; operation result storage means for containing the syndrome polynomial of the (p+1)-th cycle from said first Galois field multiplication means as an operation interim result; second Galois field multiplication means for multiplying the operation interim result from said the operation result storage means by index compensating coefficients, and outputting a partial syndrome; and index compensated output selecting means for selecting one of the operation interim result from said operation result storage means and the partial syndrome from said second Galois field multiplication means, and outputting selected one to said addition means as a result of a syndrome operation in the (p+1)-th cycle, wherein said index compensated output selecting means is operable to select the partial syndrome from said second Galois field multiplication means in a (n−s)-th cycle in which a syndrome operation of a last codeword in the codeword sequence is performed, wherein 1≦s≦n−1, wherein i is an integer that is 0 or more, wherein n is a positive integer, and wherein 1≦p≦n−1.
  • 5. The error correction apparatus of claim 4, whereina plurality of said syndrome operation means are included, and codewords of plural codeword sequences are respectively input to the syndrome operation means for corresponding codeword sequences, to perform parallel syndrome polynomial operations for the plural codeword sequences.
  • 6. The error correction apparatus of claim 5, further comprising:counter means for generating an index compensation cycle signal of a codeword sequence which is subjected to index compensation first among the plural codeword sequences; and delay means for generating h pieces of delay signals corresponding to the number h of the plural syndrome operation means, the delay signals being delayed with respect to the index compensation cycle signal successively by k cycles based on the index compensation cycle signal, wherein said delay means is operable to output the delay signals to said index compensated output selecting means included in each of said syndrome operation means as selection signals, respectively, thereby executing the index compensation for the operation interim result in each of said syndrome operation means with a delay of k cycles each, and wherein h and k are positive integers.
  • 7. The error correction apparatus of claim 4, further comprising:counter means for generating an index compensation cycle signal of a codeword sequence which is subjected to index compensation first among the plural codeword sequences; and delay means for generating h pieces of delay signals corresponding to the number h of the plural syndrome operation means, the delay signals being delayed with respect to the index compensation cycle signal successively by k cycles based on the index compensation cycle signal, wherein said delay means is operable to output the delay signals to said index compensated output selecting means included in each of said syndrome operation means as selection signals, respectively, thereby executing the index compensation for the operation interim result in each of said syndrome operation means with a delay of k cycles each, and wherein h and k are positive integers.
Priority Claims (1)
Number Date Country Kind
11-302622 Oct 1999 JP
US Referenced Citations (6)
Number Name Date Kind
5384786 Dudley et al. Jan 1995 A
5490260 Miller et al. Feb 1996 A
5577054 Pharris Nov 1996 A
5642366 Lee et al. Jun 1997 A
5818854 Meyer Oct 1998 A
5912905 Sakai et al. Jun 1999 A
Foreign Referenced Citations (2)
Number Date Country
5-12814 Jan 1993 JP
10-107648 Apr 1998 JP
Non-Patent Literature Citations (1)
Entry
IBM Technical Disclosure Bulletin NN7409974, Error Correction Apparatus, Sep. 1974.