999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

TD-LTE系統Turbo速率匹配算法及DSP實現*

2012-02-06 06:00:12李小文王振宇
電子技術應用 2012年5期

李小文,王振宇

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

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

本文對Turbo編碼的速率匹配算法進行了分析并設計了一種在TI公司DSP芯片TMS320C64x上的實現方法。

1 Turbo速率匹配算法

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

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

表1 列交織表1

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

其中C為碼塊個數。用E表示第r個編碼塊速率匹配后輸出序列的長度,rvidx表示本次傳輸的冗余版本號(rvidx=0,1,2,3)。用G表示對于一個傳輸塊,其信道可以傳輸的總的比特數,G經過一系列變化求出每個碼塊經過速率匹配后的長度 E。由公式)確定每次從軟緩沖器中取數的起點位置k0,之所以從位置k0開始取數據,是為了提高在高碼率情況下的解碼性能。

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

2 Turbo速率匹配的實現

2.1 硬件簡介

TMS320C6000最初是為了移動通信基站的信號處理而推出的超級處理芯片。C64x系列DSP主要的特點是在體系結構上采用了VelocoTI甚長指令集VLIW(Very Long Instruction Word)。在 VLIW 體系結構的 DSP中,是由一個超長的機器指令字來驅動內部的多個功能單元。由于每條指令的字段之間是相互獨立的,故可以單周期發射多條指令,從而實現更高的指令級并行效率。CPU采用哈佛結構,程序總線和數據總線分開,取指令與執行指令可并行運行。程序總線寬度為256 bit,每一次取指令操作都是取8條指令,稱為一個取指包。C64x系列DSP芯片的大容量、高運算能力的優點使其在無線基站、終端等場合下得到廣泛的應用,特別是運算精度能滿足綜合測試儀表的開發條件。

2.2 子塊交織和比特收集

將速率匹配的實現分為兩個模塊來進行,分別是子塊交織收集模塊和比特選擇、修剪模塊。這兩個模塊都采用匯編實現,一些參數的計算用C語言實現。

為了區分NULL比特和有用比特,輸入數據按照一個比特占8 bit來存儲,NULL比特存儲為0FH,0存儲為00H,1存儲為01H。在輸入數據時,Turbo編碼模塊已經加好NULL比特,而且將三路輸出級聯。子塊交織后的數據仍然是一個比特占8 bit,比特選擇和修剪后的輸出數據按照一個比特占1位存儲。

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

表2 列交織表2

(1)首先計算每一路輸入總比特數KΠ。然后將輸入數組首地址加上KΠ,得到第二路數據的首地址,再加上KΠ得到第三路數據的首地址。讓三個地址指針分別指向三路輸入數組的首地址。輸出數組的首地址加KΠ得到第二路的首地址,再加上1得到第三路的首地址,第二路和第三路是交叉放置的,每次存數據時,地址偏移為2。

(2)建立一個32次的外循環,每次外循環處理交織矩陣中一列的數據。依次取出列交織表的各個元素作為index,第一路和第二路從列交織表 1中取index,第三路從列交織表2中取index。將地址指針偏移index,同時將指針指向的數據取出來,這相當于取交織矩陣中第一行第index列的數據,將取出來的數據放到輸出數組中。

(3)建立一個R-1次的內循環,嵌套在外循環中,每次內循環處理一列中的一個數據。每次循環地址指針偏移32,取出對應的數據,并依次存入輸出數組。R-1次內循環結束后,將地址指針重新指向輸入數組的首地址。

(4)完成32次的外循環后,將第三路輸出的倒數第R個數放到最后一個數的位置,然后將倒數前R-1個數據依次往前移一位。

以上步驟完成了子塊交織和比特收集。子塊交織和比特收集的流程圖如圖2所示。

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

2.3 比特選擇和修剪

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

在設計之初,考慮了兩種比特選擇和修剪方案,一種是先將循環緩沖器中的非NULL比特取出,然后將取得的非NULL拼接成長度為E的輸出數組;另外一種是直接從輸入數組中依次循環地取非NULL比特,直到取夠E個數據為止。第一種方案的不足是當軟緩沖器中的非NULL比特數比E大時,多取得的數據會浪費;第二種方案的不足是當E比軟緩沖器中的非NULL比特大得多時,會浪費處理時間。綜合以上兩種情況,在程序的開始部分,先判斷E是否大于Ncb,若大于,則程序跳轉,采用第一種方案;若不大于則采用第二種方案。

比特選擇和修剪模塊的輸入是輸入數組首地址、參數首地址、輸出數組首地址。若E大于Ncb,則按如下步驟進行:

(1)首先將參數從參數數組里面取出來,得到E、Ncb、k0的值,讓指針指向輸入數據的第k0位。

(2)設置兩個計數器(計數器 0和計數器 1),初始值都設置為0。兩個計數器都是用來統計取了多少非NULL比特,不過計數器0是用來統計總共取了多少非NULL比特,而計數器 1非NULL比特達到 32后,就會被清零,實際上它是用來判斷取得的非NULL比特數是否達到了32個,如果達到了就將這32比特數據存入內存。

(3)建立一個Ncb次的循環。循環內,依次從k0取出輸入數據,然后判斷是否為NULL比特。如果是,則對該數據不做操作;如果不是,將臨時存儲數據的寄存器左移一位,與取得的數據相或。同時兩個計數器都加1。判斷計數器 1是否為32,如果是,則將計數器 1清零,同時將臨時儲存數據的寄存器中的數據存入輸出數組,然后清零該寄存器。判斷當前指針是否指向輸入數組的第Ncb個,如果是,則將指針重新指向輸入數組的首地址,繼續讀下一個數進入下一次循環。當循環次數達到Ncb次時,則跳出循環。

(4)結束上面循環后,判斷計數器 1是否為 0,如果不為0,說明上面還有不到32 bit的數沒有存入輸出數組,將其存入輸出數組。

(5)此時計數器0中的數就是軟緩沖器中非NULL比特的數目,記為len。用 E除以 len,得到商為a,余數為b。這時只需要在上面處理完的輸出數組后拼接上面得到的數據a-1次,再拼接b比特就可以完成速率匹配。

(6)先用 len除以 32,得到商為 c,余數為 d。這樣在拼接時,先建立一個a-1次的外循環,每次外循環拼接長度為len的數據,在每次外循環中建立一個c次的內循環,每次內循環拼接32 bit的數據,在完成c次的內循環后,在外循環中處理多余的d比特。在拼接之前,要先判斷d是否等于0,若等于,則程序跳轉,每次內循環只需要依次將一個字的數據存入輸出數組;若不等于,則說明輸出數組中最后的一個字沒有被存滿,在每次內循環中,要先將待拼接的數據右移,與輸出數組中最后一個字中的數據拼接成一整個字的數據,再將待拼接的數據左移,等待下一次循環中拼接。

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

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

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

3 性能分析

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

在進行DSP程序設計時,需要對程序進行優化,盡量減少或者消除程序中的“NOP”指令,特別是循環體內的“NOP”指令。通過在 CCS3.3上運行程序,在Ncb=Kw時,統計得到各條件下的速率匹配仿真執行結果,如表3所示,表中數據的長度為Turbo編碼后每一路數據的長度。

表3 不同數據長度的處理cycle數

表3僅列舉了幾種典型的數據長度,且不失一般性,通過分析可以看出:比特選擇和修剪時,數據長度為1 124時,只需依次取出E個非NULL比特,占用周期較少;數據長度為3 140而E的大小不同時,拼接軟緩沖器中的非NULL比特消耗了一部分周期;E的大小相同而數據長度不同時對比發現,將軟緩沖器中的非NULL比特取出消耗了大量cycle。所以也可以看出,當E大于Ncb時先將軟緩沖器中的非NULL比特取出,再進行拼接的方法可以節省處理時間。

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

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

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

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

主站蜘蛛池模板: 午夜a视频| 亚洲aaa视频| 国产打屁股免费区网站| 国产XXXX做受性欧美88| 久久精品亚洲专区| 亚洲首页国产精品丝袜| 免费观看成人久久网免费观看| 亚洲视频四区| 欧美精品亚洲精品日韩专区| 国内精品一区二区在线观看| 国产a在视频线精品视频下载| 狠狠亚洲五月天| 国产在线一区二区视频| 69av在线| 国产精品林美惠子在线观看| 日韩午夜片| 亚洲综合亚洲国产尤物| 色婷婷在线影院| 国产欧美高清| 日本一区二区不卡视频| 国产乱视频网站| 免费久久一级欧美特大黄| 中文字幕无码制服中字| 四虎影视永久在线精品| 毛片免费在线视频| 99福利视频导航| 亚洲视频无码| 亚洲综合激情另类专区| 伊人成色综合网| 老色鬼欧美精品| 久久青草精品一区二区三区| 欧美日韩中文国产| 国产精品一区二区国产主播| 青青草国产在线视频| 亚洲色图另类| 亚洲一区二区三区麻豆| 4虎影视国产在线观看精品| 丰满人妻久久中文字幕| 久久亚洲中文字幕精品一区| 伊人色天堂| 国产在线精彩视频论坛| 一本二本三本不卡无码| 日韩天堂视频| 网久久综合| 色久综合在线| 欧美www在线观看| 久久不卡精品| 日韩精品高清自在线| 亚洲综合色吧| 国产欧美日韩另类精彩视频| 国产v欧美v日韩v综合精品| 亚洲va视频| 99久久精品免费看国产免费软件| 精久久久久无码区中文字幕| 成人午夜免费观看| 日本成人精品视频| 日韩午夜片| 久久免费精品琪琪| 国产91全国探花系列在线播放| 日韩AV手机在线观看蜜芽| 性视频一区| 国产精品久久久久鬼色| 亚国产欧美在线人成| 色综合综合网| 婷婷激情亚洲| 国产原创演绎剧情有字幕的| 97国产在线视频| 99国产在线视频| 日韩欧美色综合| 国产99在线| 国产成人无码久久久久毛片| 亚洲看片网| 中文字幕丝袜一区二区| 91亚洲免费视频| 香蕉久人久人青草青草| 老司机精品一区在线视频 | 久久一级电影| 欧美全免费aaaaaa特黄在线| 日本AⅤ精品一区二区三区日| 久久国产免费观看| 国产精品无码在线看| 国产欧美视频综合二区|