Ecc参数可配置的存储器控制装置的制作方法

文档序号:6772693阅读:235来源:国知局
专利名称:Ecc参数可配置的存储器控制装置的制作方法
技术领域
本发明涉及一种存储器相关的装置,尤其涉及一种带有数据纠错编码的存储器控 制装置。
背景技术
随着人们生活的信息化程度越来越高,数字化的数据存储也是无处不在,成为当 今信息社会不可缺少的关键技术。NAND型闪存(也可以称为NAND Flash)是一种新兴的数 字存储介质,应用越来越广泛。在NAND Flash的实际应用中,纠错码(Error-Correcting Code, ECC)技术起着至关重要的作用。这是由于NAND Flash在读写数据的过程中会发生 比特错误。应用于NAND Flash的ECC码主要有Hamming码、RS码和BCH码。Hamming码只 能纠正Ibit错误和检查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且需要Sbit纠错,则设计的ECC模块为 8bitECC/525Byte。这种设计方式的最大的限制在于,当应用发生变化时,ECC模块需要 重新设计。以NAND Flash的控制芯片(比如常见的U盘、SD卡的控制芯片)设计为 例,NAND Flash对ECC的需求从最早的lbit/520Byte,到后来的4bit/528Byte, 一直到 24bit/1040Byte,不断在改变。相应地,ECC模块也需要不断地修改设计。甚至为了兼容不 同的需求,出现了同一个芯片中同时存在几种不同的ECC模块的情形,显然这对于芯片的 研发成本还是芯片本身的硬件成本都是不小的开销。另外,在NAND Flash应用中,也有对 不同长度数据进行纠错编码的需求,比如希望同一个ECC模块能够分别对长为512Bytes和
51024Bytes的数据进行编码。显然,固定的数据分组长度也不能完全适应人们对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参数可配置的存储器控制装置,包括存储器接口,用于连接存储器;
7
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在工作时,将根据这个寄存器中的数据进行相应的编码和解码操作,从而满足
11NAND闪存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 #舰配,胃讓诸碰鑑翻Il五棚列图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的要求,通过CPTOl对这个寄存器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的要求,通过CPTOl对这个寄存器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 #舰配,胃讓诸碰鑑翻11聽_丨图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 16640BU (相当于512 2080Byte)。 纠错能力t (也称为纠错比特/符号数t)也是可配置的t= 1 40Bit。设BCH码为定义 于有限域GF(2m)上的二进制码,其标准码长为2m-l(Bit),其中m为正整数。显然,根据BCH 码的可配置要求,只要取m= 15即可。因此,所设计的BCH码是标准码长为32767BU的 BCH码的缩短码,其实际码长为L = d+m *t。可见,实际码长随数据分组长度d和纠错能力 t改变而变化。设α为GF (2m)上的本原元,可得以α,α 3,. . .,α 79为根的最小多项式为gl(X) =X15+X+1,g3(X) = X15+X10+X5+X+l,...g79 (X) = X15+X12+Xn+X9+X6+X5+X3+X2+1对于任意设置的纠错能力t(t ( 40),BCH码的生成多项式按下式构造G(X) = gl (X) · g3 (X)……g2t_! (X)如前文所述,G(X)的计算可由CPU或硬件计算电路完成,并将其系数存入生成多 项式寄存器。或者将所有可能的G(X)的系数制成一张表,以ROM或其它电路形式存放于 NAND闪存的控制器中,供ECC模块在编码时根据t选择使用。如果G(X)的计算由CPU或硬 件计算电路完成,则在系统上电或者t发生变化时,需要重新计算G(X)。
在根据配置信息t得到生成多项式后,ECC模块即可进行编码操作。设待编码数 据为如下的比特序列1ν bi; b2,…,Iv1,则相应的数据多项式为B (X) = boX-t+H+bJ-t+d-2+... +b^X^^+b.^X^ ECC模块通过电路计算的方式完成GF⑵域上的多项式除法B⑴/G⑴,所得余式 系数即为监督码。NAND闪存控制器将数据和监督码写入NAND Flash,完成一次编码操作。
迭代初始倌组的计算过稈的简介下面以BCH码为例说明迭代初始值组的计算过程。在对BCH码进行解码操作时,首先由NAND闪存控制器从NAND闪存中读取数据和 监督码。ECC模块依次处理数据和监督码,得到伴随式。根据伴随式是否为全零,判断数据 和监督码是否有错误发生。如果伴随式为全零,则判定无错误发生。如果伴随式不是全为 零,则判定有错误发生,ECC模块进一步进行查错计算。在查错计算阶段,首先根据伴随式 计算出错误位置方程各项的系数(含常数项)Otl, O1, σ2,…,σΝΟ错误位置方程可表达 为σ ΝΧΝ+—+ σ ^+O0 = O(1)在上述方程中,非零项的最高幂次数为N。上述方程的根决定了 BCH码的出错位 置。对于码长为L = d+m 的BCH码缩短码而言,如果位置数d"-1-w是上述方程的根,则 表明BCH码的第i比特出错。求解错误位置方程的有效方法是钱搜索算法,它采用迭代计算的方式在所有错误 数范围内搜索方程可能的根,进而找到BCH码的出错位置。设^是一组有限域上的变量,η 为正整数,1彡η彡N。在迭代计算开始之前,首先对&进行赋值操作然
后更新rn的值rn= onrn。完成迭代计算的初始化操作。迭代计算开始后,计算R = ΓΝαΝ+···+Για + σ0(2)如果R = 0,则说明BCH码的第1比特出错。否则,说明第1比特没有出错。对所 有1彡η彡N,用rn α η的值来更新rn(即rn = rn α n),完成一次迭代计算。同样,在第2次 迭代计算中首先按式(2)计算R。如果R = 0,则说明BCH码的第2比特出错。否则,说明 第2比特没有出错。依此类推,完成L次迭代计算,从而找出BCH码的所有错误位置。设错 误个数为M。如果M = N,说明BCH码的错误个数没有超出BCH码的纠错能力,通过钱搜索 算法找到的错误位置是有效的。否则,说明BCH码的错误个数超出BCH码的纠错能力,通过 钱搜索算法找到的错误位置是无效的。在上述钱搜索算法中,rn的初始值(α2 —1’"与码长L有关,也就是说与数据长度d 和BCH码纠错能力t有关。因此,在本发明提出的带有可配置ECC模块的NAND Flash控制 器中,设置了一个迭代初始值寄存器组或一个由硬件方式实现的表,用来存放^的初始值 (α2""'1-1)".如果采用迭代初始值寄存器组,则该寄存器组应足以存放巧 !^的初始值(因 为在本例中t的最大值是40)。如果采用由硬件方式实现的表,则该表应包含所有可能码长 下A r4(l的初始值。ECC模块在每次进行钱搜索计算之前,只要从迭代初始值寄存器组或 迭代初始值表中读取相应的迭代计算初始值,并存放于迭代计算寄存器(即存放rn的寄存 器)中,即可快速启动钱搜索计算。如前文所述,迭代初始值的计算可由CPU或硬件电路完成,并将其存入迭代初始值寄存器。或者将所有可能的迭代初始值制成一张表,以ROM或其它电路形式存放于NAND 闪存控制器中,供ECC模块在进行钱搜索计算时根据d和t选择使用。如果迭代初始值的 计算由CPU或ECC模块完成,则在系统上电时或者d或t发生变化时,需要重新计算迭代初 始值。综上所述,本发明的可配置ECC模块的 技术方案,其优点是ECC模块只需要设计一 个,通过参数配置的方式,在预设的范围内可自由调整纠错的数据长度和纠错比特/符号 数,从而实现最大的灵活性。这样不仅节省了设计的时间,对于硬件成本也是大幅降低,而 且可适用的场合会大幅增加,可以允许不同领域的硬件设计共用同一种ECC模块。上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技 术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而 本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的 最大范围。
权利要求
一种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编3码,在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码数据分组长度寄存器中的数据分组长度搜索该查询 表,以获得相应的一组迭代初始值。
全文摘要
本发明公开了ECC参数可配置的存储器控制装置,可在一定范围内对ECC模块的数据分组长度和纠错能力进行配置。其技术方案为本发明的装置内有ECC码数据分组长度寄存器和ECC码纠错能力寄存器,分别存放ECC编码的数据分组长度和纠错能力。在实际应用中,用户根据闪存的要求,通过CPU对这两个寄存器进行设置。在存储器控制装置中还设置一个生成多项式寄存器或生成多项式表以及一个迭代初始值寄存器组或迭代初始值表,通过生成多项式寄存器以及迭代初始值寄存器组,基于ECC码数据分组长度寄存器和ECC码纠错能力寄存器中的数值进行相应的编码和解码操作,从而满足闪存对纠错编码的不同需求。
文档编号G11C16/06GK101882467SQ201010219290
公开日2010年11月10日 申请日期2010年7月2日 优先权日2010年7月2日
发明者张江安, 张钦 申请人:中颖电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1