摘 要:Turbo碼以其幾乎接近Shannon理論極限的譯碼性能而成為目前為止最好的信道編碼方案。為了減少信道傳輸引起的誤碼,提高傳輸可靠性,設(shè)計(jì)了一種基于SOVA算法的Turbo譯碼器,并介紹了Turbo譯碼器在數(shù)據(jù)協(xié)調(diào)中的應(yīng)用。與傳統(tǒng)的Turbo譯碼器相比,增加了兩個(gè)權(quán)重模塊,這樣可提高譯碼的性能。同時(shí),通過(guò)Matlab仿真,驗(yàn)證了所設(shè)計(jì)的Turbo譯碼器功能的正確性。
關(guān)鍵詞:Turbo譯碼器;SOVA算法;權(quán)重;數(shù)據(jù)協(xié)調(diào)
中圖分類號(hào):TN911.22 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):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,F(xiàn)uzhou University,F(xiàn)uzhou,350002,China;
2.College of Computer and Information Science,F(xiàn)ujian Agriculture and Forestry University,F(xiàn)uzhou,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 引 言
在通信領(lǐng)域,信息的傳輸不可避免地要受到噪聲或干擾的影響,從而引起傳輸差錯(cuò),因此保證信息傳輸?shù)目煽啃允菢O其重要的。隨著通信技術(shù)的發(fā)展,對(duì)信息傳輸?shù)臏?zhǔn)確性要求也越來(lái)越高。為了降低誤碼率,保證可靠傳輸,相繼提出了各種信道糾錯(cuò)方法。到目前為止,Turbo碼是信道編碼方案中最好的。Turbo碼又稱為并行級(jí)聯(lián)卷積碼(PCCC),是一種前向差錯(cuò)控制(FEC)方式。
本文提出了一種基于SOVA算法的Turbo譯碼器,將其作為一種數(shù)據(jù)協(xié)調(diào)方法應(yīng)用到數(shù)據(jù)通信中[1],并通過(guò)Matlab仿真,驗(yàn)證所設(shè)計(jì)的Turbo譯碼器功能的正確性,便于Turbo譯碼器的FPGA實(shí)現(xiàn)。
2 Turbo譯碼器在數(shù)據(jù)協(xié)調(diào)中的應(yīng)用
2.1 整體方案
為了減少信道傳輸引起的誤碼,提高信息傳輸?shù)目煽啃?,本文提出了一種將Turbo譯碼器應(yīng)用到數(shù)據(jù)協(xié)調(diào)的方案,其整體框圖如圖1所示。圖中,Alice方和Bob方都是一臺(tái)PC機(jī),F(xiàn)PGA板位于Bob方,F(xiàn)PGA板主要完成Turbo譯碼器的功能。FPGA板與Bob方的通信屬于本地通信,可借助一個(gè)通信口完成,而它與Alice方的通信屬于遠(yuǎn)程通信,需通過(guò)另一個(gè)通信口完成。
圖1 Turbo譯碼器在數(shù)據(jù)協(xié)調(diào)中應(yīng)用的整體框圖
首先,Bob方將系統(tǒng)信息傳送到FPGA板上;其次,Alice方有一個(gè)Turbo編碼器,它將Turbo編碼器產(chǎn)生的校驗(yàn)信息也傳送到FPGA板上;當(dāng)FPGA板上得到了Turbo譯碼所需的系統(tǒng)信息和校驗(yàn)信息后,進(jìn)行譯碼,并將Turbo譯碼器的譯碼輸出傳送給Bob方,完成數(shù)據(jù)的協(xié)調(diào)。在數(shù)據(jù)協(xié)調(diào)過(guò)程中,Bob方傳送到FPGA板上的系統(tǒng)信息是一次性傳送的,而Alice方傳送到FPGA板上的校驗(yàn)信息以及FPGA板傳送給Bob方的譯碼輸出是不斷傳送的。
2.2 SOVA算法的基本原理
SOVA算法是軟輸出的Viterbi算法(Soft Output Viterbi Algorithm)。Viterbi算法是一種基于柵格圖(trellis)的最佳概率譯碼算法,SOVA是對(duì)Viterbi算法的改進(jìn),使其適合于Turbo 碼的迭代譯碼,可提供更高的譯碼性能[2]。對(duì)Viterbi算法所作的修改主要有兩個(gè)方面:
(1) 在柵格圖中選擇最大似然路徑時(shí),計(jì)算路徑度量要把先驗(yàn)信息考慮進(jìn)去;
(2) 不僅要譯出每個(gè)比特,而且要給出每個(gè)比特譯碼的可靠度(以對(duì)數(shù)似然比值LLR的形式給出),從中獲取先驗(yàn)信息作為軟輸出,為下次迭代所用。
2.3 Turbo譯碼器的設(shè)計(jì)
本數(shù)據(jù)協(xié)調(diào)方案中所采用的Turbo譯碼器結(jié)構(gòu)框圖如圖2所示,它由SOVA分量譯碼器1和SOVA分量譯碼器2串行級(jí)聯(lián)而成[3-7]。
圖2 基于SOVA算法的Turbo譯碼器結(jié)構(gòu)框圖
由于本方案中系統(tǒng)信息和校驗(yàn)信息是通過(guò)不同的通信口傳送到FPGA板上的,所以在譯碼端不需要先經(jīng)過(guò)分路器將譯碼器接收到的序列分成三個(gè)部分:信息序列y1k、校驗(yàn)序列y2k和校驗(yàn)序列y3k。
第一次迭代時(shí),先驗(yàn)信息用“0”代替。首先,先驗(yàn)信息、信息序列y1k和校驗(yàn)序列y2k經(jīng)過(guò)SOVA分量譯碼器1,產(chǎn)生似然值L1k和外信息Le1k;其次,將SOVA分量譯碼器1產(chǎn)生的外信息Le1k經(jīng)加權(quán)和交織后作為SOVA分量譯碼器2的先驗(yàn)信息,同時(shí)信息序列y1k經(jīng)過(guò)交織后作為SOVA分量譯碼器2的信息序列,則先驗(yàn)信息、信息序列和校驗(yàn)序列y3k經(jīng)過(guò)SOVA分量譯碼器2,產(chǎn)生似然值L2k和外信息Le2k。將SOVA分量譯碼器2產(chǎn)生的外信息Le2k經(jīng)加權(quán)和解交織后反饋?zhàn)鳛镾OVA分量譯碼器1的先驗(yàn)信息,完成一次迭代譯碼。隨著迭代次數(shù)的增加,兩個(gè)分量譯碼器得到的外信息值對(duì)譯碼性能提高的作用越來(lái)越小,在達(dá)到一定迭代次數(shù)后,譯碼性能不再提高,這時(shí)將似然值L2k解交織后進(jìn)行硬判決,若解交織后的似然值L2k大于或等于0,則判決為1;否則,判決為0。這樣就可得到信息序列y1k的每一比特的最佳估值序列,作為譯碼輸出。當(dāng)?shù)螖?shù)取6次以上時(shí),SOVA算法的性能提高很小[8],故本設(shè)計(jì)中的迭代次數(shù)取6次。
從圖2可以看出,整個(gè)Turbo譯碼器包含以下幾個(gè)功能模塊:
(1) SOVA分量譯碼器
Turbo譯碼器中的兩個(gè)分量譯碼器都采用傳統(tǒng)的SOVA算法實(shí)現(xiàn)。
(2) 交織/解交織器
交織器的主要作用是用于減小校驗(yàn)比特之間的相關(guān)性,進(jìn)而在迭代譯碼過(guò)程中降低誤比特率。解交織是交織的逆過(guò)程,故可將交織器與解交織器用一個(gè)設(shè)備實(shí)現(xiàn)[9],只要用一個(gè)變量如way表示是交織還是解交織即可。本設(shè)計(jì)中,交織器選用分組交織器(與編碼器中的交織器一致),交織映射函數(shù)如下式,其中N為交織長(zhǎng)度(N=mn)。
j=I(i)=[(i-1)mod n]#8226;m+[(i-1)/n]+1
(i=1,2,…,N)
(1)
(3) 權(quán)重模塊
本設(shè)計(jì)考慮Turbo編碼器有對(duì)校驗(yàn)位進(jìn)行刪余的情況。在譯碼器中,被刪去的校驗(yàn)位用“0”代替。為了彌補(bǔ)因刪余而引起的譯碼性能變差,在譯碼端需要對(duì)外信息值進(jìn)行加權(quán)。這里需要注意的是,權(quán)重模塊僅僅是為補(bǔ)償被刪去的校驗(yàn)位而引入的,所以要求編碼器中的刪余矩陣與譯碼器中的權(quán)重矩陣是對(duì)應(yīng)的。假設(shè)編碼器中所用的刪余矩陣P[WTBZ]如下:
P=11111111
10101010
01010101
(2)
刪余矩陣P的第一行是對(duì)輸入信息序列x1k進(jìn)行的刪余,第二行是對(duì)分量編碼器1輸出的校驗(yàn)序列x2k進(jìn)行的刪余,第三行是對(duì)分量編碼器2輸出的校驗(yàn)序列x3k進(jìn)行的刪余。從所用的刪余矩陣P可以看出,刪余其實(shí)是分別刪除x2k中位于偶數(shù)位置的校驗(yàn)比特和x3k中位于奇數(shù)位置的校驗(yàn)比特。故譯碼器中的權(quán)重矩陣W[WTBZ]相應(yīng)地取為:
仿真結(jié)果表明,當(dāng)W[WTBZ]=0.5時(shí)可得到最低的BER[4],故本設(shè)計(jì)中取W[WTBZ]=0.5。
(4) 硬判決器
迭代完成后,若SOVA分量譯碼器2產(chǎn)生的似然值L2k經(jīng)解交織后的值大于或等于零,則判決輸出1;反之,判決輸出0。
3 Turbo譯碼器的Matlab仿真
為了驗(yàn)證所設(shè)計(jì)的Turbo譯碼器能完成譯碼功能,利用Matlab進(jìn)行仿真時(shí),需仿真出從輸入序列經(jīng)Turbo編碼器編碼,經(jīng)過(guò)信道傳輸,再經(jīng)Turbo譯碼器譯碼的整個(gè)數(shù)據(jù)傳輸過(guò)程,故整個(gè)仿真模型包括Turbo編碼器、AGWN信道和Turbo譯碼器三個(gè)部分,如圖3所示。如果經(jīng)過(guò)仿真,能得到譯碼器的輸出序列與編碼器的輸入序列完全一致,說(shuō)明方案是正確的。
這里所用的Turbo編碼器的生成矩陣g[WTBZ]=[1 1 1 ;1 0 1],約束長(zhǎng)度為3,碼率為1/2。編碼器的輸入序列en[CD#*2]in是隨機(jī)產(chǎn)生的一組0、1數(shù)據(jù)。譯碼幀長(zhǎng)度為400信息位。Turbo譯碼器采用上面所設(shè)計(jì)的結(jié)構(gòu),通過(guò)編寫Matlab仿真程序,得到了編碼器輸入序列與譯碼器輸出序列的對(duì)比圖,如圖4所示。從圖中可以看出,譯碼器的輸出序列與編碼器輸入序列是完全一致的。重復(fù)上面的仿真過(guò)程,每次選取不同長(zhǎng)度的隨機(jī)序列作為輸入序列,均可得到與輸入序列一致的輸出序列,說(shuō)明所設(shè)計(jì)的Turbo譯碼器的譯碼功能是正確的。
圖3 Turbo碼的仿真模型
圖4 編碼器輸入序列與譯碼器輸出序列的對(duì)比圖
利用Matlab進(jìn)行仿真,一方面可以驗(yàn)證算法的正確性,另一方面可以為后面驗(yàn)證電路功能時(shí)提供各個(gè)模塊的驗(yàn)證數(shù)據(jù)。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于SOVA算法的Turbo譯碼器,并將所設(shè)計(jì)的Turbo譯碼器作為數(shù)據(jù)協(xié)調(diào)方法用于信道[CM(21*2]
糾錯(cuò),提出了一種Turbo譯碼器在數(shù)據(jù)協(xié)調(diào)中應(yīng)用的方[CM)]
案。為了便于Turbo譯碼器的FPGA實(shí)現(xiàn),本文還將所設(shè)計(jì)的Turbo譯碼器用Matlab進(jìn)行仿真。通過(guò)仿真,驗(yàn)證了所設(shè)計(jì)的Turbo譯碼器功能的正確性。
參 考 文 獻(xiàn)
[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]王新梅,肖國(guó)鎮(zhèn).糾錯(cuò)碼——原理與方法(修訂版)[M].西安:西安電子科技大學(xué)出版社,2003.
[3]劉東華.Turbo碼原理與應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,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]易清明,謝勝利.一種節(jié)省存儲(chǔ)量的SOVA子譯碼器IP核的設(shè)計(jì)[J].微電子學(xué),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].信息工程大學(xué)學(xué)報(bào),2004,5(3):92-93.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。