在文章《lte-tdd harq(1)-上行harq時序》裡已經詳細介紹了上行harq的時序,包括msg3/dci0與pusch的時序關係、pusch與ack/nack的時序關係,以及nack與重傳pusch的同步時序關係,本篇繼續介紹下行harq的時序關係。
在下行harq傳輸過程中,主要有3個步驟(如圖1所示):
步驟1:enb通過pdsch向ue傳送使用者資料。如果此時還需要為ue排程上行pusch的資源,則除了需要傳送dci1/1a或dci2/2a等下行dci之外,還需要傳送dci0。
步驟2:ue收到pdsch之後,會進行crc校驗:如果crc校驗失敗,則在規定時刻向enb反饋nack;如果crc校驗成功,則向enb反饋ack。如果反饋時刻正好有pusch資料需要傳送,那麼ack/nack將通過pusch通道傳送到enb(所以dci0中需要增加dai欄位),否則通過pucch通道傳送。
步驟3:如果enb收到的是ack,那麼enb將繼續傳送新的資料報,而如果enb收到的是nack,那麼enb將會在後續的子幀中重傳該資料。由於下行是非同步重傳,重傳的時刻與新傳的時刻並沒有固定的時序關係,具體在哪個子幀重傳,要看enb側的演算法實現。
(圖1 下行harq時序示意圖)
與上行的harq時序相比,由於下行重傳採用的是非同步傳輸,與新傳之間並沒有固定的時序關係,如圖1中的b時段,因此下行的時序相比上行而言要簡單的多,下文具體介紹pdsch與ue側反饋ack/nack之間的時序關係,即圖1中的a時段。
如下面的圖2所示,「ul-dl configuration」表示當前採用的上下行子幀配置,範圍是0~6。"subframe n"表示的是ue向enb傳送ack/nack的上行子幀號,範圍是0~9。**中間的數字用k表示,通過(n+10-k)mod 10可以得到該ack/nack對應的pdsch的傳送子幀號,如上文中的圖1所示。
(圖2 pdsch與ue反饋的ack/nack之間的時序)
比如當前的上下行子幀配置為1,ue在上行子幀號n=2中反饋ack/nack,那麼查詢圖2,可以發現對應**中有2個k值,分別是k0=7,k1=6。k0=7表示2號上行子幀反饋的ack/nack對應的是下行子幀號為(2+10-7)=5的pdsch資料,k1=6表示2號上行子幀反饋的ack/nack對應的是下行子幀號為(2+10-6)=6的pdsch資料。也就是說,當上下行子幀配置為1的時候,5號和6號下行子幀的pdsch的ack/nack應答,ue都在2號上行子幀中反饋,如下文的圖4所示。
通過類似的過程可以推導出在任意的上下行子幀配置中,任意的pdsch資料對應的ack/nack反饋的上行子幀是哪乙個。圖3、4、5分別表示了上下行子幀配置0、1、2這三種情況下的下行harq時序關係(sharetechnote上的圖畫的不錯,就直接用他們的圖,不另外畫了),其中d表示下行子幀,u表示上行子幀,s表示特殊子幀,藍色球中的數字就是k值。
(圖3 上下行子幀配置0時的下行時序)
(圖4 上下行子幀配置1時的下行時序)
(圖5 上下行子幀配置2時的下行時序)
需要關注的是,有的上行子幀只需要反饋1個pdsch子幀的應答,比如配置1時的8#子幀只反饋4#子幀的應答;有的上行子幀需要反饋多個pdsch子幀的應答,比如配置2時的7#子幀,需要反饋9#、0#、1#、3#共四個子幀的應答。當然,也有某些上行子幀不用於反饋pdsch子幀的應答,比如配置0時的8#子幀,則不需要反饋任何pdsch的應答。
參考:
(1)3gpp ts 36.213 v9.3.0 (2010-09) physical layer procedures
(2)
linux系統下使用者切換 3
su user 和 su user 的區別 su user 切換到其他使用者,但是不切換環境變數,su user 則是完整的切換到新的使用者環境。如 root rac1 pwd 當前目錄 root root rac1 su oracle 使用su user oracle rac1 root pwd ...
Ubuntu下sublime text3安裝步驟
1.在ubuntu中按ctrl alt t開啟命令視窗,按下面步驟和命令進行安裝即可 新增sublime text 3的倉庫 sudo add apt repository ppa webupd8team sublime text 3 2.更新軟體庫 sudo apt get update 3.安裝...
python3下的twistedPOST請求網頁
在python2中我們使用twisted比較方便,網上資料也比較多,但是通常在python3中使用的時候,並不能成功。我也是找了好多資料沒有成功之後,自己去嘗試做小白鼠,測試了很久之後,發現傳遞給twisted的所有資料都需要是bytes型別的。直接看 吧 親測可用 from twisted.int...