深入理解5g <十八>传输块tbsize的计算

5G NR中传输块大小(TBS)的计算是一个标准化的四步流程,其核心思想是:先根据分配的时频资源和传输配置,计算出一个"中间信息比特数",再对这个数值进行量化取整,最终得到在物理信道上实际传输的比特数。

TBS的计算流程定义在3GPP TS 38.214规范中,下行共享信道(PDSCH)和上行共享信道(PUSCH)的TBS确定分别对应第5.1.3.2节和第6.1.4.2节。核心逻辑可概括为三个维度:**物理资源维度**(PRB数、符号数、开销)、**传输配置维度**(调制阶数、码率、MIMO层数)和**编码处理维度**(LDPC基图选择、码块分割)。


📐 第一步:计算可用的资源元素(RE)总数

首先需要计算在一个物理资源块(PRB)内,真正分配给数据传输的资源元素(RE)数量 \( N'_{RE} \)。

**公式为:**

\ N'_{RE} = N\^{RB}_{sc} \\cdot N\^{sh}_{symb} - N\^{PRB}_{DMRS} - N\^{PRB}_{oh} \\

**参数说明:**

  • \( N^{RB}_{sc} = 12 \):每个PRB在频域上有12个子载波。

  • \( N^{sh}_{symb} \):调度分配中用于PDSCH/PUSCH传输的OFDM符号数(一个时隙通常为14个符号)。

  • \( N^{PRB}_{DMRS} \):每个PRB内用于解调参考信号(DM-RS)的RE数,取决于DM-RS配置类型。

  • \( N^{PRB}_{oh} \):高层配置的开销,用于预留其他参考信号(如CSI-RS)的RE,由高层参数 `Xoh-PDSCH` 配置。

然后,计算分配给该UE的总RE数 \( N_{RE} \):

\ N_{RE} = \\min(156, N'_{RE}) \\cdot n_{PRB} \\

其中 \( n_{PRB} \) 是分配的PRB总数。这里对每个PRB的可用RE数做了上限保护,最大不超过156个。


🧮 第二步:计算中间信息比特数(\( N_{info} \))

得到总RE数后,结合调制与编码策略(MCS)和MIMO层数,计算中间信息比特数 \( N_{info} \):

\ N_{info} = N_{RE} \\cdot R \\cdot Q_m \\cdot v \\

**参数说明:**

  • \( R \):目标码率(Code Rate),由MCS索引查表获得。

  • \( Q_m \):调制阶数,QPSK为2,16QAM为4,64QAM为6,256QAM为8。

  • \( v \):MIMO传输层数。


✨ 第三步与第四步:量化得到最终TBS

根据 \( N_{info} \) 的大小,采用两种不同的量化方式:

情况一:\( N_{info} \le 3824 \)

此时使用**查表法**。首先对 \( N_{info} \) 进行一次量化,得到 \( N'_{info} \):

\ N'_{info} = \\max\\left(24, 2\^n \\cdot \\left\\lfloor \\frac{N_{info}}{2\^n} \\right\\rfloor \\right) \\

其中 \( n = \max(3, \lfloor \log_2(N_{info}) \rfloor - 6) \)。这一步是为了将 \( N_{info} \) 对齐到2的幂次边界上。

然后,在3GPP TS 38.214的 **Table 5.1.3.2-1** 中,查找**不小于** \( N'_{info} \) 的最小TBS值,即为最终TBS。该表覆盖了从24到3824比特的一系列标准TBS值。

情况二:\( N_{info} > 3824 \)

此时使用**公式法**。首先计算 \( N'_{info} \):

\ N'_{info} = \\max\\left(3840, 2\^n \\cdot \\text{round}\\left(\\frac{N_{info} - 24}{2\^n}\\right) \\right) \\

其中 \( n = \lfloor \log_2(N_{info} - 24) \rfloor - 5 \)。

最终TBS的计算分为两种情况,取决于码率 \( R \):

  • **当 \( R \le 1/4 \) 时:**

\ TBS = 8 \\cdot C \\cdot \\left\\lceil \\frac{N'_{info} + 24}{8 \\cdot C} \\right\\rceil - 24 \\

其中 \( C = \left\lceil \frac{N'_{info} + 24}{3816} \right\rceil \)。

  • **当 \( R > 1/4 \) 且 \( N'_{info} > 8424 \) 时:**

\ TBS = 8 \\cdot C \\cdot \\left\\lceil \\frac{N'_{info} + 24}{8 \\cdot C} \\right\\rceil - 24 \\

其中 \( C = \left\lceil \frac{N'_{info} + 24}{8424} \right\rceil \)。

  • **其他情况(\( R > 1/4 \) 且 \( N'_{info} \le 8424 \)):**

\ TBS = 8 \\cdot \\left\\lceil \\frac{N'_{info} + 24}{8} \\right\\rceil - 24 \\。


📊 计算示例

以下是一个典型的PDSCH TBS计算示例,参数如下:

  • 调制方式:64QAM,\( Q_m = 6 \)

  • 码率:\( R = 948/1024 \approx 0.9258 \)

  • MIMO层数:\( v = 1 \)

  • 分配的PRB数:\( n_{PRB} = 66 \)

  • 每PRB可用RE数:\( N'_{RE} = 8832 / 66 = 133.8 \),取整后为133

**计算过程:**

  1. **计算总RE数:**

\ N_{RE} = \\min(156, 133) \\times 66 = 133 \\times 66 = 8778 \\

  1. **计算 \( N_{info} \):**

\ N_{info} = 8778 \\times 0.9258 \\times 6 \\times 1 \\approx 48768 \\

  1. **由于 \( N_{info} > 3824 \),使用公式法:**
  • \( n = \lfloor \log_2(48768 - 24) \rfloor - 5 = \lfloor 15.57 \rfloor - 5 = 15 - 5 = 10 \)

  • \( N'_{info} = \max(3840, 2^{10} \times \text{round}((48768-24)/2^{10})) = 1024 \times \text{round}(47.6) = 1024 \times 48 = 49152 \)

  • 由于 \( R > 1/4 \) 且 \( N'_{info} = 49152 > 8424 \),使用第二个分支:

\ C = \\left\\lceil \\frac{49152 + 24}{8424} \\right\\rceil = \\left\\lceil 5.84 \\right\\rceil = 6 \\

\ TBS = 8 \\times 6 \\times \\left\\lceil \\frac{49152 + 24}{8 \\times 6} \\right\\rceil - 24 = 48 \\times \\left\\lceil \\frac{49176}{48} \\right\\rceil - 24 = 48 \\times 1025 - 24 = 49176 \\

**最终TBS = 49176比特**。这与MATLAB 5G工具箱的计算结果一致。


⚠️ 关键注意事项

  1. **阈值3824**:这是区分查表法和公式法的关键阈值,超过这个值会引入更复杂的量化过程。

  2. **RE上限156**:每个PRB的可用RE数有156的上限,这是为了防止在高开销场景下计算出不切实际的大TBS。

  3. **DM-RS开销**:DM-RS的RE数取决于DM-RS配置类型(Type 1或Type 2)和CDM组数,是计算 \( N'_{RE} \) 时最易出错的部分。

  4. **码率分支**:公式法中,码率是否大于1/4会导向不同的码块分割策略,直接影响最终TBS值。

  5. **初传与重传一致**:TBS的确定必须保证初传和重传时一致,即使重传时使用的MCS或资源有所调整,也需要通过特定规则回退到初传的TBS。

相关推荐
脏脏a12 小时前
延迟与画质:远程控制的生命线
开发语言·php
像风一样的男人@12 小时前
python --基于scp的文件传输助手
开发语言·python
一条破秋裤12 小时前
SDIO Wi‑Fi 设备的驱动向insmod + 反向rmmod
开发语言·php
m0_6399069412 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
Evand J12 小时前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
GIS数据转换器12 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
weixin_4173968313 小时前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
熊猫钓鱼>_>13 小时前
鸿蒙PC构建实战:hvigor modelVersion 降级 + schema 清理 + ArkTS 编译三连坑完整复盘
开发语言·华为·ai编程·harmonyos·openharmony·数据·ai生成
FRing0313 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
1024奇点13 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源