Abstract:
The present invention discloses a method for generating a syndrome value of an error correction codeword (ECC), and a related apparatus. The ECC includes a fixed section, an information section, and a parity section. The fixed section includes not only byte “00”. The method provides a fixed syndrome value according to characteristics of the ECC. The syndrome value corresponding to the ECC is generated according to the fixed syndrome value, the information section, and the parity section.

Description:
BACKGROUND  
       [0001]     The embodiments relate to error correction codeword (ECC), and more particularly, to a method and apparatus for efficiently generating a syndrome value corresponding to an ECC through providing a fixed syndrome value according to characteristics of the ECC.  
         [0002]     In digital data communication and digital data recording, error correction coding is a technique that can be utilized to prevent data errors. Before transmitting or recording digital data, the data is usually encoded as error correction codewords (ECCs). After an ECC is received or retrieved, mathematical operations are performed on the ECC to generate a syndrome value corresponding to the ECC. Then, according to the generated syndrome value, error location(s) and error value(s) in the ECC can be easily determined. The ECC is corrected according to the determined error location(s) and error value(s) to generate the original digital data.  
         [0003]     Reed-Solomon codeword is a kind of widely applied error correction codeword. Taking Blu-ray discs as an example, RS (248, 216, 33) codes are utilized to ensure that BCA data and AUX data retrieved from Blu-ray discs are correct.  FIG. 1  shows the error correction format of BCA data utilized by Blu-ray discs. In Blu-ray discs, 16 bytes of BCA data and 200 dummy bytes are encoded into a 248 bytes long-distance ECC. The long-distance ECC therefore comprises a fixed section, an information section, and a parity section. The fixed section comprises 200 bytes of “FF”, which are referred to as dummy bytes and are not recorded on Blu-ray discs. The information section comprises 16 information bytes, i.e. the above-mentioned 16 bytes by BCA data. The parity section comprises 32 parity bytes. The last 16 parity bytes of the parity section are not recorded on Blu-ray discs. During the decoding process the last 16 parity bytes of the parity section are marked as erasures.  
         [0004]      FIG. 2  shows the error correction format of AUX data utilized by Blu-ray discs. In Blu-ray discs, 112 bytes of AUX data and 104 dummy bytes are encoded into a 248 bytes long-distance ECC. The long-distance ECC therefore comprises a fixed section, an information section, and a parity section. The fixed section comprises 104 bytes of “FF”, which are referred to as dummy bytes and are not recorded on Blu-ray discs. The information section comprises 112 information bytes, i.e. the above-mentioned 112 bytes of AUX data. The parity section comprises 32 parity bytes.  
         [0005]      FIG. 3  shows an apparatus of the related art for generating syndrome values corresponding to long-distance ECCs of BCA data and AUX data. The apparatus comprises a multiplexer  310  and a syndrome generator  320 . The syndrome generator  320  comprises 32 syndrome byte generators  325 . Each of the syndrome byte generators  325  comprises an adder  326  for performing Exclusive OR (XOR) operations, a buffer  327  for buffering a syndrome byte, and a multiplier  328 .  
         [0006]     For BCA data, the term R(X) shown in  FIG. 3  includes the information section and the parity section of a long-distance ECC utilized by Blu-ray discs. The multiplexer  310  sequentially feeds 200 bytes of “FF” and the 48-byte-long R(X) into the syndrome generator  320 ; the syndrome generator  320  generates the syndrome value corresponding to the long-distance ECC according to the 248-byte-long data received from the multiplexer  310 . Roughly speaking, 248 clock cycles are required for generating the syndrome value corresponding to the long-distance ECC.  
         [0007]     For AUX data, the term R(X) shown in  FIG. 3  includes the information section and the parity section of a long-distance ECC retrieved from a Blu-ray disc. In other words, R(X) includes 112 information bytes and 32 parity bytes. The multiplexer  310  sequentially feeds 104 bytes of “FF” and the 144-byte-long R(X) into the syndrome generator  320 ; and the syndrome generator  320  generates the syndrome value corresponding to the long-distance ECC according to the 248-byte-long data received from the multiplexer  310 . Roughly speaking, 248 clock cycles are required for generating the syndrome value corresponding to the long-distance ECC.  
         [0008]     Although there are plenty of dummy bytes included in a long-distance ECC of BCA data and AUX data, while the actual retrieved data constitute only part of the long-distance ECC, related art apparatus still have to generate the syndrome value according to the whole 248-byte-long long-distance ECC. Roughly speaking, 248 clock cycles are consumed for generating the syndrome value. In other words, the method utilized by the related art is not an efficient method for generating syndrome values swiftly.  
       SUMMARY  
       [0009]     A method for generating a syndrome value corresponding to an error correction codeword (ECC) is disclosed. The ECC comprises a fixed section, an information section, and a parity section. The fixed section includes not only byte “00”. The method comprises providing a fixed syndrome value according to characteristics of the ECC, and generating the syndrome value corresponding to the ECC according to the fixed syndrome value, the information section, and the parity section.  
         [0010]     An apparatus for generating a syndrome value corresponding to an error correction codeword (ECC) is disclosed. The ECC comprises a fixed section, an information section, and a parity section. The fixed section includes not only byte “00”. The apparatus comprises a syndrome-providing module and a calculator. The syndrome-providing module provides a fixed syndrome value according to characteristics of the ECC. The calculator, which is coupled to the syndrome-providing module, generates the syndrome value corresponding to the ECC according to the fixed syndrome value, the information section, and the parity section.  
         [0011]     A method for generating a syndrome value corresponding to an error correction codeword (ECC) is disclosed. The ECC comprises a fixed section, an information section, and a parity section. The fixed section includes not only byte “00”. The method comprises generating a second modified section according to the information section, the parity section, and a preset section; generating a syndrome value corresponding to the second modified section; and modifying the syndrome value corresponding to the second modified section according to characteristics of the ECC to generate the syndrome value corresponding to the ECC.  
         [0012]     An apparatus for generating a syndrome value corresponding to an error correction codeword (ECC) is disclosed. The ECC comprises a fixed section, an information section, and a parity section. The fixed section includes not only byte “00”. The apparatus comprises a revise module, a syndrome generator, and a correction unit. The revise module generates a second modified section according to the information section, the parity section, and a preset section. The syndrome generator, which is coupled to the revise module, generates a syndrome value corresponding to the second modified section. The correction unit, which is coupled to the syndrome generator, inverts a k th  syndrome byte of the syndrome value corresponding the second modified section to generate the syndrome value corresponding to the ECC. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0013]      FIG. 1  shows the error correction format of BCA data utilized by Blu-ray discs.  
         [0014]      FIG. 2  shows the error correction format of AUX data utilized by Blu-ray discs.  
         [0015]      FIG. 3  shows an apparatus of the related art for generating syndrome values.  
         [0016]      FIG. 4 ,  FIG. 5 ,  FIG. 6 , and  FIG. 7  show apparatuses for generating syndrome values according to various embodiments. 
     
    
     DETAILED DESCRIPTION  
       [0017]     In practice, some kinds of ECC have special characteristics. By taking advantage of the characteristics, syndrome values of these kinds of ECC can be determined more efficiently than in the related art.  
         [0018]     ECCs of BCA data of Blu-ray discs are herein taken as an example. Every ECC comprises a fixed section, an information section, and a parity section. As shown in  FIG. 1 , the characteristics of the ECC comprise: the fixed section including 200 bytes of “FF,” the information section including 16 information bytes, and the parity section including 32 parity bytes. Hereinafter a term BCA(X) is used to represent an ECC of BCA data, wherein BCA(X)={FF 200 (X), R(X)}, FF 200 (X) represents 200 bytes of “FF”, and R(X) represents the information section and parity section and comprises 16 information bytes and 32 parity bytes. By performing an Exclusive OR operation on BCA(X) and FF 248 (X), the following equations can be obtained: 
 
 BCA ( X )⊕ FF   248 ( X )={ FF   200 ( X ),  R ( X )}⊕ FF   248 ( X )={00 200 ( X ),  R′ ( X )}= R′ ( X ) 
 
→ BCA ( X )= R′ ( X )⊕ FF   248 ( X ) 
 
→ S ( BCA ( X ))= S ( R′ ( X ))⊕ S ( FF   248 ( X )) 
 
         [0019]     where 00 200 (X) represents 200 bytes of “00”, R′(X) represents the inverted data of R(X), and S(BCA(X)), S(R′(X)), and S(FF 248 (X)) represent syndrome values corresponding to BCA(X), R′(X), and FF 248 (X), respectively.  
         [0020]     ECCs of AUX data of Blu-ray discs are herein taken as an example. Every ECC comprises a fixed section, an information section, and a parity section. As shown in  FIG. 2 , the characteristics of the ECC comprise: the fixed section including 104 bytes of “FF,” the information section including 112 information bytes, and the parity section including 32 parity bytes. Hereinafter a term AUX(X) is used to represent an ECC of AUX data, wherein AUX(X)={FF 104 (X), R(X)}, FF 104 (X) represents 104 bytes of “FF”, and R(X) represents the information section and parity section and comprises 112 information bytes and 32 parity bytes. By performing an Exclusive OR operation on AUX(X) and FF 248 (X), the following equations can be obtained: 
 
 AUX ( X )⊕ FF   248 ( X )={ FF   104 ( X ),  R ( X )}⊕ FF   248 ( X )={00 104 ( X ),  R′ ( X )}= R′ ( X ) 
 
→ AUX ( X )= R′ ( X )⊕ FF   248 ( X ) 
 
→ S ( AUX ( X ))= S ( R′ ( X ))⊕ S ( FF   248 ( X )) 
 
         [0021]     where 00 104 (X) represents 104 bytes of “00”, and S(AUX(X)) represents a syndrome value corresponding to AUX(X).  
         [0022]     Therefore, when calculating the syndrome value S(BCA(X))/S(AUX(X)) corresponding to BCA(X)/AUX(X), a first syndrome value S(FF 248 (X)) corresponding to a first preset ECC FF 248 (X) can be provided as a fixed syndrome value. The first syndrome value S(FF 248 (X)) comprises 32 syndrome bytes, which include S0(FF 248 (X)), S1(FF 248 (X)), . . . , S30(FF 248 (X)), and S31(FF 248 (X)). The syndrome value S(BCA(X))/S(AUX(X)) is then determined according to fixed syndrome value S(FF 248 (X)) and R(X).  FIG. 4  shows an apparatus according to a first embodiment, which allows a syndrome value to be generated more efficiently. The apparatus of this embodiment comprises a syndrome-providing module  402  and a calculator  404 . The calculator  404  comprises an inverter  410  and a syndrome generator  420 . The syndrome-providing module  402  provides a fixed syndrome value S(FF 248 (X)); the inverter  410  inverts R(X) to generates a first modified section R′(X); and the syndrome generator  420  generates syndrome value S(BCA(X))/S(AUX(X)) according to the fixed syndrome value S(FF 248 (X)) and first modified section R′(X).  
         [0023]     In this embodiment, the syndrome generator  420  includes 32 syndrome byte generators  425 , each of which is responsible for generating one syndrome byte of the syndrome value S(BCA(X))/S(AUX(X)). Each syndrome byte generator  425  includes an adder  426  for performing Exclusive OR operations, a buffer  427  for buffering a syndrome byte, and a multiplier  428 . As the fixed syndrome value S(FF 248 (X)) is determined in advance, the syndrome generator  420  can load the fixed syndrome value S(FF 248 (X)) before/while/after loading the first modified section R′(X). Therefore, the number of clock cycles required when generating the syndrome value S(BCA(X)) or S(AUX(X)) is less than that required in the related art. The first embodiment therefore enables the syndrome values S(BCA(X)) and S(AUX(X)) to be generated more efficiently. Please note that if the fixed syndrome value is loaded into the syndrome generator  420  at a different time point, the actual content of the loaded fixed syndrome value should be properly revised.  
         [0024]     A second embodiment is herein introduced. Taking BCA(X) as an example, if 7 bytes of “00” are added to the tail of BCA(X), BCA′(X), equaling {FF 200 (X), R(X), 00 7 (X)}, is generated. By performing Exclusive OR operations on BCA′(X) and FF 255 (X), the following equations can be obtained: 
 
 BCA′ ( X )⊕ FF   255 ( X )={00 200 ( X ),  R′ ( X ),  FF   7 ( X )}={ R′ ( X ),  FF   7 ( X )}
 
→ BCA′ ( X )={ R′ ( X ),  FF   7 ( X )}⊕ FF   255 ( X ) 
 
→ S ( BCA′ ( X ))= S ({ R′ ( X ),  FF   7 ( X )})⊕ S ( FF   255 ( X )) 
 
         [0025]     Taking AUX(X) as an example, if 7 bytes of “00” are added to the tail of AUX(X), AUX′(X), equaling {FF 104 (X), R(X), 00 7 (X)}, is generated. By performing Exclusive OR operations on AUX′(X) and FF 255 (X), the following equations can be obtained: 
 
 AUX′ ( X )⊕ FF   255 ( X )={00 104 ( X ),  R′ ( X ),  FF   7 ( X )}={ R′ ( X ),  FF   7 ( X )}
 
→ AUX′ ( X )={ R′ ( X ),  FF   7 ( X )}⊕ FF   255 ( X ) 
 
→ S ( AUX′ ( X ))= S ({ R′ ( X ),  FF   7 ( X )})⊕ S ( FF   255 ( X )) 
 
         [0026]     Therefore, when calculating the syndrome value S(BCA(X))/S(AUX(X)) corresponding to BCA(X)/AUX(X), a second syndrome value S(FF 255 (X)) corresponding to a second preset ECC FF 255 (X) can be provided as a fixed syndrome value. The syndrome value S(BCA(X))/S(AUX(X)) is then determined according to the fixed syndrome value S(FF 255 (X)) and R(X). The second syndrome value S(FF 255 (X)) includes 32 syndrome bytes, the first of which is “FF”, while the rest of which are all “00”.  
         [0027]      FIG. 5  shows an apparatus according to the second embodiment, which allows syndrome values to be generated more efficiently. The apparatus of this embodiment comprises a syndrome-providing module  502  and a calculator  504 . The calculator  504  comprises an inverter  510 , a multiplexer  512 , and a syndrome generator  520 . The inverter  510  inverts R(X) to generates an inverted section R′(X); and the multiplexer adds the inverted section R′(X) with 7 bytes of “FF” to generate a second modified section {R′(X), FF 7 (X)}. Since in the fixed syndrome value S(FF 255 (X)) only the first syndrome byte is “FF” and other syndrome bytes are all “ 00 ”, the syndrome-providing module  502  in this embodiment only has to provide byte “FF”. The syndrome generator  520  then generates the syndrome value S(BCA′(X))/S(AUX′(X)) according to the fixed syndrome value S(FF 255 (X)) and the second modified section {R′(X), FF 7 (X)}.  
         [0028]     In this embodiment, the syndrome generator  520  includes 32 syndrome byte generators  525 , each of which is responsible for generating one syndrome byte of the syndrome value S(BCA′(X))/S(AUX′(X)). Each syndrome byte generator  525  includes an adder  526  for performing Exclusive OR operations, a buffer  527  for buffering a syndrome byte, and a multiplier  528 . As the fixed syndrome value S(FF 255 (X)) is determined beforehand, the syndrome generator  520  can load the fixed syndrome value S(FF 248 (X)) before/while/after loading the second modified section R′(X). Therefore, the number of clock cycles required when generating the syndrome value S(BCA(X)) or S(AUX(X)) is less than that required in the related art. The second embodiment therefore enables the syndrome values S(BCA(X)) and S(AUX(X)) to be generated more efficiently.  
         [0029]     Since performing Exclusive OR operations on any input byte and “FF” leads to the generation of the inverted byte of the input byte, the second embodiment shown in  FIG. 5  can be modified to become the third embodiment shown in  FIG. 6 . The apparatus of the third embodiment comprises a revise module  608 , a syndrome generator  620 , and a correction unit  602 . The revise module  608  comprises an inverter  610  and a multiplexer  612 . The inverter  610  inverts R(X) to generate an inverted section R′(X); and the multiplexer  612  adds the inverted section R′(X) with 7 bytes “FF” to generate a second modified section {R′(X), FF 7 (X)}. The syndrome generator  620  generates the syndrome value corresponding to the second modified section {R′(X), FF 7 (X)}; and the correction unit  602  inverts the first syndrome byte of the syndrome value generated by the syndrome generator  620  to generate the syndrome value S(BCA′(X))/S(AUX′(X)).  
         [0030]     A fourth embodiment is herein introduced. The following equations can be listed for BCA(X) and AUX(X): 
 
 S ( BCA ( X ))= S ({ FF   200 ( X ),  R ( X )})= S ({ FF   200 ( X ), 00 48 ( X )})⊕ S ( R ( X )) 
 
 S ( AUX ( X ))= S ({ FF   104 ( X ),  R ( X )})= S ({ FF   104 ( X ), 00 144 ( X )})⊕ S ( R ( X )) 
 
         [0031]     Therefore, when calculating the syndrome value S(BCA(X)) corresponding to BCA(X), a third syndrome value S({FF 200 (X), 00 48 (X)}) corresponding to a third preset ECC {FF 200 (X), 00 48 (X)} can be provided as a fixed syndrome value. The syndrome value S(BCA(X)) is then determined according to the fixed syndrome value S({FF 200 (X), 00 48 (X)}) and R(X). When calculating the syndrome value S(AUX(X)) corresponding to AUX(X), a fourth syndrome value S({FF 104 (X), 00 144 (X)}) corresponding to a fourth preset ECC {FF 104 (X), 00 144 (X)} can be provided as a fixed syndrome value. The syndrome value S(AUX(X)) is then determined according to the fixed syndrome value S({FF 104 (X), 00 144 (X)}) and R(X).  FIG. 7  shows an apparatus, which allows syndrome values to be generated more efficiently, according to a fourth embodiment. The apparatus of this embodiment comprises a syndrome-providing module  702  and a calculator  704 . The syndrome-providing module  702  comprises 32 multiplexers  712 . Each of the multiplexer  712  provides one syndrome byte of the fixed syndrome value S({FF 200 (X), 00 48 (X)})/S({FF 104 (X), 00 144 (X)}). The calculator  704  comprises a syndrome generator  720 . The syndrome generator  720  generates the syndrome value S(BCA(X))/S(AUX(X)) according to the fixed syndrome value S({FF 200 (X), 00 48 (X)})/S({FF 104 (X), 00 144 (X)}) and R(X).  
         [0032]     In this embodiment, the syndrome generator  720  includes 32 syndrome byte generators  725 , each of which is responsible for generating one syndrome byte of the syndrome value S(BCA(X))/S(AUX(X)). Each syndrome byte generator  725  includes an adder  726  for performing Exclusive OR operations, a buffer  727  for buffering a syndrome byte, and a multiplier  728 . As the fixed syndrome value S({FF 200 (X), 00 48 (X)})/S({FF 104 (X), 00 144 (X)}) is determined beforehand, the syndrome generator  720  can load the fixed syndrome value S({FF 200 (X), 00 48 (X)})/S({FF 104 (X), 00 144 (X)}) before/while/after loading R(X). Therefore, the number of clock cycles required when generating the syndrome value S(BCA(X))/S(AUX(X)) is less than that required in the related art. The fourth embodiment therefore enables the syndrome values S(BCA(X)) and S(AUX(X)) to be generated more efficiently. Please note that if the fixed syndrome value is loaded into the syndrome generator  720  at a different time point, the actual content of the fixed syndrome value should be properly revised. Taking BCA(X) as an example, if the fixed syndrome value is loaded into the syndrome generator  720  before R(X) is loaded, S({FF 200 (X)} should be provided as the fixed syndrome value. If the fixed syndrome value is loaded into the syndrome generator  720  while the first byte of R(X) is loaded, S({FF 200 (X), 00 1 (X)} should be provided as the fixed syndrome value.