UE 在connected mode 需要实时和网络进行上下行通信,在UE有UL data要发送但是没有UL grant时,就需要向网络端发送SR请求资源,网络收到SR就会在激活的BWP上发送 UL DCI给UE,UE 根据UL DCI 信息 获得UL grant ,然后在PUSCH对应的资源上就可以发送UL data给网络,最后网络端通过HARQ 过程指示是否有收到对应的data。这是UL data 的基本流程,下面通过实际log分别看下UL data operation的各个过程。
UL data operation流程图如下。
上图主要分为四个步骤:
SR: 向网络端发出请求, 要网络端提供上行资源。
UL grant: 网络端收到SR后提供给UE的上行资源, 包含RB, MCS, TBS, … 涉及时频域资源的分配。
PUSCH data: UE在PUSCH由UL grant指定的资源发出UL data。
PDCCH NDI: 网络端通过PDCCH的New Data Indicator (NDI)告诉UE,有无收到PUSCH data, 如果有正确收到, 则会翻转NDI的值, 0或1
UL/DL data operation中经常提及的几个参数代表的含义总结如下
K0:在PDCCH上收到DL DCI后需要去PDSCH 上接收DL data,K0代表DL grant与DL transmission 时间偏移,即DL DCI 的时隙和调度PDSCH 时隙的偏移间隔,需要结合DCI field Time domain resource assignment的value作为索引在PDSCH-TimeResourceAllocationList中找映射值,初始接入时要根据默认的PDSCH 时域资源分配表确定(参见NR PDSCH(一) 时域资源)。
K1:从PDSCH 上收到DL data后,UE 需要在PUCCH 上发送HARQ ACK/NACK消息给网络端,K1代表PDSCH 接收的slot n与 PUCCH 进行HARQ-ACK的 时隙偏移,根据DCI PDSCH-to-HARQ_feedback timing indicator field与RRC 层参数dl-DataToUL-ACK/dl-DataToUL-ACK-r16/dl-DataToUL-ACKForDCIFormat1_2确定(参见NR PUCCH(三) PUCCH resource 的配置与调用)。
K2:从PDCCH 上收到UL grant,需要去PUSCH 上发送UL data。K2代表UL grant与UL transmission 时间偏移,即UL DCI 的时隙和调度PUSCH 时隙的偏移间隔 (后面PUSCH再具体说),需要结合DCI 中的Time domain resource assignment field 及RRC 层配置pusch-TimeDomainAllocationList确定,初始接入时和PDSCH一样有规定默认配置 。
Scheduling Request 会在RRC连接态,UE没有上行资源时,通过PUCCH resource发送。
根据RRC OTA中配置的SR资源 schedulingRequestID 0,可以确定mapping到PUCCH resource 是 pucch-ResourceId 16;PUCCH resource对应 PUCCH format 1 ,通过startingSymbolIndex 0 及nrofSymbols 14,可以确定PUCCH format 1占用14个符号也就是占满一个时隙,有enable时隙内跳频,StartingPRB 272, secondHopPRB 5是跳频相关的参数。
PUCCH format 1一个时隙内对应时频域示图如下:
SR发送周期及偏移periodicityAndOffset sl40 : 38 ,即每40个时隙 传一次,要在第39个时隙传输SR(index 0~39)。
从log中看到UE 在frame 573 slot 18 用PUCCH format 1 发送了SR,根据38.213 9.2.4中确定SR发送时机的公式,可知frame 573 slot 18满足公式,确实是可以发送SR(SCS=30khz N_frame_slot =20),计算过程如下。PUCCH power control暂时先忽略,后面具体讲述时再举例。
SR发送时机内容参见NR PUCCH(一)
UE 在frame 574 slot 5收到了UL grant DCI 0_1,带有MCS RB等信息,UE通过DCI Time domain resource assignment field结合pusch-TimeDomainAllocationList,确定K2,Q log中需要根据Symbol Alloc Index确定 Time domain resource assignment ,Symbol Alloc Index=Time domain resource assignment=0 。
有时候pusch-ConfigCommon和pusch-Config 都会包含 pusch-TimeDomainAllocationList,这时候要根据38.214 Table 6.1.2.1.1-1确定要用哪个pusch-TimeDomainAllocationList;目前所看的log对应的就是最后一项,所以要以pusch-Config 中的pusch-TimeDomainAllocationList为准。
pusch-Config 中的pusch-TimeDomainAllocationList如下
根据Time domain resource assignment 确定mappingType为 type B, K2 =3 即UE需要在frame 574 slot 8对应的资源上发送PUSCH data。startSymbolAndLength =27 对应S=0 L=14,如下log中 在frame 574 slot 8 对应的资源上发送了PUSCH data,其中Start symbol=0,symbol number =14 正好对应S=0 L=14。
再看下频域分配,UE支持基于DCI的BWP change 时BWP indicator才有效,其bits由RRC层配置的BWP数量决定(不考虑initial BWP,DL/UL的描述时一样的,这里截的是DL部分),如果n_BWP=n_BWP,RRC+1(n_BWP,RRC<=3),这时候按照BWP id由小到大得顺序,根据BWP ind确定;假设这里除了initial BWP外,还配置其他了4个BWP,那这时候要采用Table 7.3.1.1.2-1确定BWP id,BWP ind为Bandwidth part indicator field 取值为1,代表用的是RRC配置的BWP-id=2 的BWP,RA type =1.UL RB分配 start RB 为144,RB number为4。
最后一步,PUSCH data发送出去了,如何确定网络端是否有收到呢?我们知道UE 收到DL data 后可以在PUCCH 上发送HARQ-ACK.NACK通知网络端,而UL data发送给网络端后,主要是通过网络再次下发 UL DCI 的HARQ process number和New data indicator (NDI) field 来确定网络端是否有收到UE 的UL data。
在同样的HARQ process上NDI有toggle (由1翻转为0,或由0翻转为1), 代表网络端有收到PUSCH data 即ACK。
New data transmission: 相同HARQ ID 及NDI toggled;
Data retransmission: 相同HARQ ID 及NDI没有toggled。
这份log中 在frame 574 slot 5上收到HARQ id 0 的DCI 0_1 NDI=0 RV= 0,之后在frame 574 slot 15上收到了HARQ id 0 DCI 0_1 NDI =0,RV=2;最后在frame 575 slot 5上收到HARQ id 0 的DCI 0_1 , RV= 0,NDI=1 ,NDI 翻转 说明 网络端有收到对应的data,即最后这次进行的是new data传输。
上面的log对应的R15版本的内容,其他未提及的内容后面会在PUSCH/HARQ/CSI等部分再说。