CN109935263B - 非易失性存储器的编译码方法及存储系统 - Google Patents
非易失性存储器的编译码方法及存储系统 Download PDFInfo
- Publication number
- CN109935263B CN109935263B CN201910235533.0A CN201910235533A CN109935263B CN 109935263 B CN109935263 B CN 109935263B CN 201910235533 A CN201910235533 A CN 201910235533A CN 109935263 B CN109935263 B CN 109935263B
- Authority
- CN
- China
- Prior art keywords
- ldpc
- crc
- bch
- 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.)
- Active
Links
Images
Landscapes
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供一种非易失性存储器的编译码方法及存储系统。该编译码方法包括:根据有效数据位确定BCH校验位,生成BCH码,有效数据位的长度为1028字节,BCH校验位的长度为8字节;根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC校验位的长度为8字节;根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码的循环尺寸为232比特;对已编码数据分别进行BCH译码处理、LDPC译码处理和CRC译码处理。本发明实施例的方法,充分利用原本要补0的16字节,进行BCH和CRC编码,既保证了LDPC的更正效能,又减少了错误地板发生的机会,降低了数据存储的误码率。
Description
技术领域
本发明实施例涉及存储器技术领域,尤其涉及一种非易失性存储器的编译码方法及存储系统。
背景技术
随着半导体技术的迅速发展,以半导体电路作为存储媒体的半导体存储器也得到了快速发展。其中,Nand Flash存储器作为一种非易失性存储器,因其具有擦写速度快、功耗低、容量大、成本低等诸多优点,已经成为数据存储领域中最常用的存储设备。但是,随着存储密度的增大和多位存储技术的出现,Nand Flash存储器在进行数据存储时的误码率问题越来越严重。如何降低误码率成为一个亟待解决的问题。
低密度奇偶校验(Low Density Parity Check,LDPC)码因其强大的纠错能力及较低的译码复杂度,受到越来越多的关注。如现有技术中将CRC校验码与LDPC码进行结合,用以改善错误地板区。然而,由于CRC校验码仅能够检测错误,而不具有纠错能力,因此该方法无法有效降低误码率。
综上所述,现有编译码方法无法满足Nand Flash存储器在进行数据存储时的误码率要求。
发明内容
本发明实施例提供一种非易失性存储器的编译码方法及存储系统,用以解决现有编译码方法无法满足Nand Flash存储器在进行数据存储时的误码率要求的问题。
第一方面,本发明实施例提供一种非易失性存储器的编译码方法,包括:
根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位,有效数据位的长度为1028字节,BCH校验位的长度为8字节;
根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位,CRC校验位的长度为8字节;
根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,LDPC码的循环尺寸为232比特;
对已编码数据进行BCH译码处理;
根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
在一种可能的实现方式中,根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理,包括:
将LDPC校验矩阵按行划分为多个层;
根据分层后的LDPC校验矩阵,对经过BCH译码处理的数据,进行LDPC分层迭代译码处理。
在一种可能的实现方式中,所述方法还包括:
若在LDPC分层迭代译码处理过程中,当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等,则终止LDPC译码处理。
在一种可能的实现方式中,所述方法还包括:
若CRC译码失败,且迭代次数达到预设迭代次数,则从存储器重新获取已编码数据。
在一种可能的实现方式中,所述方法还包括:
若CRC译码失败,且迭代次数未达到预设迭代次数,则继续进行LDPC分层迭代译码处理。
在一种可能的实现方式中,所述根据所述BCH码确定循环冗余校验CRC校验位,生成CRC码包括:
根据所述BCH码,采用二进制序列为0x000000000000001B的CRC生成多项式,确定CRC校验位,生成CRC码。
第二方面,本发明实施例提供一种非易失性存储器的编码方法,包括:
根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位,有效数据位的长度为1028字节,BCH校验位的长度为8字节;
根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位,CRC校验位的长度为8字节;
根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,LDPC码的循环尺寸为232比特。
第三方面,本发明实施例提供一种非易失性存储器的译码方法,包括:
对已编码数据进行博斯-查德胡里-霍昆格BCH译码处理;
根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
第四方面,本发明实施例提供一种非易失性存储器的编译码装置,包括:
第一编码模块,用于根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位,有效数据位的长度为1028字节,BCH校验位的长度为8字节;
第二编码模块,用于根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位,CRC校验位的长度为8字节;
第三编码模块,用于根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,LDPC码的循环尺寸为232比特;
第一译码模块,用于对已编码数据进行BCH译码处理;
第二译码模块,用于根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
第三译码模块,用于对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
第五方面,本发明实施例提供一种存储系统,包括编译码电路和存储器;
编译码电路,用于执行如第一方面任一项所述的非易失性存储器的编译码方法,对输入数据进行编码后存入存储器,和/或,
对从存储器中读取的数据进行译码后获得输出数据。
本发明实施例提供的非易失性存储器的编译码方法及存储系统,针对循环尺寸为232比特的LDPC码,充分利用原本要进行补0处理的16字节,分别进行BCH编码和CRC编码,既未增加任何存储开销,保证了存储效率,又提高了纠错能力;且利用原本要进行补0处理的16字节,分别进行BCH编码和CRC编码,不会减少LDPC校验位的个数,既保证了LDPC的更正效能,又减少了错误地板发生的机会,降低了数据存储的误码率;通过对已编码数据分别进行BCH译码处理、LDPC译码处理和CRC译码处理,实现了对已编码数据的三重译码。通过在LDPC译码之前,先进行BCH译码处理纠正一部分错误,不仅提高了纠错能力,降低了错误地板发生的机会,而且能够减少LDPC译码的迭代次数,提高了吞吐量,降低了译码时延和功耗;通过将BCH译码与LDPC译码结合,提高了纠错能力,降低了数据存储的误码率;通过CRC译码,确保了译码结果的正确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明提供的非易失性存储器的编码方法一实施例的流程图;
图2为本发明提供的已编码数据一实施例的结构示意图;
图3为本发明提供的非易失性存储器的译码方法一实施例的流程图;
图4为本发明提供的非易失性存储器的译码方法又一实施例的流程图;
图5为本发明提供的非易失性存储器的编译码方法一实施例的流程图;
图6为本发明提供的非易失性存储器的编码装置一实施例的结构示意图;
图7为本发明提供的非易失性存储器的译码装置一实施例的结构示意图;
图8为本发明提供的非易失性存储器的编译码装置一实施例的结构示意图;
图9为本发明提供的存储系统一实施例的结构示意图;
图10为本发明提供的存储系统又一实施例的结构示意图;
图11为本发明提供的存储系统另一实施例的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明的说明书和权利要求书中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明中的“第一”和“第二”只起标识作用,而不能理解为指示或暗示顺序关系、相对重要性或者隐含指明所指示的技术特征的数量。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明的说明书中通篇提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1为本发明提供的非易失性存储器的编码方法一实施例的流程图。该方法可以由编码电路执行。如图1所示,本实施例提供的方法可以包括:
S101、根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位。
博斯-查德胡里-霍昆格(Bose-Chaudhuri-Hocquenghem,BCH)码是一种能够纠正多个随机错误的有限域中的线性分组码。当发生错误的码元数小于或者等于BCH码的纠错能力时,BCH码能够更正所有发生错误的码元。
本实施例中的有效数据位可以为待存储入非易失性存储器中的输入数据中的部分或者全部,该非易失性存储器包括但不限于Nand Flash存储器。例如,可以将输入数据划分为若干个长度为k的分组,其中k表示有效数据位的位数。
可选的,长度为k的有效数据位对应的多项式m(x)可以记为:m(x)=m0+m1*x+m2*x2+……+mk-1*xk-1,其中,m0、m1、m2……mk-1属于{0,1}。若BCH码的生成多项式g(x)为:g0+g1*x+g2*x2+……+gr-1*xr-1,其中,r表示BCH校验位的位数,g0、g1、g2……gr-1属于{0,1},则可以通过如下方法确定BCH校验位:将m(x)左移r位,然后除以生成多项式g(x),得到的余式即为BCH校验位对应的多项式r(x),即r(x)=mod(xr*m(x),g(x)),其中mod表示取xr*m(x)除以g(x)的余式。本实施例中的BCH码包括有效数据位和BCH校验位,例如可以通过将所确定的BCH校验位附在有效数据位的后面获得,即BCH码对应的多项式表达式可以为:C(x)=xr*m(x)+mod(xr*m(x),g(x)),则BCH码的长度为(k+r)。
需要说明的是,本实施例对于有效数据位的位数k、BCH校验位的位数r以及BCH码的生成多项式g(x)不做限制,可以根据具体需要进行设置。
S102、根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位。
本实施例中在生成BCH码之后,则可以根据BCH码以及CRC码的生成多项式确定循环冗余校验CRC校验位。例如,可以通过将BCH码对应的二进制码与CRC码的生成多项式对应的二进制码做异或运算,以确定CRC校验位。本实施例中CRC码的生成多项式例如可以采用国际标准协议CRC-64-ISO,其生成多项式G(x)=x64+x4+x3+x+1,对应的二进制序列为0x000000000000001B,根据该生成多项式可以确定长度为64位的CRC校验位。本实施例中的CRC码包括BCH码和CRC校验位,例如可以通过将所确定的CRC校验位附在BCH码的后面获得。
循环冗余校验(Cyclic Redundancy Check,CRC)码通过散列函数,根据数据产生简短固定位数校验码,可以用来检测或校验数据传输或者保存后可能出现的错误。CRC码虽然不具有纠错能力,但是可以用来准确的检测错误。
需要说明的是,本实施例对CRC码的生成多项式的具体形式不作限制。
S103、根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位。
本实施例中在生成CRC码之后,则可以根据CRC码以及LDPC码的编码矩阵,确定LDPC校验位。例如可以通过将BCH码与LDPC码的编码矩阵相乘,确定LDPC校验位。本实施例中的LDPC码包括CRC码和LDPC校验位,例如可以通过将所确定的LDPC校验位附在CRC码的后面获得。
低密度奇偶校验(Low Density Parity Check,LDPC)码是麻省理工学院RobertGallager于1963年在博士论文中提出的具有稀疏校验矩阵的分组纠错码。其性能逼近香农限,且描述和实现简单,易于进行理论分析和研究,译码简单且可实行并行操作,适合硬件实现。
需要说明的是,本实施例对LDPC码的编码矩阵的具体形式不作限制。
本实施例中在生成了LDPC码之后,可以将生成的LDPC码存入非易失性存储器中,该非易失性存储器包括但不限于Nand Flash存储器。。
图2为本发明提供的已编码数据一实施例的结构示意图。如图2所示,采用本实施例提供的非易失性存储器的编码方法生成的码元可以依次包括:有效数据位、BCH校验位、CRC校验位和LDPC校验位。其中,BCH校验位、CRC校验位和LDPC校验位可以分别参考上述步骤S101、S102和S103中的方法进行确定。
本实施例提供的非易失性存储器的编码方法,通过根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位;根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位;根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,实现了对有效数据位的三重编码,提高了Nand Flash的纠错能力,降低了数据存储时的误码率。
在上述实施例的基础上,针对循环尺寸为232比特的情况,本实施例提供的方法中,有效数据位的长度为1028字节,BCH校验位的长度为8字节,CRC校验位的长度为8字节。
本实施例中由于待进行LDPC编码的信息量应为循环尺寸的整数倍,当循环尺寸为232比特时,信息量为1044字节(232*36/8),其中有效数据位占据1028字节。本实施例中充分利用原本要进行补0处理的16字节,进行BCH编码和CRC编码。其中,BCH校验位占据8字节,CRC校验位占据8字节。在未增加任何存储开销的基础上,即在保证存储效率的同时,通过BCH编码以及CRC编码提高了纠错能力;且利用原本要补0的16字节,进行BCH编码和CRC编码,并不会减少LDPC校验位的个数,即在不会影响LDPC的更正效能的情况下,通过BCH编码和CRC编码,减少了错误地板发生的机会。
图3为本发明提供的非易失性存储器的译码方法一实施例的流程图。该方法可以由译码电路执行。如图3所示,本实施例提供的方法可以包括:
S301、对已编码数据进行BCH译码处理。
本实施例中的已编码数据可以为从非易失性存储器中读取的,依次进行了BCH编码、CRC编码和LDPC编码的数据。该非易失性存储器包括但不限于Nand Flash存储器。
对已编码数据进行BCH译码处理例如可以包括:已编码数据对应的多项式为R(x),根据R(x)确定其伴随式S,S共有2t项,t为BCH码可以纠正的错误的个数,也称作纠错能力或可纠错位数;根据伯利坎姆-梅西(Berlekamp-Massey,BM)迭代算法,根据伴随式S确定错误位置多项式V(x);对错误位置多项式V(x)进行钱(CHIEN)搜索,确定V(x)的根,根据V(x)的根确定错误位置判别项E(x),错误位置判别项E(x)包括V(x)中所有错误的位置的项;通过对R(x)和E(x)进行异或运算,可以将R(x)中出现错误的位置的值取反,得出正确的码字,完成BCH译码处理。
本实施例中当已编码数据中发生错误的码元数小于或者等于BCH码的纠错能力时,通过BCH译码处理能够更正所有发生错误的码元。
S302、根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理。
本实施例中例如可以采用置信传播(Belief Propagation,BP)算法,根据LDPC校验矩阵进行LDPC译码处理。在LDPC译码的每次迭代中包括:校验节点的处理和变量节点的处理。在每次迭代中,所有校验节点从其相邻的变量节点处接收消息,处理后,再传回到相邻的变量节点;然后所有的变量节点进行同样的过程;最后变量节点收集所有可以利用的消息进行判决。
本实施例对于进行LDPC译码处理所采用的具体算法不做限制,例如还可以采用硬判决算法、概率译码软判断算法、比特翻转算法等。
S303、对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
本实施例中在进行LDPC译码处理之后,对经过LDPC译码处理的数据,进行CRC译码处理。CRC译码处理例如可以通过对经过LDPC译码处理的数据中的CRC码与CRC码的生成多项式所对应的二进制码做异或运算,若结果为0,则表示CRC译码成功;否则,表示CRC译码失败。若译码成功,则可以获取准确的数据;若译码失败,可以从存储器中重新读取已编码数据,重新执行上述步骤S301-S303进行译码处理。
CRC校验虽然不能纠正错误,但是可以用来准确的检测错误。本实施例中通过对经过LDPC译码处理的数据,进行CRC译码处理,确保了译码结果的准确性。
本实施例提供的非易失性存储器的译码方法,通过对已编码数据进行BCH译码处理,根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理,对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理,实现了对已编码数据的三重译码。通过在LDPC译码之前,先进行BCH译码处理纠正一部分错误,不仅提高了纠错能力,降低了错误地板发生的机会,而且能够减少LDPC译码的迭代次数,提高了吞吐量,降低了译码时延和功耗;通过将BCH译码与LDPC译码结合,提高了纠错能力,降低了数据存储的误码率;通过CRC译码,确保了译码结果的正确性。
在一些实施例中,根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理的一种实现方式可以是:将LDPC校验矩阵按行划分为多个层;根据分层后的LDPC校验矩阵,对经过BCH译码处理的数据,进行LDPC分层迭代译码处理。
本实施例中将LDPC校验矩阵按行从上往下划分为多个组,每组中包含相同数目的行,每组为一层。然后依次在每层中进行译码,每层的输出作为下一层的输入进行译码。
举例来说,对于一个包含n行的LDPC校验矩阵,若将每一行作为一层,则可以将LDPC校验矩阵划分为n层。在每层中进行译码时,例如可以采用分层最小和积算法(LayeredMin Sum Algorithm,LMSA)。在分层迭代译码处理过程中,每一层译码完成时,都会更新变量节点的值,每次迭代将会更新n次变量节点的值。
本实施例提供的非易失性存储器的译码方法,在上述实施例的基础上,进一步的通过将LDPC校验矩阵按行划分为多个层,并根据分层后的LDPC校验矩阵,对经过BCH译码处理的数据,进行LDPC分层迭代译码处理,使得在每一次迭代中会多次更新变量节点的值,能够加速译码完成,并且在同样的迭代次数下,拥有更好的译码能力,提高了译码效率
可选的,若在LDPC分层迭代译码处理过程中,当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等,则终止LDPC译码处理。
在分层迭代译码处理过程中,若译码完成,则当前迭代的所有分层的变量节点值会与前一次迭代的相同分层的变量节点值相等。本实施例中,通过判断当前迭代的所有分层的变量节点值是否与上一次迭代所有分层的变量节点值相等,若相等,则终止LDPC译码处理;若不相等,则继续下一次迭代。通过提前决断,提前终止了已经译码完成的迭代过程。
需要说明的是,为了保证译码正确,LDPC译码的预设迭代次数通常会设置的比较大,将导致即使已经译码完成,也必须达到预设迭代次数才会终止迭代。这样将会大大降低吞吐量,增加系统时延。
本实施例提供的非易失性存储器的译码方法,在上述实施例的基础上,进一步的通过判断当前迭代的所有分层的变量节点值是否与上一次迭代所有分层的变量节点值相等,在相等时,通过提前决断,及时终止迭代过程,大大提高了吞吐量,减少了平均迭代次数和运算量,降低了译码时延和功耗,避免了硬件资源的浪费。
可选的,若CRC译码失败,且迭代次数达到预设迭代次数,则从存储器重新获取已编码数据。
本实施例中,在确定当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等时,进行提前决断处理,即终止LDPC译码处理,进行CRC译码处理。若CRC译码成功,则可以获得准确的输出数据;若CRC译码失败,例如CRC码与生成多项式进行异或处理后值不为0,且LDPC译码的迭代次数已经达到了预先设置的迭代次数,则说明本次译码失败,无法获得正确的输出数据。为了获得正确的输出数据,则从存储器中重新读取已编码数据,重复上述译码过程。
可选的,若CRC译码失败,且迭代次数未达到预设迭代次数,则继续进行LDPC分层迭代译码处理。
本实施例中,在确定当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等时,进行提前决断处理,即终止LDPC译码处理,进行CRC译码处理。若CRC译码成功,则可以获得准确的输出数据;若CRC译码失败,例如CRC码与生成多项式进行异或处理后值不为0,且LDPC译码的迭代次数尚未达到了预先设置的迭代次数,则可以继续进行LDPC分层迭代译码处理,直至LDPC译码的迭代次数达到预先设置的迭代次数,或者,在当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等时,进行提前决断处理。
图4为本发明提供的非易失性存储器的译码方法又一实施例的流程图。如图4所示,本实施例提供的方法可以包括:
S401、从存储器中读取已编码数据。
本实施例中的存储器为非易失性存储器,包括但不限于Nand Flash存储器。
S402、对已编码数据进行BCH译码处理。
S403、将LDPC校验矩阵按行划分为多个层。
S404、根据分层后的LDPC校验矩阵,对经过BCH译码处理的数据,进行LDPC分层迭代译码处理。
S405、判断当前迭代的所有分层的变量节点值是否与上一次迭代所有分层的变量节点值相等。若相等,则执行S407;否则,执行S406。
S406、判断迭代次数是否达到预设迭代次数。若是,则执行S407;若否,则继续执行S404。
S407、对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
S408、判断CRC译码是否成功。若成功,则执行S410;否则,执行S409。
S409、判断迭代次数是否达到预设迭代次数。若是,则执行S401;否则,执行S404。
S410、输出译码成功的数据。
本实施例中各个步骤的具体实现方式,可以参考上述实施例,此处不再赘述。
在上述实施例的基础上,本发明还提供一种非易失性存储器的编译码方法。图5为本发明提供的非易失性存储器的编译码方法一实施例的流程图。如图5所示,本实施例提供的方法可以包括:
S501、根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位,有效数据位的长度为1028字节,BCH校验位的长度为8字节。
S502、根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位,CRC校验位的长度为8字节。
S503、根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,LDPC码的循环尺寸为232比特。
S504、对已编码数据进行BCH译码处理。
S505、根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理。
S506、对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
需要说明的是,本实施例中各步骤的具体实现方式可以参考上述实施例,此处不再赘述。
本实施例提供的非易失性存储器的编译码方法,针对循环尺寸为232比特的LDPC码,充分利用原本要进行补0处理的16字节,分别进行BCH编码和CRC编码,既未增加任何存储开销,保证了存储效率,又提高了纠错能力;且利用原本要进行补0处理的16字节,分别进行BCH编码和CRC编码,不会减少LDPC校验位的个数,既保证了LDPC的更正效能,又减少了错误地板发生的机会,降低了数据存储的误码率;通过对已编码数据分别进行BCH译码处理、LDPC译码处理和CRC译码处理,实现了对已编码数据的三重译码。通过在LDPC译码之前,先进行BCH译码处理纠正一部分错误,不仅提高了纠错能力,降低了错误地板发生的机会,而且能够减少LDPC译码的迭代次数,提高了吞吐量,降低了译码时延和功耗;通过将BCH译码与LDPC译码结合,提高了纠错能力,降低了数据存储的误码率;通过CRC译码,确保了译码结果的正确性。
图6为本发明提供的非易失性存储器的编码装置一实施例的结构示意图。如图6所示,本实施例提供的非易失性存储器的编码装置60可以包括:第一编码模块601、第二编码模块602和第三编码模块603。
第一编码模块601,用于根据有效数据位确定BCH校验位,生成BCH码。
第二编码模块602,用于根据所述BCH码确定循环冗余校验CRC校验位,生成CRC码。
第三编码模块603,用于根据所述CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,有效数据位的长度为1028字节,BCH校验位的长度为8字节,CRC校验位的长度为8字节。
图7为本发明提供的非易失性存储器的译码装置一实施例的结构示意图。如图7所示,本实施例提供的非易失性存储器的译码装置70可以包括:第一译码模块701、第二译码模块702和第三译码模块703。
第一译码模块701,用于对已编码数据进行BCH译码处理;
第二译码模块702,用于根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
第三译码模块703,用于对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,第二译码模块702还用于,将LDPC校验矩阵按行划分为多个层;根据分层后的LDPC校验矩阵,对经过BCH译码处理的数据,进行LDPC分层迭代译码处理。
可选的,若在LDPC分层迭代译码处理过程中,当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等,则终止LDPC译码处理。
可选的,若CRC译码失败,且迭代次数达到预设迭代次数,则从存储器重新获取已编码数据。
可选的,若CRC译码失败,且迭代次数未达到预设迭代次数,则继续进行LDPC分层迭代译码处理。
图8为本发明提供的非易失性存储器的编译码装置一实施例的结构示意图。如图8所示,本实施例提供的非易失性存储器的编译码装置80可以包括:第一编码模块801、第二编码模块802、第三编码模块803、第一译码模块804、第二译码模块805和第三译码模块806。
第一编码模块801,用于根据有效数据位确定BCH校验位,生成BCH码,BCH码包括有效数据位和BCH校验位,有效数据位的长度为1028字节,BCH校验位的长度为8字节;
第二编码模块802,用于根据BCH码确定循环冗余校验CRC校验位,生成CRC码,CRC码包括BCH码和CRC校验位,CRC校验位的长度为8字节;
第三编码模块803,用于根据CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,LDPC码包括CRC码和LDPC校验位,LDPC码的循环尺寸为232比特;
第一译码模块804,用于对已编码数据进行BCH译码处理;
第二译码模块805,用于根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
第三译码模块806,用于对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
本实施例的装置,可以用于执行图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9为本发明提供的存储系统一实施例的结构示意图。如图9所示,本实施例提供的存储系统90可以包括:编译码电路901和存储器902。
编译码电路901,用于执行上述任一方法实施例提供的非易失性存储器的编译码方法,对输入数据进行编码后存入存储器,和/或,对从存储器中读取的数据进行译码后获得输出数据。
图10为本发明提供的存储系统又一实施例的结构示意图。如图10所示,本实施例提供的存储系统100可以包括:编码电路1001、存储器1002和译码电路1003。其中,存储器1002包括但不限于Nand Flash存储器。
其中,编码电路1001可以用于执行如上述任一方法实施例提供的非易失性存储器的编码方法,对输入数据进行编码后存入存储器1002;译码电路1003可以用于执行如上述任一方法实施例提供的非易失性存储器的译码方法,对从存储器1002中读取的数据进行译码后获得输出数据。
图11为本发明提供的存储系统另一实施例的结构示意图。如图11所示,本实施例提供的存储系统在图10所示存储系统的基础上,编码电路包括依次连接的BCH编码器、CRC编码器和LDPC编码器,译码电路包括依次连接的BCH译码器、LDPC译码器和CRC译码器。
输入数据经过BCH编码器,生成BCH码,然后经过CRC编码器,生成CRC码,最后经过LDPC编码器,生成LDPC码,存入存储器中。从存储器中读取数据时,首先经过BCH译码器,再经过LDPC译码器,若LDPC译码器成功译码,则进入CRC译码器;若LDPC译码器没有成功译码,则继续迭代,待LDPC译码完成再进入CRC译码器,若CRC译码成功,则获取到的输出数据即为当初存入的输入数据。本实施例中的存储器包括但不限于Nand Flash存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读内存(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种非易失性存储器的编译码方法,其特征在于,包括:
根据有效数据位确定BCH校验位,生成BCH码,所述BCH码包括所述有效数据位和所述BCH校验位,所述有效数据位的长度为1028字节,所述BCH校验位的长度为8字节;
根据所述BCH码确定循环冗余校验CRC校验位,生成CRC码,所述CRC码包括所述BCH码和所述CRC校验位,所述CRC校验位的长度为8字节;
根据所述CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,所述LDPC码包括所述CRC码和所述LDPC校验位,所述LDPC码的循环尺寸为232比特;
对已编码数据进行博斯-查德胡里-霍昆格BCH译码处理,所述已编码数据包括依次进行了BCH编码、CRC编码和LDPC编码的数据;
根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
2.根据权利要求1所述的方法,其特征在于,所述根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理,包括:
将所述LDPC校验矩阵按行划分为多个层;
根据分层后的LDPC校验矩阵,对所述经过BCH译码处理的数据,进行LDPC分层迭代译码处理。
3.根据权利要求2所述的方法,其特征在于,所述根据分层后的LDPC校验矩阵,对所述经过BCH译码处理的数据,进行LDPC分层迭代译码处理包括:
若在LDPC分层迭代译码处理过程中,当前迭代的所有分层的变量节点值分别与上一次迭代所有分层的变量节点值相等,则终止LDPC译码处理。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若CRC译码失败,且迭代次数达到预设迭代次数,则从所述存储器重新获取所述已编码数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若CRC译码失败,且迭代次数未达到所述预设迭代次数,则继续进行LDPC分层迭代译码处理。
6.根据权利要求1所述的方法,其特征在于,所述根据所述BCH码确定循环冗余校验CRC校验位,生成CRC码包括:
根据所述BCH码,采用二进制序列为0x000000000000001B的CRC生成多项式,确定CRC校验位,生成CRC码。
7.一种非易失性存储器的编译码装置,其特征在于,包括:
第一编码模块,用于根据有效数据位确定BCH校验位,生成BCH码,所述BCH码包括所述有效数据位和所述BCH校验位,所述有效数据位的长度为1028字节,所述BCH校验位的长度为8字节;
第二编码模块,用于根据所述BCH码确定循环冗余校验CRC校验位,生成CRC码,所述CRC码包括所述BCH码和所述CRC校验位,所述CRC校验位的长度为8字节;
第三编码模块,用于根据所述CRC码确定低密度奇偶校验LDPC校验位,生成LDPC码,所述LDPC码包括所述CRC码和所述LDPC校验位,所述LDPC码的循环尺寸为232比特;
第一译码模块,用于对已编码数据进行BCH译码处理,所述已编码数据包括依次进行了BCH编码、CRC编码和LDPC编码的数据;
第二译码模块,用于根据低密度奇偶校验LDPC校验矩阵对经过BCH译码处理的数据,进行LDPC译码处理;
第三译码模块,用于对经过LDPC译码处理的数据,进行循环冗余校验CRC译码处理。
8.一种存储系统,其特征在于,包括编译码电路和存储器;
所述编译码电路,用于执行如权利要求1-6任一项所述的编译码方法,对输入数据进行编码后存入所述存储器,和/或,对从所述存储器中读取的数据进行译码后获得输出数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235533.0A CN109935263B (zh) | 2019-03-27 | 2019-03-27 | 非易失性存储器的编译码方法及存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235533.0A CN109935263B (zh) | 2019-03-27 | 2019-03-27 | 非易失性存储器的编译码方法及存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109935263A CN109935263A (zh) | 2019-06-25 |
CN109935263B true CN109935263B (zh) | 2021-06-04 |
Family
ID=66988423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910235533.0A Active CN109935263B (zh) | 2019-03-27 | 2019-03-27 | 非易失性存储器的编译码方法及存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109935263B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597072B (zh) * | 2020-05-07 | 2024-03-12 | 中国科学院微电子研究所 | 差错控制编码ecc系统及包括ecc系统的存储器设备 |
CN113241110A (zh) * | 2021-05-10 | 2021-08-10 | 上海航天测控通信研究所 | 多通道的nand flash差错控制方法 |
CN115173995A (zh) * | 2022-07-01 | 2022-10-11 | 华北电力大学 | 一种基于crc和bch编码的重型燃气轮机控制系统数据容错方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237174B2 (en) * | 2003-09-04 | 2007-06-26 | The Directv Group, Inc. | Method and system for providing short block length low density parity check (LDPC) codes in support of broadband satellite applications |
CN100508442C (zh) * | 2006-08-14 | 2009-07-01 | 华为技术有限公司 | 一种编译码方法及编译码装置 |
US8612834B2 (en) * | 2011-03-08 | 2013-12-17 | Intel Corporation | Apparatus, system, and method for decoding linear block codes in a memory controller |
CN104618067B (zh) * | 2015-02-16 | 2017-11-03 | 中国科学院上海高等研究院 | Ngb‑w系统中物理帧信令信道的编码与调制方法 |
US9705530B2 (en) * | 2015-05-19 | 2017-07-11 | Samsung Electronics Co., Ltd. | Transmitting apparatus and interleaving method thereof |
CN106502590A (zh) * | 2016-10-24 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种固态硬盘ssd存储系统及方法 |
-
2019
- 2019-03-27 CN CN201910235533.0A patent/CN109935263B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109935263A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10411735B1 (en) | Systems and methods for an iterative decoding scheme | |
KR101535225B1 (ko) | 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치 | |
US8448050B2 (en) | Memory system and control method for the same | |
US8645810B2 (en) | Fast detection of convergence or divergence in iterative decoding | |
KR101753498B1 (ko) | 신뢰도 데이터 업데이트 | |
US8880987B2 (en) | Checksum using sums of permutation sub-matrices | |
US9432053B1 (en) | High speed LDPC decoder | |
CN109935263B (zh) | 非易失性存储器的编译码方法及存储系统 | |
US10707902B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
KR20150073717A (ko) | 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들 | |
US9397706B1 (en) | System and method for irregular multiple dimension decoding and encoding | |
WO2011109084A1 (en) | Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size | |
US11082069B1 (en) | Decoding scheme for error correction code structure in data storage devices | |
US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
US10700708B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
CN110113058B (zh) | 编译码方法、装置、设备及计算机可读存储介质 | |
KR20160002946A (ko) | 10gbase-t 시스템에서 ldpc 인코더의 방법 및 장치 | |
KR101320684B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
KR20210001927A (ko) | 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법 | |
KR101355988B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
EP4072023A1 (en) | Decoding method, decoder, and decoding device | |
CN110971240A (zh) | 解码器设计方法与存储控制器 | |
Varnica | Ldpc decoding: Vlsi architectures and implementations | |
CN111628783A (zh) | 一种eg-ldpc译码器 | |
KR101355986B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |