王 寧, 陳名松, 杜曉萍
(桂林電子科技大學科技大學,廣西 桂林 541004)
Turbo碼,又稱并行級聯卷積碼,最早由法國不列顛通信大學的教授C.Berrou等人在1993的國際通信會議上提出。Turbo是一種非常優秀的編碼方案,它幾乎滿足了無差錯傳輸的三個基本條件,從而獲得了接近香農極限的性能[1]。它將卷積碼并行級聯,用短碼構造出長碼,利用隨機交織器實現了隨機編碼,通過在兩個軟入軟出(SISO)譯碼器之間進行多次迭代實現了最大似然譯碼。它的性能遠遠超過了其他的編碼方式,對當今的編碼理論和研究方法產生了深遠的影響[2]。
由于 Turbo碼性能受到多個參數的影響,且傳輸時延較大[3]。在實際應用中,應該根據具體的系統需求選擇相應的參數,否則會浪費有限的系統資源。因此,有必要對 Turbo碼的譯碼算法、迭代次數等幾種重要參數做深入研究,并基于Matlab對其軟件仿真,總結出設置參數的原則,為系統的實際設計提供參考。
一般Turbo碼編碼器由兩個循環系統卷積編碼器(RSC編碼器)和交織器并行級聯構成,原理如圖1所示[4]。編碼器1、編碼器2又稱為分量碼編碼器,通常2個分量編碼器具有完全相同的結構。交織器實際上是一個映射函數,其作用是將輸入信息序列中的比特位置進行重置,從而使兩個分量編碼器輸出的信息盡量不相關。編碼器1、編碼器2輸出編碼的校驗序列后,通過刪余器刪除一些校驗位,與未編碼的輸入信息序列經過復接器復用,輸出得到Turbo碼的編碼輸出序列。

圖1 Turbo碼編碼器原理
Turbo碼選用RSC編碼器的主要原因是循環編碼器能很好地降低誤碼率。交織器是影響Turbo碼性能的另一個關鍵因素。通常采用的交織器有分組交織器和偽隨機交織器。
香農定理指出,最優的譯碼算法是概率譯碼算法,即最大后驗概率算法(MAP)。MAP算法性能最佳,但是復雜度也最高。為了降低復雜度,后來又有了Log-MAP、MAX-Log-MAP及SOVA(軟輸入軟輸出算法)等算法。

圖2 Turbo碼譯碼器原理
無論采用以上提到的哪種算法,Turbo碼譯碼器的總體結構都是大致相同的,如圖表2中所示。譯碼器由2個獨立的分量譯碼器竄行級聯組成,如果編碼時2個編碼器是相同的,這里的譯碼器就必須相同。交織器也與編碼器中的相同,它與解交織器必須配套使用。每個分量譯碼器都有3路輸入信息:①信息碼或經過交織的;②校驗碼或;③外信息 L1e(xk)或L2e(xk)。譯碼器1對編碼器1進行最佳譯碼,產生關于信息序列中每一比特的外信息 L1e(xk),將其交織后產生的 L2e()送給譯碼器2。譯碼器2接收三路輸入,對編碼器2進行最佳譯碼,譯碼的結果經過解交織作為外信息再送給譯碼器 1,這樣就形成了反復迭代。每一次迭代都會減少一定的誤碼,經過一定的迭代次數后,2個譯碼器的外信息趨于穩定,就可以得到最佳譯碼信息[5]。
Turbo碼的性能受多個因素影響,如分量碼、迭代次數、幀長、碼率等等。合理設置參數可以有效減少Turbo碼的延時,降低實現Turbo碼需要的硬件資源,從而提高整個系統的性能。現通過Matlab軟件,對這些因素仿真,對結果進行分析,總結出如何設置各個參數,從而設計出最佳的編碼方案。
以下仿真均在高斯噪聲信道上采用 BPSK調制。仿真流程圖如圖3。

圖3 仿真流程
此處的仿真參數:采用刪余技術后碼率為1/2,信息序列長度為1024,5次迭代,隨機交織器,Log-MAP譯碼算法,分量碼編碼多項式為:g1= [ 111; 101 ],g2= [1101; 1111],g3= [11111; 10001]。仿真結果如圖4。

圖4 不同分量碼的性能比較
從圖4可以得出的結論是:當信噪比較小時,約束長度小的Turbo碼性能與約束長度大的相差不大;但是隨著信噪比的增加,約束長度大的 Turbo碼的性能開始優于約束長度小的Turbo碼,而且優勢越來越明顯。在信噪比2 dB以后,約束長度為4的(13,15)碼與約束長度為5的(31,17)碼的性能差異已經很小,而前者又優于約束度為3的(7,5)碼。由于約束長度越長,編譯碼的難度越大。因此綜合考慮,約束長度4的分量碼是最佳的選擇。
Turbo碼譯碼時以幀為單元,因此幀長對Turbo的性能影響也很重要。以下對不同幀長的Turbo碼進行仿真,分量碼為[13,15],迭代次數為5,隨機交織器,Log-MAP譯碼算法。
從仿真結果圖5來看,相同信噪比的情況下,Turbo碼的誤碼率隨著幀長的增加而降低。因此對于Turbo碼的性能而言,希望幀長越長越好,盡管幀長的增加不會增加單位比特譯碼的復雜度,但是幀長決定了系統傳輸的時間延遲和譯碼存儲空間,所以幀長的選擇必須折中考慮。一般的對于實時通信要求嚴格的語音系統,幀長為500 bit左右;對于實時通信要求不高而信道條件又差的系統,幀長采用2000 bit以上,如視頻或衛星通信系統[6]。

圖5 幀長對Turbo碼性能的影響
Turbo碼取得優異性能的原因就在于采用了迭代譯碼,因此Turbo碼的性能很大程度上受迭代次數的影響。以下通過對不同幀長的Turbo碼不同迭代次數分別仿真,仿真參數:1/2碼率,幀長分別為1024和2048,分量碼[13,15],Log-MAP算法,隨機交織。結果如圖6、圖7。

圖6 1024幀長時迭代次數對Turbo碼性能的影響
從仿真結果可以得出:Turbo碼的誤碼率隨著迭代次數的增加而降低。隨著信噪比的增加,增加迭代次數會使誤比特率急劇降低,但當達到一定迭代次數后,再增加迭代次數也不能明顯的改善誤碼率。這是因為隨著迭代次數的增加,2個分量譯碼器之間的外信息被充分的利用,對信息比特的估計更接近最大似然比,判決輸出的正確性就越高。但當到達一定迭代次數后,原先相關性不大的校驗信息之間的相關性越來越大,這樣可以利用的信息就越來越少,因此編碼增益越來越小[7]。當迭代次數達到飽和值后,再增加次數也很難改善性能,卻給整個系統帶來巨大的計算量和延時。另外可以看出,幀長長的 Turbo碼需要較少的迭代次數就能達到飽和值。因此,選擇迭代次數時,應根據實際幀長的情況,通常幀長1000以下的迭代次數可以選擇7次左右,幀長1000以上的選擇5次左右。

圖7 2048幀長時迭代次數對Turbo碼性能的影響
以下分別對 1/2和1/3碼率的Turbo碼進行仿真,仿真參數:分量碼多項式為[13,15],幀長為1024,采用Log-MAP譯碼算法,迭代5次,隨機交織。仿真結果如圖8所示。

圖8 不同碼率對Turbo碼性能的影響
由仿真的結果可知:1/3碼率的Turbo碼性能要比1/2碼率優良。因為1/2碼率的Turbo碼經過刪余,刪余的過程中可能把有用的信息刪除掉,所以譯碼性能就相對越差。但是碼率越低,傳輸的數據量就越大,占用的帶寬就越大。實際通信中有時更看中功率和帶寬效益,采用碼率高的Turbo碼可以提高信道的利用率。因此應根據具體需求選擇碼率。
MAP算法能直接計算信息比特的后驗概率,是Turbo譯碼的最佳算法,但是在實際應用中卻難以實現,主要原因是運算量太大。以下分別對Log-MAP算法和SOVA算法[8]的Turbo碼進行仿真,仿真參數:分量碼多項式為[07,05],碼率1/2,幀長為1024,迭代5次,隨機交織。具體仿真數據如圖9所示。

圖9 不同譯碼算法對Turbo碼性能的影響
由仿真結果可以看出:Log-MAP算法的性能要明顯優于SOVA算法。它在性能上等效于MAP算法,但是變乘法運算為加法運算,從而大大降低了算法的復雜性,使其更具有實用性。SOVA算法最簡單,但性能很差。Log-MAP算法的復雜度大約是SOVA的兩倍左右,應用過程中完全可以接受。因此Log-MAP算法是Turbo譯碼的最佳算法。
因為Turbo碼的性能受多個參數的影響,所以對這些參數進行了詳細的仿真,利用仿真的結果證明了分量碼、迭代次數、幀長、碼率、算法等對Turbo性能的影響,為Turbo碼在實際系統的設計提供有價值的參考。
[1]呂鋒.信息理論與編碼[M].北京:人民郵電出版社,2004.
[2]劉東華.Turbo碼原理與應用技術[M].北京:電子工業出版社,2000.
[3]邢莉,王忠,李興國,等.基于Matlab的Turbo碼仿真研究[J].現代電子技術,2009(03):19-21.
[4]王輝,王中訓.基于OFMD的改進Turbo碼圖像傳輸系統應用[J].通信技術,2009,42(01):105-106.
[5]西瑞克斯(北京)通信設備有限公司.無線通信的MATLAB和FPGA實現[M].北京:人民郵電出版社,2009.
[6]伍萍.優化衛星通信技術研究[J].通信技術,2010,43(06):51-53.
[7]汪漢新,陳少平,朱翠濤.Turbo碼的迭代譯碼方法的優化設計[J].計算機工程與應用,2007,43(03): 99-101.
[8]邵華,董辰輝.Matlab/Simulink通信系統建模與仿真實例精講[M].北京:電子工業出版社,2009.