US20080209119A1 - Methods and systems for generating error correction codes - Google Patents

Methods and systems for generating error correction codes Download PDF

Info

Publication number
US20080209119A1
US20080209119A1 US12/116,220 US11622008A US2008209119A1 US 20080209119 A1 US20080209119 A1 US 20080209119A1 US 11622008 A US11622008 A US 11622008A US 2008209119 A1 US2008209119 A1 US 2008209119A1
Authority
US
United States
Prior art keywords
data
buffer
parity
section
data block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/116,220
Inventor
Hong-Ching Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to US12/116,220 priority Critical patent/US20080209119A1/en
Assigned to MEDIATEK INC. reassignment MEDIATEK INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHEN, HONG-CHING
Publication of US20080209119A1 publication Critical patent/US20080209119A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Definitions

  • the present invention relates to methods and systems for generating error correction codes (ECCs), more particularly to methods and apparatuses for an optical disc drive, which efficiently reduces data accessing time during ECC encoding.
  • ECCs error correction codes
  • DRAM dynamic random access memory
  • the DRAM is composed of capacitors, and each capacitor stores logic 1 or logic 0 for each data bit by storing the electric charge or not.
  • the row address is sampled from the address pins and latched into the row address decoder when the RAS (Row Address Strobe) signal falls.
  • RAS Row Address Strobe
  • the address on the address pins is switched to the column address and is sampled and latched into the column address decoder when the CAS (Column Address Strobe) signal falls.
  • the data stored in the DRAM corresponding to the latched addresses is output once the CAS signal is stabilized.
  • page-mode allows faster sequential accessing of DRAM, in which a row of DRAM is accessed by only latching the row address once.
  • the RAS signal is kept while a new column address is supplied at each falling period of the CAS signal for accessing data from a corresponding memory cell of the DRAM.
  • This technique reduces the column access time and lowers power consumption.
  • the operation of accessing data in the same row is much faster than the operation of accessing data in different rows. For example, in the case of operating a 32 Kb DRAM with 7 bits of row address and 7 bits of column address, the access time required for address change from row to row belonging to the same column is around 5 times the access time for address change from column to column belonging to the same row.
  • FIG. 1 is a schematic diagram of an ECC block 10 for DVDs.
  • FIG. 2 is a schematic diagram illustrating an arrangement of the ECC block data stored in a DRAM.
  • a sequence of source data received from a host is scrambled and buffered into the DRAM according to a mapping between the row/column address of memory words and the byte index B i,j of the ECC block as shown in FIG. 2 .
  • the storage unit of the DRAM is a word containing two bytes, and the storing sequence of the scrambled source data is ⁇ B 0,0 , B 0,1 , . . . B 0,171 , B 1,0 , . . . ⁇ .
  • the row addresses of the scrambled source data are frequently switched to generate the PO codes, as each PO column for PO encoding is non-continuous in the direction of memory row address.
  • the encoding process in the PO encoding direction has a low efficiency since large bandwidth and long time are required.
  • FIG. 3 is a block diagram of an error correction code generator 30 including a first memory (DRAM) 31 , a multiplexer 32 , and an encoder 33 .
  • Source data are provided from the host and stored in the first memory 31 of the ECC generator 30 .
  • the multiplexer 32 selects one of the two bytes in each word and passes it to the encoder 33 for encoding.
  • the system encodes a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity columns.
  • ECC error correction code
  • a first buffer in the system sequentially stores a first section and a second section of the data block, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is greater than or equal to 2.
  • a second buffer stores Y partial-parity columns.
  • An encoder is used for encoding the first section read from the first buffer to generate the partial-parity columns, and then storing the partial-parity columns in the second buffer.
  • the combination of the second section read from the first buffer and the partial-parity columns read from the second buffer are encoded to generate updated partial-parity columns.
  • the partial-parity columns in the second buffer are updated by storing the updated partial-parity columns.
  • the present invention provides another system for generating error correction codes.
  • the system comprises a buffer for sequentially storing a first section and a second section of the data block.
  • An encoder reads the first section from the buffer for encoding the first section, and reads the second section from the buffer for encoding the second section.
  • An address mode switching circuit controls the first section to be stored in the buffer according to a first accessing strategy, controls the second section to be stored in the buffer according to a second accessing strategy, controls the encoder to read the first section from the buffer according to the second accessing strategy, and controls the encoder to read the second section from the buffer according to the first accessing strategy.
  • the first and second accessing strategies are different from one another and are selected from column-by-column and row-by-row accessing strategies.
  • some embodiments of the method for encoding a data block to generate corresponding error correction codes allow generating error correction code (ECC) parity columns in a more efficient manner.
  • the method includes sequentially storing a first section and a second section of the data block in a first buffer, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is greater than or equal to 2.
  • a group of Y partial-parity columns are stored in a second buffer.
  • the first section read from the first buffer is encoded to generate the partial-parity columns, and the partial-parity columns are stored in the second buffer.
  • the combination of the second section read from the first buffer and the partial-parity columns read from the second buffer are encoded to generate updated partial-parity columns.
  • the partial-parity columns are then updated in the second buffer.
  • some embodiments of the method for encoding a data block to generate corresponding error correction codes allow generating error correction code (ECC) parity columns in a more efficient manner.
  • the method includes sequentially storing a first section and a second section of the data block in a buffer according to a first accessing strategy and a second accessing strategy, respectively. Next the first section read from the buffer according to the second accessing strategy and the second section read from the buffer according to the first accessing strategy are encoded.
  • the first and second accessing strategies are different from one another and are selected from column-by-column and row-by-row accessing strategies.
  • the system for encoding a data block to generate corresponding error correction codes comprises a parity buffer and an encoder.
  • the encoder encodes a first section of the data block to generate partial-parity columns, stores the partial-parity columns in the parity buffer, and encodes a second section of the data block with the partial-parity columns read from the parity buffer to generate new partial-parity columns.
  • Each of the first and second sections is composed of X data rows and Y data columns, where Y is greater than or equal to 2, and X is smaller than the total number of rows in the data column.
  • FIG. 1 shows a schematic diagram of an ECC block.
  • FIG. 2 shows a schematic diagram illustrating the arrangement of the scrambled source data in a DRAM.
  • FIG. 3 shows a block diagram of a conventional error correction code generator.
  • FIG. 4 is a block diagram of an error correction code generators in accordance with an embodiment of the present invention.
  • FIG. 5 shows a diagram illustrating the schedule of data writing and data reading operation in accordance with an embodiment of the present invention.
  • FIGS. 6-10 are diagrams illustrating a data reading sequence in accordance with an embodiment of the present invention.
  • FIG. 11 illustrates an exemplary method of generating PO parity data for each word column of memory when reading the memory column-by-column.
  • FIG. 12 illustrates an exemplary method of generating PO parity data for each group of rows of memory when reading the memory row-by-row.
  • FIGS. 13-15 are block diagrams of error correction code generators in accordance with some embodiments of the present invention.
  • FIGS. 16( a )-( b ) are block diagram of an error correction code generator in accordance with another embodiment of the present invention.
  • FIG. 17 illustrates a block diagram of an error correction code generator in accordance with another embodiment of the present invention.
  • FIG. 18 is a timing diagram showing steps executed during the operation of the error correction code generator shown in FIG. 17 .
  • FIGS. 19-21 illustrate block diagrams of error correction code generators in accordance with some embodiments of the present invention.
  • FIG. 4 is a block diagram of an error correction code generator 40 in accordance with an embodiment of the present invention.
  • a data buffer 44 sequentially stores a plurality of sections of source data from the data block 11 shown in FIG. 1 .
  • the data buffer 44 is preferably a static random access memory (SRAM) due to its fast access times, but other memory types can also be used.
  • An address mode switching control circuit 42 controls the way that the source data is stored in the data buffer 44 .
  • a PO encoder 46 then encodes the source data stored in the data buffer 44 for producing the PO parity data.
  • the address mode switching control circuit 42 toggles the methods of accessing the data buffer 44 for increasing memory access speeds during the PO encoding process.
  • the address mode switching control circuit 42 switches the memory access mode to read and write row-by-row or column-by-column.
  • FIG. 5 shows a diagram 50 illustrating the schedule of data writing and data reading operation in accordance with an embodiment of the present invention.
  • the data block 11 of FIG. 1 is divided into a plurality of data sections including 1st, 2nd, 3rd, 4th data sections, etc.
  • Each data section is composed of a plurality of rows and a plurality of word columns, such as 192 rows and 4 word columns (8 bytes).
  • the 1st data section is written into the data buffer 44 row-by-row in step 51 starting at time T 0 .
  • the stored data are read from the data buffer 44 column by column for generating PO parity data in step 52 starting at time T 1 .
  • the first column of the 2nd data section can be overwritten in step 53 to the same memory space of the data buffer 44 where the first column of the 1st data section was stored.
  • the remaining columns of the 2nd data section are written to the data buffer 44 in the same fashion.
  • the 2nd data section is effectively written to the data buffer 44 at the same time as the 1st data section is being read from the data buffer 44 , while avoiding any previous data from being overwritten before it is read.
  • the whole 2nd data section is written to the data buffer 44 , it is again read out from the data buffer 44 row-by-row in step 54 for generating PO parity data.
  • each row of the 3rd data section can be overwritten to the same memory space of the data buffer 44 where corresponding rows of the 2nd data section is completely read from the data buffer 44 .
  • the columns of the stored 3rd data section are not read from the data buffer 44 in step 56 until the whole 3rd data section is written into the data buffer 44 row-by-row.
  • step 57 the 4th data section is written to the data buffer 44 column-by-column while the 3rd data section is read from the data buffer 44 column-by-column.
  • an N th data section is read while an (N+1) th data section is being written.
  • the simultaneous read and write processes are performed in the same direction, whether it be row-by-row or column-by-column.
  • the writing operations for PO buffering and the reading operations for PO encoding act simultaneously without any additional PO encoder or extra memory size by accessing the data buffer 44 in the same direction. Accessing the data buffer 44 in the same direction also allows the reading and writing to take place simultaneously without adversely affecting the memory access speed.
  • FIGS. 6-10 show diagrams illustrating data reading sequences in accordance with an embodiment of the present invention.
  • FIGS. 6-10 correspond to steps 51 - 55 , respectively.
  • Two horizontally adjacent bytes act as a word W x,y i , where i is the designed number of the data section, x is a row number ranging from 0 to 191, and y is a column number ranging from 0 to 3.
  • each data section is comprised of 192 rows and 4 word columns.
  • the 1st data section is written into the data buffer 44 row-by-row as shown in FIG. 6 .
  • the data writing sequence in the data buffer 44 is shown by the arrows, and starts from the topmost row.
  • the data reading sequence in the data buffer 44 is also shown by the arrows in FIG. 7 , and starts from the leftmost column. After the first (leftmost) column of the 1st data section is completely read from the data buffer 44 , the first to 48th rows of the 2nd data section can be overwritten to the same memory space of the data buffer 44 where the first column of the 1st data section was recorded. As shown in FIG. 8 , words W 0,0 2 -W 1,3 2 are sequentially stored as the serial directions of theses arrows indicate, with sequential words in a row of the 2nd data section being stored in sequential 48-rows groups of the data buffer 44 . The remaining rows of the 2nd data section are written to the data buffer 44 according to the same accessing strategy. The first column of the 2nd data section is stored in the upper 48 rows of the data buffer 44 , the second column of the 2nd data is stored in the next 48 rows of the data buffer 44 , and so forth.
  • the stored data are read from the data buffer 44 for generating PO parity data in a sequence as the serial directions of these arrows indicate.
  • the consecutive 48 data rows of the data buffer 44 are accessed column-by-column since each group of 48 rows of the data buffer 44 contains the stored data for one word column of the 2nd data section.
  • the 3rd data section is written into the data buffer 44 row-by-row, as shown in FIG. 10 .
  • the corresponding PO parity data is calculated and written to a PO parity buffer with a size of at least 16 rows and 4 word columns.
  • FIG. 11 illustrates how PO parity data is generated for each word column of memory when reading the data buffer 44 column-by-column. After each word column of data is read, corresponding PO parity data is written into one word column of the PO parity buffer. After the last word column has been read and encoded, and the corresponding PO parity data has been stored in the PO parity buffer, the PO parity is read out row-by-row and stored in a memory, such as a DRAM, which can be used for generating PI codes. By reading the PO parity out of the PO parity buffer row-by-row, page-mode data access can be efficiently used for enabling quick memory access.
  • FIG. 12 illustrates how PO parity data is generated for each group of rows of memory when reading the memory row-by-row. After each group of 48 rows of data is read, corresponding PO parity data is stored into the PO parity buffer. After the last group of rows of data is read, and the corresponding PO parity data is stored in the PO parity buffer, the PO parity data is read out row-by-row and stored in the DRAM.
  • FIGS. 13-15 are block diagrams of error correction code generators in accordance with some embodiments of the present invention.
  • the error correction code generator 60 shown in FIG. 13 contains a DRAM 62 for supplying source data to the data buffer 44 .
  • a host 72 can also be used to supply the source data to the DRAM 62 .
  • the DRAM 62 stores the source data for the data buffer 44 to read for encoding the PO parity data.
  • the host 72 can also supply the source data to the data buffer 44 directly, as shown in the error correction code generator 80 of FIG. 15 .
  • a copy of the source data can also be stored in the DRAM 62 for use in encoding PI codes later. Since the encoding process performed by the PO encoder 46 is usually faster than the transmission speed of the host 72 , the host 72 can supply the source data to the data buffer 44 directly without the problem of buffer overflow.
  • FIG. 16( a ) is a block diagram of an error correction code generator 100 in accordance with another embodiment of the present invention.
  • source data belonging to the same 16-word column have been used to encode the corresponding PO parity data.
  • 12 iterations of this process would be required to encode the corresponding PO parity data if 16 rows of the 192 rows of source data are encoded at a time.
  • the PO parity data that have been encoded are then stored in the DRAM for use in calculating the PI codes.
  • FIG. 16( b ) is the same as FIG. 16( a ) while labeling the related symbols of Equation (2) to show how Equation (2) is realized in the block diagram of FIG. 16( a ).
  • the error correction code generator 100 implementing the recursive PO encoding process, two small buffers can be used. In this example, both the data buffer 104 and the parity buffer 108 only require a size of 256 words (512 bytes), which greatly reduces the amount of SRAM needed for the buffers.
  • the partial PO parity data can be read out of the parity buffer 108 at the same time as The error correction code generator 100 uses recursive PO encoding calculation to reduce the size of buffers needed to calculate the PO parity data.
  • a DRAM 102 supplies source data to a data buffer 104 .
  • the data buffer 104 can have a relative small size such as 16 words ⁇ 16 rows in comparison with the memory size of the DRAM 102 .
  • the data buffer 104 outputs the source data to a PO encoder 106 , where the first group of source data is the first 16 rows of a 16-word column. Note that the source data is divided into groups having 16 words and 16 rows in this embodiment; however, various group sizes may be used to generate the PO parity data by such recursive PO encoding calculation.
  • the PO encoder 106 generates partial PO parity data based of the first group and stores in a parity buffer 108 .
  • the data buffer 104 reads in a second group of source data, which in this embodiment, is the next 16 rows of the 16-word column.
  • the second group of source data is output from the data buffer 104 to a summing circuit 105 and the partial PO parity data stored in the parity buffer 108 is simultaneously output to the summing circuit 105 .
  • the summed result is sent to the PO encoder 106 , where the PO encoder 106 generates updated partial PO parity data to be stored in the parity buffer 108 .
  • a third group of source data is stored in the data buffer 104 .
  • the summing circuit 105 sums the third group of source data with the updated partial PO parity data stored in the parity buffer 108 and sends the result to the PO encoder 106 for generating the new updated partial PO parity data.
  • This recursive PO encoding operation continues until all groups of the source data is read out of the data buffer 104 , so no extra time is needed to wait for the partial PO parity data to be read. Since the data buffer 104 stores many words from the same row of the source data at a time, these adjacent words can be read with the advantage of page-mode data access.
  • page-mode data access can be utilized for writing adjacent PO data words in the same row of memory.
  • it can reload the partial PO parity data to the PO encoder 106 before encoding the next group of source data.
  • FIG. 17 illustrates a block diagram of an error correction code generator 110 in accordance with another embodiment of the present invention.
  • the error correction code generator 110 is a variation of the error correction code generator 100 shown in FIG. 16 , and utilizes two data buffers 114 , 116 and two parity buffers 122 , 124 for allowing data to be written to the buffers and read from the buffers simultaneously, thereby further increasing the PO encoding processing speed.
  • a first de-multiplexer 112 is used for directing source data from the DRAM 102 to either a first data buffer 114 or a second data buffer 116 , in turns.
  • a first multiplexer 118 reads the source data stored in the appropriate data buffer 114 , 116 and feeds it to the summing circuit 105 , where the source data is combined with partial PO parity data and then send to the PO encoder 106 .
  • a second de-multiplexer 120 sends the partial PO parity data to either a first parity buffer 122 or a second parity buffer 124 for storage.
  • a second multiplexer 126 reads out partial PO parity data stored in one of the parity buffers 122 , 124 and sends it to the summing circuit 105 .
  • the error correction code generator 110 uses a recursive algorithm for calculating encoded PO parity data. Once the PO parity data has been fully encoded, the encoded PO parity data is output from the second parity buffer 124 to the DRAM 102 .
  • the first de-multiplexer 112 and the second de-multiplexer 120 as well as the first multiplexer 118 and the second multiplexer 126 are setup with opposite logic configurations.
  • a buffer select signal BUF_SEL is used to activate one of the first de-multiplexer 112 and the second de-multiplexer 120 at a time and to activate one of the first multiplexer 118 and the second multiplexer 126 .
  • the error correction code generator 110 takes advantage of this fact to use four buffers instead of two.
  • Each of the four buffers 114 , 116 , 122 , 124 can store 16 words ⁇ 16 rows of data.
  • source data can now be written to the first data buffer 114 while source data is being read from the second data buffer 116 , and vice versa.
  • FIG. 18 is a timing diagram showing steps executed during the operation of the error correction code generator 110 shown in FIG. 17 .
  • the timing diagram illustrates the 12 stages needed to fully encode one set of PO parity data, with the variable k indicating the stage number.
  • the first group of buffer data B 0 j (x) is read out from the first data buffer 114 in step 142 while a second group of buffer data B 1 j (x) is stored in the second data buffer 116 in step 144 .
  • the first group of buffer data B 0 j (x) is encoded by the PO encoder 106 , and in step 146 is stored in the first parity buffer 122 as a first group of partial PO parity data R 0 j (x).
  • a third group of buffer data B 2 j (x) is stored in the first data buffer 114 in stage 150 .
  • the second group of buffer data B 1 j (x) is read out from the second data buffer 116 for encoding in step 154 and the first group of partial PO parity data R 0 j (x) is read out from the first parity buffer 122 for encoding in step 152 .
  • a second group of partial PO parity data R 1 j (x) is produced by the PO encoder 106 , and is stored in the second parity buffer 124 in step 156 .
  • a fourth group of buffer data B 3 j (x) is stored in the second data buffer 116 in stage 162 .
  • the third group of buffer data B 2 j (x) is read out from the first data buffer 114 for encoding in step 160 and the second group of partial PO parity data R 1 j (x) is read out from the second parity buffer 124 for encoding in step 164 .
  • a third group of partial PO parity data R 2 j (x) is produced by the PO encoder 106 , and is stored in the first parity buffer 122 in step 166 .
  • a twelfth group of buffer data B 11 j (x) is read out from the second data buffer 116 for encoding in step 172 and an eleventh group of partial PO parity data R 10 j (x) is read out from the first parity buffer 122 for encoding in step 170 .
  • a twelfth group of partial PO parity data R 11 j (x) is produced by the PO encoder 106 , and is stored in the second parity buffer 124 in step 174 . Since the twelfth group of partial PO parity data R 11 j (x) represents the encoded PO parity data, the PO parity data is read out of the second parity buffer 124 and stored in the DRAM 102 in step 176 .
  • the above process illustrates how one group of 16 words ⁇ 16 rows of encoded PO parity data is calculated. Additional groups of PO parity data are also calculated in the same way.
  • FIG. 19 illustrates a block diagram of an error correction code generator 180 in accordance with another embodiment of the present invention.
  • the error correction code generator 180 Differing from the error correction code generator 100 shown in FIG. 16 , the error correction code generator 180 also contains an address mode switching circuit 182 for controlling the way that the source data is stored in and read from the data buffer 104 .
  • the error correction code generator 180 combines the ideas of the recursive calculation algorithm used in the error correction code generator 100 of FIG. 16 and the alternating row-by-row and column-by-column memory accessed used in the error correction code generator 40 of FIG. 4 . The combination of both of these strategies allows the PO parity data to be encoded even more efficiently.
  • FIG. 20 is a block diagram of an error correction code generator 190 in accordance with another embodiment of the present invention. Differing from the error correction code generator 100 shown in FIG. 16 , the error correction code generator 190 utilizes a host 192 to supply source data to the DRAM 102 . The DRAM 102 stores the source data for the data buffer 104 to read for encoding the PO parity data.
  • the host 192 can also supply the source data to the data buffer 104 directly, as shown in the error correction code generator 200 of FIG. 21 .
  • a copy of the source data can also be stored in the DRAM 102 for use in encoding PI codes later. Since the encoding process performed by the PO encoder 106 is usually faster than the transmission speed of the host 192 , the host 192 can supply the source data to the data buffer 104 directly without the problem of buffer overflow.
  • the present invention provides various circuits and methods for calculating error correction codes using a smaller memory buffer, by controlling the memory accesses to take advantage of the more efficient page-mode data access, or by simultaneously reading source data from a data buffer and writing source data to the data buffer.

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Methods and systems for generating ECC encode a data block to generate corresponding error correction codes. A first buffer sequentially stores a first section and a second section of the data block, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, and Y is greater than or equal to 2. A second buffer stores Y partial-parity columns. An encoder is used for encoding the first section read from the first buffer to generate the partial-parity columns, and then storing the partial-parity columns in the second buffer. The second section read from the first buffer and the partial-parity columns read from the second buffer are encoded to generate updated partial-parity columns. Next, the partial-parity columns in the second buffer are updated by storing the updated partial-parity columns.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a division of U.S. application Ser. No. 11/160,263 filed Jun. 16, 2005, the entirety of which is incorporated by reference.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention relates to methods and systems for generating error correction codes (ECCs), more particularly to methods and apparatuses for an optical disc drive, which efficiently reduces data accessing time during ECC encoding.
  • 2. Description of the Prior Art
  • Conventional processes for generating error correction codes during encoding involves pre-storing source data in a dynamic random access memory (DRAM). Data stored in the DRAM are usually addressed by the row address and column address, and the DRAM is an array of memory cells accessing according to the row and column addresses.
  • In order to reduce number of pins on the package, the row and column addresses are multiplexed to share the same address pins. The DRAM is composed of capacitors, and each capacitor stores logic 1 or logic 0 for each data bit by storing the electric charge or not. The row address is sampled from the address pins and latched into the row address decoder when the RAS (Row Address Strobe) signal falls. After the row address is latched, the address on the address pins is switched to the column address and is sampled and latched into the column address decoder when the CAS (Column Address Strobe) signal falls. The data stored in the DRAM corresponding to the latched addresses is output once the CAS signal is stabilized. A technique called “page-mode” allows faster sequential accessing of DRAM, in which a row of DRAM is accessed by only latching the row address once. In the page-mode access, the RAS signal is kept while a new column address is supplied at each falling period of the CAS signal for accessing data from a corresponding memory cell of the DRAM. This technique reduces the column access time and lowers power consumption. The operation of accessing data in the same row is much faster than the operation of accessing data in different rows. For example, in the case of operating a 32 Kb DRAM with 7 bits of row address and 7 bits of column address, the access time required for address change from row to row belonging to the same column is around 5 times the access time for address change from column to column belonging to the same row.
  • Methods for generating error correction codes, such as generating the parity outer codes (PO codes) of Reed-Solomon product code (RSPC) on a digital versatile disc (DVD), which requires accessing data stored in memory cells with different row addresses. As a result, extensive time is consumed in switching a current row address to a subsequent one for the error correction code generation.
  • FIG. 1 is a schematic diagram of an ECC block 10 for DVDs. The ECC block 10 includes three regions, which are composed of multiple one-byte elements Bi,j (i=0-207, j=0-181). Region 11, composed of elements Bi,j with i=0-191 and j=0-171, stores the scrambled source data, Region 12 composed of elements Bi,j with i=192-207 and j=0-171 stores the PO codes, and region 13 composed of elements Bi,j with i=0-207 and j=172-181 stores the parity inner codes (PI codes). The generation of PO code Bi,j with i=192-207 is described by the following remainder polynomial Rj(X) for each column j with j=0-171, in which Gpo(x) is the PO generation polynomial:
  • R j ( x ) = i = 192 207 B i , j x 207 - i = ( i = 0 191 B i , j x 191 - i ) x 16 mod G po ( x ) Equation ( 1 )
  • FIG. 2 is a schematic diagram illustrating an arrangement of the ECC block data stored in a DRAM. Before encoding, a sequence of source data received from a host is scrambled and buffered into the DRAM according to a mapping between the row/column address of memory words and the byte index Bi,j of the ECC block as shown in FIG. 2.
  • The storage unit of the DRAM is a word containing two bytes, and the storing sequence of the scrambled source data is {B0,0, B0,1, . . . B0,171, B1,0, . . . }.
  • According to the storing sequence, the row addresses of the scrambled source data are frequently switched to generate the PO codes, as each PO column for PO encoding is non-continuous in the direction of memory row address. The encoding process in the PO encoding direction has a low efficiency since large bandwidth and long time are required.
  • FIG. 3 is a block diagram of an error correction code generator 30 including a first memory (DRAM) 31, a multiplexer 32, and an encoder 33. Source data are provided from the host and stored in the first memory 31 of the ECC generator 30. Each column of the source data (Bi,j for i=0˜191) is sequentially read out from the first memory 31 for generating the corresponding PO codes (Bi,j for i=192˜207), in which only one byte of each word read from the first memory 31 is used. The multiplexer 32 selects one of the two bytes in each word and passes it to the encoder 33 for encoding.
  • For reading one PO column from the DRAM as shown in FIG. 2, it takes 147 times of row-crossing access (reading an element by jumping from one row to another) and 45 times of non-row-crossing access (reading an element in the same row as the previous one), adding up to the total of 192 rows of source data. Based on the previous example, row-crossing access requires five clock cycles, and non-row-crossing access only requires one clock cycle. Therefore, the total number of clock cycles for reading one PO column is 147×5+45=780 clock cycles. The ECC block has a total of 172 PO columns (i=0-171), hence the total amount of time for reading the scrambled source data in order to generate the PO codes is 172×780=134,160 clock cycles. The ratio of page-mode data access to total data access is only 45/(45+147)=23.4%, which is very inefficient.
  • SUMMARY OF THE INVENTION
  • Methods and systems for generating error correction codes are provided to reduce the accessing time required for error correction code encoding. In some embodiments, the system encodes a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity columns. A first buffer in the system sequentially stores a first section and a second section of the data block, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is greater than or equal to 2. A second buffer stores Y partial-parity columns. An encoder is used for encoding the first section read from the first buffer to generate the partial-parity columns, and then storing the partial-parity columns in the second buffer. The combination of the second section read from the first buffer and the partial-parity columns read from the second buffer are encoded to generate updated partial-parity columns. Next, the partial-parity columns in the second buffer are updated by storing the updated partial-parity columns.
  • Moreover, to reach the objectives above, the present invention provides another system for generating error correction codes. The system comprises a buffer for sequentially storing a first section and a second section of the data block. An encoder reads the first section from the buffer for encoding the first section, and reads the second section from the buffer for encoding the second section. An address mode switching circuit controls the first section to be stored in the buffer according to a first accessing strategy, controls the second section to be stored in the buffer according to a second accessing strategy, controls the encoder to read the first section from the buffer according to the second accessing strategy, and controls the encoder to read the second section from the buffer according to the first accessing strategy. The first and second accessing strategies are different from one another and are selected from column-by-column and row-by-row accessing strategies.
  • For reaching the objectives above, some embodiments of the method for encoding a data block to generate corresponding error correction codes allow generating error correction code (ECC) parity columns in a more efficient manner. The method includes sequentially storing a first section and a second section of the data block in a first buffer, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is greater than or equal to 2. A group of Y partial-parity columns are stored in a second buffer. The first section read from the first buffer is encoded to generate the partial-parity columns, and the partial-parity columns are stored in the second buffer. Next, the combination of the second section read from the first buffer and the partial-parity columns read from the second buffer are encoded to generate updated partial-parity columns. The partial-parity columns are then updated in the second buffer.
  • Furthermore, some embodiments of the method for encoding a data block to generate corresponding error correction codes allow generating error correction code (ECC) parity columns in a more efficient manner. The method includes sequentially storing a first section and a second section of the data block in a buffer according to a first accessing strategy and a second accessing strategy, respectively. Next the first section read from the buffer according to the second accessing strategy and the second section read from the buffer according to the first accessing strategy are encoded. The first and second accessing strategies are different from one another and are selected from column-by-column and row-by-row accessing strategies.
  • In some embodiments, the system for encoding a data block to generate corresponding error correction codes comprises a parity buffer and an encoder. The encoder encodes a first section of the data block to generate partial-parity columns, stores the partial-parity columns in the parity buffer, and encodes a second section of the data block with the partial-parity columns read from the parity buffer to generate new partial-parity columns. Each of the first and second sections is composed of X data rows and Y data columns, where Y is greater than or equal to 2, and X is smaller than the total number of rows in the data column.
  • These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 shows a schematic diagram of an ECC block.
  • FIG. 2 shows a schematic diagram illustrating the arrangement of the scrambled source data in a DRAM.
  • FIG. 3 shows a block diagram of a conventional error correction code generator.
  • FIG. 4 is a block diagram of an error correction code generators in accordance with an embodiment of the present invention.
  • FIG. 5 shows a diagram illustrating the schedule of data writing and data reading operation in accordance with an embodiment of the present invention.
  • FIGS. 6-10 are diagrams illustrating a data reading sequence in accordance with an embodiment of the present invention.
  • FIG. 11 illustrates an exemplary method of generating PO parity data for each word column of memory when reading the memory column-by-column.
  • FIG. 12 illustrates an exemplary method of generating PO parity data for each group of rows of memory when reading the memory row-by-row.
  • FIGS. 13-15 are block diagrams of error correction code generators in accordance with some embodiments of the present invention.
  • FIGS. 16( a)-(b) are block diagram of an error correction code generator in accordance with another embodiment of the present invention.
  • FIG. 17 illustrates a block diagram of an error correction code generator in accordance with another embodiment of the present invention.
  • FIG. 18 is a timing diagram showing steps executed during the operation of the error correction code generator shown in FIG. 17.
  • FIGS. 19-21 illustrate block diagrams of error correction code generators in accordance with some embodiments of the present invention.
  • DETAILED DESCRIPTION
  • FIG. 4 is a block diagram of an error correction code generator 40 in accordance with an embodiment of the present invention. A data buffer 44 sequentially stores a plurality of sections of source data from the data block 11 shown in FIG. 1. The data buffer 44 is preferably a static random access memory (SRAM) due to its fast access times, but other memory types can also be used. An address mode switching control circuit 42 controls the way that the source data is stored in the data buffer 44. A PO encoder 46 then encodes the source data stored in the data buffer 44 for producing the PO parity data. As will be explained below, the address mode switching control circuit 42 toggles the methods of accessing the data buffer 44 for increasing memory access speeds during the PO encoding process. The address mode switching control circuit 42 switches the memory access mode to read and write row-by-row or column-by-column.
  • FIG. 5 shows a diagram 50 illustrating the schedule of data writing and data reading operation in accordance with an embodiment of the present invention. The data block 11 of FIG. 1 is divided into a plurality of data sections including 1st, 2nd, 3rd, 4th data sections, etc. Each data section is composed of a plurality of rows and a plurality of word columns, such as 192 rows and 4 word columns (8 bytes). First, the 1st data section is written into the data buffer 44 row-by-row in step 51 starting at time T0. After the whole 1st complete data section is written into the data buffer 44, the stored data are read from the data buffer 44 column by column for generating PO parity data in step 52 starting at time T1. After the first (leftmost) column of the 1st data section is all read, the first column of the 2nd data section can be overwritten in step 53 to the same memory space of the data buffer 44 where the first column of the 1st data section was stored. The remaining columns of the 2nd data section are written to the data buffer 44 in the same fashion. Thus, the 2nd data section is effectively written to the data buffer 44 at the same time as the 1st data section is being read from the data buffer 44, while avoiding any previous data from being overwritten before it is read. After the whole 2nd data section is written to the data buffer 44, it is again read out from the data buffer 44 row-by-row in step 54 for generating PO parity data. Similarly, in step 55, each row of the 3rd data section can be overwritten to the same memory space of the data buffer 44 where corresponding rows of the 2nd data section is completely read from the data buffer 44. The columns of the stored 3rd data section are not read from the data buffer 44 in step 56 until the whole 3rd data section is written into the data buffer 44 row-by-row. This process repeats, and in step 57, the 4th data section is written to the data buffer 44 column-by-column while the 3rd data section is read from the data buffer 44 column-by-column. Please note that in the above process, an Nth data section is read while an (N+1)th data section is being written. Moreover, the simultaneous read and write processes are performed in the same direction, whether it be row-by-row or column-by-column. The writing operations for PO buffering and the reading operations for PO encoding act simultaneously without any additional PO encoder or extra memory size by accessing the data buffer 44 in the same direction. Accessing the data buffer 44 in the same direction also allows the reading and writing to take place simultaneously without adversely affecting the memory access speed.
  • FIGS. 6-10 show diagrams illustrating data reading sequences in accordance with an embodiment of the present invention. FIGS. 6-10 correspond to steps 51-55, respectively. Two horizontally adjacent bytes act as a word Wx,y i, where i is the designed number of the data section, x is a row number ranging from 0 to 191, and y is a column number ranging from 0 to 3. In this example, each data section is comprised of 192 rows and 4 word columns. First, the 1st data section is written into the data buffer 44 row-by-row as shown in FIG. 6. The data writing sequence in the data buffer 44 is shown by the arrows, and starts from the topmost row. The data reading sequence in the data buffer 44 is also shown by the arrows in FIG. 7, and starts from the leftmost column. After the first (leftmost) column of the 1st data section is completely read from the data buffer 44, the first to 48th rows of the 2nd data section can be overwritten to the same memory space of the data buffer 44 where the first column of the 1st data section was recorded. As shown in FIG. 8, words W0,0 2-W1,3 2 are sequentially stored as the serial directions of theses arrows indicate, with sequential words in a row of the 2nd data section being stored in sequential 48-rows groups of the data buffer 44. The remaining rows of the 2nd data section are written to the data buffer 44 according to the same accessing strategy. The first column of the 2nd data section is stored in the upper 48 rows of the data buffer 44, the second column of the 2nd data is stored in the next 48 rows of the data buffer 44, and so forth.
  • As shown in FIG. 9, after the entire 2nd data section is written to the data buffer 44, the stored data are read from the data buffer 44 for generating PO parity data in a sequence as the serial directions of these arrows indicate. The consecutive 48 data rows of the data buffer 44 are accessed column-by-column since each group of 48 rows of the data buffer 44 contains the stored data for one word column of the 2nd data section. After reading each of the 48-rows groups, the 3rd data section is written into the data buffer 44 row-by-row, as shown in FIG. 10.
  • After reading each data section stored in the data buffer 44, the corresponding PO parity data is calculated and written to a PO parity buffer with a size of at least 16 rows and 4 word columns. For instance, FIG. 11 illustrates how PO parity data is generated for each word column of memory when reading the data buffer 44 column-by-column. After each word column of data is read, corresponding PO parity data is written into one word column of the PO parity buffer. After the last word column has been read and encoded, and the corresponding PO parity data has been stored in the PO parity buffer, the PO parity is read out row-by-row and stored in a memory, such as a DRAM, which can be used for generating PI codes. By reading the PO parity out of the PO parity buffer row-by-row, page-mode data access can be efficiently used for enabling quick memory access.
  • FIG. 12 illustrates how PO parity data is generated for each group of rows of memory when reading the memory row-by-row. After each group of 48 rows of data is read, corresponding PO parity data is stored into the PO parity buffer. After the last group of rows of data is read, and the corresponding PO parity data is stored in the PO parity buffer, the PO parity data is read out row-by-row and stored in the DRAM.
  • FIGS. 13-15 are block diagrams of error correction code generators in accordance with some embodiments of the present invention. Differing from the error correction code generator 40 of FIG. 4, the error correction code generator 60 shown in FIG. 13 contains a DRAM 62 for supplying source data to the data buffer 44. Alternatively, as shown in the error correction code generator 70 of FIG. 14, a host 72 can also be used to supply the source data to the DRAM 62. The DRAM 62 stores the source data for the data buffer 44 to read for encoding the PO parity data. However, instead of the host 72 supplying the source data to the DRAM 62 and the DRAM 62 supplying the source data to the data buffer 44, the host 72 can also supply the source data to the data buffer 44 directly, as shown in the error correction code generator 80 of FIG. 15. A copy of the source data can also be stored in the DRAM 62 for use in encoding PI codes later. Since the encoding process performed by the PO encoder 46 is usually faster than the transmission speed of the host 72, the host 72 can supply the source data to the data buffer 44 directly without the problem of buffer overflow.
  • FIG. 16( a) is a block diagram of an error correction code generator 100 in accordance with another embodiment of the present invention. source data belonging to the same 16-word column have been used to encode the corresponding PO parity data. As shown in FIG. 1, 12 iterations of this process would be required to encode the corresponding PO parity data if 16 rows of the 192 rows of source data are encoded at a time. The PO parity data that have been encoded are then stored in the DRAM for use in calculating the PI codes. An example of the recursive PO encoding calculation is that the size of a group of source data is 16 words×16 rows, and the calculation can be described by the following recursive remainder polynomial Rk j(X) for each column j with j=0-171, in which Gpo(x) is the PO generation polynomial:
  • R j k ( x ) = i = 0 15 R i , j k x 15 - i = ( R j k - 1 ( x ) + i = 0 15 B ( 16 * k + i ) , j x 15 - i ) x 16 mod G po ( x ) = ( i = 0 16 * k + 15 B i , j x 16 * k + 15 - i ) x 16 mod G po ( x ) = ( i = 0 15 ( R i , j k - 1 + B ( 16 * k + i ) , j ) x 15 - i ) x 16 mod G po ( x ) where R j - 1 ( x ) = 0 and R j 11 ( x ) = ( i = 0 191 B i , j x 191 - i ) x 16 mod G po ( x ) = R j ( x ) Equation ( 2 )
  • FIG. 16( b) is the same as FIG. 16( a) while labeling the related symbols of Equation (2) to show how Equation (2) is realized in the block diagram of FIG. 16( a). By using the error correction code generator 100 implementing the recursive PO encoding process, two small buffers can be used. In this example, both the data buffer 104 and the parity buffer 108 only require a size of 256 words (512 bytes), which greatly reduces the amount of SRAM needed for the buffers. In addition, the partial PO parity data can be read out of the parity buffer 108 at the same time as The error correction code generator 100 uses recursive PO encoding calculation to reduce the size of buffers needed to calculate the PO parity data. A DRAM 102 supplies source data to a data buffer 104. The data buffer 104 can have a relative small size such as 16 words×16 rows in comparison with the memory size of the DRAM 102. After a first group of source data is stored in the data buffer 104, the data buffer 104 outputs the source data to a PO encoder 106, where the first group of source data is the first 16 rows of a 16-word column. Note that the source data is divided into groups having 16 words and 16 rows in this embodiment; however, various group sizes may be used to generate the PO parity data by such recursive PO encoding calculation. The PO encoder 106 generates partial PO parity data based of the first group and stores in a parity buffer 108. Meanwhile, the data buffer 104 reads in a second group of source data, which in this embodiment, is the next 16 rows of the 16-word column. The second group of source data is output from the data buffer 104 to a summing circuit 105 and the partial PO parity data stored in the parity buffer 108 is simultaneously output to the summing circuit 105. The summed result is sent to the PO encoder 106, where the PO encoder 106 generates updated partial PO parity data to be stored in the parity buffer 108. Meanwhile, a third group of source data is stored in the data buffer 104. The summing circuit 105 sums the third group of source data with the updated partial PO parity data stored in the parity buffer 108 and sends the result to the PO encoder 106 for generating the new updated partial PO parity data. This recursive PO encoding operation continues until all groups of the source data is read out of the data buffer 104, so no extra time is needed to wait for the partial PO parity data to be read. Since the data buffer 104 stores many words from the same row of the source data at a time, these adjacent words can be read with the advantage of page-mode data access. In addition, when the encoded PO data is written back to the DRAM 102, page-mode data access can be utilized for writing adjacent PO data words in the same row of memory. In addition, instead of summing up the partial PO parity data and source data to be encoded concurrently, it can reload the partial PO parity data to the PO encoder 106 before encoding the next group of source data.
  • Please refer to FIG. 2 along with FIG. 16. Reading one group of 32 columns of source data (corresponding to 16 words of source data) requires 147 times of row-crossing access and (192×16−147) times of non-row-crossing access. From the above DRAM specification showing the number of clock cycles needed to read data, the required number of cycles required for reading one group of 32 columns of source data is 147×5+(192×16−147)=3660 cycles. Since a whole ECC block has (172/32) groups of 32 PO columns, the total required cycles are (172/32)×3660=19,672 cycles, which is only 14.7% of the 134,160 cycles required in the error correction code generator 30 shown in FIG. 3. In addition, the ratio of page-mode data access to total data access is (192×16−147)/(192×16)=95%, which is a significant improvement over that of the error correction code generator 30 shown in FIG. 3. Therefore, executing the PO parity data encoding process recursively enables smaller buffers to be used, and accessing more than 1 word such as 16 words in the same row of the source data at a time enables more frequently utilizing page-mode access to significantly reduce the overall DRAM access time.
  • FIG. 17 illustrates a block diagram of an error correction code generator 110 in accordance with another embodiment of the present invention. The error correction code generator 110 is a variation of the error correction code generator 100 shown in FIG. 16, and utilizes two data buffers 114, 116 and two parity buffers 122, 124 for allowing data to be written to the buffers and read from the buffers simultaneously, thereby further increasing the PO encoding processing speed. A first de-multiplexer 112 is used for directing source data from the DRAM 102 to either a first data buffer 114 or a second data buffer 116, in turns. A first multiplexer 118 reads the source data stored in the appropriate data buffer 114, 116 and feeds it to the summing circuit 105, where the source data is combined with partial PO parity data and then send to the PO encoder 106. A second de-multiplexer 120 sends the partial PO parity data to either a first parity buffer 122 or a second parity buffer 124 for storage. When encoding another group of source data, a second multiplexer 126 reads out partial PO parity data stored in one of the parity buffers 122, 124 and sends it to the summing circuit 105.
  • Like the error correction code generator 100 of FIG. 16, the error correction code generator 110 uses a recursive algorithm for calculating encoded PO parity data. Once the PO parity data has been fully encoded, the encoded PO parity data is output from the second parity buffer 124 to the DRAM 102. The first de-multiplexer 112 and the second de-multiplexer 120 as well as the first multiplexer 118 and the second multiplexer 126 are setup with opposite logic configurations. A buffer select signal BUF_SEL is used to activate one of the first de-multiplexer 112 and the second de-multiplexer 120 at a time and to activate one of the first multiplexer 118 and the second multiplexer 126. Because the recursive calculating of the encoded PO parity data can make use of smaller buffers, the error correction code generator 110 takes advantage of this fact to use four buffers instead of two. Each of the four buffers 114, 116, 122, 124 can store 16 words×16 rows of data. To make the speed of PO encoding as fast as possible, source data can now be written to the first data buffer 114 while source data is being read from the second data buffer 116, and vice versa.
  • FIG. 18 is a timing diagram showing steps executed during the operation of the error correction code generator 110 shown in FIG. 17. The timing diagram illustrates the 12 stages needed to fully encode one set of PO parity data, with the variable k indicating the stage number. In stage k=0, a first group of buffer data B0 j(x) is stored in the first data buffer 114 in step 140. Then the first group of buffer data B0 j(x) is read out from the first data buffer 114 in step 142 while a second group of buffer data B1 j(x) is stored in the second data buffer 116 in step 144. The first group of buffer data B0 j(x) is encoded by the PO encoder 106, and in step 146 is stored in the first parity buffer 122 as a first group of partial PO parity data R0 j(x).
  • In stage k=1, a third group of buffer data B2 j(x) is stored in the first data buffer 114 in stage 150. Simultaneously, the second group of buffer data B1 j(x) is read out from the second data buffer 116 for encoding in step 154 and the first group of partial PO parity data R0 j(x) is read out from the first parity buffer 122 for encoding in step 152. A second group of partial PO parity data R1 j(x) is produced by the PO encoder 106, and is stored in the second parity buffer 124 in step 156.
  • In stage k=2, a fourth group of buffer data B3 j(x) is stored in the second data buffer 116 in stage 162. Simultaneously, the third group of buffer data B2 j(x) is read out from the first data buffer 114 for encoding in step 160 and the second group of partial PO parity data R1 j(x) is read out from the second parity buffer 124 for encoding in step 164. A third group of partial PO parity data R2 j(x) is produced by the PO encoder 106, and is stored in the first parity buffer 122 in step 166.
  • Finally, in stage k=11, a twelfth group of buffer data B11 j(x) is read out from the second data buffer 116 for encoding in step 172 and an eleventh group of partial PO parity data R10 j(x) is read out from the first parity buffer 122 for encoding in step 170. A twelfth group of partial PO parity data R11 j(x) is produced by the PO encoder 106, and is stored in the second parity buffer 124 in step 174. Since the twelfth group of partial PO parity data R11 j(x) represents the encoded PO parity data, the PO parity data is read out of the second parity buffer 124 and stored in the DRAM 102 in step 176. The above process illustrates how one group of 16 words×16 rows of encoded PO parity data is calculated. Additional groups of PO parity data are also calculated in the same way.
  • FIG. 19 illustrates a block diagram of an error correction code generator 180 in accordance with another embodiment of the present invention. Differing from the error correction code generator 100 shown in FIG. 16, the error correction code generator 180 also contains an address mode switching circuit 182 for controlling the way that the source data is stored in and read from the data buffer 104. The error correction code generator 180 combines the ideas of the recursive calculation algorithm used in the error correction code generator 100 of FIG. 16 and the alternating row-by-row and column-by-column memory accessed used in the error correction code generator 40 of FIG. 4. The combination of both of these strategies allows the PO parity data to be encoded even more efficiently.
  • FIG. 20 is a block diagram of an error correction code generator 190 in accordance with another embodiment of the present invention. Differing from the error correction code generator 100 shown in FIG. 16, the error correction code generator 190 utilizes a host 192 to supply source data to the DRAM 102. The DRAM 102 stores the source data for the data buffer 104 to read for encoding the PO parity data.
  • However, instead of the host 192 supplying the source data to the DRAM 102 and the DRAM 102 supplying the source data to the data buffer 104, the host 192 can also supply the source data to the data buffer 104 directly, as shown in the error correction code generator 200 of FIG. 21. A copy of the source data can also be stored in the DRAM 102 for use in encoding PI codes later. Since the encoding process performed by the PO encoder 106 is usually faster than the transmission speed of the host 192, the host 192 can supply the source data to the data buffer 104 directly without the problem of buffer overflow.
  • In summary, the present invention provides various circuits and methods for calculating error correction codes using a smaller memory buffer, by controlling the memory accesses to take advantage of the more efficient page-mode data access, or by simultaneously reading source data from a data buffer and writing source data to the data buffer.
  • Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, consumer electronic equipment manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . ”. Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
  • Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.

Claims (30)

1. A system for encoding a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity data, the system comprising:
a buffer for sequentially storing a first section and a second section of the data block;
an encoder reading the first section from the buffer for encoding the first section, reading the second section from the buffer for encoding the second section, and generating the ECC parity data by encoding sections of the data block; and
an address mode switching circuit for controlling the first section to be stored in the buffer according to a first accessing strategy, controlling the second section to be stored in the buffer according to a second accessing strategy, wherein the first and second accessing strategies are different from one another.
2. The system of claim 1, wherein the buffer is a static random access memory (SRAM).
3. The system of claim 1, wherein the ECC parity data are parity outer (PO) codes of Reed-Solomon product codes (RSPCs).
4. The system of claim 1, wherein successive sections of the data block are stored in the buffer in an alternating manner by toggling the first and second accessing strategies.
5. The system of claim 1, wherein the second section of the data block is stored in the buffer while the first section of the data block is being read from the buffer by the encoder.
6. The system of claim 1, further comprising a dynamic random access memory (DRAM) for storing the data block, wherein the buffer accesses the data block from the DRAM.
7. The system of claim 1, further comprising:
a DRAM; and
a host writing the data block in a data row direction in the DRAM, wherein the buffer reads sections of the data block from the DRAM.
8. The system of claim 1, further comprising:
a DRAM; and
a host simultaneously writing the data block in a data row direction in both the DRAM and the buffer.
9. The system of claim 1, further comprising:
a parity buffer, for storing partial parity data;
wherein the encoder encodes the first section to generate partial parity data, stores partial parity data in the parity buffer, encodes the second section and the partial parity data to generate new partial parity data, and stores the new partial parity data in the parity buffer.
10. A method for encoding a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity data, the method comprising:
sequentially storing a first section and a second section of the data block in a buffer according to a first accessing strategy and a second accessing strategy, respectively; and
encoding the first section read from the buffer, and encoding the second section read from the buffer,
wherein the first and second accessing strategies are different from one another.
11. The method of claim 10, wherein the buffer is a static random access memory (SRAM).
12. The method of claim 10, wherein the ECC parity data are parity outer (PO) codes of Reed-Solomon product codes (RSPCs).
13. The method of claim 10, wherein successive sections of the data block are stored in the buffer in an alternating manner by toggling the first and second accessing strategies.
14. The method of claim 10, wherein the second section of the data block is stored in the buffer while the first section of the data block is being read from the buffer for encoding.
15. The method of claim 10, further comprising storing the data block in a dynamic random access memory (DRAM), wherein the buffer accesses the data block from the DRAM.
16. The method of claim 10, further comprising storing the data block read from a host in a data row direction in a DRAM, wherein the buffer reads sections of the data block from the DRAM.
17. The method of claim 10, further comprising storing the data block read from a host in a data row direction in a DRAM and in the buffer simultaneously.
18. A method for encoding a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity data, the method comprising:
sequentially storing a first section and a second section of the data block in a first buffer, wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is an integer greater than or equal to 2 and X is an integer greater than or equal to 1, wherein first section is stored in the first buffer according to a first accessing strategy, and the second section is stored in the first buffer according to a second accessing strategy, the first and second accessing strategies being different from one another and being selected from a group consisting of row-by-row access and column-by-column access;
encoding the first section read from the first buffer to generate partial-parity data;
storing the partial-parity data in a second buffer;
encoding the second section read from the first buffer and the partial-parity data read from the second buffer to generate new partial-parity data; and
storing the new partial-parity data in the second buffer.
19. The method of claim 18, wherein the ECC parity columns are parity outer (PO) codes of Reed-Solomon product codes (RSPCs).
20. The method of claim 18, wherein each of the un-encoded sections of the Y data columns of the data block stored in the first buffer is accessed and encoded together with the partial-parity data of previous encoded sections read from the second buffer to generate new partial-parity data, and the new partial-parity data are stored in the second buffer for encoding the subsequent un-encoded section.
21. The method of claim 20, wherein the second buffer outputs the new partial-parity data as the ECC parity data corresponding to the Y data columns when all sections of the Y data columns have been encoded.
22. The method of claim 20, wherein the new partial-parity data is stored in the second buffer to update and overwrite the partial-parity data of previous encoded sections stored in the second buffer.
23. The method of claim 18, wherein successive sections of the data block are stored in the first buffer in an alternating manner by toggling the first and second accessing strategies.
24. The method of claim 18, wherein the first section is read from the first buffer for encoding according to the second accessing strategy and the second section is read from the first buffer for encoding according to the first accessing strategy.
25. The method of claim 24, wherein the second section of the data block is stored in the first buffer while the first section of the data block is being read from the first buffer for encoding.
26. The method of claim 18, further comprising storing the data block read from a host in a data row direction in a DRAM, wherein the first buffer reads sections of the data block from the DRAM.
27. The method of claim 18, further comprising storing the data block read from a host in a data row direction in a DRAM and in the first buffer simultaneously.
28. The method of claim 18, further comprising:
storing the first section of the Y data columns of the data block in a first memory of the first buffer;
storing the second section of the Y data columns of the data block in a second memory of the first buffer; and
controlling access to the first and second memories such that the first section is read from the first memory for encoding while the second memory receives and stores the second section.
29. A system for encoding a data block to generate corresponding error correction codes, wherein the data block includes a plurality of rows and columns for generating error correction code (ECC) parity data, the system comprising:
a parity buffer for storing partial-parity data;
an encoder for encoding a first section of the data block to generate the partial-parity data, storing the partial-parity data in the parity buffer, and encoding a second section of the data block and the partial-parity data read from the parity buffer to generate new partial-parity data; and
an address mode switching circuit for controlling the partial-parity data to be alternatively stored according to a first accessing strategy and a second accessing strategy, wherein the first and second accessing strategies are different from one another and are selected from a group consisting of row-by-row access and column-by-column access,
wherein each of the first and second sections is composed of X data rows and Y data columns of the data block, where Y is an integer greater than or equal to 2 and X is an integer greater than or equal to 1.
30. The system of claim 29, wherein the ECC parity columns are parity outer (PO) codes of Reed-Solomon product codes (RSPCs).
US12/116,220 2005-06-16 2008-05-07 Methods and systems for generating error correction codes Abandoned US20080209119A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/116,220 US20080209119A1 (en) 2005-06-16 2008-05-07 Methods and systems for generating error correction codes

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/160,263 US7430701B2 (en) 2005-06-16 2005-06-16 Methods and systems for generating error correction codes
US12/116,220 US20080209119A1 (en) 2005-06-16 2008-05-07 Methods and systems for generating error correction codes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/160,263 Division US7430701B2 (en) 2005-06-16 2005-06-16 Methods and systems for generating error correction codes

Publications (1)

Publication Number Publication Date
US20080209119A1 true US20080209119A1 (en) 2008-08-28

Family

ID=37519610

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/160,263 Active 2026-09-15 US7430701B2 (en) 2005-06-16 2005-06-16 Methods and systems for generating error correction codes
US12/116,220 Abandoned US20080209119A1 (en) 2005-06-16 2008-05-07 Methods and systems for generating error correction codes

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/160,263 Active 2026-09-15 US7430701B2 (en) 2005-06-16 2005-06-16 Methods and systems for generating error correction codes

Country Status (3)

Country Link
US (2) US7430701B2 (en)
CN (1) CN100489996C (en)
TW (1) TWI333651B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005364A1 (en) * 2008-07-03 2010-01-07 Seiji Higurashi Encoding method, encoding apparatus, decoding method, and decoding apparatus using block code

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101433620B1 (en) * 2007-08-17 2014-08-25 삼성전자주식회사 Decoder for increasing throughput using double buffering structure and pipelining technique and decoding method thereof
KR101466694B1 (en) * 2007-08-28 2014-11-28 삼성전자주식회사 ECC circuit, and storage device having the same, and method there-of
GB2463078B (en) * 2008-09-02 2013-04-17 Extas Global Ltd Distributed storage
US8560898B2 (en) * 2009-05-14 2013-10-15 Mediatek Inc. Error correction method and error correction apparatus utilizing the method
JP5544773B2 (en) * 2009-07-22 2014-07-09 ソニー株式会社 ERROR CORRECTION DEVICE, MEMORY CONTROL METHOD FOR ERROR CORRECTION DEVICE, AND OPTICAL DISC RECORDING / REPRODUCING DEVICE
JP2013029882A (en) * 2011-07-26 2013-02-07 Toshiba Corp Memory controller, semiconductor memory device and decoding method
CN104025193A (en) * 2011-07-27 2014-09-03 惠普发展公司,有限责任合伙企业 Method and system for reducing write-buffer capacities within memristor-based data-storage devices
US8924814B2 (en) 2012-08-28 2014-12-30 Seagate Technology Llc Write management using partial parity codes
US20140108716A1 (en) * 2012-10-16 2014-04-17 Samsung Electronics Co., Ltd. Dynamic random access memory for storing randomized data and method of operating the same
JP6367704B2 (en) * 2014-12-25 2018-08-01 株式会社バイオス Storage control system and storage control device
CN112133362B (en) * 2019-06-25 2023-05-16 华邦电子股份有限公司 Memory storage device and memory testing method thereof

Citations (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3678469A (en) * 1970-12-01 1972-07-18 Ibm Universal cyclic division circuit
US4547882A (en) * 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
US4723243A (en) * 1985-12-02 1988-02-02 Advanced Micro Devices, Inc. CRC calculation machine with variable bit boundary
US4829471A (en) * 1986-02-07 1989-05-09 Advanced Micro Devices, Inc. Data load sequencer for multiple data line serializer
US4866717A (en) * 1986-07-29 1989-09-12 Matsushita Electric Industrial Co., Ltd. Code error detecting and correcting apparatus
US5040179A (en) * 1989-08-18 1991-08-13 Loral Aerospace Corp. High data rate BCH encoder
US5161171A (en) * 1989-09-20 1992-11-03 Sony Corporation Digital data transmitting apparatus
US5276827A (en) * 1989-06-28 1994-01-04 U.S. Philips Corporation Data buffer for the duration of cyclically recurrent buffer periods
US5325372A (en) * 1990-08-07 1994-06-28 National Semiconductor Corporation Implementation of the HDLC CRC calculation
US5335234A (en) * 1990-06-19 1994-08-02 Dell Usa, L.P. Error correction code pipeline for interleaved memory system
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
US5392299A (en) * 1992-01-15 1995-02-21 E-Systems, Inc. Triple orthogonally interleaed error correction system
US5400347A (en) * 1991-08-31 1995-03-21 Samsung Electronics Co., Ltd. Apparatus and method for error correction
US5408478A (en) * 1992-08-20 1995-04-18 Sony Corporation Apparatus for reproducing a recording with reduced error correction anomalies at linking portions
US5535220A (en) * 1993-01-19 1996-07-09 Matsushita Electric Industrial Co., Ltd. Forward error correcting transmitter and receiver
US5546369A (en) * 1994-03-31 1996-08-13 Samsung Electronics Co., Ltd. Optical disk system for recording and reproducing a mini disk and standard compact discs
US5737337A (en) * 1996-09-30 1998-04-07 Motorola, Inc. Method and apparatus for interleaving data in an asymmetric digital subscriber line (ADSL) transmitter
US5841749A (en) * 1995-09-28 1998-11-24 Sony Corporation Method for recording (sending) /reproducing (receiving) data, apparatus thereof and data recording medium
US5878057A (en) * 1995-10-06 1999-03-02 Tektronix, Inc. Highly parallel cyclic redundancy code generator
US5901127A (en) * 1995-06-30 1999-05-04 Sony Corporation Data recording method and apparatus, data record medium and data reproducing method and apparatus
US5974580A (en) * 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
US6112324A (en) * 1996-02-02 2000-08-29 The Arizona Board Of Regents Acting On Behalf Of The University Of Arizona Direct access compact disc, writing and reading method and device for same
US6131178A (en) * 1997-04-15 2000-10-10 Mitsubishi Denki Kabushiki Kaisha Error correcting decoding apparatus of extended Reed-Solomon code, and error correcting apparatus of singly or doubly extended Reed-Solomon codes
US6195780B1 (en) * 1997-12-10 2001-02-27 Lucent Technologies Inc. Method and apparatus for generating cyclical redundancy code
US6260169B1 (en) * 1998-03-31 2001-07-10 Stmicroelectronics N.V. Device and method for real time correction of row data from DVD media
US6272659B1 (en) * 1998-05-18 2001-08-07 Cirrus Logic, Inc. Error correction code processor employing adjustable correction power for miscorrection minimization
US6332206B1 (en) * 1998-02-25 2001-12-18 Matsushita Electrical Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
US20020002693A1 (en) * 2000-02-18 2002-01-03 Jagadeesh Sankaran Error correction structures and methods
US6351832B1 (en) * 1999-05-28 2002-02-26 Lucent Technologies Inc. Turbo code symbol interleaver
US20020073376A1 (en) * 2000-12-12 2002-06-13 Koichi Otake Data processing method using error-correcting code and an apparatus using the same method
US6530057B1 (en) * 1999-05-27 2003-03-04 3Com Corporation High speed generation and checking of cyclic redundancy check values
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
US6631491B1 (en) * 1997-11-10 2003-10-07 Ntt Mobile Communications Network, Inc. Interleaving method, interleaving apparatus, and recording medium in which interleave pattern generating program is recorded
US6651208B1 (en) * 2000-04-04 2003-11-18 Mosel Vitelic Corporation Method and system for multiple column syndrome generation
US6701482B2 (en) * 2001-09-20 2004-03-02 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel
US6718506B1 (en) * 2000-10-02 2004-04-06 Zoran Corporation High speed DVD error correction engine
US20040163031A1 (en) * 2002-12-25 2004-08-19 Isamu Moriwaki Coding circuit for recording data on DVD disk
US20050193317A1 (en) * 2004-02-20 2005-09-01 Media Tek Inc Error correction code generator
US7058977B1 (en) * 1999-08-18 2006-06-06 Sony Corporation Copyright control of encrypted data using uncorrected errors in an error correcting code
US7103832B2 (en) * 2003-12-04 2006-09-05 International Business Machines Corporation Scalable cyclic redundancy check circuit
US7200792B2 (en) * 2001-12-21 2007-04-03 Samsung Electronics Co., Ltd. Interleaving apparatus and method for symbol mapping in an HSDPA mobile communication system
US7328396B2 (en) * 2004-05-28 2008-02-05 International Business Machines Corporation Cyclic redundancy check generating circuit

Patent Citations (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3678469A (en) * 1970-12-01 1972-07-18 Ibm Universal cyclic division circuit
US4547882A (en) * 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
US4723243A (en) * 1985-12-02 1988-02-02 Advanced Micro Devices, Inc. CRC calculation machine with variable bit boundary
US4829471A (en) * 1986-02-07 1989-05-09 Advanced Micro Devices, Inc. Data load sequencer for multiple data line serializer
US4866717A (en) * 1986-07-29 1989-09-12 Matsushita Electric Industrial Co., Ltd. Code error detecting and correcting apparatus
US5276827A (en) * 1989-06-28 1994-01-04 U.S. Philips Corporation Data buffer for the duration of cyclically recurrent buffer periods
US5040179A (en) * 1989-08-18 1991-08-13 Loral Aerospace Corp. High data rate BCH encoder
US5161171A (en) * 1989-09-20 1992-11-03 Sony Corporation Digital data transmitting apparatus
US5335234A (en) * 1990-06-19 1994-08-02 Dell Usa, L.P. Error correction code pipeline for interleaved memory system
US5325372A (en) * 1990-08-07 1994-06-28 National Semiconductor Corporation Implementation of the HDLC CRC calculation
US5400347A (en) * 1991-08-31 1995-03-21 Samsung Electronics Co., Ltd. Apparatus and method for error correction
US5392299A (en) * 1992-01-15 1995-02-21 E-Systems, Inc. Triple orthogonally interleaed error correction system
US5408478A (en) * 1992-08-20 1995-04-18 Sony Corporation Apparatus for reproducing a recording with reduced error correction anomalies at linking portions
US5535220A (en) * 1993-01-19 1996-07-09 Matsushita Electric Industrial Co., Ltd. Forward error correcting transmitter and receiver
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
US5546369A (en) * 1994-03-31 1996-08-13 Samsung Electronics Co., Ltd. Optical disk system for recording and reproducing a mini disk and standard compact discs
US5901127A (en) * 1995-06-30 1999-05-04 Sony Corporation Data recording method and apparatus, data record medium and data reproducing method and apparatus
US5870366A (en) * 1995-09-28 1999-02-09 Sony Corporation Method for recording (sending) /reproducing (receiving) data, apparatus thereof, and data recording medium
US5841749A (en) * 1995-09-28 1998-11-24 Sony Corporation Method for recording (sending) /reproducing (receiving) data, apparatus thereof and data recording medium
US5878057A (en) * 1995-10-06 1999-03-02 Tektronix, Inc. Highly parallel cyclic redundancy code generator
US6112324A (en) * 1996-02-02 2000-08-29 The Arizona Board Of Regents Acting On Behalf Of The University Of Arizona Direct access compact disc, writing and reading method and device for same
US5737337A (en) * 1996-09-30 1998-04-07 Motorola, Inc. Method and apparatus for interleaving data in an asymmetric digital subscriber line (ADSL) transmitter
US6131178A (en) * 1997-04-15 2000-10-10 Mitsubishi Denki Kabushiki Kaisha Error correcting decoding apparatus of extended Reed-Solomon code, and error correcting apparatus of singly or doubly extended Reed-Solomon codes
US5974580A (en) * 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
US6631491B1 (en) * 1997-11-10 2003-10-07 Ntt Mobile Communications Network, Inc. Interleaving method, interleaving apparatus, and recording medium in which interleave pattern generating program is recorded
US6195780B1 (en) * 1997-12-10 2001-02-27 Lucent Technologies Inc. Method and apparatus for generating cyclical redundancy code
US6332206B1 (en) * 1998-02-25 2001-12-18 Matsushita Electrical Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
US6260169B1 (en) * 1998-03-31 2001-07-10 Stmicroelectronics N.V. Device and method for real time correction of row data from DVD media
US6272659B1 (en) * 1998-05-18 2001-08-07 Cirrus Logic, Inc. Error correction code processor employing adjustable correction power for miscorrection minimization
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
US6530057B1 (en) * 1999-05-27 2003-03-04 3Com Corporation High speed generation and checking of cyclic redundancy check values
US6351832B1 (en) * 1999-05-28 2002-02-26 Lucent Technologies Inc. Turbo code symbol interleaver
US7058977B1 (en) * 1999-08-18 2006-06-06 Sony Corporation Copyright control of encrypted data using uncorrected errors in an error correcting code
US20020002693A1 (en) * 2000-02-18 2002-01-03 Jagadeesh Sankaran Error correction structures and methods
US6651208B1 (en) * 2000-04-04 2003-11-18 Mosel Vitelic Corporation Method and system for multiple column syndrome generation
US6718506B1 (en) * 2000-10-02 2004-04-06 Zoran Corporation High speed DVD error correction engine
US20020073376A1 (en) * 2000-12-12 2002-06-13 Koichi Otake Data processing method using error-correcting code and an apparatus using the same method
US6701482B2 (en) * 2001-09-20 2004-03-02 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel
US7200792B2 (en) * 2001-12-21 2007-04-03 Samsung Electronics Co., Ltd. Interleaving apparatus and method for symbol mapping in an HSDPA mobile communication system
US20040163031A1 (en) * 2002-12-25 2004-08-19 Isamu Moriwaki Coding circuit for recording data on DVD disk
US7103832B2 (en) * 2003-12-04 2006-09-05 International Business Machines Corporation Scalable cyclic redundancy check circuit
US20050193317A1 (en) * 2004-02-20 2005-09-01 Media Tek Inc Error correction code generator
US7328396B2 (en) * 2004-05-28 2008-02-05 International Business Machines Corporation Cyclic redundancy check generating circuit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005364A1 (en) * 2008-07-03 2010-01-07 Seiji Higurashi Encoding method, encoding apparatus, decoding method, and decoding apparatus using block code

Also Published As

Publication number Publication date
CN1881455A (en) 2006-12-20
TW200703257A (en) 2007-01-16
US20070011590A1 (en) 2007-01-11
US7430701B2 (en) 2008-09-30
CN100489996C (en) 2009-05-20
TWI333651B (en) 2010-11-21

Similar Documents

Publication Publication Date Title
US7430701B2 (en) Methods and systems for generating error correction codes
KR100370239B1 (en) Memory device for applying to high speed block pipelined reed-solomon decoder and method of memory access and reed-solomon decoder having the memory device
US7454691B2 (en) Method and system for encoding digital data for optical recording system
US6772385B2 (en) Error-correcting device and decoder enabling fast error correction with reduced circuit scale
US8102996B2 (en) Scrambler, descrambler and method, and disc apparatus
JP3071828B2 (en) Data processing method for generating error correction product code block, data processing method for recording the data on a recording medium, and processing apparatus for the data
JP3064338B2 (en) Buffer unit for data unit group
KR890004328A (en) Semiconductor memory and integrated circuit with on-chip error correction device
JPH1198462A (en) Data reproduction device
KR100499467B1 (en) Block interleaving method, and apparatus for the same
US7774676B2 (en) Methods and apparatuses for generating error correction codes
US7823049B2 (en) Methods and apparatuses for generating parity symbols for data block
US7415660B2 (en) Error correction code generator
US5774648A (en) Address generator for error control system
US20070067702A1 (en) Method and apparatus for syndrome generation
JP2007328894A (en) Semiconductor storage device, and method of inspecting thereof
US6195781B1 (en) Error correction code calculator
KR100691065B1 (en) Method and apparatus for generating error correction codes for data recorded on high density optical medium and correcting error using the codes
CN117595965A (en) Interleaving circuit and communication device
KR0183171B1 (en) Interleaver and deinterleaver and method thereof
JP2006236534A (en) Information recording and reproducing method and device
JP2001117825A (en) Data recording device and data reproducing device
JP2023032889A (en) Semiconductor device
EP0658983B1 (en) Encoding or decoding device comprising a paged memory
JP3644452B2 (en) MEMORY ACCESS METHOD AND MEMORY CONTROL DEVICE

Legal Events

Date Code Title Description
AS Assignment

Owner name: MEDIATEK INC.,TAIWAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHEN, HONG-CHING;REEL/FRAME:020916/0427

Effective date: 20050609

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION