PRACH 前导序列生成详解与Matlab实现

以非限制集format0 为例

一、参数配置

根据高层信令配置:

  • **prach_ConfigIndex** = 17

该索引通常对应特定的 PRACH 时频资源配置,但对于前导序列生成,核心参数是 `zeroCorrelationZoneConfig`。

  • **zeroCorrelationZoneConfig** = 6

对应非限制集(unrestricted set)下的 N_{CS} 值。

  • **rootSequenceIndex** = 2(示例起始根序列)

当 `zeroCorrelationZoneConfig = 6` 时,N_{CS}=32

1.2 前导序列基本参数

对于长序列(Preamble Format 0~3),前导序列长度 L_{RA}=839


二、每个根序列可生成的 preamble 数量

在非限制集中,一个根序列通过循环移位可生成的前导序列个数为:

N_{pre}\^{(u)} = \\left\\lfloor \\frac{L_{RA}}{N_{CS}} \\right\\rfloor

代入 L_{RA}=839N_{CS}=32

N_{pre}\^{(u)} = \\left\\lfloor \\frac{839}{32} \\right\\rfloor = 26

即每个根序列可以生成 **26** 个不同的前导序列。


三、循环移位 C_v 的确定

循环移位的索引 v 取值范围为:

v = 0, 1, \\dots, \\left\\lfloor \\frac{L_{RA}}{N_{CS}} \\right\\rfloor - 1

即:

v = 0, 1, \\dots, 25

循环移位值 C_v 为:

C_v = v \\cdot N_{CS}

因此:

C_0 = 0,\\ C_1 = 32,\\ C_2 = 64,\\ \\dots,\\ C_{25} = 25 \\times 32 = 800


四、ZC 序列生成与循环移位

4.1 ZC 基序列

对于物理根序列索引 u,ZC 序列定义为:

x_u(i) = e\^{-j\\frac{\\pi u i (i+1)}{L_{RA}}}, \\quad i = 0, 1, \\dots, L_{RA}-1

其中 L_{RA}=839

4.2 循环移位生成前导序列

每个根序列 u 与每个 v 组合生成一个前导序列:

x_{u,v}(n) = x_u\\left( (n + C_v) \\bmod L_{RA} \\right), \\quad n = 0, 1, \\dots, L_{RA}-1


五、生成 64 个 preamble 的根序列使用策略

系统需要生成 64 个前导序列。每个根序列可提供 26 个,因此所需的根序列个数为:

N_{\\text{root}} = \\left\\lceil \\frac{64}{26} \\right\\rceil = 3

即需要 **3** 个根序列。第一个根序列提供 26 个,第二个根序列再提供 26 个(累计 52 个),第三个根序列提供剩余的 12 个(64-52=12)。第三个根序列只需使用前 12 个循环移位(v=0 \\sim 11)。

5.1 根序列的选择顺序

协议规定了根序列的逻辑索引到物理索引的映射(Table 6.3.3.1-4)。示例中起始根序列取 u=2,则下一个根序列为 u=837(映射规则通常为对称使用),再下一个为 u=3 等,直到满足 64 个。


六、完整计算示例(以 u=2 为例)

6.1 生成 x_2(i)

x_2(i) = e\^{-j\\frac{\\pi \\cdot 2 \\cdot i (i+1)}{839}}, \\quad i=0,\\dots,838

6.2 应用循环移位得到 preamble

  • v=0C_0=0

x_{2,0}(n) = x_2(n)

  • v=1C_1=32

x_{2,1}(n) = x_2((n+32) \\bmod 839)

其前几个样点:

x_{2,1}(0) = x_2(32) = e\^{-j\\frac{\\pi \\cdot 2 \\cdot 32 \\cdot 33}{839}}

x_{2,1}(1) = x_2(33) = e\^{-j\\frac{\\pi \\cdot 2 \\cdot 33 \\cdot 34}{839}}

x_{2,1}(2) = x_2(34) = e\^{-j\\frac{\\pi \\cdot 2 \\cdot 34 \\cdot 35}{839}}

  • 类似地,v=2 对应 C_2=64,直至 v=25 对应 C_{25}=800

这样,根序列 u=2 产生了 26 个 preamble 序列。

6.3 后续根序列

按照协议规定的顺序,下一个根序列(例如 u=837)同样生成 26 个 preamble,再下一个根序列(例如 u=3)只需生成前 12 个(v=0 \\sim 11),总共达到 64 个。

**NOTE: 按照上述的描述,总共有64个循环移位,循环移位的索引即为实际发送的preambel_id(**公众号:手搓物理层 )


七、matlab源码

复制代码
L_RA = 839;
zeroCorrelationZoneConfig = 7;           %%  matalb的索引是从1开始的
Ncs_r = [0,13,15,18,22,26,32,38,46,59,76,93,119,167,279,419];
Ncs = Ncs_r(zeroCorrelationZoneConfig);      %Ncs选择了32

u = [129, 710, 140, 699, 120, 719, 210, 629, 168, 671, 84, 755, 105, 734, 93, 746, 70, 769, 60, 779,
    2, 837, 1, 838, 56, 783, 112, 727, 148, 691, 80, 759, 42, 797, 40, 799, 35, 804, 73, 766];
u_idx = 21;                              % 根序列索引是21,即选择的root value 是从上面数组的2开始

i_u = 0:(L_RA-1);
x_root = exp(-j*pi*u(u_idx)*i_u.*(i_u + 1)/L_RA);       % 根据对应根序列的值,生成基序列

v = 0:floor(L_RA/Ncs)-1;                                % 一个根序列通过循环移位可以生成所有的preamble序列
Cv = v*Ncs;

x_u_shift_num = length(Cv);

% 假设循环移位是5,也就是发送的preamble_id是4
m = 5;
n = 0:L_RA-1;
preamble_zc = x_root(mod(n+Cv(m),L_RA)+1); 

% 协议规定对生成的zc序列先做一次DFT,类似于做了一次预编码;借助与matlab fft函数
preamble_zcdft = fft(preamble_zc);

最后一步参考协议(某种意义相当于做了一次传输预编码,为了削峰,防止ofdm引入的峰均比较高问题 公众号:手搓物理层)

八、总结

本文以 `zeroCorrelationZoneConfig = 6`(N_{CS}=32)为例,详细介绍了非限制集下 PRACH 前导序列的生成过程:

  1. 根据配置查表得到 N_{CS}

  2. 计算每个根序列可生成的 preamble 数 \\lfloor L_{RA}/N_{CS}\\rfloor

  3. 确定循环移位范围 v=0,\\dots,\\lfloor L_{RA}/N_{CS}\\rfloor-1,并计算 C_v = v\\cdot N_{CS}

  4. 生成 ZC 基序列 x_u(i)

  5. 对每个根序列应用循环移位 C_v 得到 x_{u,v}(n)

  6. 按照协议顺序选择根序列,直至累计生成 64 个 preamble。

该流程同时适用于 LTE 和 NR 的长序列 PRACH 场景,是理解随机接入物理层的关键。


**参考资料**:

  • 3GPP TS 38.211 "NR; Physical channels and modulation"

下次分享PRACH的preamble检测部分

相关推荐
t198751282 小时前
基于深度学习的图像分割MATLAB实现
人工智能·深度学习·matlab
weixin_669545203 小时前
BC915E 5V/3.6A输入 两节升压充电IC,升压充电效率95%,输入最大支持18W,ESOP8 兼容IP2325
人工智能·单片机·嵌入式硬件·硬件工程·信息与通信
新新学长搞科研4 小时前
【高届数人工智能会议】第七届人工智能、网络与信息技术国际学术会议(AINIT 2026)
运维·网络·人工智能·计算机网络·自动化·信号处理·可信计算技术
GCKJ_08245 小时前
观成科技:远控木马KTLVdoor加密通信分析
科技·安全威胁分析·信息与通信·流量运营
Evand J6 小时前
【MATLAB例程】多无人机协同巡逻仿真:基于长机-僚机模型的编队保持与串级PID控制
开发语言·matlab·无人机·控制·pid·串级pid
码点6 小时前
RSRP,SINR,RSRQ,BAND
5g·信息与通信·信号处理
weixin_669545206 小时前
JZ55182升压型2节锂电池充电芯片,替代SY6982
人工智能·嵌入式硬件·硬件工程·信息与通信
小虎卫远程打卡app17 小时前
光通信与视频编码前沿技术综述:从超大容量传输到实时神经网络编码
运维·网络·信息与通信·视频编解码
ivy1598683771519 小时前
芯锦科技 HP9117 多协议USB Type-A快充识别芯片
网络·科技·网络协议·5g·信号处理·p2p