基于 3GPP TS 38.212 的工业级协议解析引擎
智能变体识别 (PDCCH Order) + 双向交互映射 (Bi-Mapping) + 完整 RNTI 覆盖
在 5G NR 系统调试中,DCI (Downlink Control Information) 的比特级解析是排查调度问题的核心痛点。面对 Format 1-0 复杂的字段复用和变体机制(如 PDCCH Order、Short Message),传统的人工对照标准协议不仅效率低下,且极易出错。本平台提供了一站式的可视化解决方案。
| 痛点 (传统方式) | 本平台解决方案 (DCI 1-0 Analyzer) |
|---|---|
| 🔢 黑盒比特流 | ✅ 所见即所得:Bit-to-Field 双向高亮,点击比特即知含义 |
| 🤯 脑力解算 RIV | ✅ 自动解码 |
| 🎭 变体难以区分 | ✅ 智能识别:自动判定 C-RNTI 下是常规调度还是 PDCCH Order (随机接入触发) |
| 📉 配置繁琐 | ✅ 场景化预设:内置 FR1/FR2、Shared Spectrum 等典型配置模板,一键加载 |
🔬 科研教学价值
|
💼 工程应用价值
|
| 特性 | 说明 | 关键实现 |
| :--- | :--- | :--- |
|
智能变体检测 | 自动区分 PDSCH 调度与特殊指令 |
dci1_0_parse 中的逻辑分支判定 (Format ID + Reserved Bits) |
| PDCCH Order | 完美支持随机接入触发指令解析 | 动态显隐 Tag2Id, PRACH Mask 等专用字段 |
|
交互式位图 | 比特与字段的双向索引 |
patch 对象回调 +
uitable 联动高亮 (ButtonDownFcn) |
|
端序兼容 | 支持不同厂商的比特流格式 | 内置
LMS/MSB 动态切换引擎 (
BitCursor优化) |
基于标准测试用例实测结果
| 场景 | RNTI | Payload 长度 | 关键字段解析 | 结论 |
| :---: | :---: | :---: | :---: | :---: |
| SIB1 调度 | SI-RNTI | ~43 bits | RIV, MCS, SystemInfoIndicator | ✅ 精准广播解析 |
| 随机接入 | C-RNTI | ~45 bits | Preamble Index, SS/PBCH Index | ✅ PDCCH Order 识别 |
| 寻呼/短消息 | P-RNTI | ~40 bits | Short Message, Paging Indicator | ✅ 多路复用支持 |
DCI 1-0/ ├── src/ │ ├── DCI10AnalyzerApp.m # 🚀 交互式 GUI 核心引擎 (View/Controller) │ ├── dci1_0_parse.m # 🧠 协议解析算法内核 (Model) │ ├── dci1_0_field_specs.m # 📏 3GPP 字段定义库 (TS 38.212) │ └── BitCursor.m # 🔍 通用流式比特读取器 ├── docs/ │ └── GUI_使用手册.md # 📄 本文档 └── tests/ # ✅ 自动化测试套件
本平台提供 "界面+算法" 双重指引:
界面操作指引、配置参数说明、结果解读指南。
3GPP 协议原文对照,字段长度计算公式,RIV 编码原理。
src/dci1_0_extract_fields.m)% 动态解析逻辑:根据 RNTI 与配置动态计算字段结构 function dciInfo = dci1_0_extract_fields(dciInfo, specs, cursor) for i = 1:length(specs) item = specs(i); len = item.Length; % 核心:流式读取比特并自动映射 val = cursor.readUInt(len); % 存储元数据用于 GUI 高亮 fieldMeta.Offset = startPos; fieldMeta.Length = len; fieldMeta.RawBits = rawBits; fieldMeta.Value = val; end end
src/DCI10AnalyzerApp.m)% 反向交互:点击比特块高亮字段表 function bitPatchClicked(app, src, event, bitIdx) % 查找包含该比特的字段 row = findRowByBitIndex(app.FieldTable.Data, bitIdx); if row > 0 % 高亮表格行 app.highlightFieldTableRow(row); % 更新详情面板 updateDetailPanel(app, row); end end
>> cd('src');
>> app = DCI10AnalyzerApp;
解析三部曲:
C-RNTI,设置
N_RB_DL (e.g. 273)。0x8ABCD...。▶ 解析 DCI,即刻获取专业报告。

本文代码仅为核心片段,完整版工程已整理好。 关注公众号 【 3GPP仿真实验室】进行获取。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049237/viewspace-3109470/ ,如需转载,请注明出处,否则将追究法律责任。