CN101488762A - 一种面积紧凑且快速的bch并行译码方法 - Google Patents
一种面积紧凑且快速的bch并行译码方法 Download PDFInfo
- Publication number
- CN101488762A CN101488762A CNA2009100245262A CN200910024526A CN101488762A CN 101488762 A CN101488762 A CN 101488762A CN A2009100245262 A CNA2009100245262 A CN A2009100245262A CN 200910024526 A CN200910024526 A CN 200910024526A CN 101488762 A CN101488762 A CN 101488762A
- Authority
- CN
- China
- Prior art keywords
- loc
- arithmetic unit
- state
- error
- delta
- 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
Links
Images
Abstract
本发明涉及NandFlash型存储设备控制芯片中的一种面积紧凑且快速的BCH并行译码方法,其特征在于:在采用一轮多拍方式迭代运算错误位置多项式过程中,通过状态机控制单元的配置逻辑与状态机相结合来复用有限域GF(213)上的一个混合运算器,该混合运算器由有限域GF(213)上的一个二输入乘法器和一个二输入加法器构成,如果迭代轮数为偶数2k时,该轮需要复用混合运算器2k+1次,如果迭代轮数为奇数2k-1时,该轮需要复用混合运算器3k+3次,其中,k为大于或等于1的整数。本发明在错误位置多项式电路中通过控制面积的方式进行有效的优化,使混合运算器的使用率最大化,但复用率最小化。该方法使得电路实现面积和运算速度之间取得了比较好的平衡,从而能满足不同应用环境的要求。
Description
技术领域
本发明涉及由博斯-查德赫利-霍昆格姆(Bose-Chaudhuri-Hocquenghem,即BCH)编码发生器定义的差错控制码技术,特别是涉及在NandFlash型存储设备控制芯片中的一种面积紧凑且快速的BCH并行译码方法。
背景技术
BCH码是一种能纠正多个随机错误的循环码,可以用生成多项式g(x)的根来描述。它是具有严格的代数结构,纠错能力强,构造简单,编码较其他码容易等特点的线性分组码。
在NandFlash型结构大容量存储设备的控制芯片中,由于NandFlash型结构的特点以及噪声干扰等因素,传输的数据会出错是不可避免的,为了保证数据读出时能进行误码检测和校正,通常都是当数据写入存储单元时,需要按一定规则人为地写入一部分冗余数据,用于差错控制。BCH码是可纠正多个随机错误的码,这与NandFlash存储设备的常规出错类型相符。采用超长BCH码作为NandFlash控制器纠错码ECC单元的优点是:
(1)在保护相同长度的数据时,对于给定的随机错误数,二进制BCH码需占用的冗余数据空间通常要低于里德-索罗蒙RS(Reed-Solomn)码;
(2)在译码时,二进制BCH码仅需搜索错误位置,待获得错误位置后,只需将错误位取反即完成纠错,而不必再计算错误值多项式,使得计算复杂度得到了大幅度的减小。
由BCH编码原理可知,对于任意正整数m,设二进制BCH码的标准码长为N=(2m-1)比特,码字为K比特,则该码的相关参数为:校验元长为(N-K)比特;纠错能力t≥(N-K)/m(其中m≥3);最小码距dmin≥2t+1。
通常BCH码的译码主要分为三步:
(1)从接收码字中计算伴随式多项式的校正子Si(x);
(2)用伯利坎普-梅西BM(Berlekamp-Massey)迭代算法得到错误位置多项式L(x);
(3)用Chien搜索法求解错误位置多项式的根,从而求解出错误位置,完成纠错。
但是第二步中的BM算法需要复杂的有限域求逆运算,有限域的求逆运算要么需要复杂的硬件实现结构,要么采用查表方式,需要在电路中加入ROM或Flash型存储单元。伯顿(Burton H.)在1971年中提出了一种针对二进制BCH码的无求逆(Inversionless)伯利坎普-梅西算法IBM,简化了算法实现。采用IBM迭代算法后,二进制BCH码的译码步骤变更为:
(1)从接收码字中计算伴随式多项式Si(x);
(2)用IBM迭代算法得到常数项非“0”的差错位置多项式L(x);
(3)用Chien搜索算法求解错误位置多项式L(x)的根,从而完成纠错。
针对上述译码步骤(1)和(3),Chen Y.等人给出了伴随式多项式运算电路和并行Chien搜索电路(参见“Chen Y.and Parhi K.K.,Area efficient paralleldecider architecture for long BCH codes.IEEE Proceedings on ICASSP2004,2004:73-76.”)。针对上述译码步骤(2),里德(Reed I.S.)等人将IBM算法扩展用于解非二进制BCH码,并给出了IBM算法的超大规模集成电路VLSI结构,当前这种实现结构被广泛采用(参见“Reed I.S.,Shih M.T.,VLSIdesign of inverse-free Berlekamp-Massey algorithm.In IEE Proceedings onComputers and Digital Techniques,1991,138(5):295-298.”)。张军等人提出了超高速低复杂度IBM算法电路结构(参见“张军,王志功,胡庆生等,高速Berklekamp-Massey算法结构及电路实现。电路与系统学报,2006,11(4):85-89.”),降低了关键路径延迟,采用了2t+1个二输入有限域乘法器。
对于BCH码的译码步骤(2),在有限域GF(213)上纠错能力为t比特的BCH码,采用里德等人的实现电路,实现结构需要3t-1个二输入乘法器,根据不同的工艺库,单个组合逻辑乘法电路的实现面积通常在1000门左右,3t-1个二输入乘法器的实现代价将超过整个译码器电路的50%,若采用张军等人的实现电路,虽然降低了关键路径的延迟,但仍需采用2t+1个二输入有限域乘法器,实现代价依然较大。
对于BCH码的译码步骤(3),现有的并行Chien搜索电路对常用的BCH截短码并没有采取专门措施,需要对截去的空数据单元进行搜索,限制了错误位置的搜索速度。
由于在上述BCH码的三个译码步骤的实现电路中,现有技术要么存在硬件实现面积大,要么关键路径延迟时间长等问题,无法满足大容量便携式存储系统的要求。
为避免上述现有技术的不足,中国专利申请200510134376.2公开了一种“BCH编码中Galois扩域运算的快速实现方法”,预先建立幂次表示和多项式表示之间各元素的对应关系;通过Galois扩域运算的两种表示方法实现混合运算,提高了BCH编译码的运算速度,降低了Galois扩域运算软件实现的复杂度。该算法针对软件实现具有很好的适应性,然而这种Galois扩域运算需要分多个步骤进行,并且需要兼容所有Galois扩域,因而它在硬件实现面积和运算速度上都无法满足当前大容量便携式NandFlash存储产品的需要。
中国专利申请200410005777.3还公开了一种“快速纠双错BCH码译码电路”,根据译码码字的错误图样不大于2比特这一特点,给出了一种无需Chien搜索算法,也不用查找表ROM,直接从伴随式结果即可计算出错误位置的快速译码算法。译码结构简单,硬件复杂度低。然而,目前大容量NandFlash存储产品的容量在继续不断增大,数据传输错误发生的概率也随之增加,2比特的纠错性能已经难以保证各种NandFlash产品的使用可靠性。
中国专利申请200710123852.X还公开了“一种支持预搜索的面积紧凑型BCH并行译码电路”,根据IBM迭代算法中的结构设计,通过一轮多拍的实现结构复用一个有限域GF(213)上的二输入乘法器,从而使BCH码译码的硬件实现面积大幅度压缩,其中每一轮迭代需要复用(3t+2)次二输入乘法器,因此该二输入乘法器一共被复用2t*(3t+2)次。虽然这种方法能使BCH码的译码电路最大化的压缩面积,同时复用这些乘法器至少需要2t*(3t+2)个时钟周期,因此译码的时间也不可避免的延长了,仍然很难同时满足目前大容量NandFlash存储产品对译码速度快和电路硬件实现面积小等要求。
发明内容
本发明要解决的技术问题在于克服目前BCH码译码电路要么译码速度慢,要么硬件实现面积大等不足,提出一种新的BCH码并行译码方法,使VISL电路的BCH译码器实现面积大幅减小,同时译码的速度也得到了很大的提高,使BCH译码过程中对硬件实现面积和运算速度取得了一个比较好的平衡,扩大BCH译码电路的使用范围,满足不同的应用环境。
为达到上述目的,本发明采用的技术方案是:一种面积紧凑且快速的BCH并行译码方法,通过BCH并行译码电路来实现读取数据时的纠错,所述BCH并行译码电路主要由伴随式校正子运算电路、错误位置多项式迭代电路和错误地址搜索电路组成,BCH并行译码电路工作在有限域GF(213)上,首先利用伴随式校正子运算电路通过8比特码字同时输入的并行运算来完成伴随式校正子的计算,然后利用错误位置多项式迭代电路通过IBM迭代算法中的一轮多拍方式得到错误位置多项式,最后利用错误地址搜索电路先采用4比特预搜索方法进行错误地址的预搜索处理,然后再送入Chien搜索电路完成错误地址的搜索,从而求解出错误地址和错误图样,并将错误图样与错误地址中的错误数据进行异或运算得到正确的码字,其创新在于:在采用一轮多拍方式迭代运算错误位置多项式过程中,通过状态机控制单元的配置逻辑与状态机相结合来复用有限域GF(213)上的一个混合运算器,该混合运算器由有限域GF(213)上的一个二输入乘法器和一个二输入加法器构成,如果迭代轮数为偶数2k时,该轮需要复用混合运算器2k+1次,如果迭代轮数为奇数2k-1时,该轮需要复用混合运算器3k+3次,其中,k为大于或等于1的整数。
上述技术方案中的有关内容解释如下:
1、上述方案中,所述状态机有五种状态,分别为闲置状态(Idle)、循环返回状态(Loop)、计算差值状态(CalDespy)、更新变量状态(UpdateLambda)和结束迭代状态(Done);状态机控制单元通过状态机的五种状态来控制迭代运算以及在迭代运算中选择混合运算器的复用顺序,当迭代轮数是奇数2k-1时,状态机控制单元依次选通计算差值状态(CalDespy)、更新变量状态(UpdateLambda)和循环返回状态(Loop),其中,计算差值状态(CalDespy)中复用混合运算器的顺序为:
表达式(1)中:
“+”表示使用混合运算器中的加法器逐比特模2加运算;
“S”表示伴随式校正子;
“k”表示大于或等于1的整数;
“Loc”表示错误位置多项式运算过程中的系数;
“delta0,delta1,...,deltak+2”分别表示上一次复用混合运算器的运算结果;
更新变量状态(UpdateLambda)中复用混合运算器的顺序为:
表达式(2)中:
“+”表示逐比特模2加运算;
“k”表示大于或等于1的整数;
“gamma”表示上一次奇数轮的更新变量状态(UpdateLambda)中迭代运算使用的“delta”值;
“tmp0,tmp1,...,tmpk”分别表示上一次复用混合运算器的运算结果;
“Loc”表示错误位置多项式运算过程中的系数;
“B”表示“Loc”值或与“Loc”值相关的值;
“delta”表示状态机出现的上一个状态中最后一次复用混合运算器的运算结果;
当迭代轮数是偶数2k时,状态机控制单元依次选通更新变量状态(UpdateLambda)和循环返回状态(Loop),其中,更新变量状态(UpdateLambda)中复用混合运算器的顺序与表达式(2)表示的顺序相同。
2、上述方案中,按照数据冗余位的长度来配置纠错能力,其中纠错能力小于或等于数据冗余位的长度除以13后商的正整数。
3、上述方案中,所述的伴随式校正子运算电路,采用一个优化后的13比特除法器的实现结构,对每次接收的8比特数据din[0],din[1],...,din[7]与13比特有限域中的最小多项式常量进行除法预处理,设Si(i∈[1,2t])为伴随式校正子运算结果,其具体的运算公式为:Si=Mi[12]×(αi)12+Mi[11]×(αi)11+...+Mi[0]×(αi)0,而又由二进制的BCH码编码原理可知:S2i=(Si)2,因此只需计算奇数项的伴随式校正子。当纠错能力为t比特时,需要同时计算t个伴随式校正子S1,S3,...,S2t-1,而偶数项的伴随式校正子可依次通过平方计算可得,其中下标i取值范围为1~2t的整数。一共有2t个伴随式校正子。
4、上述方案中,所述错误地址搜索电路,通过对接收的错误多项式系数Loc1,Loc2,...,Loct分别与有限域GF(213)上生成多项式的常量(α-4,α-5,α-6,α-7),(α-8,α-10,α-12,α-14),...,(α-4t,α-5t,α-6t,α-7t)对应进行有限域GF(213)的乘法,其中t为纠错能力,再分别与Loc0进行异或处理后送入错误地址搜索电路进行4比特的预搜索,使搜索速度获得很大的提升。
5、本发明工作原理是:译码码字通过8比特并行伴随式校正子运算电路得到2t个伴随式校正子Si(i∈[1,2t]),然后通过使能信号IBM_start使能错误位置多项式迭代电路并把纠错能力信号Cerror_num[5:0]送入错误位置多项式迭代电路开始运算,求出错误位置多项式的各系数Loc0,Loc1,...,Loct并给出错误的个数Error_num,再通过使能信号Chien_start使能错误地址搜索电路并把错误位置多项式的各系数Loc0,Loc1,...,Loct以及错误的个数Error_num[5:0]一并送入错误地址搜索电路开始搜索出错误地址CSadrs[9:0]和相应的错误图样CSdout[7:0]。最后将错误图样CSdout与错误地址CSadrs中的错误数据din[7:0]进行异或得到正确的码字Correct data,完成纠错。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
1、硬件实现面积小。本发明在伴随式校正子运算过程中对除法器通过对有限域GF(213)上生成多项式的常量进行预计算,从而大大的减小了除法器的面积。通过优化之后的所有除法器的实现面积之和大约相当于3个二输入乘法器的实现面积;在IBM算法中通过状态机控制单元对不同的状态复用有限域GF(213)上的一个混合运算器,该混合运算器由一个乘法器和一个加法器构成,从而使电路的实现面积得到大幅度的压缩,而在电路实现面积中,乘法器的面积远远大于加法器,因此一个混合运算器的面积也约为一个乘法器的实现面积。由此可见,本发明伴随式校正子运算电路的面积与背景技术中提及的200710123852.X专利申请相当,都属于面积紧凑型电路。
2、本发明可根据数据冗余位的长度灵活的配置纠错能力。纠错能力可以选取小于或等于数据冗余位的长度除以13的商的任何一个正整数。
3、本发明错误地址搜索速度快。通过对错误多项式各系数Loc0,Loc1,...,Loct的全组合逻辑的4比特的预处理,从而使错误地址搜索速度得到很大的提高。
4、适用面更广。本发明在错误位置多项式电路中通过控制面积的方式进行有效的优化,使混合运算器的使用率最大化,但复用率最小化。该方法使得电路实现面积和运算速度之间取得了比较好的平衡,从而能满足不同应用环境的要求。以目前NandFlash设备中比较常用的512字节数据类型为例,如果纠错能力为16比特时,根据中国专利申请200710123852.X公开的一种“支持预搜索的面积紧凑型BCH并行译码电路”,在错误位置多项式迭代电路中需要复用2×16×(3×16+2)=1600次乘法器,因此至少需要1600个时钟周期;如果纠错能力为8比特时,则该错误位置多项式迭代电路中需要复用416次乘法器,因此至少需要416个时钟周期。而本发明通过对IBM算法的有效优化和重新构造,使得错误位置多项式电路中一共分别需要复用801次和242次混合运算器,大约分别需要830个和260个时钟周期即可完成错误位置多项式的迭代运算,大大提高了迭代运算速度。
附图说明
附图1是本发明的整体电路结构框架图
附图2是本发明的伴随式校正子运算电路框架图
附图3是本发明的IBM算法实现电路框架图
附图4是本发明的Chien搜索算法实现电路框架图
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:一种面积紧凑且快速的BCH并行译码方法,通过BCH并行译码电路(如图1至4所示)来实现读取数据时的纠错,所述BCH并行译码电路主要由伴随式校正子运算电路(即图1中的伴随式运算电路)、错误位置多项式迭代电路(即图1中的IBM算法电路)和错误地址搜索电路(即图1中的Chien搜索电路)组成。BCH并行译码电路工作在有限域GF(213)上,首先利用伴随式校正子运算电路通过8比特码字同时输入的并行运算来完成伴随式校正子的计算,然后利用错误位置多项式迭代电路通过IBM迭代算法中的一轮多拍方式得到错误位置多项式,最后利用错误地址搜索电路先采用全组合逻辑的4比特预搜索方法进行错误地址的预搜索处理,然后再送入Chien搜索电路完成错误地址的搜索,从而求解出错误位置,完成纠错,其创新在于:在采用一轮多拍方式迭代运算错误位置多项式过程中,通过状态机控制单元的配置逻辑与状态机相结合来复用有限域GF(213)上的一个混合运算器,该混合运算器由有限域GF(213)上的一个二输入乘法器和一个二输入加法器构成,如果迭代轮数为偶数2k时,该轮需要复用混合运算器2k+1次,如果迭代轮数为奇数2k-1时,该轮需要复用混合运算器3k+3次,其中,k为大于或等于1的整数。
附图1为整体电路框图。图中各信号的功能描述如下:
输入信号
c1k:系统时钟输入信号;
rst_:复位信号,低电平有效;
Count[9:0]:码字长度计数控制信号,位宽为10位;
dinValid:有效数据输入信号,高电平有效;
encoding:编译码模式信号(1为编码,0为译码);
flashtype:flash类型选择信号;
din[7:0]:数据输入端口,位宽为8位;
searchInit:IBM迭代运算初始化信号;
Cerror_num[5:0]:纠错能力信号,位宽为6位;输出信号
Correct data[7:0]:正确的输出码字,位宽为8位;
Error_num[5:0]:实际出现的错误个数,位宽为6位;
Codedone:伴随式计算结束指示信号,高电平有效;
IBMdone:IBM迭代结束指示信号,高电平有效;
CSdone:Chien搜索结束指示信号,高电平有效;
CSdout[7:0]:错误图样输出,与输入值din异或完成纠错,位宽为8位;
CSadrs[9:0]:错误位置,位宽为10位;
CSwe:纠错指示信号,高电平有效;
SearchF:超出纠错能力指示信号,高电平有效;内部信号
IBM_start:IBM迭代运算使能信号,高电平有效;
Chien_start:Chien搜索使能信号,高电平有效;
S0,S1,...,S2t:伴随式校正子,位宽都为13位;
Loc0,Loc1,...,Loct:错误位置多项式各系数,位宽都为13位;
图2为伴随式校正子运算电路,在同一个时钟周期内将8比特的码字以并行的方式按从低到高位分别与中间变量mi[5],mi[6],...,mi[12]异或后和mi[0],mi[1],...,mi[4]一起送入优化后的除法器除以有限域GF(213)上的最小多项式常量,将结果作为下一个时钟周期的mi[0],mi[1],...,mi[12],同时将结果分别与有限域GF(213)上的常量α,αi,...,α12i进行逐比特与运算,最后再分别将逐比特与运算的十三个结果进行逐比特模2加运算,直到所有码字输入结束,则最终的结果即为伴随式校正子Si,又由二进制的BCH编码原理可知,S2i=(Si)2,因此只需计算奇数项的伴随式校正子。当纠错能力为t比特时,需要同时计算t个伴随式校正子S1,S3,...,S2t-1,而偶数项的伴随式校正子可依次通过平方计算可得,其中下标i取值范围为1~2t的整数。一共有2t个伴随式校正子。
图3是错误位置多项式迭代电路,IBM迭代运算通过状态机控制单元选通所要进行的状态进行迭代运算,其中状态机共有5种状态形式,分别为闲置状态Idle是指处于闲置状态;循环返回状态Loop是指完成一轮迭代运算后准备下一轮迭代运算的过渡状态;计算差值状态CalDespy是指计算差值delta的运算;更新变量状态UpdateLambda是指IBM迭代过程中的更新中间变量的过程,比如B0,B1,...,Bt;gamma;delta以及错误多项式各系数Loc0,Loc1,...,Loct等;结束迭代状态Done是指IBM迭代结束的状态。一轮IBM算法的迭代步骤具体实现如下:
a、首先判断迭代轮数RR是奇数还是偶数,如果该轮RR是奇数2k-1时,状态机控制单元依次选通计算差值状态CalDespy、更新变量状态UpdateLambda和循环返回状态Loop。在计算差值状态CalDespy中,首先判断错误多项式系数更新指示信号loadlocation是否为1,若是则更新LIndex所指向的错误位置多项式的系数,计算伴随式校正子与错误值多项式系数相乘并加上上一次混合运算的结果,其中计算差值状态CalDespy复用混合运算器的顺序为: 而伴随式的选取是由SIndex控制,而错误值多项式系数的选取则是由LIndex控制,每一次混合运算后将结果作为下一次混合运算的delta,共进行k+2次混合运算。计算差值状态CalDespy结束之后状态机控制单元选通更新变量状态UpdateLambda更新IBM迭代过程中的中间变量B0,B1,...,Bt,首先判断标志信号flag是否为1,若是则由LIndex控制将Loci赋给Bi,否则将另一中间变量Ab赋给Bi,再通过LIndex控制选择Bi与delta相乘,得到相乘结果为tmp,每次运算结束之后再通过LIndex控制选择Loci与gamma相乘并加上上一次Bi与delta相乘的结果tmp,具体的复用混合运算器的顺序依次为: 共进行了k+1次乘法运算和k次混合运算。更新变量状态UpdateLambda结束之后,状态机控制单元将选通循环返回状态Loop,首先判断updategamma是否为1,当updategamma高电平有效为1时将delta的值赋给gamma,然后开始下一轮的迭代。
b、如果该轮迭代的轮数是偶数2k时,状态机控制单元依次选通更新变量状态UpdateLambda和循环返回状态Loop。选通更新变量状态UpdateLambda后首先判断标志信号flag是否为1,若是则由LIndex控制将Loci赋给Bi,否则将另一中间变量Ab赋给Bi,再通过LIndex控制选择Bi与delta相乘,得到相乘结果为tmp,每次运算结束之后再通过LIndex控制选择Loci与gamma相乘并加上上一次Bi与delta相乘的结果tmp,具体的复用混合运算器的顺序依次为: 共进行了k+1次乘法运算和k次混合运算。更新变量状态UpdateLambda结束之后,状态机控制单元将选通循环返回状态Loop,首先判断updategamma是否为1,当updategamma高电平有效为1时将delta的值赋给gamma,然后开始下一轮的迭代。
c、当迭代的次数等于2t+1时,状态机控制单元选通结束迭代状态Done,IBM迭代运算结束,同时图1中的IBMdone信号置为有效,此时寄存器(图中未画出)中的Loc0,Loc1,...,Loct即为错误位置多项式各系数,将其送入错误地址搜索电路。
图4表示的是具有4比特预搜索的错误地址搜索电路,在进行Chien搜索之前先进行预处理,预处理的方式如图4所示是:将错误多项式各系数Loc1,Loc2,...,Loct分别与对应的有限域GF(213)上生成多项式的常量(α-4,α-5,α-6,α-7),(α-8,α-10,α-12,α-14),...,(α-4t,α-5t,α-6t,α-7t)进行有限域GF(213)的乘法,即错误多项式系数Loc1分别与常量(α-4,α-5,α-6,α-7)相乘分别得到Loc1_0,Loc1_1,Loc1_2,Loc1_3;错误多项式系数Loc2分别与常量(o-8,α-10,α-12,α-14)相乘分别得到Loc2_0,Loc2_1,Loc2_2,Loc2_3;...;错误多项式系数Loct分别与常量(α-4t,α-5t,α-6t,α-7t)相乘分别得到Loct_0,Loct_1,Loct_2,Loct_3;然后计算Loc0+Loc1_0+Loc2_0+...+Loct_0的结果,再判断该结果是否为0,如果为0则loc[0]置为1,否则置为0;计算Loc0+Loc1- _1+Loc2_1+...+Loct_1的结果,再判断该结果是否为0,如果为0则loc[1]置为1,否则置为0;计算Loc0+Loc1_2+Loc2_2+...+Loct_2的结果,再判断该结果是否为0,如果为0则loc[2]置为1,否则置为0;计算Loc0+Loc1_3+Loc2- _3+...+Loct_3的结果,再判断该结果是否为0,如果为0则loc[3]置为1,否则置为0。将loc[3:0]送入Chien搜索电路从而完成4比特预搜索的运算过程。在搜索过程中如果发现有错,则图1中的纠错能力信号CSwe信号有效,同时给出错误地址Csadrs(见图1)和错误图样CSdout(见图1),并将输出错误图样CSdout与错误地址CSadrs中的错误数据din[7:0]进行异或得到正确的码字Correct data(见图1),当码字全部输入结束后,错误地址搜索电路的结束信号CSdone信号有效(见图1);如果码字出现的错误个数超过了纠错能力Cerror_num(见图1),则搜索失败SearchF信号有效(见图1),也即纠错失败,则要求码字重传或者抛弃。
以目前NandFlash设备中比较常用的512字节数据类型为例,选择BCH(4304,4096),纠错能力为16比特,码字为512字节即4096比特,形式如“00 01 02 03...0f 10...ff 00 01 02 03...0f 10...ff”共512字节,数据冗余位为26字节即208比特,现用Verilog HDL电路描述语言实现电路,并在Synopsys公司的VCS环境下进行验证,得到该码字的26字节的数据冗余位为:
208’h db a7 b5 19 18 b4 aa 34 83 7c 26 94 4c 7b de 2e aa 0e 14 e8 d1 ce 88d1 5b 59
将512字节码字和26字节数据冗余位共538字节数据作为译码的输入。现人为的将第0字节的“00”改为“01”,将第16字节的“10”改为“11”,...,将第240字节的“f0”改为“f1”,共造成16个错误。译码后的显示结果如下:
Pattern 0:
Info:Error Deteced @ Add= 240,Error Data=8′hf1(11110001),CorrectData=8′hf0(11110000)
Info:Error Deteced @ Add= 224,Error Data=8′he1(11100001),CorrectData=8′he0(11100000)
Info:Error Deteced @ Add= 208,Error Data=8′hd1(11010001),CorrectData=8′hd0(11010000)
Info:Error Deteced @ Add= 192,Error Data=8′hc1(11000001),CorrectData=8′hc0(11000000)
Info:Error Deteced @ Add= 176,Error Data=8′hb1(10110001),CorrectData=8′hb0(10110000)
Info:Error Deteced @ Add= 160,Error Data=8′ha1(10100001),CorrectData=8′ha0(10100000)
Info:Error Deteced @ Add= 144,Error Data=8′h91(10010001),CorrectData=8′h90(10010000)
Info:Error Deteced @ Add= 128,Error Data=8′h81(10000001),CorrectData=8′h80(10000000)
Info:Error Deteced @ Add= 112,Error Data=8′h71(01110001),CorrectData=8′h70(01110000)
Info:Error Deteced @ Add= 96,Error Data=8′h61(01100001),CorrectData=8′h60(01100000)
Info:Error Deteced @ Add= 80,Error Data=8′h51(01010001),CorrectData=8′h50(01010000)
Info:Error Deteced @ Add= 64,Error Data=8′h41(01000001),CorrectData=8′h40(01000000)
Info:Error Deteced @ Add= 48,Error Data=8′h31(00110001),CorrectData=8′h30(00110000)
Info:Error Deteced @ Add= 32,Error Data=8′h21(00100001),CorrectData=8′h20(00100000)
Info:Error Deteced @ Add= 16,Error Data=8′h11(00010001),CorrectData=8′h10(00010000)
Info:Error Deteced @ Add= 0,Error Data=8′h01(00000001),CorrectData=8′h00(00000000)
Info:16 Error Deteced
由上面纠错信息可知纠错功能完全正确。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (3)
1、一种面积紧凑且快速的BCH并行译码方法,通过BCH并行译码电路来实现读取数据时的纠错,所述BCH并行译码电路主要由伴随式校正子运算电路、错误位置多项式迭代电路和错误地址搜索电路组成,BCH并行译码电路工作在有限域GF(213)上,首先利用伴随式校正子运算电路通过8比特码字同时输入的并行运算来完成伴随式校正子的计算,然后利用错误位置多项式迭代电路通过IBM迭代算法中的一轮多拍方式得到错误位置多项式,最后利用错误地址搜索电路先采用4比特预搜索方法进行错误地址的预搜索处理,然后再送入Chien搜索电路完成错误地址的搜索,从而求解出错误地址和错误图样,并将错误图样与错误地址中的错误数据进行异或运算得到正确的码字,其特征在于:在采用一轮多拍方式迭代运算错误位置多项式过程中,通过状态机控制单元的配置逻辑与状态机相结合来复用有限域GF(213)上的一个混合运算器,该混合运算器由有限域GF(213)上的一个二输入乘法器和一个二输入加法器构成,如果迭代轮数为偶数2k时,该轮需要复用混合运算器2k+1次,如果迭代轮数为奇数2k-1时,该轮需要复用混合运算器3k+3次,其中,k为大于或等于1的整数。
2、根据权利要求1所述的BCH并行译码方法,其特征在于:所述状态机有五种状态,分别为闲置状态(Idle)、循环返回状态(Loop)、计算差值状态(CalDespy)、更新变量状态(UpdateLambda)和结束迭代状态(Done);状态机控制单元通过状态机的五种状态来控制迭代运算以及在迭代运算中选择混合运算器的复用顺序,当迭代轮数是奇数2k-1时,状态机控制单元依次选通计算差值状态(CalDespy)、更新变量状态(UpdateLambda)和循环返回状态(Loop),其中,计算差值状态(CalDespy)中复用混合运算器的顺序为:
表达式(1)中:
“+”表示使用混合运算器中的加法器逐比特模2加运算;
“S”表示伴随式校正子;
“k”表示大于或等于1的整数;
“Loc”表示错误位置多项式运算过程中的系数;
“delta0,delta1,...,deltak+2”分别表示上一次复用混合运算器的运算结果;更新变量状态(UpdateLambda)中复用混合运算器的顺序为:
表达式(2)中:
“+”表示逐比特模2加运算;
“k”表示大于或等于1的整数;
“gamma”表示上一次奇数轮的更新变量状态(UpdateLambda)中迭代运算使用的“delta”值;
“tmp0,tmp1,...,tmpk”分别表示上一次复用混合运算器的运算结果;
“Loc”表示错误位置多项式运算过程中的系数;
“B”表示“Loc”值或与“Loc”值相关的值;
“delta”表示状态机出现的上一个状态中最后一次复用混合运算器的运算结果;
当迭代轮数是偶数2k时,状态机控制单元依次选通更新变量状态(UpdateLambda)和循环返回状态(Loop),其中,更新变量状态(UpdateLambda)中复用混合运算器的顺序与表达式(2)表示的顺序相同。
3、根据权利要求1或2所述的BCH并行译码方法,其特征在于:按照数据冗余位的长度来配置纠错能力,其中纠错能力小于或等于数据冗余位的长度除以13后商的正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100245262A CN101488762B (zh) | 2009-02-10 | 2009-02-10 | 一种面积紧凑且快速的bch并行译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100245262A CN101488762B (zh) | 2009-02-10 | 2009-02-10 | 一种面积紧凑且快速的bch并行译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101488762A true CN101488762A (zh) | 2009-07-22 |
CN101488762B CN101488762B (zh) | 2011-01-12 |
Family
ID=40891469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100245262A Active CN101488762B (zh) | 2009-02-10 | 2009-02-10 | 一种面积紧凑且快速的bch并行译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101488762B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800560A (zh) * | 2010-03-17 | 2010-08-11 | 苏州国芯科技有限公司 | Flash控制器中BCH编译码的纠错能力扩展方法 |
CN102394662A (zh) * | 2011-10-27 | 2012-03-28 | 优能通信科技(杭州)有限公司 | 一种bch码的译码方法 |
CN103138770A (zh) * | 2010-01-12 | 2013-06-05 | 北京忆恒创源科技有限公司 | 有限域平方计算电路 |
CN105337619A (zh) * | 2014-06-09 | 2016-02-17 | 联想(北京)有限公司 | 一种bch码解码方法及装置 |
CN106067825A (zh) * | 2016-07-01 | 2016-11-02 | 建荣集成电路科技(珠海)有限公司 | Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法 |
CN106961283A (zh) * | 2017-03-31 | 2017-07-18 | 山东超越数控电子有限公司 | 一种基于bch译码器的ibm算法的优化方法 |
-
2009
- 2009-02-10 CN CN2009100245262A patent/CN101488762B/zh active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138770A (zh) * | 2010-01-12 | 2013-06-05 | 北京忆恒创源科技有限公司 | 有限域平方计算电路 |
CN101800560A (zh) * | 2010-03-17 | 2010-08-11 | 苏州国芯科技有限公司 | Flash控制器中BCH编译码的纠错能力扩展方法 |
CN101800560B (zh) * | 2010-03-17 | 2012-10-17 | 苏州国芯科技有限公司 | Flash控制器中BCH编译码的纠错能力扩展方法 |
CN102394662A (zh) * | 2011-10-27 | 2012-03-28 | 优能通信科技(杭州)有限公司 | 一种bch码的译码方法 |
CN105337619A (zh) * | 2014-06-09 | 2016-02-17 | 联想(北京)有限公司 | 一种bch码解码方法及装置 |
CN105337619B (zh) * | 2014-06-09 | 2019-07-26 | 联想(北京)有限公司 | 一种bch码解码方法及装置 |
CN106067825A (zh) * | 2016-07-01 | 2016-11-02 | 建荣集成电路科技(珠海)有限公司 | Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法 |
CN106961283A (zh) * | 2017-03-31 | 2017-07-18 | 山东超越数控电子有限公司 | 一种基于bch译码器的ibm算法的优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101488762B (zh) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101252361B (zh) | 一种支持预搜索的面积紧凑型bch并行译码电路 | |
US4845713A (en) | Method and apparatus for determining the coefficients of a locator polynomial | |
Lee | High-speed VLSI architecture for parallel Reed-Solomon decoder | |
US5107503A (en) | High bandwidth reed-solomon encoding, decoding and error correcting circuit | |
US4873688A (en) | High-speed real-time Reed-Solomon decoder | |
US5517509A (en) | Decoder for decoding ECC using Euclid's algorithm | |
US8812940B2 (en) | Programmable error correction capability for BCH codes | |
CN101488762B (zh) | 一种面积紧凑且快速的bch并行译码方法 | |
US20150222292A1 (en) | Multi-bit error correction method and apparatus based on a bch code and memory system | |
US5951677A (en) | Efficient hardware implementation of euclidean array processing in reed-solomon decoding | |
CN101277119B (zh) | 里德所罗门码解码器硬件复用方法及其低硬件复杂度解码装置 | |
US5535225A (en) | Time domain algebraic encoder/decoder | |
KR100260415B1 (ko) | 고속시리얼에러위치다항식계산회로 | |
US20170250710A1 (en) | Method and device for calculating a crc code in parallel | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN109756235A (zh) | 一种可配置的并行bch纠错编码方法 | |
EP1102406A2 (en) | Apparatus and method for decoding digital data | |
CN101425875B (zh) | 一种解码器 | |
US6735737B2 (en) | Error correction structures and methods | |
Hanumanthakari et al. | Design and analysis of high reliable fault tolerance subsystem for micro computer systems | |
EP0329775A1 (en) | High bandwidth reed-solomon encoding, decoding and error correcting circuit | |
US20090249162A1 (en) | Error correction system using the discrete fourier transform | |
Elsaid | Design and implementation of Reed-Solomon decoder using decomposed inversion less Berlekamp-Massey algorithm | |
KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
Fenn et al. | Improved algorithm for division over GF (2m) |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province Patentee after: Suzhou Guoxin Technology Co., Ltd. Address before: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province Patentee before: C*Core Technology (Suzhou) Co., Ltd. |