竇茂森,黃玉斌,何 鵬,張運福,歐 斌
(1.91404 部隊,河北 秦皇島 066000;2.重慶金美通信有限責任公司,重慶 400030)
TMS320C6670(以下簡稱C6670)是TI 公司的一款新型Keystone 多核SoC 架構DSP,主要針對領域為高性能無線基礎設備。C6670 功能強大,支持TD-SCDMA、TD-SCDMA、TDD-LTE、FDD-LTE及WiMAX 等無線標準協議,能夠達到兩路400 Mbps 的20-MHZ LTE 系統數據處理能力[1]。
TCP3D 是一款集成在C6670 中的可配置協處理器,支持3GPP、LTE 及WiMAX 三種協議的turbo 譯碼。LTE 模式下主要是針對的卷積turbo碼(以下簡稱CTC)譯碼。TCP3D 支持譯碼原生碼率1/3,迭代次數1 ~15 可選,譯碼碼塊大小40 ~8192 可選。C6670 中內部集成了3 個TCP3D協處理器可并行進行譯碼,在LTE 工作模式下最高速率可達548 Mbps。本文主要針對在LTE 模式下TCP3D 的CTC 譯碼的實現[2]。TCP3D 協處理器基本結構圖如圖1 所示。

圖1 TCP3D 內部結構圖
CTC 譯碼結構采用的是軟輸入軟輸出(SISO)的迭代(Iteration)譯碼結構,如圖2 所示,是通過兩級結構完全相同的子譯碼器間外信息的傳遞來提高譯碼性能。圖中,yka,ykb表示通過信道后接收到的信息比特值,yky,ykw表示接收到的校驗比特軟值,Li(uk)表示信息比特的后驗對數似然比,表示在兩級子譯碼器之間傳遞的外信息,表示由經過交織或解交織得到的子譯碼輸入的先驗信息[3]。
譯碼器首先對未交織信息序列進行譯碼,子譯碼器1 接收信道輸出的信息比特軟值yka,ykb及校驗比特軟值yky1,ykw1,以及從第二級子譯碼器傳遞過來的先驗信息(首次迭代時為0)進行譯碼,譯碼后輸出信息比特的后驗對數似然比Li(uk)和外信息,經過交織器傳遞給子譯碼器2 作為先驗信息。隨后,子譯碼器2 對交織后的信息序列進行譯碼,譯碼過程與子譯碼器1 完全一樣。這樣經過多次迭代譯碼,最后對子譯碼器2 的輸出信息比特的后驗對數似然比Li(uk)進行解交織和硬判決得到譯碼結果。CTC 譯碼常用的譯碼算法有MAP(最大后驗概率)及其衍生的簡化算法Log-MAP及Max-Log-MAP 等。

圖2 CTC 迭代譯碼原理結構
MAP 算法是計算信息比特后驗對數似然比,求解公式如式(1):

式中s′表示編碼器k-1 時刻的狀態,s表示編碼器k時刻的狀態;uk={uka,ukb}表示狀態從s′轉移到s的編碼器輸入信息序列,uk的取值集合為{0,1,2,3}。根據式(1)計算得到信息序列uk的硬判結果式(2):

MAP 算法的具體實現步驟如下:
狀態度量α、β的初始化;


通過式(5)和式(6)配合初始化條件前后向遞推求得狀態度量αk(s)、βk-1(s′);

將αk(s)、βk-1(s′)、的計算結合式(7)和式(1),得到信息比特的后驗對數似然比Li(uk);

將Li(uk)結合式(2),得到硬判譯碼結果
MAP 譯碼性能非常優秀,但因存在大量的指數和乘法運算,譯碼復雜度高,實現難度大。
Log-MAP 算法是MAP 算法的一種轉換形式,相較MAP 算法更容易實現。Log-MAP 將MAP 算法中的變量都轉換為對數形式,將公式里的乘法運算轉換為了加法運算。
Max-Log-MAP 算法基于式(8)中的max 函數操作:

如果將式(8)中的右側的第二項去掉, Log-MAP 算法便轉換為Max-Log-MAP 算法。
Max-log-MAP 算法相較MAP 算法是一個數學轉換過程,一些重要的參數經過對數變化和max 函數簡化后,得到其最終公式如式(9)、式(10)和式(11):


其中lnP(uk=i)由式(12)得到:根據式(9),式(10),式(11)所得計算所得參數,最終由式(13)得到后驗軟信息Li(uk):

由于去掉了修正項,Max-Log-MAP 算法性能較Log-MAP 和MAP 算法有所惡化,但是復雜度進一步大大降低,更利于實現。如果對譯碼性能沒有極高的要求,工程實現中優先選擇Max-Log-MAP算法。TCP3D 所使用的為Max-Log-MAP 算法
為保證TCP3D 正確執行高效的譯碼操作,有必要首先了解TCP3D 部分重要的工作特性。
TCP3D 支持單buffer 模式、雙buffer 模式及分離模式如圖3 所示。

圖3 TCP3D 三種不同的工作模式
單buffer 模式下,TCP3D 為一個單套輸入buffer 和輸入配置寄存器的Turbo 譯碼器;雙buffer模式下,TCP3D 同時使用2 套輸入配置寄存器和輸入數據緩存器,對當前數據塊譯碼的同時,可以讀入下一個待譯碼數據塊,從而減少數據傳輸時延;在分離模式下,TCP3D 被配置成公用一個VBUS 接口的2 個獨立Turbo 譯碼器,可以同時對兩個數據塊進行譯碼。LTE 支持單buffer 模式和雙buffer 模式。
TCP3D 的交織表生成,可通過寄存器配置選擇由DSP 產生或者有TCP3D 內部生成。一般情況下選用TCP3D內部生成交織表,可降低DSP工作負擔,提高系統效率。
TCP3D 輸入數據格式為6 比特軟信息,最高比特為符號位,即數據范圍為-32 ~31。在LTE 模式下,輸入數據存放規則如圖4,還有一點必須注意,TCP3D 是一個小端對齊的處理器,當DSP 為小端對齊格式時,數據端對齊管理器對數據無影響。TCP3D 總是工作在小端對齊模式,所以輸入輸出數據也是小端對齊格式。
TCP3D 引入了滑動窗(SW)來限制存儲單元的數量來對數據塊的每一部分來進行譯碼。在WiMAX 和LTE 模式下,1 個數據塊被分為4 個等長的子數據塊,每個子數據塊再進一步的分割,得到長度可能相同也可能不同的小數據塊,即滑動窗。滑動窗的最大長度為128 個信息比特。滑動窗可以分為SW0,SW1 和SW2 三種。SW0 可以有多個,但是SW1和SW2只能有1個。SW0表示比特的數量,長度為{0, 16, 32, 48, 64, 96, 128}其中之一。SW0 的長度及數量,通過TI 規定的相關規則進行計算[4],劃分細則如圖5 所示。
TCP3D 與DSP 內部存儲器之間的數據交互是通過EDMA3 控制器進行的,這個數據傳輸過程并行于DSP 內核。EDMA3 控制器控制4 類數據從系統存儲器到TCP3D 的傳輸,分別是:輸入配置寄存器參數、待譯碼信息LLR 值、觸發寄存器(如果為自動觸發模式則不需要)、交織地址(如果是選擇TCP3D 內部交織,則不需要)。同時EDMA3 控制器控制3 類數據從TCP3D 到系統存儲器的傳輸,分別為譯碼輸出硬判決數據信息、譯碼輸出軟判決數據信息及輸出狀態寄存器參數[5]。

圖4 LTE 模式TCP3D 輸入數據存放規則

圖5 TCP3D 輸入數據子模塊劃分滑動窗規則
結合TCP3D 的特性,在LTE 模式下譯碼實現流程如圖6 所示。
首先進行系統復位,在確認TCP3D 復位之后, DSP 通過32-bit VBUS_CFG 接口執行TCP3D 初始化;隨后DSP 準備完成待譯碼數據和譯碼參數,包括:軟信息LLR 的縮放、飽和處理及數據封裝;進行內交織表參數、滑動窗長度及個數等輸入配置參數計算;接下來DSP 對EDMA3 進行初始化及配置,并通過128-bit VBUS_DMA 接口傳輸配置寄存器及包括系統碼、校驗碼0 及校驗碼1 的三路譯碼數據。譯碼開始后,EDMA3 通過寫觸發寄存器啟動TCP3D,TCP3D 開始進行碼塊譯碼;TCP3D 發送一個傳輸事件給EDMA3,準備將碼塊譯碼完成數據傳送出去;最后碼塊譯碼進程確認完成后,EDMA3產生中斷給DSP。如果有多個碼塊數據參與譯碼,在最后一個碼塊數據完成譯碼后,DSP 再發送中斷,至此結束了一次完整的譯碼流程[6]。
對TCP3D 的性能測試中,計劃測試四種碼率,對應四種不同的業務速率:300M,r1=2880/3808= 0.756;150M,r2=2880/3700=0.778;64M,r3=2880/4342= 0.663;32M:r4=2880/4156=0.692。圖7 是測試流程圖。
首先通過MATLAB 產生C6670 協處理器BCP發端輸入數據源并保存;隨之在工程板中BCP 的發模塊對數據源進行CTC 編碼及RM(交織刪余)處理,產生發端數據并采集,將采集數據在MATLAB中進行格式轉換并完成BPSK 調制,將調制完成數據進行AWGN 函數加噪并進行量化和極值截取處理;將處理完成數據在工程板的BCP 收模塊中對進行RD(解刪余解交織)處理;將RD 輸出數據作為TCP3D 輸入,在調試板中完成TCP3D 的譯碼并采集數據;最后將譯碼結果與初始MATLAB 產生數據源進行對比,統計誤碼個數,計算誤碼率,并結合的相應SNR 值、碼率和式(14),得出Eb/N0[7]:

最終得到BER-Eb/N0性能曲線圖如圖8 所示,曲線從左到右對應數據業務速率64M、32M、300M和150M。

圖8 TCP3D 不同業務速率對應的譯碼性能曲線圖
為實現TCP3D 譯碼,本文研究了CTC 譯碼原理及常用譯碼算法,結合TCP3D協處理器工作特性,總結出了其調用實現流程,最終實現其LTE 模式下的CTC 譯碼工作并進行了性能測試。測試結果表明,LTE 模式下TCP3D 譯碼性能非常理想,與LTE 協議描述的CTC 譯碼性能基本一致。