文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)05-0052-04
在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.