楊澤坤,晉東立
(北京跟蹤與通信技術(shù)研究所,北京 100094)
面向CCSDS標(biāo)準(zhǔn)的Turbo碼的研究與仿真實(shí)現(xiàn)
楊澤坤,晉東立
(北京跟蹤與通信技術(shù)研究所,北京 100094)
Turbo碼是一種性能優(yōu)異且高效的信道編碼方式,被空間數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(CCSDS)推薦為深空通信中可采用的信道編碼方案之一。分析了Turbo碼的編碼和譯碼的基本原理,基于CCSDS給出的深空通信標(biāo)準(zhǔn),設(shè)計(jì)并實(shí)現(xiàn)了Turbo碼的編碼和譯碼過程。通過Matlab軟件仿真測(cè)試,初步探究了譯碼迭代次數(shù)、碼率、譯碼算法等因素對(duì)誤碼率性能的影響,并對(duì)仿真結(jié)果進(jìn)行了分析。
信道編碼;Turbo碼;CCSDS
1993年,在瑞士召開的國(guó)際通信會(huì)議上,C.Berrou[1]等人提出一種新型信道編碼方案——Turbo碼。Turbo 碼是接近香農(nóng)理論極限的編碼方案,特別是在低信噪比的條件下性能優(yōu)異,它的提出是信道編碼研究領(lǐng)域的一項(xiàng)重大突破。在深空通信系統(tǒng)中[2-3],由于通信距離長(zhǎng),信號(hào)從深空傳回地面時(shí)功率衰減十分嚴(yán)重,接收信號(hào)信噪比極低,此時(shí) Turbo 碼的優(yōu)勢(shì)得以體現(xiàn)。1999年,空間數(shù)據(jù)咨詢委員會(huì)(CCSDS)[4]將Turbo 碼作為遙測(cè)信道編碼的備選方案,并在2002年正式將Turbo碼在其藍(lán)皮書中列為推薦的信道編碼方案之一[5]。下面介紹了Turbo碼編碼和譯碼的基本原理,以及CCSDS標(biāo)準(zhǔn)下Turbo碼的編碼器結(jié)構(gòu),并基于此標(biāo)準(zhǔn)進(jìn)行了仿真測(cè)試,探究了迭代次數(shù)、碼率以及譯碼算法等對(duì)誤碼率性能的影響。
Turbo碼編碼器是由2個(gè)遞歸系統(tǒng)卷積碼(RSC)編碼器作為分量編碼器,碼字通過一個(gè)隨機(jī)交織器并行連接而成,編碼后的校驗(yàn)位經(jīng)過刪余器,從而產(chǎn)生不同碼率的碼字。Turbo碼的譯碼是一個(gè)迭代過程,譯碼算法目前主要有基于最大后驗(yàn)概率的譯碼算法和基于維特比的譯碼算法兩大類[6]。
1.1 Turbo編碼原理
圖1 Turbo碼編碼器結(jié)構(gòu)框圖
1.2 Turbo譯碼原理
Turbo譯碼器主要由2個(gè)軟輸入軟輸出子譯碼器、交織器、硬判決器件和解交織器組成。2個(gè)子譯碼器分別與2個(gè)子編碼器相對(duì)應(yīng),它們之間通過交織器和解交織器相連,交織規(guī)則與編碼器中的交織規(guī)則一樣[8]。其結(jié)構(gòu)如圖2所示。
圖2 Turbo碼譯碼器結(jié)構(gòu)框圖
Turbo碼譯碼是一個(gè)迭代譯碼的過程:DEC1對(duì)分量編碼器1的輸出進(jìn)行最佳譯碼,生成信息序列{dk}中的每一比特位的似然信息,并將其中的外信息經(jīng)過交織器得到先驗(yàn)信息2送到DEC2,同時(shí)分量編碼器2的輸出校驗(yàn)序列2也輸入DEC2進(jìn)行最佳譯碼,產(chǎn)生交織后信息序列中每一比特的似然信息,而后將其中的外信息經(jīng)過解交織器得到的作為DEC1的先驗(yàn)信息,準(zhǔn)備進(jìn)行下一次迭代的譯碼。這就是一次迭代譯碼的過程。當(dāng)?shù)螖?shù)達(dá)到預(yù)定值后,對(duì)DEC2產(chǎn)生的似然信息解交織后再進(jìn)行硬判決,最后產(chǎn)生譯碼結(jié)果。
其中,子譯碼器是Turbo譯碼結(jié)構(gòu)的核心[9]。輸入包括信息序列、校驗(yàn)序列和由前一個(gè)子譯碼器產(chǎn)生的先驗(yàn)信息;輸出包括信息序列的似然信息和外信息;外信息經(jīng)過交織或者解交織后作為下一個(gè)譯碼器的先驗(yàn)信息輸入。圖3為采用軟輸入軟輸出的子譯碼器示意圖。
圖3 子譯碼器機(jī)構(gòu)框圖
1.3 Turbo譯碼算法
Turbo碼的糾錯(cuò)能力包括2個(gè)含義:一個(gè)是這種碼自身糾錯(cuò)的能力,另一個(gè)則是在特定譯碼算法下的糾錯(cuò)能力。子譯碼器作為整個(gè)譯碼結(jié)構(gòu)的核心,其任務(wù)是如何對(duì)3個(gè)軟輸入進(jìn)行處理,以獲得輸入信息序列dk的外信息及其軟輸出。目前主要有基于最大后驗(yàn)概率的譯碼算法MAP(Maximum Posterior Probability)和基于維特比的譯碼算法SOVA(Soft Output Viterbi Algorithm)兩大類[10],總結(jié)如下。
① MAP算法
是基于最大后驗(yàn)概率的算法,Turbo碼的最優(yōu)算法。其核心思想是譯碼時(shí)分別計(jì)算每一個(gè)碼元的后驗(yàn)概率,并依據(jù)這個(gè)后驗(yàn)概率來判斷該碼元的值。MAP 算法采用對(duì)數(shù)似然比函數(shù)作為其軟判決的輸出。MAP 算法也存在不足之處,其中存在大量的指數(shù)和乘法運(yùn)算,導(dǎo)致計(jì)算復(fù)雜性高、存儲(chǔ)空間大、譯碼延時(shí)大、不易于硬件實(shí)現(xiàn)和工程應(yīng)用。
② Log-MAP算法[11]
將MAP算法中的各個(gè)度量轉(zhuǎn)移對(duì)數(shù)域計(jì)算,將指數(shù)運(yùn)算變?yōu)榧臃ㄟ\(yùn)算,降低運(yùn)算量。原理可用公式表示為:
ln(ex1+ex2)= max(x1,x2)+ln(1+e-|x2-x1|)=
max(x1,x2)+fc(|x2-x1|),
(1)
式中,fc是一個(gè)相關(guān)函數(shù),可預(yù)先做成表,利用查表來完成運(yùn)算。
③ Max-Log-MAP算法
在對(duì)數(shù)域算法中,將加法表示式中的對(duì)數(shù)分量忽略掉,采用近似式:
ln(ex1+ex2)≈max(x1,x2)。
(2)
從而使得加法運(yùn)算完全變成求最大值運(yùn)算,進(jìn)一步降低計(jì)算復(fù)雜性,提高譯碼速率,但是會(huì)使得性能下降。
④ Scale-Max-Log-MAP算法
利用比例因子來進(jìn)一步降低在Max-Log-MAP算法中采用近似化處理對(duì)結(jié)果的影響。
⑤ SOVA算法
是基于最大似然函數(shù)的軟輸入軟輸出Viterbi算法。它在標(biāo)準(zhǔn) Viterbi 算法的基礎(chǔ)上進(jìn)行了修正,在刪除低似然路徑時(shí)保留必要的信息,從而為每個(gè)輸出比特提供一個(gè)可信度。其關(guān)鍵是利用最優(yōu)路徑和被刪路徑的度量差,差值越小意味著這次選取的可靠性越低。
在上述的幾種算法中,SOVA算法的計(jì)算復(fù)雜度最小、硬件實(shí)現(xiàn)較容易,但是性能最差;而MAP算法雖然有一些不足卻是最優(yōu)算法,其他3種近似算法性能雖然不如MAP算法,但是計(jì)算復(fù)雜度得以降低、譯碼速率顯著提高。由此可見,在實(shí)際應(yīng)用中要對(duì)譯碼性能和計(jì)算復(fù)雜度進(jìn)行權(quán)衡。
在CCSDS標(biāo)準(zhǔn)下的Turbo碼的結(jié)構(gòu)中[13],采用并行級(jí)聯(lián)結(jié)構(gòu)(PCCC),其成員碼為2個(gè)結(jié)構(gòu)完全相同的16狀態(tài)遞歸卷積碼,并且可以采用1/2、1/3、1/4、1/6 四種不同的碼率[14]。信息碼塊的長(zhǎng)度分別為1 784 bits、3 568 bits、7 136 bits、8 920 bits。編碼器的結(jié)構(gòu)如圖4所示。
圖4 CCSDS標(biāo)準(zhǔn)下的Turbo編碼器結(jié)構(gòu)
在 CCSDS 標(biāo)準(zhǔn)中,每個(gè)分量編碼器有4個(gè)移位寄存器,這就決定了每個(gè)分量編碼器有16個(gè)狀態(tài),同時(shí)也決定了在信息比特的末端需要增加的尾比特?cái)?shù)目為 4。因?yàn)橛形脖忍氐拇嬖?,Turbo 碼的實(shí)際碼長(zhǎng)為n=(k+4)/r,式中k為信息位的長(zhǎng)度,r為碼率。
CCSDS標(biāo)準(zhǔn)對(duì)交織器的交織算法也做了具體的規(guī)定。CCSDS 標(biāo)準(zhǔn)建議的交織器用交織算法將 1、2、k,…,組成的整數(shù)序列置亂,其中k=k1*k2,對(duì)于所有支持的數(shù)據(jù)幀長(zhǎng)度,k1=8,相應(yīng)于數(shù)據(jù)幀長(zhǎng)有1 784、3 568、7 136和8 920。對(duì)于不同的信息塊長(zhǎng)度,k1和k2的取值如表1所示,表中還給出了不同碼率下的碼子長(zhǎng)度。
表1 特定信息塊長(zhǎng)度在不同碼率下的碼字長(zhǎng)度及k1、k2取值
具體的交織算法如下,給定8個(gè)素?cái)?shù):
p1=31;p2=37;p3=43;p4=47;
p5=53;p6=59;p7=61;p8=67。
對(duì)s= 1,2,……k,根據(jù)給出的公式計(jì)算映射數(shù)值I(s),其中,s為置亂前的位置編號(hào),I(s)為置亂后對(duì)應(yīng)的位置編號(hào):
m=(s-1)mod 2,
(3)
(4)
(5)
(6)
q=tmod 8+1,
(7)
c=(pqj+21m)modk2,
(8)
(9)
在交織器仿真運(yùn)算中,尾比特也會(huì)隨著信息比特一起進(jìn)入交織器,但尾比特的位置信息保持不變,即尾比特不參與交織運(yùn)算。
本人利用MATLAB 設(shè)計(jì)了基于 CCSDS 標(biāo)準(zhǔn)的 Turbo 碼編碼和譯碼程序[15],可實(shí)現(xiàn) CCSDS 標(biāo)準(zhǔn)規(guī)定的所有碼長(zhǎng)和碼率。信號(hào)采用 BPSK 調(diào)制,信道中加入高斯白噪聲干擾,不考慮信道的衰減特性。
待編碼的信息比特由隨機(jī)產(chǎn)生的 0/1 序列代替,每次仿真對(duì)9幀數(shù)據(jù)進(jìn)行編譯碼運(yùn)算,則每次待編碼的信息比特?cái)?shù)目至少為1 784 *9=16 056,在這個(gè)數(shù)量級(jí)的信息比特?cái)?shù)目下,可以忽略不同隨機(jī)序列對(duì)誤碼率的影響。
針對(duì)可能對(duì)誤碼率有影響的多種參數(shù),分別進(jìn)行仿真測(cè)試,并且在Pe~Eb/N0平面進(jìn)行了分析。將重點(diǎn)分析采用Log-MAP算法時(shí)迭代次數(shù)和碼率的影響,以及對(duì)比采用Log-MAP、Max-Log-MAP、Scale-Max-Log-MAP三種修正算法時(shí)的性能。
3.1 迭代次數(shù)的影響
采用Log-MAP算法,信息塊長(zhǎng)度為1 784 bits,碼率為1/6;迭代次數(shù)分比為1、2、4、8。曲線如圖5所示。
圖5 Turbo碼譯碼迭代次數(shù)對(duì)誤碼率性能的影響
從圖5中可以看出,隨著迭代次數(shù)的增加,誤碼率性能逐漸變好。指定誤碼率為10-6來比較性能差異,迭代一次需要大于2.5 dB的信噪比,迭代2次大概需要1.6 dB,迭代4、8次分別需要0.6 dB、0.4 dB。需要注意的是,隨著迭代次數(shù)的增加,會(huì)引起譯碼延遲并帶來更高的譯碼復(fù)雜度,仿真計(jì)算時(shí)間差異明顯。較高的譯碼復(fù)雜度將會(huì)帶來很小的性能增益,當(dāng)?shù)螖?shù)增加達(dá)到一個(gè)特定的值時(shí)就顯得不那么有效了。所以在實(shí)際的深空通信系統(tǒng)中要折衷考慮,根據(jù)需要來選擇合適的迭代次數(shù)。通常情況下,可以在系統(tǒng)中加入一個(gè)終止準(zhǔn)則。每次譯碼后的臨時(shí)輸出會(huì)經(jīng)過一次動(dòng)態(tài)的檢測(cè),當(dāng)滿足終止準(zhǔn)則時(shí)就會(huì)停止迭代。這樣就可以節(jié)省計(jì)算空間和時(shí)間。
3.2 碼率的影響
采用Log-MAP算法,信息塊長(zhǎng)度為1 784 bits,迭代次數(shù)為8;碼率分比為1/3、1/4、1/6。曲線如圖6所示。
圖6 Turbo碼譯碼碼率對(duì)誤碼率性能的影響
可以從中看出,隨著碼率的降低,誤碼率性能逐漸變好。這是因?yàn)?,碼率越低,編碼后的碼長(zhǎng)就會(huì)越長(zhǎng),相應(yīng)的校驗(yàn)位就會(huì)越多,譯碼性能就會(huì)越好。通過誤碼率為10-6的點(diǎn)來比較性能差異的話,碼率為1/6大概需要0.35 dB的信噪比,碼率為1/4需要大約0.6 dB、碼率為1/3需要大于0.8 dB的信噪比。同時(shí)也要注意到,碼率降低會(huì)使得譯碼的復(fù)雜度增加。所以在一個(gè)實(shí)際的深空通信的系統(tǒng)設(shè)計(jì)中,應(yīng)根據(jù)實(shí)際需求和目標(biāo)選擇碼長(zhǎng)或碼率。
3.3 譯碼算法的影響
信息塊長(zhǎng)度為1 784 bits,迭代次數(shù)為8,碼率為1/6,曲線如圖7所示。
圖7 Turbo碼不同譯碼算法對(duì)誤碼性能的影響
考慮了3種算法Log-MAP、Max-Log-MAP、和Scale-Max-Log-Map對(duì)誤碼率性能的影響。通過誤碼率為10-5的點(diǎn)來比較性能差異,Log-MAP大概需要0.21 dB、Max-Log-MAP大約需要0.73 dB,Scale-Max-Log-Map大約需要0.41 dB。由此,這3種算法的差異是很明顯的。
Log-MAP是性能最佳的譯碼算法,但相比另外2種近似算法它在譯碼時(shí)需要更多的時(shí)間。近似算法Max-Log-MAP,雖然提高了計(jì)算效率但是精度下降使得性能有些損失。Scale-Max-Log-Map則是二者很好的折中。
由于深空通信的特點(diǎn)與特征,使得信號(hào)在傳輸過程中會(huì)面臨損耗、性能及質(zhì)量等各方面的問題,這就必須要不斷提高通信系統(tǒng)的基本要求,而優(yōu)良的信道編碼方案成為了一種必然的選擇。
本文介紹了Turbo編碼和譯碼的基本原理,結(jié)合CCSDS標(biāo)準(zhǔn)中給出的Turbo編譯碼方案,進(jìn)行了深空通信系統(tǒng)的仿真實(shí)現(xiàn)與測(cè)試,并且發(fā)現(xiàn)隨著迭代次數(shù)的增加、碼率的降低以及采用適當(dāng)?shù)淖g碼算法會(huì)提升系統(tǒng)的誤碼率性能,但同時(shí)會(huì)使得系統(tǒng)的計(jì)算復(fù)雜度變大,所以通常需要根據(jù)實(shí)際情況折中考慮。
[1] Berrou C,Glavieux A,Thitimajshima P.Near Shannon Limit Error-correcting Coding and Decoding:Turbo Codes[C]∥in Proc.Int.Conf.Communications,1993:1064-1070.
[2] 張更新,謝智東,沈志強(qiáng).深空通信的現(xiàn)狀與發(fā)展[J].數(shù)字通信世界,2010(4):82-86.
[3] 張乃通,李暉,張欽宇.深空探測(cè)通信技術(shù)發(fā)展趨勢(shì)及思考[J].宇航學(xué)報(bào),2007,28(4):786-79.
[4] Consultative Committee for Space Data Systems.Recommendations for Space Data System Standards.Telemetry Channel Coding.CCSDS 101.0-B-4.Bluebook[S],1999.
[5] Andrews K S,Divsalar D,Dolinar S,et al.The Development of Turbo and LDPC Codes for Deep-Space Applications[J].Proceedings of the IEEE,2007,95(11):2142-2156.
[6] 劉東華.Turbo碼原理與應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2004.
[7] 張凱.CCSDS標(biāo)準(zhǔn)Turbo碼譯碼器設(shè)計(jì)及實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2013.
[8] 韓超.面向CCSDS標(biāo)準(zhǔn)的深空通信信道編譯碼算法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.
[9] 張桂華,姬紅兵,胡家佺,等.一種實(shí)用的Turbo碼編譯碼設(shè)計(jì)[J].飛行器測(cè)控學(xué)報(bào),2008,27(3):44-49.
[10] 李旭東,楊亮.Turbo碼在深空通信中應(yīng)用[J].無線電通信技術(shù),2010,36(4):58-60.
[11] Lou Xizhong,Mao Zhigang.Study on the Simplification of Log-MAP Algorithm for Turbo Decoding[J].Acta Aeronautica et Astronautica Sinica,2005,26(5):581-586.
[12] 向良軍,劉東華,鄭林華.基于CCSDS的Turbo碼譯碼器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2011(s1):282-286.
[13] Consultative Committee for Space Data Systems.Recommendations for Space Data System Standards.TM Synchronization and Channel Coding.CCSDS 131.0-B-2.BlueBook[S].2011.
[14] 馮戰(zhàn),侯孝民,鄭海昕,等.基于CCSDS標(biāo)準(zhǔn)的Turbo碼譯碼性能仿真研究[J].無線電工程,2014(4):7-9.
[15] Berner J B,Andrews K S.Deep Space Network Turbo Decoder Implementation[C]∥ Aerospace Conference,2001,IEEE Proceedings.IEEE,2001,3:1149-1157.
ResearchandSmulationImplementationofTurboCodeBasedonCCSDSStandard
YANG Ze-kun,JIN Dong-li
(Beijing Institute of Tracking and Telecommunications Technology,Beijing 100094,China)
Turbo code is an excellent and efficient channel coding scheme,recommended by CCSDS (Consultative Committee for Space Data System) as one of channel coding in deep space communication.Firstly,this paper introduces the basic principle of coding and decoding in Turbo code.Based on CCSDS standard in deep space communication,the implementation and simulation of Turbo coding and decoding is presented.Some parameters which may influence BER performance are simulated by Matlab software,such as iteration times,code rate,and decoding algorithm.Some analysis based on simulation results are given further.
channel coding;Turbo code;CCSDS
TN911.22
A
1003-3114(2017)06-86-5
10.3969/j.issn.1003-3114.2017.06.21
楊澤坤,晉東立.面向CCSDS標(biāo)準(zhǔn)的Turbo碼的研究與仿真實(shí)現(xiàn)[J].無線電通信技術(shù),2017,43(6):86-90.
[YANG Zekun,JIN Dongli.Research and Smulation Implementation of Turbo Code Based on CCSDS Standard[J].Radio Communications Technology,2017,43(6):86-90.]
2017-07-18
中國(guó)博士后科學(xué)基金項(xiàng)目(2016M601286)
楊澤坤(1993—),男,碩士研究生,主要研究方向:信道編碼、衛(wèi)星通信。晉東立(1963—),男,研究員,碩士生導(dǎo)師,主要研究方向:無線通信。