- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于BM算法的BCH码的译码硬件实现
摘要:BCH码是一种理论上比较成熟的代数码型,在电力通信系统,GSM标准的语音和数据业务,以及卫星通信和数字广播通信(DVB-S2)等多个领域均有着广泛的应用。基于幂次运算,在线性反馈移位寄存器(LFSR)下实现了基于Berlekamp―Massey(BM)时域迭代译码算法的整个译码器构架,以及BM简化算法的硬件设计。通过计算机模拟仿真表明,两种算法的译码速率分别可达到32 Mbps,37Mbps。
关键词:BM迭代简化算法;FPGA;译码器构架
O 引言
BCH码是1959年由Hocquenghem,1960年由Bose和Chandhari分别独立提出的一种能纠正多个随机错误的循环码,该码有严格的代数结构,具有纠错能力可控,在中短码长情况下性能接近理论最佳值等优点,并且构造方便,编码简单,是实际使用最广泛的码型之一。
1960年Peterson从理论上解决了二进制BCH码的译码算法,奠定了BCH码译玛的理论基础。随后,Gorensten和Zierler把它推广到高阶有限域中。1966年Berlekamp提出了迭代译码算法,Maxsey从线性反馈寄存器的角度对该算法进行描述,不仅使算法硬件实现成为可能,也大大提高了译码速度,从实际上解决了BCH码的译码问题。鉴于FP―GA具有较大块RAM,本文以(15,5)BCH码为例说明如何将BM迭代算法,以及后面的chien搜索都建立在有限域上进行运算,用域元素的幂次运算代替原来的乘和除操作,从而节约了逻辑单元(slice)资源。文献已经给出了普通BM译码算法的流程图,本文根据二元BCH码的特点给出了简化的BM算法流程图。
1 BM算法介绍
1.1 有限域知识介绍
BCH码是在有限域中进行运算的,详细的有限域知识参考文献。
以本文设计的BCH码为例,p(x)=x4+x1+1是GF(2)上的本原多项式。令α为本原多项式的根,m=4,则由{l,α,α2,α3}中元素的线性组合可表示GF(24)上的所有非零元素{α0,α1,α2,…,α14},这些非零元素构成一个循环群如表l所示。最后一行是为了运算的需要,人为加上去的,表示“无”这种状态。
1.2 经典BM算法
普通的译码算法都可分为如下三步:
(1)由接收码字R(x)计算伴随式S(x).(用除法电路)
(2)由伴随式S(x)求差错图样E(x).(用各种译码方式)
(3)由差错图样E(x)求得译出码字C(x).(用关系式C(x)=R(x)一E(x))
上面的(1)(3)步是固定关系式的运算,相对容易,最关键的是第(2)步。1966年,Berlekamp针对关键方程式S(x)D(x)≡ω(x)(mod x2t+1)的求解(这里的D(x)为错误位置多项式),提出一种复杂度随纠错数目线性增加的迭代算法,而Massey对Berlekamp算法作为设计自回归滤波器的过程进行了重新的推导,采用反馈移位寄存器来完成关键方程的计算。自此以后这种译码算法被称为BM迭代译码算法,其算法流程图参考文献。
2 二元域下的简化算法
经典的BM算法流程适合任何有限域的BCH码,对于GF(2),我们可以证明当r为偶数时,△r为0[2],此时迭代可以省略。通过对经典BM算法流程图的改进,得到下图l,即GF(2)上的简化BM算法流程图。
其中,Sn为伴随式,D(x)为错误位置多项式,B(x)为多项式修正项,△代表差值即下一个伴随式与由当前错误位置多项式表示的移位寄存器所产生的值之间的差值,L为移位寄存器的当前长度。
[p]
3 硬件设计与实现
3.1 基于幂次的运算方式
对表1进行简化,得到表2和表3:
将运算步骤都建立在域元素幂次运算的基础上,流程图中的“*”,“/”,“+”运算方式都会改变。例如:(1110)*(1111)mod(10011,这个为本原多项式)=1011010mod(10011)=0101,转化成幂次后(1110)*(1111)→a12*a11=α23=α8,原来二进制乘除法电路变为简单幂次的指数加法电路。“+”由原来的模二加运算变成两次查表和一次模二加运算,例如,α12+α11→查表二(1l11)+(1110)=000l→查表三0001对应α0,所以得到α12+αll=α0。在硬件实现中,表2,表3的第二列作为内容存在FPGA的ROM中,第一列作为他们的地址。
3.2 整体译码结构设计
以上是BCH译码器的整体结构模块图,分四个模块,下面介绍这四个模块的功能:
(1)S_produce:根据接收码字R(r0 r1 r2…r14),产生伴随式S(s1,s2,s3,s4,s5,s6);
(2)dr:根据伴随式S(s1,s2,s3,s4,s5,s6),产生位置差错式D(dl,d2,d3);
(3)chien:以钱搜索的方式,根据位置差错式D(d1,d2,d3),产生错误图样E(e0,el,e2…e14);
(4)shift_register:同步时钟的功能,满足chien产生e14时,r14恰好输出:c14=r14+e14。
整个结构中,dr这个模块最为复杂,对应整个BM算法。图3是dr模块图。计算的功能,并将计算得到的△r值和前一状态的D(dl,d2,d3)传给T_updata,和B_updata这两个模块;B_updata完成B(x)更新的功能(B(x)一xB(x)或B(x)一△-1nd(x)),将值传给T_updata;T_updata完成T(x)更新的功能(T(x)=d(x)一△rxB(x)),并将计算结果反馈给top_dr,作为当前状态的D(dl,d2,d3);control模块完成控制整个模块的时钟同步。
4 仿真结果
我们选用了Xilinx公司的xc4v1x60,仿真环境是xilinxISE6.0,moddsim SE 5.5e,在布线后的时序报告中得到的系统可以在70MHz的时钟上对信号进行实时的处理。在时序仿真中我们选用了50MHz的时钟,连续输入两帧数据(每帧数据15bit),一帧是正确的码字(100010100110l1),一帧是错误的码字(10001010001111),普通算法在延迟23个时钟周期后输出结果,简化算法在延迟20个周期后输出结果。根据译码速度计算公式:译码速率=(帧长*系统频率)僻码一帧所需要的时钟周期数,则两种算法的译码速率分别为32Mbps,37Mbps。
5 结论
在本文中我们利用FPGA实现了基于BM迭代译码算法的BCH码译码器,并根据FPGA块ROM资源充足的的优势,采用基于幂次的运算方式,合理地对.BM流程算法进行模块划分,同时实现了简化的BM算法,缩短了译码延迟,提高了整个译码器的译码速度。计算机仿真结果表明,本设计所实现的BCH译码性能基本满足传输要求,为后续长BCH码的硬件实现作了较好的铺垫。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤顭烽獮鎴﹀礋椤掑倻鎳濆銈嗙墬绾板秴鈻嶆繝鍥ㄢ拻濞撴埃鍋撴繛浣冲洦鏅煫鍥ㄧ☉閻掑灚銇勯幒鎴濐仼闁藉啰鍠栭弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝宥夊Φ閸曨垰鍐€闁靛⿵濡囧▓銈嗙節閳封偓閸曨剛顦伴梺鍝勭焿缂嶄線鐛Ο鍏煎枂闁告洦鍘归埀顒€锕娲偡閺夋寧些濡炪倖鍨甸ˇ鐢稿Υ娴e壊娼ㄩ柍褜鍓熼獮鍐閵堝懎绐涙繝鐢靛Т鐎氼厼鈻撻鍓х=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炵闁挎洍鍋撶紒鐙€鍨堕弻銊╂偆閸屾稑顏� | More...
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤顭烽獮鎴﹀礋椤掑倻鎳濆銈嗙墬绾板秴鈻嶆繝鍥ㄢ拻濞撴埃鍋撴繛浣冲洦鏅煫鍥ㄧ☉閻掑灚銇勯幒鎴濐仼闁藉啰鍠栭弻鏇㈠醇濠垫劖效闂佺ǹ顑冮崝宥夊Φ閸曨垰鍐€闁靛鍎崑鎾诲冀椤愮喎浜炬慨妯煎亾鐎氾拷婵犵數濮烽弫鎼佸磻閻愬搫鍨傞柛顐f礀缁犲綊鏌嶉崫鍕櫣闁稿被鍔戦弻锝夊箛闂堟稑鈷掑┑鐐茬墔缁瑩寮婚妸鈺傚亞闁稿本绋戦锟�闂傚倸鍊搁崐鐑芥嚄閸撲焦鍏滈柛顐f礀閻ょ偓绻濋棃娑卞剭闁逞屽厸閻掞妇鎹㈠┑瀣倞闁肩ǹ鐏氬▍鎾绘⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鈾€鎸冮梺鍛婃处閸忔稓鎹㈤崱娑欑厪闁割偅绻冮崳瑙勩亜韫囨挾鎽犲ǎ鍥э躬椤㈡洟顢楁担鍓蹭紦
闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箛椤旇棄搴婇梺褰掑亰閸犳帡宕戦幘鎰佹僵妞ゆ劑鍨圭粊顕€姊洪棃娑欘棞闁稿﹤鐏濋悾閿嬬附缁嬪灝宓嗛梺缁樺姈椤旀牕危濞差亝鐓熼柣鏂挎憸閻苯顭胯椤ㄥ牓寮鈧獮鎺楀籍閳ь剟寮冲⿰鍫熺厵闁诡垱婢樿闂佺粯鎸鹃崰鎰板Φ閸曨垼鏁冩い鎰╁灩缁犺崵绱撴担鐤厡闁稿繑锕㈠濠氭晲婢舵ɑ鏅i梺缁樺姈缁佹挳骞愰崘顔解拺闁荤喐婢樺Σ缁樸亜閹存繍妯€闁绘侗鍣i獮瀣晝閳ь剛绮诲☉銏♀拻闁割偆鍠撻埊鏇㈡煕婵犲倿鍙勬慨濠勭帛閹峰懘鎼归獮搴撳亾婵犲洦鐓涢柛娑卞枤缁犵偤鏌曢崱鏇犲妽缂佺粯绻堝畷鍫曟嚋閸偅鐝﹂梻鍌欑閹测€趁洪敃鍌氬偍闁伙絽澶囬崑鎾愁潩椤撶偛鎽甸梺鍝勬湰閻╊垶鐛Ο渚富閻犲洩寮撴竟鏇㈡⒒娴e憡鎯堥柣顓烆樀楠炲繘鏁撻敓锟�
闂傚倸鍊搁崐椋庣矆娴h櫣绀婂┑鐘插€寸紓姘辨喐閺冨牄鈧線寮介鐐茶€垮┑锛勫仧缁垶寮悩缁樷拺闂侇偆鍋涢懟顖涙櫠椤斿浜滄い鎾跺仦閸嬨儳鈧娲滈幊鎾诲煡婢跺ň鏋庨柟閭﹀枛缁插潡姊婚崒娆戝妽闁诡喖鐖煎畷鎰板即閻忚缍婇幃婊堟寠婢跺矈鍞甸梺璇插嚱缂嶅棝宕伴弽顐や笉闁哄被鍎查悡娆徝归悡搴f憼婵炴嚪鍥ㄧ厵妞ゆ棁宕电粣鏃€鎱ㄦ繝鍛仩闁告牗鐗犲鎾偄閸濄儱绲垮┑锛勫亼閸婃垿宕硅ぐ鎺撴櫇妞ゅ繐鐗勯埀顑跨閳诲酣骞樺畷鍥舵Ч婵$偑鍊栭幐楣冨窗鎼淬劍鍋熷ù鐓庣摠閳锋垿鏌涘☉姗堟敾閻庡灚鐟╅弻宥堫檨闁告挾鍠庨锝嗙節濮橆厽娅㈤梺璺ㄥ櫐閹凤拷
婵犵數濮烽弫鍛婃叏娴兼潙鍨傜憸鐗堝笚閸婂爼鏌涢鐘插姎闁汇倗鍋撶换婵嬫濞戝崬鍓伴梺鍛婅壘缂嶅﹪鐛弽銊︾秶闁告挆鍚锋垶绻濆▓鍨仩闁靛牊鎮傚濠氭偄閻戞ê鏋傞梺鍛婃处閸嬪嫯顤傞梻鍌欑閹诧繝宕洪崘顔肩;闁瑰墽绮悡鐔煎箹濞n剙鈧倕岣块幇鐗堢厵妞ゆ棁鍋愰崺锝団偓瑙勬礃濞茬喖鐛惔銊﹀癄濠㈣泛鑻獮鎺楁⒒娴gǹ鎮戠紒浣规尦瀵彃饪伴崼婵囪緢濠电姴锕ら悧濠囨偂閺囩喆浜滈柟鏉垮閹偐绱掗悩绛硅€块柡灞剧☉椤繈顢橀悩鍐叉珰闂備浇顕栭崰娑綖婢跺瞼绠旈柣鏃傚帶閻愬﹦鎲稿鍥╀笉闁荤喖鍋婂〒濠氭煏閸繂鏆欏┑锛勬櫕缁辨帡顢欐總绋垮及濡ょ姷鍋涢ˇ顖濈亙闂佸憡渚楅崰妤€鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�