NR PUSCH power control

Posted modem协议笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NR PUSCH power control相关的知识,希望对你有一定的参考价值。

 这篇看下NR PUSCH power control的相关内容,主要内容集中在38.213 7.1章节,功率计算无非就是一个长公式,根据RRC配置的参数及后续DCI field 的内容作出功率的调整;最初这部分看的就云里雾里的,最近再看,相比于之前,理解确实又进了一步,不过有些内容由于工作中不涉及,对于我来说还是需要再细细研究;这部分根据R16 spec整理,拿来看R15 的log,并没有什么冲突,也可以适用。

UL功率控制,主要是PUSCH PUCCH SRS PRACH 的传输功率。

对于所有PUSCH/PUCCH/SRS传输,UE 不期望每个服务小区维护4个以上的路损估计,配置SRS-PosResourceSet的SRS传输除外。;如果UE配置的用于计算路损的参考信号resource多于4个,UE要维护与RS resource index对应的用于路径损耗估计的RS资源;如果UE收到针对路损估计的参考信号 resource 变更的MAC CE,UE要在slot k+3N_subframe,u_slot+1 才能应用型的参考信号 resource,其中slot k对应的是UE传输MAC CE PUCCH/PUSCH HARQ-ACK的时隙。

PUSCH/PUCCH/SRS/PRACH 传输时机i,由系统帧号SFN的帧内的时隙索引n_u_s,f及该时隙内的第一个符号S 和多个连续符号L定义。

PUSCH power control 大体流程就是,gNB确定期望的UL发射功率,并向UE提供UL的功率控制命令(TPC);UE使用所提供的UL功率命令(TPC)来调整其发射功率。NR的UL功控分为开环+闭环,所谓开环是指p0 alpha的等参数是RRC配置的开环功控参数,用于传输功率的计算;进入连接态后,网络端对现有配置,通过DCI 指示TPC来进行调整的部分,就是闭环过程。

上图是38.213中有关PUSCH功率的计算公式,PUSCH 功率由两个值的最小的那个确定,其中一些参数的含义如下(后面的内容也会讲到):

i :如开头所述,是PUSCH/PUCCH/SRS/PRACH 传输时机i,由系统帧号SFN的帧内的时隙索引n_u_s,f及该时隙内的第一个符号S 和多个连续符号L定义。这里对应的就是PUSCH传输时机i。

 

 

j:参数集配置索引(parameter set configuration).j=0,代表承载msg3(4-step RA)或msgA(2-step RA)的上行功控(PUSCH)j=1,ConfiguredGrantConfig,代表配置调度时的UL 功控(PUSCH);;j从2到J 是正常情况下的功控。

 

 

q_d: 用于下行Pathloss 估计的参考信号的索引,参考信号可以是SSB 或CSI-RS。

l: PUSCH power control adjustment state,l=0,1 或l=0,后面再介绍

b,f,c:b对应 UL BWP索引,f对应载波索引,c是对应的服务小区索引。

P_CMAX,f,c(i)和P_o_pusch_b,f,c两个参数相比,前者带的是f,c 后者带的是b,f,c,结合其含义,b 代表的是对应的UL BWP index,前者f,c对应的是载波级别的功率参数,后者b,f,c对应的是BWP级别的功率参数。

公式中的参数接下来一个个看下。

一、P_CMAXf,c(i)

P_CMAX,f,c(i) 为在PUSCH传输时机i 针对服务小区C/载波f 配置的最大输出功率,对应的是载波级别的功率参数,指每个服务小区c的载波f 上每个时隙的最大output power ,这里没有b ,说明是载波级别的参数,不是BWP 级别的。

38.101-1 6.2.4介绍了取值范围

通过上面的公式看,P_CMAX,f,c 前后两个参数都与PEMAX,c有关系,先看PEMAX,c。

PEMAX,c有SIB1中的p-Max或NR-NS-PmaxList 中的additionalPmax相关。目前看到的log中,SIB1中只会配置P-MAX,没有配置additionalPmax。

PowerClass在UeCapabilityInformation 中上报,每个band支持的powerclass会列出。

之后根据38.101-1 Table 6.2.1-1 确定,例如pc2对应的就是Class 2 26dBm。通常UE都支持PC3 即23dBm,所以支持PC2的UE有个HPUE 的叫法。

 Delta P_powerClass确定如下,其余参数先不看了,太多了。

整个计算完后,这个参数就是一个载波级别的最大输出功率。

二、Po_puschb,f,c(j) 

公式中的Po_puschb,f,c(j) 是上图2个红框参数的和。

j:参数集配置索引(parameter set configuration).

j=0,代表承载msg3/msgA的上行功控(PUSCH);

Type-1 的随机接入就是 4-step RA,下面是对应参数的取值情况

对于Msg3 ,P o_NOMINAL_PUSCH,f,c(0)=P o_PRE+Delta_Preamnle_Msg3=preambleReceivedTargetpower+msg3-DeltaPreamble

例如根据以下参数可以确定P o_NOMINAL_PUSCH,f,c(0)=-100+4×2=-92 P o_UE_PUSCH,B,F,C(0)=0 最终P o_PUSCH b,f,c(0)=-92。

msg3-DeltaPreamble在实际取用时要做×2处理。

 

Type-2 的RA 是2-step的RA 参数取值如下

j=1,ConfiguredGrantConfig,代表配置调度时的UL 功控(PUSCH);

P o_NOMINAL_PUSCH,f,c(1)有p0-NominalWithoutGrant 则取其值;没有p0-NominalWithoutGrant 则取值P o_NOMINAL_PUSCH,f,c(0);

P o_UE_PUSCH,b,f,c(1)取值ConfiguredGrantConfig中的p0-PUSCH-Alpha中的p0。

 

 

j从2到J-1 是正常情况下的功控。

同样的道理,P o_NOMINAL_PUSCH,f,c(j)有p0-NominalWithoutGrant 则取其值;没有p0-NominalWithoutGrant 则取值P o_NOMINAL_PUSCH,f,c(0);P o_UE_PUSCH,b,f,c(j)取值ConfiguredGrantConfig中的p0-PUSCH-Alpha中的p0。目前看log 都会配置p0-NominalWithGrant。 

P o_UE_PUSCH,b,f,c(j)取值p0-PUSCH-Alphaset中p0-PUSCH-AlphaId对应的p0,其取值有如下三种场景

(1)配置SRI-PUSCH-PowerControl的情况:

如果UE有配置SRI-PUSCH-PowerControl,其中有不止一个p0-PUSCH-AlphaSetId,这时候收到了DCI 带有SRI field,要根据SRI 与SRI-PUSCH-PowerControlId的映射关系,SRI-PUSCH-PowerControlId有对应的P0-PUSCH-AlphaSetId,找到P0-PUSCH-AlphaSetId->p0,这个p0值作为P o_UE_PUSCH,b,f,c(j)。如下图是配置SRI-PUSCH-PowerControl的配置路径,通过确定DCI field SRI 找到SRI-PUSCH-PowerControlId 就可以确定一个p0。

SRI-PUSCH-PowerControl的配置结构如上,注意在其中还有其他一些与sri-PUSCH-PowerControlId相关的其他参数,例如sri-PUSCH-PathlossReferenceRS-id/sri-P0-PUSCH-AlphaSetId/sri-PUSCH-ClosedLoopIndex等,在后面都会用到相同的逻辑即根据DCI field SRI 确定sri-PUSCH-PowerControlId,进而找到对应的value。

(2)除了上述确认方式,还有另一种通过DCI SRI 确定P o_UE_PUSCH,b,f,c(j)的方式,这种方式要结合另一个DCI field Open-loop power control parameter set indication的配置情况,如下。

如果DCI 带有SRI且Open-loop power control parameter set indication field=1,那P o_UE_PUSCH,b,f,c(j)就取 SRI field 映射的p0-PUSCH-SetId对应的P0-PUSCH-Set中的第一个配置中p0值;Open-loop power control parameter set indication field如上图,如果SRI确定的是P0-PUSCH-Set 0,那P o_UE_PUSCH,b,f,c(j)= 0;如果是P0-PUSCH-Set 1,那P o_UE_PUSCH,b,f,c(j)= -1如下图。

(3) 没有DCI field SRI且没有配置SRI-PUSCH-PowerControl

除RAR UL grant PUSCH 重传外的其他PUSCH传输,如果DCI 没有带SRI field,或者没有配置SRI-PUSCH-PowerControl,j=2时:

UE此时有P0-PUSCH-Set配置且DCI有open-loop power control parameter set indication field,P o_UE_PUSCH,b,f,c(j)取值规则如下

open-loop power control parameter set indication=0 或00,取P0-AlphaSets中第一个P0-PUSCH-AlphaSet 中的p0;

open-loop power control parameter set indication=1 或01,取P0-PUSCH-Set中最小p0-PUSCH-SetID的第一个p0;

open-loop power control parameter set indication=10,取P0-PUSCH-Set中最小p0-PUSCH-SetID的第2个p0;

另外如果没有配置P0-PUSCH-Set,P o_UE_PUSCH,b,f,c(j)取P0-AlphaSets中第一个P0-PUSCH-AlphaSet 中的p0。

三、a_b,f,c (j)

msg3 的情况

msgA的情况

 

和之前情况类似,配置SRI-PUSCH-PowerControl的情况路损补偿系数由P0-PUSCH-AlphaSet 中的alpha决定

 (1)UE 收到SRI-PUSCH-PowerControl 及多个p0-PUSCH-AlphaSetId的配置,收到的DCI中包含PUSCH 传输的SRI field,则根据DCI SRI field 找对应的sri-PUSCH-PowerControlId,进而确定p0-PUSCH-AlphaSetId 找到对应的alpha值。  

 (2)除RAR UL grant PUSCH 重传的情况外,如果没有收到DCI SRI field 或没有配置SRI-PUSCH-PowerControl ,J=2 则UE 将p0-AlphaSets中的第一个p0-PUSCH-AlphaSet 中的alpha值当作路损补偿系数

 

四、2的u次方×M_pusch_RB,b,f,c(i)

M_pusch_RB,b,f,c(i)如上绿色字体 就是那个时刻分配RB的带宽,结合PUSCH 功率公式,如果UE发送UL数据时,TB size很大,网络给UE调度的RB会越多,则UE的PUSCH功率也越大;2的u次方,SCS u越大,一个RB的频域带宽也越大,调度相同RB个数下,PUSCH实际使用的带宽也会增大,则同样也会导致UE发送PUSCH时,需要更大的功率。

五、PL_b,f,c(q_d)

PL_b,f,c(q_d)=referenceSignalPower—测量和高层滤波后的RSRP;这时候会配置一个参考信号给UE 用于计算路损,

参考信号可以是CSI-RS或SSB,如果没有配置periodic CSI-RS时,referenceSignalPower=ss-PBCH-Blockpower;UE有配置periodic CSI-RS时,referenceSignalPower=ss-PBCH-Blockpower 或powerControlOffsetSS,powerControlOffsetSS是CSI-RS相对于SSB的power偏移,没有配置时powerControlOffsetSS=0。

其余部分是用于测量路损的参考信号的选取:

没有配置PUSCH-PathlossReferenceRS 及enableDefaultBeamPL-ForSRS 或在UE 还没有收到RRC dedicated 参数时,UE根据获取MIB的SSB 计算路损。

网络会配置PUSCH PathlossReferenceRS,则用于计算路损的RS id由PUSCH-PathlossReferenceRS 中的pusch-PathlossReferenceRS-Id 决定,配置结构如下:

对于RAR UL grant 即msg3/msgB的发送,采用和PRACH初始传输时相同的参考信号。

UE 有配置SRI-PUSCH-PowerControl,且对应多个PUSCH-PathlossReferenceRS-Id,,同样的根据DCI 中的SRI field 确定 sri-PUSCH-PowerControlId ,找到对应的PUSCH-PathlossReferenceRS-Id进而确定最终用于计算路损的RS resource index 。

后面还有很多情况不继续列出了 ,在38.213 7.1.1。

六、Delta_TF_b,f,c(i)

这部分可以看作是MCS调整量;Ks=0 或者PUSCH layer 大于 one layer 取0;Ks=1.25 采用绿色字体部分

Ks 来自RRC 层的deltaMCS。

其他相关参数如下,这里仅作简单罗列,方便后续查找。

七、f_b,f,c(i,l) 

这部分主要是根据DCI 2_2 field对PUSCH power进行调整的过程,因而可以看作是闭环调整部分,另外一个RRC层的配置参数tpc-Accumulation也很关键。 

tpc-Accumulation 配置的话 带的value只能是disable 对应的是绝对值方式;没有配置就是功率累加方式。通过38.213中的描述可以看出,累加模式时f_b,f,c(i,l)是一个累加公式;disable tpc-Accumulation时,对应的是一个等式,绝对值公式中有个delta_pusch b,f,c(i,l),对应的是DCI field 中的TPC comand。

DCI 2_2 是一组UE发送的TPC command,首先要考虑 DCI field的大小,以及UE去哪个具体的位置上去取属于自己的bits问题。

DCI 2_2 是用于给一组UE发送PUCCH/PUSCH TPC command的DCI,由TPC-PUSCH-RNT/TPC-PUCCH-RNTI加扰,RNTI一般在RRCReconfiguration或RRCSetup中配置给UE。既然是给一组UE发送的TPC command,那就涉及单个UE获取位置及取几bits的问题,先看UE如何确定要从DCI中获取几bits的问题,DCI 2_2可能包含Closed loop indicator和TPC command(2bits),主要是Closed loop indicator是否存在的问题,根据上面截图的描述,当配置twoPUSCH-PC-AdjustmentStates/twoPUCCH-PC-AdjustmentStates时,Closed loop indicator 对应1 bit,整个DCI 2_2对应3bits;没有上述2个配置时,Closed loop indicator 对应0 bit,整个DCI 2_2对应2bits。

而UE需要从DCI 2_2的哪个位置获取自己想要的那几bits,由tpc-PUSCH中的tpc-index提供位置,如上图,tpc-index分为NUL和SUL的情况,targetCell可以提供服务小区的信息,如果没有配置targetCell,就认为当前的TPC command要用于接收DCI 2_2 PDCCH对应的cell;

tpc-index可配置1~15,也就是说可以同时为15个UE提供PUSCH TPC command,例如配置的tpc-index=1,UE就去DCI 2_2 index 1的位置取对应的bits;tpc-index=13,UE就去DCI 2_2 index 13的位置取对应的bits。

公式中的delta_pusch b,f,c(i,l)是由TCP-PUSCH-RNTI加扰的DCI 2_2中的TPC command field,是为服务小区c的carrier f 对应的BWP b的PUSCH传输时机i进行power 调整的。

其中l 的取值规定如下,twoPUSCH-PC-AdjustmentStates 配置时 则有两个states l=1 或0;没有配置或者对应RAR UL grant PUSCH传输时 只有一个state l=0。

更具体的l的确定与场景有关系:

ConfiguredGrantConfig PUSCH传输场景,l的值由powerControlLoopToUse提供,如下

UE配置SRI-PUSCH-PowerControl时,l 由根据DCI SRI field 最终选定的sri-PUSCH-PowerControlId 对应的sri-PUSCH-ClosedLoopIndex 提供,如下;

如果DCI 中没有SRI field 或者没有配置SRI-PUSCH-PowerControl时,l=0

如果UE获得了TPC-PUSCH-RNTI加扰的DCI 2_2,那l 取值于closed loop incicator field。 

前景内容基本结束了,下面就具体看下累加和绝对值的情况。 

累加

没有配置tpc-Accumulation时,对应的是累加情况,初始fb,f,c(k,l)=0,然后delta_pusch b,f,c需要根据DCI 中的TPC Command确定,一步步累加,DCI 中的TPC Command取值与delta_pusch b,f,c具体dB的对应关系如下。

而公式中的求和代表一段时间内的TPC Command 的求和,这段时间对应的是PUSCH 传输时机i-i0至传输时机i,更具体的对应的符号是K_pusch(i-i0)-1~K_pusch(i),针对动态DCI 调度的PUSCH传输时机画个示意图如下。

 

如果UE在计算f_b,f,c(i,l)时达到最大功率,那f_b,f,c(i,l)取前一次满足功率要求的值,即f_b,f,c(i,l)=f_b,f,c(i-i0,l)。

如果RRC层收到了P O_UE_PUSCHb,f,c(j)和a b,f,c(j)的新的配置,那fb,f,c(k,l)要重置为0,重新开始。

 

绝对值

RRC配置tpc-Accumulation时,代表的就是绝对值的情况,就是根据收到的DCI 去实时改变fb,f,c(i,l),同样要首先确定第一次PUSCH 传输fb,f,c(0,l) 的值,后面根据DCI 实时改变fb,f,c(i,l)就可以了。

 

Msg3和MsgB fb,f,c(0,l)的确定

R16增加了2-step RA过程,因而针对UE收到 4-step RAR或者2-step RAR的回复后的PUSCH传输时的fb,f,c(0,l),及发送Msg A PUSCH时的fb,f,c(0,l)分别进行了相应规则的描述;R15中并不涉及2-step RA 所以只有第一段有关4-step RAR后PUSCH传输初值fb,f,c(0,l)的描述。

UE收到了4-step RAR或者2-step RAR的回复, 对应的第一次PUSCH 传输的f b,f,c(0,l) 由上图中的蓝色部分的长公式和绿色部分组成;其中绿色部分是Type1和2 RA 的RAR中的TPC command 提供,如下图;蓝色部分部分的意思是如果计算出的PUSCH 超出最大功率Pcmax,f,c,按最大功率发送,其中比较关键的一个参数是DeltaP_rampuprequested,b,f,c, 其对应的是第一次RA之目前RA preamble 发送的一个power 抬升值,即RA fail 再次进行RACH 时会涉及power up的操作,这时候增加的功率也要考虑进去,如上图38.321 5.1.4中的内容。

 MsgA PUSCH fb,f,c(0,l)的确定

 

R16 对于2-step MsgA PUSCH初始传输时f b,f,c(0,l) 直接由上面的公式决定,由于没有接收RAR的问题,所以只由DeltaP_rampuprequested,b,f,c决定。

最后看两个例子,一个是Msg3 场景PUSCH的传输和正常场景下PUSCH 传输power 计算的内容。

Msg 3 PUSCH

P o_PUSCH,b,f,c(j)=P o_NOMINAL_PUSCH,f,c(j)+P o_UE_PUSCH,b,f,c(j)

对于Msg3 ,P o_NOMINAL_PUSCH,f,c(0)=P o_PRE+Delta_Preamnle_Msg3=preambleReceivedTargetpower+msg3-DeltaPreamble=-100+2×2=-96, P o_UE_PUSCH,b,f,c(0)=0,则P o_PUSCH,b,f,c(0)=-96;

log 中没有配置deltaMCS,根据规定这时候 Delte_TF,b,f,c(i) =0,正如上图中的Delta TF=0;没有配置msg3-Alpha,a_b,f,c (j)=1;

tpc-Accumulation没有配置,这时候f_b,f,c(i,l),采用累加的方式,由上面的截图可见这是第一次RACH,实际log中 一次RA也就成功了,f_b,f,c(0,l)=DeltaP_rampuprequested,b,f,c+Delta_msg2,b,f,c=(PREAMBLE_POWER_RAMPING_COUNTER – 1) × PREAMBLE_POWER_RAMPING_STEP+Delta_msg2,b,f,c=Delta_msg2,b,f,c,由上面的截图TPC Adjustment 对应的就是f_b,f,c(0,l)=6;PL_b,f,c(q_d)=112。

使用T_C_RNTI 发送的PUSCH 对应的就是Msg3 ,Num RBs=4 则M_PUSCH_RB,b,f,c(i)=4;SCS =30khz,对应2^u=2。

P o_PUSCH,b,f,c(j)+10log(2^u *M_PUSCH_RB,b,f,c(i))+a_b,f,c(j)*PL_b,f,c(q_d)+Delte_TF,b,f,c(i)+f_b,f,c(i,l)

-96+10log(2*4)+1*112+0+6=31 dbm,虽然算出来是31,但是还要根据参考MTPL,根据允许传输的最大功率进行传输。

RA成功后的第一次PUSCH传输 

  

P o_PUSCH,b,f,c(j)=P o_NOMINAL_PUSCH,f,c(j)+P o_UE_PUSCH,b,f,c(j),对于正常情况下的PUSCH 功率控制,P o_NOMINAL_PUSCH,f,c(j)有p0-NominalWithoutGrant 则取其值;没有p0-NominalWithoutGrant 则取值P o_NOMINAL_PUSCH,f,c(0);log 都会配置p0-NominalWithGrant,这里

P o_NOMINAL_PUSCH,f,c(j)=-74;

这时候还没有配没有配置SRI-PUSCH-PowerControl,根据规定 j=2,P o_UE_PUSCH,b,f,c(j)要取P0-AlphaSets中第一个P0-PUSCH-AlphaSet 中的p0,P o_UE_PUSCH,b,f,c(2)=0,则P o_PUSCH,b,f,c(2)=-74;同理确定a_b,f,c(2)=0.8。

log 中没有配置deltaMCS,根据规定这时候 Delte_TF,b,f,c(i) =0,正如上图中的Delta TF=0;

tpc-Accumulation没有配置,这时候f_b,f,c(i,l),采用累加的方式,根据上面的TPC Adjustment 此时f_b,f,c(i,l)=0;PL_b,f,c(q_d)=112。

Num RBs=4 则M_PUSCH_RB,b,f,c(i)=4;SCS =30khz,对应2^u=2。

P o_PUSCH,b,f,c(j)+10log(2^u *M_PUSCH_RB,b,f,c(i))+a_b,f,c(j)*PL_b,f,c(q_d)+Delte_TF,b,f,c(i)+f_b,f,c(i,l)

-74+10log(2*4)+0.8*112+0+0=24.6,和log中打印的24 差0.6dbm,反复看,值应该没取错,结合设置的MTPL,算出来后还要与MTPL进行比较,取最小值。

本篇结束,感谢阅读。

 

 

以上是关于NR PUSCH power control的主要内容,如果未能解决你的问题,请参考以下文章

NR PUSCH DMRS

NR PUSCH 动态调度时域资源

NR PUSCH 动态调度时域资源

NR PUSCH 相干传输

NR PUSCH 相干传输

NR PUSCH 频域资源