摘 要: 在深入分析Turbo譯碼算法" title="譯碼算法">譯碼算法的基礎上,采用MAX-LOG-MAP" title="MAX-LOG-MAP">MAX-LOG-MAP算法進行了Turbo碼譯碼器" title="譯碼器">譯碼器的FPGA設計與實現(xiàn),并給出相應實現(xiàn)參數(shù)和結構。對FPGA的實現(xiàn)與MATLAB浮點算法做了仿真比較。
關鍵詞: Turbo碼 MAX-LOG-MAP算法 FPGA
Turbo碼自1993年提出以來[1],由于其接近香農(nóng)極限的優(yōu)異譯碼性能,一直成為編碼界研究的熱點。近年來,用戶對通信質(zhì)量的要求越來越高,學者們已將研究重點從理論分析轉移到Turbo碼的實用化上來。Turbo碼現(xiàn)已成為深空通信的標準,即第三代移動通信(3G)信道編碼方案[2]。
Turbo碼雖然具有優(yōu)異的譯碼性能,但是由于其譯碼復雜度高,譯碼延時大等問題,嚴重制約了Turbo碼在高速通信系統(tǒng)中的應用。因此,如何設計一個簡單有效的譯碼器是目前Turbo碼實用化研究的重點。本文主要介紹了短幀Turbo譯碼器的FPGA實現(xiàn),并對相關參數(shù)和譯碼結構進行了描述。
1 幾種譯碼算法比較
Turbo碼常見的幾種譯碼算法中,MAP算法[1][3]具有最優(yōu)的譯碼性能。但因其運算過程中有較多的乘法和指數(shù)運算,硬件實現(xiàn)" title="硬件實現(xiàn)">硬件實現(xiàn)很困難。簡化的MAP譯碼算法是LOG-MAP算法和MAX-LOG-MAP算法,它們將大量的乘法和指數(shù)運算轉化成了加減、比較運算,大幅度降低了譯碼的復雜度,便于硬件實現(xiàn)。簡化算法中,LOG-MAP算法性能最接近MAP算法,MAX-LOG-MAP算法次之,但由于LOG-MAP算法后面的修正項需要一個查找表,增加了存儲器的使用。所以,大多數(shù)硬件實現(xiàn)時,在滿足系統(tǒng)性能要求的情況下,MAX-LOG-MAP算法是硬件實現(xiàn)的首選。通過仿真發(fā)現(xiàn),采用3GPP的編碼和交織方案[2],在短幀情況下,MAX-LOG-MAP算法同樣具有較好的譯碼性能。
如圖1所示,幀長為128,迭代6次,BER=10-5的數(shù)量級時, MAX-LOG-MAP算法的譯碼性能比MAP算法差大約0.6dB,比LOG-MAP算法差0.2dB左右。所以,本文采用3GPP的交織和(13,15)編碼方案,MAX-LOG-MAP譯碼算法進行短幀Turbo碼譯碼器的FPGA實現(xiàn)與設計。
2 MAX-LOG-MAP算法
為對MAP算法進行簡化,通常將運算轉換到對數(shù)域上進行,避免了MAP算法中的指數(shù)運算,同時,乘法運算變成了加法運算,而加法運算用雅可比公式簡化成MAX*運算[4]。
將運算轉化到正對數(shù)域進行運算,則MAX*可等效為:
按照簡化公式(3)對MAP譯碼算法[1][3]的分支轉移度量、前向遞推項、后向遞推項及譯碼軟輸出進行簡化。
分支轉移度量:
為防止迭代過程中數(shù)據(jù)溢出,對前后向遞推項(5)、(6)式進行歸一化處理:
3 FPGA實現(xiàn)關鍵技術
3.1 數(shù)據(jù)量化
在通信系統(tǒng)中,譯碼器的接收數(shù)據(jù)并不是連續(xù)不變的模擬量,而是經(jīng)過量化后的數(shù)字量。接收數(shù)據(jù)的量化會引入量化噪聲,從而影響譯碼的性能。所以,接收數(shù)據(jù)量化的精度直接影響到譯碼的性能。由參考文獻[5~6]可知,采用3位量化精度就能得到與沒有經(jīng)過量化的浮點數(shù)據(jù)相近的譯碼性能。為了簡化FPGA的設計,本文采用了統(tǒng)一的定點量化標準F(9,3),即最高位為符號位,整數(shù)部分8位,小數(shù)部分3位。由此,前后遞推項(9)、(10)式的初始值可表示為:
3.2 MAX*運算單元
由前面的MAX-LOG-MAP算法介紹可知,MAX*運算單元是整個譯碼的主要運算單元,它與viterbi譯碼的ACS(加比選)運算單元一樣,先分別進行加法操作,然后對所得結果進行比較,最后將較小的一個結果作為運算結果輸出。實現(xiàn)結構如圖2所示。
3.3 前后向遞推運算單元
由公式(5)~(8)可知,前后向遞推單元除了需要進行MAX*與運算外,還需要進行歸一化處理。為得到較快的運算速度,首先,計算上一時刻所有狀態(tài)的最小值,然后對當前時刻的每一狀態(tài)進行MAX*運算,并將運算結果減去上一時刻的最小狀態(tài)值" title="狀態(tài)值">狀態(tài)值,即得到當前時刻遞推各狀態(tài)的歸一化值。實現(xiàn)結構如圖3所示。
3.4 8狀態(tài)值最小值運算單元
由MAX-LOG-MAP算法可知,在進行前后向遞推歸一化處理和計算譯碼軟輸出時,均需要計算每一時刻8個狀態(tài)的最小值。為了減小計算延時,采用了8狀態(tài)值并行比較的結構,與串行的8狀態(tài)值比較結構相比較,要少4級延時。實現(xiàn)結構如圖4所示。
4 仿真結果
按照以上所分析的簡化譯碼算法、FPGA實現(xiàn)的相關參數(shù)和結構,整個譯碼采用Verilog HDL語言編程,以Xilinx ISE 7.1i、Modelsim SE 6.0為開發(fā)環(huán)境,選定Virtex4芯片xc4vlx40-12ff668進行設計與實現(xiàn)。整個譯碼器占用邏輯資源如表1所示。
MAX-LOG-MAP譯碼算法,幀長為128,迭代4次的情況下,MATLAB浮點算法和FPGA定點實現(xiàn)的譯碼性能比較如圖5所示。
由MAX-LOG-MAP算法的MATLAB浮點與FPGA定點的性能比較仿真結果可知,采用F(9,3)的定點量化標準,F(xiàn)PGA定點實現(xiàn)譯碼性能和理論的浮點仿真性能基本相近,并具有較好的譯碼性能。
綜上所述,在短幀情況下,MAX-LOG-MAP算法具有較好的譯碼性能,相對于MAP,LOG-MAP算法具有最低的硬件實現(xiàn)復雜度,并且Turbo碼譯碼延時也較小。所以,在特定的短幀通信系統(tǒng)中,如果采用Turbo碼作為信道編碼方案,MAX-LOG-MAP譯碼算法是硬件實現(xiàn)的最佳選擇。
參考文獻
[1] BERRON C, GLAVICUS A, THITIMAAJSHIMA P. Near shannon limit error-correcting coding and decoding: Turbocodes(1) [C]. ICC’93,1993:1064-1074.
[2] ?3GPP TS 25.212 Release6. Multiplexing and channel coding (FDD) [S], 2005.
[3] ?王新梅,肖國鎮(zhèn).糾錯碼—原理與方法[M].西安:西安電子科技大學出版社,2001.
[4] ?ROBERTSON P, VILLEBRUN E, HOELER P. A comparison of optimal and sub-optimal MAP decoding algorithms operating in the log domain [C]. ICC.1995,1995:1009-1013.
[5] ?MONTORSI G, BENEDETTO S. Design of fixed-point iterative decoders for concatenated codes with interleavers. IEEE Journal on Selected Areas in Communications,2001:871-882.
[6] ?WU Yu Fei, WOERNER B D, BLANKENSHIP T K. Data ?width requirements in SISO decoding with module normalization. IEEE Trans. On Commun, 2001,(49)11.