《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技术 > 设计应用 > TD-LTE系统Turbo速率匹配算法及DSP实现
TD-LTE系统Turbo速率匹配算法及DSP实现
来源:电子技术应用2012年第5期
李小文,王振宇
重庆邮电大学 通信与信息工程学院,重庆400065
摘要: 速率匹配是基带信号处理的重要组成部分,在深入研究3GPP协议中Turbo编码速率匹配算法的基础上,基于TD-LTE无线综合测试系统,提出了一种可用DSP实现的快速实现方案。该方案简化了实现过程,有效减小了Turbo编码速率匹配的处理延时。
中圖分類號(hào): TN929.5
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)中,速率匹配是指?jìng)鬏斝诺郎系谋忍乇恢匕l(fā)或打孔。一個(gè)傳輸信道中的數(shù)據(jù)量在不同的傳輸時(shí)間間隔內(nèi)可以發(fā)生變化,而所配置的物理信道容量是固定的。為了匹配物理信道的承載能力,輸入序列中的一些比特將被重發(fā)或者打孔,以確保在傳輸信道復(fù)用后總的比特率與所分配的物理信道的總的信道比特率相一致。當(dāng)輸入序列的數(shù)據(jù)量超過(guò)物理信道的承載能力時(shí),需要對(duì)輸入序列打孔;反之則需要重復(fù)。高層給每一個(gè)傳輸信道配置一個(gè)速率匹配特性。當(dāng)計(jì)算重發(fā)或打孔的比特?cái)?shù)時(shí),需要使用速率匹配特性。TD-LTE中根據(jù)編碼方式的不同,速率匹配分為卷積編碼和Turbo編碼兩種匹配方式。

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


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

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


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

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

 

 

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

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

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