在文章《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)http://www.sharetechnote.com