1 TCP的基本結構
TMS320C64X是TI公司最新推出的處理能力高達4800MIPS的高性能DSP,內部嵌入了Turbo譯碼協處理器(TCP)和Viterbi譯碼協處理器(VCP),專門用于無線通信中的高速數據處理。 片上的TCP能夠對多達36路的384kbps或6路2Mbps的Turbo編碼信道在迭代6次的情況下進行譯碼,其高速并行結構能夠在小于2ms的時間內完成3GPP協議中的2Mbps業(yè)務迭代譯碼,并且能夠通過編程控制性能進一步減少處理時延。
TCP通過EDMA(增強型DMA)同L2存儲器(二級內部存儲單元)進行數據交換,其基本結構如圖1所示。TCP控制寄存器控制整體工作狀態(tài),包含相關編碼信息、DSP總線傳輸能力、譯碼性能等信息;EDMA輸入/輸出單元控制EDMA總線實現二級內部存儲單元同TCP之間的數據交換;同步事件產生模塊產生EDMA讀/寫同步事件;內部存儲模塊和譯碼處理單元負責數據存儲與譯碼計算。
TCP有兩種工作方式:Standalong(SA)模式與Shared Processing(SP)模式。在SA模式下,TCP完成編程規(guī)定次數的迭代譯碼并輸出硬判決結果;在SP模式下,TCP僅完成一次MAP算法并輸出供下一次譯碼使用的先驗信息。表1示出了兩種工作方式的區(qū)別。
3GPP協議中支持Turbo碼的信道最大編碼塊的大小為5114bit,所以在實現上選擇TCP工作在SA模式。
2 TCP的譯碼算法
MAP算法[1]是一種對具有有限狀態(tài)馬爾可夫特性的碼及離散無記憶特性的信道提供逐符號或逐比特似然值的最優(yōu)算法。Log-MAP算法[2]將標準算法中的似然值全部用對數似然值表示。這樣乘法運算就變成了加法,加法變成了ea+eb=emax{a,b}+ln[1+exp(-a-b)],這里的對數項可通過一次查表和一次加法運算實現。Max-Log-MAP算法[2]在上述對數域的算法中,將似然值加法表示式中的對數分量忽略掉,使似然加法完全變成求最大值運算。
由于Turbo碼編碼方式靈活、譯碼算法復雜,所以在傳統(tǒng)硬件電路上實現Turbo譯碼比較復雜。
TCP很好地解決了算法實現中存在的問題。TCP使用滑動窗譯碼算法[5],將接收序列分割成子塊(Sub block)送入結構相同的多個并行譯碼器進行處理,分割數量的原則是保證多個譯碼器并行度達到最大。每個子塊通過多個滑動窗使用Max-log-MAP算法進行譯碼,譯碼過程中產生的臨時數據α和β保存在內部存儲模塊的α單元和β單元中,需要時再通過計算得到先驗信息或譯碼結果?;瑒哟白g碼算法的原理如圖2所示。
Turbo碼編碼時,編碼器的狀態(tài)轉換關系是連續(xù)的馬爾科夫過程。在譯碼時,需要確定編碼器的初始狀態(tài)和終止狀態(tài)以及狀態(tài)之間的轉換關系。接收序列被分割為多個子塊之后,狀態(tài)的連續(xù)性被打斷。這樣,對于輸入到一個譯碼器中的子塊就不能確定其初始狀態(tài)和終止狀態(tài)。因此,把一個子塊分為三個部分:頭延伸(Head Prolog)、可信部分(Reliability)和尾延伸(Tail Prolog)。Head Prolog初始狀態(tài)和Tail Prolog終止狀態(tài)都設為等概率,然后根據接收序列以及編碼器狀態(tài)轉換規(guī)律逐步計算Reliability。在Reliability部分、起始時刻值和終止時刻近似調整為分割前的狀態(tài)時,Head Prolog和Tail Prolog為冗余重疊的部分,此時計算譯碼輸出只需考慮Reliability部分,所以算法在譯碼性能上沒有什么影響,但是能夠極大地減少處理時延。另外,TCP還提供停止迭代譯碼標準Stopping Criteria,可通過對外信息信噪比(SNR)的估計來判斷是否需要繼續(xù)進行迭代。如果當前信息已經不能再提供編碼增益,則立刻輸出硬判決結果而不考慮剩余的迭代次數。
3 TCP的編程實現
3.1 輸入數據的量化
TCP要求輸入數據為8bit的有符號數,并認為其格式為:SIIII.FFF(S為符號位,I為整數位,F為小數位)。假設接收信號可以表示為:Ri=×ui+ni。其中,ui=±1;ni為發(fā)送端經過BPSK映射的原始數據;Esymbol是發(fā)送端符號能量,數據量化時需要去掉這個能量,同時將數據恢復成BPSK映射之前的形式。而一個分量譯碼器產生的先驗信息[2~3]可以表示為:Wk=xk+zk+Wk(yk)。其中,xk由系統(tǒng)比特xk產生,zk由上級譯碼器生成的先驗信息zk產生,Wk(yk)由校驗比特yk產生,σ2為高斯白噪聲的方差。通常情況下,為了方便計算,去掉其中的系數。于是輸入信號的量化因子可以表示為:ScaleFactor=。其中,可以通過計算信號幅值的均值得到:通過計算接收信號幅值的方差得到:。
3.2 控制寄存器的配置
TCP中包含12個控制寄存器,這些寄存器分為三類:基本參數寄存器、EDMA接口參數寄存器以及尾比特寄存器。
基本參數:控制編碼信息以及譯碼的相關標準;
EDMA接口參數: EDMA通道的相關參數;
尾比特:確定編碼器最終狀態(tài)的信息。
3.3 EDMA配置以及DSP核同TCP之間的數據交換
EDMA是C6000系列DSP中的一個重要單元,負責二級內存(L2 存儲器)同各個外設之間的數據交換[7~8]。
C64X系列DSP的EDMA通道共有64條,其中31/30(讀/寫)專門用于DSP核同TCP之間的數據交換。EDMA完成參數配置并啟動之后,EDMA通道進入使能狀態(tài)等待觸發(fā)。TCP啟動后,產生相應的讀/寫同步事件TCPXEVT/TCPREVT觸發(fā)EDMA通道進行數據傳輸。一次簡單譯碼處理中的完整觸發(fā)過程如圖3所示。
結合TCP控制寄存器中的EDMA接口參數使用提供的API函數[9]配置EDMA通道傳輸參數 [7] 。
3.4 高效的TCP處理模式
通常情況下并不滿足于對一段編碼數據實現譯碼,而是希望DSP滿負荷地工作,對連續(xù)到達的各種編碼格式(已知)的數據完成譯碼。在這里設計了一種奇偶交替的譯碼模式:將譯碼數據按照到達順序分為奇數組和偶數組,生成滿足編碼格式的TCP控制寄存器參數以及相應的EDMA配置參數。TCP進行第N個編碼數據譯碼處理的同時,EDMA寫通道向TCP傳輸第N+1個編碼數據控制參數和譯碼數據,EDMA讀通道將第N-1個編碼數據的譯碼結果輸出,同時利用譯碼完成產生的中斷服務程序處理第N+2個數據的相關參數配置以及數據量化。EDMA的RAM中的參數存放格式如圖4所示。
3.5 TCP程序實現流程
總之,TCP程序實現應包括以下步驟:
(1)數據量化;
(2)構造TCP控制參數以及EDMA配置參數;
(3)啟動并配置EDMA通道;
(4)啟動TCP產生同步事件觸發(fā)EDMA通道;
(5)接收硬判決結果。
(因本文篇幅偏長,本刊刪去了“TCP程序實現流程圖”。如讀者感興起,可向作者索取。)
4 TCP譯碼性能硬件實現與分析
4.1 TCP譯碼性能
使用TMS320C6416 7E3(CPU時鐘為705.6MHz),對原始長度為336bit和3840bit的符合3GPP協議的碼率為1/3的Turbo編碼數據進行譯碼。譯碼性能如圖5和圖6所示。
4.2 TCP譯碼處理時延
使用TMS320C6416 7E3(CPU時鐘為705.6MHz),對原始長度為336bit和3840bit的符合3GPP協議的碼率為1/3的Turbo編碼數據進行譯碼??紤]迭代次數I=6、8、16;Prolog長度P=24(未經速率適配)、48(經過速率適配)時得到的處理時延結果如表2和表3所示(只考慮譯碼處理時延,參數配置以及EDMA通道進行數據傳輸所用時間不計算在內)。
通常情況下,Turbo碼的性能同交織長度有很大關系,交織長度越大,性能越好,但所需處理時延也就越高。使用TCP譯碼,長度為336bit的短數據幀經過8次迭代,在信噪比(SNR)為2dB下誤碼率(BER)達到10-7量級,所需處理時延大概為50~60μs;長度為3840bit的數據幀,經過8次迭代,在信噪比為0.8dB下誤碼率達到10-8量級,處理時延大約為300~350μs??梢哉J為TCP在譯碼性能與處理時延兩個方面都能夠比較好地滿足3G系統(tǒng)對于譯碼模塊的要求。TCP作為C64X系列DSP的一個協處理器,相關的速率適配、數據量化等一系列工作都可以通過DSP核完成,較傳統(tǒng)的硬件電路有很大優(yōu)勢。