摘 要:Turbo碼以其幾乎接近Shannon理論極限的譯碼性能而成為目前為止最好的信道編碼方案。為了減少信道傳輸引起的誤碼,提高傳輸可靠性,設計了一種基于SOVA算法的Turbo譯碼器,并介紹了Turbo譯碼器在數據協調中的應用。與傳統的Turbo譯碼器相比,增加了兩個權重模塊,這樣可提高譯碼的性能。同時,通過Matlab仿真,驗證了所設計的Turbo譯碼器功能的正確性。
關鍵詞:Turbo譯碼器;SOVA算法;權重;數據協調
中圖分類號:TN911.22 文獻標識碼:B
文章編號:1004-373X(2008)11-040-03
Application and Simulation of Turbo Decoder in the Reconciliation
CAI Jianqing1,2,CHEN Huaiming1,HUANG Chunhui1
(1.College of Physics and Information Engineering,Fuzhou University,Fuzhou,350002,China;
2.College of Computer and Information Science,Fujian Agriculture and Forestry University,Fuzhou,350002,China)
Abstract:Turbo Codes has become the best channel encoding methods because its decoding performance is near to Shannon theoretical limit.In order to reduce the error bits caused by channel transmission and improve the reliability,this paper designs a Turbo decoder based on SOVA algorithm and introduces its application in the reconciliation.It improves the decoding performance by introducing two weighting modules.The simulation of Turbo decoder with Matlab is finished and its correctness of decoding function is proved.
Keywords:Turbo decoder;SOVA algorithm;weighting;reconciliation
1 引 言
在通信領域,信息的傳輸不可避免地要受到噪聲或干擾的影響,從而引起傳輸差錯,因此保證信息傳輸的可靠性是極其重要的。隨著通信技術的發展,對信息傳輸的準確性要求也越來越高。為了降低誤碼率,保證可靠傳輸,相繼提出了各種信道糾錯方法。到目前為止,Turbo碼是信道編碼方案中最好的。Turbo碼又稱為并行級聯卷積碼(PCCC),是一種前向差錯控制(FEC)方式。
本文提出了一種基于SOVA算法的Turbo譯碼器,將其作為一種數據協調方法應用到數據通信中[1],并通過Matlab仿真,驗證所設計的Turbo譯碼器功能的正確性,便于Turbo譯碼器的FPGA實現。
2 Turbo譯碼器在數據協調中的應用
2.1 整體方案
為了減少信道傳輸引起的誤碼,提高信息傳輸的可靠性,本文提出了一種將Turbo譯碼器應用到數據協調的方案,其整體框圖如圖1所示。圖中,Alice方和Bob方都是一臺PC機,FPGA板位于Bob方,FPGA板主要完成Turbo譯碼器的功能。FPGA板與Bob方的通信屬于本地通信,可借助一個通信口完成,而它與Alice方的通信屬于遠程通信,需通過另一個通信口完成。
圖1 Turbo譯碼器在數據協調中應用的整體框圖
首先,Bob方將系統信息傳送到FPGA板上;其次,Alice方有一個Turbo編碼器,它將Turbo編碼器產生的校驗信息也傳送到FPGA板上;當FPGA板上得到了Turbo譯碼所需的系統信息和校驗信息后,進行譯碼,并將Turbo譯碼器的譯碼輸出傳送給Bob方,完成數據的協調。在數據協調過程中,Bob方傳送到FPGA板上的系統信息是一次性傳送的,而Alice方傳送到FPGA板上的校驗信息以及FPGA板傳送給Bob方的譯碼輸出是不斷傳送的。
2.2 SOVA算法的基本原理
SOVA算法是軟輸出的Viterbi算法(Soft Output Viterbi Algorithm)。Viterbi算法是一種基于柵格圖(trellis)的最佳概率譯碼算法,SOVA是對Viterbi算法的改進,使其適合于Turbo 碼的迭代譯碼,可提供更高的譯碼性能[2]。對Viterbi算法所作的修改主要有兩個方面:
(1) 在柵格圖中選擇最大似然路徑時,計算路徑度量要把先驗信息考慮進去;
(2) 不僅要譯出每個比特,而且要給出每個比特譯碼的可靠度(以對數似然比值LLR的形式給出),從中獲取先驗信息作為軟輸出,為下次迭代所用。
2.3 Turbo譯碼器的設計
本數據協調方案中所采用的Turbo譯碼器結構框圖如圖2所示,它由SOVA分量譯碼器1和SOVA分量譯碼器2串行級聯而成[3-7]。
圖2 基于SOVA算法的Turbo譯碼器結構框圖
由于本方案中系統信息和校驗信息是通過不同的通信口傳送到FPGA板上的,所以在譯碼端不需要先經過分路器將譯碼器接收到的序列分成三個部分:信息序列y1k、校驗序列y2k和校驗序列y3k。
第一次迭代時,先驗信息用“0”代替。首先,先驗信息、信息序列y1k和校驗序列y2k經過SOVA分量譯碼器1,產生似然值L1k和外信息Le1k;其次,將SOVA分量譯碼器1產生的外信息Le1k經加權和交織后作為SOVA分量譯碼器2的先驗信息,同時信息序列y1k經過交織后作為SOVA分量譯碼器2的信息序列,則先驗信息、信息序列和校驗序列y3k經過SOVA分量譯碼器2,產生似然值L2k和外信息Le2k。將SOVA分量譯碼器2產生的外信息Le2k經加權和解交織后反饋作為SOVA分量譯碼器1的先驗信息,完成一次迭代譯碼。隨著迭代次數的增加,兩個分量譯碼器得到的外信息值對譯碼性能提高的作用越來越小,在達到一定迭代次數后,譯碼性能不再提高,這時將似然值L2k解交織后進行硬判決,若解交織后的似然值L2k大于或等于0,則判決為1;否則,判決為0。這樣就可得到信息序列y1k的每一比特的最佳估值序列,作為譯碼輸出。當迭代次數取6次以上時,SOVA算法的性能提高很小[8],故本設計中的迭代次數取6次。
從圖2可以看出,整個Turbo譯碼器包含以下幾個功能模塊:
(1) SOVA分量譯碼器
Turbo譯碼器中的兩個分量譯碼器都采用傳統的SOVA算法實現。
(2) 交織/解交織器
交織器的主要作用是用于減小校驗比特之間的相關性,進而在迭代譯碼過程中降低誤比特率。解交織是交織的逆過程,故可將交織器與解交織器用一個設備實現[9],只要用一個變量如way表示是交織還是解交織即可。本設計中,交織器選用分組交織器(與編碼器中的交織器一致),交織映射函數如下式,其中N為交織長度(N=mn)。
j=I(i)=[(i-1)mod n]#8226;m+[(i-1)/n]+1
(i=1,2,…,N)
(1)
(3) 權重模塊
本設計考慮Turbo編碼器有對校驗位進行刪余的情況。在譯碼器中,被刪去的校驗位用“0”代替。為了彌補因刪余而引起的譯碼性能變差,在譯碼端需要對外信息值進行加權。這里需要注意的是,權重模塊僅僅是為補償被刪去的校驗位而引入的,所以要求編碼器中的刪余矩陣與譯碼器中的權重矩陣是對應的。假設編碼器中所用的刪余矩陣P[WTBZ]如下:
P=11111111
10101010
01010101
(2)
刪余矩陣P的第一行是對輸入信息序列x1k進行的刪余,第二行是對分量編碼器1輸出的校驗序列x2k進行的刪余,第三行是對分量編碼器2輸出的校驗序列x3k進行的刪余。從所用的刪余矩陣P可以看出,刪余其實是分別刪除x2k中位于偶數位置的校驗比特和x3k中位于奇數位置的校驗比特。故譯碼器中的權重矩陣W[WTBZ]相應地取為:
仿真結果表明,當W[WTBZ]=0.5時可得到最低的BER[4],故本設計中取W[WTBZ]=0.5。
(4) 硬判決器
迭代完成后,若SOVA分量譯碼器2產生的似然值L2k經解交織后的值大于或等于零,則判決輸出1;反之,判決輸出0。
3 Turbo譯碼器的Matlab仿真
為了驗證所設計的Turbo譯碼器能完成譯碼功能,利用Matlab進行仿真時,需仿真出從輸入序列經Turbo編碼器編碼,經過信道傳輸,再經Turbo譯碼器譯碼的整個數據傳輸過程,故整個仿真模型包括Turbo編碼器、AGWN信道和Turbo譯碼器三個部分,如圖3所示。如果經過仿真,能得到譯碼器的輸出序列與編碼器的輸入序列完全一致,說明方案是正確的。
這里所用的Turbo編碼器的生成矩陣g[WTBZ]=[1 1 1 ;1 0 1],約束長度為3,碼率為1/2。編碼器的輸入序列en[CD#*2]in是隨機產生的一組0、1數據。譯碼幀長度為400信息位。Turbo譯碼器采用上面所設計的結構,通過編寫Matlab仿真程序,得到了編碼器輸入序列與譯碼器輸出序列的對比圖,如圖4所示。從圖中可以看出,譯碼器的輸出序列與編碼器輸入序列是完全一致的。重復上面的仿真過程,每次選取不同長度的隨機序列作為輸入序列,均可得到與輸入序列一致的輸出序列,說明所設計的Turbo譯碼器的譯碼功能是正確的。
圖3 Turbo碼的仿真模型
圖4 編碼器輸入序列與譯碼器輸出序列的對比圖
利用Matlab進行仿真,一方面可以驗證算法的正確性,另一方面可以為后面驗證電路功能時提供各個模塊的驗證數據。
4 結 語
本文設計了一種基于SOVA算法的Turbo譯碼器,并將所設計的Turbo譯碼器作為數據協調方法用于信道[CM(21*2]
糾錯,提出了一種Turbo譯碼器在數據協調中應用的方[CM)]
案。為了便于Turbo譯碼器的FPGA實現,本文還將所設計的Turbo譯碼器用Matlab進行仿真。通過仿真,驗證了所設計的Turbo譯碼器功能的正確性。
參 考 文 獻
[1]Kim-Chi Nguyen,Gilles Van Assche,Nicolas J Cerf.Side-Information Coding with Turbo Codes and Its Application to Quantum Key Distribution.International Symposium on Information Theory and its Applications,2004,10:10-13.
[2]王新梅,肖國鎮.糾錯碼——原理與方法(修訂版)[M].西安:西安電子科技大學出版社,2003.
[3]劉東華.Turbo碼原理與應用技術[M].北京:電子工業出版社,2004.
[4]Fujii H,Saba T,Sasase I.Novel Decoding Algorithm with Weighting of Extrinsic Information for Punctured Turbo-Codes[C].In 4th European Personal Mobile Communications Conference (EPMCC 2001),2001.
[5]易清明,謝勝利.一種節省存儲量的SOVA子譯碼器IP核的設計[J].微電子學,2006,36(5):643-645.
[6]Jian Liang,Russell Tessier,Dennis Goeckel.A Dynamically-Reconfigurable,Power-Efficient Turbo Decoder.Proceedings of the 12th Annual IEEE Symposium of Field-Programmable Custom Computing Machines,2004:91-100.
[7]Sharma S,Attri S,Chauhan R C.A Simplified and Efficient Implementation of FPGA-Based Turbo Decoder\\[C\\].Performance,Computing and Communications Conference,2003,4:207-213.
[8]李智勇,王云鶴,劉玉君.卷積碼的迭代譯碼原理[J].信息工程大學學報,2004,5(3):92-93.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。