网站制作平台建设,福州网络推广建站,北京网站怎么优化,建设一个外贸网站多少钱1. 从帧结构到资源网格#xff1a;理解5G NR的物理画布 大家好#xff0c;我是老张#xff0c;在通信行业摸爬滚打了十几年#xff0c;从4G一路跟到5G。今天咱们不聊那些虚头巴脑的概念#xff0c;就扎扎实实地聊一个事儿#xff1a;在5G NR物理层里#xff0c;网络给你…1. 从帧结构到资源网格理解5G NR的物理画布大家好我是老张在通信行业摸爬滚打了十几年从4G一路跟到5G。今天咱们不聊那些虚头巴脑的概念就扎扎实实地聊一个事儿在5G NR物理层里网络给你分配了一堆资源比如66个RBMCS 28最后到底是怎么算出来一个具体的、要发送或接收的数据块TB大小的这个过程就是PDSCH下行共享信道和PUSCH上行共享信道资源映射的核心。很多刚入行的朋友一看到协议里那一串公式就头疼其实拆开来看每一步都有它的道理就像搭积木一样。要理解TB块怎么生成你得先明白5G NR的“物理画布”长什么样。这块画布就是帧结构。5G NR非常灵活它的帧结构不像4G那样固定而是可以通过参数配置的。一个无线帧是10毫秒分成10个子帧每个子帧1毫秒。关键来了每个子帧又由若干个时隙组成时隙里包含的OFDM符号数量可以是14个常规循环前缀或12个扩展循环前缀。我们最常打交道的就是这14个符号的时隙。你可以把一个时隙想象成一个棋盘。横轴是时间有14个格子OFDM符号纵轴是频率有若干个“资源块组”。每个资源块在频率上包含12个子载波。所以一个RB在时域上占1个符号在频域上占12个子载波它包含的这12个子载波*1个符号12个资源粒子就是最小的资源单位。我们说的给UE分配了nPRB66个RB就是指在这个时隙的频域上划出了66个这样的“小竖条”每个竖条12个子载波在时域上则覆盖这个时隙的14个符号。这样一个二维的资源网格就出来了TB块最终就是要映射到这个网格的特定位置上去。但请注意这个棋盘并不是所有格子都能用来下棋传数据。有些格子被固定用途的“棋子”占住了。比如每个时隙里都有DM-RS也就是解调参考信号它的图案是预先定义好的会占用一些RE。还有可能存在的CSI-RS信道状态信息参考信号、PT-RS相位跟踪参考信号以及一些控制信道占用的资源。此外网络还可以通过高层参数配置一个额外的开销Noh。所以我们第一步要算的就是刨去这些“公共设施”和“预留地”之后真正能用来盖“数据房子”传TB块的空地有多少。2. 第一步读懂MCS表格选定调制与码率有了资源网格的概念我们就要开始规划在这块地上盖什么样的房子了。这首先取决于我们打算用多快的速度来传数据也就是选择调制与编码方案。MCS索引值比如例子中的28就是我们的“施工蓝图编号”。协议里给了好几张MCS表格怎么选呢这通常由高层的RRC信令配置的mcs-Table参数决定。常见的有qam64表1qam256表2还有低频谱效率的qam64LowSE表等。选哪张表决定了你最高能用什么调制方式。我们例子中用的是最普遍的表1。找到表1查MCS索引28这一行你会看到三列关键信息调制阶数Qm、目标码率R乘以1024后的值、以及频谱效率。MCS28对应的是Qm 6Target code rate * 1024 948。Qm6代表64QAM调制即每个符号能携带6个比特的信息。948/1024 ≈ 0.9258这就是码率R。这里有个非常重要的理解码率不是最终传输效率而是一个“目标”或“标称”值。它表示的是在理想情况下剔除信道编码冗余后有效信息比特占总传输比特的比例。0.9258的码率已经非常高了接近1意味着编码添加的冗余很少这对信道质量的要求极高。所以基站选择MCS28给你是基于它对你当前信道条件的评估通过之前的CQI上报等认为信道足够好可以用这么“激进”的调制和编码。我刚开始做项目时就踩过一个坑只盯着MCS索引看没注意它对应的是哪张表。有一次测试终端上报的CQI很高基站调度了MCS 27我们满心以为用的是64QAM结果一查日志配置的是qam256表MCS 27对应的是256QAM终端根本解调不出来导致大量重传。所以明确MCS表格是计算一切的基础千万不能搞错。3. 第二步核算可用RE资源搞清楚“地皮”面积蓝图MCS定了接下来就要精确丈量我们实际可用的“地皮”面积。这就是计算N_RE——真正能用于承载PDSCH/PUSCH数据的RE数量。我们结合例子一步步拆解。首先我们算一下这个时隙内分配给我们的那部分资源网格总共有多少个RE。公式很简单N_RE N_sc_RB * N_symb_sh * n_PRB - N_dmrs_PRB - N_oh_PRBN_sc_RB 12每个RB有12个子载波这是固定的。N_symb_sh 14我们例子中一个时隙用于共享信道传输的符号数。注意一个时隙的14个符号不一定全给数据用开头可能被控制信道占去几个。这里假设全部14个符号都可用于PDSCH/PUSCH这是最常见的情况。n_PRB 66分配给本次传输的RB总数。N_dmrs_PRB在分配的这些RB上DM-RS信号占用的总RE数。这个值取决于DM-RS的配置类型Type 1或Type 2、符号位置是前置还是附加、以及CDM组等。这需要查协议或根据配置计算是项目实践中容易出错的地方。假设我们配置的是Type 1单符号它会在每个RB的特定子载波位置上占用6个RE。那么对于66个RBN_dmrs_PRB 66 * 6 396。N_oh_PRB高层配置的开销比如可能为0、6、12或18。我们假设为0。那么N_RE 12 * 14 * 66 - 396 - 0 11088 - 396 10692。等等这里和原始文章例子里的8832对不上。这说明原始例子中的N_dmrs_PRB和N_oh_PRB可能采用了不同的假设值。我们暂且按照协议逻辑继续重要的是掌握方法。接着协议引入了一个限制N_RE min(156 * n_PRB, N_RE)。这个156是怎么来的它其实是一个经验性的上限一个RB在最多12个符号14个符号减去一些固定开销用于数据传输且考虑最节省的DM-RS开销时大概能提供不超过156个可用RE。156 * 66 10296。比较N_RE (10692)和10296取最小值所以N_RE 10296。这个min操作非常关键它保证了后续计算不会因为理论RE数过高而导致TBS膨胀到一个不合理的值。它相当于给可用资源封了个顶。在实际编码中如果你忽略这一步直接使用N_RE在特定配置下可能会算出一个比标准允许的最大TBS还大的值导致实现错误。4. 第三步计算中间信息比特数规划“建筑材料”现在我们知道有N_RE 10296个空地RE。每个空地根据我们选的蓝图MCS能“盖”多少信息呢这就引出了中间变量N_info你可以把它理解为初步估算出的、需要传输的原始信息比特总量在加入CRC和信道编码之前。计算公式直观明了N_info N_RE * R * Qm * vR 0.92578125我们第一步查表得到的码率。Qm 664QAM调制每个RE承载6个调制符号注意是符号不是比特。但这里R * Qm的乘积实际表示的是每个RE平均能承载的有效信息比特数。因为码率R是信息比特与编码后总比特之比而Qm是每个符号的比特数两者相乘意义就是经过编码和调制后平均每个RE能运载多少原始信息比特。v 1传输层数。我们这里是单层传输。如果是MIMO多层传输比如v2那么数据流会复制到两层上这个值就是2相当于可用资源翻倍。代入计算N_info 10296 * 0.92578125 * 6 * 1 ≈ 10296 * 5.5546875 ≈ 57188。这个N_info是一个初步的、未经量化的浮点数结果。它直接反映了在给定的物理资源N_RE和选定的传输效率R, Qm下理论能承载的信息量。但是直接拿这个数去进行信道编码是不行的因为后续的LDPC编码器对输入块大小有特定的要求。5. 第四步TBS量化与确定适配编码器“模具”上一步算出的N_info比如57188是个“毛坯”我们需要把它打磨成一个符合LDPC编码器输入要求的“标准件”。这个过程就是TBS量化。协议38214里的这个算法有点绕但核心目的就一个找到一个既大于某个门限、又是某个最小粒度整数倍的TBS值。第一步量化N_info。公式是N_info max(3840, 2^n * round((N_info - 24) / 2^n))这里n floor(log2(N_info * 3) - 6)。我们一步步算计算N_info * 3 57188 * 3 171564log2(171564) ≈ log2(1.71564e5) ≈ 17.39(因为2^17131072 2^18262144)17.39 - 6 11.39floor(11.39) 11 所以n 11。计算2^n 2^11 2048。计算(N_info - 24) / 2^n (57188 - 24) / 2048 57164 / 2048 ≈ 27.9121round(27.9121) 28所以2^n * round(...) 2048 * 28 57344比较57344和3840取最大值N_info 57344。为什么要减24又取max(3840)减24通常是为了给后续可能添加的CRC比特留出余量尽管CRC是在TBS确定后才加。而3840是一个门限当信息量较小时编码方式会不同比如使用更小的LDPC基图这个门限确保了量化后的值不会太小以匹配相应的编码流程。第二步根据N_info确定最终TBS。这里有一个分段函数如果N_info 8424则TBS 8 * C * ceil((N_info 24) / (8 * C)) - 24 其中C ceil((N_info 24) / 8424)。如果N_info 8424则直接在协议预定义的TBS表格中查找大于等于N_info的最小值。我们的N_info 57344大于8424。计算C ceil((57344 24) / 8424) ceil(57368 / 8424) ceil(6.81) 7。这个C可以理解为需要将数据分割成的码块数量。LDPC编码器对单个码块的大小有限制最大8448比特包括CRC所以大数据块需要分割。计算TBS 8 * 7 * ceil((57344 24) / (8 * 7)) - 24 56 * ceil(57368 / 56) - 24 56 * ceil(1024.4286) - 24 56 * 1025 - 24 57400 - 24 57376。所以最终确定的传输块大小TBS 57376比特。这个值就是MAC层要交付给物理层进行信道编码的、包含了用户数据但尚未添加CRC的块大小。物理层会先给它加上24比特的CRC然后如果TBS很大对应C1再分割成C个码块每个码块单独加CRC、进行LDPC编码、速率匹配最后才映射到我们第一步计算的那些RE上去。6. 实战推演与常见“坑点”分析光说不练假把式我们再用原始文章的例子参数快速过一遍看看差异点在哪并分析几个实战中容易踩的坑。原始文章参数N_RE 8832,N_RE 8832,N_info 49059。我们倒推一下它直接给出N_RE8832根据公式12*14*66 - N_dmrs - N_oh 11088 - N_dmrs - N_oh 8832可推出N_dmrs N_oh 2256。这个开销非常大可能是包含了较多的DM-RS符号例如双符号DM-RS和较高的N_oh配置。N_info49059代入N_info N_RE * R * Qm * v即49059 8832 * 0.92578125 * 6 * 1验算8832*5.5546875确实约等于49059吻合。接着它计算N_infon floor(log2(49059*3)-6) floor(log2(147177)-6) ≈ floor(17.17 - 6)112^n2048。(49059-24)/2048 ≈ 23.94,round后得242048*2449152。max(3840, 49152)49152。最后TBSC ceil((4915224)/8424) ceil(49176/8424) ceil(5.84)6。TBS 8*6*ceil((4915224)/(8*6)) -24 48 * ceil(49176/48) -24 48 * ceil(1024.5) -24 48*1025 -24 49200 -24 49176。与原文结果一致。常见坑点总结DM-RS开销算错这是最大的错误来源。DM-RS的图案Type1/Type2、时域位置符号索引、密度单符号/双符号必须与高层配置严格对应。一个符号算错会导致N_RE偏差最终TBS错误。忽略N_oh配置N_oh参数容易被忽略或默认为0但实际网络中可能配置为非零值直接影响资源计算。MCS表格选错如前所述用错表格会导致调制方式和码率全错后果严重。N_RE公式理解偏差忘记与156*n_PRB取最小值或者在控制信道占用符号时N_symb_sh取值错误。需要清楚知道在当前时隙中哪几个符号是真正用于PDSCH/PUSCH的。量化过程编程实现错误N_info的量化公式特别是n的计算和取整、舍入环节在代码实现时容易因数据类型整型/浮点处理不当而出错。建议使用浮点数计算log2但最终步骤用整型运算避免累积误差。7. 工具与调试如何验证你的计算在实际开发和调试中我们不可能每次都手算。我常用的方法有几个1. 使用标准计算工具3GPP官网虽然不提供直接计算器但有很多第三方网站或开源工具实现了38214的算法。你可以用它们做快速验证。比如输入n_PRB66, MCS28 (64QAM表) DMRS配置 符号数14看输出的TBS是否与你计算的一致。但要小心这些工具的内部假设如DMRS开销、N_oh可能和你的配置不同务必确认参数对齐。2. 搭建自己的计算模块在项目代码中一定要将TBS计算模块单独实现并编写完善的单元测试。测试用例要覆盖各种边界情况小RB数如1个RB、大RB数满带宽、低MCSQPSK、高MCS256QAM、不同的DMRS配置等。将你的计算结果与标准工具或协议附录中的示例进行交叉验证。3. 利用芯片或平台日志最直接的验证方式是在真实终端或基站平台上跑测试。通过抓取空口信令日志特别是DCI调度信息和物理层基带处理日志你可以看到基站调度器下发的n_PRB、MCS以及物理层最终生成的TB大小。对比你根据DCI参数计算出的TBS和日志中实际处理的TBS任何差异都是排查问题的线索。我曾经就通过日志发现平台在计算N_dmrs_PRB时对于某些特殊配置多减了几个RE最终追溯到是底层驱动的一个配置映射错误。理解从帧结构到TB生成的完整链条不仅仅是套公式更是理解5G NR灵活调度思想的关键。它能帮助你在做链路预算、容量估算、性能优化时心里有一本清晰的账。下次当你看到调度信息时不妨在脑子里快速过一遍这个流程你会对系统的行为有更深刻的把握。