基于BM算法的BCH碼的譯碼硬件實現
3 硬件設計與實現
3.1 基于冪次的運算方式
對表1進行簡化,得到表2和表3:本文引用地址:http://m.butianyuan.cn/article/192083.htm
將運算步驟都建立在域元素冪次運算的基礎上,流程圖中的“*”,“/”,“+”運算方式都會改變。例如:(1110)*(1111)mod(10011,這個為本原多項式)=1011010mod(10011)=0101,轉化成冪次后(1110)*(1111)→a12*a11=α23=α8,原來二進制乘除法電路變?yōu)楹唵蝺绱蔚闹笖导臃娐??!?”由原來的模二加運算變成兩次查表和一次模二加運算,例如,α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值和前一狀態(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)),并將計算結果反饋給top_dr,作為當前狀態(tài)的D(dl,d2,d3);control模塊完成控制整個模塊的時鐘同步。
4 仿真結果
我們選用了Xilinx公司的xc4v1x60,仿真環(huán)境是xilinxISE6.0,moddsim SE 5.5e,在布線后的時序報告中得到的系統(tǒng)可以在70MHz的時鐘上對信號進行實時的處理。在時序仿真中我們選用了50MHz的時鐘,連續(xù)輸入兩幀數據(每幀數據15bit),一幀是正確的碼字(100010100110l1),一幀是錯誤的碼字(10001010001111),普通算法在延遲23個時鐘周期后輸出結果,簡化算法在延遲20個周期后輸出結果。根據譯碼速度計算公式:譯碼速率=(幀長*系統(tǒng)頻率)僻碼一幀所需要的時鐘周期數,則兩種算法的譯碼速率分別為32Mbps,37Mbps。
5 結論
在本文中我們利用FPGA實現了基于BM迭代譯碼算法的BCH碼譯碼器,并根據FPGA塊ROM資源充足的的優(yōu)勢,采用基于冪次的運算方式,合理地對.BM流程算法進行模塊劃分,同時實現了簡化的BM算法,縮短了譯碼延遲,提高了整個譯碼器的譯碼速度。計算機仿真結果表明,本設計所實現的BCH譯碼性能基本滿足傳輸要求,為后續(xù)長BCH碼的硬件實現作了較好的鋪墊。
評論