《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > TD-LTE系統(tǒng)Turbo速率匹配算法及DSP實現(xiàn)
TD-LTE系統(tǒng)Turbo速率匹配算法及DSP實現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第5期
李小文,王振宇
重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065
摘要: 速率匹配是基帶信號處理的重要組成部分,在深入研究3GPP協(xié)議中Turbo編碼速率匹配算法的基礎(chǔ)上,基于TD-LTE無線綜合測試系統(tǒng),提出了一種可用DSP實現(xiàn)的快速實現(xiàn)方案。該方案簡化了實現(xiàn)過程,有效減小了Turbo編碼速率匹配的處理延時。
中圖分類號: TN929.5
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)05-0052-04
DSP realization of Turbo code rate matching in TD-LTE system
Li Xiaowen,Wang Zhenyu
School of Communication and Information Engineering, Chongqing University of Posts and Telecommunications,Chongqing 400065,China
Abstract: Rate matching is one of the most important parts in Base-band signal processing. Based on intensive research of Turbo rate matching algorithm of 3GPP protocol and the LTE(Long Term Evolution) wireless test system, a fast rate matching implementation scheme with DSP chip is proposed in this paper. The fast scheme simplifies the whole process and reduces the processing delay of Turbo rate matching.
Key words : long term evolution;Turbo code rate matching;DSP realization

    在TD-LTE系統(tǒng)中,速率匹配是指傳輸信道上的比特被重發(fā)或打孔。一個傳輸信道中的數(shù)據(jù)量在不同的傳輸時間間隔內(nèi)可以發(fā)生變化,而所配置的物理信道容量是固定的。為了匹配物理信道的承載能力,輸入序列中的一些比特將被重發(fā)或者打孔,以確保在傳輸信道復(fù)用后總的比特率與所分配的物理信道的總的信道比特率相一致。當(dāng)輸入序列的數(shù)據(jù)量超過物理信道的承載能力時,需要對輸入序列打孔;反之則需要重復(fù)。高層給每一個傳輸信道配置一個速率匹配特性。當(dāng)計算重發(fā)或打孔的比特數(shù)時,需要使用速率匹配特性。TD-LTE中根據(jù)編碼方式的不同,速率匹配分為卷積編碼和Turbo編碼兩種匹配方式。

    本文對Turbo編碼的速率匹配算法進(jìn)行了分析并設(shè)計了一種在TI公司DSP芯片TMS320C64x上的實現(xiàn)方法。
1 Turbo速率匹配算法
    在TD-LTE系統(tǒng)中,發(fā)送端對各碼塊分別進(jìn)行速率匹配,速率匹配模塊包括子塊交織、比特收集、循環(huán)緩沖器生成、比特選擇和修剪。具體的過程是Turbo碼的三路輸出,分別經(jīng)過子塊交織器后,把這三路數(shù)據(jù)串行收集在一起, 經(jīng)過打孔或重復(fù)過程得到物理信道要傳輸?shù)谋忍亍H鐖D1所示。


2 Turbo速率匹配的實現(xiàn)
2.1 硬件簡介

    TMS320C6000最初是為了移動通信基站的信號處理而推出的超級處理芯片。C64x系列DSP主要的特點是在體系結(jié)構(gòu)上采用了VelocoTI甚長指令集VLIW(Very Long Instruction Word)。在VLIW體系結(jié)構(gòu)的DSP中,是由一個超長的機器指令字來驅(qū)動內(nèi)部的多個功能單元。由于每條指令的字段之間是相互獨立的,故可以單周期發(fā)射多條指令,從而實現(xiàn)更高的指令級并行效率。CPU采用哈佛結(jié)構(gòu),程序總線和數(shù)據(jù)總線分開,取指令與執(zhí)行指令可并行運行。程序總線寬度為256 bit,每一次取指令操作都是取8條指令,稱為一個取指包。C64x系列DSP芯片的大容量、高運算能力的優(yōu)點使其在無線基站、終端等場合下得到廣泛的應(yīng)用,特別是運算精度能滿足綜合測試儀表的開發(fā)條件。
2.2 子塊交織和比特收集
    將速率匹配的實現(xiàn)分為兩個模塊來進(jìn)行,分別是子塊交織收集模塊和比特選擇、修剪模塊。這兩個模塊都采用匯編實現(xiàn),一些參數(shù)的計算用C語言實現(xiàn)。
    為了區(qū)分NULL比特和有用比特,輸入數(shù)據(jù)按照一個比特占8 bit來存儲,NULL比特存儲為0FH,0存儲為00H,1存儲為01H。在輸入數(shù)據(jù)時,Turbo編碼模塊已經(jīng)加好NULL比特,而且將三路輸出級聯(lián)。子塊交織后的數(shù)據(jù)仍然是一個比特占8 bit,比特選擇和修剪后的輸出數(shù)據(jù)按照一個比特占1位存儲。


    (1)首先計算每一路輸入總比特數(shù)KΠ。然后將輸入數(shù)組首地址加上KΠ,得到第二路數(shù)據(jù)的首地址,再加上KΠ得到第三路數(shù)據(jù)的首地址。讓三個地址指針分別指向三路輸入數(shù)組的首地址。輸出數(shù)組的首地址加KΠ得到第二路的首地址,再加上1得到第三路的首地址,第二路和第三路是交叉放置的,每次存數(shù)據(jù)時,地址偏移為2。
    (2)建立一個32次的外循環(huán),每次外循環(huán)處理交織矩陣中一列的數(shù)據(jù)。依次取出列交織表的各個元素作為index,第一路和第二路從列交織表1中取index,第三路從列交織表2中取index。將地址指針偏移index,同時將指針指向的數(shù)據(jù)取出來,這相當(dāng)于取交織矩陣中第一行第index列的數(shù)據(jù),將取出來的數(shù)據(jù)放到輸出數(shù)組中。
    (3)建立一個R-1次的內(nèi)循環(huán),嵌套在外循環(huán)中,每次內(nèi)循環(huán)處理一列中的一個數(shù)據(jù)。每次循環(huán)地址指針偏移32,取出對應(yīng)的數(shù)據(jù),并依次存入輸出數(shù)組。R-1次內(nèi)循環(huán)結(jié)束后,將地址指針重新指向輸入數(shù)組的首地址。
    (4)完成32次的外循環(huán)后,將第三路輸出的倒數(shù)第R個數(shù)放到最后一個數(shù)的位置,然后將倒數(shù)前R-1個數(shù)據(jù)依次往前移一位。
    以上步驟完成了子塊交織和比特收集。子塊交織和比特收集的流程圖如圖2所示。

    在設(shè)計之初,考慮了兩種比特選擇和修剪方案,一種是先將循環(huán)緩沖器中的非NULL比特取出,然后將取得的非NULL拼接成長度為E的輸出數(shù)組;另外一種是直接從輸入數(shù)組中依次循環(huán)地取非NULL比特,直到取夠E個數(shù)據(jù)為止。第一種方案的不足是當(dāng)軟緩沖器中的非NULL比特數(shù)比E大時,多取得的數(shù)據(jù)會浪費;第二種方案的不足是當(dāng)E比軟緩沖器中的非NULL比特大得多時,會浪費處理時間。綜合以上兩種情況,在程序的開始部分,先判斷E是否大于Ncb,若大于,則程序跳轉(zhuǎn),采用第一種方案;若不大于則采用第二種方案。
    比特選擇和修剪模塊的輸入是輸入數(shù)組首地址、參數(shù)首地址、輸出數(shù)組首地址。若E大于Ncb,則按如下步驟進(jìn)行:
    (1)首先將參數(shù)從參數(shù)數(shù)組里面取出來,得到E、Ncb、k0的值,讓指針指向輸入數(shù)據(jù)的第k0位。
    (2)設(shè)置兩個計數(shù)器(計數(shù)器0和計數(shù)器1),初始值都設(shè)置為0。兩個計數(shù)器都是用來統(tǒng)計取了多少非NULL比特,不過計數(shù)器0是用來統(tǒng)計總共取了多少非NULL比特,而計數(shù)器1非NULL比特達(dá)到32后,就會被清零,實際上它是用來判斷取得的非NULL比特數(shù)是否達(dá)到了32個,如果達(dá)到了就將這32比特數(shù)據(jù)存入內(nèi)存。
    (3)建立一個Ncb次的循環(huán)。循環(huán)內(nèi),依次從k0取出輸入數(shù)據(jù),然后判斷是否為NULL比特。如果是,則對該數(shù)據(jù)不做操作;如果不是,將臨時存儲數(shù)據(jù)的寄存器左移一位,與取得的數(shù)據(jù)相或。同時兩個計數(shù)器都加1。判斷計數(shù)器1是否為32,如果是,則將計數(shù)器1清零,同時將臨時儲存數(shù)據(jù)的寄存器中的數(shù)據(jù)存入輸出數(shù)組,然后清零該寄存器。判斷當(dāng)前指針是否指向輸入數(shù)組的第Ncb個,如果是,則將指針重新指向輸入數(shù)組的首地址,繼續(xù)讀下一個數(shù)進(jìn)入下一次循環(huán)。當(dāng)循環(huán)次數(shù)達(dá)到Ncb次時,則跳出循環(huán)。
    (4)結(jié)束上面循環(huán)后,判斷計數(shù)器1是否為0,如果不為0,說明上面還有不到32 bit的數(shù)沒有存入輸出數(shù)組,將其存入輸出數(shù)組。
    (5)此時計數(shù)器0中的數(shù)就是軟緩沖器中非NULL比特的數(shù)目,記為len。用E除以len,得到商為a,余數(shù)為b。這時只需要在上面處理完的輸出數(shù)組后拼接上面得到的數(shù)據(jù)a-1次,再拼接b比特就可以完成速率匹配。
    (6)先用len除以32,得到商為c,余數(shù)為d。這樣在拼接時,先建立一個a-1次的外循環(huán),每次外循環(huán)拼接長度為len的數(shù)據(jù),在每次外循環(huán)中建立一個c次的內(nèi)循環(huán),每次內(nèi)循環(huán)拼接32 bit的數(shù)據(jù),在完成c次的內(nèi)循環(huán)后,在外循環(huán)中處理多余的d比特。在拼接之前,要先判斷d是否等于0,若等于,則程序跳轉(zhuǎn),每次內(nèi)循環(huán)只需要依次將一個字的數(shù)據(jù)存入輸出數(shù)組;若不等于,則說明輸出數(shù)組中最后的一個字沒有被存滿,在每次內(nèi)循環(huán)中,要先將待拼接的數(shù)據(jù)右移,與輸出數(shù)組中最后一個字中的數(shù)據(jù)拼接成一整個字的數(shù)據(jù),再將待拼接的數(shù)據(jù)左移,等待下一次循環(huán)中拼接。
  
    E大于Ncb時流程圖如圖3所示。

 

 

    若E不大于Ncb,處理步驟與上面類似,只需要前4步處理,不同之處是步驟3中的循環(huán)次數(shù)不固定,直到取得E個非NULL比特后就跳出循環(huán)。
3 性能分析
    在進(jìn)行DSP程序設(shè)計時,需要對程序進(jìn)行優(yōu)化,盡量減少或者消除程序中的“NOP”指令,特別是循環(huán)體內(nèi)的“NOP”指令。通過在CCS3.3上運行程序,在Ncb=Kw時,統(tǒng)計得到各條件下的速率匹配仿真執(zhí)行結(jié)果,如表3所示,表中數(shù)據(jù)的長度為Turbo編碼后每一路數(shù)據(jù)的長度。

    表3僅列舉了幾種典型的數(shù)據(jù)長度,且不失一般性,通過分析可以看出:比特選擇和修剪時,數(shù)據(jù)長度為1 124時,只需依次取出E個非NULL比特,占用周期較少;數(shù)據(jù)長度為3 140而E的大小不同時,拼接軟緩沖器中的非NULL比特消耗了一部分周期;E的大小相同而數(shù)據(jù)長度不同時對比發(fā)現(xiàn),將軟緩沖器中的非NULL比特取出消耗了大量cycle。所以也可以看出,當(dāng)E大于Ncb時先將軟緩沖器中的非NULL比特取出,再進(jìn)行拼接的方法可以節(jié)省處理時間。
    總之,本實現(xiàn)方法可以滿足TD-LTE系統(tǒng)實時處理的需要并已經(jīng)應(yīng)用到國家科技重大專項項目“TD-LTE無線綜合測試儀表”開發(fā)中。
參考文獻(xiàn)
[1] 3GPP TS 36.212 v9.1.0:Rate matching(release 9)[S]. 2009-12.
[2] 沈嘉,索士強,全海洋,等.3GPP長期演進(jìn)(LTE)技術(shù)原理與系統(tǒng)設(shè)計[M].北京:人民郵電出版社,2005,2008.
[3] Texas Instruments Incorporated.TMS320C6000系列DSP編程工具與指南[M].田黎育,何佩琨,朱夢宇,譯.北京:清華大學(xué)出版社,2006:32-50.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。