CN101882467A - Ecc参数可配置的存储器控制装置 - Google Patents

Ecc参数可配置的存储器控制装置 Download PDF

Info

Publication number
CN101882467A
CN101882467A CN2010102192900A CN201010219290A CN101882467A CN 101882467 A CN101882467 A CN 101882467A CN 2010102192900 A CN2010102192900 A CN 2010102192900A CN 201010219290 A CN201010219290 A CN 201010219290A CN 101882467 A CN101882467 A CN 101882467A
Authority
CN
China
Prior art keywords
ecc
initial value
register
control device
generator polynomial
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.)
Granted
Application number
CN2010102192900A
Other languages
English (en)
Other versions
CN101882467B (zh
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.)
SINO WEALTH ELECTRONIC Ltd
Original Assignee
SINO WEALTH ELECTRONIC 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 SINO WEALTH ELECTRONIC Ltd filed Critical SINO WEALTH ELECTRONIC Ltd
Priority to CN201010219290.0A priority Critical patent/CN101882467B/zh
Publication of CN101882467A publication Critical patent/CN101882467A/zh
Application granted granted Critical
Publication of CN101882467B publication Critical patent/CN101882467B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开了ECC参数可配置的存储器控制装置,可在一定范围内对ECC模块的数据分组长度和纠错能力进行配置。其技术方案为:本发明的装置内有ECC码数据分组长度寄存器和ECC码纠错能力寄存器,分别存放ECC编码的数据分组长度和纠错能力。在实际应用中,用户根据闪存的要求,通过CPU对这两个寄存器进行设置。在存储器控制装置中还设置一个生成多项式寄存器或生成多项式表以及一个迭代初始值寄存器组或迭代初始值表,通过生成多项式寄存器以及迭代初始值寄存器组,基于ECC码数据分组长度寄存器和ECC码纠错能力寄存器中的数值进行相应的编码和解码操作,从而满足闪存对纠错编码的不同需求。

Description

ECC参数可配置的存储器控制装置
技术领域
本发明涉及一种存储器相关的装置,尤其涉及一种带有数据纠错编码的存储器控制装置。
背景技术
随着人们生活的信息化程度越来越高,数字化的数据存储也是无处不在,成为当今信息社会不可缺少的关键技术。NAND型闪存(也可以称为NAND Flash)是一种新兴的数字存储介质,应用越来越广泛。在NAND Flash的实际应用中,纠错码(Error-Correcting Code,ECC)技术起着至关重要的作用。这是由于NAND Flash在读写数据的过程中会发生比特错误。应用于NAND Flash的ECC码主要有Hamming码、RS码和BCH码。Hamming码只能纠正1bit错误和检查2bit错误,因此随着NAND Flash对ECC码纠错能力的要求不断提高,Hamming码逐渐被其他具有更强纠错能力的线性分组码(如BCH码和RS码)所取代。特定设计的BCH码可以在一定范围内进行多比特纠错,而特定设计的RS码可以在一定范围内进行多符号纠错(一个符号由若干比特表达)。在本文以下部分,ECC码指BCH码和RS码。
各种ECC码的算法不尽相同,但基本原理是一样的:将原有数据经过编码运算,生成相应的监督码,然后将原始数据与监督码一同存储;在解码时原始数据与监督码一同参与运算。如果存储中有一定的错误,并且在该ECC码的纠错能力范围之内,则可以恢复出无误的原始数据。由此可见,ECC码是通过增加冗余数据的方法来实现抗干扰,保证数据的正确性。而增加冗余数据的代价是NAND Flash要增加一块冗余的存储空间来存放冗余数据。这部分增加的存储空间被称为Spare区。
ECC码运算复杂,运算量大,为了保证实时性,NAND Flash应用系统中的ECC码运算一般以硬件方式来实现,进行ECC码编码和解码运算的硬件模块被称为ECC模块。图1所示为一个典型的NAND Flash应用系统。该系统包含一片或多片NANDFlash、一个中央处理器CPU和一个NAND Flash控制器。NAND Flash控制器包含ECC模块、闪存接口等。ECC模块负责对写入NAND Flash的数据进行ECC编码,以及对由NAND Flash读出的数据进行ECC解码(包含可能的纠错操作)。
传统的ECC模块设计一般都采用编码数据分组长度以及纠错比特/符号数为固定值的方式,比如数据长度为512Byte且需要8bit纠错,则设计的ECC模块为8bitECC/525Byte。这种设计方式的最大的限制在于,当应用发生变化时,ECC模块需要重新设计。以NAND Flash的控制芯片(比如常见的U盘、SD卡的控制芯片)设计为例,NAND Flash对ECC的需求从最早的1bit/520Byte,到后来的4bit/528Byte,一直到24bit/1040Byte,不断在改变。相应地,ECC模块也需要不断地修改设计。甚至为了兼容不同的需求,出现了同一个芯片中同时存在几种不同的ECC模块的情形,显然这对于芯片的研发成本还是芯片本身的硬件成本都是不小的开销。另外,在NAND Flash应用中,也有对不同长度数据进行纠错编码的需求,比如希望同一个ECC模块能够分别对长为512Bytes和1024Bytes的数据进行编码。显然,固定的数据分组长度也不能完全适应人们对NAND Flash应用的要求。
发明内容
本发明的目的在于解决上述问题,提供了一种ECC参数可配置的存储器控制装置,可在一定范围内对ECC模块的数据分组长度和纠错能力进行配置,从而不但可以满足NAND Flash管理软件对多种ECC编码长度的要求,而且可以满足多种NAND Flash对其控制器ECC模块不同纠错能力的要求,从而延长NAND Flash控制器的生命周期。
本发明的技术方案为:本发明揭示了一种ECC参数可配置的存储器控制装置,包括
存储器接口,用于连接存储器;
ECC码数据分组长度寄存器,用于存储ECC编码时的数据分组长度;
迭代初始值存储单元,用于存储根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时基于由预设的纠错比特/符号数得到的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是迭代初始值寄存器组。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,在系统上电或该ECC码数据分组长度寄存器中的数据分组长度被修改时,通过存储器控制装置外的计算设备根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码数据分组长度寄存器中的数据分组长度被修改时,根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是一逻辑电路,将预设的纠错比特/符号数和各个数据分组长度值所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码数据分组长度寄存器中存储的数据分组长度搜索该查询表,以获得相应的一组迭代初始值。
本发明还揭示了一种ECC参数可配置的存储器控制装置,包括:
存储器接口,用于连接存储器;
ECC码纠错能力寄存器,用于存储ECC编码时的纠错比特/符号数;
生成多项式存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数计算得到的用于ECC编码过程的生成多项式;
迭代初始值存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和预设的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时根据该生成多项式存储单元中的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该生成多项式存储单元是生成多项式寄存器。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据纠错比特/符号数计算出相应的生成多项式,并存储在该生成多项式寄存器中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该存储器控制装置还包括:
生成多项式计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据该纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并存储在该生成多项式寄存器中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该生成多项式存储单元是第一逻辑电路,将各个纠错比特/符号数的值所对应的各个生成多项式配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的生成多项式。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是迭代初始值寄存器组。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据预设的数据分组长度和该ECC码纠错能力寄存器中的纠错比特/符号数计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据预设的数据分组长度和该ECC码纠错能力寄存器中存储的纠错比特/符号数以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是第二逻辑电路,将预设的数据分组长度和各个纠错比特/符号数的值所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的一组迭代初始值。
本发明又揭示了一种ECC参数可配置的存储器控制装置,包括:
存储器接口,用于连接存储器;
ECC码数据分组长度寄存器,用于存储ECC编码时的数据分组长度;
ECC码纠错能力寄存器,用于存储ECC编码时的纠错比特/符号数;
生成多项式存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数计算得到的用于ECC编码过程的生成多项式;
迭代初始值存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时根据该生成多项式存储单元中的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该生成多项式存储单元是生成多项式寄存器。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据纠错比特/符号数计算出相应的生成多项式,并存储在该生成多项式寄存器中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该存储器控制装置还包括:
生成多项式计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据该纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并存储在该生成多项式寄存器中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该生成多项式存储单元是第一逻辑电路,将各个纠错比特/符号数的值所对应的各个生成多项式配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的生成多项式。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是迭代初始值寄存器组。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改或该ECC码数据分组长度寄存器中的数据分组长度被修改时,通过存储器控制装置外的计算设备根据该ECC码数据分组长度寄存器中的数据分组长度和该ECC码纠错能力寄存器中的纠错比特/符号数计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改或该ECC码数据分组长度寄存器中的数据分组长度被修改时,根据该ECC码数据分组长度寄存器中的数据分组长度和该ECC码纠错能力寄存器中存储的纠错比特/符号数以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
根据本发明的ECC参数可配置的存储器控制装置的一实施例,该迭代初始值存储单元是第二逻辑电路,将各个纠错比特/符号数和各个数据分组长度所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和该ECC码数据分组长度寄存器中的数据分组长度搜索该查询表,以获得相应的一组迭代初始值。
本发明对比现有技术有如下的有益效果:本发明的ECC参数可配置的存储器控制装置内部有一个ECC码数据分组长度寄存器和一个ECC码纠错能力寄存器,分别存放ECC编码的数据分组长度和纠错能力(以纠错比特/符号数来表达)。在实际应用中,用户根据NAND Flash的要求,通过CPU对这两个寄存器进行设置。在存储器控制装置中还设置一个生成多项式寄存器或生成多项式表以及一个迭代初始值寄存器组或迭代初始值表,通过生成多项式寄存器(或生成多项式表)以及迭代初始值寄存器组(或迭代初始值表),基于ECC码数据分组长度寄存器和ECC码纠错能力寄存器中的数值进行相应的编码和解码操作,从而满足NAND Flash对纠错编码的不同需求,达到可配置的目的。相对于传统的ECC模块,针对需要实现数据分组长度或纠错比特/符号数可变的情况,本发明的控制装置中只需要设计一个ECC模块,通过参数配置的方式,在预设的范围内可自由调整纠错的数据分组长度和纠错比特/符号数,从而实现了最大的灵活性。这样不仅节省了设计的时间,对于硬件成本也是大幅降低,而且可适用的场合则大幅增加,允许不同领域的硬件设计共用同一种ECC模块。
附图说明
图1示出了传统的ECC模块的原理图。
图2是本发明的ECC参数可配置的存储器控制装置的第一实施例的原理图。
图3是本发明的ECC参数可配置的存储器控制装置的第二实施例的原理图。
图4是本发明的ECC参数可配置的存储器控制装置的第三实施例的原理图。
图5是本发明的ECC参数可配置的存储器控制装置的第四实施例的原理图。
图6是本发明的ECC参数可配置的存储器控制装置的第五实施例的原理图。
图7是本发明的ECC参数可配置的存储器控制装置的第六实施例的原理图。
图8是本发明的ECC参数可配置的存储器控制装置的第七实施例的原理图。
图9是本发明的ECC参数可配置的存储器控制装置的第八实施例的原理图。
图10是本发明的ECC参数可配置的存储器控制装置的第九实施例的原理图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
ECC参数可配置的存储器控制装置的第一实施例
图2示出了本发明的ECC参数可配置的存储器控制装置的第一实施例的原理。请参见图1,本实施例的存储器控制装置10包括:ECC模块100、ECC码数据分组长度寄存器101、迭代初始值寄存器组102和存储器接口103。在本实施例中,存储器控制装置10以闪存存储设备的控制装置为例,也就是说,与存储器控制装置10连接的是NAND闪存12(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置10来说,ECC码的纠错比特/符号数(也就是ECC码纠错能力)这个参数是固定的,用户可以调整的是ECC码的数据分组长度这一参数。装置中的ECC码数据分组长度寄存器101是用来存放ECC模块编码时的数据分组长度。在实际应用中,人们可以根据NAND闪存12的要求,通过CPU 11对这个寄存器101进行设置。ECC模块100在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存12对纠错编码的不同需求,达到可配置的目的。
存储器控制装置10内的迭代初始值寄存器组102用于ECC模块100的解码过程。ECC模块100在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块100所使用的BCH码一般都是缩短码,因此需要在存储器控制装置10内设置一个迭代初始值寄存器组102,用于存放迭代计算寄存器组的初始值。在系统上电或者ECC码数据分组长度寄存器中的数值被修改时,通过CPU 11向迭代初始值寄存器组102写入迭代计算初始值。ECC模块100在每次进行钱搜索计算之前,只要从迭代初始值寄存器组102中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此钱搜索算法的迭代计算初始值也是固定的,传统技术是先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,数据分组长度不是固定的,是在装置使用的时候由用户来配置的,因此钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码数据分组长度寄存器101)存放用户自行配置的数据分组长度值,外部的CPU 11根据数据分组长度值计算对应的这组迭代计算初始值(具体的计算方法是和传统技术相同的,只不过计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好数据分组长度后计算),并将计算出的值放入迭代初始值寄存器组102中。而后续的根据迭代计算初始值以及钱搜索算法来实现解码时纠错功能,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第二实施例
图3示出了本实施例的ECC参数可配置的存储器控制装置的第二实施例的原理。请参见图3,本实施例的存储器控制装置20包括:ECC模块200、ECC码数据分组长度寄存器201、迭代初始值计算电路202、迭代初始值寄存器组203以及存储器接口204。在本实施例中,存储器控制装置20以闪存存储设备的控制装置为例,也就是说,与存储器控制装置20连接的是NAND闪存22(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置20来说,ECC码的纠错比特/符号数(也就是ECC码纠错能力)这个参数是固定的,用户可以调整的是ECC码的数据分组长度这一参数。装置中的ECC码数据分组长度寄存器201是用来存放ECC模块编码时的数据分组长度。在实际应用中,人们可以根据NAND闪存22的要求,通过CPU 21对这个寄存器201进行设置。ECC模块200在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存22对纠错编码的不同需求,达到可配置的目的。
存储器控制装置20内的迭代初始值寄存器组203用于ECC模块200的解码过程。ECC模块200在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块200所使用的BCH码一般都是缩短码,因此需要在存储器控制装置20内设置一个迭代初始值寄存器组203,用于存放迭代计算寄存器组的初始值。在系统上电或ECC码数据分组长度寄存器201中的数值被修改时,通过迭代初始值计算电路202以硬件方式计算出迭代计算初始值后放入迭代初始值寄存器组203中。ECC模块200在每次进行钱搜索计算之前,只要从迭代初始值寄存器组203中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此钱搜索算法的迭代计算初始值也是固定的,传统技术是先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,数据分组长度不是固定的,是在装置使用的时候由用户来配置的,因此钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码数据分组长度寄存器101)存放用户自行配置的数据分组长度值,由装置内的迭代初始值计算电路202以硬件方式根据数据分组长度值计算对应的这组迭代计算初始值(具体的计算方法是和传统技术相同的,一是计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好数据分组长度后计算,二是计算方式不同,传统技术是软件实现,本实施例是以装置内的硬件电路计算实现,并将计算出的值放入迭代初始值寄存器组203中。而后续的根据迭代计算初始值以及钱搜索算法来实现解码时纠错功能,也和传统技术相同,在此不再一一赘述。
从本实施例可以看出,和第一实施例的不同之处在于,迭代计算初始值的计算方式不同,第一实施例是交由CPU计算,得到的结果传回装置的迭代初始值寄存器组中;而本实施例是直接由装置内的硬件电路实现迭代计算初始值的计算。
ECC参数可配置的存储器控制装置的第三实施例
图4示出了本实施例的ECC参数可配置的存储器控制装置的第三实施例的原理。请参见图4,本实施例的存储器控制装置30包括:ECC模块300、ECC码数据分组长度寄存器301、迭代初始值查询表电路302、存储器接口303。在本实施例中,存储器控制装置30以闪存存储设备的控制装置为例,也就是说,与存储器控制装置30连接的是NAND闪存32(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置30来说,ECC码的纠错比特/符号数(也就是ECC码纠错能力)这个参数是固定的,用户可以调整的是ECC码的数据分组长度这一参数。装置中的ECC码数据分组长度寄存器301是用来存放ECC模块编码时的数据分组长度。在实际应用中,人们可以根据NAND闪存32的要求,通过CPU 31对这个寄存器301进行设置。ECC模块300在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存22对纠错编码的不同需求,达到可配置的目的。
存储器控制装置30内的迭代初始值查询表电路302用于ECC模块300的解码过程。ECC模块300在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块300所使用的BCH码一般都是缩短码,因此需要在存储器控制装置30内设置一个迭代初始值查询表电路,用于存放各种可能情况下的迭代计算初始值。例如,对于同一纠错比特/符号数而言,不同的数据分组长度所对应的迭代计算初始值各不相同,装置30先将各种情况下对应的迭代计算初始值存入迭代初始值查询表电路302中,迭代初始值查询表电路302例如是一种逻辑电路,根据查询表的方式来配置逻辑电路的实现方式。在系统上电或ECC码数据分组长度寄存器中的数值被修改时,ECC模块300根据ECC码数据分组长度寄存器301中存储的数据分组长度搜索这张查询表,以获得相应的一组迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此钱搜索算法的迭代计算初始值也是固定的,传统技术是先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,数据分组长度不是固定的,是在装置使用的时候由用户来配置的,因此钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码数据分组长度寄存器101)存放用户自行配置的数据分组长度值,将各种可能情况下对应的迭代计算初始值存放在一个逻辑电路中(迭代计算初始值的计算方法是和传统技术相同的,但是传统技术中由于纠错比特/符号数和数据分组长度都是固定的因此迭代计算初始值也是预先就计算好的,而本实施例中由于数据分组长度是不确定的,因此先计算各种可能情况下的迭代计算初始值,并根据用户配置的数据分组长度查询出其中对应的这组迭代计算初始值),并将查询到的值放入迭代初始值寄存器组203中。而后续的根据迭代计算初始值以及钱搜索算法来实现解码时纠错功能,也和传统技术相同,在此不再一一赘述。
从本实施例可以看出,和第一、第二实施例的不同之处在于,前两个实施例都是根据固定的纠错比特/符号数和用户配置的数据分组长度计算出对应的迭代计算初始值,而本实施例是先将各种可能的迭代计算初始值存放成一张查询表(可以以逻辑电路方式实现),然后根据用户配置的数据分组长度在查询表中查找对应的迭代计算初始值。
ECC参数可配置的存储器控制装置的第四实施例
图5示出了本实施例的ECC参数可配置的存储器控制装置的第四实施例的原理。请参见图5,本实施例的存储器控制装置40包括:ECC模块400、ECC码纠错能力寄存器401、生成多项式寄存器402、迭代初始值寄存器组403以及存储器接口404。在本实施例中,存储器控制装置40以闪存存储设备的控制装置为例,也就是说,与存储器控制装置40连接的是NAND闪存42(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置40来说,ECC码的数据分组长度这个参数是固定的,用户可以调整的是ECC码的纠错比特/符号数(代表纠错能力)这一参数。装置中的ECC码纠错能力寄存器401是用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存42的要求,通过CPU41对这个寄存器401进行设置。ECC模块400在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存42对纠错编码的不同需求,达到可配置的目的。
ECC模块400在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块400而言,生成多项式需要根据ECC码纠错能力寄存器401存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置40内设置一个生成多项式寄存器402用于存放生成多项式。ECC模块400在每次编码操作时,只要从生成多项式寄存器402中读取所需的生成多项式即可。在系统上电或ECC码纠错能力寄存器401内的数值被修改时,通过CPU 41直接向生成多项式寄存器402内写入正确的生成多项式。ECC模块400在编码时根据生成多项式寄存器402中的生成多项式进行ECC编码。
而装置内的迭代初始值寄存器组403用于ECC模块400的解码过程。ECC模块400在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块400所使用的BCH码一般都是缩短码,因此需要在存储器控制装置40内设置一个迭代初始值寄存器组403,用于存放计算出的迭代计算初始值。例如,在系统上电或ECC码纠错能力寄存器401中的数值被修改时,通过CPU 41直接向迭代初始值寄存器组403写入正确的迭代计算初始值。ECC模块400在每次进行钱搜索计算之前,只要从迭代初始值寄存器组403中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,纠错比特/符号数不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码纠错能力寄存器401)存放用户自行配置的纠错比特/符号数值,在ECC编码时外部的CPU 41根据纠错比特/符号数计算对应的生成多项式(具体的计算方法是和传统技术相同的,只不过计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算),并将计算出的值放入生成多项式寄存器402中。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时外部的CPU 41根据用户配置的纠错比特/符号数和预先设定好的数据分组长度得到迭代计算初始值(具体的计算方法是和传统技术相同的,只不过计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算),并将计算出来的值放入迭代初始值寄存器组403中。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第五实施例
图6示出了本实施例的ECC参数可配置的存储器控制装置的第五实施例的原理。请参见图5,本实施例的存储器控制装置50包括:ECC模块500、ECC码纠错能力寄存器501、生成多项式计算电路502、生成多项式寄存器503、迭代初始值计算电路504、迭代初始值寄存器组505以及存储器接口506。在本实施例中,存储器控制装置50以闪存存储设备的控制装置为例,也就是说,与存储器控制装置50连接的是NAND闪存52(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置50来说,ECC码的数据分组长度这个参数是固定的,用户可以调整的是ECC码的纠错比特/符号数(代表纠错能力)这一参数。装置中的ECC码纠错能力寄存器501是用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存52的要求,通过CPU51对这个寄存器501进行设置。ECC模块500在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存52对纠错编码的不同需求,达到可配置的目的。
ECC模块500在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块500而言,生成多项式需要根据ECC码纠错能力寄存器501存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块500进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置50内设置一个生成多项式寄存器503用于存放生成多项式。ECC模块500在每次编码操作时,只要从生成多项式寄存器503中读取所需的生成多项式即可。在系统上电或ECC码纠错能力寄存器501内的数值被修改时,由生成多项式计算电路502根据纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并写入到生成多项式寄存器503中。ECC模块500在编码时根据生成多项式寄存器503中的生成多项式进行ECC编码。
而装置内的迭代初始值寄存器组505用于ECC模块500的解码过程。ECC模块500在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块500所使用的BCH码一般都是缩短码,因此需要在存储器控制装置50内设置一个迭代初始值寄存器组505,用于存放计算出的迭代计算初始值。例如,在系统上电或ECC码纠错能力寄存器501中的数值被修改时,由迭代初始值计算电路504根据预设的数据分组长度和ECC码纠错能力寄存器501中存储的纠错比特/符号数以硬件电路的方式计算得到一组迭代初始值并写入到迭代初始值寄存器组505中。ECC模块500在每次进行钱搜索计算之前,只要从迭代初始值寄存器组505中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,纠错比特/符号数不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码纠错能力寄存器501)存放用户自行配置的纠错比特/符号数值,通过存储器控制装置内的生成多项式计算电路502根据纠错比特/符号数计算对应的生成多项式(具体的计算方法是和传统技术相同的,只不过计算的时间点和实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算,传统技术是软件计算为主,本实施例是通过设置在装置内的硬件电路来计算),并将计算出的值放入生成多项式寄存器503中。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时存储器控制装置内的迭代初始值计算电路504根据用户配置的纠错比特/符号数和预先设定好的数据分组长度得到迭代计算初始值(具体的计算方法是和传统技术相同的,只不过计算的时间点和实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算,传统技术是软件实现为主,本实施例是通过设置在装置内的硬件电路来实现),并将计算出来的值放入迭代初始值寄存器组505中。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第六实施例
图7示出了本实施例的ECC参数可配置的存储器控制装置的第六实施例的原理。请参见图7,本实施例的存储器控制装置60包括:ECC模块600、ECC码纠错能力寄存器601、生成多项式查询表电路602、迭代初始值查询表电路603以及存储器接口604。在本实施例中,存储器控制装置60以闪存存储设备的控制装置为例,也就是说,与存储器控制装置60连接的是NAND闪存62(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置60来说,ECC码的数据分组长度这个参数是固定的,用户可以调整的是ECC码的纠错比特/符号数(代表纠错能力)这一参数。装置中的ECC码纠错能力寄存器601是用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存62的要求,通过CPU61对这个寄存器601进行设置。ECC模块600在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存62对纠错编码的不同需求,达到可配置的目的。
ECC模块600在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块600而言,生成多项式需要根据ECC码纠错能力寄存器601存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置60内设置一个生成多项式查询表电路602。这个生成多项式查询表电路602存有各种情况下(各个纠错比特/符号数)对应的各个生成多项式,其功能实质是查询表,硬件实现是逻辑电路。ECC模块600在每次编码操作时,根据寄存器601中的纠错比特/符号数在生成多项式查询表电路602中找到对应的生成多项式。ECC模块600在编码时根据生成多项式查询表电路402中的查询到的生成多项式进行ECC编码。
而装置内的迭代初始值查询表电路603用于ECC模块600的解码过程。ECC模块600在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块600所使用的BCH码一般都是缩短码,因此需要在存储器控制装置60内设置一个迭代初始值查询表电路603,用于存放各种可能情况(预设的数据分组长度和不同的纠错比特/符号数的组合)下的迭代计算初始值。迭代初始值查询表电路603和生成多项式查询表电路602一样,功能实质是一张查询表,硬件实质是一个逻辑电路。ECC模块400在每次进行钱搜索计算之前,只要根据寄存器601中的纠错比特/符号数从迭代初始值查询表电路603中读取相应的一组迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,纠错比特/符号数不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码纠错能力寄存器401)存放用户自行配置的纠错比特/符号数值,用第一逻辑电路存储各种情况下的生成多项式,用第二逻辑电路存储各种情况下的迭代初始值。在ECC编码时根据纠错比特/符号数从逻辑电路中查找出对应的生成多项式(具体的计算方法是和传统技术相同的,只不过实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后根据这一数值从第一逻辑电路中查询出对应的生成多项式)。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时装置根据用户配置的纠错比特/符号数和预先设定好的数据分组长度在第二逻辑电路中查找对应的迭代初始值。(具体的计算方法和传统技术相同,只不过实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数在第二逻辑电路中查找到对应的一组迭代初始值)。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第七实施例
图8示出了本实施例的ECC参数可配置的存储器控制装置的第七实施例的原理。请参见图8,本实施例的存储器控制装置70包括:ECC模块700、ECC码数据分组长度寄存器701、ECC码纠错能力寄存器702、生成多项式寄存器703、迭代初始值寄存器组704以及存储器接口705。在本实施例中,存储器控制装置70以闪存存储设备的控制装置为例,也就是说,与存储器控制装置70连接的是NAND闪存72(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置70来说,用户可以调整ECC码的数据分组长度和ECC码的纠错比特/符号数(代表纠错能力)这两个参数。装置中的ECC码数据分组长度寄存器701用来存放ECC模块编码时的数据分组长度,ECC码纠错能力寄存器702用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存72的要求,通过CPU 71对这两个寄存器701和702进行设置。ECC模块700在工作时,将根据这两个寄存器701和702中的数据进行相应的编码和解码操作,从而满足NAND闪存72对纠错编码的不同需求,达到可配置的目的。
ECC模块700在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块700而言,生成多项式需要根据ECC码纠错能力寄存器702存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置70内设置一个生成多项式寄存器703用于存放生成多项式。ECC模块700在每次编码操作时,只要从生成多项式寄存器703中读取所需的生成多项式即可。在系统上电或ECC码纠错能力寄存器702内的数值被修改时,通过CPU 71直接向生成多项式寄存器703内写入正确的生成多项式。ECC模块700在编码时根据生成多项式寄存器703中的生成多项式进行ECC编码。
而装置内的迭代初始值寄存器组704用于ECC模块700的解码过程。ECC模块700在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块700所使用的BCH码一般都是缩短码,因此需要在存储器控制装置70内设置一个迭代初始值寄存器组704,用于存放计算出的迭代计算初始值。例如,在系统上电或ECC码纠错能力寄存器702或ECC码数据分组长度寄存器701中的数值被修改时,通过CPU 71直接向迭代初始值寄存器组704写入正确的迭代计算初始值。ECC模块700在每次进行钱搜索计算之前,只要从迭代初始值寄存器组704中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度和纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,数据分组长度和纠错比特/符号数都不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码数据分组长度寄存器701)存放用户自行配置的数据分组长度和一个寄存器(ECC码纠错能力寄存器702)存放用户自行配置的纠错比特/符号数值,在ECC编码时外部的CPU 71根据纠错比特/符号数计算对应的生成多项式(具体的计算方法是和传统技术相同的,只不过计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算),并将计算出的值放入生成多项式寄存器703中。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时外部的CPU 71根据用户配置的纠错比特/符号数和数据分组长度得到迭代计算初始值(具体的计算方法是和传统技术相同的,只不过计算的时间点不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算),并将计算出来的值放入迭代初始值寄存器组704中。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第八实施例
图9示出了本实施例的ECC参数可配置的存储器控制装置的第八实施例的原理。请参见图9,本实施例的存储器控制装置80包括:ECC模块800、ECC码数据分组长度寄存器801、ECC码纠错能力寄存器802、生成多项式计算电路803、生成多项式寄存器804、迭代初始值计算电路805、迭代初始值寄存器组806以及存储器接口807。在本实施例中,存储器控制装置80以闪存存储设备的控制装置为例,也就是说,与存储器控制装置80连接的是NAND闪存82(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置80来说,用户可以调整的是ECC码的数据分组长度和ECC码的纠错比特/符号数(代表纠错能力)这两个参数。装置中的ECC码数据分组长度寄存器801用来存放ECC模块编码时的数据分组长度,ECC码纠错能力寄存器802用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存82的要求,通过CPU 81对这两个寄存器801和802进行设置。ECC模块800在工作时,将根据这两个寄存器中的数据进行相应的编码和解码操作,从而满足NAND闪存82对纠错编码的不同需求,达到可配置的目的。
ECC模块800在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块800而言,生成多项式需要根据ECC码纠错能力寄存器802存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块800进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置80内设置一个生成多项式寄存器804用于存放生成多项式。ECC模块800在每次编码操作时,只要从生成多项式寄存器804中读取所需的生成多项式即可。在系统上电或ECC码纠错能力寄存器801内的数值被修改时,由生成多项式计算电路803根据纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并写入到生成多项式寄存器804中。ECC模块800在编码时根据生成多项式寄存器804中的生成多项式进行ECC编码。
而装置内的迭代初始值寄存器组806用于ECC模块800的解码过程。ECC模块800在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块800所使用的BCH码一般都是缩短码,因此需要在存储器控制装置80内设置一个迭代初始值寄存器组806,用于存放计算出的迭代计算初始值。例如,在系统上电或ECC码纠错能力寄存器802中的数值被修改或ECC码数据分组长度寄存器801中的数值被修改时,由迭代初始值计算电路805根据ECC码数据分组长度寄存器801中存储的数据分组长度和ECC码纠错能力寄存器802中存储的纠错比特/符号数以硬件电路的方式计算得到一组迭代初始值并写入到迭代初始值寄存器组806中。ECC模块800在每次进行钱搜索计算之前,只要从迭代初始值寄存器组806中读取相应的迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度和纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,纠错比特/符号数和数据分组长度都不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例是用一个寄存器(ECC码数据分组长度寄存器801)存放用户自行配置的数据分组长度,用一个寄存器(ECC码纠错能力寄存器802)存放用户自行配置的纠错比特/符号数值,通过存储器控制装置内的生成多项式计算电路803根据纠错比特/符号数计算对应的生成多项式(具体的计算方法是和传统技术相同的,只不过计算的时间点和实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后计算,传统技术是软件计算为主,本实施例是通过设置在装置内的硬件电路来计算),并将计算出的值放入生成多项式寄存器804中。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时存储器控制装置内的迭代初始值计算电路805根据用户配置的纠错比特/符号数和数据分组长度得到迭代计算初始值(具体的计算方法是和传统技术相同的,只不过计算的时间点和实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数和数据分组长度后计算,传统技术是软件实现为主,本实施例是通过设置在装置内的硬件电路来实现),并将计算出来的值放入迭代初始值寄存器组806中。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
ECC参数可配置的存储器控制装置的第九实施例
图10示出了本实施例的ECC参数可配置的存储器控制装置的第九实施例的原理。请参见图10,本实施例的存储器控制装置90包括:ECC模块900、ECC码数据分组长度寄存器901、ECC码纠错能力寄存器902、生成多项式查询表电路903、迭代初始值查询表电路904以及存储器接口905。在本实施例中,存储器控制装置90以闪存存储设备的控制装置为例,也就是说,与存储器控制装置90连接的是NAND闪存92(NAND型Flash)。而且,在本实施例中,ECC码以BCH码为例进行说明。
对于本实施例的存储器控制装置90来说,用户可以调整的是ECC码的数据分组长度和ECC码的纠错比特/符号数(代表纠错能力)这两个参数。装置中的ECC码数据分组长度寄存器901用来存放ECC模块编码时的数据分组长度,ECC码纠错能力寄存器902用来存放ECC模块编码时的纠错比特/符号数。在实际应用中,人们可以根据NAND闪存92的要求,通过CPU 91对这两个寄存器901和902进行设置。ECC模块900在工作时,将根据这两个寄存器901和902中的数据进行相应的编码和解码操作,从而满足NAND闪存92对纠错编码的不同需求,达到可配置的目的。
ECC模块900在进行编码操作时,需要使用生成多项式,而生成多项式与ECC码的纠错能力有关。因此,对于可配置的ECC模块900而言,生成多项式需要根据ECC码纠错能力寄存器902存储的纠错比特/符号数计算出来。由于计算生成多项式的运算量很大,而ECC模块进行编码操作时有实时性要求,在每次编码操作之前分别进行生成多项式的计算是不可行的。为此需要在存储器控制装置90内设置一个生成多项式查询表电路903。这个生成多项式查询表电路903存有各种情况下(各个纠错比特/符号数)对应的各个生成多项式,其功能实质是查询表,硬件实现是逻辑电路。ECC模块900在每次编码操作时,根据寄存器902中的纠错比特/符号数在生成多项式查询表电路903中找到对应的生成多项式。ECC模块900在编码时根据生成多项式查询表电路903中的查询到的生成多项式进行ECC编码。
而装置内的迭代初始值查询表电路904用于ECC模块900的解码过程。ECC模块900在解码时如果发现码元有错,将使用钱搜索(Chien Search)算法进行查错。钱搜索算法依赖于在不同位置下对错误位置多项式的迭代计算,其中要用到一组迭代计算寄存器,来存放每次迭代计算的结果。在BCH码为缩短码的情况下,如果在钱搜索计算开始时根据实际码长赋予迭代计算寄存器组初始值,则可以实现钱搜索计算时间最小化。由于ECC模块900所使用的BCH码一般都是缩短码,因此需要在存储器控制装置90内设置一个迭代初始值查询表电路904,用于存放各种可能情况(不同的数据分组长度和不同的纠错比特/符号数的组合)下的迭代计算初始值。迭代初始值查询表电路904和生成多项式查询表电路903一样,功能实质是一张查询表,硬件实质是一个逻辑电路。ECC模块900在每次进行钱搜索计算之前,只要根据寄存器902中的纠错比特/符号数和寄存器901中的数据分组长度从迭代初始值查询表电路904中读取相应的一组迭代计算初始值,并存放于迭代计算寄存器中,即可快速启动钱搜索计算。
和传统技术相比,本实施例在于ECC编码时的数据分组长度和纠错比特/符号数(代表纠错能力)不是固定的。在传统技术中,由于ECC的数据分组长度和纠错比特/符号数都是固定的,因此编码时的生成多项式和钱搜索算法的迭代计算初始值也是固定的,传统技术是在编码时先根据纠错比特/符号数计算出生成多项式,根据这个生成多项式进行ECC编码;在解码时先根据数据分组长度和纠错比特/符号数计算出钱搜索算法的迭代计算初始值,在ECC解码时用这个已经计算出的迭代计算初始值进行ECC解码,实现解码过程中的校验和纠错。然而,在本实施例中,数据分组长度和纠错比特/符号数都不是固定的,是在装置使用的时候由用户来配置的,因此编码时的生成多项式和解码时钱搜索算法的迭代计算初始值也就不是固定的。本实施例用一个寄存器(ECC码数据分组长度寄存器901)存放用户自行配置的数据分组长度,用一个寄存器(ECC码纠错能力寄存器902)存放用户自行配置的纠错比特/符号数值,用第一逻辑电路(生成多项式查询表电路903)存储各种情况下的生成多项式,用第二逻辑电路(迭代初始值查询表电路904)存储各种情况下的迭代初始值。在ECC编码时根据纠错比特/符号数从第一逻辑电路中查找出对应的生成多项式(具体的计算方法是和传统技术相同的,只不过实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数后根据这一数值从第一逻辑电路中查询出对应的生成多项式)。而后续的根据生成多项式进行ECC编码,也和传统技术相同,在此不再一一赘述。在ECC解码时装置根据用户配置的纠错比特/符号数和数据分组长度在第二逻辑电路中查找对应的迭代初始值。(具体的计算方法和传统技术相同,只不过实现方式不同,传统技术是预先计算,本实施例是在用户配置好纠错比特/符号数在第二逻辑电路中查找到对应的一组迭代初始值)。而后续的根据迭代计算初始值通过钱搜索算法的ECC解码的校验和纠错,也和传统技术相同,在此不再一一赘述。
需要理解的是,本发明的实施例虽然以BCH码为例,但是其他的ECC码,例如RS码,和BCH码一样,适用于本发明。本发明的保护范围并不局限于上述的九个实施例,还包括其他的一些组合:例如生成多项式采用CPU计算并直接将计算结果写入生成多项式寄存器的方式,而迭代初始值采用装置内部的硬件计算电路计算并写入迭代初始值寄存器组。或者,生成多项式采用装置内部的硬件计算电路计算并写入生成多项式寄存器,而迭代初始值采用根据数据分组长度和纠错比特/符号数在迭代初始值查询表电路中查找对应的一组迭代初始值。还有其他可以组合的方式,和上述例子的组合方式类似,在此不再一一赘述。
至于生成多项式的具体计算过程,迭代初始值组的具体计算过程,这些都是本领域的公知常识。为了理解上的方便,现对这些过程进行简单的说明如下。
生成多项式的计算过程的简介
下面以BCH码为例,对可配置ECC模块的生成多项式的计算过程进行简单的说明。设BCH码的数据分组长度d是可配置的:d=4096~16640Bit(相当于512~2080Byte)。纠错能力t(也称为纠错比特/符号数t)也是可配置的:t=1~40Bit。设BCH码为定义于有限域GF(2m)上的二进制码,其标准码长为2m-1(Bit),其中m为正整数。显然,根据BCH码的可配置要求,只要取m=15即可。因此,所设计的BCH码是标准码长为32767Bit的BCH码的缩短码,其实际码长为L=d+m·t。可见,实际码长随数据分组长度d和纠错能力t改变而变化。
设α为GF(2m)上的本原元,可得以α,α3,...,α79为根的最小多项式为
g1(X)=X15+X+1,
g3(X)=X15+X10+X5+X+1,
.
.
.
g79(X)=X15+X12+X11+X9+X6+X5+X3+X2+1
对于任意设置的纠错能力t(t≤40),BCH码的生成多项式按下式构造:
G(X)=g1(X)·g3(X).....g2t-1(X)
如前文所述,G(X)的计算可由CPU或硬件计算电路完成,并将其系数存入生成多项式寄存器。或者将所有可能的G(X)的系数制成一张表,以ROM或其它电路形式存放于NAND闪存的控制器中,供ECC模块在编码时根据t选择使用。如果G(X)的计算由CPU或硬件计算电路完成,则在系统上电或者t发生变化时,需要重新计算G(X)。
在根据配置信息t得到生成多项式后,ECC模块即可进行编码操作。设待编码数据为如下的比特序列:b0,b1,b2,…,bd-1,则相应的数据多项式为
B(X)=b0Xmt+d-1+b1Xmt+d-2+…+bd-2Xmt+1+bd-1Xmt
ECC模块通过电路计算的方式完成GF(2)域上的多项式除法B(X)/G(X),所得余式系数即为监督码。NAND闪存控制器将数据和监督码写入NAND Flash,完成一次编码操作。
迭代初始值组的计算过程的简介
下面以BCH码为例说明迭代初始值组的计算过程。
在对BCH码进行解码操作时,首先由NAND闪存控制器从NAND闪存中读取数据和监督码。ECC模块依次处理数据和监督码,得到伴随式。根据伴随式是否为全零,判断数据和监督码是否有错误发生。如果伴随式为全零,则判定无错误发生。如果伴随式不是全为零,则判定有错误发生,ECC模块进一步进行查错计算。在查错计算阶段,首先根据伴随式计算出错误位置方程各项的系数(含常数项)σ0,σ1,σ2,…,σN。错误位置方程可表达为
σNXN+…+σ1X+σ0=0                 (1)
在上述方程中,非零项的最高幂次数为N。上述方程的根决定了BCH码的出错位置。对于码长为L=d+m·t的BCH码缩短码而言,如果位置数
Figure BSA00000174569200271
是上述方程的根,则表明BCH码的第i比特出错。
求解错误位置方程的有效方法是钱搜索算法,它采用迭代计算的方式在所有错误数范围内搜索方程可能的根,进而找到BCH码的出错位置。设rn是一组有限域上的变量,n为正整数,1≤n≤N。在迭代计算开始之前,首先对rn进行赋值操作:
Figure BSA00000174569200272
。然后更新rn的值:rn=σnrn。完成迭代计算的初始化操作。迭代计算开始后,计算
R=rNαN+…+r1α+σ0        (2)
如果R=0,则说明BCH码的第1比特出错。否则,说明第1比特没有出错。对所有1≤n≤N,用rnαn的值来更新rn(即rn=rnαn),完成一次迭代计算。同样,在第2次迭代计算中首先按式(2)计算R。如果R=0,则说明BCH码的第2比特出错。否则,说明第2比特没有出错。依此类推,完成L次迭代计算,从而找出BCH码的所有错误位置。设错误个数为M。如果M=N,说明BCH码的错误个数没有超出BCH码的纠错能力,通过钱搜索算法找到的错误位置是有效的。否则,说明BCH码的错误个数超出BCH码的纠错能力,通过钱搜索算法找到的错误位置是无效的。
在上述钱搜索算法中,rn的初始值与码长L有关,也就是说与数据长度d和BCH码纠错能力t有关。因此,在本发明提出的带有可配置ECC模块的NAND Flash控制器中,设置了一个迭代初始值寄存器组或一个由硬件方式实现的表,用来存放rn的初始值
Figure BSA00000174569200274
。如果采用迭代初始值寄存器组,则该寄存器组应足以存放r1~r40的初始值(因为在本例中t的最大值是40)。如果采用由硬件方式实现的表,则该表应包含所有可能码长下r1~r40的初始值。ECC模块在每次进行钱搜索计算之前,只要从迭代初始值寄存器组或迭代初始值表中读取相应的迭代计算初始值,并存放于迭代计算寄存器(即存放rn的寄存器)中,即可快速启动钱搜索计算。
如前文所述,迭代初始值的计算可由CPU或硬件电路完成,并将其存入迭代初始值寄存器。或者将所有可能的迭代初始值制成一张表,以ROM或其它电路形式存放于NAND闪存控制器中,供ECC模块在进行钱搜索计算时根据d和t选择使用。如果迭代初始值的计算由CPU或ECC模块完成,则在系统上电时或者d或t发生变化时,需要重新计算迭代初始值。
综上所述,本发明的可配置ECC模块的技术方案,其优点是ECC模块只需要设计一个,通过参数配置的方式,在预设的范围内可自由调整纠错的数据长度和纠错比特/符号数,从而实现最大的灵活性。这样不仅节省了设计的时间,对于硬件成本也是大幅降低,而且可适用的场合会大幅增加,可以允许不同领域的硬件设计共用同一种ECC模块。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (23)

1.一种ECC参数可配置的存储器控制装置,包括
存储器接口,用于连接存储器;
ECC码数据分组长度寄存器,用于存储ECC编码时的数据分组长度;
迭代初始值存储单元,用于存储根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时基于由预设的纠错比特/符号数得到的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
2.根据权利要求1所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是迭代初始值寄存器组。
3.根据权利要求2所述的ECC参数可配置的存储器控制装置,其特征在于,在系统上电或该ECC码数据分组长度寄存器中的数据分组长度被修改时,通过存储器控制装置外的计算设备根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
4.根据权利要求2所述的ECC参数可配置的存储器控制装置,其特征在于,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码数据分组长度寄存器中的数据分组长度被修改时,根据预设的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
5.根据权利要求1所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是一逻辑电路,将预设的纠错比特/符号数和各个数据分组长度值所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码数据分组长度寄存器中存储的数据分组长度搜索该查询表,以获得相应的一组迭代初始值。
6.一种ECC参数可配置的存储器控制装置,包括:
存储器接口,用于连接存储器;
ECC码纠错能力寄存器,用于存储ECC编码时的纠错比特/符号数;
生成多项式存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数计算得到的用于ECC编码过程的生成多项式;
迭代初始值存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和预设的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时根据该生成多项式存储单元中的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
7.根据权利要求6所述的ECC参数可配置的存储器控制装置,其特征在于,该生成多项式存储单元是生成多项式寄存器。
8.根据权利要求7所述的ECC参数可配置的存储器控制装置,其特征在于,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据纠错比特/符号数计算出相应的生成多项式,并存储在该生成多项式寄存器中。
9.根据权利要求7所述的ECC参数可配置的存储器控制装置,其特征在于,该存储器控制装置还包括:
生成多项式计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据该纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并存储在该生成多项式寄存器中。
10.根据权利要求6所述的ECC参数可配置的存储器控制装置,其特征在于,该生成多项式存储单元是第一逻辑电路,将各个纠错比特/符号数的值所对应的各个生成多项式配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的生成多项式。
11.根据权利要求6所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是迭代初始值寄存器组。
12.根据权利要求11所述的ECC参数可配置的存储器控制装置,其特征在于,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据预设的数据分组长度和该ECC码纠错能力寄存器中的纠错比特/符号数计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
13.根据权利要求11所述的ECC参数可配置的存储器控制装置,其特征在于,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据预设的数据分组长度和该ECC码纠错能力寄存器中存储的纠错比特/符号数以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
14.根据权利要求6所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是第二逻辑电路,将预设的数据分组长度和各个纠错比特/符号数的值所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的一细迭代初始值。
15.一种ECC参数可配置的存储器控制装置,包括:
存储器接口,用于连接存储器;
ECC码数据分组长度寄存器,用于存储ECC编码时的数据分组长度;
ECC码纠错能力寄存器,用于存储ECC编码时的纠错比特/符号数;
生成多项式存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数计算得到的用于ECC编码过程的生成多项式;
迭代初始值存储单元,用于存储根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和该ECC码数据分组长度寄存器中存储的数据分组长度计算得到的用于ECC解码过程的钱搜索算法的一组迭代初始值;
ECC模块,在ECC编码时根据该生成多项式存储单元中的生成多项式对数据进行ECC编码,在ECC解码时基于该迭代初始值存储单元中的该组迭代初始值,利用钱搜索算法进行ECC解码。
16.根据权利要求15所述的ECC参数可配置的存储器控制装置,其特征在于,该生成多项式存储单元是生成多项式寄存器。
17.根据权利要求16所述的ECC参数可配置的存储器控制装置,其特征在于,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,通过存储器控制装置外的计算设备根据纠错比特/符号数计算出相应的生成多项式,并存储在该生成多项式寄存器中。
18.根据权利要求16所述的ECC参数可配置的存储器控制装置,其特征在于,该存储器控制装置还包括:
生成多项式计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改时,根据该纠错比特/符号数以硬件电路的方式计算出相应的生成多项式,并存储在该生成多项式寄存器中。
19.根据权利要求15所述的ECC参数可配置的存储器控制装置,其特征在于,该生成多项式存储单元是第一逻辑电路,将各个纠错比特/符号数的值所对应的各个生成多项式配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数搜索该查询表,以获得相应的生成多项式。
20.根据权利要求15所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是迭代初始值寄存器组。
21.根据权利要求20所述的ECC参数可配置的存储器控制装置,其特征在于,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改或该ECC码数据分组长度寄存器中的数据分组长度被修改时,通过存储器控制装置外的计算设备根据该ECC码数据分组长度寄存器中的数据分组长度和该ECC码纠错能力寄存器中的纠错比特/符号数计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
22.根据权利要求20所述的ECC参数可配置的存储器控制装置,其特征在于,该存储器控制装置还包括:
迭代初始值计算电路,在系统上电或该ECC码纠错能力寄存器中的纠错比特/符号数被修改或该ECC码数据分组长度寄存器中的数据分组长度被修改时,根据该ECC码数据分组长度寄存器中的数据分组长度和该ECC码纠错能力寄存器中存储的纠错比特/符号数以硬件电路的方式计算得到用于ECC解码过程的钱搜索算法的一组迭代初始值,并写入迭代初始值寄存器组中。
23.根据权利要求19所述的ECC参数可配置的存储器控制装置,其特征在于,该迭代初始值存储单元是第二逻辑电路,将各个纠错比特/符号数和各个数据分组长度所对应的各组迭代初始值配置成一张硬件实现的查询表,该ECC模块根据该ECC码纠错能力寄存器中存储的纠错比特/符号数和该ECC码数据分组长度寄存器中的数据分组长度搜索该查询表,以获得相应的一组迭代初始值。
CN201010219290.0A 2010-07-02 2010-07-02 Ecc参数可配置的存储器控制装置 Expired - Fee Related CN101882467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010219290.0A CN101882467B (zh) 2010-07-02 2010-07-02 Ecc参数可配置的存储器控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010219290.0A CN101882467B (zh) 2010-07-02 2010-07-02 Ecc参数可配置的存储器控制装置

Publications (2)

Publication Number Publication Date
CN101882467A true CN101882467A (zh) 2010-11-10
CN101882467B CN101882467B (zh) 2014-05-07

Family

ID=43054453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010219290.0A Expired - Fee Related CN101882467B (zh) 2010-07-02 2010-07-02 Ecc参数可配置的存储器控制装置

Country Status (1)

Country Link
CN (1) CN101882467B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081970A (zh) * 2010-12-31 2011-06-01 成都市华为赛门铁克科技有限公司 纠错处理的方法、装置及固态硬盘设备
CN102142282A (zh) * 2011-02-21 2011-08-03 北京理工大学 一种NAND Flash存储芯片ECC校验算法的识别方法
CN102654854A (zh) * 2011-03-04 2012-09-05 上海华虹集成电路有限责任公司 一种可动态调整ECC纠错能力的Nandflash控制器
CN103559914A (zh) * 2013-10-31 2014-02-05 西安华芯半导体有限公司 Ecc存储器存储不同长度数据的方法
CN108255633A (zh) * 2016-12-28 2018-07-06 旺宏电子股份有限公司 存储控制方法、存储装置
CN110275668A (zh) * 2018-03-14 2019-09-24 群联电子股份有限公司 区块管理方法、存储器控制电路单元与存储器存储装置
CN110310693A (zh) * 2018-12-26 2019-10-08 贵阳忆芯科技有限公司 具有缓存的In-Line ECC模块
WO2020118943A1 (zh) * 2018-12-09 2020-06-18 江苏华存电子科技有限公司 一种用于数据纠错ecc译码核主控装置
CN111949433A (zh) * 2019-05-15 2020-11-17 北京兆易创新科技股份有限公司 非易失性存储器工作参数的处理方法、控制装置及存储器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101611385A (zh) * 2007-03-08 2009-12-23 英特尔公司 用于动态ecc码率调整的方法、装置和系统
CN101740049A (zh) * 2008-11-20 2010-06-16 索尼株式会社 再现装置和再现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101611385A (zh) * 2007-03-08 2009-12-23 英特尔公司 用于动态ecc码率调整的方法、装置和系统
CN101740049A (zh) * 2008-11-20 2010-06-16 索尼株式会社 再现装置和再现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张海燕,刘伯安: "《可配置参数的BCH编解码器的设计》", 《微电子学与计算机》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081970A (zh) * 2010-12-31 2011-06-01 成都市华为赛门铁克科技有限公司 纠错处理的方法、装置及固态硬盘设备
CN102081970B (zh) * 2010-12-31 2012-12-19 成都市华为赛门铁克科技有限公司 纠错处理的方法、装置及固态硬盘设备
CN102142282A (zh) * 2011-02-21 2011-08-03 北京理工大学 一种NAND Flash存储芯片ECC校验算法的识别方法
CN102142282B (zh) * 2011-02-21 2012-10-24 北京理工大学 一种NANDFlash存储芯片ECC校验算法的识别方法
CN102654854A (zh) * 2011-03-04 2012-09-05 上海华虹集成电路有限责任公司 一种可动态调整ECC纠错能力的Nandflash控制器
CN103559914B (zh) * 2013-10-31 2016-03-23 西安紫光国芯半导体有限公司 Ecc存储器存储不同长度数据的方法
CN103559914A (zh) * 2013-10-31 2014-02-05 西安华芯半导体有限公司 Ecc存储器存储不同长度数据的方法
CN108255633A (zh) * 2016-12-28 2018-07-06 旺宏电子股份有限公司 存储控制方法、存储装置
CN110275668A (zh) * 2018-03-14 2019-09-24 群联电子股份有限公司 区块管理方法、存储器控制电路单元与存储器存储装置
CN110275668B (zh) * 2018-03-14 2022-09-13 群联电子股份有限公司 区块管理方法、存储器控制电路单元与存储器存储装置
WO2020118943A1 (zh) * 2018-12-09 2020-06-18 江苏华存电子科技有限公司 一种用于数据纠错ecc译码核主控装置
CN110310693A (zh) * 2018-12-26 2019-10-08 贵阳忆芯科技有限公司 具有缓存的In-Line ECC模块
CN110310693B (zh) * 2018-12-26 2021-01-08 上海忆芯实业有限公司 具有缓存的In-Line ECC模块
CN111949433A (zh) * 2019-05-15 2020-11-17 北京兆易创新科技股份有限公司 非易失性存储器工作参数的处理方法、控制装置及存储器

Also Published As

Publication number Publication date
CN101882467B (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
CN101882467B (zh) Ecc参数可配置的存储器控制装置
CN103392172B (zh) 纠正存储阵列中的擦除
US7900118B2 (en) Flash memory system and method for controlling the same
CN102017425B (zh) 用于执行级联纠错的方法和系统
CN104115126A (zh) 使用代数码的多阶段ecc编码
CN102394114B (zh) 具有自适应纠错能力的bch码纠错方法
US8327218B2 (en) Storage device with improved read/write speed and corresponding data process method
CN102567134A (zh) 存储器模块的错误检查与校正系统以及方法
CN101572125A (zh) 错误更正电路及其方法
US20100241932A1 (en) Error detector/corrector, memory controller, and semiconductor memory device
US10404283B2 (en) Method and associated decoding circuit for decoding an error correction code
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US10741212B2 (en) Error correction code (ECC) encoders, ECC encoding methods capable of encoding for one clock cycle, and memory controllers including the ECC encoders
CN101488369B (zh) Bch码控制器接口电路
CN101800560B (zh) Flash控制器中BCH编译码的纠错能力扩展方法
CN102279803A (zh) 一种提高多层单元NAND-Flash存储可靠性的备用区分配方法
CN107710163B (zh) 一次写入型存储器码的纠错码管理的电路、系统和方法
CN101499325B (zh) 一种具有可变纠错能力的非易失性存储系统及方法
WO2018022269A1 (en) Apparatuses and methods for interleaved bch codes
CN101848001B (zh) Flash控制器中BCH编译码的数据长度扩展方法
CN102063342A (zh) 一种闪存存储设备数据的管理方法及系统
CN107688506B (zh) 一种流水结构的bch译码系统
CN101931415B (zh) 编码装置及方法、译码装置及方法和纠错系统
CN102811066B (zh) 伴随式计算装置及解码器
CN101996685B (zh) 存储器管理数据的差错控制方法及差错控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140507

Termination date: 20210702