文章目录
前言
- 在文章5G/NR 随机接入过程精讲中已经阐述了RA的总体流程和基本常识,本文主要着重分析接入过程中的MSG1消息:UE发送的MSG1到底发送的是什么,是怎么发送的,以及关于preamble的一些介绍。
- 建议阅读本文前先对随机接入有个系统的了解,否则基本概念可能不是很清晰,链接:5G/NR 随机接入过程精讲
1、MSG1 Overview
随机接入过程中发送的第一条消息就是MSG1,MSG1实质上最主要功能就是发送preamble码给基站,处理流程大概如下:
-
触发随机接入过程条件
-
判断竞争类型
-
若是竞争接入: 选择前导码和PRACH资源
- 前导码选择:根据prach-ConfigurationIndex确定可用的前导码集合(0~63)。
- PRACH资源选择:
- 时域:根据msg1-FDM和prach-ConfigurationIndex确定时隙和符号位置。
- 频域:根据msg1-FrequencyStart确定起始RB位置。
-
若是非竞争接入: 使用分配的专用前导码和资源
- UE直接使用基站分配的以下参数:
- 专用前导码索引(如ra-PreambleIndex)
- PRACH时频资源(如ra-PRACH-ResourceIndex)
- UE直接使用基站分配的以下参数:
-
计算发射功率并发送MSG1
-
前导码发送:在选定的PRACH资源上发送前导码(MSG1)
-
启动定时器等待MSG2
- 定时器时长由ra-ResponseWindow定义(通常2~10 ms)。
- MSG2内容:包含TA(Timing Advance)、UL Grant、临时C-RNTI等。
-
超时未收到MSG2
- 重传机制:
- 重传次数由preambleTransMax限制(最大重传次数)。
- 每次重传增加发射功率(步长由powerRampingStep定义)。
- 重传机制:
关键参数来源
| 参数 | 来源 | 作用 |
|---|---|---|
| prach-ConfigurationIndex | SIB1 | 确定PRACH时频资源和前导码格式 |
| msg1-FDM | SIB1 | 频分复用次数(1~8) |
| ra-PreambleIndex | PDCCH Order/RRC信令 | 非竞争接入专用前导码索引 |
| powerRampingStep | SIB1 | 功率爬坡步长(如2 dB) |
2、Preamble overview
2.1 Preamble是什么
- 本质
- 协议38.211中明确的指示了Preamble的本质是基于 Zadoff - Chu(ZC)序列来生成。
- 但不能简单说 Preamble 的本质就是 ZC 序列,可以把Zadoff-Chu比喻成“砖块”,preamble比喻成是“桥梁,砖块构建桥梁的基础材料。
2.2 为什么需要preamble
有了MSG1的大概流程后,先了解下preamble相关的基础知识。
在 5G NR 通信系统中,前导码(Preamble)是不可或缺的关键要素。主要用于实现终端(UE)与基站(gNB)的初始同步与资源协调。其核心功能包括:1) 时间同步,通过测量前导码时延计算定时提前量(TA),校准上行传输;2) 用户识别与冲突管理,基于唯一序列区分多用户并解决接入冲突;3) 上行资源请求,触发基站分配初始资源用于数据传输;4) 功率控制,通过接收功率估算路径损耗以优化发射功率;5) 波束管理,在毫米波场景中辅助波束对准,提升覆盖能力;6) 高效检测,利用低峰均比、高相关性的序列设计保障低信噪比下的可靠性。前导码作为UE与网络建立连接的关键信号,支撑了5G高密度接入、低时延及广覆盖场景的需求。
2.3 怎么生成preamble
通过ZC序列可以生成,为什么要选择ZC序列来生成Preamble,可以参考博文5GNR中的常见序列精讲有详细解释和回答。
2.4 5GNR能够支持多少个preamble
在5G NR中支持最多64个preamble。 但不同场景本质是RRC中的参数totalNumberOfRA-Preambles 配置来获取。下一章节有说明该参数。
2.5 RACH - ConfigCommon参数有哪些
RACH - ConfigCommon大概参数如下(TS 38.331 ch6.3.2),totalNumberOfRA-Preambles也在这里面。
rach-ConfigCommon setup :
{
rach-ConfigGeneric : {
prach-ConfigurationIndex INTEGER (0..255), // PRACH配置索引,决定时频资源
msg1-FDM ENUMERATED {
one, two, four, eight}, // Msg1频分复用模式
msg1-FrequencyStart INTEGER (0..maxNrofPhysicalResourceBlocks-1), // Msg1起始频率位置
prach-FrequencyOffset INTEGER (0..maxNrofPhysicalResourceBlocks-1), // PRACH频域资源块起始位置
preambleFormat ENUMERATED {
format0, format1, format2, format3, A1, A2, A3, B1, B2, B3}, // 前导码格式
cyclicPrefix ENUMERATED {
normal, long}, // 循环前缀长度
prach-Periodicity ENUMERATED {
ms2, ms5, ms10, ms20, ms40, ms80, ms160}, // PRACH时域周期
prach-TimeOffset INTEGER (0..prach-Periodicity-1), // PRACH时域偏移
zeroCorrelationZoneConfig INTEGER(0..15), // 零相关区配置
preambleReceivedTargetPower INTEGER (-202..-60), // 目标接收功率(dBm)
preambleTransMax ENUMERATED {
n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200}, // 最大传输次数
powerRampingStep ENUMERATED {
dB0, dB2, dB4, dB6}, // 功率提升步长
ra-ResponseWindow ENUMERATED {
sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80}, // 响应窗口时长
prach-RootSequenceIndex INTEGER (0..837), // PRACH根序列索引
restrictedSetConfig ENUMERATED {
unrestrictedSet, restrictedSetTypeA, restrictedSetTypeB}, // 前导码集合类型
totalNumberOfRA-Preambles INTEGER (1..64), // 小区支持的总前导码数量
beamformedRACH ENUMERATED {
enabled, disabled}, // 是否启用波束赋形RACH
ssb-perRACH-OccasionAndCB-PreamblesPerSSB : {
oneEighth ENUMERATED {
n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneFourth ENUMERATED {
n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneHalf ENUMERATED {
n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
one ENUMERATED {
n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
two ENUMERATED {
n4,n8,n12,n16,n20,n24,n28,n32},
four INTEGER (1..16),
eight INTEGER (1..8),
sixteen INTEGER (1..4)
},
ra-ContentionResolutionTimer ENUMERATED {
sf4, sf8, sf16, sf32, sf64, sf128}, // 竞争解决定时器
rsrp-ThresholdSSB INTEGER (-140..-44), // SSB触发RSRP阈值(dBm)
sul-RACH ENUMERATED {
allowed, notAllowed} // 是否允许SUL上的RACH
},
nonContentionBasedConfig : {
preambleIndex INTEGER (0..63), // 非竞争前导码索引
ra-RNTI INTEGER (0x0000..0xFFFF) // 非竞争RA-RNTI
}
}
3、64个Preamble如何生成
3.1 preamble生成原理
从协议38.211(ch6.3.3)描述了preamble的生成方式:先在某个root sequence 上进行循环移位,如果不够生成64个preamble, 再继续换挨着的下一个root sequence进行循环移位,直到生成所有的64个preamble。
There are 64 preambles defined in each time-frequency PRACH occasion, enumerated in increasing order of first increasing cyclic shift 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 or rootSequenceIndex-BFR. 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.
生成总流程:

3.2 preamble生成流图
3.3 preamble生成例子
首先要明白,preamble的生成过程所确定的参数,也是来自L3 RRC配置下来的,主要是放在RACH - ConfigCommon 中,而RACH - ConfigCommon 主要是在 SIB1 (来自MIB)中进行广播,以便 UE 在初始接入小区时能够获取随机接入信道的基本配置信息。
实际上生成preamble只需要下面几个参数就行,现通过例子形式来逐一说明preamble是如何生成的,假如我们是FR1频段,TDD系统中,从RRC配置下来的 rach-ConfigCommon参数如下:
rach-ConfigCommon setup :

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



