买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明公开了一种基于BCH编码的快速ECC纠错电路,包括:encode模块、decode模块,其中decode模块由syndrome模块、BMA模块、chien模块串联组成。本发明采用缩短的系统BCH编码,给出了具体的BCH码参数选择方法、编码电路和解码电路的实现原理以及具体的电路计算框图。本发明给出的组合电路进行了实现算法和电路结构上的优化,去除了冗余的中间数据,需要的逻辑门数量少,组合延时合理,相比于时序电路实现的多周期运算,本发明只需要一个时钟周期就能完成,能够简化ECC内存的结构。
主权项:1.一种基于BCH编码的快速ECC纠错电路,其特征在于,包括:编码模块、解码模块,其中,解码模块由伴随式计算模块、错误位置多项式求解模块、钱搜索模块串联组成;所述编码模块对外部的输入数据ecc_enc_data进行BCH编码,输出BCH编码的校验位ecc_bit_enc;所述外部的输入数据ecc_enc_data与所述BCH编码的校验位ecc_bit_enc拼接在一起,写入ECC内存中;当外部需要读取ECC内存时,ECC内存将待纠错的原数据ecc_dec_in和数据校验位ecc_bit_data输入解码模块;待纠错的原数据ecc_dec_in和数据校验位ecc_bit_data顺序经过解码模块中的伴随式计算模块、错误位置多项式求解模块和钱搜索模块,得到BCH解码的数据和解码是否正确的标志位;所述伴随式计算模块将待纠错的原数据ecc_dec_in和数据校验位ecc_bit_data由左至右顺次拼接组成完整的接收数据,设完整的接收数据对应的多项式为recdx,所述完整的接收数据的每一位作为多项式recdx的对应项的系数;伴随式计算模块利用完整的接收数据对应的多项式recdx计算t个伴随式Si,i=1,3,5,...,2t-1,t表示目标可纠正的错误数量,并将t个伴随式Si传输给所述错误位置多项式求解模块;所述错误位置多项式求解模块输出错误位置多项式和预评估的错误数量给钱搜索模块;所述钱搜索模块输出BCH解码的数据和解码是否正确的标志位;所述编码模块对外部的输入数据ecc_enc_data进行BCH编码的方法为缩短的系统BCH编码,缩短的系统BCH编码方法如下:确定外部的输入数据ecc_enc_data的位宽N,以及目标可纠正的错误数量t;通过方程确定满足要求的m,令n=2m-1;确定BCH码的生成多项式gx,任意选择一个GF2上的m次本原多项式px,得到扩域GF2m,设其中的本原元为α,而扩域上任意一个元素αi的极小多项式为fix,得到生成多项式gx,gx=LCMf1x,f2x,...,f2tx,令k=n-deggx,得到BCH码的有效位宽k,k大于等于N;选择BCH码为n,k码,BCH码中单个码字长度为n,其中有效位宽为k,而BCH编码的校验位位宽为n-k;需要编码的N位外部的输入数据ecc_enc_data从高位到低位分别为iN-1,iN-2,...,i1,i0,外部的输入数据ecc_enc_data组成GF2上的多项式ix=iN-1xN-1+iN-2xN-2+...+i1x+i0,rx是BCH编码的校验位ecc_bit_enc对应的多项式,rx=ix·xn-kmodgx;由外部的输入数据ecc_enc_data编码得到的完整的BCH码为{k-N'b0,ecc_enc_data,ecc_bit_enc},rx=ix·xn-kmodgx证明rx满足degrx=deggx-1=n-k-1,因此对应的输出的BCH编码的校验位ecc_bit_enc位宽为n-k,去除前k-N位冗余的0,得到缩短的BCH码{ecc_enc_data,ecc_bit_enc},此时缩短的BCH码码长为N+n-k;所述输出BCH编码的校验位ecc_bit_enc,具体为:设BCH编码的校验位ecc_bit_enc从高位到低位分别为rn-k-1,rn-k-2,...,r1,r0,BCH编码的校验位ecc_bit_enc组成多项式rx=rn-k-1xn-k-1+rn-k-2xn-k-2+...+r1x+r0,rx由rx=ix·xn-kmodgx得到,从而得到BCH编码的校验位ecc_bit_enc;选择BCH编码的校验位ecc_bit_enc的最高位的下标为n-k-1是因为rx是通过mod运算得到的,所以degrx=deggx-1=n-k-1;所述伴随式计算模块利用完整的接收数据对应的多项式recdx计算t个伴随式Si,i=1,3,5,...,2t-1,t表示目标可纠正的错误数量,并将t个伴随式Si传输给所述错误位置多项式求解模块,具体为:Si=recdαi,i=1,3,5,...,2t-1,其中,α为扩域GF2m中的本原元,recdαi表示完整的接收数据对应的多项式recdx将α的i次方作为自变量时的函数值,运算在扩域GF2m中进行,所述的扩域GF2m与所述编码模块中的扩域相同;所述错误位置多项式求解模块计算错误位置多项式和预评估的错误数量的方法如下:设第r次迭代的错误位置多项式为σrx,第r次迭代的预评估的错误数量为lr+1,Si是指伴随式计算模块输出的伴随式,i=1,2,3,...,2t,其中i为2,4,...,2t时的Si没有被伴随式计算模块输出,需要通过S2i=Si2计算得到,其余未说明变量都为中间变量;初始化迭代数据,如果S1=0,令dp=1,σ0x=1+S1x=1,β1x=x3,l1=0;如果S1≠0,则令dp=S1,σ0x=1+S1x,β1x=x2,l1=1;最后令r=1;令σr-1i为σr-1x的i次项系数,i=0,1,...,t,t表示目标可纠正的错误数量,如果系数不存在则σr-1i取0;第1次迭代,计算d1=Σti=0σ0i·S2-i+1=σ00·S3+σ01·S2+σ02·S1,其中由于σ0x=1+S1x,因此σ00=1,σ01=S1,σ02=0,而S2=S12,因此最后d1=S3+S13;计算σ1x=dpσ0x-d1β1x;如果d1≠0且1≥l1,则令bsel=1,否则令bsel=0,再根据bsel的值进行下面的计算;如果bsel=1,则β2x=x2·σ0x,l2=2-l1+1,dp=d1,如果bsel=0,则β2x=x2·β1x,l2=l1,dp=dp;最后令r=2,进入下一轮迭代;进入第r次迭代时,r=1,2,...,t-1,计算dr=Σti=0σr-1i·S2r-i+1和σrx=dpσr-1x-drβrx,此时的dp是第r-1次迭代后计算得到的dp;接着如果dr≠0且r≥lr,则令bsel=1,否则令bsel=0,再根据bsel的值进行下面的计算;如果bsel=1,则βr+1x=x2·σr-1x,lr+1=2r-lr+1,dp=dr,如果bsel=0,则βr+1x=x2·βrx,lr+1=lr,dp=dp;最后令r=r+1,进入下一轮迭代;当最后一次迭代完成后,最后一次迭代即第t-1次迭代,得到的σt-1x就是求解得到的错误位置多项式,而预评估的错误数量为lt,lt表示第t-1次迭代的预评估的错误数量,也是最终输出给钱搜索模块的预评估的错误数量;所述钱搜索模块输出BCH解码的数据和解码是否正确的标志位前需先计算错误位置向量error,计算错误位置向量error的方法如下:将扩域GF2m中的元素αi代入错误位置多项式来确定错误位置多项式在扩域GF2m中的根,如果扩域GF2m中的元素αi代入错误位置多项式后得到的σαi=0,说明αi是σx在扩域GF2m中的一个根,从而说明在接收到的BCH码的第n-i位出现了错误,i=k-N+1,k-N+2,...,n,此时令error[n-i]=1,表明此位出错;若σαi≠0,则令error[n-i]=0,表示此位正确;对于每一个i都进行此操作,则得到错误位置向量error,错误位置向量error长度为n,但此处仅计算n-k+N位,因为BCH编码时去除前k-N位冗余的0,因此错误位置向量error的前k-N位不需要计算,最后计算得到的错误位置向量的长度为n-k+N;所述钱搜索模块输出BCH解码的数据和解码是否正确的标志位,具体为:若错误位置多项式的根的数量与预评估的错误数量相等,则进行纠正,将输出错误位置向量error与{ecc_dec_in,ecc_bit_data}按位异或,并选择待纠错的原数据ecc_dec_in所在位对应的数据作为纠正后的数据,纠正后的数据即为所述的BCH解码的数据,并将解码是否正确的标志位置1;若错误位置多项式的根的数量与预评估的错误数量不相等,将待纠错的原数据ecc_dec_in赋值给BCH解码的数据并输出,并将解码是否正确的标志位置0,表示检测到出错,但是没有纠错。
全文数据:
权利要求:
百度查询: 浙江大学 一种基于BCH编码的快速ECC纠错电路
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。