5G NR:RACH流程-- Msg1之生成PRACH Preamble

随机接入流程中的Msg1,即在PRACH信道上发送random access preamble。涉及到两个问题:

  • 一个是如何产生preamble?
  • 一个是如何选择正确的PRACH时频资源发送所选的preamble?

一、PRACH Preamble是什么

PRACH Preamble从数学上来讲是一个长度为L_RA(839或者139)的ZaddOff Chu (ZC)序列 {x(0),x(1),....x(LRA-1)}, 其中x(i)的定义如下。在下面的公式里注意x(i)是用x_u(i)表示的,多了一个下标u,这个u是用来表示这个ZC序列是根据root sequence number u 生成的。

众所周知,终端要根据配置参数生成64 个preamble,也就是64个序列。产生不同的序列有两种方法,一种是根据不同的root sequence number生成,即在上面的公式中采用不同的u;另外一种是基于同一个root sequence number做cyclic shift循环移位生成,即对下面的公式采用不同的Cv。

对于生成64个preamble的方式协议38211有明确的规定,先在一个root sequence上进行循环移位,如果不足以生成64个,在换root sequence,直到64个premable全部产生为止。

There are 64 preambles defined in each time-frequency PRACH occasion, enumerated in increasing order of first increasing cyclic shift Cv of a logical root sequence, and then in increasing order of the logical root sequence index, starting with the index obtained from the higher-layer parameter prach-RootSequenceIndex. Additional preamble sequences, in case 64 preambles cannot be generated from a single root Zadoff-Chu sequence, are obtained from the root sequences with the consecutive logical indexes until all the 64 sequences are found.

-----摘自38.211

上面介绍了preamble的时域信号,再看看频域信号,即对时域信号x_{u,v}(n)做离散傅里叶变换DFT,公式如下:

经过DFT后也是长度为L_RA点的序列,即频域上占有L_RA个子载波

二、PRACH Preamble的分类

Preamble总体上分为两大类,即long preamble和short preamble。

  • long preamble分为四种format,分别为format0/1/2/3,
  • short preamble分为九种A1/A2/A3/B1/B2/B3/B4/C0/C2。

Preamble结构一般由三部分组成:Cyclic Prefix(CP) + Preamble Sequence (重复) + Guard Period(GP),其中核心部分preamble sequence可能重复多次,取决于不同的format。

从下图可以看出不同format的preamble长度不同,包括不同长度的CP,不同preamble seq的重复次数,不同长度的GP。这些preamble可以应用于不同的覆盖场景。

下面两张表格来自于协议38211,分别描述了long preamble和short preamble各种format的子载波间隔,preamble sequence的长度以及CP的长度,还有是否可以用于限制集restricted sets。限制集会对preamble的循环移位有影响。一些特殊的覆盖场景可能会定义限制级,这时会对循环移位有特殊的要求,防止发生preamble检测错误。

对于long preamble,以format 2为例:

  • 子载波间隔为1.25kHz
  • preamble sequence重复4次,长度为:
  • CP长度为

注意:上述计算公式中的

其中Ts是LTE的基本时间单位,Tc是NR的基本时间单位。38211协议中所有时间长度单位在没有特殊明确指定时,单位为

Throughout this specification, unless otherwise noted, the size of various fields in the time domain is expressed in time units Tc

----- 摘自38211

上面介绍了时域长度,下面看看频域占多少RB。下面这个摘自38211的table 6.3.3.2-1总结了NR支持的PRACH和PUSCH的子载波间隔SCS的不同组合,以及每种组合下的频域占多少个RB。

三、PRACH Preamble是如何产生的

在第一部分"PRACH Preamble是什么?"中其实已经讨论了preamble是如何生成的。下面以一组PRACH参数配置来看看这64个preamble生成过程中用到了哪些参数并且如何使用的。

rach-ConfigCommon setup :

{

rach-ConfigGeneric

{

prach-ConfigurationIndex 2,

msg1-FDM one,

msg1-FrequencyStart 2,

zeroCorrelationZoneConfig 6,

preambleReceivedTargetPower -100,

preambleTransMax n10,

powerRampingStep dB4,

ra-ResponseWindow sl20

},

ssb-perRACH-OccasionAndCB-PreamblesPerSSB four : 13,

ra-ContentionResolutionTimer sf64,

rsrp-ThresholdSSB 0,

prach-RootSequenceIndex l839 : 439,

restrictedSetConfig unrestrictedSet

},

了解了前面,可以知道生成preamble离不开两个基本元素,root sequence number 和 cyclic shift。

  • sequence number u是根据logical root sequence index i 查下表(节选)得到的, logical root sequence index i 是根据参数prach-RootSequenceIndex l839 :439得到的。
  • cyclic shift Cv 根据下面公式得到。对于我们给的参数配置,可以看到restrictedSetConfig = unrestrictedSet,对于unrestricted sets公式会用到Ncs。
  • Ncs由参数zeroCorrelationZoneConfig = 6查表所得。根据参数prach-ConfigurationIndex = 2可以查表得到preamble format是format 0。 format 0的子载波间隔是1.25kHz。因此通过下表可以得到Ncs=32。根据上面的公式知道v的取值如下

进而可以求出Cv

经过上面这些准备工作,可以通过下面伪代码的形式给出这64个preamble的产生过程:

当logical root sequence index = 439 => sequence number = 662,通过循环移位产生26个preamble

preamble_index0: sequence number = 662, Cv=0
preamble_index1: sequence number = 662, Cv=32
preamble_index2: sequence number = 662, Cv=64
preamble_index3: sequence number = 662, Cv=96
............
preamble_index24: sequence number = 662, Cv=768
preamble_index25: sequence number = 662, Cv=800

通过当前的root sequence number并且循环移位只能产生26个,不够64个,需要使用下一个logical root seq index

当logical root sequence index = 440 => sequence number = 196,通过循环移位产生26个preamble

preamble_index26: sequence number = 196, Cv=0
preamble_index27: sequence number = 196, Cv=32
............
preamble_index50: sequence number = 196, Cv=768
preamble_index51: sequence number = 196, Cv=800

通过两个root sequence number仍然未能产生够64个,继续使用下一个logical root seq index

当logical root sequence index = 441 => sequence number = 643,通过循环移位产生12个即可

preamble_index52: sequence number = 643, Cv=0
preamble_index53: sequence number = 643, Cv=32
............
preamble_index62: sequence number = 643, Cv=320
preamble_index63: sequence number = 643, Cv=352

至此,64个preamble全部产生!!!

相关推荐
@insist1233 天前
系统架构设计师-5G 技术、冗余设计与分层架构
5g·架构·系统架构·软考·系统架构设计师·软件水平考试
terry6003 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
Johnstons4 天前
5G网络来了,App怎么测?5G网络损伤测试完整指南
开发语言·网络·5g·php·弱网测试·网络损伤·网络损伤仪
我爱C编程4 天前
基于遗传优化和GDOP评价的5G微基站部署策略matlab仿真
5g·matlab·遗传优化·gdop·5g微基站部署
terry6004 天前
2026企业5G短信服务商选型全指南:通道、架构、服务全维度评估标准
大数据·人工智能·5g·web安全·信息与通信·数据库架构
纳米软件6 天前
CSDN:5G_6G毫米波射频芯片测试,如何解决OTA测试中的“测不准”与“效率低”?
自动化测试·5g·ate测试·ate测试系统·电子测试测量·电子测试工具
小白小宋6 天前
【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现
算法·5g·matlab·信息与通信·信号处理
Multipath7127 天前
急救车上的“信号堡垒”:多链路聚合路由如何让生命连线永不掉线
网络·5g·安全·实时音视频
InHand云飞小白7 天前
连锁门店网络困境?5G Wi-Fi 6边缘路由器赋能分布式企业
网络·5g·路由器·网络运维·5g路由器·5gcpe·连锁联网
mamwdo_9957 天前
5G边缘计算在物联网场景中的架构与部署
物联网·5g·边缘计算