【MATLAB源码】5G:PRACH 链路级仿真平台

0 阅读4分钟

📡 5G NR PRACH 链路级仿真平台

完全符合 3GPP TS 38.211 标准的高精度物理随机接入信道仿真


📌 为什么选择本仿真平台?

痛点本平台解决方案
🚫 依赖昂贵工具箱100% 独立实现:核心算法自主可控
🧩 标准实现不完整3GPP 全覆盖:支持全格式 (0-3, A1-C2)、全 N_CS 表、Type A/B 限制集
🐢 代码晦涩难懂教学级中文注释:每一行关键代码都有详细的 3GPP 协议引用和物理含义解释
📉 高速场景失效高多普勒鲁棒:精确实现 Restricted Set 算法,支持高铁与 LEO 卫星场景仿真
📦 只有理论公式工程化落地:提供完整的发射机、接收机、信道模型和检测器链路

🎯 核心价值

🔬 科研/学术价值

  • 深入理解 PRACH:透彻掌握 ZC 序列、循环移位、Restricted Set 等核心概念
  • 高速移动性研究:提供精准的高速场景基线,助力多普勒估计算法研究
  • LEO 卫星通信:验证大频偏下的 RACH 检测性能
  • 非标算法验证:开放的架构允许轻松替换检测算法 (如基于深度学习的检测)

💼 工程/产品价值

  • 算法核对 (Cross-Check):作为黄金参考 (Golden Reference) 验证 DSP/FPGA 实现

  • IP 核开发参考:清晰的模块化结构,易于移植到 C/C++/Verilog

  • 演示汇报利器:内置丰富的可视化图表,一键生成波形图、PDP 图和性能曲线

  • 零成本部署:无需购买额外的 MATLAB 工具箱 License


⚡ 技术亮点

🌊 PRACH 信号处理全链路

┌────────────────────────────────────────────────────────────────────────┐
│                        PRACH 链路仿真核心流程                           │
├────────────────────────────────────────────────────────────────────────┤
│                                                                        │
│  [配置生成]     [ZC 序列]     [循环移位]     [OFDM 调制]               │
│ prach_config ──► gen_zc ──► circshift ──► prach_ofdm_mod               │
│      │                                             │                   │
│      ▼                                             ▼                   │
│ [N_CS查表] <── [3GPP Tables]                  [信道模型]               │
│                (6.3.3.1-5~7)                 apply_channel             │
│                                                    │                   │
│                                                    ▼                   │
│  [检测判决] ◄── [峰值搜索] ◄── [频偏补偿] ◄── [Preamble检测]           │
│ threshold      findpeaks      doppler_comp    prach_detect             │
│                                                                        │
│  关键特性:                                                             │
│    Restricted Set Type A/B | 多假设频偏搜索 | 重复符号合并             │
└────────────────────────────────────────────────────────────────────────┘

📊 实测性能演示

1. 多普勒鲁棒性 (Restricted Set)

1200 Hz (约 450 km/h) 频偏下,Restricted Set 通过更大的 NCSN_{CS} 提供了有效的检测窗口,避免了虚警。

场景配置N_CS检测结果
低速常规Unrestricted46❌ 混叠/虚警
高速移动Restricted Type A68100% 检测

2. 重复增益 (Format 0 vs 2)

-17 dB 极低信噪比下,Format 2 利用 4 次重复获得了显著增益。

  • Format 0 (1次): 检测率 ~10%
  • Format 2 (4次): 检测率 ~90% (增益显著)

🖥️ 运行环境

最低要求

项目要求
MATLAB版本R2018b 或更高 (推荐 R2021b+)
必需工具箱 (基于基础 MATLAB 语言开发)
推荐配置8GB RAM (用于长时间蒙特卡洛仿真)

🧠 核心算法详解

1. 受限集 (Restricted Set) 算法

针对高速场景,本项目完整实现了 3GPP TS 38.211 6.3.3.1 节定义的复杂算法:

  • 计算模逆元 dud_u
  • 根据 dud_uNCSN_{CS} 的关系判定 Type A/B
  • 生成非连续的合法循环移位 CvC_v 列表

2. 多假设检测器

为了应对 LEO 卫星场景下的超大频偏 (如 ±40 kHz),检测器支持:

  • 宽范围网格搜索:在频域进行多假设尝试
  • 非相干合并:对多次重复的符号进行能量合并

📁 项目结构

DL_PTRS/
├── 📂 src/                         # 💎 核心算法库 (无依赖)
│   ├── prach_config.m              #   配置生成 (含完整 3GPP 表格)
│   ├── prach_tx.m                  #   发送机 (ZC 序列 + 循环移位)
│   ├── prach_detect.m              #   检测器 (相关 + 峰值搜索)
│   ├── prach_ofdm_mod.m            #   OFDM 调制 (CP + 加窗)
│   ├── gen_zc_seq.m                #   ZC 序列生成器
│   └── get_root_seq_tables.m       #   根序列映射表
│
├── 📂 test/                        # 🧪 测试与演示
│   ├── demo_scenarios.m            #   📊 综合场景演示 (一键运行)
│   ├── demo_restricted_set.m       #   🚄 高速场景验证
│   ├── demo_leo_multistage.m       #   🛰️ LEO 卫星场景演示
│   ├── test_formats.m              #   ✅ 格式一致性测试
│   └── calibrate_threshold.m       #   🎚️ CFAR 门限校准
│
└── 📂 docs/                        # 📘 文档
    ├── 算法文档.md                  #   详细数学原理与推导

🎬 快速开始

1. 运行综合演示

展示时域波形、灵敏度曲线和多普勒效应可视化:

>> cd test
>> run demo_scenarios.m

2. 验证高速场景

模拟高铁/卫星场景下的 Restricted Set 性能:

>> run demo_restricted_set.m

demo_doppler.pngdemo_sensitivity.pngdemo_waveforms.pnguntitled.png


🛒 获取方式

本文代码仅为核心片段,完整版工程包含所有源码、测试脚本及详细文档。 关注公众号 【3GPP仿真实验室】进行获取。


📚 参考文献

  1. 3GPP TS 38.211 V17.5.0: NR Physical channels and modulation
  2. 3GPP TS 38.213: Physical layer procedures for control
  3. 3GPP TR 38.821: Solutions for NR to support Non-Terrestrial Networks (NTN)