文獻標識碼: A
文章編號: 0258-7998(2013)12-0058-03
為了保證實時通信業(yè)務的服務質(zhì)量,降低誤碼率,在數(shù)據(jù)傳輸中采用糾錯編碼的方式使其有一定的糾錯能力[1]。低差錯率的信道編碼是提高無線通信可靠性和有效性的關(guān)鍵技術(shù)之一,也是無線通信領(lǐng)域的研究熱點之一。研究人員對信道編碼進行了大量研究,其中,Turbo碼和LDPC碼以其最接近香農(nóng)極限的性能受到了通信界的廣泛關(guān)注。與Turbo碼相比,LDPC碼沒有錯誤平層,且迭代譯碼的復雜度低。此外,LDPC碼本身具有抗突發(fā)差錯的特性,不需要引入交織器,避免了交織過程帶來的時延。因此,LDPC碼在未來移動通信系統(tǒng)中具有良好的應用前景。
由于LDPC碼的軟判決譯碼算法[2]中消息計算量比較大,且消息互聯(lián)比較復雜,因此采用軟件的方式實現(xiàn)LDPC碼的譯碼難以滿足現(xiàn)代通信系統(tǒng)中對較高傳輸速率的要求,如WiMAX系統(tǒng)中要求最高可以提供75 Mb/s的傳輸速率[3]。相比于軟件的實現(xiàn)方式,采用硬件實現(xiàn)能夠很好地利用算法本身的并行性,從而提高譯碼效率。
1 LDPC碼的TDMP譯碼算法
TDMP譯碼算法首先更新一層校驗節(jié)點消息,然后更新的校驗節(jié)點消息立即用來更新該層對應的變量節(jié)點消息,這個過程叫做子迭代。每一層子迭代更新的變量節(jié)點消息立即用于下一層子迭代過程中校驗結(jié)點消息更新計算。以此類推,當所有的層都完成了校驗結(jié)點和變量結(jié)點的消息更新后,就算完成了一次迭代過程。完整的TDMP譯碼算法執(zhí)行過程如下:
2 LDPC碼譯碼器結(jié)構(gòu)設計
根據(jù)IEEE 802.16e標準[4]中定義的LDPC碼特點,可以把校驗矩陣中每一行劃分為一個子校驗矩陣。按這樣的劃分,每個子矩陣的列重均小于1,可保證每個子校驗矩陣的各行消息同時計算。由于標準中定義的LDPC碼擴展因子z(即子矩陣行數(shù))為24~96,因此,為了在不增加后驗消息與計算單元之間映射復雜度的情況下實現(xiàn)標準中定義的所有碼長的LDPC碼譯碼,本設計將并行度定為96(即96個消息運算單元)。為了減少硬件資源和存儲訪問的沖突,每一行的消息計算采用串行流水實現(xiàn)。
本文設計的LDPC碼譯碼器要求在保持較好吞吐量的同時具有較高的靈活性,能夠支持IEEE802.16e標準所定義的6種碼率、19種碼長的LDPC碼譯碼。
本文提出的譯碼器整體結(jié)構(gòu)如圖1所示。該譯碼器主要包括6個單元:總體控制單元、校驗矩陣存儲單元、迭代結(jié)果存儲單元、消息置換網(wǎng)絡單元、消息處理單元和迭代結(jié)果檢測單元。
2.1 總體控制單元
總體控制單元是整個譯碼器的調(diào)度中心,其主要完成如下控制:控制校驗矩陣的更新;控制信道消息輸入和譯碼結(jié)果輸出;在消息迭代更新過程中,控制對上一次子迭代過程得到后驗消息的讀操作,以及本次子迭代過程得到后驗消息的寫操作;控制本次子迭代過程中消息的更新計算;控制上次迭代判決結(jié)果的檢測;控制消息置換單元完成后驗消息與消息處理單元之間的映射。
2.2 校驗矩陣存儲
該模塊主要用于存儲基本矩陣信息,包括每行行重、非-1元素值以及該元素列坐標。該模塊由一個大小為125×16 bit的RAM實現(xiàn)。每個存儲單元存儲數(shù)據(jù)格式如圖2所示。
圖2中,row_weigh表示每行基本矩陣的行重;col*表示非-1元素所對應的列坐標;val*表示非-1元素的值。
2.3 迭代結(jié)果存儲
該單元主要用于存儲每次子迭代過程得到的后驗消息和判決結(jié)果以及上一次迭代得到的判決結(jié)果。本單元主要包括輸入輸出控制模塊、后驗消息存儲模塊和判決結(jié)果存儲模塊。
2.4 消息置換網(wǎng)絡
消息置換網(wǎng)絡主要用于后驗消息與消息處理單元之間的映射。根據(jù)IEEE 802.16e標準的LDPC碼特點可知,迭代過程中所需的消息置換網(wǎng)絡是一個可以支持19種位寬的桶式移位器。本文設計的消息置換網(wǎng)絡采用的是Daesun[5]提出的一種改進的Benes網(wǎng)絡。
2.5 消息處理
消息處理單元主要用于完成子迭代過程中校驗消息和后驗消息的更新計算。該模塊主要包括計算控制模塊、96個消息計算模塊、校驗消息緩存和臨時變量消息緩存。
2.6 迭代結(jié)果檢測
該模塊主要用于檢測上一次迭代得到的判決比特序列是否滿足校驗方程H×x′T=0。本設計采用的是將上一次迭代判決結(jié)果檢測與當前一次迭代計算同時進行的策略,這樣不但可以消除由于等待每次迭代的檢測結(jié)果而帶來的譯碼延時,還可以簡化譯碼器總體控制的復雜度。
3 綜合驗證
3.1 綜合結(jié)果
本文采用Xilinx公司的ISE工具,使用的FPGA為Virtex4,對文中所設計的電路進行了綜合。
綜合結(jié)果表明,本文實現(xiàn)的譯碼器最高工作頻率為170.28 MHz,從系統(tǒng)穩(wěn)定工作角度考慮,可將系統(tǒng)的工作頻率定為140 MHz。在工作頻率為140 MHz的情況下,本文設計的譯碼器吞吐量最高可達到128.77 Mb/s。與其他譯碼器[6-7]的對比結(jié)果如表1所示。
從驗證結(jié)果中可以看出,兩種譯碼方法得到的誤碼率只有很小的差異,這種差異主要來源于消息量化精度的不同。采用Matlab仿真時,消息的量化精度為0.1,而本文設計的譯碼器消息的量化精度為0.062 5。因此說明圖3中的差異是合理的,本文設計的譯碼器是正確的。
本文提出了一種針對IEEE 802.16e標準、基于層譯碼算法的靈活、高效的譯碼器結(jié)構(gòu)。利用Xilinx公司的ISE工具,使用Virtex4-xc4vfx12-sf363-12芯片的FPGA進行綜合仿真,結(jié)果表明該結(jié)構(gòu)最高工作頻率可達到170.28 MHz,吞吐量可達到128.77 Mb/s。
參考文獻
[1] 鄧曉,潘學軍.基于DMR通信協(xié)議的信道編解碼研究[J].微型機與應用,2013,32(9):51-53.
[2] 袁東風,張海剛.LDPC碼理論與應用[M].北京:人民郵電出版社,2008.
[3] 趙慶,廖青.IEEE 802.16實時輪詢業(yè)務調(diào)度算法分析[EB/OL].(2008-10-24)[2013-09-02].http://www.paper.edu.cn.
[4] 肖揚.Turbo與LDPC編解碼及其應用[M].北京:人民郵電出版社,2010.
[5] BERGERON J,CERNY E,HUTER A,et al.Verification methodology manual for SystemVerilog[M].Springer,2005.
[6] 王鵬,陳詠恩.高速LDPC碼分層譯碼器設計[J].小型微型計算機系統(tǒng),2009,30(11):2294-2297.
[7] 喬華,管武等,董明科.LDPC碼高速譯碼器的設計與實現(xiàn)[J].北京大學學報,2008,44(3):347-352.
[8] BANERJEE S,GUPTA T.Design aware scheduling of dynamic testbench controlled design element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification[C].2010 2nd Asia Symposium on Quality Electronic Design (ASQED),2010:175-181.
[9] 何賓.基于AXI4的可編程SoC系統(tǒng)設計[M].北京:清華大學出版社,2011.
[10] 趙澤才,常青.基于MicroBlaze的嵌入式系統(tǒng)設計[J].現(xiàn)代電子技術(shù),2006,29(10):56-59.
[11] 羅華飛.MATLAB GUI設計學習手記[M].北京:北京航空航天大學出版社,2011.