Abstract:
A coding circuit that includes a buffer manager and a coding block is provided for generating product codes for parity checks as error correction code and adding the product codes to digital data to be recorded in a record medium.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a Rule 1.53(b) continuation of application Ser. No. 10/742,529, filed Dec. 18, 2003 (now U.S. Pat. No. 7,406,654), claiming the priority under 35 U.S.C. §119 of Japanese Patent Application No. 2002-374903 filed with the Japanese Patent Office on Dec. 25, 2002. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention generally relates to encode-data processors, and particularly relates to an encode-data processor used in an optical disk drive which records data on a DVD+RW-type optical disk. 
     2. Description of the Related Art 
     Conventional technologies relating to coding methods and coding circuits for use in the recording of DVD disks can be classified into two categories. One relates to the encoding of data by use of an ECC correction circuit that is used for decoding, as described in Patent Document 1. The other relates to the use of a coding circuit dedicated for the encoding purpose, as described in Patent Document 2. 
     The former has an advantage in that the same circuit as an ECC correction circuit for use in decoding can be utilized. Since such circuit is not optimized for data encoding purposes, difficulties are in abundance in the attainment of higher speed. 
     The latter can relatively easily attain higher speed because of the use of a coding circuit dedicated for encoding. It is not known, however, what circuit construction is suitable for such a coding circuit.
     [Patent Document 1] Japanese Patent Application Publication No. 2001-319431   [Patent Document 2] Japanese Patent Application Publication No. 2001-156649   

     In recent years, there has been an increasing demand for higher recording speed with respect to DVD disks. Accordingly, there is a need for a coding circuit that is fast and efficient in recording data on a DVD disk. 
     SUMMARY 
     In an aspect of this disclosure, there is provided a coding circuit for generating an error correction code from digital data that is to be recorded in a record medium. The coding circuit includes a temporal storage memory which stores the digital data, a buffer manager which successively reads the digital data m bytes at a time from the temporal storage memory in a main scan direction and in a sub-scan direction, a PI parity unit which processes the digital data m bytes at a time as the m bytes are supplied from the buffer manager so as to generate a PI sequence parity based on the digital data for one row extending in the main scan direction, and a PO parity unit which includes m operation units, each of which processes a corresponding one byte of the digital data as m bytes of the digital data are supplied from the buffer manager so as to generate a PO sequence parity based on the digital data for one column extending in the sub-scan direction. 
     According to another aspect of this disclosure, a coding circuit for coding digital data that is to be recorded in a record medium includes a temporal storage memory which stores original data to be recorded, intermediate processing results, and final processing results, an LED unit which processes all m bytes of an ID at a time to generate an n-byte ID error detection code, an EDC unit which processes the original data m bytes at a time to generate a data error detection code, a scrambling unit which scrambles the original data m bytes at a time, a PI parity unit which processes the ID, the ID error detection code, the data error detection code, and the scrambled original data m bytes at a time to generate a PI parity, and a PO parity unit which includes m operation units, each of which processes the intermediate processing results one byte at a time to generate a PO parity, wherein the original data is read from the temporal storage memory in a main scan direction for attaching of the ID, for attaching of the ID error detection code, for attaching of the data error detection code, for scrambling, and for attaching of the PI parity, followed by storage in the temporal storage memory as the intermediate processing results, until an end of an ECC block is encountered, and wherein the intermediate processing results are read from the temporal storage memory in a sub-can direction for attaching of the PO parity, followed by storage in the temporal storage memory as the final processing results, until the end of the ECC block is encountered. 
     According to another aspect, m is four, and n is two. 
     According to another aspect, the aforementioned coding circuit further includes a FIFO which is situated in front of the temporal storage memory for arranging the intermediate processing results for storage in the temporal storage memory and for arranging the final processing results for storage in the temporal storage memory, the FIFO serving as a 16-stage shift register with a 4-byte register at each stage when storing the intermediate processing results, the PI parity being loaded 4 bytes at a time to a predetermined intermediate stage of the shift register, the PO parity being loaded 4 bytes at a time to the shift register. 
     According to another aspect, the aforementioned coding circuit further includes a first counter which is capable of switching between counting from 0 to 15, counting from 0 to 10, counting from 0 to 13, a second counter which counts from 0 to 5, and counts up in response to a carry from the first counter, a third counter which counts from 0 to 11, and counts up in response to a carry from the second counter, a fourth counter which counts from 0 to 15, and counts up in response to a carry from the third counter, wherein all output bits of the fourth counter, bit 2  and bit 1  of output bits of the second counter, all output bits of the third counter, and all output bits of the first counter are arranged in an order named for use as an address for the temporal storage memory, and bit 0  of output bits of the second counter is used to indicate either “write” or “read” when data is read from and written in the temporal storage memory in the main scan direction, a fifth counter which is capable of switching between counting from 0 to 15 and counting from 0 to 11, a sixth counter which counts from 0 to 16, and counts up in response to a carry from the fifth counter, a seventh counter which is capable of switching between counting from 0 to 15 and counting from 0 to 13, and counts up in response to a carry from the sixth counter, and an eighth counter which counts from 0 to 2, and counts up in response to a carry from the seventh counter, wherein all output bits of the sixth counter, all output bits of the eighth counter, all output bits of the fifth counter, and all output bits of the seventh counter are arranged in an order named for use as an address for the temporal storage memory, and bit 4  of output bits of the sixth counter is used to indicate either “write” or “read” when data is read from and written in the temporal storage memory in the sub-scan direction. 
     According to another aspect, the LED unit includes an n-byte register, and a logic circuit that completes a logic operation thereof with only a device delay. 
     According to another aspect, the EDC unit includes an m-byte register, and a logic circuit that completes a logic operation thereof with only a device delay. 
     According to another aspect, the scrambling unit includes an m-byte register, and a logic circuit that completes a logic operation thereof with only a device delay. 
     According to another aspect, the PI parity unit includes a 10-byte register, and a logic circuit that completes a logic operation thereof with only a device delay. 
     According to another aspect, the PO parity unit includes a 16-byte register, and a logic circuit that completes a logic operation thereof with only a device delay. 
     The speed of rewritable DVD drives has been increasing every year. In order to achieve such increase, a coding circuit capable of high speed processing is necessary. A coding circuit capable of high speed processing can be realized by use of a logic circuit that ideally completes its logic operation with only a device delay. In the case of coding of the DVD data format, however, a logic circuit becomes a large scale, making it not possible to realize such ideal speed. The coding circuit of the invention is directed to an optimal construction for parallel computation in order to encode data of the DVD data format. This coding circuit performs parallel computation. Accordingly, a high-speed coding circuit for an optical disk drive is provided at a low cost. 
     For example, the coding circuit of the invention may process data 4 bytes at a time through parallel computation. Such a coding circuit successfully achieves 4 times faster speed than a conventional coding circuit which processes data one byte at a time. 
     Even the coding circuit that processes data through parallel computation needs a memory that provides a temporal storage for computation results. A conventional DRAM may be used for this memory to save the cost. A conventional DRAM is accessed by inputting a RAS address and a CAS address. When the PO sequence parity is computed, access addresses are not continuous, thereby resulting in an increased time for data access and thus a drop in the processing speed of a coding process. 
     The coding circuit of the invention includes an address generating circuit comprised of the counters for generating an address for the temporal storage memory. With this circuit, data access remains on the same RAS address even when the PO sequence parity is computed. This makes it possible to use an accessing scheme that requires the inputting of only CAS addresses (typically referred to as a burst access), thereby avoiding the drawback of reduced processing speed. 
     The aforementioned and other aspects, features and advantages would be better understood from the following detailed description when read in conjunction with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is an illustrative drawing showing the format of data for one sector; 
         FIG. 2  is an illustrative drawing showing the format of an ECC block; 
         FIG. 3  is a block diagram showing an example of the construction of a coding circuit according to the invention; 
         FIG. 4  is a block diagram showing an example of the construction of a coding circuit according to the invention; 
         FIG. 5  is a diagram showing a table that provides the vector representation of relationship between i and α[I]; 
         FIG. 6  is a diagram showing a table that provides the vector representation of relationship between i and log α[I]; 
         FIG. 7  is a diagram showing a logic circuit of mulfg; 
         FIG. 8  is a block diagram showing the construction of an EDC; 
         FIG. 9  is a diagram showing a logic circuit that achieves an EDC operation of  FIG. 8 ; 
         FIG. 10  is a diagram showing the construction of a feedback register; 
         FIG. 11  is a block diagram showing the construction of a scrambling circuit; 
         FIG. 12  is a diagram showing a logic circuit that achieves a 4-byte scrambling data generating circuit of  FIG. 11 ; 
         FIG. 13  is a block diagram showing the construction of a PI parity unit; 
         FIG. 14  is a diagram showing a logic circuit that achieves a 4-byte PI parity operation unit of  FIG. 13 ; 
         FIG. 15  is a block diagram showing the construction of a PO parity unit; 
         FIG. 16  is a diagram showing a logic circuit that achieves a 1-byte PO parity operation unit of  FIG. 15 ; 
         FIG. 17  is a circuit diagram showing an example of the construction of a FIFO; 
         FIG. 18  is a circuit diagram showing the construction of an address generating circuit that supplies address signals to a temporal storage memory during a PI sequence operation; 
         FIG. 19  is a circuit diagram showing the construction of an address generating circuit that supplies address signals to the temporal storage memory during a PO sequence operation; 
         FIG. 20  is a diagram showing part of a data sector in the temporal storage memory; 
         FIG. 21  is a diagram showing part of a data sector in the temporal storage memory; 
         FIG. 22  is a diagram showing part of a data sector in the temporal storage memory; 
         FIG. 23  is a diagram showing part of a data sector in the temporal storage memory; 
         FIG. 24  is a diagram showing part of a data sector in the temporal storage memory; and 
         FIG. 25  is a diagram showing part of a data sector in the temporal storage memory. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In the following, embodiments of the present invention will be described with reference to the accompanying drawings. 
     In the following, a description will be given of a data format used for DVD. Main data sent through a host computer interface is 2048 bytes per sector. As shown in  FIG. 1 , one sector data is comprised of 2064 bytes, including the main data, 4-byte ID, 2-byte IED, 6-byte CPR_MAI, and 4-byte EDC. ID (identification data) is comprised of 8-bit sector information and 24-bit address information. IED (ID error detection) is an error detection code for the ID. CPR_MAI (copyright management information) is comprised of 6 bytes, the detail of which will be omitted here. EDC (error detection code) is an error detection code with respect to data of one sector. The main data is subjected to scrambling. 
     The 2064-byte data per sector as described above are put together for 16 sectors, and a parity is added for the purpose of ECC (error correction). The parity is Reed-Solomon product codes, and is comprised of 10 bytes for the inner code sequence (PI sequence) and 16 bytes for the outer codes sequence (PO sequence). 
     With reference to  FIG. 2 , 2064-byte data per sector is divided into 172 bytes×12 rows, and a 10-byte PI parity is attached to the 172-byte data. A total of 16 sectors make up 192 rows. A 16-byte PO parity is attached to 192 bytes extending in the column direction. Since data is processed on 16-sector-by-16-sector basis, this 16-sector block is referred to as an ECC block. 
     In the following, a circuit construction according to the invention will be described.  FIG. 3  is a block diagram showing an example of the construction of a coding circuit according to the invention. Main data supplied through a host computer interface  10  is arbitrated by a buffer manager  11  for storage in a temporal storage memory  12 . A coding block  13  starts data encoding by reading the main data from the temporal storage memory  12  in the order of the PI sequence (i.e., in the main scan direction). ID, IED, CPR_MAI, EDC, and the PI parity are then attached to the retrieved data, followed by further storage in the temporal storage memory  12 . After the PI sequence processing is completed for the 192 rows of one ECC block, the coding block  13  reads the data in the order of the PO sequence (i.e., in the sub-scan direction), followed by storage of the PO parity in the temporal storage memory  12 . When the PO sequence processing is completed for the 182 columns of the ECC block, the encoding of data for one ECC block comes to an end. The encoded data is 8-16 modulated by a modulation unit  15  for writing of serial data in a disk at proper write timing. The modulation unit  15  is controlled by a controller  16 , which attends to DVD encoding and start/stop control based on signals supplied from an ADIP reproduction unit  17  and a Wck PLL unit  18 . The modulation unit  15  and the control unit  16  together make up a modulation block. 
       FIG. 4  is a block diagram showing an example of the construction of a coding circuit according to the invention. The example of  FIG. 4  shows a case in which a data bus connected to the buffer manager  11  is 4 bytes (32 bits). The temporal storage memory (not shown) is implemented by use of a DRAM such as an SDRAM (synchronous dynamic random access memory) or a DDR SDRAM (double data rate SDRAM). In general, a DRAM data bus has a 1-byte (8-bit) configuration or a 2-byte (16-bit) configuration. It is relatively easy to have an interface unit for an SDRAM that operates at double the system clock frequency, or to use a DDR SDRAM for accessing data with double the bus width of a DRAM. 
     A 8-bit register  20  for generating sector information and a 24-bit counter  21  for generating address information generates 4-byte ID. The 24-bit counter  21  allows presetting, and increments its count by increments of one sector. 
     An IED  22  is an arithmetic operation unit that receives the 4-type ID and generates a 2-byte error detection code. 
     A 16-bit register  23  and a 32-bit register  24  together generate 6-byte CPR_MAI. 
     A multiplexer  25  switches between the 4-byte ID, 4 bytes comprised of the 2-byte output of the IED  22  and 2 bytes of CPR_MAI, the 4 remaining bytes of CPR_MAI, and 4-byte data from the temporal storage memory  12 . 
     An EDC  26  is an arithmetic operation unit that successively receives the 4-byte output of the multiplexer  25  and generates an error detection code upon the inputting of data for one sector. 
     A scrambling circuit  27  successively receives the main data portion of the 4-byte output of the multiplexer  25 , and successively outputs 4-byte scrambled data. 
     A multiplexer  28  switches between the 4-byte output of the multiplexer  25 , the 4-byte output of the EDC  26 , and the 4-byte scrambled data supplied from the scrambling circuit  27 . The output of the multiplexer  28  is supplied to a FIFO  29  4 bytes by 4 bytes. 
     A PI parity unit  30  is an arithmetic operation unit that successively receives the 4-byte output of the multiplexer  28  and generates a 10-byte PI sequence parity upon the inputting of data for one row (172 bytes). In this embodiment, all the 10 bytes of the PI sequence parity are supplied to the FIFO  29  at once. 
     A PO parity unit  31  is an arithmetic operation unit that successively receives data from the temporal storage memory  12  and generates a 16-byte PO sequence parity upon the inputting of data for one column (192 bytes). In this embodiment, the PO sequence processing is performed for four columns at once, and the PO sequence parity for four columns, i.e., a 64-byte PO sequence parity, is output. 
     The FIFO  29  may be a shift register that is comprised of 16 stages each for 4-byte storage, i.e., for storage of a total of 64 bytes, during the PI sequence processing. During the PO sequence processing, the 64 bytes of the PO sequence parity are output at once, so that the FIFO  29  may be a shift register that is capable of 64-byte parallel input. 
     A control circuit  32  supplies selection signals to each multiplexer, control signals to each arithmetic operation unit and the FIFO, and address signals as well as read/write signals to the temporal storage memory  12 . Details will be described later. 
     In the following, the IED unit will be described. The 4 bytes of the input are denoted as C0, C1, C2, and C3, and the 2 bytes of the output are denoted as C4 and C5. Then, the IED operation is defined as follows. 
                     IED   ⁡     (   X   )       =         ∑     j   =   4     5     ⁢           ⁢     Cj   ·     X     5   -   j           =     {         (       I   ⁡     (   X   )       ·     X   2       }     ⁢   mod   ⁢     {     Ge   ⁡     (   X   )       }     ⁢     
     ⁢   Here     ,                 (   1   )                   I   ⁡     (   X   )       =       ∑     j   =   0     3     ⁢           ⁢     Cj   ·     X     3   -   j             ,           (   2   )                   Ge   ⁡     (   X   )       =       ∏     k   =   0     l     ⁢           ⁢     (     X   +     α   k       )         ,           (   3   )               
and α is a root of a primitive polynomial,
 
 P ( x )= x   8   +x   4   +x   3   +x   2 +1  (4).
 
α corresponds to the element of the Galois field, and has characteristics as shown in  FIG. 5  and  FIG. 6  when vector representation is used.
 
     The above equation is solved by using  FIG. 5  and  FIG. 6 , providing the result as follows.
 
 C   4 =α 25   ·C   3 +α 198   ·C   2 +α 75   ·C   1 +α 113   ·C   0   (5)
 
 C   5 =α 1   ·C   3 +α 26   ·C   2 +α 199   ·C   1 +α 76   ·C   0   (6)
 
     The IED according to the embodiment of the invention realizes the above solution by use of a logic circuit as follows based on the vector representation of  FIG. 5 .
 
 IED[ 15:8 ]=mulgf (8′ h 03 ,C 3)^ mulgf (8′ h 07 ,C 2)^ mulgf (8′ h 0 f,C 1)^ mulgf (8′ h 1 f,C 0);
 
 IED[ 7:0 ]=mulgf (8′ h 02 ,C 3)^ mulgf (8′ h 06 ,C 2)^ mulgf (8′ h 0 e,C 1)^ mulgf (8′ h 1 e,C 0);
 
     Here, mulgf is a multiplier of Galois fields, and is implemented by a logic circuit as shown in  FIG. 7  with inputs denoted as AI [7:0] and BI [7:0] and an output denoted as mulgf [7:0]. Here, the logic circuit completes its logic operation with only a device delay, which is associated with signal propagation through devices. 
     It should be noted that “^” in these logic expression represents an EXOR gate and “&amp;” represents an AND gate. 
     In what follows, the EDC according to the invention will be described. With the MSB of the first byte of the ID denoted as b16511 and the LSB of the last byte of the EDC denoted as b0, the EDC operation is defined as follows. 
                     EDC   ⁢           ⁢     (   X   )       =         ∑     i   =   31     0     ⁢           ⁢       b   i     ·     X   i         =       I   ⁡     (   X   )       ⁢   mod   ⁢     {     g   ⁡     (   X   )       }                 (   7   )               
Here, I(X) and g(X) are as follows.
 
     
       
         
           
             
               
                 
                   
                     I 
                     ⁡ 
                     
                       ( 
                       X 
                       ) 
                     
                   
                   = 
                   
                     
                       ∑ 
                       
                         i 
                         = 
                         16511 
                       
                       32 
                     
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       
                         b 
                         i 
                       
                       · 
                       
                         X 
                         i 
                       
                     
                   
                 
               
               
                 
                   ( 
                   8 
                   ) 
                 
               
             
             
               
                 
                   
                     g 
                     ⁡ 
                     
                       ( 
                       X 
                       ) 
                     
                   
                   = 
                   
                     
                       X 
                       32 
                     
                     + 
                     
                       X 
                       31 
                     
                     + 
                     
                       X 
                       4 
                     
                     + 
                     1 
                   
                 
               
               
                 
                   ( 
                   9 
                   ) 
                 
               
             
           
         
       
     
     The EDC according to the embodiment of the invention successively receives 4-byte data, and generates an error detection code upon the inputting of data for one sector.  FIG. 8  is a block diagram showing the construction of the EDC. 
     In  FIG. 8 , Din is the 4-byte data that is successively received. T is obtained by an EXOR gate  42  that performs an EXOR operation between an output EDC of a 32-bit register  41  and Din. 
     A 4-byte EDC operation unit  40  shown in  FIG. 8  is a logic circuit that converts the above formula into another formula for 4-byte-by-4-byte computation. Such a unit is implemented by use of  FIG. 9 . Here, the logic circuit completes its logic operation with only a device delay, which is associated with signal propagation through devices. 
     In the following, the scrambling circuit of the invention will be described. Data D′k after scrambling is obtained by performing an EXOR (exclusive logical sum) operation between original Data Dk and scrambling data Sk.
 
D′ k =D k ⊕S k   (10)
 
(k=0−2047)
 
Sk is defined as bits r 7 -r 0  of a feedback shift register  50  as shown in  FIG. 10 .
 
     The initial value of the feedback shift register  50  is determined based on a sector ID. 
     The scrambling circuit according to the embodiment of the invention successively receives 4-byte data, and successively outputs scrambled data. It follows that a logic circuit for updating slice data for every 4 bytes is necessary. Such a circuit is shown in  FIG. 11 . 
     The circuit of  FIG. 11  includes a 4-byte scrambling data generating circuit  60 , a multiplexer  61 , a 32-bit register  62 , and an EXOR gate  63 . The multiplexer  61  selects one of the initial data and the output of the 4-byte scrambling data generating circuit  60  for storage in the 32-bit register  62 . The output of the 32-bit register  62  is supplied as an input to the 4-byte scrambling data generating circuit  60 , and is also supplied to the EXOR gate  63 , which performs an EXOR operation between Din and the output of the 32-bit register  62 . 
     The 4-byte scrambling data generating circuit  60  of  FIG. 11  is implemented by  FIG. 12 . Here, such a logic circuit completes its logic operation with only a device delay, which is associated with signal propagation through devices. 
     In the following, the PI parity unit of the invention will be described. With the 172 bytes of the input denoted as B 0 , B 1 , B 2 , . . . B 171  and the bytes of the output denoted as B 172 -B 181 , the PI parity operation is defined as follows. 
                     PI   ⁡     (   X   )       =         ∑     j   =   172     181     ⁢           ⁢     Bj   ·     X     180   -   j           =     {         (       I   ⁡     (   X   )       ·     X   10       }     ⁢   mod   ⁢     {     Gpi   ⁡     (   X   )       }     ⁢     
     ⁢   Here     ,                 (   11   )                   I   ⁡     (   X   )       =       ∑     j   =   0     171     ⁢           ⁢     Bj   ·     X     171   -   j             ,           (   12   )                   Gpi   ⁡     (   X   )       =       ∏     k   =   0     9     ⁢           ⁢     (     X   +     α   k       )         ,           (   13   )               
and α is a root of a primitive polynomial,
 
 P ( x )= x   8   +x   4   +x   3   +x   2 +1  (14).
 
     α corresponds to the element of the Galois field, and has characteristics as shown in  FIG. 5  and  FIG. 6  when vector representation is used, as in the case of the IED operation. 
     The PI parity unit according to the embodiment of the invention successively receives 4-byte data, and generates a 10-byte PI parity code upon the inputting of 172 bytes. Such a unit has a construction as shown in  FIG. 13 . 
     In  FIG. 13 , Din is the 4-byte data that is successively received. T is obtained by an EXOR gate  72  that performs an EXOR operation between a portion PIP[79:48] of the output PIP[79:0] of a 80-bit register  71  and Din. 
     A 4-byte PI parity operation unit  70  shown in  FIG. 13  is implemented by a logic circuit as shown in  FIG. 14 , which is obtained by solving the above equation by use of  FIG. 5  and  FIG. 6 . Here, the logic circuit completes its logic operation with only a device delay, which is associated with signal propagation through devices. 
     In the following, the PO parity unit of the invention will be described. With the 192 bytes of the input denoted as B 0 , B 1 , B 2 , . . . , and B 191  and the 16 bytes of the output denoted as B 172 -B 181 , the PO parity operation is defined as follows. 
                     PO   ⁡     (   X   )       =         ∑     i   =   192     207     ⁢           ⁢     Bi   ·     X     207   -   i           =     {         (       I   ⁡     (   X   )       ·     X   16       }     ⁢   mod   ⁢     {     Gpo   ⁡     (   X   )       }     ⁢     
     ⁢   Here     ,                 (   15   )                   I   ⁡     (   X   )       =       ∑     i   =   0     191     ⁢           ⁢     Bi   ·     X     191   -   i             ,           (   16   )                   Gpo   ⁡     (   X   )       =       ∏     k   =   0     15     ⁢           ⁢     (     X   +     α   k       )         ,           (   17   )               
and α is a root of a primitive polynomial,
 
 P ( x )= x   8   +x   4   +x   3   +x   2 +1  (18).
 
     α corresponds to the element of the Galois field, and has characteristics as shown in  FIG. 5  and  FIG. 6  when vector representation is used, as in the case of the IED operation. 
     The PO parity unit according to the embodiment of the invention is comprised of four operation units arranged in parallel, each of which successively receives 1-byte data, and generates a 16-byte PO parity code upon the inputting of 192 bytes. The PO parity unit has a construction as shown in  FIG. 15 . 
     In  FIG. 15 , four operation units are provided in parallel with respect to four respective input portions Din[7:0], Din[15:8], Din[23:16], and Din[31:24]. Din[7:0], for example, is the 1-byte data (8-bit data) that is successively received. T 0  is obtained by an EXOR gate  82  that performs an EXOR operation between a portion POP[127:120] of the output POP[127:0] of a 128-bit register  81  and Din[7:0]. 
     A 1-byte PO parity operation unit  80  shown in  FIG. 15  is implemented by a logic circuit as shown in  FIG. 16 , which is obtained by solving the above equation by use of  FIG. 5  and  FIG. 6 . Here, the logic circuit completes its logic operation with only a device delay, which is associated with signal propagation through devices. 
     In the following, the FIFO of the invention will be described.  FIG. 17  is a circuit diagram showing an example of the construction of the FIFO according to the embodiment of the invention. 
     The FIFO is a shift register including 16 stages, each of which is a 4-byte (32-bit) register  90  capable of parallel inputting. A selector (MUX)  91  is provided between the fifth stage and the sixth stage, and switches in response to a signal SEL 44 . 
     In the following, the operation of the FIFO will be described with respect to a case in which a PI sequence operation is performed. The PI sequence operation attaches a 10-byte PI parity to 172-byte data for one row. This operation is performed through three separate steps such as 64 bytes+64 bytes+(44 bytes+10-byte PI parity) In the embodiment of the invention, data is input 4 bytes at a time, and the operation comes to an end as the number of input data reaches a predetermined number. When 64 (4×16) bytes are read from the temporal storage memory, the data of FIFO is written in the temporal storage memory 4 bytes at a time. The same applies in the case of next 64 (4×16) bytes. At the end, the signal SEL 44  is asserted, thereby providing for data to be input directly into the sixth stage of the FIFO. With this provision, 44 (4×11) bytes of data are read from the temporal storage memory. When the reading is completed, the PI parity operation also comes to an end. The 10 bytes of the PI parity are then loaded to half the third stage, the fourth stage, and the fifth stage. There are a total of 54 bytes of data in the FIFO, and these data are written in the temporal storage memory 4 bytes at a time. This results in the two last bytes being left out. These data can be disregarded. 
     In what follows, the operation of the FIFO will be described with respect to a case in which a P 0  sequence operation is performed. The PO sequence operation attaches a 16-byte PO parity to 192-byte data for one column. In the embodiment of the invention, the PO sequence operation is simultaneously performed with respect to four columns. When 64 (4×16) bytes are read forty-eight times from the temporal storage memory, the computation of the PO parity is completed for 64 bytes for a total of four columns. Loading to the FIFO is then performed, and writing in the temporal storage memory is carried out 4 bytes at a time. As shown in  FIG. 2 , one ECC block is comprised of 182 columns, the PO sequence operation results in the two last columns being left out. The computation of these two columns can be disregarded. 
     In the following, a description will be given of the control circuit of the invention.  FIG. 18  is a circuit diagram showing the construction of an address generating circuit that supplies address signals to the temporal storage memory during the PI sequence operation according to the embodiment of the invention. 
     The address generating circuit of  FIG. 18  includes decoders  101 - 1  through  101 - 6 , AND gates  102  through  108 , OR gates  109  and  110 , a 4-bit counter  111 - 1 , a 3-bit counter  111 - 2 , and 4-bit counters  111 - 3  and  111 - 4 . Each of the counters  111 - 1  through  111 - 4  of  FIG. 18  performs a counting-up operation when EN is 1, and clears the count when CLR is 1. 
     The decoder  101 - 1  outputs “1” when the output A[3:0] of the counter  111 - 1  is “10” The decoder  101 - 2  outputs “1” when the output A[3:0] is “13”. The decoder  101 - 3  outputs “1” when the output A[3:0] is “15”. The decoder  101 - 4  outputs “1” when the output C[2:0] of the counter  111 - 2  is “4”. The decoder  101 - 5  outputs “1” when the output C[2:0] is “5”. The decoder  101 - 6  outputs “1” when the output B[3:0] of the counter  111 - 3  is “11”. 
     The address supplied to the temporal storage memory is provided as {D [3:0], C [2:1], B [3:0], A [3:0]} which are outputs of the counters. 
     The counter output C[0] is used as a read/write signal (“0” for read and “1” for write) that is supplied to the temporal storage memory. 
     Moreover, the selection signals supplied to the multiplexers shown in  FIG. 4  and the control signals such as start/stop signals for the arithmetic operation units may also be generated by decoding the outputs of the counters  111 - 1  through  111 - 4 . For example, the multiplexers are controlled such that the ID data is input into the FIFO when {C [2:1], B [3:0], A [3:0]} is 0. The IED corresponds to a case in which {C [2:1], B [3:0], A [3:0]} is 1. Other selections are made in a similar manner, and a description thereof will be omitted. 
       FIG. 19  is a circuit diagram showing the construction of an address generating circuit that supplies address signals to the temporal storage memory during the PO sequence operation according to the embodiment of the invention. 
     The address generating circuit of  FIG. 19  includes decoders  121 - 1  through  121 - 5 , AND gates  122  through  130 , an inverter  131 , an OR gate  132 , a 4-bit counter  133 - 1 , a 5-bit counter  133 - 2 , a 4-bit counter  133 - 3 , and a 2-bit counter  133 - 4 . Each of the counters  133 - 1  through  133 - 4  of  FIG. 19  performs a counting-up operation when EN is 1, and clears the count when CLR is 1. 
     The decoder  121 - 1  outputs “1” when the output A[3:0] of the counter  133 - 1  is “11”. The decoder  121 - 2  outputs “1” when the output A[3:0] is “15”. The decoder  121 - 3  outputs “1” when the output B[3:0] of the counter  133 - 3  is “15”. The decoder  121 - 4  outputs “1” when the output B[3:0] is “13”. The decoder  121 - 5  outputs “1” when the output C[1:0] of the counter  133 - 4  is “2”. 
     The address supplied to the temporal storage memory is provided as {D [4:0], C [1:0], A [3:0], B [3:0]} which are outputs of the counters. 
     The counter output D[4] is used as a read/write signal (“1” for read and “1” for write) that is supplied to the temporal storage memory. 
     By the operation of the address generating circuits of  FIG. 18  and  FIG. 19 , the sector data of  FIG. 1  (including PI and PO) is laid out in the temporal storage memory as shown in  FIG. 20 ,  FIG. 21 ,  FIG. 22 ,  FIG. 23 ,  FIG. 24 , and  FIG. 25 . 
     Further, the present invention is not limited to these embodiments, but various variations and modifications may be made without departing from the scope of the present invention. 
     The present application is based on Japanese priority application No. 2002-374903 filed on Dec. 25, 2002, with the Japanese Patent Office, the entire contents of which are hereby incorporated by reference.