CN116737447A - 数据纠错电路和数据传输方法 - Google Patents

数据纠错电路和数据传输方法 Download PDF

Info

Publication number
CN116737447A
CN116737447A CN202210209652.0A CN202210209652A CN116737447A CN 116737447 A CN116737447 A CN 116737447A CN 202210209652 A CN202210209652 A CN 202210209652A CN 116737447 A CN116737447 A CN 116737447A
Authority
CN
China
Prior art keywords
check
data
code
error correction
check code
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.)
Pending
Application number
CN202210209652.0A
Other languages
English (en)
Inventor
冀康灵
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.)
Changxin Memory Technologies Inc
Original Assignee
Changxin Memory Technologies 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 Changxin Memory Technologies Inc filed Critical Changxin Memory Technologies Inc
Priority to CN202210209652.0A priority Critical patent/CN116737447A/zh
Priority to KR1020237020716A priority patent/KR20230131184A/ko
Priority to JP2023537126A priority patent/JP2024515918A/ja
Priority to EP22839115.7A priority patent/EP4266585A4/en
Priority to PCT/CN2022/095324 priority patent/WO2023165034A1/zh
Priority to US18/151,432 priority patent/US20230283298A1/en
Priority to TW112101034A priority patent/TW202336589A/zh
Publication of CN116737447A publication Critical patent/CN116737447A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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
    • 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
    • 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

Landscapes

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

Abstract

本公开提供一种数据纠错电路和数据传输方法。数据传输电路包括:数据纠错模块,接收第一数据和所述第一数据对应的第一校验码,所述数据纠错模块用于根据所述第一校验码对所述第一数据进行纠错以生成第二数据,并输出所述第二数据;校验码生成模块,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成并输出第二校验码。本公开实施例可以节省数据纠错功能所需的元件和布局面积。

Description

数据纠错电路和数据传输方法
技术领域
本公开涉及集成电路技术领域,具体而言,涉及一种数据纠错电路以及应用于该数据纠错的数据传输方法。
背景技术
由于存储器和系统(控制器/处理器)之间的信道速度越来越高,对信号的传输准确性提出了巨大的挑战,在此背景下,相关技术在数据接收终端(控制器/处理器)中设置链路纠错电路(Link ECC,Link Error Correcting Code)来对接收到的数据进行纠错,以纠正信道传输可能产生的错误。
为了准确提高纠错准确度,相关技术通常需要在数据接收终端根据接收到的数据和该数据对应的第一校验码,生成包括该数据的全校验值的第二校验码,再根据该第二校验码对该数据进行纠错。其中,全校验值是根据该数据和该第一校验码的每一位生成的。这对数据接收终端的电路功能设置了门槛,也增加了数据接收终端的元件数量和布局面积。
因此,如何降低在保持纠错准确性不变的情况下降低对数据接收终端的要求,成为具有数据传输功能的集成电路可以改进的一个技术点。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据纠错电路以及应用于该数据纠错的数据传输方法,用于至少在一定程度上克服相关技术中数据纠错功能所需电路元件较多、占用布局面积较大的问题。
根据本公开的第一方面,提供一种数据纠错电路,设置在存储器中,包括:数据纠错模块,接收第一数据和所述第一数据对应的第一校验码,所述数据纠错模块用于根据所述第一校验码对所述第一数据进行纠错以生成第二数据,并输出所述第二数据;校验码生成模块,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成并输出第二校验码。
在本公开的一个示例性实施例中,所述数据纠错模块包括:纠错码生成单元,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成数据纠错码和校验纠错码;数据纠错单元,连接所述纠错码生成单元,用于接收所述第一数据和所述数据纠错码,并根据所述数据纠错码对所述第一数据进行纠错以生成并输出第二数据。
在本公开的一个示例性实施例中,所述校验码生成模块连接所述纠错码生成单元并接收所述数据纠错码和所述校验纠错码,所述校验码生成模块根据所述数据纠错码或所述校验纠错码纠正所述第二校验码。
在本公开的一个示例性实施例中,所述校验码生成模块包括:全校验值生成单元,连接所述纠错码生成单元,用于接收所述第一数据和所述第一校验码,并根据所述第一数据、所述第一校验码和所述数据纠错码生成全校验值,或者,根据所述第一数据、所述第一校验码和所述校验纠错码生成所述全校验值,所述第二校验码包括所述全校验值。
在本公开的一个示例性实施例中,所述全校验值生成单元包括:全校验值计算单元,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成初始全校验值;全校验值纠错单元,连接所述全校验值计算单元和所述纠错码生成单元,用于根据所述数据纠错码或所述校验码纠错码对所述初始全校验值进行纠错并输出所述全校验值。
在本公开的一个示例性实施例中,所述全校验值纠错单元用于在接收到所述数据纠错码或所述校验纠错码后,对所述初始全校验值取反以生成所述全校验值。
在本公开的一个示例性实施例中,所述初始全校验值通过对所述第一数据中的每一位以及所述第一校验码中的每一位进行异或计算后得到。
在本公开的一个示例性实施例中,所述校验码生成模块包括:校验码纠错单元,连接所述纠错码生成单元,接收所述第一校验码,用于根据所述校验纠错码对所述第一校验码进行纠错,所述第二校验码包括纠错后的所述第一校验码。
在本公开的一个示例性实施例中,所述第二校验码的最高位为所述全校验值,纠错后的所述第一校验码构成所述第二校验码的其余位。
在本公开的一个示例性实施例中,所述第一校验码包括8位数据。
根据本公开的第二方面,提供一种存储器,包括:如上任一项所述的数据纠错电路;第一输出端,用于输出第二数据;第二输出端,用于输出所述第二数据对应的第二校验码。
根据本公开的第三方面,提供一种集成存储装置,包括:如上所述的存储器;控制器,连接所述存储器,用于接收第二数据和第二校验码,根据所述第二校验码对所述第二数据进行校验和纠错。
在本公开的一个示例性实施例中,所述控制器根据所述第二校验码确定所述第二数据中是否存在多位错误。
根据本公开的第四方面,提供一种数据传输方法,由权利要求11所述的存储器执行,包括:获取待传输的第一数据和与所述第一数据对应的第一校验码;根据所述第一校验码和所述第一数据对所述所述第一数据进行纠错以生成第二数据;根据所述第一数据和所述第一校验码生成第二校验码;同时输出所述第二数据和所述第二校验码至控制器,以使控制器根据所述第二校验码对所述第二数据进行校验和纠错。
在本公开的一个示例性实施例中,所述根据所述第一数据和所述第一校验码生成第二校验码包括:对所述第一数据的每一位和所述第一校验码的每一位的进行异或运算生成初始全校验值;获取所述第一数据和所述第一校验码的校验结果;根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码。
在本公开的一个示例性实施例中,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:在根据所述校验结果确定所述第一校验码发生错误、所述第一数据未发生错误时,对所述初始全校验值纠错以生成全校验值,对所述第一校验码纠错;根据纠错后的所述第一校验码、所述全校验值生成所述第二校验码。
在本公开的一个示例性实施例中,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:在根据所述校验结果确定所述第一校验码未发生错误,所述第一数据发生错误时,对所述初始全校验值纠错以生成全校验值;根据所述第一校验码和所述全校验值生成所述第二校验码。
在本公开的一个示例性实施例中,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:在根据所述校验结果确定所述第一数据和所述第一校验码均未发生错误时,根据所述第一校验码和所述初始全校验值生成所述第二校验码。
在本公开的一个示例性实施例中,所述对所述初始全校验值纠错以生成全校验值包括:对所述初始全校验值取反以生成所述全校验值。
在本公开的一个示例性实施例中,所述根据所述第一数据和所述第一校验码生成第二校验码包括:获取所述第一数据和所述第一校验码的校验结果;在根据所述校验结果确定所述第一数据和所述第一校验码均未出现错误时,对所述第一数据的每一位和所述第一校验码的每一位进行异或运算后确定全校验值,根据所述全校验值和所述第一校验码生成所述第二校验码;在根据所述校验结果确定仅所述第一数据出现错误时,对所述第二数据的每一位和所述第一校验码的每一位进行异或运算后确定全校验值;根据所述全校验值和所述第一校验码生成所述第二校验码;在根据所述校验结果确定仅所述第一校验码出现错误时,对所述第一数据的每一位和纠错后的所述第一校验码的每一位进行异或运算后确定全校验值,根据所述全校验值和纠错后的所述第一校验码生成所述第二校验码。
本公开实施例通过在存储器的数据纠错电路中完成第二校验码的生成,并直接输出纠错后的第二数据以及该第二数据对应的第二校验码,可以使数据接收终端直接根据该第二校验码对该第二数据进行校验和纠错,减少了相关技术中在数据接收终端根据接收到的数据和校验码再次生成校验码的繁琐程序,节省了对数据接收终端的功能要求,进而减少了数据接收终端的元件数量和布局面积,提高了存储器的兼容能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开示例性实施例中数据纠错电路的结构示意图。
图2是本公开一个实施例中数据纠错电路的示意图。
图3是本公开一个实施例中图2所示全校验值生成单元121的示意图。
图4是本公开实施例提供的存储器的示意图。
图5是应用图4所示存储器的集成存储装置的示意图。
图6是本公开实施例提供的数据传输方法的流程图。
图7是本公开一个实施例中步骤S3的子流程图。
图8是本公开一个实施例中图7所示步骤S33的子流程图。
图9是本公开另一个实施例中步骤S3的子流程图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面结合附图对本公开示例实施方式进行详细说明。
图1是本公开示例性实施例中数据纠错电路的结构示意图。
参考图1,数据纠错电路100设置在存储器中,可以包括:
数据纠错模块11,接收第一数据Data1和第一数据对应的第一校验码Parity1,数据纠错模块11用于根据第一校验码Parity1对第一数据Data1进行纠错以生成第二数据Data2,并输出第二数据Data2;
校验码生成模块12,接收第一数据Data1和第一校验码Parity1,用于根据第一数据Data1和第一校验码Parity1生成并输出第二校验码Parity2。
存储器作为数据发送终端对数据接收终端发送数据时,会在输出数据前,对待发送的数据中可能由存储阵列导致的错误进行纠错,即设置片上纠错电路(On Die ECC,OnDie Error Correcting Code),用来对存储阵列的错误进行纠错。
本公开实施例通过对存储器的片上纠错电路进行改进,可以在实现对第一数据Data1纠错的同时,直接根据第一数据Data1和第一校验码Parity1生成并输出第二校验码Parity2,使数据接收终端能够直接根据该第二校验码对存储器最终输出的第二数据Data2进行校验和纠错,减少了相关技术中在数据接收终端根据接收到的数据和校验码再次生成校验码的繁琐程序,节省了对数据接收终端的功能要求,进而减少了数据接收终端的元件数量和布局面积,提高了存储器的兼容能力。
图2是本公开一个实施例中数据纠错电路的示意图。在图2所示实施例中,假设第一数据Data1是128位,表示为Data<127:0>,对应的,第一校验码(第一数据的ECC校验码)Parity1为8位,表示为Parity<7:0>,第二数据Data2为128位,表示为ABus<127:0>,第二校验码Parity2包括第二数据Data2的全校验值,为9位,表示为ABusParity<8:0>。
参考图2,在一个实施例中,数据纠错模块11包括:
纠错码生成单元111,接收第一数据Data<127:0>和第一校验码Parity<7:0>,用于根据第一数据Data<127:0>和第一校验码Parity<7:0>生成数据纠错码Code1或校验纠错码Code2。
数据纠错单元112,连接纠错码生成单元111,用于接收第一数据Data<127:0>和数据纠错码Code1,并根据数据纠错码Code1对第一数据Data<127:0>进行纠错以生成并输出第二数据ABus<127:0>。
校验码生成模块12连接纠错码生成单元111并接收数据纠错码Code1和校验纠错码Code2,校验码生成模块12根据数据纠错码Code1或校验纠错码Code2纠正第二校验码ABusParity<8:0>。
示例性的,在一个实施例中,校验码生成模块12包括:
全校验值生成单元121,连接纠错码生成单元111,用于接收第一数据Data<127:0>和第一校验码Parity<7:0>,并根据第一数据Data<127:0>、第一校验码Parity<7:0>和数据纠错码Code1生成全校验值Parity<8>,或者,根据第一数据Data<127:0>、第一校验码Parity<7:0>和校验纠错码Code2生成全校验值Parity<8>,第二校验码ABusParity<8:0>包括全校验值Parity<8>。
校验码纠错单元122,连接纠错码生成单元111,接收第一校验码Parity<7:0>,用于根据校验纠错码Code2对第一校验码Parity<7:0>进行纠错输出纠错后的第一校验码ABusParity<7:0>,第二校验码ABusParity<8:0>包括纠错后的第一校验码ABusParity<7:0>。
全校验值Parity<8>和纠错后的第一校验码ABusParity<7:0>配合输出,以形成第二校验码ABusParity<8:0>。在一个实施例中,第二校验码ABusParity<8:0>的最高位为全校验值Parity<8>,纠错后的第一校验码Parity<7:0>构成第二校验码ABusParity<8:0>的其余位。通过设置全校验值生成单元121和校验码纠错单元122的输出时序,可以通过全校验值生成单元121和校验码纠错单元122配合输出9位的第二校验码ABusParity<8:0>。
在本公开实施例中,第一校验码为存储器输出的第一数据的ECC校验码。ECC校验码的生成,是根据设定规则对第一数据中的不同位(bit)进行异或运算,将多组不同位的异或结果设置为ECC校验码的一位(bit)。根据ECC校验码的生成规则,可以根据数据的ECC校验码检测该数据是否存在错误,并对该错误的数据位通过ECC校验码进行纠错。通过使用数据的ECC校验码对该数据进行校验,可以检测出数据的奇数个bit的错误。
数据的第二校验码是根据该数据和该数据的第一校验码生成的。数据的第二校验码的低若干位是该数据的第一校验码,最高位是该数据的全校验值。全校验值根据该数据和该数据的第一校验码生成,在一个实施例中,全校验值例如可以为该数据的每一位以及该第一校验码的每一位的异或结果。根据上述规则,通过使用数据的第二校验码对该数据进行校验,可以检测出该数据是否存在偶数个bit的错误数据。
结合数据的第一校验码和第二校验码,即可以对数据进行全面的校验和纠错。
在图2所示实施例中,纠错码生成单元111接收第一数据和第一校验码,由于第一校验码根据第一数据生成,纠错码生成单元111可以对第一数据和第一校验码进行校验,并根据校验结果判断第一数据和第一校验码是否存在错误。纠错码生成单元111通过输出的两种纠错码的值来指示校验结果。一种纠错码是用于指示第一数据存在错误的数据纠错码Code1,另一种纠错码是用于指示第一校验码存在错误的校验纠错码Code2。可以假设,当数据纠错码Code1为第一值时,指示第一数据存在错误,当数据纠错码Code1为第二值时,指示第一数据正确,第一值与第二值例如分别为逻辑电平1和逻辑电平0,或者第一值与第二值分别为其他值,本公开对此不作特殊限制。同理,可以假设当校验纠错码Code2为第一值时,指示第一校验码存在错误,当校验纠错码Code2为第二值时,指示第一校验码正确。
数据纠错单元112用于对第一数据进行纠错,当数据纠错单元112接收到代表数据错误的数据纠错码Code1时,数据纠错单元112会根据数据纠错码Code1对第一数据纠错,以输出第二数据,当数据纠错单元112接收到代表数据正确的数据纠错码Code1时,数据纠错单元112会根据数据纠错码Code1不对第一数据进行纠错,直接将第一数据作为第二数据输出。
同理,校验纠错单元122用于对第一校验码进行纠错,当校验纠错单元122接收到代表第一校验码错误的校验纠错码Code2时,校验纠错单元122会根据校验纠错码Code2对第一校验码纠错,以输出纠错后的第一校验码,当校验纠错单元122接收到代表第一校验码正确的校验纠错码Code2时,校验纠错单元122会根据校验纠错码Code2不对第一校验码进行纠错,直接将第一校验码作为纠错后的第一校验码输出。
校验码生成模块12需要生成涉及第一数据和第一校验码的第二校验码,无论是第一数据还是第一校验码出现错误,均会影响全校验值的正确性,校验码生成模块12接收数据纠错码Code1和校验纠错码Code2。
其中,全校验值生成单元121用于生成第一数据的全校验值,无论是第一数据还是第一校验码出现错误,均会影响全校验值的正确性,全校验值生成单元121同时接收数据纠错码Code1和校验纠错码Code2。
校验码纠错单元122仅对第一校验码进行纠错,因此,接收校验纠错码Code2,并根据校验纠错码Code2的指示对第一校验码进行纠错,输出纠错后的第一校验码ABusParity<7:0>(同样为8位)。
在本公开实施例中,不但对第一数据进行纠错以生成第二数据,还根据第一数据是否正确来修正全校验值,进而修正第二校验码,由此可以生成保证第二校验码的准确性。此外,本公开实施例还对第一校验码进行检验,并在第一校验码发生错误时,对第一校验码和全校验值进行纠错,可以进一步保证第二校验码的准确性。
因此,本公开实施例可以提高第二校验码的准确性,并且,由于利用了已有的存储器片上纠错电路,电路结构和信号连接也并未增加较大负担,相比于相关技术中在存储器连接的每个数据接收终端中均需要设置的第二校验码的生成电路而言,本公开实施例可以极大节省存储器与各数据接收终端的总和电路元件数量以及布局面积。
图3是本公开一个实施例中图2所示全校验值生成单元121的示意图。
参考图3,在一个实施例中,全校验值生成单元121可以包括:
全校验值计算单元1211,接收第一数据Data<127:0>和第一校验码Parity<7:0>,用于根据第一数据Data<127:0>和第一校验码Parity<7:0>生成初始全校验值NParity<8>;
全校验值纠错单元1212,连接全校验值Parity<8>计算单元和纠错码生成单元111,用于根据数据纠错码Code1或校验码纠错码Code2对初始全校验值NParity<8>进行纠错并输出全校验值Parity<8>。
其中,初始全校验值NParity<8>例如可以通过对第一数据Data<127:0>中的每一位以及第一校验码Parity<7:0>中的每一位进行异或计算后得到。
在一个实施例中,全校验值纠错单元1212用于在接收到数据纠错码Code1和校验纠错码Code2后,对初始全校验值NParity<8>取反以生成全校验值Parity<8>。
图3所示实施例对应的数据纠错电路的工作逻辑整体例如为以下逻辑:
纠错码生成单元111判断如果第一数据Data<127:0>和第一校验码Parity<7:0>均无错,则纠错码生成单元111会输出代表数据和校验码正确的Code1和Code2值,则校验码纠错单元122将不会对第一校验码Parity<7:0>进行纠错而直接输出作为纠错后的第一校验码ABusParity<7:0>(即第二校验码的低8位),全校验值纠错单元1212在接收到代表数据和校验码正确的数据纠错码Code1和校验纠错码Code2值后不会对全校验值进行纠错,会将全校验值计算单元1211运算得到的初始全校验值NParity<8>直接作为全校验码Parity<8>输出,纠错后的第一校验码ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>。数据纠错单元112将第一数据Data<127:0>直接作为第二数据ABus<127:0>输出,控制数据纠错模块11和校验码生成模块12的发送时序,以同时将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
如果纠错码生成单元111判断第一数据Data<127:0>有错,则校验码纠错单元122接收代表第一校验码正确的校验纠错码Code2,将不会对第一校验码Parity<7:0>纠错而将第一校验码Parity<7:0>直接输出作为纠错后的第一校验码ABusParity<7:0>(即第二校验码的低8位),全校验值纠错单元1212会根据代表数据错误的数据纠错码Code1将全校验值计算单元1211运算得到的初始全校验值NParity<8>取反后作为Parity<8>(即第二校验码的最高位)输出,纠错后的第一校验码ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>,数据纠错单元112会根据代表数据错误的数据纠错码Code1对第一数据Data<127:0>纠错后输出第二数据ABus<127:0>,控制数据纠错模块11和校验码生成模块12的发送时序,以同时将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
如果纠错码生成单元111判断第一校验码Parity<7:0>有错,则校验码纠错单元122接收代表第一校验码正确的校验纠错码Code2,对第一校验码Parity<7:0>纠错后输出纠错后的第一校验码ABusParity<7:0>(即第二校验码的低8位),全校验值纠错单元1212根据代表第一校验码正确的校验纠错码Code2,将全校验值计算单元1211运算得到的初始全校验值NParity<8>取反后作为Parity<8>(即第二校验码的最高位)输出,纠错后的第一校验码ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>,和数据纠错单元112会根据代表数据正确的数据纠错码Code1不对第一数据Data<127:0>纠错直接作为第二数据ABus<127:0>输出,控制数据纠错模块11和校验码生成模块12的发送时序,以同时将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
图4是本公开实施例提供的存储器的示意图。
参考图4,一种存储器400可以包括:
如上述实施例所述的数据纠错电路;
第一输出端OUT1,用于输出第二数据Data2;
第二输出端OUT2,用于输出第二数据Data2对应的第二校验码Parity2。
图4所示的存储器具有直接输出包含第二数据的全校验码的第二校验码的功能,无需数据接收终端另外设置全校验码生成模块,允许数据接收终端直接根据第二校验码对第二数据进行校验和纠错,可以极大降低对数据接收终端的技术要求和功耗,在连接多个数据接收终端时,极大降低整体电路的面积和功耗。
图5是应用图4所示存储器的集成存储装置的示意图。
参考图5,集成存储装置500可以包括:
存储器400;
控制器51,连接存储器400,用于接收第二数据Data2和第二校验码Parity2,根据第二校验码Parity2对第二数据Data2进行校验和纠错。
在一个实施例中,控制器51可以根据第二校验码Parity2确定第二数据Data2中是否存在多位错误。
图5所示集成存储装置无需在控制器51中设置全校验值生成电路,控制器51可以直接根据包含全校验值的第二校验值对第二数据进行校验和纠错,因此,控制器51具有更小的电路面积以及更低的功耗。
图6是本公开实施例提供的数据传输方法的流程图。图6所示方法可以由图5所示的存储器400执行。
参考图6,数据传输方法600可以包括:
步骤S1,获取待传输的第一数据和与第一数据对应的第一校验码;
步骤S2,根据第一校验码和第一数据对第一数据进行纠错以生成第二数据;
步骤S3,根据第一数据和第一校验码生成第二校验码;
步骤S4,同时输出第二数据和第二校验码至控制器,以使控制器根据第二校验码对第二数据进行校验和纠错。
结合图1和图2,图6所示步骤S1可以由数据纠错模块11和校验码生成模块12共同执行,步骤S2由数据纠错模块11执行,步骤S3由校验码生成模块12执行,步骤S4由数据纠错模块11和校验码生成模块12共同执行。
第一数据对应的第一校验码例如为ECC校验码,第二校验码根据第一数据和该ECC校验码形成。通过在存储器上直接根据第一数据和第一校验码生成第二校验码,可以使数据接收终端直接根据第二校验码对第二数据进行纠错,节省数据接收终端的电路元件数量和布局面积,提高存储器的兼容性。
图7是本公开一个实施例中步骤S3的子流程图。
参考图7,在一个实施例中,步骤S3可以包括:
步骤S31,对第一数据的每一位和第一校验码的每一位的进行异或运算生成初始全校验值;
步骤S32,获取第一数据和第一校验码的校验结果;
步骤S33,根据校验结果、第一校验码和全校验值生成第二校验码。
图7所示实施例可以由图3所示电路执行。步骤S31可以由全校验值计算单元1211执行,步骤S32和步骤S33可以由全校验值纠错单元1212执行。
图8是本公开一个实施例中图7所示步骤S33的子流程图。
参考图7,在一个实施例中,步骤S33可以包括:
步骤S331,在根据校验结果确定第一校验码发生错误、第一数据未发生错误时,对初始全校验值纠错以生成全校验值,对第一校验码纠错,然后,根据纠错后的第一校验码、全校验值生成第二校验码。
步骤S332,在根据校验结果确定第一校验码未发生错误,第一数据发生错误时,对初始全校验值纠错以生成全校验值,然后,根据第一校验码和全校验值生成第二校验码。
步骤S333,在根据校验结果确定第一数据和第一校验码均未发生错误时,根据第一校验码和初始全校验值生成第二校验码。
其中,对初始全校验值纠错以生成全校验值包括对初始全校验值取反以生成全校验值。
在图2和图3所示实施例中,图7所示方法可以表述为以下形式:
如果第一数据Data<127:0>和第一校验码Parity<7:0>均无错,则将第一校验码Parity<7:0>作为ABusParity<7:0>(即第二校验码的低8位),将运算得到的初始全校验值NParity<8>作为全校验码Parity<8>,ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>。将第一数据Data<127:0>直接作为第二数据ABus<127:0>发送,同时将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
如果第一数据Data<127:0>有错,则将第一校验码Parity<7:0>作为ABusParity<7:0>(即第二校验码的低8位),将运算得到的初始全校验值NParity<8>取反后作为全校验码Parity<8>,ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>,在对第一数据Data<127:0>纠错后发送第二数据ABus<127:0>,然后将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
如果第一校验码Parity<7:0>有错,则在全校验值纠错单元1212对第一校验码Parity<7:0>纠错后作为ABusParity<7:0>(即第二校验码的低8位),将运算得到的初始全校验值NParity<8>取反后作为全校验码Parity<8>,ABusParity<7:0>和Parity<8>形成第二校验码ABusParity<8:0>,将第一数据Data<127:0>直接作为第二数据ABus<127:0>发送,然后将第二校验码ABusParity<8:0>和第二数据ABus<127:0>通过输出端口送出去。
除了先生成全校验值,再直接根据数据纠错码和校验纠错码对全校验值纠错,还可以先纠错,再根据纠错后的正确数据生成全校验值。
图9是本公开另一个实施例中步骤S3的子流程图。
参考图9,在另一个实施例中,步骤S3可以包括:
步骤S91,获取第一数据和第一校验码的校验结果;
步骤S92,在根据校验结果确定第一数据和第一校验码均未出现错误时,对第一数据的每一位和第一校验码的每一位进行异或运算后确定全校验值,根据全校验值和第一校验码生成第二校验码;
步骤S93,在根据校验结果确定仅第一数据出现错误时,对第二数据的每一位和第一校验码的每一位进行异或运算后确定全校验值;根据全校验值和第一校验码生成第二校验码;
步骤S94,在根据校验结果确定仅第一校验码出现错误时,对第一数据的每一位和纠错后的第一校验码的每一位进行异或运算后确定全校验值,根据全校验值和纠错后的第一校验码生成第二校验码。
图9所示实施例可以应用在第一校验码为非ECC校验码的其他种类的校验码时,具有更加准确的处理结果。
在图9所示实施例中,如果仅第一数据出现错误,则直接使用纠错后的第二数据生成全校验值,这就要求对第一数据的纠错要在生成第二校验值之前完成。如果仅第一校验码出现错误,则需要首先对第一校验码进行纠错,然后生成全校验值,这就要求对第一校验码的纠错要在生成全校验值之前完成。在第一校验码为ECC校验码时,图7所示实施例相比于图9所示实施例,可以迅速生成全校验值,并且根据ECC校验码的生成原理,通过取反这一简单的动作纠正全校验值,无需等待对第一数据的纠错和对第一校验值的纠错,两种纠错可以和生成全校验值的过程并行运行,数据处理速度较快。
综上所述,本公开实施例提供的数据处理方法,可以在实现对第一数据纠错的同时,直接根据第一数据和第一校验码生成并输出第二校验码,使数据接收终端能够直接根据该第二校验码对存储器最终输出的第二数据进行校验和纠错,节省了对数据接收终端的功能要求,进而减少了数据接收终端的元件数量和布局面积,提高了存储器的兼容能力。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。

Claims (20)

1.一种数据纠错电路,其特征在于,设置在存储器中,包括:
数据纠错模块,接收第一数据和所述第一数据对应的第一校验码,所述数据纠错模块用于根据所述第一校验码对所述第一数据进行纠错以生成第二数据,并输出所述第二数据;
校验码生成模块,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成并输出第二校验码。
2.如权利要求1所述的数据纠错电路,其特征在于,所述数据纠错模块包括:
纠错码生成单元,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成数据纠错码和校验纠错码;
数据纠错单元,连接所述纠错码生成单元,用于接收所述第一数据和所述数据纠错码,并根据所述数据纠错码对所述第一数据进行纠错以生成并输出第二数据。
3.如权利要求2所述的数据纠错电路,其特征在于,所述校验码生成模块连接所述纠错码生成单元并接收所述数据纠错码和所述校验纠错码,所述校验码生成模块根据所述数据纠错码或所述校验纠错码纠正所述第二校验码。
4.如权利要求2所述的数据纠错电路,其特征在于,所述校验码生成模块包括:
全校验值生成单元,连接所述纠错码生成单元,用于接收所述第一数据和所述第一校验码,并根据所述第一数据、所述第一校验码和所述数据纠错码生成全校验值,或者,根据所述第一数据、所述第一校验码和所述校验纠错码生成所述全校验值,所述第二校验码包括所述全校验值。
5.如权利要求4所述的数据纠错电路,其特征在于,所述全校验值生成单元包括:
全校验值计算单元,接收所述第一数据和所述第一校验码,用于根据所述第一数据和所述第一校验码生成初始全校验值;
全校验值纠错单元,连接所述全校验值计算单元和所述纠错码生成单元,用于根据所述数据纠错码或所述校验码纠错码对所述初始全校验值进行纠错并输出所述全校验值。
6.如权利要求5所述的数据纠错电路,其特征在于,所述全校验值纠错单元用于在接收到所述数据纠错码或所述校验纠错码后,对所述初始全校验值取反以生成所述全校验值。
7.如权利要求5-6任一项所述的数据纠错电路,其特征在于,所述初始全校验值通过对所述第一数据中的每一位以及所述第一校验码中的每一位进行异或计算后得到。
8.如权利要求4-6任一项所述的数据纠错电路,其特征在于,所述校验码生成模块包括:
校验码纠错单元,连接所述纠错码生成单元,接收所述第一校验码,用于根据所述校验纠错码对所述第一校验码进行纠错,所述第二校验码包括纠错后的所述第一校验码。
9.如权利要求8所述的数据纠错电路,其特征在于,所述第二校验码的最高位为所述全校验值,纠错后的所述第一校验码构成所述第二校验码的其余位。
10.如权利要求8所述的数据纠错电路,其特征在于,所述第一校验码包括8位数据。
11.一种存储器,其特征在于,包括:
如权利要求1~10任一项所述的数据纠错电路;
第一输出端,用于输出第二数据;
第二输出端,用于输出所述第二数据对应的第二校验码。
12.一种集成存储装置,包括:
如权利要求11所述的存储器;
控制器,连接所述存储器,用于接收第二数据和第二校验码,根据所述第二校验码对所述第二数据进行校验和纠错。
13.如权利要求12所述的集成存储装置,其特征在于,所述控制器根据所述第二校验码确定所述第二数据中是否存在多位错误。
14.一种数据传输方法,其特征在于,由权利要求11所述的存储器执行,包括:
获取待传输的第一数据和与所述第一数据对应的第一校验码;
根据所述第一校验码和所述第一数据对所述所述第一数据进行纠错以生成第二数据;
根据所述第一数据和所述第一校验码生成第二校验码;
同时输出所述第二数据和所述第二校验码至控制器,以使控制器根据所述第二校验码对所述第二数据进行校验和纠错。
15.如权利要求14所述的数据传输方法,其特征在于,所述根据所述第一数据和所述第一校验码生成第二校验码包括:
对所述第一数据的每一位和所述第一校验码的每一位的进行异或运算生成初始全校验值;
获取所述第一数据和所述第一校验码的校验结果;
根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码。
16.如权利要求15所述的数据传输方法,其特征在于,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:
在根据所述校验结果确定所述第一校验码发生错误、所述第一数据未发生错误时,对所述初始全校验值纠错以生成全校验值,对所述第一校验码纠错;
根据纠错后的所述第一校验码、所述全校验值生成所述第二校验码。
17.如权利要求15所述的数据传输方法,其特征在于,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:
在根据所述校验结果确定所述第一校验码未发生错误,所述第一数据发生错误时,对所述初始全校验值纠错以生成全校验值;
根据所述第一校验码和所述全校验值生成所述第二校验码。
18.如权利要求15所述的数据传输方法,其特征在于,所述根据所述校验结果、所述第一校验码和所述全校验值生成所述第二校验码包括:
在根据所述校验结果确定所述第一数据和所述第一校验码均未发生错误时,根据所述第一校验码和所述初始全校验值生成所述第二校验码。
19.如权利要求16或17所述的数据传输方法,其特征在于,所述对所述初始全校验值纠错以生成全校验值包括:
对所述初始全校验值取反以生成所述全校验值。
20.如权利要求14所述的数据传输方法,其特征在于,所述根据所述第一数据和所述第一校验码生成第二校验码包括:
获取所述第一数据和所述第一校验码的校验结果;
在根据所述校验结果确定所述第一数据和所述第一校验码均未出现错误时,对所述第一数据的每一位和所述第一校验码的每一位进行异或运算后确定全校验值,根据所述全校验值和所述第一校验码生成所述第二校验码;
在根据所述校验结果确定仅所述第一数据出现错误时,对所述第二数据的每一位和所述第一校验码的每一位进行异或运算后确定全校验值;根据所述全校验值和所述第一校验码生成所述第二校验码;
在根据所述校验结果确定仅所述第一校验码出现错误时,对所述第一数据的每一位和纠错后的所述第一校验码的每一位进行异或运算后确定全校验值,根据所述全校验值和纠错后的所述第一校验码生成所述第二校验码。
CN202210209652.0A 2022-03-04 2022-03-04 数据纠错电路和数据传输方法 Pending CN116737447A (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN202210209652.0A CN116737447A (zh) 2022-03-04 2022-03-04 数据纠错电路和数据传输方法
KR1020237020716A KR20230131184A (ko) 2022-03-04 2022-05-26 데이터 오류 정정 회로와 데이터 전송 방법
JP2023537126A JP2024515918A (ja) 2022-03-04 2022-05-26 データ誤り訂正回路及びデータ伝送方法
EP22839115.7A EP4266585A4 (en) 2022-03-04 2022-05-26 DATA ERROR CORRECTION CIRCUIT AND DATA TRANSMISSION METHOD
PCT/CN2022/095324 WO2023165034A1 (zh) 2022-03-04 2022-05-26 数据纠错电路和数据传输方法
US18/151,432 US20230283298A1 (en) 2022-03-04 2023-01-07 Data error correction circuit and data transmission method
TW112101034A TW202336589A (zh) 2022-03-04 2023-01-10 資料錯誤校正電路和資料傳輸方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210209652.0A CN116737447A (zh) 2022-03-04 2022-03-04 数据纠错电路和数据传输方法

Publications (1)

Publication Number Publication Date
CN116737447A true CN116737447A (zh) 2023-09-12

Family

ID=85462041

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210209652.0A Pending CN116737447A (zh) 2022-03-04 2022-03-04 数据纠错电路和数据传输方法

Country Status (3)

Country Link
CN (1) CN116737447A (zh)
TW (1) TW202336589A (zh)
WO (1) WO2023165034A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050028067A1 (en) * 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
EP1802019B1 (de) * 2005-04-06 2008-05-28 Siemens Aktiengesellschaft Erkennung von Fehlern bei der Übermittlung von Daten
US9411683B2 (en) * 2013-12-26 2016-08-09 Intel Corporation Error correction in memory
CN111752747A (zh) * 2020-06-09 2020-10-09 山东华翼微电子技术股份有限公司 一种增强检错能力的内存安全校验方法

Also Published As

Publication number Publication date
WO2023165034A1 (zh) 2023-09-07
TW202336589A (zh) 2023-09-16

Similar Documents

Publication Publication Date Title
US6799287B1 (en) Method and apparatus for verifying error correcting codes
US11108499B2 (en) System and method for transferring data and a data check field
JPH0328094B2 (zh)
TWI518500B (zh) 資料傳輸檢測裝置、資料傳輸檢測方法及其電子裝置
CN112702065B (zh) Fpga码流数据校验方法及装置
CN108337069B (zh) 一种改进的降低误码率的末端并行分组crc校验系统
CN112787856A (zh) 故障判断方法、装置、计算机设备以及可读存储介质
CN109074294A (zh) 通信装置和通信系统
CN110806948A (zh) 一种数据校验方法及装置
US7555695B2 (en) Data transmitting apparatus, data receiving apparatus, data transmitting method, and data receiving method
CN114237972A (zh) 一种用于总线传输的端到端ecc保护装置及方法
CN114978417B (zh) 一种基于两路blvds总线的数据通信校验方法及系统
CN116737447A (zh) 数据纠错电路和数据传输方法
EP4266585A1 (en) Data error correction circuit and data transmission method
CN110532127B (zh) 一种差错校验位协议转换器
CN111786842B (zh) 数据处理方法及硬件在环测试系统
US11928022B2 (en) Introduction and detection of parity error in a UART
CN114968654B (zh) 一种纠错码电路及纠错方法
CN117290154B (zh) 一种基于汽车功能安全的axi_dma冗余设计方法
CN113595560B (zh) 一种信息纠错方法、装置、设备及存储介质
US20090150727A1 (en) Data transmission method
US12013771B2 (en) Method and interconnect interface for built-in self-test
CN116705122A (zh) 数据纠错电路和数据传输电路
CN110740009B (zh) 数据传输校验装置及方法
JP2012039552A (ja) エラーチェック回路及びエラーチェック方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination