一种缩短循环码纠错译码算法的集成电路实现方法及电路的制作方法

文档序号:7510905阅读:350来源:国知局
专利名称:一种缩短循环码纠错译码算法的集成电路实现方法及电路的制作方法
技术领域
本发明涉及编解码和集成电路技术,特别涉及一种缩短循环码的纠错译码算法的集成电路(ASIC)实现方法及其电路。
其中实现最复杂的是第2、3两个步骤,下面是两种常见的实现方法

图1为经典译码算法的实现方案原理图。这种算法为经典的BCH码译码算法,对于码字长度很短的情况,这种方法能够很好的译码,而且对于非高速系统也能很好的运用,这种译码算法的思想是通过输入的码流计算出伴随式S,在计算伴随式的时候,如果采用的译码码字为原码,那么,只要按照几个生成多项式的表达式,对其进行求余,并作简单的替换即可完成伴随式的计算(参见 王新梅 《纠错码--原理和方法》西安电子科技大学出版社,1996),计算完成伴随式之后,通过迭代译码算法利用LFSR作迭代运算,即可得到错误位置多项式,最后通过解错误位置多项式的根可以计算出错误位置,计算出an-i是错误位置数,那么码字中第n-i位置错误的,将其与1进行异或进行纠错。
对于图1方案,采用的是经典的BCH-3译码算法,由伴随式计算错误位置多项式的时候通过迭代方法一步一步的进行迭代而得到错误位置多项式,这种方法不仅在算法上显得非常烦琐,而且运用迭代译码算法的结果是使得每作一步迭代需要运算较长时间。在求出错误位置多项以后,经过解方程的方法求出错误位置,然后进行纠错,这种方法虽然实现起来在硬件资源上不是太多浪费,但是其在作迭代算法时采用线性反馈移位寄存器的方案要得到实现,延时却非常大,这在高速系统中无法运用。
图2为在伴随式计算错误位置多项式上有所改进的方案。
此方案在由伴随式计算错误位置多项式的实现上作了改进(参见KraftBCH error-location polynomial decoder,1994),此方案的目的是为了提高速率,但是在计算中间变量的时候,大量的使用乘法和除法运算,对于有限域上的乘法和除法,要用ASIC来实现是有很大困难的,尤其是对于除法电路,因此这种实现方法的乘除法的实现是通过ROM存储的方式,通过ROM寻址来得到乘除法的结果的,这对于码字较短的码流来说,对于提高速率具有很好的效果,但是如果码字的长度很长,比如本例的4359,那么用这种方法来实现所需要的ROM(Read Only Memory只读存储器)将是非常大的,对于资源来说显得过于浪费。
图2的实现方法主要在由伴随式计算错误位置多项式的一步有所改进,但是在计算判决向量a、b、c和δ1、δ3、δ5用到了大量的乘除法运算,这些乘除法运算都是通过ROM寻址来得到乘除法的结果的,因此采用此方法对于较大数据流的纠错是非常浪费的,比如实现有限域GF(213)来说,首先将有限域上的各个元素的次幂和各次幂对应的有限域上的值进行存储,然后在作乘法时先将两个元素的指数相加,得到一个指数,根据这个指数再到存储值的ROM查到结果,这种方法虽然从根本上解决了计算δ的速度,但是在资源上形成了很大浪费。
综上所述,上述译玛算法的实现电路复杂,延时大,运算速度低,在电路资源上存在一定浪费。
本发明提出的高效BCH译码算法的ASIC实现方法,包括如下步骤a、由伴随式计算单元根据输入码字R(x)计算伴随式S(x);b、将步骤a所述的各个伴随式S(x)分别送入相应的伴随式修正单元进行修正,得到修正后的伴随式系数P(x);c、将步骤b所述的各个伴随式系数P(x)输入错误位置定位单元,根据条件判别式如P13(1+P1+P13)+P3(1+P1+P12+P13+P3)+P5(1+P1)=0]]>分析判断,在错误发生的地方错误位置定位单元输出纠错比特E(x);d、将步骤c所述的纠错比特E(x)和通过K级缓冲器的信息码元R(x)进行异或运算,输出纠错后的码元V(x)。
实现本发明方法的电路,包括输入码元R(x)的K级缓存器、若干伴随式S(x)计算单元以及异或运算电路,异或运算电路的一个输入端接K级缓存器输出,其特征在于还包括与伴随式S(x)相应的伴随式修正单元;以及一个错误位置定位单元,它的输出连接异或运算电路的另一个输入端,根据输入的各个伴随式系数P(x)分析判断,在错误发生的地方输出纠错比特E(x)再通过异或运算电路输出纠正后的码元V(x)。
现有技术在计算错误位置的时候,一般都是先由计算出的伴随式解出错误位置多项式,然后通过Chien搜索算法来求得错误位置,本发明巧妙利用循环码中的牛顿恒等式,直接有伴随式就得到了错误位置,完成错误位置的定位,这种计算采用组合逻辑并行实现了乘法的运算,在速度上加快了计算速度,而且由于直接由伴随式就计算输出错误位置,这样将错误位置多项式的求出和Chien搜索算法用一个电路来实现,解决了现有现有译码算法电路运算速度不高,延时过大的问题,ASIC实现方案使硬件资源大大节省。
本发明经过RTL级代码仿真,验证,证明确实有效,工作正确。
本发明巧妙利用循环码中的牛顿恒等式,直接有伴随式就得到了错误位置,完成错误位置的定位,这种计算采用组合逻辑并行实现了乘法的运算,在速度上加快了计算速度,而且由于直接由伴随式就计算输出错误位置,这样将错误位置多项式的求出和Chien搜索算法用一个电路来实现,在资源上也是大大的节省。
对于循环码的伴随式,有如下牛顿恒等式S1-δ1=0S3-δ1S2+δ2S1-3δ3=0S5-δ1S4+δ2S3-δ3S2+δ4S1-5δ5=0可以解得行列式θ=111.......1S110.......0S3S21.......0S5S4S3S2....0=11.....1B.....A]]>A=100S2S11S4S3S2B=S1S3S5]]>可以将错误图样分为三类没有出现错误E(x)={0000...0000}出现一个错误E(x)={100......000,0100....000,00100....000,...000....001}出现两个错误E(x)={1100...000,01100...000,001010...000,...00...0011}出现三个错误E(x)={11100...00,01110...000,0010110...000,...00...0111}
这样可以得到下面的S判别式没有错误时S1=0、S3=0、S5=0对于BCH-3,当出现一个错误时|A|=0可以解得S3=S13]]>当有两个或三个错误出现时|A|≠0但是θ=0。
错误个数大于三个时,伴随式计算电路实效,纠错会出现判断不对的情况,将出现乱纠错,但是通过仿真发现当错误大于三个以上时,出现乱纠错的概率大概是1/(!N)(其中N为加入的错误数)。对于光纤通信信道来说,其本身出现错误的概率就比较小,所以出现BCH译码失效乱纠错的情况也是几乎不可能发生的,因此在光纤传输网络中一般只考虑对电路进行纠错,而不对电路进行错误多少的判断。下面就是具体的实现方案,以缩短码(4359,4320)的译码方法为例介绍本发明对于原码来说不需要作计算伴随式和错误位置时的修正,直接即可实现,因此主要针对缩短码进行介绍,此也为本发明对BCH-3进行解码的一个主要优点。下面仔细进行论述。
1、伴随式计算对于二进制BCH的解码,只需要求出S1、S3......S2t-1即可完成纠错电路的纠错功能。因此只对S1、S3......S2t-1(t为纠错能力,本例t为3)进行计算。
本例所用到的码字为(213=8192)的缩短码,缩短位数为8192-4359=3833位,所以在计算伴随式时相当于前面3833位全为“0”,也就相当于在计算伴随式之前首先乘以x3833,然后再作伴随式的计算,由于计算伴随式时相当于R(x)/m(x)的模,其中
m1(x)=x13+x4+x3+x+1m3(x)=x13+x10+x9+x7+x5+x4+1m5(x)=x13+x11+x8+x7+x4+x+1在计算时乘以x3833相当于乘以x1mod(3833/11),乘以x11的示意图,首先计算S1。图5为伴随式S1的计算电路实例,由本原多项式可以得到伴随式的计算电路.它由寄存器D0-D12和四个异或电路组成,寄存器D11、D12和D0依次串接,寄存器D1和D2串接,寄存器D4--D10依次串接,异或电路1接于D0和D1之间,异或电路2接于D2和D3之间,异或电路3接于D3和D4之间,异或电路4接于D10和D11之间,异或电路1、2、3的另一个输入端均接寄存器D12的输出,输入码流R(x)接于异或电路4的另一个输入端,经过4320个循环周期之后,寄存器D12-D0内存储的值就是伴随式向量的值。
计算S3和S5采用同样的方法完成,只是经过4320的循环周期之后,还必须对寄存器中的值进行处理之后才能得到伴随式S3和S5的值。其变换规则根据有限域乘除法概念可以轻松实现,在此不作详述。
2.乘于a3821实现电路因为每一个错误图样都分别对应一组伴随式S1、S3、S5,而且它们之间的关系是由其中某一组伴随式无输入循环移位都可以得到另外的伴随式。在由伴随式计算错误位置的时候,因为是缩短码,错误位置的出现比原码要晚3833-11=3822cycle,所以在由伴随式计算错误位置的时候需要乘以一个修正因子a3822(a为有限域上的元素),因为在计算错误位置的时候至少需要一个时钟的延时(本发明按照一个时钟周期延时为例),所以纠错码元输出延时一个时钟周期,这样作通过乘以修正因子a3821即可得到伴随式的值,可使缩短码错误位置根据实际延时需求输出,纠错正常。注意上面谈到的乘(除)法都是有限域上的乘(除)法,根据有限域上的乘法概念,即可用组合逻辑实现乘法,乘以a3821的具体实现电路如图6所示。图6所示的p12-p0为修正后伴随式系数,该电路由13个异或运算单元(XOR)组成,13个异或运算单元的输出分别为P12-P0,伴随式S12-S0连接所述13个异或运算单元的相应输入端。乘于a3272、a2723方法相同,不再详细阐述。
P与S的关系P1=S1a3821、P3=S3a3272、P5=S5a2723在进行错误位置定位的时候,每一个时钟Pi(i=1、3、5)分别乘于ai,然后通过下面的判决条件即可在错误发生的地方输出纠错比特,让纠错比特和信息码元进行异或即完成了错误码元的纠正。通过牛顿恒等式,在进行纠错比特计算时可以得到相应下面相应的行列式θ′=111.......1P110.......0P3P21......0P5P4P3P2....0=11......1B..A]]>对于BCH-3,当出现一个错误时|A|=0可以解得P3=P13]]>P1=1当有两个或三个错误出现时|A|≠0 但是θ′=0,亦即P3≠P13]]>,可以通过解行列式得到产生三个错误的条件P13(1+P1+P13)+P3(1+P1+P12+P13+P3)+P5(1+P1)=0]]>3、纠错的电路的实现每一个时钟周期都可以通过计算得到一组P1、P3、P5,根据上面的关系式就可以得到相应的纠错比特。在计算过程中需要求解13位二进制数的有限域上的平方以及乘法,根据二进制数有限域上的乘法概念,可以简化平方电路的算法而不必使用乘法电路来实现平方电路,通过综合发现凭此方法实现的平方电路大概只有平方电路1/10的面积大小,下面就是P12的实现过程
设P1=a12a12+a11a11+a10a10+......+a1a+a0,则根据二进制数的加法概念,两个相同的数相加结果为0,可以得到P1·P1=a12a24+a11a22+a10a20+....+a1a2+a0,依据二进制数有限域上乘法的概念,依据下表可以将ai(i>12)的元素用次数小于12的元素来表示,于是可以得到P12相对于P1作如下变换得到a12→a12+a11+a6a11→a12+a10a10→a11+a10+a5a9→a11+a9a8→a10+a9+a4a7→a10+a8a6→a12+a9+a8+a3a5→a9+a7a4→a12+a11+a8+a7+a2a3→a12+a11+a8a2→a7+a1a1→a12+a11+a7a0→a11+a0根据上面的变换可以得到平方电路的实现电路图7,该电路由13个异或运算单元(XOR)组成,修正后伴随式系数P12-P0接所述13个异或运算单元的相应输入端。逐一计算出条件表达式的各个条件以后,根据结果,条件为真产生纠错比特1,与信息码元作异或就可完成二进码的纠错。如果条件不成立,则纠错比特不可能出现。
本发明经过RTL级代码仿真,验证,效果理想。其运算速度、资源的利用情况与现有技术对比如表一。
表一

表一中t表示最大能纠正的错误个数 n表示信息比特+校验比特k表示码字的信息比特,需纠错比特m=log2n。
权利要求
1.一种高效BCH译码算法的ASIC实现方法,其特征在于包括如下步骤a、由伴随式计算单元根据输入码字R(x)计算伴随式S(x);b、将步骤a所述的各个伴随式S(x)分别送入相应的伴随式修正单元进行修正,得到修正后的伴随式系数P(x);c、将步骤b所述的各个伴随式系数P(x)输入错误位置定位单元,根据条件判别式如P13(1+P1+P13)+P3(1+P1+P12+P13+P3)+P5(1+P1)=0]]>分析判断,在错误发生的地方错误位置定位单元输出纠错比特E(x);d、将步骤c所述的纠错比特E(x)和通过K级缓冲器的信息码元R(x)进行异或运算,输出纠错后的码元V(x)。
2.实现权利要求1所述方法的电路,包括输入码元R(x)的K级缓存器,若干伴随式S(x)计算单元以及异或运算电路,异或运算电路的一个输入端接K级缓存器输出,其特征在于还包括与伴随式S(x)相应的伴随式修正单元;以及一个错误位置定位单元,它的输出连接异或运算电路的另一个输入端,根据输入的各个伴随式系数P(x)分析判断,在错误发生的地方输出纠错比特E(x)再通过异或运算电路输出纠正后的码元V(x)。
3.根据权利要求2所述的电路,其特征在于所述的伴随式修正单元中采用了并行的组合逻辑乘法电路。
4.根据权利要求3所述的电路,其特征在于所述的组合逻辑乘法电路由13个异或运算单元(XOR)组成,13个异或运算单元的输出分别为修正后伴随式系数P12-P0,伴随式S12-S0连接所述13个异或运算单元的相应输入端。
5.根据权利要求2所述的电路,其特征在于所述的错误位置定位单元中采用了简化平方电路。
6.根据权利要求5所述的电路,其特征在于所述的简化平方电路由13个异或运算单元(XOR)组成,修正后伴随式系数P12-P0连接所述13个异或运算单元的相应输入端。
全文摘要
本发明涉及一种缩短循环码纠错译码算法的集成电路实现方法及电路,其包括如下步骤a、由伴随式计算单元根据输入码字R(x)计算伴随式S(x);b、将所述的各个伴随式S(x)分别送入相应的伴随式修正单元进行修正,得到修正后的伴随式系数P(x);c、将所述各个伴随式系数P(x)输入错误位置定位单元,根据条件判别式分析判断,在错误发生的地方错误位置定位单元输出纠错比特E(x);d、将所述的纠错比特E(x)和通过K级缓冲器的信息码元R(x)进行异或运算,输出纠错后的码元V(x)。其电路包括缓存器、若干伴随式S(x)计算单元、相应的伴随式修正单元、异或运算电路以及一个错误位置定位单元。
文档编号H03M13/15GK1411151SQ0113329
公开日2003年4月16日 申请日期2001年9月27日 优先权日2001年9月27日
发明者何志阔 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1