基于BM算法的BCH碼的譯碼硬件實(shí)現(xiàn)
3 硬件設(shè)計與實(shí)現(xiàn)
3.1 基于冪次的運(yùn)算方式
對表1進(jìn)行簡化,得到表2和表3:本文引用地址:http://www.ex-cimer.com/article/192083.htm
將運(yùn)算步驟都建立在域元素冪次運(yùn)算的基礎(chǔ)上,流程圖中的“*”,“/”,“+”運(yùn)算方式都會改變。例如:(1110)*(1111)mod(10011,這個為本原多項式)=1011010mod(10011)=0101,轉(zhuǎn)化成冪次后(1110)*(1111)→a12*a11=α23=α8,原來二進(jìn)制乘除法電路變?yōu)楹唵蝺绱蔚闹笖?shù)加法電路?!?”由原來的模二加運(yùn)算變成兩次查表和一次模二加運(yùn)算,例如,α12+α11→查表二(1l11)+(1110)=000l→查表三0001對應(yīng)α0,所以得到α12+αll=α0。在硬件實(shí)現(xiàn)中,表2,表3的第二列作為內(nèi)容存在FPGA的ROM中,第一列作為他們的地址。
3.2 整體譯碼結(jié)構(gòu)設(shè)計
以上是BCH譯碼器的整體結(jié)構(gòu)模塊圖,分四個模塊,下面介紹這四個模塊的功能:
(1)S_produce:根據(jù)接收碼字R(r0 r1 r2…r14),產(chǎn)生伴隨式S(s1,s2,s3,s4,s5,s6);
(2)dr:根據(jù)伴隨式S(s1,s2,s3,s4,s5,s6),產(chǎn)生位置差錯式D(dl,d2,d3);
(3)chien:以錢搜索的方式,根據(jù)位置差錯式D(d1,d2,d3),產(chǎn)生錯誤圖樣E(e0,el,e2…e14);
(4)shift_register:同步時鐘的功能,滿足chien產(chǎn)生e14時,r14恰好輸出:c14=r14+e14。
整個結(jié)構(gòu)中,dr這個模塊最為復(fù)雜,對應(yīng)整個BM算法。圖3是dr模塊圖。計算的功能,并將計算得到的△r值和前一狀態(tài)的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)),并將計算結(jié)果反饋給top_dr,作為當(dāng)前狀態(tài)的D(dl,d2,d3);control模塊完成控制整個模塊的時鐘同步。
4 仿真結(jié)果
我們選用了Xilinx公司的xc4v1x60,仿真環(huán)境是xilinxISE6.0,moddsim SE 5.5e,在布線后的時序報告中得到的系統(tǒng)可以在70MHz的時鐘上對信號進(jìn)行實(shí)時的處理。在時序仿真中我們選用了50MHz的時鐘,連續(xù)輸入兩幀數(shù)據(jù)(每幀數(shù)據(jù)15bit),一幀是正確的碼字(100010100110l1),一幀是錯誤的碼字(10001010001111),普通算法在延遲23個時鐘周期后輸出結(jié)果,簡化算法在延遲20個周期后輸出結(jié)果。根據(jù)譯碼速度計算公式:譯碼速率=(幀長*系統(tǒng)頻率)僻碼一幀所需要的時鐘周期數(shù),則兩種算法的譯碼速率分別為32Mbps,37Mbps。
5 結(jié)論
在本文中我們利用FPGA實(shí)現(xiàn)了基于BM迭代譯碼算法的BCH碼譯碼器,并根據(jù)FPGA塊ROM資源充足的的優(yōu)勢,采用基于冪次的運(yùn)算方式,合理地對.BM流程算法進(jìn)行模塊劃分,同時實(shí)現(xiàn)了簡化的BM算法,縮短了譯碼延遲,提高了整個譯碼器的譯碼速度。計算機(jī)仿真結(jié)果表明,本設(shè)計所實(shí)現(xiàn)的BCH譯碼性能基本滿足傳輸要求,為后續(xù)長BCH碼的硬件實(shí)現(xiàn)作了較好的鋪墊。
評論