国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TD-LTE系統(tǒng)Turbo速率匹配算法及DSP實現(xiàn)*

2012-02-06 06:00:12李小文王振宇
電子技術(shù)應(yīng)用 2012年5期
關(guān)鍵詞:子塊緩沖器交織

李小文,王振宇

(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)

在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編碼的速率匹配算法進行了分析并設(shè)計了一種在TI公司DSP芯片TMS320C64x上的實現(xiàn)方法。

1 Turbo速率匹配算法

在TD-LTE系統(tǒng)中,發(fā)送端對各碼塊分別進行速率匹配,速率匹配模塊包括子塊交織、比特收集、循環(huán)緩沖器生成、比特選擇和修剪。具體的過程是Turbo碼的三路輸出,分別經(jīng)過子塊交織器后,把這三路數(shù)據(jù)串行收集在一起,經(jīng)過打孔或重復(fù)過程得到物理信道要傳輸?shù)谋忍?。如圖1所示。

各碼塊采用深度為32的“行入列出”塊交織器獨立進行交織,如果各碼塊的數(shù)據(jù)大小不能填滿交織矩陣,則在各碼塊輸入數(shù)據(jù)前端添加NULL比特,再進行子塊交織。設(shè)Turbo編碼器的各路輸出數(shù)據(jù)個數(shù)都為D,各子塊交織器的輸出數(shù)據(jù)個數(shù)為 KΠ,KΠ=R×C,其中 C=32為交織器列數(shù),R為交織器行數(shù),ND=KΠ-D為交織器添加的NULL比特數(shù)。交織方法為按行寫入,經(jīng)列變換,再按列讀出。對于前兩路數(shù)據(jù)流,變換后的第j列對應(yīng)于變換前的第P(j)列。j和P(j)的對應(yīng)關(guān)系如表 1所示。對于第三路數(shù)據(jù)流,輸出位置k和輸入位置π(k)的關(guān)系是:

表1 列交織表1

子塊交織之后進行比特收集,將第一路經(jīng)子塊交織后的數(shù)據(jù)流放在循環(huán)緩沖器的前面,后面間隔放置第二路和第三路數(shù)據(jù),比特收集后數(shù)據(jù)的長度為Kw=3 KΠ。每個傳輸塊的軟緩沖器大小為:其中,Nsoft是軟信道比特的總數(shù)。如果UE被設(shè)置為基于傳輸模式 3、4或 8進行 PDSCH傳輸,則 KMIMO等于 2;否則等于1。MDL_HARQ是DLHARQ進程的最大個數(shù)。Mlimit等于8。每個碼塊的軟緩沖器的大小為:

其中C為碼塊個數(shù)。用E表示第r個編碼塊速率匹配后輸出序列的長度,rvidx表示本次傳輸?shù)娜哂喟姹咎枺╮vidx=0,1,2,3)。用G表示對于一個傳輸塊,其信道可以傳輸?shù)目偟谋忍財?shù),G經(jīng)過一系列變化求出每個碼塊經(jīng)過速率匹配后的長度 E。由公式)確定每次從軟緩沖器中取數(shù)的起點位置k0,之所以從位置k0開始取數(shù)據(jù),是為了提高在高碼率情況下的解碼性能。

參數(shù)確定后就開始打孔和重復(fù)過程,判斷當(dāng)前數(shù)據(jù)是否是NULL比特,如果是則跳過,否則輸出,直到輸出數(shù)據(jù)達到E為止。如果所要取的數(shù)據(jù)在軟緩沖期中的位置為Ncb,則跳到位置0取數(shù)據(jù)。

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)分為兩個模塊來進行,分別是子塊交織收集模塊和比特選擇、修剪模塊。這兩個模塊都采用匯編實現(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位存儲。

子塊交織模塊的輸入變量分別是輸入數(shù)組首地址、輸出數(shù)組首地址、交織矩陣行數(shù)和輸出數(shù)組長度。此外還要用到如表1和表2的兩個列交織表。第三路數(shù)據(jù)的處理不同于前兩路,因為公式計算太復(fù)雜,所以首先由公式得到交織表2,第三路數(shù)據(jù)按照交織表2進行交織,然后把最后一列中第一個數(shù)據(jù)放到最后面,其余數(shù)據(jù)向前移一位,這樣就實現(xiàn)了與公式一樣的變換。三路數(shù)據(jù)同時進行交織,實現(xiàn)步驟如下:

表2 列交織表2

(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所示。

圖2 子塊交織和比特收集流程圖

2.3 比特選擇和修剪

在比特選擇和修剪之前,首先從高層獲得參數(shù)Kw、Nsoft、KMIMO、MDL_HARQ、G、Qm、NL、rvidx等,然后計算得到 E、k0和Ncb。

在設(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,則按如下步驟進行:

(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比特達到 32后,就會被清零,實際上它是用來判斷取得的非NULL比特數(shù)是否達到了32個,如果達到了就將這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ù)進入下一次循環(huán)。當(dāng)循環(huán)次數(shù)達到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)中拼接。

(7)第6步已經(jīng)完成了a-1次拼接,然后再處理剩下的b比特即可。與上面的方法類似,只要從輸出數(shù)組的最開始,拼接個32 bit的數(shù)據(jù)即可。這里多拼接的數(shù)據(jù),最多不會超過一個字,所以不會多占內(nèi)存。

E大于Ncb時流程圖如圖3所示。

若E不大于Ncb,處理步驟與上面類似,只需要前4步處理,不同之處是步驟3中的循環(huán)次數(shù)不固定,直到取得E個非NULL比特后就跳出循環(huán)。

3 性能分析

圖3 比特選擇和修剪流程圖

在進行DSP程序設(shè)計時,需要對程序進行優(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ù)長度的處理cycle數(shù)

表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比特取出,再進行拼接的方法可以節(jié)省處理時間。

總之,本實現(xiàn)方法可以滿足TD-LTE系統(tǒng)實時處理的需要并已經(jīng)應(yīng)用到國家科技重大專項項目“TD-LTE無線綜合測試儀表”開發(fā)中。

[1]3GPP TS 36.212 v9.1.0:Rate matching(release 9)[S].2009-12.

[2]沈嘉,索士強,全海洋,等.3GPP長期演進(LTE)技術(shù)原理與系統(tǒng)設(shè)計[M].北京:人民郵電出版社,2005,2008.

[3]Texas Instruments Incorporated.TMS320C6000系列DSP編程工具與指南[M].田黎育,何佩琨,朱夢宇,譯.北京:清華大學(xué)出版社,2006:32-50.

猜你喜歡
子塊緩沖器交織
基于八叉樹的地震數(shù)據(jù)多級緩存方法
基于八叉樹的地震數(shù)據(jù)分布式存儲方法研究
“新”與“舊”的交織 碰撞出的魅力“夜上?!?/a>
美食(2022年2期)2022-04-19 12:56:22
更正
輕兵器(2022年3期)2022-03-21 08:37:28
重載貨車用緩沖器選型的研究及分析
鐵道車輛(2021年4期)2021-08-30 02:07:14
基于特征值算法的圖像Copy-Move篡改的被動取證方案
交織冷暖
女報(2019年3期)2019-09-10 07:22:44
基于波浪式矩陣置換的稀疏度均衡分塊壓縮感知算法
一種改進的塊交織方法及FPGA實現(xiàn)
奧運夢與中國夢交織延展
華人時刊(2016年17期)2016-04-05 05:50:32
永昌县| 海宁市| 青海省| 锦屏县| 古丈县| 扶沟县| 汤原县| 道孚县| 肇州县| 桂阳县| 林周县| 武威市| 云阳县| 高台县| 宁蒗| 无锡市| 临泉县| 虹口区| 汝城县| 公安县| 利津县| 静乐县| 河间市| 紫云| 惠来县| 原阳县| 南平市| 东港市| 富平县| 临武县| 大埔区| 泰宁县| 越西县| 巨鹿县| 将乐县| 澄迈县| 永寿县| 屯门区| 巧家县| 隆安县| 繁昌县|