王華華,馬 昶,亢 成
(重慶郵電大學(xué) 重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
Turbo碼在低信噪比下所表現(xiàn)出的近Shannon限的性能使其在移動(dòng)通信領(lǐng)域中有著廣闊的應(yīng)用前景[1].由于Turbo碼編碼方式靈活、譯碼算法復(fù)雜,不適合在傳統(tǒng)硬件電路上實(shí)現(xiàn),并且在LTE-A的PDSCH(Physical downlink shared channel,物理下行共享信道)接收端實(shí)現(xiàn)模塊中,Turbo譯碼耗時(shí)最多.所以本文使用TI公司TMS320C6670多核DSP[2](Digital Signal Processor,數(shù)字信號(hào)處理器)對(duì)Turbo譯碼進(jìn)行實(shí)現(xiàn).該型號(hào)DSP的應(yīng)用可以提高無(wú)線通信系統(tǒng)在接收端的效率,并且它能適應(yīng)WCDMA,FDD/TDD LTE-A,Wi-MAX三種標(biāo)準(zhǔn)[3].
Turbo譯碼最常用就是迭代思想,其主要采用的譯碼算法有MAP(Max-imum A Posteriori,最大后驗(yàn)概率),Log-MAP和降低復(fù)雜度的Max-Log-MAP三種[4].
MAP算法是基于碼字格圖的SISO譯碼算法,目的是使譯碼輸出比特錯(cuò)誤概率最小.譯碼器的輸入序列設(shè)為y=yN=(y1,y2…yN),uk的對(duì)數(shù)似然比[5](logLikelihood ratio)L(uk)定義如下:
(1)
譯碼結(jié)果需按照以下規(guī)則判決:
(2)
最優(yōu)的SISO算法是MAP算法,但它的計(jì)算復(fù)雜度高,根據(jù)貝葉斯與全概率公式,每個(gè)信息比特的L(uk)計(jì)算式[6]如下:
(3)
為了降低MAP算法運(yùn)算的復(fù)雜度,后來(lái)提出了Log-MAP算法,該算法是在對(duì)數(shù)域中對(duì)MAP算法運(yùn)算,將乘法轉(zhuǎn)換為加法,所以要比實(shí)現(xiàn)MAP算法簡(jiǎn)單,降低了復(fù)雜度,適用于硬件實(shí)現(xiàn).Log-MAP算法用定義的式(4)的近似算法來(lái)消除對(duì)數(shù)和指數(shù)的運(yùn)算.
(4)
該方法雖然簡(jiǎn)化了算法復(fù)雜度但也引入了誤差,因此不是最優(yōu)算法.Max-Log-MAP算法消除了Log-MAP算法中雅可比公式的修正函數(shù),可得[7]:
ln(ex+ey) =max(x,y)+ln(1+e-|x-y|)
=max(x,y)+f(|x-y|)
(5)
如果再簡(jiǎn)化,使f(|x-y|)=0,得出
ln(ex+ey)=max(x,y)
(6)
表1 幾種譯碼算法的復(fù)雜性比較Table 1 Comparing the complexity of several decoding algorithms
表1是MAP算法及其簡(jiǎn)化算法復(fù)雜度的比較,編碼記憶長(zhǎng)度定義為n.由上表可知,MAP乘法運(yùn)算量在3種算法中最大,因此復(fù)雜度是最高的;Log-MAP算法次之,Max-Log-MAP算法最小.
圖1 算法性能比較Fig.1 Algorithm performance comparison
MAP算法的計(jì)算過(guò)程中包含著復(fù)雜的乘法和指數(shù)運(yùn)算,硬件實(shí)現(xiàn)難度大,所以仿真不予考慮MAP算法,只對(duì)Log-MAP和Max-Log-MAP兩種算法進(jìn)行了性能對(duì)比.仿真采用了3GPP標(biāo)準(zhǔn)交織器,碼率為1/3,1024交織長(zhǎng)度以及5次迭代.從圖1性能曲線可以發(fā)現(xiàn),Log-MAP算法性能較Max-Log-MAP算法更優(yōu).在10-3~10-4誤碼率時(shí),兩種算法性能差異大約在0.1dB(0.2dB之間.這是因?yàn)镸ax-Log-MAP簡(jiǎn)化了修正項(xiàng)函數(shù),所以性能上有所下降,但是該算法誤比特率在可接受的范圍之內(nèi)并且便于硬件實(shí)現(xiàn),所以實(shí)際應(yīng)用中采用Max-Log-MAP算法.
目前DSP廣泛應(yīng)用于軟基站、小型基站以及無(wú)線電的基帶處理[8].因此,DSP處理器性能直接成為一個(gè)制約系統(tǒng)的重要因素.TMS320C6670是TI公司推出的一款每個(gè)核的主頻達(dá)到1.2GHz的四核定點(diǎn)/浮點(diǎn)DSP,是一塊專用于通信的DSP芯片[9].
DSP內(nèi)核及二級(jí)內(nèi)存單元與TCP3d數(shù)據(jù)交換的結(jié)構(gòu)如圖2.TCP3d控制寄存器控制整個(gè)狀態(tài),其中包括總線傳輸能力、相關(guān)編碼信息、譯碼性能等.同步事件產(chǎn)生模塊控制EDMA的讀/寫同步事件;譯碼處理單元與內(nèi)存存儲(chǔ)模塊負(fù)責(zé)譯碼和存儲(chǔ).
圖2 數(shù)據(jù)處理與交換結(jié)構(gòu)圖Fig.2 Data processing and exchange structure diagram
EDMA[10](Enhanced Direct Memory Access,增強(qiáng)型直接內(nèi)存存取)完成參數(shù)配置并啟動(dòng)后,EDMA通道將進(jìn)入使能狀態(tài)并等待觸發(fā).EDMA通道被觸發(fā)后,會(huì)根據(jù)PaRAM(Parameter RAM,參數(shù)RAM)將數(shù)據(jù)和控制信息傳輸?shù)较鄳?yīng)內(nèi)存空間,接著觸發(fā)譯碼模塊.譯碼完成后,通過(guò)寫同步事件觸發(fā)EDMA通道把處理后的數(shù)據(jù)搬到DSP內(nèi)核中.圖3顯示了Turbo譯碼過(guò)程基本觸發(fā)過(guò)程.
圖3 譯碼觸發(fā)過(guò)程Fig.3 Decoding triggering process
本文主要用于實(shí)現(xiàn)PDSCH接收端的Turbo譯碼,多核DSP處理Turbo譯碼時(shí)先要進(jìn)行一些硬件初始化,主要包括復(fù)位、清零、EDMA的初始化和通道配置等,另外還要配置一些PDSCH處理的參數(shù),TCP3d協(xié)處理器的主要參數(shù)配置見表2所示.
為了進(jìn)一步提高Turbo譯碼的效率使用了滑窗譯碼算法,該算法是將接收碼塊序列分割成子塊,然后將子塊送入到多個(gè)結(jié)構(gòu)相同并行的譯碼器進(jìn)行處理.滑窗譯碼算法如圖4所示,每個(gè)子塊通過(guò)多個(gè)滑動(dòng)窗分別使用Max-Log-MAP算法實(shí)現(xiàn)譯碼.
表2 TCP3d主要參數(shù)配置Table 2 TCP3d main parameter configuration
滑動(dòng)窗大小規(guī)定了6種不同的取法,其中包括16,32,48,64,96或128比特.另外還可以從圖4中看到頭延伸部分,可信部分和尾延伸部分.這是因?yàn)門urbo碼在編碼時(shí),編碼器的狀態(tài)轉(zhuǎn)換關(guān)系是連續(xù)的馬爾科夫過(guò)程.在譯碼時(shí),需要確定編碼器的初始狀態(tài)和終止?fàn)顟B(tài)以及狀態(tài)之間的轉(zhuǎn)換關(guān)系.把接收序列分割為多個(gè)子塊后,就破壞了狀態(tài)的連續(xù)性.頭延伸初始狀態(tài)和尾延伸終止?fàn)顟B(tài)都被設(shè)定為等概率,然后根據(jù)接收序列以及編碼器狀態(tài)轉(zhuǎn)換規(guī)律逐步對(duì)可信部分進(jìn)行計(jì)算.在可信部分、起始時(shí)刻值和終止時(shí)刻近似調(diào)整為分割前的狀態(tài)時(shí),頭延伸和尾延伸為冗余重疊的部分,此時(shí)計(jì)算譯碼輸出時(shí)只需考慮可信部分,所以雖然算法不會(huì)提升Turbo譯碼性能,但會(huì)減少處理的時(shí)延.
圖4 滑窗譯碼算法Fig.4 Sliding window decoding algorithm
根據(jù)芯片特性及工作原理,本文設(shè)計(jì)的Turbo譯碼的基本流程由以下步驟組成:
1)DSP硬件初始化,包括清零、復(fù)位、選擇大小端等.
2)輸入數(shù)據(jù)的量化與配置控制信息.輸入數(shù)據(jù)的量化主要是調(diào)整尾比特?cái)?shù)據(jù)格式.配置控制信息有工作模式選擇、滑動(dòng)窗口、碼塊大小等.
3)EDMA的初始化與通道配置.初始化后.將輸入的數(shù)據(jù)、控制信息、交織表等搬移到對(duì)應(yīng)的內(nèi)存中.
4)EDMA搬移完成后,觸發(fā)TCP3d進(jìn)行Turbo譯碼.
5)譯碼完成后,EDMA接受到完成中斷,將狀態(tài)信息與判決數(shù)據(jù)搬移到DSP核內(nèi),整個(gè)過(guò)程結(jié)束.
使用多核DSP與單核DSP分別對(duì)符合3GPP協(xié)議碼率為1/3的Turbo編碼數(shù)據(jù)進(jìn)行譯碼.考慮誤幀率為10-4,塊大小在40-6144之間,滑窗大小為16、64或128比特,迭代為8(71/2)得到的譯碼性能分別如圖5和圖6所示.
圖5 多核DSP Turbo譯碼性能Fig.5 Decoding performance of multi core DSP Turbo
圖5和圖6分別為多核DSP與單核DSP達(dá)到特定的誤幀率目標(biāo)與碼塊大小所需的信噪比的關(guān)系圖.從圖5和圖6中都可以看出滑動(dòng)窗口長(zhǎng)度對(duì)Turbo譯碼性能有一定的影響,從16比特長(zhǎng)度增加到64比特長(zhǎng)度對(duì)Turbo譯碼性能有一定地提升.滑動(dòng)窗口長(zhǎng)度超過(guò)64比特之后,性能提升可以忽略不計(jì).通過(guò)圖5與圖6的對(duì)比發(fā)現(xiàn),碼塊長(zhǎng)度為101~103時(shí),多核DSP隨著碼塊長(zhǎng)度的增加,信噪比變化幅度比單核DSP大;碼塊長(zhǎng)度為103~104時(shí),多核DSP隨著碼塊長(zhǎng)度的變長(zhǎng),信噪比變化幅度與單核DSP相似.但是在相同的碼塊長(zhǎng)度情況下,多核DSP的信噪比性能優(yōu)于單核DSP.
圖6 單核DSP Turbo譯碼性能Fig.6 Decode performance of mononuclear DSP Turbo
為檢驗(yàn)基于多核DSP的Turbo譯碼處理性能,本文與單核DSP的實(shí)現(xiàn)進(jìn)行對(duì)比.如表3所示,在碼塊個(gè)數(shù)和迭代次數(shù)不同的情況下,對(duì)比了Turbo譯碼算法在單核DSP下的實(shí)現(xiàn)時(shí)間與多核DSP中TCP3d的處理時(shí)間.
從表3中可以發(fā)現(xiàn):第一是對(duì)于Turbo譯碼,單核DSP處理時(shí)間性能遠(yuǎn)低于TCP3d的處理時(shí)間性能,并且隨著碼塊數(shù)的增加,兩者處理的差距越來(lái)越明顯;第二是隨著迭代次數(shù)從1次變?yōu)?次,單核DSP處理的時(shí)間也變?yōu)榱舜蠹s原來(lái)的2倍,而TCP3d的處理時(shí)間略微增加,這是由于TCP3d對(duì)數(shù)據(jù)處理時(shí),處理時(shí)間分為了相關(guān)配置時(shí)間和數(shù)據(jù)處理時(shí)間兩部分.
對(duì)隨機(jī)二進(jìn)制信源經(jīng)過(guò)兩種DSP的Turbo編碼后,再進(jìn)行BPSK映射,之后經(jīng)過(guò)高斯白噪聲,最后經(jīng)過(guò)兩種DSP的如圖7性能圖形能夠看出,單核DSP與多核DSP測(cè)試的誤比特率都隨著信噪比的增加而降低.從圖中還可以發(fā)現(xiàn)多核DSP的性能比單核DSP的性能好,這是因?yàn)槎嗪薉SP應(yīng)用了TCP3d協(xié)處理器,協(xié)處理器的使用可以極大地提升多核DSP誤比特率的性能.
表3 不同碼塊和迭代次數(shù)下多核DSP與單核DSP處理時(shí)間對(duì)比Table 3 Comparison of multi-core DSP and single-core DSP processing time under different code blocks and iterations譯碼模塊.最終對(duì)比信源和譯碼結(jié)果進(jìn)而得出誤比特率.圖7為單核DSP與多核DSP測(cè)試后誤比特率性能對(duì)比曲線.
圖7 單核DSP與多核DSP誤比特率對(duì)比Fig.7 Comparison of bit error rate between mononuclear DSP and multi-core DSP
本文對(duì)TI C66系列DSP中的TCP3d基本原理進(jìn)行了詳細(xì)的介紹,并對(duì)不同的譯碼算法進(jìn)行了分析,著重分析了數(shù)據(jù)在多核DSP與單核DSP中的譯碼性能、譯碼時(shí)間開銷和誤比特率性能,通過(guò)比較發(fā)現(xiàn)單核DSP處理性能遠(yuǎn)低于TCP3d協(xié)處理器.本文將Turbo譯碼實(shí)現(xiàn)方法有效減少開發(fā)難度以及提高數(shù)據(jù)處理速度,大幅提升了LTE-A 數(shù)字基帶系統(tǒng)處理性能,也為其他多核DSP的應(yīng)用開發(fā)提供參考.