編輯:關於Android編程
1.采用PUSCH跳頻時需要注意的問題
在上行子幀中,PUCCH信道處於帶寬的高低兩側,或者說位於頻帶的邊緣,PUSCH信道則位於帶寬的中間。PUCCH信道也以RB對為基本單位,每個RB在頻域上是12個子載波,時域上是1個時隙。需要注意PUCCH信道每個RB對的兩個RB位置:第一個時隙的PUCCH信道位於帶寬的低頻位置,第二個時隙的PUCCH信道位於帶寬的高頻位置。如下圖所示。
(圖1)
之所以這麼設置PUCCH和PUSCH的位置,有兩個方面的考慮:第一,將PUCCH放在頻譜的邊緣,可以使控制信令的頻率分集最大化(PUCCH信道中承載的是控制信令);第二,PUSCH必須使用連續的RB,如果將PUCCH放在頻譜的中間,則限制了PUSCH的資源分配。比如某個時刻,系統中只有1個UE在進行上行大數據量的傳輸,如果將PUCCH放在頻帶的中間,就會造成eNB只能給該UE分配有限的RB資源,造成資源浪費的同時,也不能滿足UE的流量需求。如下圖所示。
(圖2)
如果在同一個子幀裡,PUSCH和PUCCH信道之間發生了重疊,那麼就會影響PUSCH和PUCCH信道中數據的解碼。eNB在考慮PUSCH跳頻的時候,映射後的PRB位置不能和PUCCH的位置重疊。
2.PUSCH跳頻方式2(Type2 PUSCH Hopping)
這裡先用圖形的方式介紹Type2的跳頻方式,然後結合數學公式,做進一步的說明。
Type2是根據小區特定的跳頻圖案(hopping pattern)以及鏡像圖案(mirroring pattern)進行的基於子帶的跳頻方式。這句話有三個需要注意的地方:
第一,Type2是基於子帶的跳頻,我們可以將整個帶寬劃分1~4個子帶,這一點與Type1是不同的,Type1並沒有子帶的概念。
第二,Type2的跳頻圖案是小區特定的,意味著不同的小區,跳頻圖案是不一樣的;而同一個小區,不同的UE使用的跳頻圖案是一樣的。不過有個例外,就是如果整個帶寬只劃分1個子帶,那麼不同小區的跳頻圖案可能是一樣的,這點可以從後文的數學公式中的得到印證。
第三,Type2有一種鏡像模式,該模式能進一步增加跳頻的復雜度,可以進一步避免與鄰區的跳頻結果相同。
下圖是一個PUSCH子帶示意圖,在這個圖中,整個上行帶寬對應50個RB,總共劃分了4個子帶,每個子帶包括11個RB。需要注意的是,子帶並沒有覆蓋整個上行頻帶,頻帶兩側的PUCCH信道並不在子帶的范圍。
(圖3)
這裡用一句話來概括Type2跳頻的步驟:基於子帶的跳頻,是根據ul_grant調度授權給出的VRB位置,采用小區特定的跳頻圖案,通過移位映射到相應的PRB位置。這種跳頻圖案可以為不同的時隙提供不同距離的移位。如下圖所示,eNB給某個UE分配了一組連續的VRB,分別是RB27、RB28、RB29。在第一個時隙,預定義的跳頻圖案取值為1(即Hopping Pattern=1,對應後文公式中跳頻函數f_hop(i)的計算結果,此處先做了解),意味著需要將VRB的圖案整體向右移動1個子帶,因而PRB的位置分別是RB38、RB39、RB40。在計算第二個時隙的時候,HP取值為3,意味著需要將VRB的圖案(即RB27、RB28、RB29)整體向右移動3個子帶,因而PRB的位置分別是RB16、RB17、RB18。
(圖4)
說完了跳頻圖案(hopping pattern),再說說鏡像圖案(mirroring pattern)。鏡像圖案是指在一個時隙的一個子帶內對分配的資源使用鏡像。也就是說,采用鏡像模式並不會將PRB的位置從一個子帶偏移到另一個子帶,而是子帶內的鏡像對稱偏移,理解了這一點也就理解了鏡像模式。比如對上面的圖4的第二個時隙進行鏡像偏移,那麼結構將會是下面的圖5所示(這張圖中的虛線標注的VRB到PRB的映射關系並不對,應該是紅線標注的對應位置,參考後文的圖11)。
(圖5)
在圖5中,第二個時隙采用了鏡像模式(即Mirroring Pattern=YES,對應後文公式中鏡像函數f_m(i)的計算結果,此處先做了解),因此原本子帶1內的PRB的位置是RB16、RB17、RB18,經過鏡像偏轉後,被移位到了同屬子帶1的RB20、RB21、RB22。
上面概括的介紹了Type2跳頻的兩種方式(跳頻圖案和鏡像圖案),接下來用數學公式來說明這兩種方式的計算結果。如果你只是想了解一下Type2跳頻的大概內容,那麼看到這裡就可以了。
在上一篇講解Type1的跳頻方式時,提到:在第一個時隙裡,PRB的位置實際上與VRB的位置是相同的;在第二個時隙裡,最終的PRB與VRB有一定的偏移。在講解Type1計算PRB位置公式的時候,可以注意到,第一個時隙和第二個時隙的公式是不同的,第二個時隙的公式要復雜的多。而對於Type2類型的跳頻方式,兩個時隙的PRB位置是通過相同的公式計算得到的,時隙ns是作為一個參數來計算PRB的位置的。具體公式如下,其中第ns個時隙的PRB的位置用參數n_PRB(ns)表示。
(圖6)
下面對這個公式做些說明:
(1)我們的最終目標是要計算PRB在兩個時隙中的位置,也就是時隙ns的PRB位置n_PRB(ns),它與Nsb、N_HO_RB、hoppingMode等參數有關。Nsb參數表示當前PUSCH區域劃分了幾個子帶,范圍是1~4,即最多劃分4個子帶,該值由RRC配置的參數n-SB得到。N_HO_RB參數由RRC配置的參數pusch-HoppingOffset得到,hoppingMode參數決定了采用“子幀間跳頻模式”還是“子幀內子幀間跳頻模式”。RRC配置的參數n-SB、pusch-HoppingOffset和hoppingMode參數,來源於SIB2中的PUSCH-Config信元,如下圖所示。
(圖7)
(2)公式中,使用N_sb_RB來表示當前每個子帶占用的RB個數。如果Nsb=1,則N_sb_RB等於整個帶寬的RB個數N_UL_RB。如果當前是10M帶寬,RRC配置的n-SB = pusch-HoppingOffset = 4,則根據上文的公式,每個子帶占用的RB個數N_sb_RB=floor((50 - 4 - 4 mod 2)/ 4)= 11,即每個子帶占用11個RB,此時PUSCH的子帶RB分配情況如下圖所示,帶寬兩邊預留6個RB用於PUCCH信道的使用。
(圖8)
(3)公式中,CURRENT_TX_NB的含義在Type1類型的跳頻也有用到,表示當前TB塊的HARQ傳輸次數。這個參數僅在“子幀間跳頻”模式下才有效,因為在子幀間跳頻模式下,同一個子幀、不同時隙的PRB的位置需要保持一致,參考博文《PUSCH上行跳頻(1)-Type1頻率跳頻》裡的圖(3)。而跳頻之後並不能保證兩個時隙的PRB位置一致,因此就需要根據CURRENT_TX_NB值的不同,做適當的調整,保證在子幀間跳頻時,兩個時隙的PRB位置一致。
(4)公式中的鏡像函數f_m(i)的計算結果只有兩種取值:0(FALSE)或者1(TRUE),表示某個時隙是否引入“鏡像圖案”(mirroring)的跳頻,如果在某個時隙ns中,函數f_m(i)的計算結果等於1,則表示該時隙PRB的位置需要進行一次“鏡像”操作。前文圖5描述的就是采用鏡像模式的一個例子,這裡用公式再來計算一下圖5進行鏡像模式後第二個時隙的PRB位置:
根據圖5的子帶配置,可以確定的條件有:
(5)公式中使用的C序列,
(6)公式中的跳頻函數f_hop(i)是一個遞歸函數,f_hop(-1)=0。
3.總結
PUSCH跳頻的相關內容總結如12所示,通過這張圖我們可以加深對PUSCH跳頻的了解。
首先需要先介紹下LayoutAnimationController: * 1.LayoutAnimationController用於為一個layo
RadioGroup+ViewPager+Fragment實現的可滑動的Tab頁,非常的靈活。最終效果圖 demo下載:http://download.csdn.net/
對於android的圖片加載庫,之前用過UIL、volley、Picasso、Glide、Fresco,都是很好的圖片加載庫,之前對於Picasso這個庫研究的比較多一點
一.概述因為之前項目有動態熱修復的功能,在修復的過程中會從服務器上下載一個新的dex文件來替換老的dex文件,所以就牽扯到文件身份效驗的問題.通常接口會下發一個MD5值,