这一篇讲preamble的分配。前面提到,在MAC RAR(Random Access Response)中,RAPID长度为6位,取值为0 ~ 63,一个小区共有64个preamble,这在LTE和NR中是一样的。NR比较特别的,是RACH时机和SSB关联,增加了一次preamble的分配。
总的来说,64个preamble分为两部分:CB preamble(Contention Based Preamble)和CF preamble(Contention Free Preamble)。CB preamble又可分为两部分:Group A和Group B。引入Group B是为了让基站获知先验信息,有区分的给MSG3分配资源,提高资源利用效率 —— 但Group B是可选项,下面就不提它了。
在NR中,引入了几个新的随机接入场景,包括transition from RRC Inactive(RRC连接恢复)、Request for other SI(请求其他系统信息)和Beam failure recovery(波束恢复)。preamble本来就不多,如果按场景再分配一次就更少了,特别是CF preamble(老孔:不多了,已经不多了)。幸好,3GPP为波束恢复配置了独立的根序列(root sequence index BFR),基站松了一口气……
地主家也没有余粮啊~
先别急着恢复,先谈怎么建立。在LTE中,下行广播信息MIB和SIB不支持波束管理,在小区覆盖范围内“360度”“无死角”(实际达不到)广播;在NR中,下行广播信息SSB和RMSI支持波束管理,SSB在时域内有多次发送机会,可以分别对应不同SSB波束 —— SSB和SSB波束的对应,则属于具体实现(不一定是一对一)。
如图所示,SSB波束像探照灯一样在小区覆盖范围“扫”过,UE只在SSB波束“扫”到自己时,才有机会发送MSG1。打个比方,老王(基站)向学生(UE)宣布纪律,为了加强传达效果,每次(SSB波束)只面向一组学生,再依次转向下一组。学生只在老王面向自己时,才有机会向老王提问(MSG1) —— 当然,如果老王脸很大,也可以每次面向两组,或更多学生。
如果将RACH时机和SSB关联,基站可以通过UE选择的RACH时机,反推UE从哪个SSB波束接收SSB,为向UE发送RAR选择下行波束,是不是很巧妙?那么,RACH时机和SSB如何关联呢?这要提到一个“变态”的参数:ssb per RACH Occasion And CB Preamble per SSB —— 什么鬼?根本就不是“一个”参数嘛,中间甚至还有个“And”,3GPP是认真的吗?(3GPP:看多了就习惯了)
是的,这个参数要拆开为两部分:ssb per RACH Occasion,表示一个RACH时机对应多少个SSB;CB Preamble per SSB,表示一个SSB对应多少个CB Preamble。这里先看前一个,后一个留到最后。由图可见,ssb per RACH Occasion取值范围为1/8、1/4、1/2、1、2、4、8、16。也就是说,可能是“一对一” —— 一个RACH时机对应一个SSB,也可能“一对多”或“多对一”。
在时域上,一个子帧(FR1)或60 KHz时隙(FR2)可能有多个RACH时隙,一个RACH时隙可能有多个RACH时机;在频域上,同一时刻可能有多个RACH时机(PRACH的FDM)。一个小区最多有8个(FR1)或64个(FR2)SSB,以SSB索引(SSB Index)作为标识,这些SSB如何和RACH时机对应呢?
关联规则如下:1、如果频域存在多个RACH时机(PRACH的FDM),SSB索引首先按照频域索引递增(从下往上);2、如果一个RACH时隙有多个RACH时机,SSB索引按照(RACH时隙内)RACH时机的顺序递增(从左往右);3、如果一个子帧(FR1)或60 KHz时隙(FR2)有多个RACH时隙,最后按照RACH时隙索引递增(从左往右)。下面来看两个例子(引用自孙老师的《NR PRACH信道和随机接入流程简析》)。
第一个例子。每个系统帧(frame)有一个子帧(subframe)包含PRACH,频域复用次数(msg1-FDM)为4。ssb per RACH Occasion为1/2,即一个RACH时机对应1/2个SSB,换个说法,两个RACH时机对应一个SSB。小区共有4个SSB,按照上述规则,SSB先在频域上排列,再在时域上排列。
第二个例子。每两个系统帧有一个子帧包含PRACH,频域复用次数(msg1-FDM)为4。ssb per RACH Occasion为2,即一个RACH时机对应两个SSB。小区共有8个SSB,按照上述规则,SSB先在频域上排列,再在时域上排列 —— 不过,这回两个SSB挤在一起了。
由上,3GPP引入了一个概念:SSB / PRACH Occasion Association Period —— SSB和RACH时机的关联周期(或映射周期),表示所有SSB映射到RACH时机需要多少个PRACH配置周期(从系统帧0开始计数)。如果一个PRACH配置周期包含的RACH时机不够,就一直叠加到够为止。前面两个例子,关联周期都是1个PRACH配置周期(关联周期的最小值),正好都是20毫秒。
不过,SSB是必须要关联的,RACH时机却是可以丢弃的(真没面子) —— 在关联周期内,如果经过整数轮次的SSB关联后,还有“多余”的RACH时机(单身狗,没有SSB牵手),这些RACH时机是不能用的(RACH时机只是一种可能)。
在关联周期的基础上,3GPP又引入了一个概念:Association Pattern Period—— 关联图样周期(或映射图样周期)。关联图样周期最大为160 ms,可能包含一个或多个关联周期。每经历一个关联图样周期,(基站和UE)按照关联图样重复进行SSB和RACH时机的映射。
关联图样周期和PRACH配置周期限制了关联周期取值,如果PRACH配置周期为160 ms(已经达到最大值),关联周期取值只能为1(160/ 160 = 1),如果PRACH配置周期为10 ms,关联周期取值可能为1、2、4、8、16 —— 这些是候选值,实际选择满足SSB关联的最小值。相似的,一个关联图样周期去掉“整数”个关联周期后,如果还有“多余”的RACH时机,这些RACH时机也是不能用的(不知道关联图样周期如何确定,协议相关描述太少了,希望了解的专家指点一下)。
最后,看看每个SSB对应多少个CB Preamble。1个RO(对应同一RA-RNTI)可用CB preamble最大为64(如果没有预留CF preamble)。如果N(ssb per RACH Occasion)个SSB映射1个RO,每个SSB只能“分享”64个CB preamble。
如果N > 1,SSB n(0 ~ N_SSB_Tx)可用从64 / N * n开始的连续CB Preamble Per SSB个Preamble(CF Preamble总体是分散的,但对特定SSB来说是连续的),CB preamble Per SSB最大值可为64 / N;如果N <= 1,CB preamble Per SSB最大值可为64 —— 都是你(SSB n)的,拿去用吧。