发明内容
本发明针对现有技术中存在的技术问题,提供一种参数可配置的动态BCH纠错方法及装置,兼容多种不同类型page,同时可在Flash使用过程中动态调整BCH纠错算法的纠错能力,在保证可靠性的前提下提高解码响应速率。
本发明解决上述技术问题的技术方案如下:
本发明一方面提供一种参数可配置的动态BCH纠错方法,包括以下步骤:
步骤1,根据Flash页容量大小、冗余区空间以及错误率要求,选择合适的纠错码码长分组方案;其中所述纠错码码长分组方案包括短码方案和长码方案,每组方案均包括多级纠错模式;
步骤2,根据Flash的比特错误率变化曲线设置与所述短码方案和长码方案的级别相对应的纠错能力调整阈值;
步骤3,Flash系统固件实时获取P/E周期数,并根据所述P/E周期数与所述纠错能力调整阈值的大小,选取合适的纠错模式级别,以实现BCH纠错参数的动态配置。
进一步,所述短码方案包括两级纠错模式,各级纠错模式对应的纠错能力t分别为t=8和t=24;所述长码方案包括三级纠错模式,各级纠错模式对应的纠错能力t’分别为t’=8、t’=24和t’=40。
进一步,所述短码方案对应一个纠错能力调整阈值Clevel,所述长码方案对应两个纠错能力调整阈值Clevel1和Clevel2,其中Clevel1<Clevel2。
进一步,针对所述短码方案,若CP/E≤Clevel,则选取低纠错模式,即纠错能力t=8,若Clevel≤CP/E,则选取高纠错模式,即纠错能力t=24;
针对所述长码方案,若CP/E≤Clevel1,则选取低纠错模式,即纠错能力t’=8,若Clevel1≤CP/E≤Clevel2,则选取中纠错模式,即纠错能力t’=24,若Clevel2≤CP/E,则选取高纠错模式,即纠错能力t’=40。
进一步,所述纠错能力调整阈值的大小与Flash的比特错误率变化曲线及初始比特错误率有关。
基于上述一种参数可配置的动态BCH纠错方法,本发明还提供一种参数可配置的动态BCH纠错装置,包括:
方案选择模块,用于根据Flash页容量大小、冗余区空间以及错误率要求,选择合适的纠错码码长分组方案;其中所述纠错码码长分组方案包括短码方案和长码方案,每组方案均包括多级纠错模式;
阈值设定模块,用于根据Flash的比特错误率变化曲线设置与所述短码方案和长码方案的级别相对应的纠错能力调整阈值;
动态配置模块,用于Flash系统固件实时获取P/E周期数,并根据所述P/E周期数与所述纠错能力调整阈值的大小,选取合适的纠错模式级别,以实现BCH纠错参数的动态配置。
本发明的有益效果是:区别于一种固定参数的BCH纠错方案,参数可配的BCH纠错模块可以适用于多种页容量大小的Flash芯片,因此不必在更换Flash的同时再去设计相应的纠错模块,提高整个Flash控制器的兼容性。同时固件可根据不同Page具体的P/E周期数,结合其实际出错比例,在保证可靠性的前提下尽可能提高Flash读写性能。
具体实施方式
以下结合实例对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明实施例提供的一种参数可配置的动态BCH纠错方法流程图,如图1所示,包括以下步骤:
步骤1,根据Flash页容量大小、冗余区空间以及错误率要求,选择合适的纠错码码长分组方案;其中所述纠错码码长分组方案包括信息位长度为512B的短码方案和信息位长度为1KB的长码方案,每组方案均包括多级纠错模式;
选择512B(短码方案)的优点是:码字长度相对较短,编解码所需周期数小,因此延时较小,响应速率更快。采用1KB(长码方案)分组的优点是:相同纠错能力下,所需冗余位更少,能够最大程度利用冗余区空间资源。
进一步,所述短码方案包括两级纠错模式,各级纠错模式对应的纠错能力t分别为t=8和t=24;所述长码方案包括三级纠错模式,各级纠错模式对应的纠错能力t’分别为t’=8、t’=24和t’=40。
步骤2,根据Flash的比特错误率变化曲线设置与所述短码方案和长码方案的级别相对应的纠错能力调整阈值;
所述短码方案对应一个纠错能力调整阈值Clevel,所述长码方案对应两个纠错能力调整阈值Clevel1和Clevel2,其中Clevel1<Clevel2。
针对所述短码方案,若CP/E≤Clevel,则选取低纠错模式,即纠错能力t=8,若Clevel≤CP/E,则选取高纠错模式,即纠错能力t=24。
在Flash使用初期,Page的P/E次数不超过Clevel,即CP/E≤Clevel时,采用t=8即低纠错能力模式。在该模式下实际出错数不多,已经可以满足纠错要求,且因为纠错能力小致使解码迭代次数小,解码延迟较小,因此能够保证Flash较高的读写性能。与此同时,冗余区空间只占用一小部分存储校验位,因此有更多的空间供固件进行其他操作。当Page的P/E次数超过Clevel即Clevel≤CP/E时,采用t=24高纠错能力模式,通常情况下Flash的P/E次数增多之后错误率会显著上升,此时采用高纠错能力模式能够保证数据可靠性。
针对所述长码方案,若CP/E≤Clevel1,则选取低纠错模式,即纠错能力t’=8,若Clevel1≤CP/E≤Clevel2,则选取中纠错模式,即纠错能力t’=24,若Clevel2≤CP/E,则选取高纠错模式,即纠错能力t’=40。
固件可根据Flash具体的P/E周期数动态配置纠错参数。在CP/E≤Clevel1时采用t=8的方案,以较小的读写延时保证系统高读写性能。在Clevel1≤CP/E≤Clevel2时实际错误率有所增加,t=8已不再能满足纠错要求,将纠错参数适当增大到t=24,以适当的解码延时为代价保证系统可靠性。当Clevel2≤CP/E时错误率较高,此时采用t=40即最大纠错能力方案,尽可能的用尽了Page的空闲区资源,最大程度保证系统的可靠性,直至超出纠错能力范围导致整个Block失效。其中Clevel1与Clevel2需结合具体Flash芯片型号而定,因为不同类型Flash的错误率不同,所述所述纠错能力调整阈值的大小与Flash的比特错误率变化曲线及初始比特错误率有关。初始错误率小,且错误率随P/E增长缓慢的FLASH,要比那些初始错误率高,且错误率随P/E迅速增加的FLASH所设定的纠错能力调整阈值要大。其满足如下关系:0<Clevel1<Clevel2。
步骤3,Flash系统固件实时获取P/E周期数,并根据所述P/E周期数与所述纠错能力调整阈值的大小,选取合适的纠错模式级别,以实现BCH纠错参数的动态配置。
基于上述一种参数可配置的动态BCH纠错方法,本发明还提供一种参数可配置的动态BCH纠错装置,如图2所示,包括:
方案选择模块,用于根据Flash页容量大小、冗余区空间以及错误率要求,选择合适的纠错码码长分组方案;其中所述纠错码码长分组方案包括短码方案和长码方案,每组方案均包括多级纠错模式;
阈值设定模块,用于根据Flash的比特错误率变化曲线设置与所述短码方案和长码方案的级别相对应的纠错能力调整阈值;
动态配置模块,用于Flash系统固件实时获取P/E周期数,并根据所述P/E周期数与所述纠错能力调整阈值的大小,选取合适的纠错模式级别,以实现BCH纠错参数的动态配置。
所示动态配置模块包括编码模块、伴随式计算电路、迭代译码算法模块和钱搜索电路,
编码模块具体实施方法为:在编码链中异或结果与配置位信息相与再送入寄存器。编码模块中单个编码单元结构如图3所示,配置信息config可控制参与运算的寄存器的个数以控制整个编码器的长度。而不同参数对应的反馈环不同,即不同参数对应不同生成多项式决定不同g(x)配置信息。通过软件辅助计算所有参数对应的生成多项式,构造不同的生成多项式系数配置电路,以实现编码器参数可配。编码模块实现接口,如图4所示,其中配置信息可控制生成多项式系数配置电路,同时也控制反馈移位寄存器的数量。
伴随式计算电路具体实施方法为:并行伴随式计算电路,采用如图4迭代并行结构,在同一时钟周期可处理p位并行数据。因为纠错能力最大为40,因此最多有80个伴随式计算器,但在纠错能力t=8与t=24的条件下并不需要所有伴随式都参与计算,因此在每个伴随式计算器中均加入使能控制信号,以控制实际有效的伴随式个数。同时由于码长不同根据伴随式计算公式:
Sj=C(aj)=C0+C1aj+C2a2j+…Cn-1a(n-1)j
可知在纠错能力不同条件下码长不同也不同,因此迭代计算周期也不同,因此需要添加计数控制模块,来控制伴随式计算器迭代的周期数。根据外部的配置参数,可译码得到不同的使能信号EN与计数控制信号。
迭代译码算法模块,采用非求逆的ibm迭代译码算法计算出错位置多项式。ibm迭代译码流程图如图6所示,ibm迭代译码算法需要t+1个寄存器存储迭代过程中的中间变量,根据配置信息t的大小,决定实际有效的寄存器的个数即控制t+1到T(最大纠错能力)的计算模块不工作,纠错能力t同时也控制着迭代过程是否结束。
钱搜索电路,如图7所示,具体实施方法为:根据搜根算法,在第k个周期时,寄存器里保存的计算结果为σ1ak,σ2a2k....σtatk,和式:Sum=1+σ1ak+σ2a2k+....+σtatk计算结果若为0,则代表搜到根,则说明错误位置发生在an-k位。为了实现电路参数可配,通过使能控制电路,若实际纠错能力t没有达到最大纠错能力T,则将t+1到T个计算单元使能信号设为0,那么其计算结果对和式的结果就没有影响。如图8所示为解码模块接口示意图,通过配置信号可配置分组码长与纠错能力t。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。