新闻详情

新闻详情

首页 / 资讯中心 / 详情

5G下行数据传输流程图:时序+协议栈+物理层映射可视化

发布时间:2026/10/2 10:48:23来源:尧图网络
5G下行数据传输流程图:时序+协议栈+物理层映射可视化
简介本资源是一份面向5G通信初学者与网络协议学习者的图形化教学材料聚焦5G NR下行数据传输全流程解析帮助读者直观理解用户面协议栈分层机制及各层封装逻辑。内容以清晰图示为核心完整呈现从应用层HTTP GET请求出发经TCP、IP、SDAP、PDCP、RLC、MAC至物理层的逐级封装过程并结合CU-DU分离架构CU承载SDAP/PDCPDU承载RLC/MAC/PHY说明协议栈部署关系特别标注TCP头部20字节结构、IPv4头部字段功能及关键参数含义。资源为单个PDF文件大小874KB排版紧凑、图文并茂适合作为课堂补充材料或自学速查手册。目前已有270人学习下载内容覆盖协议栈分层原理、头部字段作用、端到端数据流向等核心知识点可有效辅助理解5G NR用户面数据传递本质。1. 为什么画不清5G下行数据传输流程不是不会是缺一张「带时序协议栈物理层映射」的图你手头可能有3GPP TS 38.300的PDF翻到第6章“Data transmission procedures”密密麻麻全是文字“The gNB transmits PDSCH carrying DL-SCH data… the UE performs HARQ feedback on PUCCH…”——但合上文档那一刻脑子里还是没画面PDCP包怎么变成MAC CEMAC CE又怎么塞进PDSCH的RE里调度指令DCI和实际数据TB在时频域上到底错开几个slot这篇笔记不讲标准原文只做一件事用PythonMatplotlib从零生成一张可复现、可修改、可嵌入技术文档的5G下行数据传输流程图。它必须同时体现三层关键信息时间维度TDD帧结构如30kHz子载波间隔下1ms slot 14个OFDM符号协议栈映射PDCP SDU → RLC AM PDU → MAC PDU → PDSCH TB → 物理层RE控制与数据耦合DCI 1_0在slot n调度PDSCH在slot nkHARQ反馈在slot nk4回传。适合两类人协议工程师需要向客户/跨部门同事快速说清“为什么下行时延卡在4ms”高校学生/初学者拒绝背诵“PDCP加密→RLC分段→MAC加头→PHY调制”而是看见数据包在每一层被“切、包、贴、填”的真实动作。图不是装饰是调试黑匣子的入口——当你发现UE上报的CQI突降这张图能帮你立刻定位问题出在MAC层调度失败还是PHY层信道估计偏差2. 用Matplotlib构建5G下行流程图从坐标系定义到协议栈分层渲染2.1 定义时频二维坐标系Slot OFDM符号是所有图形的锚点5G TDD帧结构是图形的骨架。我们以典型配置为例子载波间隔30kHz对应1ms/slot14符号/slot一个无线帧10ms10个slot。图形横轴为时间slot编号纵轴为OFDM符号索引0~13。关键约束必须硬编码PDCCH占用前1~3个符号取决于CORESET配置PDSCH从第2个符号开始避开PDCCHHARQ反馈在PDSCH结束后的第4个slot3GPP规定最小RTT。import matplotlib.pyplot as plt import numpy as np # 参数定义严格对应3GPP TS 38.211 Table 4.3.2-1 SUBCARRIER_SPACING 30 # kHz SLOT_DURATION_MS 1.0 # ms SYMBOLS_PER_SLOT 14 FRAME_DURATION_MS 10.0 # ms # 创建时频网格横轴slot纵轴symbol slots np.arange(0, 10) # 1帧10slot symbols np.arange(0, SYMBOLS_PER_SLOT) # 绘制基础网格无数据仅坐标系 fig, ax plt.subplots(figsize(12, 6)) ax.set_xlim(-0.5, 9.5) ax.set_ylim(-0.5, SYMBOLS_PER_SLOT - 0.5) ax.set_xticks(slots) ax.set_yticks(symbols) ax.grid(True, linestyle:, alpha0.7) ax.set_xlabel(Slot index (0~9)) ax.set_ylabel(OFDM symbol index (0~13)) ax.set_title(5G NR Downlink Time-Frequency Grid (30kHz SCS))提示SUBCARRIER_SPACING和SYMBOLS_PER_SLOT必须匹配——30kHz对应14符号而120kHz对应14符号但slot时长缩短为0.125ms。若用错参数整个时序关系会崩塌。2.2 分层绘制协议栈用不同颜色区块表示PDCP/RLC/MAC/PHY处理阶段协议栈不是垂直堆叠而是时间偏移数据膨胀的过程PDCP层处理最慢含加密/完整性保护通常跨多个slotRLC层分段快但需等待完整SDUMAC层打包最“忙”要插入CRC、填充比特、添加MAC头还要响应DCIPHY层调制最快但受信道条件制约CQI影响MCS选择。我们用横向色块模拟各层处理耗时并标注关键事件点# 定义各层处理起止slot示意性实际依赖UE能力与配置 pdcpl_start, pdcpl_end 0, 2 # PDCP加密耗时2slot rlc_start, rlc_end 1, 3 # RLC分段在PDCP输出后启动 mac_start, mac_end 2, 4 # MAC打包需等待RLC PDU并解析DCI phy_start, phy_end 3, 5 # PHY调制在MAC PDU就绪后开始 # 绘制协议栈色块y方向压缩突出时间轴 ax.barh(y12, widthpdcpl_end-pdcpl_start, leftpdcpl_start, height0.8, colorskyblue, alpha0.7, labelPDCP: Ciphering) ax.barh(y10, widthrlc_end-rlc_start, leftrlc_start, height0.8, colorlightgreen, alpha0.7, labelRLC: Segmentation) ax.barh(y8, widthmac_end-mac_start, leftmac_start, height0.8, colorgold, alpha0.7, labelMAC: Multiplexing CRC) ax.barh(y6, widthphy_end-phy_start, leftphy_start, height0.8, colorcoral, alpha0.7, labelPHY: Modulation Mapping) # 标注关键事件点DCI调度、PDSCH传输、HARQ反馈 ax.scatter([2], [1], s100, cred, markerX, labelDCI 1_0 received (slot 2)) ax.scatter([3], [3], s100, cblue, markero, labelPDSCH transmission (slot 3)) ax.scatter([7], [1], s100, cpurple, marker^, labelHARQ ACK (slot 7)) ax.legend(bbox_to_anchor(1.05, 1), locupper left) plt.tight_layout() plt.show()逻辑说明barh的y值代表协议层抽象位置非物理符号width是该层处理持续时间scatter点坐标(slot, symbol)对应实际物理层事件发生时刻如DCI在slot2 symbol0~2接收颜色选择遵循通信行业惯例蓝色系表高层PDCP/RLC暖色系表底层MAC/PHY。2.3 叠加物理层资源映射用热力图显示PDSCH在RE上的实际填充纯色块不够“硬核”。真正让工程师信服的是看到1个TB如何填满PDSCH的Resource Blocks。我们模拟一个典型配置分配273 RB100MHz带宽起始RB index0每RB含12子载波 × 14符号 168 REPDSCH占slot3的symbol2~13共12符号总RE数 273 × 12 × 12 39312假设TB大小为30000 bits经LDPC编码后约60000 bits需全部映射。# 模拟PDSCH RE填充热力图简化只画1个RB的12符号 rb_count 1 symbol_range np.arange(2, 14) # PDSCH symbols in slot3 subcarrier_range np.arange(0, 12) # 12 subcarriers per RB # 创建RE占用矩阵1占用0空闲如DMRS、CRS位置 re_grid np.ones((len(symbol_range), len(subcarrier_range))) # 插入DMRStype1symbol2,6,10,14 - 这里取symbol2,6,10 dmrs_symbols [0, 4, 8] # index in symbol_range for s_idx in dmrs_symbols: re_grid[s_idx, [0,1,2,3,8,9,10,11]] 0 # DMRS占448 SCs # 绘制热力图 fig, ax plt.subplots(figsize(8, 4)) im ax.imshow(re_grid, cmapBlues, aspectauto, extent[-0.5, 11.5, 13.5, 1.5]) # y轴倒置symbol0在底部 ax.set_xlabel(Subcarrier index (0~11)) ax.set_ylabel(OFDM symbol index (2~13)) ax.set_title(PDSCH Resource Element (RE) Allocation in 1 RB) ax.set_yticks(np.arange(2, 14)) plt.colorbar(im, axax, labelRE occupied (1) / DMRS (0)) plt.show()参数说明re_grid的shape(12,12)对应12符号×12子载波DMRS位置按38.211 Table 6.2.2-1设置type1端口数1密度2热力图中白色区域即DMRS蓝色区域为数据RE——这直接决定吞吐量上限。3. 关键时序关系可视化DCI调度、PDSCH传输、HARQ反馈的精确对齐3.1 DCI 1_0调度PDSCHK0时延与slot边界对齐的硬约束DCI 1_0中的k0字段0~16定义了从DCI所在slot到PDSCH首个slot的时延。这是图形中最易画错的环节若k00PDSCH与DCI同slot但需避开PDCCH符号故从symbol2开始若k01PDSCH在DCI后1个slot实际网络中k0常设为1或2留出gNB处理时间。我们在图中用双向箭头标注显式标出k0# 在slot2DCI与slot3PDSCH间画k01箭头 ax.annotate(, xy(3, 1), xytext(2, 1), arrowpropsdict(arrowstyle-, colorblack, lw1.5)) ax.text(2.5, 1.3, k01, hacenter, vabottom, fontsize10, fontweightbold) # 同样标出HARQ RTTPDSCH结束slot到ACK slot的时延 pdsch_end_slot 3 harq_ack_slot 7 ax.annotate(, xy(harq_ack_slot, 1), xytext(pdsch_end_slot, 1), arrowpropsdict(arrowstyle-, colorpurple, lw1.5)) ax.text((pdsch_end_slotharq_ack_slot)/2, 1.3, HARQ RTT4, hacenter, vabottom, fontsize10, colorpurple)为什么k0不能为负因为DCI必须先于PDSCH传输——这是物理层确定性要求。若图中出现DCI在PDSCH之后说明调度逻辑已违反3GPP强制约束必然导致UE解码失败。3.2 PDSCH与HARQ反馈的slot偏移从理论值到实测偏差3GPP规定最小HARQ RTT为4个slotTS 38.321 Sec 5.4.2但实际网络中常出现5~6slot延迟原因有三gNB侧HARQ buffer排队高负载时UE侧PDSCH解码耗时超预期低SNR场景上行资源调度延迟PUCCH资源不足。我们在图中用虚线框文字标注区分理论与实测# 理论HARQ窗口slot7 ax.add_patch(plt.Rectangle((6.5, 0.5), 1, 1, fillFalse, edgecolorpurple, linestyle--, lw1.5)) ax.text(7, 0.2, Theoretical\nHARQ ACK, hacenter, vabottom, fontsize9, colorpurple) # 实测HARQ窗口slot8用红色虚线框 ax.add_patch(plt.Rectangle((7.5, 0.5), 1, 1, fillFalse, edgecolorred, linestyle:, lw1.5)) ax.text(8, 0.2, Measured\nHARQ ACK, hacenter, vabottom, fontsize9, colorred)注意实测窗口右移意味着gNB需延长HARQ buffer保留时间否则会误判为NACK。这对缓冲区设计是硬指标。3.3 多TB并行传输的时序叠加避免slot内符号冲突单UE可同时接收多个TB通过DCI中的ndi翻转识别但所有TB必须共享同一PDSCH时频资源。图形中需体现TB1和TB2的PDSCH在相同slot、相同RB、相同symbol范围区分靠不同RVRedundancy Version和MCSHARQ反馈合并为1个ACK/NACK。# 在slot3绘制两个TB的PDSCH色块重叠 ax.barh(y3, width1, left3, height0.6, colorblue, alpha0.5, labelTB1) ax.barh(y2.5, width1, left3, height0.6, colordarkblue, alpha0.5, labelTB2) ax.text(3.5, 2.8, TB1TB2\nin same PDSCH, hacenter, vacenter, fontsize9)关键洞察TB数量增加不提升峰值速率RE总数不变但提升调度灵活性——例如TB1传控制面数据低MCSTB2传用户面数据高MCS。4. 避坑5G下行流程图绘制中踩过的5个真实坑4.1 现象PDCCH和PDSCH在图中重叠导致UE解码失败原因PDCCH必须占用slot前1~3个符号而PDSCH起始符号未避让。常见错误是把PDSCH起始设为symbol0忽略PDCCH占用。解决严格按CORESET配置计算PDCCH符号数。若CORESET包含symbol0~2则PDSCH必须从symbol3开始。代码中用pdsch_start_symbol max(3, pdcch_end_symbol 1)硬约束。4.2 现象HARQ反馈点画在PDSCH slot内与3GPP规定冲突原因误将“PDSCH传输slot”当作“HARQ处理完成slot”。实际上UE需经历PDSCH接收→信道估计→LDPC译码→CRC校验→生成ACK/NACK→等待PUCCH资源→发送。解决HARQ反馈点必须落在pdsch_slot k1其中k1≥4。图中用ax.scatter([pdsch_slot 4], [1], ...)确保合规。4.3 现象RLC分段块跨越slot边界但未标注分段标识FI字段原因RLC AM模式中一个SDU可能被分到多个PDU首PDU的FI01start中PDU的FI00continue尾PDU的FI10end。图中若只画连续色块会误导为单PDU。解决在RLC色块内添加小图标左端画[S]中间画[C]右端画[E]。用ax.text()在色块内标注。4.4 现象PDSCH热力图显示全RE占用但实际有CRS/PT-RS等预留资源原因5G NR取消CRS但仍有PT-RSPhase Tracking RS和SRS虽为上行但slot内需避让。尤其高频段mmWavePT-RS密度高。解决查38.211 Table 6.4.1-1按scs和cp-type确定PT-RS符号位置。在re_grid中将对应RE设为0。4.5 现象DCI调度箭头指向PDSCH色块中心而非首个symbol原因k0定义的是slot级偏移但PDSCH实际从该slot的特定symbol开始。箭头终点若落在色块中心会掩盖symbol级对齐细节。解决箭头终点坐标设为(pdsch_slot, pdsch_start_symbol)并用ax.plot([dcislot, pdsch_slot], [1, pdsch_start_symbol], ...)画斜线明确指向起始点。5. 进阶技巧用动态参数驱动图形一键生成多场景对比图5.1 构建参数化绘图函数把SCS、TDD pattern、MCS都变成输入变量硬编码参数无法应对真实需求。我们封装核心函数支持一键切换场景def plot_nr_downlink_flow( scs_khz30, # 子载波间隔 tdd_pattern2.5ms, # TDD周期2.5ms,5ms,10ms mcs_index12, # 调制编码方案索引 k01, k14, # 调度与反馈时延 tb_size_bits30000 # 传输块大小 ): # 根据scs_khz动态计算symbols_per_slot等 if scs_khz 15: symbols_per_slot 14 slot_duration_ms 1.0 elif scs_khz 30: symbols_per_slot 14 slot_duration_ms 1.0 elif scs_khz 60: symbols_per_slot 14 slot_duration_ms 0.5 else: # 120kHz symbols_per_slot 14 slot_duration_ms 0.125 # 计算PDSCH起始symbol考虑PDCCH开销 pdcch_symbols 2 if scs_khz 30 else 1 pdsch_start_symbol pdcch_symbols # 计算TB所需RE数简化MCS index→code rate→RE需求 code_rate {12: 0.37, 15: 0.45, 20: 0.67}[mcs_index] re_needed int(tb_size_bits / code_rate / 6) # 6 bits per 256QAM RE # 绘图逻辑略同前文 ... return fig # 生成对比图30kHz vs 120kHz fig1 plot_nr_downlink_flow(scs_khz30, k01, mcs_index12) fig2 plot_nr_downlink_flow(scs_khz120, k00, mcs_index15)参数说明scs_khz直接影响slot时长和符号密度是5G部署的基石参数k0/k1网络优化关键——k00降低时延但增加gNB负荷k14是底线k16更鲁棒mcs_index映射到实际吞吐量index20256QAM比index1264QAM提升约30%频谱效率。5.2 表格化对比不同配置下的关键指标差异配置项30kHz SCS120kHz SCS差异分析Slot时长1.0 ms0.125 ms高频段需更短slot应对相位噪声符号数/slot1414符号数不变但每符号时长缩短PDCCH符号数2~31~2高SCS下PDCCH更紧凑释放更多PDSCH符号最小k000理论可行但120kHz下gNB处理压力大典型k144~6高SCS下UE解码更快但上行调度更难实战价值当客户问“为什么毫米波基站时延更低”这张表对应图形就是最直白的答案——不是算法先进是scs_khz120把slot压缩了8倍所有时序自然收紧。5.3 导出为矢量图嵌入LaTeX/PPT的技术文档级交付PNG截图无法缩放而工程师需要把图放进论文或方案书。用plt.savefig()导出PDF/SVG# 导出高清矢量图 plt.savefig(nr_downlink_flow_scs30.pdf, bbox_inchestight, dpi300, formatpdf) # PDF保证LaTeX编译无损 # 或SVG用于网页交互 plt.savefig(nr_downlink_flow_scs30.svg, bbox_inchestight, formatsvg)血泪经验务必加bbox_inchestight否则坐标轴标签被裁剪dpi300对PDF无效矢量图无dpi概念但对PNG必要。我习惯把这套脚本放在项目docs/figures/目录下每次写技术方案前运行python gen_flow.py --scs 120 --k0 05秒生成一张精准图。它省掉的不是画图时间是反复解释“为什么k0不能为0”的会议时间。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI工程从零构建:数据契约、模型服务与可观测性实战 2026/10/2 13:27:40

AI工程从零构建:数据契约、模型服务与可观测性实战

1. 这不是调包,是亲手搭起AI工程的骨架“ai-engineering-from-scratch”这个标题一出来,我就知道很多人会下意识点开又迅速划走——不是不想学,而是被“from scratch”四个字母吓退了。它不像“用LangChain快速搭建RAG”那样有明确的入口和现…

阅读更多 →
Autoware 模型制品(Artifacts)下载指南:基于 Ansible 从 Hugging Face 获取感知模型 Bundle 2026/10/2 13:27:40

Autoware 模型制品(Artifacts)下载指南:基于 Ansible 从 Hugging Face 获取感知模型 Bundle

自动驾驶 【免费下载链接】autoware Autoware - the worlds leading open-source software project for autonomous driving 项目地址: https://gitcode.com/GitHub_Trending/au/autoware 点击查看 免费下载 导读 Autoware 的感知(Perception&#xff…

阅读更多 →
ViMax的CharacterExtractor角色提取:一段剧本如何变成结构化“角色卡“ 2026/10/2 13:27:40

ViMax的CharacterExtractor角色提取:一段剧本如何变成结构化“角色卡“

ViMax的CharacterExtractor角色提取:一段剧本如何变成结构化"角色卡" 【免费下载链接】ViMax "ViMax: Agentic Video Generation (Director, Screenwriter, Producer, and Video Generator All-in-One)" 项目地址: https://gitcode.com/GitHu…

阅读更多 →
ThingsBoard TBEL 解码函数实战:用 parseBytesToInt 解析二进制设备上行报文(simple-binary 示例详解) 2026/10/2 13:27:40

ThingsBoard TBEL 解码函数实战:用 parseBytesToInt 解析二进制设备上行报文(simple-binary 示例详解)

物联网后端数据可视化消息队列 【免费下载链接】thingsboard All-in-one IoT Platform - Device management, data collection, processing and visualization. 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard 点击查看 免费下载 导读 本文围绕 T…

阅读更多 →
ComfyUI-LTXVideo LTX-2.5 蒸馏工作流实战指南:九张图的选型、配置与原理剖析 2026/10/2 13:27:40

ComfyUI-LTXVideo LTX-2.5 蒸馏工作流实战指南:九张图的选型、配置与原理剖析

人工智能大模型AI 应用媒体生成本地部署 【免费下载链接】ComfyUI-LTXVideo LTX-Video Support for ComfyUI 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-LTXVideo 点击查看 免费下载 LTX-2.5 是 LTX 系列中首个以蒸馏模型为主打的视频生成版本&…

阅读更多 →
2026年主流智能体推荐:可信AI时代的智能体选型指南与TaoToken统一接入实践 2026/10/2 13:27:33

2026年主流智能体推荐:可信AI时代的智能体选型指南与TaoToken统一接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉