WO2015100917A1 - 实现数据纠错的方法及装置、计算机存储介质 - Google Patents

实现数据纠错的方法及装置、计算机存储介质 Download PDF

Info

Publication number
WO2015100917A1
WO2015100917A1 PCT/CN2014/077931 CN2014077931W WO2015100917A1 WO 2015100917 A1 WO2015100917 A1 WO 2015100917A1 CN 2014077931 W CN2014077931 W CN 2014077931W WO 2015100917 A1 WO2015100917 A1 WO 2015100917A1
Authority
WO
WIPO (PCT)
Prior art keywords
check code
bit
data
index number
bits
Prior art date
Application number
PCT/CN2014/077931
Other languages
English (en)
French (fr)
Inventor
黄义远
Original Assignee
深圳市中兴微电子技术有限公司
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 深圳市中兴微电子技术有限公司 filed Critical 深圳市中兴微电子技术有限公司
Priority to EP14876707.2A priority Critical patent/EP3082046B1/en
Priority to US15/108,936 priority patent/US10141954B2/en
Publication of WO2015100917A1 publication Critical patent/WO2015100917A1/zh

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Definitions

  • the present invention relates to error correction techniques in the field of codec, and more particularly to a method and apparatus for implementing data error correction, and a computer storage medium. Background technique
  • the error detection and correction (ECC) technique in random access memory is mainly implemented by Hamming code, which has the function of correcting lbit errors and detecting 2bits errors.
  • the above ECC technology is usually implemented for a certain data bit width.
  • a typical data bit width is 32 bits, 64 bits, 128 bits, etc., and the data bits of the original data can be regarded as a matrix arranged in rows and columns.
  • the row and column are parity-generated to generate a check code, and the check code is written to the RAM together with the original data for storage.
  • the original data is read out from the RAM together with the check code, and a new check code can be generated by using the same algorithm. Further, by comparing the difference between the two check codes, the read data can be determined. Wrong lines and columns appear to determine the wrong data bit when reading data.
  • embodiments of the present invention are directed to providing a method and apparatus for implementing data error correction, and a computer storage medium, which can improve the versatility of the algorithm and reduce the size of the check code.
  • An embodiment of the present invention provides a method for implementing data error correction, where the method includes: Setting an index number for each data bit, and generating a first check code according to the index number; generating a second check code according to the first check code, comparing the first check code and the first The second check code determines the data bit in which the error occurred, and corrects the data bit in which the error occurred.
  • the index number is set for each data bit, respectively: according to the order of the data bits, a binary index number is set for each data bit.
  • the generating the first check code according to the index number comprises: acquiring a first check code generation formula according to the binary index number, and generating a first check according to the first check code generation formula code;
  • the generating the second check code according to the first check code includes:
  • the comparing the first check code and the second check code to determine an erroneous data bit, and correcting the erroneous data bit including:
  • An embodiment of the present invention further provides an apparatus for implementing data error correction, where the apparatus includes: a module, a first check code generating module, a second check code generating module, and a data processing module; wherein
  • the setting module is configured to separately set an index number for each data bit
  • the first check code generating module is configured to generate a first check code according to the index number, and the second check code generating module is configured to generate a second check code according to the first check code ;
  • the data processing module is configured to compare the first check code and the second check code to determine an erroneous data bit, and correct the erroneous data bit.
  • the setting module is configured to set a binary index number for each data bit according to the order of the data bits.
  • the first check code generating module is configured to perform an exclusive OR operation on the data bit of each index bit corresponding to the binary index number of each data bit to obtain each index number.
  • the first check code generation formula of the bit, and the result of the first check code generation formula of each index number bit is respectively used as a corresponding bit of the first check code.
  • the second check code generating module is configured to perform an exclusive OR operation on the data bit of each data bit corresponding to each index bit in a binary index number of each data bit of the input data. Obtaining a second check code generation formula of each index number bit, and using the result of the second check code generation formula of each index number bit as a corresponding bit of the second calibration code.
  • the data processing module is configured to perform an exclusive OR operation on each corresponding bit of the first check code and the second check code to obtain a corresponding bit of the third check code, according to the third check code. Determining, when the first check code is inconsistent with the corresponding bit of the second check code, determining, according to the first check code generation formula of the corresponding bit of the first check code, the data bit in which the error occurs, and performing the data bit in which the error occurs correct.
  • Embodiments of the present invention also provide a computer storage medium in which computer executable instructions are stored, the computer executable instructions being used to perform the above method.
  • the method and device for implementing data error correction according to an embodiment of the present invention and a computer storage medium, respectively, setting an index number for each data bit, and generating a first check code according to the index number; according to the first check code Generating a second check code, comparing the first check code and the second check code to determine an erroneous data bit, and correcting the erroneous data bit; thus, being able to base each data bit Obtaining a first check code by respectively setting an index number, and further obtaining a second check code based on the first check code, determining a data bit in which an error occurs by comparing the first check code and the second check code,
  • the process is not limited by the data bit width, and the generation of each check bit of the first check code and the check bit of the second check code is only part of the data participation. Therefore, the method can reduce the check
  • FIG. 1 is a schematic flowchart of an implementation of a method for implementing data error correction according to the present invention
  • FIG. 2 is a schematic diagram of data bits of 8-bit data according to an embodiment of the present invention
  • FIG. 3 is a schematic diagram showing the correspondence between data bits of a 8-bit data and a binary index number according to an embodiment of the present invention
  • FIG. 4 is a schematic structural diagram of an embodiment of an apparatus for implementing data error correction according to the present invention
  • FIG. 5 is a schematic diagram of a circuit frame of an apparatus for implementing data error correction according to the present invention.
  • an index number is set for each data bit, and a first check code is generated according to the index number; a second check code is generated according to the first check code, and the first school is compared.
  • the code check and the second check code determine the data bit in which the error occurred, and correct the data bit after the error is generated.
  • the read/write selection signal determines whether the data is currently being read or written, and sets a binary index number for each data bit, the binary index number.
  • Check digit It can be seen that the number of bits of the first check code is the same as the number of bits of the binary index number.
  • the write data does not need to be error-corrected. Therefore, after the first check code and the second check code are obtained, the written data can be directly output; when reading the data, if a certain data bit has an error, Then, the corresponding bit in the second check code will change; the data bit in which the error occurs can be determined by comparing the first check code and the second check code; wherein, the read/write selection signal can control the entire circuit to be performed The error correction operation is performed to generate the first check code and the second check code.
  • the check check code is further set, and the first check code is determined during the access process by checking the change of the check code. Whether an error occurs; if an error occurs in the first check code, no error correction operation is required, and the first check code error is directly reported to the operating system.
  • Embodiments of the present invention provide a method for implementing data error correction, where data input can be Is the write data or the read data, and the read/write selection signal determines whether the current execution is read data or write data;
  • FIG. 1 is a schematic flowchart of the implementation of the method for implementing data error correction according to the present invention, as shown in FIG. Taking 8-bit data as an example, the method includes the following steps:
  • Step 101 Set an index number for each data bit, and generate a first check code according to the index number
  • FIG. 2 is a schematic diagram of data bits of 8-bit data according to an embodiment of the present invention, and the 8-bit data is from ⁇ to
  • the upper bits are respectively labeled as D0, D1, D2, D3, D4, D5, D6, and D7; therefore, the decimal index numbers corresponding to the 8-bit data from the lower to the upper are 0, 1, 2, 3, 4, 5, respectively. 6, 7; according to the order of the data bits, a binary index number corresponding to the decimal index number is respectively set for each bit of the 8-bit data, and the decimal index numbers 0-7 can respectively use three-digit binary numbers.
  • the binary index numbers corresponding to the 8-bit data from the lower bits to the upper bits are: 000, 001, 010, 011, 100, 101, 110, 111; each bit data represented by the three-digit binary number
  • the binary index number is the high, low, and low bits of the binary index number from left to right.
  • the first check code may also be represented by a three-digit binary number, corresponding to the The first check code represented by the three-digit binary number is, from left to right, the upper bit C 2 , the lower low bit d, and the lower bit C 0 of the first check code.
  • an exclusive OR operation is performed on the data bits of each index number corresponding to 1 or 0, and the first check code generation formula of each index number bit is obtained, for example:
  • the X-bit operation is performed on the data bits of the index number, the lower-order bit, and the lower-order bit, and the first check code generation formula of each index number bit is obtained.
  • C 2 D 4 A D 5 A D 6 A D 7 ( 3 ) wherein the C 2 represents the result of an exclusive OR operation of all data bits having a high order bit of 1 and the D 4 A D 5 A D 6 A D 7 is a high first code generation formula;
  • a first total check code may be set for the first check code, specifically, as shown in the formula (4):
  • the C a represents a result of performing an exclusive OR operation on all data bits, and is a first total check code, wherein the D ⁇ D ⁇ D ⁇ D ⁇ D ⁇ DsAD ⁇ D? is the first total check code generation formula. ;
  • C C 2 d Co ( 5 ) wherein C represents a first check code, C.
  • C represents a first check code
  • C The result of performing an exclusive OR operation on the data bits whose lower bits are 1 in all binary index numbers, and the result of performing an exclusive OR operation on the data bits of all binary index numbers lower by one, and C 2 represents the data bits of all binary index numbers with a high order of 1.
  • the result of the first check code generation formula of each index number bit is used as the first check code.
  • Corresponding bits that is, the result C Q of the lower first code generation formula D ⁇ D ⁇ D ⁇ D is taken as the lower bit of the first check code; the first check code of the second lower order is generated by the formula D 2 A
  • the result of D 3 A D 6 A D 7 ( ⁇ is the next lower order of the first check code; the result C 2 of the first check code generation formula D 4 A D 5 A D 6 A D 7 of the upper order is taken as the first The upper bits of the check code; thus, the respective check bits of the first check code are obtained.
  • Step 102 Generate a second check code according to the first check code, compare the first check code and the second check code to determine an error bit, and perform the error data bit. Correct
  • the second check code when reading data or writing data, is generated by using an algorithm similar to the foregoing generating the first check code.
  • the second check code may also be represented by a three-digit binary number.
  • the second check code represented by the three-digit binary number is, from left to right, the high order c, 2 and the second lower bit c lower bits c, 0 of the second check code.
  • the data bits of the corresponding bits of each index number are XORed, and the second check code generation formula of each index number bit is obtained.
  • the data bits of the upper, lower, and lower bits of each index number are XORed to obtain the second check code generation formula of each index number.
  • the C'2 represents a result of performing an exclusive OR operation on the data bits of all the binary index numbers of the input data
  • the D' 4 A D'5 A D'6 A D' 7 is the second highest position.
  • a check code generation formula further, a second total check code may be set for the second check code, specifically, as shown in formula (9):
  • C' represents a second check code, C'.
  • the result of the second check code generation formula of each index number bit of the input data is As the corresponding bit of the second check code, that is: the second check code generation formula of the lower bit
  • the written data is directly output after obtaining the first check code and the second check code; when reading data, if a data bit has an error, the second The corresponding bit in the check code will change.
  • the data bit in which the error occurs can be determined.
  • So C 0 A C'o ( 11 ) wherein the S Q represents a result of performing an exclusive OR operation on the lower bit of the first check code and the lower bit of the second check code, and the C Q A C, Q is a low bit Third check code generation formula;
  • a third total check code may be set for the third check code, specifically, as shown in the formula (14):
  • the s a represents a result of performing an exclusive OR operation between the first total check code and the second total check code, and the C a A C, a is a third total check code generation formula
  • S 1 S Q When reading data, if a bit in S 2 , S 1 S Q is 1, it indicates the C 2 bit of the corresponding first check code and the C ' 2 bit of the second check code, or the first check code. The bit is not coincident with the d bit of the second check code, or the C Q bit of the first check code and the C' Q bit of the second check code.
  • the case where the S a bit is 1 is ignored, and only S 2 is considered.
  • S 1 S When the bit is 1, that is, only the case where a certain data bit corresponding to C 2 , d, or C 0 is in the process of reading data is considered.
  • the S Q bit is 1, the S 2 bit, and the Si bit is 0, it means that the C Q bit of the first check code and the C' Q bit of the second check code are inconsistent, the first school The coded bit is identical to the C' of the second check code, and the C 2 bit of the first check code and the C, 2 bit of the second check code are identical, according to the first check code generation formula of the C Q bit
  • a certain data bit in D 1 D 3 , D 5 , D 7 has an error in reading data, that is: one of the data bits with a low bit of 1 in all binary index numbers has an error;
  • the Si bit is 1, the S Q bit and the S 2 bit are 0, it means that the bit of the first check code and the bit of the second check code are inconsistent, the C Q bit of the first check code and the second check code C 'Q bit, the first check code and the C 2 bit and a second check code C, 2 bit, the apparent D 2, D 3 bits in accord
  • the S 2 bit is 1, the S Q bit and the Si bit are 0, it means that the c 2 bit of the first check code and the C, 2 bit of the second check code are inconsistent, and the C Q bit of the first check code is The C and Q bits of the second check code are identical, and the bit of the first check code is consistent with the C' of the second check code.
  • the first check code generation formula of the C 2 bit, D 4 , D 5 A data bit in D 6 or D 7 has an error in reading data, that is: one of the data bits with a high bit position of 1 in the binary index number has an error; and then, an error is inferred based on the corresponding first check code generation formula.
  • the range of data bits is: one of the data bits with a high bit position of 1 in the binary index number has an error; and then, an error is inferred based on the corresponding first check code generation formula.
  • the decimal index number of the D 0 bit is 0, the binary index number is 000, and the Do bit is the only data bit that does not appear in the first check code generation formula of the C 2 bit, the bit, and the Co bit.
  • the C 2 S, bit, C. Bits are all 0, and S a is 1, it indicates D 0 bit error occurs when reading the data; if S is C 2, bit, Co bits are not 0, and S a is 0, that means that when the read data The two data bits have an error. At this point, the error correction capability is exceeded, and the error is reported directly to the operating system. The operating system determines whether the data needs to be discarded and re-read.
  • the first parity bits C 2 code known formula, C a first check code of formula 2 only D 4, D 5, D 6 , D 7 participation;
  • the C 2 bit can be omitted, since the 4 bits of data do not have D 4 , D 5 , D 6 , D 7 bits, therefore, by generating the first check code and
  • the corresponding data bit in the second check code generation formula is filled with 0 or 1, which may not affect the final result of the third check code, so that the method can be simply multiplexed to a data bit width of 4 bits.
  • embodiments of the present invention can be extended to applications where the data bit width is 32 bits, 64 bits, 128 bits, or higher by similar methods.
  • the check check code since the first check code may also have an error during the access process, the check check code may be further set, and the process of accessing the first check code is determined by checking the change of the check code. Whether there is an error in it; specifically, as shown in formula (16):
  • C ⁇ d ⁇ C (16) wherein, the representation check check code, C 2 represents the result of performing an exclusive OR operation on all data bits with a high order bit of 1 and indicating that all binary index numbers have a lower order of 1 As a result of the exclusive OR operation of the data bits, C Q represents the result of exclusive-ORing the data bits with all the lower bits of the binary index number being 1, and C a represents the result of the exclusive-OR operation of all the data bits.
  • An embodiment of the present invention provides an apparatus for implementing data error correction, wherein the input of data may be write data or read data, and the read/write selection signal determines whether the current execution is read data or write data, that is, read/ The write selection signal controls the entire circuit to perform an error correction operation, or performs a first check code and a second check code operation;
  • FIG. 4 is a schematic structural diagram of an embodiment of an apparatus for implementing data error correction according to the present invention
  • the setting module 43 is configured to separately set an index number for each data bit
  • the setting module 43 is configured to set a binary index number for each data bit according to the order of the data bits.
  • the first check code generating module 44 is configured to generate a first check code according to the index number. Specifically, when reading data or writing data, the first check code generating module 44 is configured to For each binary bit number of the data bit, an exclusive OR operation is performed on the data bits of the corresponding bits of each index number, and the first check code generation formula of each index number bit is obtained, and each index number bit is obtained. The result of the first check code generation formula is respectively used as the corresponding bit of the first check code.
  • the first check code generating module 44 is further configured to obtain a first total check code by performing an exclusive OR operation on all data bits.
  • the read data first check code generation module and the write data first check code generation module may be respectively set, the read data first check code generation module and write
  • the data first check code generating modules independently generate corresponding first check codes; for applications that do not need to perform both read operations and write operations, only one first check code generating module may be set to reduce hardware logic. scale.
  • the second check code generating module 45 is configured to generate a second check code according to the first check code
  • the second check code generating module 45 when reading data or writing data, is configured to be a binary index number of each data bit of the input data, and is respectively 1 or 0 in the corresponding bit of each index number.
  • the data bits are XORed to obtain a second check code generation formula of each index number bit, and the results of the second check code generation formula of each index number bit are respectively used as corresponding bits of the second check code.
  • a read data second check code generation module and a write data second check code generation module may be respectively set, the read data second check code generation module and write
  • the data second check code generating modules independently generate corresponding second check codes; for applications that do not need to perform simultaneous read and write operations, only one second check code generating module may be set to reduce hardware logic. scale.
  • the second check code generating module 45 is further configured to obtain a second total check code by performing an exclusive OR operation on all data bits of the input data.
  • the data processing module 46 is configured to compare the first check code and the second check code to determine a data bit in which an error occurs, and correct the data bit in which the error occurs; Specifically, when the data is read, the data processing module 46 is configured to perform an exclusive OR operation on each corresponding bit of the first check code and the second check code to obtain a corresponding bit of the third check code, according to the When the third check code determines that the first check code is inconsistent with the corresponding bit of the second check code, determining the data bit in which the error occurs according to the first check code generation formula of the corresponding bit of the first check code, and the error occurs. The data bits are corrected, and then the corrected data is output; since no error correction operation is required when writing the data, the data processing module 46 directly outputs the written data.
  • the read operation and the write operation can share one data processing module.
  • the device may further include: a data read/write module 41, a multiplexing module 42;
  • the data read/write module 41 is configured to transmit data of a read operation or a write operation
  • the reading data module and the write data module may be respectively set, and the read data module and the write data module respectively transmit the data of the read operation or the write operation.
  • the multiplex module 42 is configured to transmit data of the data read/write module
  • the read/write selection signal enables a write operation
  • the / write select signal enables the read operation, and the multiplex module 42 selects the data of the data read/write module to be input to the setup module 43.
  • the multiplex module 42 can be implemented by a multiplexer; the data read/write module 41, the setting module 43, the first check code generating module 44, the second check code generating module 45, and
  • the data processing module 46 can be implemented by a central processing unit (CPU), a digital signal processor (DSP), or a Field Programmable Gate Array (FPGA).
  • CPU central processing unit
  • DSP digital signal processor
  • FPGA Field Programmable Gate Array
  • the embodiment of the invention further provides a computer storage medium, wherein the computer is executable
  • the method for implementing data error correction described in the embodiments of the present invention may also be stored in a computer readable storage medium if it is implemented in the form of a software function module and sold or used as a stand-alone product.
  • a computer readable storage medium if it is implemented in the form of a software function module and sold or used as a stand-alone product.
  • embodiments of the present application can be provided as a method, system, or computer program product.
  • the application can be in the form of an entirely hardware embodiment, an entirely software embodiment, or a combination of software and hardware.
  • the application can be in the form of one or more computer program products embodied on a computer usable storage medium having computer usable program code, including but not limited to a USB flash drive, a removable hard drive, a read only memory (ROM, Read-Only Memory), disk storage, CD-ROM, optical storage, etc.
  • the computer program instructions can also be stored in a computer readable memory that can direct a computer or other programmable data processing device to operate in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture comprising the instruction device.
  • the apparatus implements the functions specified in one or more blocks of a flow or a flow and/or block diagram of the flowchart.
  • These computer program instructions can also be loaded onto a computer or other programmable data processing device such that a series of operational steps are performed on a computer or other programmable device to produce computer-implemented processing for execution on a computer or other programmable device. Instructions are provided for implementation The steps of a function specified in a block or blocks of a flow or a flow and/or a block diagram of a flow chart.
  • the embodiment of the present invention further provides a computer storage medium, wherein a computer program is stored, and the computer program is used to execute the method for implementing data error correction described in the method embodiment of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

提供了一种实现数据纠错的方法及装置、计算机存储介质。该方法包括:为每一数据位分别设置索引号,并根据所述索引号生成第一校验码;根据所述第一校验码生成第二校验码,比较所述第一校验码和所述第二校验码确定出现错误的数据位,对所述出现错误的数据位进行纠正。该装置包括:设置模块,配置为为每一数据位分别设置索引号;第一校验码生成模块,配置为根据所述索引号生成第一校验码;第二校验码生成模块,配置为根据所述第一校验码生成第二校验码;数据处理模块,配置为比较所述第一校验码和所述第二校验码确定出现错误的数据位,对所述出现错误的数据位进行纠正。

Description

实现数据纠错的方法及装置、 计算机存储介质 技术领域
本发明涉及编解码领域中的糾错技术, 尤其涉及一种实现数据糾错的 方法及装置、 计算机存储介质。 背景技术
目前, 随机存储器 ( RAM, Random Access Memory ) 中的错误检查与 纠正 ( ECC, Error Checking and Correcting )技术主要釆用汉明码的方式实 现, 该技术具有纠正 lbit错误、 检测 2bits错误的功能。 上述 ECC技术通 常针对一定的数据位宽实现, 典型的数据位宽有 32位、 64位、 128位等, 可以将原数据的数据位看成按照行和列进行排列的矩阵, 通过对所述行和 列进行奇偶校验产生校验码, 并将该校验码与原数据一起写入 RAM 中保 存。 读数据时, 原数据和校验码一起从所述 RAM中读出来, 通过釆用同样 的算法可以产生新校验码, 进一步地, 通过比较上述两个校验码的差异能 够确定读数据时出现错误的行和列, 进而确定读数据时出现错误的数据位。
在上述方法中, 每一位校验码的产生都需要数据位的高位部分和低位 部分的参与, 当数据位宽发生变化时, 由所述矩阵生成的多项式也需要作 出相应的改变, 因此, 该方法的通用性:^氐。 发明内容
有鉴于此, 本发明实施例期望提供一种实现数据糾错的方法及装置、 计算机存储介质, 能够提高算法的通用性, 减少校验码的规模。
为达到上述目的, 本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种实现数据纠错的方法, 所述方法包括: 为每一数据位分别设置索引号, 并根据所述索引号生成第一校验码; 根据所述第一校验码生成第二校验码, 比较所述第一校验码和所述第二校 验码确定出现错误的数据位, 对所述出现错误的数据位进行纠正。
较佳的, 所述为每一数据位分别设置索引号, 为: 按照数据位的高低 顺序, 为每一数据位分别设置二进制索引号。
较佳的, 所述根据所述索引号生成第一校验码, 包括: 根据所述二进 制索引号获取第一校验码生成式, 根据所述第一校验码生成式生成第一校 验码;
所述根据所述二进制索引号获取第一校验码生成式, 根据所述第一校 验码生成式生成第一校验码, 为: 为每一数据位的二进制索引号, 分别对 各索引号对应位中为 1或 0的数据位进行异或运算, 获取各索引号位的第 一校验码生成式, 并将各索引号位的第一校验码生成式的结果分别作为第 一校验码的对应位。
较佳的, 所述根据第一校验码生成第二校验码, 包括:
为输入数据的每一数据位的二进制索引号, 分别对各索引号对应位中 为 1或 0的数据位进行异或运算, 获取各索引号位的第二校验码生成式, 并将各索引号位的第二校验码生成式的结果分别作为第二校验码的对应 位。
较佳的, 所述比较所述第一校验码和所述第二校验码确定出现错误的 数据位, 对所述出现错误的数据位进行纠正, 包括:
对第一校验码和第二校验码的每一对应位进行异或运算, 获得第三校 验码的对应位, 根据第三校验码确定第一校验码与第二校验码的对应位不 一致时, 根据第一校验码对应位的第一校验码生成式确定出现错误的数据 位, 对所述出现错误的数据位进行纠正。
本发明实施例还提供了一种实现数据糾错的装置, 所述装置包括: 设 置模块、 第一校验码生成模块、 第二校验码生成模块、 以及数据处理模块; 其中,
所述设置模块, 配置为为每一数据位分别设置索引号;
所述第一校验码生成模块, 配置为根据所述索引号生成第一校验码; 所述第二校验码生成模块, 配置为根据所述第一校验码生成第二校验 码;
所述数据处理模块, 配置为比较所述第一校验码和所述第二校验码确 定出现错误的数据位, 对所述出现错误的数据位进行纠正。
较佳的, 所述设置模块, 配置为按照数据位的高低顺序, 为每一数据 位分别设置二进制索引号。
较佳的, 所述第一校验码生成模块, 配置为为每一数据位的二进制索 引号, 分别对各索引号对应位中为 1或 0的数据位进行异或运算, 获取各 索引号位的第一校验码生成式, 并将各索引号位的第一校验码生成式的结 果分别作为第一校验码的对应位。
较佳的, 所述第二校验码生成模块, 配置为为输入数据的每一数据位 的二进制索引号, 分别对每一索引号对应位中为 1或 0的数据位进行异或 运算, 获取各索引号位的第二校验码生成式, 并将各索引号位的第二校验 码生成式的结果分别作为第二校睑码的对应位。
较佳的, 所述数据处理模块, 配置为对第一校验码和第二校验码的每 一对应位进行异或运算, 获得第三校验码的对应位, 根据第三校验码确定 第一校验码与第二校验码的对应位不一致时, 根据第一校验码对应位的第 一校验码生成式确定出现错误的数据位, 对所述出现错误的数据位进行纠 正。
本发明实施例还提供了一种计算机存储介质, 其中存储有计算机可执 行指令, 所述计算机可执行指令用于执行上述的方法。 本发明实施例提供的实现数据纠错的方法及装置、 计算机存储介质, 为每一数据位分别设置索引号, 并根据所述索引号生成第一校验码; 根据 所述第一校验码生成第二校验码, 比较所述第一校验码和所述第二校验码 确定出现错误的数据位, 对所述出现错误的数据位进行糾正; 如此, 能够 基于为每一数据位分别设置的索引号获得第一校验码, 进而基于所述第一 校验码获得第二校验码, 通过比较第一校验码和第二校验码确定出现错误 的数据位, 由于上述过程不受数据位宽的限制, 且第一校验码各校验位和 第二校验码各校验位的生成只有部分数据的参与, 因此, 该方法在减少校 验码规模的同时可以复用到多种场合, 具有较高的通用性。 附图说明
图 1为本发明实现数据纠错的方法实施例的实现流程示意图; 图 2为本发明实施例 8位数据的数据位示意图;
图 3为本发明实施例 8位数据的数据位与二进制索引号的对应关系示 意图;
图 4为本发明实现数据纠错的装置实施例的组成结构示意图; 图 5为本发明实现数据纠错的装置实施例的电路框架示意图。 具体实施方式
本发明实施例中, 为每一数据位分别设置索引号, 并根据所述索引号 生成第一校验码; 根据所述第一校验码生成第二校验码, 比较所述第一校 验码和所述第二校验码确定出现错误的数据位, 将该出现错误的数据位进 行纠正后输出。
本发明实施例中, 当需要读数据或写数据时, 读 /写选择信号确定当前 执行的是读数据还是写数据, 并为每一数据位分别设置二进制的索引号, 所述二进制的索引号与数据位为一一对应的关系。 为每一数据位的二进制索引号, 分别对各索引号对应位中为 1或 0的 数据位进行异或运算, 获得各索引号位的第一校验码生成式; 在获取各索 引号位的第一校验码生成式之后, 将所述各索引号位的第一校验码生成式 的结果分别作为第一校验码的对应位, 这样, 就可以得到第一校验码的各 个校验位; 可以看出, 第一校验码的位数与二进制索引号的位数相同。
在读数据或写数据时, 釆用与上述生成第一校验码类似的算法生成第 二校验码, 对应的, 第二校验码的位数与第一校验码的位数和二进制索引 号的位数相同。
在实际应用中, 写数据不需要进行纠错, 因此, 在获得第一校验码和 第二校验码后可以直接将写入的数据输出; 在读数据时, 如果某一数据位 出现错误, 则第二校验码中的对应位将发生变化; 通过比较第一校验码和 第二校验码的方式可以确定出现错误的数据位; 其中, 读 /写选择信号可以 控制整个电路是进行糾错操作, 还是进行生成第一校验码和第二校验码操 作。
具体的, 在读数据时, 对第一校验码和第二校验码的每一对应位进行 异或运算可以获得第三校验码的各个对应位, 根据所述第三校验码中每一 校验位的数据, 可以推断在读数据的过程中第一校验码的某校验位与第二 校验位的某校验位不一致, 然后, 根据该校验位对应的第一校验码生成式 得到出现错误的数据位。
在实际应用中, 由于第一校验码在存取的过程中也可能出现错误, 因 此, 进一步设置检查校验码, 通过检查校验码的变化确定第一校验码在存 取的过程中是否出现错误; 如果第一校验码出现错误, 则不需要进行纠错 操作, 直接向操作系统报告第一校验码错误。
下面结合附图及具体实施例对本发明 #丈进一步的详细说明。
本发明实施例提供一种实现数据纠错的方法, 其中, 数据的输入可以 是写数据也可以是读数据, 由读 /写选择信号确定当前执行的是读数据还是 写数据; 图 1 为本发明实现数据纠错的方法实施例的实现流程示意图, 如 图 1所示, 以 8位数据为例, 该方法包括以下步骤:
步骤 101 : 为每一数据位分别设置索引号, 并根据所述索引号生成第一 校验码;
本步骤中, 按照数据位的高低顺序, 分别对每一数据位进行标记, 如 图 2所示, 图 2为本发明实施例 8位数据的数据位示意图, 所述 8位数据 从氐位到高位分别标记为 D0、 Dl、 D2、 D3、 D4、 D5、 D6、 D7; 因此, 所述 8位数据从低位到高位对应的十进制索引号依次为 0、 1、 2、 3、 4、 5、 6、 7; 按照数据位的高低顺序, 为所述 8位数据的每一位分别设置与所述 十进制索引号对应的二进制索引号,所述十进制索引号 0-7可以分别用三位 二进制数表示, 因此, 所述 8位数据从低位到高位对应的二进制索引号依 次为: 000、 001、 010、 011、 100、 101、 110、 111 ; 所述由三位二进制数表 示的每一位数据的二进制索引号从左到右依次为该二进制索引号的高位、 次低位、 低位。
图 3为本发明实施例 8位数据的数据位与二进制索引号的对应关系示 意图, 如图 3所示, 所述第一校验码也可以由三位二进制数表示, 对应的, 所述由三位二进制数表示的第一校验码从左到右依次为该第一校验码的高 位 C2、 次低位 d、 低位 C0
具体的, 为每一数据位的二进制索引号, 分别对各索引号对应位中为 1 或 0 的数据位进行异或运算, 获取各索引号位的第一校验码生成式, 如: 分别对各索引号高位、 次低位、 低位中为 1 的数据位进行异或运算, 获取 各索引号位的第一校验码生成式, 具体运算过程如下述各公式所示:
C^WDs^ ( 1 ) 其中, 所述 C。表示所有二进制索引号低位为 1的数据位进行异或运算 的结果, 所述 D^D^D^D?为低位的第一校验码生成式;
C^WD^ ( 2 ) 其中, 所述 表示所有二进制索引号次低位为 1的数据位进行异或运 算的结果, 所述 D2 AD3 AD6 AD7为次低位的第一校验码生成式;
C2=D4 AD5 AD6 AD7 ( 3 ) 其中, 所述 C2表示所有二进制索引号高位为 1的数据位进行异或运算 的结果, 所述 D4 AD5 AD6 AD7为高位的第一校验码生成式;
进一步地, 可以为所述第一校验码设置第一总校验码, 具体的, 如公 式(4 )所示:
( 4 )
其中,所述 Ca表示所有数据位进行异或运算的结果, 为第一总校验码, 所述 D^D^D^D^D^DsAD^D?为第一总校验码生成式;
C=C2 d Co ( 5 ) 其中, 所述 C表示第一校验码, C。表示所有二进制索引号低位为 1的 数据位进行异或运算的结果, 表示所有二进制索引号次低位为 1 的数据 位进行异或运算的结果, C2表示所有二进制索引号高位为 1 的数据位进行 异或运算的结果。
具体的, 如公式(5 )所示, 在获取每一索引号位的第一校验码生成式 之后, 将每一索引号位的第一校验码生成式的结果作为第一校验码的对应 位, 即: 将低位的第一校验码生成式 D^D^D^D 的结果 CQ作为第一校验 码的低位; 将次低位的第一校验码生成式 D2 AD3 AD6 AD7的结果 (^作为第一 校验码的次低位; 将高位的第一校验码生成式 D4 AD5 AD6 AD7的结果 C2作为 第一校验码的高位; 这样, 获得第一校验码的各个校验位。
步骤 102: 根据所述第一校验码生成第二校验码, 比较所述第一校验码 和所述第二校验码确定出现错误的数据位, 对所述出现错误的数据位进行 纠正;
本步骤中, 在读数据或写数据时, 釆用与上述生成第一校验码类似的 算法生成第二校验码, 对应的, 所述第二校验码也可以由三位二进制数表 示, 所述由三位二进制数表示的第二校验码从左到右依次为该第二校验码 的高位 c,2、 次低位 c 低位 c,0
具体的, 为输入数据的每一数据位的二进制索引号, 分别对各索引号 对应位中为 1或 0的数据位进行异或运算, 获取各索引号位的第二校验码 生成式, 如: 分别对各索引号高位、 次低位、 低位中为 1 的数据位进行异 或运算, 获取各索引号位的第二校验码生成式, 具体运算过程如下述各公 式所示:
C'o=D, 1 AD,3AD,5AD, 7 (6) 其中,所述 C'。表示输入数据的所有二进制索引号低位为 1的数据位进 行异或运算的结果, 所述 D'^D D^D^为低位的第二校验码生成式;
ODW ? (7) 其中,所述 (^ 表示输入数据的所有二进制索引号次低位为 1的数据位 进行异或运算的结果,所述 D'2 AD'3 AD'6 AD'7为次低位的第二校验码生成式;
Figure imgf000009_0001
其中,所述 C'2表示输入数据的所有二进制索引号高位为 1的数据位进 行异或运算的结果, 所述 D'4 AD'5AD'6AD'7为高位的第二校验码生成式; 进一步地, 可以为所述第二校验码设置第二总校验码, 具体的, 如公 式(9)所示:
C a=D,oAD, 1 AD,2AD,3AD,4AD,5AD'6 AD, 7 ( 9 ) 其中, 所述〇'3表示输入数据的所有数据位进行异或运算的结果, 为第 二总校验码, 所述 D D D D D D D D^为第二总校验码生成 式; C'=C'2 d CO ( 10 )
其中, 所述 C'表示第二校验码, C'。表示输入数据的所有二进制索引号 低位为 1的数据位进行异或运算的结果, (^ 表示输入数据的所有二进制索 引号次低位为 1的数据位进行异或运算的结果, C,2表示输入数据的所有二 进制索引号高位为 1的数据位进行异或运算的结果。
具体的, 如公式(10 ) 所示, 在获取输入数据的每一索引号位的第二 校验码生成式之后, 将输入数据的每一索引号位的第二校验码生成式的结 果作为第二校验码的对应位, 即: 将低位的第二校验码生成式
ΟΊΛ0' 3Λ0'5 Λ0'7的结果 C,Q作为第二校验码的低位;将次低位的第二校验码 生成式 D'2AD'3 AD'6 AD'7的结果 作为第二校验码的次低位; 将高位的第 二校验码生成式 D'4 AD'5 AD'6 AD'7的结果 C'2作为第二校验码的高位; 这样, 获得第二校验码的各个校验位。
由于在写数据时不需要进行糾错操作, 因此, 在获得第一校验码和第 二校验码后直接将写入的数据输出; 在读数据时, 如果某数据位出现错误, 则第二校验码中的对应位将发生变化, 通过比较第一校验码和第二校验码 可以确定出现错误的数据位, 这里, 在读数据时, 假设错误只出现在数据 位上, 而不出现在第一校验位上。
具体的, 在读数据时, 对第一校验码和第二校验码的每一对应位进行 异或运算, 获得第三校验码的各个对应位, 具体运算过程如下述各公式所 示:
So=C0 AC'o ( 11 ) 其中, 所述 SQ表示第一校验码的低位与第二校验码的低位进行异或运 算的结果, 所述 CQ AC,Q为低位的第三校验码生成式;
S^C^d ( 12 ) 其中, 所述 Si表示第一校验码的次低位与第二校验码的次低位进行异 或运算的结果, 所述 C^C'i为次低位的第三校验码生成式;
S2=C2 AC2 ( 13 ) 其中, 所述 s2表示第一校验码的高位与第二校验码的高位进行异或运 算的结果, 所述 C2 AC,2为高位的第三校验码生成式;
进一步地, 可以为所述第三校验码设置第三总校验码, 具体的, 如公 式(14 ) 所示:
Figure imgf000011_0001
其中,所述 sa表示第一总校验码与第二总校验码进行异或运算的结果, 所述 Ca AC,a为第三总校验码生成式;
S=S2 S! So ( 15 ) 其中, 所述 S表示第三校验码, 所述 SQ表示第一校验码的低位与第二 校验码的低位进行异或运算的结果, 所述 Si表示第一校验码的次低位与第 二校验码的次低位进行异或运算的结果, 所述 S2表示第一校验码的高位与 第二校验码的高位进行异或运算的结果。
在读数据时, 如果 S2、 S1 SQ中某一位为 1, 则表示对应的第一校验码 的 C2位和第二校验码的 C'2位、 或第一校验码的 位和第二校验码的 d 位、 或第一校验码的 CQ位和第二校验码的 C'Q位不一致, 这里, 忽略 Sa位 为 1的情况, 只考虑 S2、 S1 S。位为 1的情况, 即: 只考虑 C2、 d、 C0对 应的某数据位在读数据的过程中出现错误的情况。
具体的, 在读数据时, 如果 SQ位为 1、 S2位和 Si位为 0, 则表示第一 校验码的 CQ位和第二校验码的 C'Q位不一致、 第一校验码的 位和第二校 验码的 C' 一致、以及第一校验码的 C2位和第二校验码的 C,2位一致,根 据 CQ位的第一校验码生成式可知 D1 D3、 D5、 D7中的某数据位在读数据 时出现错误, 即: 所有二进制索引号低位为 1 的数据位中有一位出现了错 误; 同理, 如果 Si位为 1、 SQ位和 S2位为 0, 则表示第一校验码的 位和 第二校验码的 位不一致、第一校验码的 CQ位和第二校验码的 C'Q位一致、 以及第一校验码的 C2位和第二校验码的 C,2位一致, 根据 位的第一校验 码生成式可知 D2、 D3、 D6、 D7中的某数据位在读数据时出现错误, 即: 所 有二进制索引号次低位为 1的数据位中有一位出现了错误;
如果 S2位为 1、 SQ位和 Si位为 0, 则表示第一校验码的 c2位和第二校 验码的 C,2位不一致、第一校验码的 CQ位和第二校验码的 C,Q位一致、以及 第一校验码的 位和第二校验码的 C' 一致, 根据 C2位的第一校验码生 成式可知 D4、 D5、 D6、 D7中的某数据位在读数据时出现错误, 即: 所有二 进制索引号高位为 1 的数据位中有一位出现了错误; 然后, 根据对应的第 一校验码生成式推断出现错误的数据位的范围。
例如, 如果 S=001, 则表示第一校验码的 CQ位和第二校验码的 C'o位 不一致, 即: 在读数据的过程中, D D3、 D5、 D7中的某数据位出现错误; 由于 只出现在 Co位的第一校验码生成式中, 且根据 C 对应的数据位 和 C2位对应的数据位在读数据的过程中未出现错误可知, 数据位 D3、 D5、 D7未出现错误, 因此, 可以判断出在读数据的过程中 位出现错误。
另外, 由 S=001可知, 在读数据的过程中, C。位对应的某数据位出现 错误, 而 位对应的数据位和 C2位对应的数据位未出现错误; 根据 CQ位、 位、 C2位与二进制索引号的关系可知, 出现错误的数据位对应的二进制 索引号的低位为 1, 次低位和高位均为 0, 得到出现错误的数据位对应的二 进制索引号为 3比特二进制数 3'b001, 将该 3比特二进制数转换为十进制 数为 3,dl, 因此, 可以直接判断出在读数据的过程中十进制索引号为 1 的 位出现错误。
如果 S=101, 则表示第一校验码的 CQ位和第二校验码的 C2位不一致, 即: 在读数据的过程中, D D3、 D4、 D5、 D6、 D7中的某位出现错误, 而 位对应的数据位在读数据的过程中未出现错误; 由于只有 D5同时出现在 C0位和 C2位的第一校睑码生成式中, 而未出现在 d的第一校验码生成式 中, 因此, 可以判断出在读数据的过程中 D5位出现错误。
另外, 由 S=101 可知, 在读数据的过程中, C。位对应的数据位和 C2 位对应的数据位中的某位出现错误, 而 位对应的数据位在读数据的过程 中未出现错误; 根据 C0位、 位、 C2位与二进制索引号的关系可知, 出现 错误的数据位对应的二进制索引号的低位为 1、 次低位为 0、 高位为 1, 得 到出现错误的数据位对应的二进制索引号为 3比特二进制数 3'bl01,将该 3 比特二进制数转换为十进制数为 3,d5, 因此, 可以直接判断出在读数据的 过程中十进制索引号为 5的 D5位出现错误。
进一步地, 考虑到 D0位的十进制索引号为 0, 二进制索引号为 000, 且 Do位为唯一不出现在 C2位、 位、 Co位的第一校验码生成式中的数据 位, 因此, 如果 S中的 C2位、 位、 C。位全为 0, 而 Sa为 1, 则表示在读 数据时 D0位出现错误; 如果 S中的 C2位、 位、 Co位不全为 0, 而 Sa为 0, 则表示在读数据时有两位数据位出现了错误, 此时, 超出了纠错能力, 直接向操作系统报告错误不可纠正, 由操作系统决定是否需要丟弃该数据 并进行重新读取。
根据 C2位的第一校验码生成式可知, C2位的第一校验码生成式中只有 D4、 D5、 D6、 D7参与; 这样, 如果需要将该方法应用到数据位宽为 4位的 情况, 那么, C2位则可以省略, 由于所述 4位数据不存在 D4、 D5、 D6、 D7 位, 因此, 通过将第一校验码生成式和第二校验码生成式中对应的数据位 填充为 0或者 1, 可以不对第三校验码的最终结果造成影响, 这样, 就可以 将该方法简单的复用到数据位宽为 4位的应用中; 因此, 通过类似的方法 可以将本发明实施例推广到数据位宽为 32位、 64位、 128位或更高位宽的 应用中。 在实际应用中, 由于第一校验码在存取的过程中也可能出现错误, 因 此, 可进一步设置检查校验码, 通过检查校验码的变化确定第一校验码在 存取的过程中是否出现错误; 具体的, 如公式(16 )所示:
C^^d^C, ( 16 ) 其中, 所述 表示检查校验码, C2表示所有二进制索引号高位为 1的 数据位进行异或运算的结果, 表示所有二进制索引号次低位为 1 的数据 位进行异或运算的结果, CQ表示所有二进制索引号低位为 1 的数据位进行 异或运算的结果, Ca表示所有数据位进行异或运算的结果。
在实际应用中, 由于用户只关心有效数据, 因此, 如果错误出现在第 一校验码中, 则不需要进行纠错操作, 直接向操作系统报告第一校验码错 误。
这里, 在确定出现错误的数据位之后, 对出现错误的数据位进行纠正, 具体糾正过程为现有技术, 此处不再赘述。
本发明实施例提供一种实现数据糾错的装置, 其中, 数据的输入可以 是写数据也可以是读数据, 由读 /写选择信号确定当前执行的是读数据还是 写数据, 即由读 /写选择信号控制整个电路是进行纠错操作, 还是进行生成 第一校验码和第二校验码操作; 图 4 为本发明实现数据纠错的装置实施例 的组成结构示意图, 图 5 为本发明实现数据纠错的装置实施例的电路框架 示意图, 如图 4、 5所示, 所述装置包括: 设置模块 43、 第一校验码生成模 块 44、 第二校验码生成模块 45、 以及数据处理模块 46; 其中,
所述设置模块 43, 配置为为每一数据位分别设置索引号;
具体的, 所述设置模块 43, 配置为按照数据位的高低顺序, 为每一数 据位分别设置二进制索引号。
所述第一校验码生成模块 44,配置为根据所述索引号生成第一校验码; 具体的, 在读数据或写数据时, 所述第一校验码生成模块 44, 配置为 为每一数据位的二进制索引号, 分别对各索引号对应位中为 1或 0的数据 位进行异或运算, 获取各索引号位的第一校验码生成式, 并将各索引号位 的第一校验码生成式的结果分别作为第一校验码的对应位。
所述第一校验码生成模块 44, 还配置为通过对所有数据位进行异或运 算获取第一总校验码。
其中, 对于需要同时进行读操作和写操作的应用, 可以分别设置读数 据第一校验码生成模块和写数据第一校验码生成模块, 所述读数据第一校 验码生成模块和写数据第一校验码生成模块各自独立地生成对应的第一校 验码; 针对不需要同时进行读操作和写操作的应用, 可以只设置一个第一 校验码生成模块, 以减少硬件逻辑的规模。
所述第二校验码生成模块 45, 配置为根据所述第一校验码生成第二校 验码;
具体的, 在读数据或写数据时, 所述第二校验码生成模块 45, 配置为 为输入数据的每一数据位的二进制索引号,分别对每一索引号对应位中为 1 或 0 的数据位进行异或运算, 获取各索引号位的第二校验码生成式, 并将 各索引号位的第二校验码生成式的结果分别作为第二校验码的对应位。
其中, 对于需要同时进行读操作和写操作的应用, 可以分别设置读数 据第二校验码生成模块和写数据第二校验码生成模块, 所述读数据第二校 验码生成模块和写数据第二校验码生成模块各自独立地生成对应的第二校 验码; 针对不需要同时进行读操作和写操作的应用, 可以只设置一个第二 校验码生成模块, 以减少硬件逻辑的规模。
所述第二校验码生成模块 45, 还配置为通过对输入数据的所有数据位 进行异或运算获取第二总校验码。
所述数据处理模块 46, 配置为比较所述第一校验码和所述第二校验码 确定出现错误的数据位, 对所述出现错误的数据位进行纠正; 具体的, 在读数据时, 所述数据处理模块 46, 配置为对第一校验码和 第二校验码的每一对应位进行异或运算, 获得第三校验码的对应位, 根据 第三校验码确定第一校验码与第二校验码的对应位不一致时, 根据第一校 验码对应位的第一校验码生成式确定出现错误的数据位, 对所述出现错误 的数据位进行纠正, 然后, 将纠正后的数据输出; 由于在写数据时不需要 进行纠错操作, 因此数据处理模块 46直接将写入的数据输出。
另外, 由于写数据时不需要进行纠错操作, 因此读操作和写操作可以 共用一个数据处理模块。
进一步地, 所述装置还可以包括: 数据读写模块 41、 多路传输模块 42; 其中,
所述数据读写模块 41, 配置为传输读操作或写操作的数据;
其中, 针对需要同时进行读操作和写操作的应用, 可以分别设置读数 据模块和写数据模块, 所述读数据模块和写数据模块各自独立地传输读操 作或写操作的数据。
所述多路传输模块 42, 配置为传输数据读写模块的数据;
具体的, 当需要写数据时, 读 /写选择信号使能写操作, 多路传输模块
42选择数据读写模块的数据输入到所述设置模块 43 ; 当需要读数据时, 读
/写选择信号使能读操作,多路传输模块 42选择数据读写模块的数据输入到 所述设置模块 43。
在实际应用中, 所述多路传输模块 42可以由多路器实现; 所述数据读 写模块 41、 设置模块 43、 第一校验码生成模块 44、 第二校验码生成模块 45、 以及数据处理模块 46可由中央处理器( CPU, Central Processing Unit )、 数字信号处理器(DSP, Digital Signal Processor ),或可编程门阵列( FPGA, Field Programmable Gate Array ) 实现。
本发明实施例还提供了一种计算机存储介质, 其中存储有计算机可执 本发明实施例中所述的实现数据纠错的方法如果以软件功能模块的形 式实现并作为独立的产品销售或使用时, 也可以存储在一个计算机可读取 存储介质中。 基于这样的理解, 本领域内的技术人员应明白, 本申请的实 施例可提供为方法、 系统、 或计算机程序产品。 因此, 本申请可釆用完全 硬件实施例、 完全软件实施例、 或结合软件和硬件方面的实施例的形式。 而且, 本申请可釆用在一个或多个其中包含有计算机可用程序代码的计算 机可用存储介质上实施的计算机程序产品的形式, 所述存储介质包括但不 限于 U盘、 移动硬盘、 只读存储器(ROM, Read-Only Memory ), 磁盘存 储器、 CD-ROM、 光学存储器等。
本申请是根据本申请实施例的方法、 装置、 以及计算机程序产品的流 程图和 /或方框图来描述的。 应理解可由计算机程序指令实现流程图和 / 或方框图中的每一流程和 /或方框、 以及流程图和 /或方框图中的流程和 /或方框的结合。 可提供这些计算机程序指令到通用计算机、 专用计算机、 嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器, 使得 在流程图一个流程或多个流程和 /或方框图一个方框或多个方框中指定的 功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理 设备以特定方式工作的计算机可读存储器中, 使得存储在该计算机可读存 储器中的指令产生包括指令装置的制造品, 该指令装置实现在流程图一个 流程或多个流程和 /或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备 上, 使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机 实现的处理, 从而在计算机或其他可编程设备上执行的指令提供用于实现 在流程图一个流程或多个流程和 /或方框图一个方框或多个方框中指定的 功能的步骤。
相应的, 本发明实施例还提供一种计算机存储介质, 其中存储有计算 机程序, 该计算机程序用于执行本发明方法实施例中所述的实现数据纠错 的方法。
以上所述, 仅为本发明的较佳实施例而已, 并非用于限定本发明的保 护范围。

Claims

权利要求书
1、 一种实现数据纠错的方法, 其中, 所述方法包括:
为每一数据位分别设置索引号, 并根据所述索引号生成第一校验码; 根据所述第一校验码生成第二校验码, 比较所述第一校验码和所述第 二校验码确定出现错误的数据位, 对所述出现错误的数据位进行纠正。
2、 根据权利要求 1所述的方法, 其中, 所述为每一数据位分别设置索 引号, 包括: 按照数据位的高低顺序, 为每一数据位分别设置二进制索引 号。
3、 根据权利要求 2所述的方法, 其中, 所述根据所述索引号生成第一 校验码, 包括: 根据所述二进制索引号获取第一校验码生成式, 根据所述 第一校验码生成式生成第一校验码;
所述根据所述二进制索引号获取第一校验码生成式, 根据所述第一校 验码生成式生成第一校验码, 包括: 为每一数据位的二进制索引号, 分别 对各索引号对应位中为 1或 0的数据位进行异或运算, 获取各索引号位的 第一校验码生成式, 并将各索引号位的第一校验码生成式的结果分别作为 第一校验码的对应位。
4、 根据权利要求 3所述的方法, 其中, 所述根据第一校验码生成第二 校验码, 包括:
为输入数据的每一数据位的二进制索引号, 分别对各索引号对应位中 为 1或 0的数据位进行异或运算, 获取各索引号位的第二校验码生成式, 并将各索引号位的第二校验码生成式的结果分别作为第二校验码的对应 位。
5、 根据权利要求 1至 4任一项所述的方法, 其中, 所述比较所述第一 校验码和所述第二校验码确定出现错误的数据位, 对所述出现错误的数据 位进行纠正, 包括: 对第一校验码和第二校验码的每一对应位进行异或运算, 获得第三校 验码的对应位, 根据第三校验码确定第一校验码与第二校验码的对应位不 一致时, 根据第一校验码对应位的第一校验码生成式确定出现错误的数据 位, 对所述出现错误的数据位进行纠正。
6、 一种实现数据纠错的装置, 其中, 所述装置包括: 设置模块、 第一 校验码生成模块、 第二校验码生成模块、 以及数据处理模块; 其中,
所述设置模块, 配置为为每一数据位分别设置索引号;
所述第一校验码生成模块, 配置为根据所述索引号生成第一校验码; 所述第二校验码生成模块, 配置为根据所述第一校验码生成第二校验 码;
所述数据处理模块, 配置为比较所述第一校验码和所述第二校验码确 定出现错误的数据位, 对所述出现错误的数据位进行纠正。
7、 根据权利要求 6所述的装置, 其中, 所述设置模块, 配置为按照数 据位的高低顺序, 为每一数据位分别设置二进制索引号。
8、 根据权利要求 7所述的装置, 其中, 所述第一校验码生成模块, 配 置为为每一数据位的二进制索引号, 分别对各索引号对应位中为 1或 0的 数据位进行异或运算, 获取各索引号位的第一校验码生成式, 并将各索引 号位的第一校验码生成式的结果分别作为第一校验码的对应位。
9、 根据权利要求 8所述的装置, 其中, 所述第二校验码生成模块, 配 置为为输入数据的每一数据位的二进制索引号, 分别对每一索引号对应位 中为 1或 0的数据位进行异或运算, 获取各索引号位的第二校验码生成式, 并将各索引号位的第二校验码生成式的结果分别作为第二校验码的对应 位。
10、 根据权利要求 6至 9任一项所述的装置, 其中, 所述数据处理模 块, 配置为对第一校验码和第二校验码的每一对应位进行异或运算, 获得 第三校验码的对应位, 根据第三校验码确定第一校验码与第二校验码的对 应位不一致时, 根据第一校验码对应位的第一校验码生成式确定出现错误 的数据位, 对所述出现错误的数据位进行纠正。
11、 一种计算机存储介质, 其中存储有计算机可执行指令, 所述计算 机可执行指令用于执行所述权利要求 1至 5任一项所述的方法。
PCT/CN2014/077931 2013-12-30 2014-05-20 实现数据纠错的方法及装置、计算机存储介质 WO2015100917A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP14876707.2A EP3082046B1 (en) 2013-12-30 2014-05-20 Data error correcting method and device, and computer storage medium
US15/108,936 US10141954B2 (en) 2013-12-30 2014-05-20 Data error correcting method and device, and computer storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310749647.XA CN104750569A (zh) 2013-12-30 2013-12-30 一种实现数据纠错的方法及装置
CN201310749647.X 2013-12-30

Publications (1)

Publication Number Publication Date
WO2015100917A1 true WO2015100917A1 (zh) 2015-07-09

Family

ID=53493092

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/077931 WO2015100917A1 (zh) 2013-12-30 2014-05-20 实现数据纠错的方法及装置、计算机存储介质

Country Status (4)

Country Link
US (1) US10141954B2 (zh)
EP (1) EP3082046B1 (zh)
CN (1) CN104750569A (zh)
WO (1) WO2015100917A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105243807A (zh) * 2015-08-27 2016-01-13 柯俊 一种数据传输系统及方法
CN106792183A (zh) * 2016-12-16 2017-05-31 深圳Tcl数字技术有限公司 电视机的数据纠错方法及系统
WO2018132982A1 (zh) * 2017-01-18 2018-07-26 深圳市汇顶科技股份有限公司 码字生成方法、错误位确定方法及其电路
CN111459707B (zh) * 2020-03-10 2021-12-03 华中科技大学 一种串口通讯检错纠错方法和装置
CN111443887A (zh) * 2020-03-26 2020-07-24 京东方科技集团股份有限公司 显示驱动芯片及其数据处理方法
CN112379905B (zh) * 2020-11-20 2024-06-28 惠州Tcl移动通信有限公司 一种内核升级方法、装置、终端及存储介质
EP4050608B1 (en) * 2021-01-14 2023-06-28 Changxin Memory Technologies, Inc. Comparator with xor and xnor logic circuits
CN114765055B (zh) * 2021-01-14 2024-05-03 长鑫存储技术有限公司 纠错系统
CN114765054B (zh) * 2021-01-14 2024-05-14 长鑫存储技术有限公司 纠错系统
CN116107800B (zh) * 2023-04-12 2023-08-15 浙江恒业电子股份有限公司 一种校验码生成方法、数据恢复方法、介质、电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502732A (en) * 1993-09-20 1996-03-26 International Business Machines Corporation Method for testing ECC logic
CN1523799A (zh) * 2003-02-18 2004-08-25 华为技术有限公司 基带芯片公共信道中产生从同步码的装置和方法
CN101227263A (zh) * 2008-02-01 2008-07-23 上海华为技术有限公司 一种在线故障检测系统、装置及方法
KR20080090135A (ko) * 2007-04-04 2008-10-08 주식회사 루프 Prbs 패턴에서 비트 에러율 테스트 방법
US20100169742A1 (en) * 2008-12-29 2010-07-01 Texas Instruments Incorporated Flash memory soft error recovery
CN102804146A (zh) * 2009-06-29 2012-11-28 桑迪士克科技股份有限公司 跟踪存储器件内的错误数据的系统和方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374382B1 (en) 1998-12-15 2002-04-16 Hughes Electronics Corporation Short block code for concatenated coding system
US6973612B1 (en) * 2001-11-13 2005-12-06 Unisys Corporation Familial correction with non-familial double bit error detection for directory storage
JP4619931B2 (ja) * 2005-11-22 2011-01-26 株式会社東芝 復号装置、記憶装置および復号方法
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8156404B1 (en) 2008-08-29 2012-04-10 Nvidia Corporation L2 ECC implementation
US8321752B1 (en) * 2008-11-12 2012-11-27 Marvell International Ltd. Integrated 2-level low density parity check (LDPC) codes
CN101625653A (zh) * 2009-08-13 2010-01-13 青岛海信电器股份有限公司 一种多媒体产品本地数据处理校验方法
CN102110028A (zh) * 2009-12-25 2011-06-29 康佳集团股份有限公司 一种nand闪存及其数据的校验方法和装置
CA2791931A1 (en) 2010-03-22 2011-09-29 Mosaid Technologies Incorporated Composite semiconductor memory device with error correction
CN102654854A (zh) 2011-03-04 2012-09-05 上海华虹集成电路有限责任公司 一种可动态调整ECC纠错能力的Nandflash控制器
CN102789806B (zh) 2012-07-16 2015-05-20 中国人民解放军国防科学技术大学 一种空间设备的tcam抗辐照防护方法
TWI521528B (zh) * 2012-08-08 2016-02-11 群聯電子股份有限公司 記憶體儲存裝置、其記憶體控制器與資料處理方法
US8972834B2 (en) * 2012-08-28 2015-03-03 Hughes Network Systems, Llc System and method for communicating with low density parity check codes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502732A (en) * 1993-09-20 1996-03-26 International Business Machines Corporation Method for testing ECC logic
CN1523799A (zh) * 2003-02-18 2004-08-25 华为技术有限公司 基带芯片公共信道中产生从同步码的装置和方法
KR20080090135A (ko) * 2007-04-04 2008-10-08 주식회사 루프 Prbs 패턴에서 비트 에러율 테스트 방법
CN101227263A (zh) * 2008-02-01 2008-07-23 上海华为技术有限公司 一种在线故障检测系统、装置及方法
US20100169742A1 (en) * 2008-12-29 2010-07-01 Texas Instruments Incorporated Flash memory soft error recovery
CN102804146A (zh) * 2009-06-29 2012-11-28 桑迪士克科技股份有限公司 跟踪存储器件内的错误数据的系统和方法

Also Published As

Publication number Publication date
US20160329912A1 (en) 2016-11-10
EP3082046A1 (en) 2016-10-19
US10141954B2 (en) 2018-11-27
CN104750569A (zh) 2015-07-01
EP3082046A4 (en) 2017-03-08
EP3082046B1 (en) 2020-07-08

Similar Documents

Publication Publication Date Title
WO2015100917A1 (zh) 实现数据纠错的方法及装置、计算机存储介质
JP4988731B2 (ja) フラッシュエラー訂正
TWI353521B (en) Soft-input soft-output decoder for nonvolatile mem
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US20140310534A1 (en) Data scrambling in memory devices using combined sequences
TW202006544A (zh) 利用錯誤更正碼進行資料位元錯誤的偵測與更正
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
TW200947449A (en) Error detecting/correcting scheme for memories
TW201133499A (en) Method for enhancing error correction capability, and associated memory device and controller thereof
CN103886915A (zh) 用于校正包括邻近2比特错误的3比特错误的电路和方法
US10741212B2 (en) Error correction code (ECC) encoders, ECC encoding methods capable of encoding for one clock cycle, and memory controllers including the ECC encoders
US11601139B2 (en) Methods and apparatus to determine and apply polarity-based error correction code
TWI691834B (zh) 採用連氏錯誤校正碼設計的記憶體儲存裝置及其編碼方法
TW201921245A (zh) 用於支持錯誤更正碼的裝置及其測試方法
US20160285478A1 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
KR20140048826A (ko) 오류 검출 정정 회로 및 이를 포함하는 메모리 장치
JP2014135105A (ja) 不揮発性半導体記憶装置及びそのテスト方法
TWI594252B (zh) 用以監視記憶體之資料錯誤狀態之方法與裝置
TW201913687A (zh) 編碼方法和使用此方法的記憶體儲存裝置
TW201907410A (zh) 記憶體測試方法及其記憶體裝置
JP2015019276A (ja) 記憶装置、crc生成装置およびcrc生成方法
US10340955B2 (en) Data processing circuit
JP2016187099A5 (ja) データ処理回路及びエラー訂正方法
US8819331B2 (en) Memory system and memory controller
US20160132385A1 (en) Using error correcting codes for parity purposes

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14876707

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15108936

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2014876707

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014876707

Country of ref document: EP