动态的功率偏移包含两个部分,基于MCS的功率调整△TF和闭环的功率控制。
基于MCS的功率调整可以使得UE根据选定的MCS来动态地调整相应的发射功率谱密度。UE的MCS是由eNodeB来调度的,通过设置UE的发射MCS,可以较快地调整UE的发射功率密度谱,达到类似快速功控的效果。△TF的具体计算公式在36.213的5.1.1.1节。eNodeB还可以基于每个UE关闭或开启基于MCS的功率调整,通过dedicated RRC信令(UplinkPowerControlDedicated: deltaMCS-Enabled)实现。
PUCCH中基于MCS的功率调整体现为:LTE系统会对每个PUCCH format定义相对于format 1a的功率偏移(UplinkPowerControlCommon: DeltaFList-PUCCH),具体计算公式在36.213的5.1.2.1节。
闭环的功率控制是指UE通过PDCCH中的TPC命令来对UE的发射功率进行调整。可以分为累积调整和绝对值调整两种方式。累积调整方式适用于PUSCH,PUCCH和SRS,绝对值调整方式只适用于PUSCH。这两种不同的调整方式之间的转换是半静态的,eNB通过专用RRC信令(UplinkPowerControlDedicated: accumulationEnabled)指示UE采用累积方式还是绝对值方式。
累积方式是指当前功率调整值是在上次功率调整的数值上增加/减少一个TPC中指示的调整步长,累积方式是UE缺省使用的调整方式。LTE中累积方式的TPC可以有两套不同的调整步长,第一套步长为(-1,0,1,3)dB。对于PUSCH,由DCI format 0/3指示;对于PUCCH,由DCI format 1/1A/1B/1D/2/2A/3指示。第二套步长为(-1,1),由DCI format 3a指示(适用于PUCCH和PUSCH)。
绝对值方式是指直接使用TPC中指示的功率调整数值,只适用于PUSCH。此时,eNodeB需要通过RRC信令显式地关闭累积方式地功率调整方式。当采用绝对值方式时,TPC数值为(-4,-1,1,4)dB,由DCI format 0/3指示,其功率调整地范围可达8db,适用于UE不连续的上行传输,可以使得eNodeB一步调整UE的发射功率至期望值。
功控可以总结为下列公式
其中假定表达式:
前面四个公式有共性,可以表达为:P_Channel(i) = min{P_CMAX, Formula}
而Power Headroom的公式却不一样:PH(i) = P_CMAX - Formula.
式中的P_CMAX是UE最大的发射功率("6.2.5 Configured transmitted Power" of 36.101),
PUSCH功控
先看下面的公式:
P_PUSCH(i) = min{P_CMAX, 10 log(M_PUSCH(i)) + P_O_PUSCH(j) + alpha(j) PL + Delta_TF(i) + f(i)
[if !supportLists]1. [endif]i:子帧号
[if !supportLists]2. [endif]j:可以是0 or 1
[if !supportLists]3. [endif]M_PUSCH(i):UE分配的RB数
[if !supportLists]4. [endif]P_O_PUSCH(j): P_O_NOMINAL_PUSCH(j) + P_O_UE_PUSCH(j),
其中P_O_NOMINAL_PUSCH(j)和P_O_UE_PUSCH(j) for j = 0, 1来自高层
[if !supportLists]• [endif]P_O_NOMINAL_PUSCH(j)来自SIB2中的p0-NominalPUSCH
[if !supportLists]• [endif]P_O_UE_PUSCH(j)来自p0-UE-PUSCH (e.g, RRC Connection Setup, RRC Connection Reconfig)
[if !supportLists]1. [endif]alpha(j):对于j = 0, 1, alpah(j)可以是{0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}其中之一,具体值来自高层。
[if !supportLists]2. [endif]PL:下行路径损耗,UE自己从参考信号的RSRP中计算得到,参考信号功率从SIB2配置:
[if !supportLists]1. [endif]当Ks = 1.25,则Delta_TF(i) = 10 log((2^(MPR * Ks) - 1) beta_PUSCH_offset)
当Ks = 0,则Delta_TF(i) = 0
其中Ks来自高层
[if !supportLists]2. [endif]f(i) = f(i −1) + delta_PUSCH (i − K_PUSCH ),
其中delta_PUSCH是DCI format 0 或者是DCI format 3/3a消息带着的TPC command,TPC的值如下:
Power Control目标是控制PSD,可等效为不同目标SINR;不同位置的UE,其目标信噪比是不同的;功控需要折衷考虑系统容量与边缘用户的速率。在闭环功控时,上行SINR需要经过平滑滤波,并与目标值进行比较。
左边的SINRtarget’为各个UE的目标信噪比,alpha不为1的情况下,PL越大,UE的目标信噪比就越小
假设PLmax为125,alpha为0.7,SINRtarget为0dB,PL增加30dB时,SINRtarget’就降低9dB。
Plmax和SINRtarget皆为系统的设计值,不同场景对应不同的值。
现有系统中,并没有按照前面介绍的方案实现。
要实现前面的方案,首先第一步是要获取路损值,目前的方案通过UE的上报的PHR来计算得到:
PWR/RB = P_MAX – PHR – 10log(UL_PRB)
PL = PWR/RB - SINR – (-121 + 4)
上面的都是对数值,-121是白噪声的功率,4是平台的噪声系数
路损估算完成之后,再计算得到每个UE的目标信噪比
trgSinr = ((1 - alpha)*(125 - pathloss)) + 0
其中假设125是最大路损,对应的系统目标信噪比是0dB
得到了trgSinr,就可以根据与当前的crntUlSinr可进行比较来功率调整,理论上TPC的发送所抬高的功率,正是SINR所抬高的数值
其中crntUlSinr是当前UE的上行信噪比,由基站测量UE的上行信号确定
Delta = trgSinr – crntUlSinr
计算得到的delta即是需要调整的功率差
PUCCH功控
P_PUCCH(i) = min{P_CMAX, P_0_PUCCH + PL + h(n_CQI, n_HARQ) + Delta_F_PUCCH(F) + g(i)}
[if !supportLists]1. [endif]i:子帧号
[if !supportLists]2. [endif]j:可以是0 or 1
[if !supportLists]3. [endif]P_O_PUCCH: P_O_NOMINAL_PUCCH + P_O_UE_PUCCH
其中P_O_NOMINAL_PUCCH和P_O_UE_PUCCH来自高层
[if !supportLists]1. [endif]Delta_F_PUCCH(F)来自SIB2消息
PUCCH格式定义如下:
[if !supportLists]1. [endif]h(n_CQI, n_HARQ):由PUCCH format指定的数,CQI比特数,HARQ value数
[if !supportLists]1. [endif]g(i)由前一个子帧的g()和M个子帧前的delta共同决定
delta_PUCCH由DCI format 1A/1B/1D/1/2A/2/3带下来:
[if !supportLists]1.1 [endif]PHR
PH(i) = P_CMAX - 10 log(M_PUSCH(i)) + P_O_PUSCH(j) + alpha(j) PL + Delta_TF(i) + f(i)
可见后面的公式是PUSCH的功率计算公式,因此PH(i)是P_CMAX和PUSCH功率的差值
Power headroom表示UE还剩多少发射功率来完成本次的数据发送。可见下式:
Power Headroom = UE Max Transmission Power - PUSCH Power = Pmax - P_pusch
假如Power Headroom是正值,表示距离最大发射功率还有剩余;假如是负值,表示已经超过你允许的最大发射功率了。
PHR是MAC CE,用来上报headroom。eNodeB根据上报的值来确定下次UE还能有多少剩余功率,通过上面的功率计算的公式,也可以得到UE下次发送上行数据还可以使用多少上行带宽。因此UE并不能无限制的使用上行带宽的,这个由他上次的PHR限制。
实际上使用的PHR是映射到下面的表格,可以看到实际的PHR值是一个估摸的值。约等于“PH – 23”。
UE通常有两个条件触发PHR上报:
1.路损的改变超过门限值
2. UE的PHR上报周期,周期在RRC Connection Setup, RRC Connection Reconfiguration中配置
PRACH功控
P_PRACH = min{P_CMAX, PREAMBLE_RECEIVED_TARGET_POWER + PL}
随机接入过程按照如下进行:
-设置PREAMBLE_RECEIVED_TARGET_POWER为
preambleInitialReceivedTargetPower + DELTA_PREAMBLE + (PREAMBLE_TRANSMISSION_COUNTER) * powerRampingStep;
其中preambleInitialReceivedTargetPower来自SIB2:
DELTA_PREAMBLE定义如下:
对于preamble format 0,1, 初始PRACH power 如下:
P_PRACH_Initial = min{P_CMAX, preambleInitialReceivedTargetPower + PL}
MSG 3功控
RAR中携带了MSG3的调度信息,每个RAR的长度固定为6个字节。各字段的含义为:
[if !supportLists]l [endif]Timing Advance Command:时间提前命令域,占11个bit位。通知UE进行上行同步的TA值。
[if !supportLists]l [endif]UL Grant:上行授权,占20个bit位。指示UE用于上行传输MSG3的资源,包括时频位置、是否跳频、功控等参数。低字节Oct2为高bit位,高字节Oct4为低bit位。
[if !supportLists]l [endif]Temporary C-RNTI:临时C-RNTI,占16个bit位。UE后续发送的MSG3消息使用该值加扰。
20bits的UL GRANT包括的内容有:
[if !supportLists]l [endif]Hopping flag – 1 bit,指示PUSCH是否执行跳频。
[if !supportLists]l [endif]Fixed size resource block assignment – 10 bits,指示MSG3的RB资源分配,与带宽有关
[if !supportLists]l [endif]Truncated modulation and coding scheme – 4 bits,指示MSG3使用的MCS。
[if !supportLists]l [endif]TPC command for scheduled PUSCH – 3 bits,指示PUSCH的TPC参数,相对功率(实际发送MSG3时功控公式中参数 为该值加上(PREAMBLE_TRANSMISSION_COUNTER – 1) * powerRampingStep)。见213表Table 6.2-1;
[if !supportLists]l [endif]UL delay – 1 bit。指示MSG3发送时刻,为0表示是n+k个子帧传输MSG3,为1是表示n+k个子帧后再等下次机会传输MSG3。其中n是收到MSG2的当前帧,k查321表Table 5.1.1.1-1得到。
[if !supportLists]l [endif]CQI request – 1 bit。指示UE是否上报CQI。
[if !supportLists]1. [endif]如果当前还没有发送过MSG 3,那么如果存在前导码组B,而且将要传输的MSG 3的数据大小大于messageSizeGroupA参数,并且
PL <= PCMAX – preambleInitialReceivedTargetPower – deltaPreambleMsg3 – messagePowerOffsetGroupB
那么选择前导码组B;否则选择前导码组A。
preambleInitialReceivedTargetPower表示到达基站口的目标功率,范围从-120dBm到-90dBm不等,参考前文截图。
deltaPreambleMsg3参数由SIB2下发,值的范围是-1到+6。在带入公式计算路损的时候,需要将该值*2[dB]。比如空口中的参数值=2,那么实际公式中的值=4dB。
messagePowerOffsetGroupB参数是选择前导码的门限参数,单位是dB
preambleInitialReceivedTargetPower参数一起,由SIB2下发。
[if !supportLists]1. [endif]如果MSG3传输过,现在重传,则选取码组时,和上次一样。在组B或组A随机选一个。重传的时候功率不变。RAR消息中的TPC字段,相当于闭环功控基站调整参数。
Msg3的pathloss补偿是全补偿的,发射功率也是按照PUSCH的发射功率来计算;但是P0_Norminal的值并不是SIB2中配置的值,而是preambleInitialReceivedTargetPower+ deltaPreambleMsg3。
P_Msg3 = min{P_CMAX, 10 log(M_PUSCH_Msg3) + preambleInitialReceivedTargetPower+ deltaPreambleMsg3 + PL}
所以假设路径损耗一定的情况下,Msg3的PRB数目是固定调度的,preambleInitialReceivedTargetPower和deltaPreambleMsg3配置不变,那么Msg3的发射功率就是不变的;
在上行信噪比计算的情况中,假设路径损耗和干扰不变,白噪声/RB和噪声系数分别为-121和5,那么Msg3的上行SINR则为:
SINR = P_Msg3 - 10 log(M_PUSCH_Msg3)- (-121dB + 5dB) - PL –Interference
= preambleInitialReceivedTargetPower+ deltaPreambleMsg3+ 116dB –Interference
也就是说,preambleInitialReceivedTargetPower和deltaPreambleMsg3,基本就决定了在固定的无线环境下的Msg3的上行信噪比。
假设没有干扰,M_PUSCH_Msg3是3个PRB,PL是60dB,preambleInitialReceivedTargetPower按照可允许的最大设置-90dBm,deltaPreambleMsg3= 4dB * 2
SINR_Msg3 = -90 + 8 + 116 = 34dB
Msg5的pathloss补偿是按照alpha的设置的值来的了,发射功率也是按照PUSCH的发射功率来计算,但是f(i)的值并不一定是0,而是(PREAMBLE_TRANSMISSION_COUNTER – 1) * powerRampingStep
P_Msg5 = min{P_CMAX, 10 log(M_PUSCH_Msg5) + P0_Norminal+P0_UE + alpha(j) PL + Delta_TF(i) + (PREAMBLE_TRANSMISSION_COUNTER – 1) * powerRampingStep}