梁立林
(中國電子科技集團(tuán)公司第十研究所,四川 成都 610036)
1993 年,Turbo 碼的發(fā)明掀起了信道編碼理論和技術(shù)的一場革命,對該領(lǐng)域的理論和工程實(shí)現(xiàn)產(chǎn)生了深遠(yuǎn)的影響。如今,Turbo 碼被廣泛用于民用3G 和4G 通信以及數(shù)據(jù)鏈通信等系統(tǒng)中。
在5G 發(fā)展的推動(dòng)下,2016 年,以Ericsson和Orange 為代表的一些公司和機(jī)構(gòu)提出了增強(qiáng)型Turbo 碼方案。該增強(qiáng)型Turbo 碼在長期演進(jìn)(Long Term Evolution,LTE)標(biāo)準(zhǔn)Turbo 碼的基礎(chǔ)上進(jìn)行了一系列的改進(jìn),如文獻(xiàn)[1]提出了咬尾編碼方案,使增強(qiáng)型Turbo 碼在短碼時(shí)也有良好性能,同時(shí)也解決了高碼率下的錯(cuò)誤平層問題;文獻(xiàn)[2]通過引入更多的校驗(yàn)比特分支,使低碼率場景性能得到了提升。此外,增強(qiáng)型Turbo 碼也引入了新的打孔、交織方案等。增強(qiáng)型Turbo 碼相比于傳統(tǒng)Turbo 碼性能提升明顯,且實(shí)現(xiàn)結(jié)構(gòu)改動(dòng)較小,易于工程實(shí)現(xiàn),具有極高的研究價(jià)值。
隨著近些年軍事裝備的高速發(fā)展,數(shù)據(jù)鏈通信領(lǐng)域?qū)垢蓴_性和通信速率提出了更高的要求,因此編譯碼器需要更高的誤碼率(Bit Error Ratio,BER)性能和更大的碼率范圍。本文基于增強(qiáng)型Turbo 碼方案,進(jìn)行了并行譯碼算法的研究。首先參考增強(qiáng)型Turbo 碼的設(shè)計(jì)思路,采用咬尾碼方案,提升了高碼率下的性能;其次設(shè)計(jì)了更低碼率的編譯碼結(jié)構(gòu),改善了低碼率場景下的性能;最后結(jié)合并行譯碼算法和數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)芯片的優(yōu)化技術(shù),對譯碼器的DSP 實(shí)現(xiàn)進(jìn)行了優(yōu)化,使譯碼計(jì)算效率得到了大幅提升。
增強(qiáng)型Turbo 碼采用咬尾編碼結(jié)構(gòu),編碼時(shí)先進(jìn)行一次預(yù)編碼,根據(jù)預(yù)編碼輸出狀態(tài)計(jì)算得到能咬尾的初始狀態(tài),再用該初始狀態(tài)進(jìn)行第二次編碼,從而得到編碼輸出。此方法使每個(gè)分量編碼器的初始和最終狀態(tài)都是相同的,并且咬尾編碼結(jié)構(gòu)沒有引入額外的傳輸比特,因此沒有碼率損失。同時(shí),碼的網(wǎng)格圖可看成環(huán),迭代譯碼的過程可以看作是在網(wǎng)格圖上的不斷循環(huán),循環(huán)的結(jié)構(gòu)避免了低權(quán)重截?cái)啻a字的出現(xiàn),因此采用咬尾的方式能有效解決目前Turbo 碼存在的錯(cuò)誤平層問題[1]。
LTE Turbo 碼的母碼率為1/3,通過打孔和重復(fù)方式可改變碼率。增強(qiáng)型Turbo 碼相對于LTE Turbo碼增加了兩路校驗(yàn)位,可支持更低的母碼率,低碼率下更具性能優(yōu)勢[2]。
增強(qiáng)型Turbo 碼采用的是近似正則置換(Almost Regular Permutation,ARP)交織器[1]。為取得更好的性能,增強(qiáng)型Turbo 碼的交織器和打孔采用了聯(lián)合設(shè)計(jì)方法。增強(qiáng)型Turbo 編碼器的結(jié)構(gòu)如圖1所示。
圖1 增強(qiáng)型Turbo 碼編碼器結(jié)構(gòu)
采用咬尾編碼方案后,碼的網(wǎng)格圖可看成環(huán)。最大后驗(yàn)概率(Maximum A Posteriori,MAP)迭代譯碼的過程可以看作是在環(huán)狀網(wǎng)格圖上的不斷循環(huán),且無須進(jìn)行尾比特特殊處理,第一次迭代時(shí)前向和后向度量可初始化為等概率值。通過兩個(gè)軟輸入軟輸出譯碼器循環(huán)不斷地交替譯碼,來改善相互傳遞的外信息[3]。
Turbo 譯碼器結(jié)構(gòu)如圖2 所示。接收信息經(jīng)解打孔器后得到y(tǒng)s,y p和y^p,分別為系統(tǒng)位信息、校驗(yàn)位信息和經(jīng)過交織的校驗(yàn)位信息。L為譯碼器輸入的先驗(yàn)信息,Le為譯碼器輸出的外信息,LLR為最終譯碼輸出的對數(shù)似然比。
圖2 Turbo 譯碼器結(jié)構(gòu)
目前常見的MAP算法有Log-MAP、Max-Log-MAP、SF-Max-Log-MAP 等。相對于Max-Log-MAP,SFMax-Log-MAP 僅增加了在外信息傳遞時(shí)乘以SF 修正因子的步驟,性能卻得到了較大提升,并與Log-MAP相差不到0.1 dB[4]。因此在實(shí)際工程中,更適合采用SF-Max-Log-MAP 算法來降低運(yùn)算復(fù)雜度。
SF-Max-Log-MAP算法基于編碼的網(wǎng)格圖,其中,s′為前一個(gè)狀態(tài),s為當(dāng)前狀態(tài),為k時(shí)刻對應(yīng)的發(fā)射系統(tǒng)位,為對應(yīng)的發(fā)射校驗(yàn)位,為對應(yīng)接收到的系統(tǒng)位信息,為接收到的校驗(yàn)位信息。定義Ak(s)為對數(shù)前向狀態(tài)度量;Bk(s)為對數(shù)后向狀態(tài)度量;Γk(s′,s)為對數(shù)分支度量;Lc為信道信噪比參數(shù);L(uk)為先驗(yàn)信息;LLR(uk)為對數(shù)似然比;Le(uk)為外信息;SF為比例因子,取值為0.75。
在計(jì)算前向和后向狀態(tài)度量時(shí),隨著迭代次數(shù)的增加,計(jì)算結(jié)果幅度逐漸增大,會(huì)導(dǎo)致定點(diǎn)實(shí)現(xiàn)時(shí)結(jié)果溢出,所以采取最大值歸一化方法來限制其幅度。整理算法公式如下:
MAP 譯碼算法采用的是遞歸的計(jì)算方式,這導(dǎo)致譯碼器難以實(shí)現(xiàn)并行化,因此為了減少譯碼延遲,可采用并行譯碼算法。常用的并行譯碼算法有傳統(tǒng)的分塊并行譯碼算法和較為先進(jìn)的全并行譯碼算法[5]。分塊并行譯碼算法中的邊界狀態(tài)迭代分塊并行譯碼算法中[6],各子塊間沒有交疊,每完成一次迭代,將各子塊交換相鄰邊界處的前向和后向狀態(tài)度量作為下一次迭代的初值,隨著迭代的進(jìn)行,邊界值也將不斷逼近真實(shí)值。增強(qiáng)型Turbo 碼采用了咬尾編碼方案,因此各子塊相鄰邊界處的前向和后向狀態(tài)度量也能自然銜接,更加符合邊界狀態(tài)迭代分塊并行算法的結(jié)構(gòu)。此外,考慮DSP 實(shí)現(xiàn)的復(fù)雜度,選用邊界狀態(tài)迭代分塊并行譯碼算法。
設(shè)原始碼塊長度為L,將其分成M個(gè)并行子塊。分別表示m子塊在第i次迭代時(shí)k位置處的前向和后向狀態(tài)度量,m編號(hào)為1~M。初次迭代時(shí),將前向和后向狀態(tài)度量的初值設(shè)置為等概率值。后續(xù)迭代中,將第i次迭代中m子塊的前向狀態(tài)度量最終值作為第i+1 次迭代時(shí),mod(m+1,M)子塊的初始值將第i次迭代中mod(m+1,M)子塊的后向狀態(tài)度量終值作為第i+1 次迭代時(shí),m子塊的初值
增強(qiáng)型Turbo 碼增加了1/5 的母碼率設(shè)計(jì),在文獻(xiàn)[7]的仿真中,相對于從1/3 碼率簡單重復(fù)得到1/5 碼率的Turbo 碼有0.5 dB 的BER 性能提升。參考這一思路,本文提出了1/7 和1/9 的母碼率設(shè)計(jì)方案,編碼器結(jié)構(gòu)如圖3 所示。
圖3 改進(jìn)的Turbo 編碼器結(jié)構(gòu)
在碼長為2 020,調(diào)制方式為二進(jìn)制相移鍵控(Binary Phase Shift Keying,BPSK),信道為加性高斯白噪聲(AdditiveWhiteGaussianNoise,AWGN),BER為10-5的仿真實(shí)驗(yàn)場景下,迭代12次,仿真驗(yàn)證結(jié)果如圖4 所示。相對于以1/3 碼率重復(fù)得到1/5 碼率的方案,1/5 母碼率方案有0.6 dB的BER性能提升;相對于以1/5 碼率重復(fù)得到1/7碼率的方案,1/7 母碼率方案有0.5 dB 的BER性能提升;相對于以1/7 碼率重復(fù)得到1/9 碼率的方案,1/9 母碼率方案有0.4 dB 的BER性能提升。
圖4 低母碼率方案性能對比
本文選用的是TEXAS INSTRUMENTS(簡稱TI)公司的TMS320C6678 多核DSP 芯片。TMS320C6678是TI 基于KeyStone 的多核數(shù)字信號(hào)處理器,主頻高達(dá)1.25 GHz,集成了8 個(gè)C66x CorePac,其中每個(gè)核都有各自獨(dú)立的L1 和L2 緩存,具有4 MB 共享內(nèi)存空間[8]。
TI 針對C66x 系列內(nèi)核程序優(yōu)化,提供了高效的編譯器,可自動(dòng)進(jìn)行軟件流水優(yōu)化。同時(shí),也提供了很多高效的數(shù)學(xué)計(jì)算內(nèi)聯(lián)函數(shù),因此可利用內(nèi)聯(lián)函數(shù)進(jìn)行并行計(jì)算優(yōu)化,提高計(jì)算效率[9]。例如,使用_dsadd2()內(nèi)聯(lián)函數(shù)可實(shí)現(xiàn)4 個(gè)short 類型的并行飽和加法。
根據(jù)硬件實(shí)現(xiàn)的需求,譯碼器實(shí)現(xiàn)時(shí),需將浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的定點(diǎn)數(shù)據(jù)。通常輸入譯碼器數(shù)據(jù)按照6 bit 量化時(shí),可以獲得接近浮點(diǎn)的算法性能。根據(jù)項(xiàng)目需求,如表1 所示,本文設(shè)計(jì)接收信息y位寬為8 bit。參考文獻(xiàn)[10]的分析,結(jié)合MAP 算法計(jì)算公式,可設(shè)計(jì)Γ位寬為11 bit,A和B位寬為13 bit,LLR位寬為15 bit,Le位寬為11 bit。最后根據(jù)DSP 的運(yùn)算單元數(shù)據(jù)類型,設(shè)計(jì)接收信息y使用8 bit 的char 型數(shù)據(jù),Γ,A,B,LLR和Le相應(yīng)擴(kuò)展數(shù)據(jù)位寬,并使用16 bit 的short 型數(shù)據(jù)。
表1 定點(diǎn)量化設(shè)計(jì)
根據(jù)前面推導(dǎo)的譯碼算法的計(jì)算過程,可將DSP 實(shí)現(xiàn)歸納為以下步驟:
(1)計(jì)算分支度量Γ;
(2)根據(jù)Γ計(jì)算狀態(tài)度量A和B;
(3)根據(jù)A和B計(jì)算外信息Le;
(4)將外信息經(jīng)過交織或解交織后得到的信息作為另一分量譯碼器的先驗(yàn)信息;
(5)重復(fù)1~4 步驟,直到完成設(shè)定的迭代次數(shù),將最后一次的LLR判決譯碼輸出。
由Γ的計(jì)算公式(5)可知,其中的g(xk,yk)不包含先驗(yàn)信息,可預(yù)先計(jì)算,而不必每次迭代重復(fù)計(jì)算。另外,根據(jù)圖3 的編碼器結(jié)構(gòu)可推導(dǎo)出其編碼狀態(tài)轉(zhuǎn)移表如表2 所示。觀察編碼狀態(tài)轉(zhuǎn)移表可知,在輸出校驗(yàn)位的位數(shù)小于4 時(shí),輸出校驗(yàn)位取值有對稱相等的情況,可利用其對稱性減少分支度量的重復(fù)計(jì)算及數(shù)據(jù)存取。例如,校驗(yàn)位為3 位時(shí),當(dāng)前狀態(tài)為0,輸入比特為0 時(shí),下一狀態(tài)為0 和4 時(shí)的校驗(yàn)位輸出都為000。
表2 編碼狀態(tài)轉(zhuǎn)移表
譯碼算法主要是加法、減法和max 計(jì)算,可以選擇DSP 支持的內(nèi)聯(lián)函數(shù)_dsadd2()、_dssub2()和_dmax2()。以上內(nèi)聯(lián)函數(shù)能夠支持64 bit 的long long類型數(shù)據(jù)位寬,可同時(shí)對4 個(gè)short 類型數(shù)據(jù)進(jìn)行并行計(jì)算。根據(jù)前面并行譯碼算法的分析,可將原始碼塊劃分成4 個(gè)并行計(jì)算的子塊,正好匹配4 倍并行內(nèi)聯(lián)函數(shù),從而提高計(jì)算效率。
通過以上分支度量計(jì)算優(yōu)化和并行譯碼算法的改進(jìn),極大提升了譯碼算法的計(jì)算效率。采用單核計(jì)算,利用DSP 芯片內(nèi)timer 計(jì)數(shù)測量程序運(yùn)行時(shí)鐘周期,結(jié)果如表3 所示。所驗(yàn)證場景的碼塊長度為2 020,譯碼迭代12 次。
表3 DSP 實(shí)現(xiàn)優(yōu)化計(jì)算效率提升
對DSP 并行定點(diǎn)實(shí)現(xiàn)算法和非并行浮點(diǎn)算法性能進(jìn)行仿真對比。在碼長為2 020,調(diào)制方式為BPSK,信道為AWGN 的場景下,迭代12 次,驗(yàn)證碼率分別為1/3,1/5,1/7,1/9 時(shí),譯碼器的BER性能仿真結(jié)果如圖5 所示。從圖5 中可以看出,并行定點(diǎn)實(shí)現(xiàn)算法和非并行浮點(diǎn)算法性能一致,各碼率下未出現(xiàn)明顯的錯(cuò)誤平層問題。此外,該DSP 實(shí)現(xiàn)的譯碼器在工程項(xiàng)目中得到了驗(yàn)證,性能也和仿真一致。
圖5 譯碼器BER 性能驗(yàn)證
本文在數(shù)據(jù)鏈通信系統(tǒng)的項(xiàng)目需求背景下,研究了5G Turbo 譯碼增強(qiáng)方案,針對傳統(tǒng)Turbo 碼的不足,提出了改進(jìn)設(shè)計(jì)。此外,結(jié)合并行譯碼算法對譯碼器的DSP 實(shí)現(xiàn)進(jìn)行了優(yōu)化。仿真和項(xiàng)目驗(yàn)證表明,該設(shè)計(jì)性能達(dá)到預(yù)期,具有較高的工程應(yīng)用價(jià)值。