前言
如果阅读了这两篇博文《如何产生PRACH preamble》和《如何选择合适的时频资源发送preamble》,那么对msg1有了基本了解,但是真到了Msg1发送的时候,该怎么处理呢,这里涉及到两个问题:
- 问题1:发送无线信号给对方,那么就需要能量。以多大的功率发送Msg1的Preamble合适呢?
- 问题2:对于随机接入过程,由于此时的PRACH和后面Msg2的PDSCH均不是UE specific的信道,那么终端如何判定后面基站回复的Msg2是给自己的呢?这里就用用到了RA-RNTI可以唯一标识Msg1发送的时频资源这一特性。
Msg1的发射功率
38213给出了关于PRACH的功控计算公式:
首先,P_{PRACH,target}= PREAMBLE_RECEIVED_TARGET_POWER,再由38321知道可由以下公式计算:
preambleReceivedTargetPower + DELTA_PREAMBLE + (PREAMBLE_POWER_RAMPING_COUNTER -1)* PREAMBLE_POWER_RAMPING_STEP
- preambleReceivedTargetPower 由参数 ‘preambleReceivedTargetPower’ 可得
- DELTA_PREAMBLE 可由38321表7.3-1和7.3-2可得,根据不同的preamble format查表
- PREAMBLE_POWER_RAMPING_COUNTER对于初始传输是1,重传依每次加一
- PREAMBLE_POWER_RAMPING_STEP 由参数‘powerRampingStep’所得
然后,再计算PathLoss-PL
- referenceSignalPower根据PRACH关联的SSB或者CSI-RS,由参数ss-PBCH-BlockPower和powerControlOffsetSS决定
- higher layer filtered RSRP是发送PRACH时测到的RSRP
有了上面两个因子,我们就可以计算PRACH Msg1的初始发射功率了。还是以前面的参数进行举例:
rach-ConfigGeneric
{
prach-ConfigurationIndex 2,
msg1-FDM one,
msg1-FrequencyStart 2,
zeroCorrelationZoneConfig 6,
preambleReceivedTargetPower -100,
preambleTransMax n10,
powerRampingStep dB4,
ra-ResponseWindow sl20
},
ss-PBCH-BlockPower -8
假设此时的RSRP为-94dBm
则Msg1的初始发射功率= -100+(0)+(1-1)*4+[-8-(-94)]= -14dBm
如果发生Msg2或者Msg4失败,则会触发Msg1重传,Msg1的最大重传次数由参数preambleTransMax定义。如果发生Msg1的重传,每次重传功率会以powerRampingStep这个步长增大,直到最后达到UE的最大功率或者重传达到最大次数为止。
需要注意得是,重传增大功率是有条件的,前提是PRACH关联的SSB未发生变化。
If prior to a PRACH retransmission, a UE changes the spatial domain transmission filter, Layer 1 notifies higher layers to suspend the power ramping counter
------摘自38213
if SSB or CSI-RS selected is not changed from the selection in the last Random Access Preamble transmission
------摘自38321
RA-RNTI的计算和使用
RA-RNTI可以表征Msg1发送时使用的时频资源,UE发送Msg1时会计算RA-RNTI并保存;gNB收到该Msg1后,同样会计算RA-RNTI,并使用该RA-RNTI对Msg2的PDCCH DCI format 1_0的CRC进行扰码。因此只有在RA-RNTI标识的时频资源发送Msg1的终端才能解对这个PDCCH的DCI。不过这还不能完全避免冲突的发生,设想一下还有这种可能,同一个小区,有两个或者多个终端在相同的时频资源(RA-RNTI)上选择了相同的preamble发送,概率虽小,但也是可能的。对于这种冲突还需要后面的Msg3和Msg4去解决。言归正传,这里暂时仅关注Msg1 RA-RNTI的计算:
RA-RNTI = 1 + s_id + 14 × t_id + 14 × 80 × f_id + 14 × 80 × 8 × ul_carrier_id
- s_id is the index of the first OFDM symbol of the PRACH occasion (0 ≤ s_id < 14)
- t_id is the index of the first slot of the PRACH occasion in a system frame (0 ≤ t_id < 80), where the subcarrier spacing to determine t_id is based on the value of μ specified in clause 5.3.2 in TS 38.211
- f_id is the index of the PRACH occasion in the frequency domain (0 ≤ f_id < 8)
- ul_carrier_id is the UL carrier used for Random Access Preamble transmission (0 for NUL carrier, and 1 for SUL carrier)
上面的计算参数协议规定的很清楚,
- s_id是PRACH Occasion的第一个符号的index;
- f_id是频域的index,由参数msg1_FDM可知;
- ul_carrier_id对于非SUL场景为0;
需要注意的是,t_id的取值,我们仍然以上面的RACH参数为例prach_ConfigurationIndex=2,由 《如何选择合适的时频资源发送preamble 》的例子我们可以知道PRACH会在subframe9的第一个symbol开始发送,那么有的同学就想当然的认为这个t_id应该是slot18(2.6GHz, sub6,PUSCH/PDSCH SCS=30k),那就错了。因为按照38211 5.3.2节中对于PRACH format 0,SCS=1.25kHz,规定了u=0,那么应该按照15kHz折算,折算完t_id=9.