CN117935896A - 一种存储器、电子设备及数据读写方法 - Google Patents

一种存储器、电子设备及数据读写方法 Download PDF

Info

Publication number
CN117935896A
CN117935896A CN202410143664.7A CN202410143664A CN117935896A CN 117935896 A CN117935896 A CN 117935896A CN 202410143664 A CN202410143664 A CN 202410143664A CN 117935896 A CN117935896 A CN 117935896A
Authority
CN
China
Prior art keywords
data
code
check code
check
flip
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
CN202410143664.7A
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.)
Chengdu Haiguang Integrated Circuit Design Co Ltd
Original Assignee
Chengdu Haiguang Integrated Circuit Design Co Ltd
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 Chengdu Haiguang Integrated Circuit Design Co Ltd filed Critical Chengdu Haiguang Integrated Circuit Design Co Ltd
Priority to CN202410143664.7A priority Critical patent/CN117935896A/zh
Publication of CN117935896A publication Critical patent/CN117935896A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

本申请属于涉及一种存储器、电子设备及数据读写方法,存储器领域。存储器包括:校验码生成模块、编码模块、存储阵列;校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;编码模块被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,以减少所述第一数据以及所述第一校验码中0或1的个数,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储阵列被配置为存储所述第二数据、所述第二校验码和所述翻转码。本申请可以降低存储器的故障率。

Description

一种存储器、电子设备及数据读写方法
技术领域
本申请属于存储器领域,具体涉及一种存储器、电子设备及数据读写方法。
背景技术
eFuse(一次性可编程存储器)存储的特点是数据不会因为电源关闭而消失。eFuse适用于保护需要固化在芯片中的敏感信息的应用场景,如芯片ID(身份标识)、芯片密钥等。在芯片制造过程中,这些信息可以被编程进eFuse中,以保证被写入的数据不会被修改或篡改。此外,eFuse还可以在芯片量产后使用,用于一些特殊功能的设置和保护。
对于eFuse来说,当存储单元未被击穿(故障或损坏)时,可以正常读取和写入数据,而不会发生数据丢失或损坏,它的逻辑状态为0,当击穿时,它的逻辑状态为1。在芯片使用过程中如果长时间处于高温或者大电流环境,容易导致eFuse被击穿,从而增大了存储区域bit翻转的可能,最终导致芯片功能异常。
发明内容
鉴于此,本申请的目的在于提供一种存储器、电子设备及数据读写方法,以降低存储器的故障率。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种存储器,包括:校验码生成模块、编码模块以及存储阵列;校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;编码模块,被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储阵列,被配置为存储所述第二数据、所述第二校验码和所述翻转码。
在本申请实施例中,在存储数据时,通过生成第一数据的第一校验码,以便后续用于对第一数据进行校验纠错,以降低存储器的故障率,同时,通过对第一数据、第一校验码进行编码,以减少第一数据、第一校验码中数据0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
结合第一方面实施例的一种可能的实施方式,所述第一数据以及所述第一校验码为二进制数据;所述编码模块包括:计数器、比较器以及编码单元;计数器被配置为统计所述第一数据、所述第一校验码中0和1的个数;比较器被配置为比较所述0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;编码单元被配置为根据所述翻转情况、所述第一数据、所述第一校验码,编码生成所述第二数据、第二校验码和所述翻转码。
在本申请实施例中,通过统计第一数据、第一校验码中0和1的个数,以此来确定第一数据、第一校验码的翻转情况,并根据翻转情况来对第一数据、第一校验码进行翻转,这样快速减少第一数据、第一校验码中数据0或1的个数,并且处理流程简单。同时,采用上述结构的编码模块,可以在实现其发明目的的同时,减少设计难度,易于实现。
结合第一方面实施例的一种可能的实施方式,所述翻转码包括:数据翻转码和校验翻转码,所述数据翻转码表征所述第二数据的翻转情况,所述校验翻转码表征所述第二校验码的翻转情况。
在本申请实施例中,采用数据翻转码和校验翻转码的方式,使得在根据二进制数中0和1的个数,确定数据和校验码是否翻转时,可以不再是同时翻转或不翻转,而是可以根据第一数据中0和1的个数来确定第一数据是否翻转、根据第一校验码中0和1的个数来确定第一校验码是否翻转,能进一步减少存储的数据0或1的个数。
结合第一方面实施例的一种可能的实施方式,所述存储器还包括:解码模块、数据校验纠错模块;解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;数据校验纠错模块包括校验和纠错单元,所述校验和纠错单元,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
在本申请实施例中,通过设置解码模块对第二数据、第二校验码和翻转码进行解码,还原出第一数据的第一校验码,之后通过数据校验纠错模块,来对第一数据进行校验,可以确保输出的数据是准确性。
结合第一方面实施例的一种可能的实施方式,所述数据校验纠错模块还包括错误状态寄存器;所述校验和纠错单元还被配置为:当校验结果表征所述第一数据异常的情况下,判断所述第一数据能否被纠正;在所述第一数据能被纠正的情况下,对所述第一数据进行纠正,输出纠正后的所述第一数据;在所述第一数据不能被纠正的情况下,配置所述错误状态寄存器输出中断标记位,其中,所述中断标记位用于表征所述第一数据异常、且不可纠正。
在本申请实施例中,通过数据校验纠错模块来对数据进行纠正,以提高数据的准确性,并且在第一数据不能被纠正的情况下,输出中断标记位,以便及时通知应用数据异常。
结合第一方面实施例的一种可能的实施方式,所述解码模块被配置为:在所述翻转码表征所述第二数据、所述第二校验码发生翻转的情况下,将所述第二数据、所述第二校验码进行翻转,其中,所述第一数据为翻转后的所述第二数据,所述第一校验码为翻转后的所述第二校验码。
在本申请实施例中,根据翻转码表征的翻转情况即可快速完成解码,如在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转即可。
结合第一方面实施例的一种可能的实施方式,所述解码模块包括:计数器、比较器以及解码单元;计数器被配置为统计所述第二数据、所述第二校验码中0和1的个数;比较器被配置为比较所述0和1的个数,确定所述第二数据、所述第二校验码的翻转情况;解码单元被配置为如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况相同,对所述翻转码、所述第二数据、所述第二校验码进行解码,得到第一数据和第一校验码。
在本申请实施例中,通过统计第二数据、第二校验码中0和1的个数,以此确定第二数据、第二校验码的翻转情况,之后将根据0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,在二者的翻转情况相同时,才根据翻转码表征的翻转情况对第二数据、第二校验码进行处理,这样可以避免因为翻转码异常导致的后续校验异常的情况发生,例如,因翻转码异常,使得根据异常的翻转码对第二数据、第二校验码进行翻转,后续在校验时出错。同时,采用上述结构的解码模块,可以在实现其发明目的的同时,减少设计难度,易于实现。
结合第一方面实施例的一种可能的实施方式,所述解码模块还被配置为:如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况不相同,输出所述第二数据、所述第二校验码,以及翻转后的所述第二数据、翻转后的所述第二校验码;其中,所述第一数据包括所述第二数据以及翻转后的所述第二数据,所述第一校验码包括所述第二校验码以及翻转后的所述第二校验码。
在本申请实施例中,如果根据0和1的个数确定的翻转情况与翻转码表征的翻转情况不相同,直接输出第二数据、第二校验码,以及翻转后的第二数据、翻转后的第二校验码,以便后续在校验时,基于第二校验码对第二数据,以及基于翻转后的第二校验码对翻转后的第二数据进行校验,这样可以减少因为翻转码异常所带来的影响。
结合第一方面实施例的一种可能的实施方式,所述校验和纠错单元还被配置为:基于所述第二校验码对所述第二数据进行第一校验,以及基于翻转后的所述第二校验码对翻转后的所述第二数据进行第二校验;当第一校验结果表征所述第二数据正常的情况下,输出所述第二数据,或,当第二校验结果表征翻转后的所述第二数据正常的情况下,输出翻转后的所述第二数据。
在本申请实施例中,当第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码在校验时,基于第二校验码对第二数据,以及基于翻转后的第二校验码对翻转后的第二数据进行校验,这样可以减少因为翻转码异常所带来的影响。
第二方面,本申请实施例还提供了一种存储器,包括:存储阵列、解码模块、数据校验纠错模块;存储阵列,被配置为存储第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,生成第一数据和第一校验码;数据校验纠错模块,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
第三方面,本申请实施例还提供了一种电子设备,包括:如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的存储器。
第四方面,本申请实施例还提供了一种数据读写方法,包括:获取第一数据,并生成所述第一数据的第一校验码;对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储所述第二数据、所述第二校验码和所述翻转码。
结合第四方面实施例的一种可能的实施方式,所述方法还包括:读取所述第二数据、所述第二校验码和所述翻转码;对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。
图1示出了本申请实施例提供的一种存储器与应用连接的结构示意图。
图2示出了本申请实施例提供的一种编码模块的原理示意图。
图3示出了本申请实施例提供的一种写eFuse的流程示意图。
图4示出了本申请实施例提供的一种解码模块的原理示意图。
图5示出了本申请实施例提供的又一种解码模块的原理示意图。
图6示出了本申请实施例提供的一种读eFuse的流程示意图。
图7示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。以下实施例可作为示例,用于更加清楚地说明本申请的技术方案,而不能以此来限制本申请的保护范围。本领域技术人员可以理解的是,在不相冲突的情况下,下述实施例及实施例中的特征可以相互结合。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请实施例的描述中,除非另有明确的规定和限制,技术术语“电连接”可以是直接电性连接,也可以是通过中间媒介间接电性连接。
为了降低存储器的存储故障,本申请实施例提供了一种存储器、电子设备及数据读写方法。
下面结合图1所示的存储器进行说明,本申请实施例提供的存储器包含存储阵列、校验码生成模块、编码模块,解码模块以及数据校验纠错模块。通过在已有存储器的基础上,增设校验码生成模块、编码模块、解码模块以及数据校验纠错模块,来降低存储器的存储故障。其中,应用可以向存储器写入数据,也可以从存储器中读取数据,应用可以是需要向存储器写入或读取数据的各种应用,如处理器等。
本申请中的存储器可以是eFuse存储器,或者其他非易失性存储器,如可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
在一种可能的实施方式下,校验码生成模块、编码模块,解码模块以及数据校验纠错模块可以部分或者全部位于存储器之外,例如,在一种可能的方式下,解码模块以及数据校验纠错模块可以位于存储器之外,此时,存储器包含存储阵列、校验码生成模块、编码模块,同理,校验码生成模块、编码模块也可以位于存储器之外,此时,存储器包含存储阵列、解码模块以及数据校验纠错模块。
在应用向存储器写入第一数据时:
校验码生成模块被配置为接收第一数据,并生成第一数据的第一校验码,以及将第一数据以及第一校验码发送给编码模块。其中,第一校验码用于后续对第一数据进行校验。
校验码生成模块在生成第一数据的第一校验码时,可以是根据指定的校验算法来生成第一数据的第一校验码,例如,校验算法可以是ECC(Error Checking andCorrecting,错误检查和纠正)算法、LDPC(Low Density Parity Check,低密度奇偶校验)算法,或者其他校验算法。当校验算法为ECC算法时,第一校验码为ECC码,当校验算法为LDPC算法时,第一校验码为LDPC码。
数据进入到校验码生成模块后,根据校验算法生成一个校验码,并且和数据一起发送给编码模块。校验码生成模块的输出格式:N bit数据+Y bit校验码,例如收到的数据为b’10110110,生成的校验码为b’11001101,N、Y均为大于等于2的整数。
编码模块被配置为对第一数据以及第一校验码进行编码,生成第二数据、第二校验码和翻转码,以减少所述第一数据以及所述第一校验码中0或1的个数,之后向存储阵列写入第二数据、第二校验码和翻转码。其中,翻转码表征第二数据、第二校验码的翻转情况。存储阵列,被配置为存储第二数据、第二校验码和翻转码。通过编码模块对第一数据以及第一校验码进行编码,以减少第一数据以及第一校验码中0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
编码模块接收到的第一数据以及第一校验码可以是二进制数据,如果第一数据以及第一校验码不为二进制数据,需要将其转换为二进制数据。编码模块在编码时,分别统计第一数据、第一校验码的二进制数中0和1的个数,根据二进制数中0和1的个数,确定第一数据、第一校验码的翻转情况,根据翻转情况、第一数据、第一校验码,生成第二数据、第二校验码和翻转码。编码完成后编码模块将数据、校验码和翻转码写入存储阵列。
例如,对于存储器损失时数据只能由0变成1的存储器,如eFuse存储器、PROM存储器被击穿时数据只能由0变成1,需要减少存储数据中数据0的个数,因此,若二进制数中0的个数大于1的个数,第一数据、第一校验码需要翻转,则第二数据为翻转后的第一数据,第二校验码为翻转后的第一校验码,翻转码表征第二数据、第二校验码发生翻转;反之,若二进制数中0的个数小于等于1的个数,第一数据、第一校验码不需要翻转,则第二数据为第一数据,第二校验码为第一校验码,翻转码表征第二数据、第二校验码未发生翻转。其中,翻转码可以是数字0或数字1,例如,第二数据、第二校验码发生翻转时,翻转码为0,第二数据、第二校验码未发生翻转时,翻转码为1,当然也可以反过来表示。
一种可选实施方式下,编码模块可以包括可编程逻辑器件,利用可编程逻辑器件实现上述功能。在一些可能的实施方式下,编码模块可以包括计数器、比较器和编码单元。计数器被配置为统计第一数据、第一校验码中0和1的个数;比较器被配置为比较0和1的个数,确定第一数据、第一校验码的翻转情况;编码单元被配置为根据翻转情况、第一数据、第一校验码,编码生成第二数据、第二校验码和翻转码。
上述的编码过程可以参阅图2所示的原理。写操作时编码模块将收到的数据和校验码进行编码。编码时编码模块中的计数器分别统计二进制数据和二进制校验码中0和1的个数。统计完成后编码模块中的比较器比较0的个数和1的个数。如果0的个数大于1的个数,则编码模块中的编码单元设置翻转码为0,同时将数据和校验码进行翻转。否则设置翻转码为1。编码完成后编码单元将数据、校验码和翻转码写入到存储器。
编码模块的输出格式:N bit数据+Y bit校验码+1bit翻转码。以N为8,Y为8为例,假如,编码模块收到的数据为b’01001001,校验码为b’00110010,编码时获取数据和校验码中0和1的个数,其中0的个数为10,1的个数为6,0的个数大于1的个数,因此,将数据和校验码进行翻转,同时将翻转码设置为0。编码后数据格式:数据+校验码+翻转码=b’10110110(翻转后数据)b’11001101(翻转后校验码)0(翻转码)。
本申请所示的方法同样适用于存储器损坏时,数据只能由1变成0的存储器,对于存储器损坏时数据只能由1变成0的存储器,需要减少存储数据为1的个数。本申请实施例中,在存储数据时通过减少数据0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
一种实施方式下,编码模块在根据二进制数中0和1的个数,确定数据和校验码是否翻转时,数据和校验码可以不再是同时翻转或不翻转(该种实施方式下,只需要一个翻转码)而是可以根据各自的二进制数中0和1的个数,来确定数据、校验码是否翻转,这样可以进一步减少存储的数据0或1的个数。此时,翻转码包括:数据翻转码和校验翻转码,数据翻转码表征第二数据的翻转情况,校验翻转码表征第二校验码的翻转情况。即根据第一数据中0和1的个数来确定第一数据是否翻转,如第一数据中0的个数大于1的个数,确定第一数据需要翻转,对应的数据翻转码为0。同理,根据第一校验码中0和1的个数来确定第一校验码是否翻转,如第一校验码中0的个数大于1的个数,确定第一校验码需要翻转,对应的校验翻转码为0。在该种实施方式下,编码模块的输出格式:N bit数据+Y bit校验码+2bit翻转码(1bit数据翻转码+1bit校验翻转码)。
一种实施方式下,以存储器为eFuse为例,则写eFuse的流程图,如图3所示。当应用发起写eFuse操作时,校验码生成模块计算出校验码,然后将数据和校验码发给编码模块。编码模块统计收到的数据和校验码中0和1的个数,判断收到的数据和校验码中0的个数是否大于1的个数,如果大于则翻转码设置为0,否则翻转码为1。最后编码模块将数据、校验码和翻转码写入eFuse。
在应用从存储器中读取数据时:
解码模块被配置为从存储阵列中读取第二数据、第二校验码和翻转码,并对第二数据、第二校验码和翻转码进行解码,得到第一数据和第一校验码,并输出第一数据和第一校验码。
数据校验纠错模块,被配置为基于来自解码模块的第一校验码对第一数据进行校验,当校验结果表征第一数据正常的情况下,输出第一数据。
一种实施方式下,数据校验纠错模块包括校验和纠错单元,校验和纠错单元,被配置为基于来自解码模块的第一校验码对第一数据进行校验,当校验结果表征第一数据正常的情况下,输出第一数据。
一种实施方式下,数据校验纠错模块还被配置为:当校验结果表征第一数据异常的情况下,判断第一数据能否被纠正;在第一数据能被纠正的情况下,对第一数据进行纠正,输出纠正后的第一数据;在第一数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征第一数据异常、且不可纠正。
一种实施方式下,在输出中断标记位时,可以通过配置错误状态寄存器来实现,例如,在第一数据正常,或者,在第一数据异常、且可纠正时,配置错误状态寄存器为0,在第一数据异常、且不可纠正,配置错误状态寄存器为1,以通知应用数据异常。其中,错误状态寄存器可以设置于存储器内部。
在该种实施方式下,数据校验纠错模块还可以包括错误状态寄存器,校验和纠错单元还被配置为:当校验结果表征第一数据异常的情况下,判断第一数据能否被纠正;在第一数据能被纠正的情况下,对第一数据进行纠正,输出纠正后的第一数据;在第一数据不能被纠正的情况下,配置错误状态寄存器输出中断标记位,其中,中断标记位用于表征第一数据异常、且不可纠正。在一些可能的实施方式下,错误状态寄存器可以不属于数据校验纠错模块,其可以单独设置。
解码模块在对第二数据、第二校验码和翻转码进行解码,得到第一数据和第一校验码时,一种实施方式下,在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转,得到第一数据以及第一校验码,其中,第一数据为翻转后的第二数据,第一校验码为翻转后的第二校验码。在翻转码表征第二数据、第二校验码未发生翻转的情况下,第一数据为第二数据,第一校验码为第二校验码。其原理如图4所示,读操作时解码模块将收到的数据、校验码和翻转码进行解码。解码时判断翻转码的值是否为0,如果值为0则将数据和校验码翻转后发送给数据校验纠错模块。否则数据和校验码不翻转,直接将数据码和校验码发送给数据校验纠错模块。
编码模块的输出格式:N bit数据+Y bit校验位。例如N为8,Y为8,收到的数据为b’10110110,校验码为b’11001101,翻转码为0。由于翻转码为0,首先对数据和校验码进行翻转,翻转后的数据为b’001001001(翻转后数据),校验码为b’0011001(翻转后校验码)。然后将数据和校验码送往数据校验纠错模块。
在一些可能的实施方式下,解码模块在对第二数据、第二校验码和翻转码进行解码时,还会统计第二数据、第二校验码的二进制数中0和1的个数,根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码。在根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码时,一种实施方式下,其过程可以是:根据二进制数中0和1的个数,确定第二数据、第二校验码的翻转情况,如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,则按照正常的逻辑处理,即如果翻转码表征发生翻转,将第二数据、第二校验码进行翻转,如果翻转码表征没有发生翻转,直接输出第二数据、第二校验码。在一些可能的实施方式中,解码模块可以包括可编程逻辑器件,利用可编程逻辑器件实现上述功能。在一些可能的实施方式下,解码模块可以包括:计数器、比较器以及解码单元。计数器被配置为统计第二数据、第二校验码中0和1的个数;比较器被配置为比较0和1的个数,确定第二数据、第二校验码的翻转情况;解码单元被配置为如果根据0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,对翻转码、第二数据、第二校验码进行解码,得到第一数据和第一校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不同,一种实施方式下,可以直接输出中断标记位,表征数据异常。在一些可能的实施方式下,编码单元可以根据二进制数中0和1的个数确定的翻转情况,来进行逻辑处理,如根据二进制数中0和1的个数确定的翻转情况为发生翻转,将第二数据、第二校验码进行翻转,否则直接输出第二数据、第二校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不同,一种可能的实施方式下,编码单元可以根据第二数据、第二校验码,得到第一数据和第一校验码,如需要输出第二数据、第二校验码,以及翻转后的第二数据、翻转后的第二校验码。例如,对于存储器损坏时数据只能由0变成1的存储器,在翻转码表征第二数据、第二校验码发生翻转,但二进制数中1的个数小于0的个数(表征没有翻转)时,输出第二数据以及翻转后的第二数据,以及输出第二校验码以及翻转后的第二校验码,此时,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码。该种实施方式中,解码模块的原理示意如图5所示,在读操作时解码模块将收到的数据、校验码和翻转码进行解码。解码时判断翻转码表征的翻转情况是否与数据、校验码的二进制中0和1的个数表征的翻转情况是否相同,在相同时,判断翻转码的值是否为0,如果值为0则将数据和校验码翻转后发送给数据校验纠错模块。否则数据和校验码不翻转,直接将数据码和校验码发送给数据校验纠错模块。如果翻转码表征的翻转情况与根据二进制中0和1的个数表征的翻转情况不相同时,将数据和校验码翻转后发送给数据校验纠错模块,同时,直接将数据码和校验码发送给数据校验纠错模块。
一种实施方式下,翻转码可以是一个,也可以是2个,当翻转码为2个时,需要分别对第二数据以及第二校验码进行判断,不再是整体判断。
一种实施方式下,当数据校验纠错模块收到的第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码时,数据校验纠错模块中的校验和纠错单元还被配置为基于第二校验码对第二数据进行第一校验,以及基于翻转后的第二校验码对翻转后的第二数据进行第二校验;当第一校验结果表征第二数据正常的情况下,输出第二数据,或,当第二校验结果表征翻转后的第二数据正常的情况下,输出翻转后的第二数据。
当第一校验结果表征第二数据异常的情况下,判断第二数据能否被纠正;在第二数据能被纠正的情况下,对第二数据进行纠正,输出纠正后的第二数据;在第二数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征第二数据异常、且不可纠正。当第二校验结果表征翻转后的第二数据异常的情况下,判断翻转后的第二数据能否被纠正;在翻转后的第二数据能被纠正的情况下,对翻转后的第二数据进行纠正,输出纠正后的数据;在翻转后的第二数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征翻转后的第二数据异常、且不可纠正。
一种实施方式下,以存储器为eFuse为例,则读eFuse的流程图,如图6所示。当应用发起读操作时,解码模块读出数据、校验码和翻转码。解码模块判断翻转码是否为0。如果翻转码为0则将数据和校验码进行翻转后发送到数据校验纠错模块,否则不翻转直接发送到数据校验纠错模块。数据校验纠错模块中的校验和纠错单元对数据进行校验和纠错,如果数据发生了错误且能被纠正或者数据未发生错误,则错误状态寄存器设置为0,同时将纠正后数据或者无错误的数据返回给应用做后续处理。例如数据发给解密引擎或者IP参数配置等。否则错误状态寄存器设置为1用于通知用户数据异常。
本申请中,在存储数据时通过减少数据0或1的个数,降低eFuse中数据发生翻转的概率,达到降低eFuse储存故障率的效果,再通过使用校验和纠错进一步降低了储存故障率。可以理解的是,上述的校验和纠错与存储数据时通过减少数据0或1的个数的方式可以不同时使用,在该种实施方式下,可以省略上述的校验码生成模块以及数据校验纠错模块。此时,编码模块直接对接收到的数据进行编码,生成编码数据和翻转码,并将其存入存储阵列,在读取数据时,解码模块对读取的编码数据和翻转码进行解码,得到解码后的数据,之后,直接输出数据即可。因此,在本申请揭露的技术范围内的各种轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。
本申请实施例还提供了一种电子设备,该电子设备包括上述的存储器。一种可能的实施方式下,电子设备的结构框图如图7所示。所述电子设备包括:收发器、存储器、通讯总线以及处理器。
所述收发器、所述存储器、处理器各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,收发器用于收发数据。存储器用于存储数据。所述处理器,可以用于向存储器写入数据或读取数据。
处理器可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、微处理器等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。或者该处理器也可以是任何常规的处理器等。
其中,上述的电子设备,包括但不限于手机、平板、电脑、服务器等。
本申请实施例还提供了一种数据读写方法,该数据读写方法可以应用于上述的存储器。该数据读写方法包括:S1~S3。
S1:获取第一数据,并生成所述第一数据的第一校验码。
该步骤可以是由上述的校验码生成模块来实现。
S2:对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码。
其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况。该步骤可以是由上述的编码模块来实现。
一种实施方式下,该步骤的实现过程可以是:统计所述第一数据、所述第一校验码的二进制数中0和1的个数;根据二进制数中0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;根据所述翻转情况、所述第一数据、所述第一校验码,生成所述第二数据、所述第二校验码和所述翻转码。
S3:存储所述第二数据、所述第二校验码和所述翻转码。
该步骤可以是由上述的存储阵列来实现。
一种实施方式下,数据读写方法还包括S4~S6。
S4:读取所述第二数据、所述第二校验码和所述翻转码。
该步骤可以由上述的解码模块来实现。
S5:对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码。
该步骤可以由上述的解码模块来实现。
一种实施方式下,S5的实现过程是:根据翻转码表征的翻转情况确定第二数据、第二校验码是否需要翻转,例如,在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转,其中,第一数据为翻转后的第二数据,第一校验码为翻转后的第二校验码。
一种实施方式下,S5的实现过程是:统计第二数据、第二校验码的二进制数中0和1的个数;根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码。
其中,根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码的过程可以是:比较二进制数中0和1的个数,确定第二数据、第二校验码的翻转情况;如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,对翻转码、第二数据、第二校验码,进行解码,得到第一数据和第一校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不相同,则可以同时输出第二数据、第二校验码,以及输出翻转后的第二数据、翻转后的第二校验码。此时,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码。
S6:基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
该步骤可以由上述的数据校验纠错模块来实现。
其中,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码;S5的过程可以是:基于第二校验码对第二数据进行第一校验,以及基于翻转后的第二校验码对翻转后的第二数据进行第二校验;当第一校验结果表征第二数据正常的情况下,输出第二数据,或,当第二校验结果表征翻转后的第二数据正常的情况下,输出翻转后的第二数据。
本申请实施例所提供的数据读写方法,其实现原理及产生的技术效果和前述存储器实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述存储器实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (13)

1.一种存储器,其特征在于,包括:
校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;
编码模块,被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
存储阵列,被配置为存储所述第二数据、所述第二校验码和所述翻转码。
2.根据权利要求1所述的存储器,其特征在于,所述第一数据以及所述第一校验码为二进制数据;所述编码模块包括:
计数器,被配置为统计所述第一数据、所述第一校验码中0和1的个数;
比较器,被配置为比较所述0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;
编码单元,被配置为根据所述翻转情况、所述第一数据、所述第一校验码,编码生成所述第二数据、第二校验码和所述翻转码。
3.根据权利要求2所述的存储器,其特征在于,所述翻转码包括:数据翻转码和校验翻转码,所述数据翻转码表征所述第二数据的翻转情况,所述校验翻转码表征所述第二校验码的翻转情况。
4.根据权利要求1-3中任一项所述的存储器,其特征在于,所述存储器还包括:
解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;
数据校验纠错模块,包括校验和纠错单元,所述校验和纠错单元被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
5.根据权利要求4所述的存储器,其特征在于,所述数据校验纠错模块还包括错误状态寄存器;
所述校验和纠错单元还被配置为:当校验结果表征所述第一数据异常的情况下,判断所述第一数据能否被纠正;
在所述第一数据能被纠正的情况下,对所述第一数据进行纠正,输出纠正后的所述第一数据;在所述第一数据不能被纠正的情况下,配置所述错误状态寄存器输出中断标记位,其中,所述中断标记位用于表征所述第一数据异常、且不可纠正。
6.根据权利要求4所述的存储器,其特征在于,所述解码模块被配置为:
在所述翻转码表征所述第二数据、所述第二校验码发生翻转的情况下,将所述第二数据、所述第二校验码进行翻转,其中,所述第一数据为翻转后的所述第二数据,所述第一校验码为翻转后的所述第二校验码。
7.根据权利要求4所述的存储器,其特征在于,所述解码模块包括:
计数器,被配置为统计所述第二数据、所述第二校验码中0和1的个数;
比较器,被配置为比较所述0和1的个数,确定所述第二数据、所述第二校验码的翻转情况;
解码单元,被配置为如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况相同,对所述翻转码、所述第二数据、所述第二校验码进行解码,得到第一数据和第一校验码。
8.根据权利要求7所述的存储器,其特征在于,所述解码模块还被配置为:
如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况不相同,输出所述第二数据、所述第二校验码,以及翻转后的所述第二数据、翻转后的所述第二校验码;
其中,所述第一数据包括所述第二数据以及翻转后的所述第二数据,所述第一校验码包括所述第二校验码以及翻转后的所述第二校验码。
9.根据权利要求8所述的存储器,其特征在于,所述校验和纠错单元还被配置为:
基于所述第二校验码对所述第二数据进行第一校验,以及基于翻转后的所述第二校验码对翻转后的所述第二数据进行第二校验;
当第一校验结果表征所述第二数据正常的情况下,输出所述第二数据,或,当第二校验结果表征翻转后的所述第二数据正常的情况下,输出翻转后的所述第二数据。
10.一种存储器,其特征在于,包括:
存储阵列,被配置为存储第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,生成第一数据和第一校验码;
数据校验纠错模块,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
11.一种电子设备,包括:如权利要求1-10任一项所述的存储器。
12.一种数据读写方法,其特征在于,包括:
获取第一数据,并生成所述第一数据的第一校验码;
对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
存储所述第二数据、所述第二校验码和所述翻转码。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
读取所述第二数据、所述第二校验码和所述翻转码;
对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;
基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
CN202410143664.7A 2024-01-31 2024-01-31 一种存储器、电子设备及数据读写方法 Pending CN117935896A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410143664.7A CN117935896A (zh) 2024-01-31 2024-01-31 一种存储器、电子设备及数据读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410143664.7A CN117935896A (zh) 2024-01-31 2024-01-31 一种存储器、电子设备及数据读写方法

Publications (1)

Publication Number Publication Date
CN117935896A true CN117935896A (zh) 2024-04-26

Family

ID=90757522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410143664.7A Pending CN117935896A (zh) 2024-01-31 2024-01-31 一种存储器、电子设备及数据读写方法

Country Status (1)

Country Link
CN (1) CN117935896A (zh)

Similar Documents

Publication Publication Date Title
US8589737B2 (en) Memory system with redundant data storage and error correction
US6799287B1 (en) Method and apparatus for verifying error correcting codes
CN111143107B (zh) 一种fpga单粒子反转校验电路和方法
US20160173128A1 (en) Memory controller and method of data bus inversion using an error detection correction code
KR20080054412A (ko) 에러 검출/보정 회로 및 방법과, 전자 메모리 소자 또는메모리 모듈
JPH05108495A (ja) データ用誤り訂正検出方法及びコンピユータ・メモリ用 誤り検出回路
US7137057B2 (en) Method and apparatus for performing error correction code (ECC) conversion
KR20170131584A (ko) 데이터 버스 트랜시버로부터의 구성 데이터를 보호하기 위한 방법, 데이터 버스 트랜시버 및 데이터 버스 시스템
US20180011757A1 (en) Error correction code management of write-once memory codes
US20070260962A1 (en) Methods and apparatus for a memory device with self-healing reference bits
US10860415B2 (en) Memory architecture including response manager for error correction circuit
CN110716824B (zh) 编码方法及使用所述编码方法的存储器存储装置
CN111428280A (zh) SoC安全芯片密钥信息完整性存储及错误自修复方法
CN117935896A (zh) 一种存储器、电子设备及数据读写方法
CN115904798A (zh) 存储器的纠错检错方法、系统以及控制器
JP2012003569A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN106716387B (zh) 存储器诊断电路
CN117413252A (zh) 具有内置错误纠正和检测的存储器的错误率
US11579953B2 (en) Method for encoded diagnostics in a functional safety system
JP4213814B2 (ja) エラー訂正回路のチェック方法およびチェック機能付きエラー訂正回路
RU2297034C2 (ru) Отказоустойчивое устройство хранения информации
JPS63310045A (ja) マイクロコンピユ−タ
CN105830162B (zh) 用于识别至少一个存储器元件中的错误数据的方法和装置
JP2024528495A (ja) 機能安全システムにおける符号化された診断のための方法
TW202424743A (zh) 用於ecc錯誤檢測之電路、系統及方法

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