上一篇文章讨论了如何生成64个PRACH preamble,本文接着回答上一篇文章中的另一个问题“如何选择正确的PRACH时频资源去发送所选的preamble”。
PRACH的时域资源是如何确定的?
PRACH的时域资源主要由参数“prach-ConfigurationIndex”决定。拿着这个参数的取值去协议38211查表6.3.3.2-2/3/4,需要注意根据实际情况在这三张表中进行选择:
- FR1 FDD/SUL
- FR1 TDD
- FR2 TDD
Random access preambles can only be transmitted in the time resources given by the higher-layer parameter prach-ConfigurationIndex --摘自38211
本文沿用上一篇文章中的参数例子,2.6GHz/TDD的NR系统,拿到prach-ConfigurationIndex这个参数就去查FR1 TDD的那张表,这张表里都有什么呢?
- preamble的format
- SFN(nSFN mod x = y,这个公式其实暗含了PRACH的配置周期,周期为x)
- SubFrame
- Starting symbol
- 1个subframe里面有多少个PRACH slot
- 1个PRACH slot里面有多少个时域的RACH Occasion (RO)
- PRACH duration
这些参数里面前三个标红色的没什么异议,对于后面4个标绿色的参数是有点说法的,主要体现在不同preamble(839 or 139)长度情况下理解有差异,最明显的比如“1个subframe有多少个PRACH slot”和“一个PRACH slot有多少个PO”这两个参数,看看下面两个例子,对于长preamble format 0这两项无值,而对于短preamble format C2,这两项是有值的。(不要急,看完下面的计算过程,也许你就能悟出点什么~~)
![](https://i-blog.csdnimg.cn/blog_migrate/161ce8889594b4d2988d8deee35ce977.png)
![](https://i-blog.csdnimg.cn/blog_migrate/10ab0e6b4deba82bf05e804eb92d0ce6.png)
prach-ConfigurationIndex | format | 长 or 短 | SFN | SubFrame |
---|---|---|---|---|
2 | 0 | 长, L=839 | 每4帧1,5,9,13….. | 9 |
202 | C2 | 短,L=139 | 每帧 | 9 |
通过查表可以得出以上信息,但是目前时域信息只能精确到subframe。究竟在这个subframe的哪个symbol上开始还是个未知数,38211给出了如下计算公式来确定:
![](https://i-blog.csdnimg.cn/blog_migrate/54ae0a63687cbc25e09a7e4302f7d653.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1c70a097b2eec9f4c8ad0916c61888ca.png)
先计算l的取值,会用到上面提到的标绿色的四个参数: (带入公式时,注意长短preamble和PRACH SCS对有些参数的取值有影响)
prach-ConfigurationIndex=2:
![](https://i-blog.csdnimg.cn/blog_migrate/8491c7c64d01b6abdfa3ae79a52c39df.png)
prach-ConfigurationIndex=202:
![](https://i-blog.csdnimg.cn/blog_migrate/eadbad610534b08d907182901b43d830.png)
计算完l的取值还没最终结束,真正的时间起点是t_{start}^{RA},还需要注意PRACH的SCS和PUSCH/PDSCH的SCS可能不同,这样会导致计算出来的符号长度不一致。
- prach-ConfigurationIndex=2 & PUSCH SCS=30KHz & PRACH SCS=1.25KHz:
- prach-ConfigurationIndex=202 & PUSCH SCS=30KHz & PRACH SCS=15KHz:
有了起点,再根据下表计算PRACH的长度:
![](https://i-blog.csdnimg.cn/blog_migrate/38ecc6203f6b496192ffec369bfc95aa.png)
综合以上计算,可以知道上面的两个例子对应PRACH时域起点和长度
![在 在](https://i-blog.csdnimg.cn/blog_migrate/67736397cda6830e8596962b3e4fbe90.png)
至此,我们知道了如何根据参数配置计算PRACH的时域资源!
PRACH的频域资源是如何确定的?
PRACH的频域资源主要由两个参数“msg1-FrequencyStart”和“msg1-FDM”决定。这里面涉及两个问题,PRACH频域资源的起始位置在哪里?以及PRACH频域占多少个RB?
Random access preambles can only be transmitted in the frequency resources given by the higher-layer parameter msg1-FrequencyStart --摘自38211
![](https://i-blog.csdnimg.cn/blog_migrate/fead542df04b2c56a580bccb36de9e7f.png)
- 频域的起点:msg1-FrequencyStart会告诉你PRACH资源的起点距离initial BWP或当前active BWP起点的offset,此时你可以得到PRACH资源在BWP的相对位置。如果想知道绝对位置,还需要计算BWP的起点以及一个carrier实际有效使用RB的起点。上图的括号中给出了相应的RRC参数。
![](https://i-blog.csdnimg.cn/blog_migrate/77ae732160361b34faec7a81fc184bf5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9ab010e9e531baa31b31a7f6f8cc7cf.png)
- 频域占多少RB:频域一共占多少个RB取决于某一时间点上频域映射了多少个PRACH资源以及每个PRACH资源占多少个RB。频域映射了多少个PRACH资源由参数“msg1-FDM”决定;每个PRACH资源占多少RB可通过查下面这个表格得到。
![](https://i-blog.csdnimg.cn/blog_migrate/ac5820e8fea49ce5521b03f6921128bb.png)
正确的PRACH时频资源(PRACH Occasion)是如何选择的?
生成了preamble,也知道了PRACH的时频域资源,是否可以把preamble放在某个PRACH上发出去了呢?还差最关键的一步,确定PRACH与SSB的映射关系。
5G里面凡事都会涉及到Beam这个概念,RACH流程也不例外。我们已经知道一个5G小区会发射多个SSB,也就是说有很多个下行的beam。终端会monitor和测量这些beam,挑选一个信号最好的SSB或者beam进行驻留。很明显,终端要获得比较好的上下行传输性能,需要与基站建立一个beam pair(发送beam和接收beam)。这里要强调一点,beam是分发送和接收的,并不是只有发送有beam,接收也有。另外,说到发送beam和接收beam,这里要区分上下行。
- 上行(UE->gNB): beam pair指基站接收beam,终端发送beam
- 下行(gNB->UE): beam pair指终端接收beam,基站发送beam
以下面这个图(摘自KeySight的一份报告5G Boot Camp)来说说终端是如何通过初始接入完成与基站之间的beam pair建立过程的。这里面用到一个最关键的原理就是3GPP协议将不同时频域的PRACH资源或不同的preamble与SSB index进行了关联。换句话说,基站通过在不同的时域或频域或检测到的preamble index就能反过来推理出哪个SSB是对当前这个终端的最佳下行beam。
- 1)小区广播5个SSB
- 2)终端通过测量发现SSB 2是最好的。对于终端来讲,此时的下行beam pair已经形成(基站发送beam SSB2,终端接收beam),只是基站还不知道这个信息
- 3)终端根据刚才最佳的SSB2接收beam方向,反过来在这个方向上发送PRACH,根据上面说的PRACH与SSB index的关联关系选择PRACH或preamble资源,这样基站收到PRACH preamble就会根据映射关系,反推出下行SSB 2是最这个终端最好的下行beam,以后的给这个终端的下行传输都在SSB2上做。
- 4)通过上面三步,终端和基站都知道了自己的最佳发送或者接受beam是什么了
![](https://i-blog.csdnimg.cn/blog_migrate/ec17c80392fe60e40158ffefb29f19b9.png)
下面来看看协议上或者参数上是如何控制PRACH资源与SSB的映射关系的。其中一个最为关键的参数为 ssb-perRACH-OccasionAndCB-PreamblesPerSSB。其实可以把这个参数分为两部分来看,一是ssb-perRACH-Occasion,用于表明一个RACH Occasion (RO)对应几个SSB;而是CB-PreamblesPerSSB,每个SSB上映射多少个基于竞争的preamble,注意是 基于竞争的preamble。
![](https://i-blog.csdnimg.cn/blog_migrate/33aeba51b3f541ba8ad1d630a95b3083.png)
解释下上面这段协议描述:假设一个RO对应N个SSB并且每个SSB在每个RO内对应R个基于竞争的preamble。如果N<1,则意味着1个SSB对应1/N个连续的RO并且每个RO对应R个基于竞争的preamble,preamble index从0开始;如果N>=1,意味着一个RO里面映射了多个SSB并且每个一个RO内的SSB映射R个基于竞争的preamble,对于SSB n (0=<n<=N-1)对应的preamble index 从n*N_total_preamble/N开始。说的比较抽象,看两个例子吧。
- 例子1:ssb-perRACH-OccasionAndCB-PreamblesPerSSB four : 13 & msg1-FDM one & ssb-PositionsInBurst mediumBitmap : '11110000'
这是一个从现网的log摘取的配置,该小区一共发射4个SSB,1个RO对应4个SSB,每个SSB对应13个基于竞争的preamble。基站通过检测到的Preamble index的范围,就可以判断SSB的index,映射关系为{SSB0:0-12,SSB1:16-28,SSB2:32-44,SSB3:48-60},其实从这个结果还可以继续计算出用于基于非竞争的preamble index,就是64个preamble剔除基于竞争的剩下的12个preamble{13-15,29-31,45-47,61-63}
![](https://i-blog.csdnimg.cn/blog_migrate/a8388d895af5c4084302e59ba59ccd32.png)
- 例子2:ssb-perRACH-OccasionAndCB-PreamblesPerSSB 1 : 52 & msg1-FDM two & ssb-PositionsInBurst mediumBitmap : '11110000'
改变一下上面的配置,可以看到在这个例子中一个SSB对应一个RO,每个RO或者SSB使用了全部的52个基于竞争的preamble。这样基站是无法通过preamble index来区分SSB的,只能看不同时频资源的RO来区分。4个SSB分别映射到了4个不同时频资源的RO,从RO0到RO3。
![](https://i-blog.csdnimg.cn/blog_migrate/b34140c0932ddd865e787988d17a255f.png)
SS/PBCH block indexes provided by ssb-PositionsInBurst in SIB1 or in ServingCellConfigCommon are mapped to valid PRACH occasions in the following order where the parameters are described in [4, TS 38.211].
- First, in increasing order of preamble indexes within a single PRACH occasion
- Second, in increasing order of frequency resource indexes for frequency multiplexed PRACH occasions
- Third, in increasing order of time resource indexes for time multiplexed PRACH occasions within a PRACH slot
- Fourth, in increasing order of indexes for PRACH slots
根据上述协议描述,SSB和RO的映射遵循以下原则:
- 首先,在一个RO内按照preamble index的升序映射
- 其次,按照频域RO升序映射
- 然后,按照一个PRACH slot内时域RO升序映射
- 最后,按照PRACH slot升序映射
笔者在微信公众号GiveMe5G定期发布学习文章,发布周期原则为一周,欢迎订阅和分享
文章主要用于记叙和讨论对3GPP协议的学习和理解,欢迎留言讨论,谢谢!
![](https://i-blog.csdnimg.cn/blog_migrate/93cce8034ea8dc88a338b3a35df4b0f0.jpeg)