结论先行:启用 transform precoding 的 PUSCH,其 DM-RS 使用
的 low-PAPR 序列,但并非只有一种 low-PAPR 序列。满足特定 \pi/2-BPSK 条件时使用 TS 38.211 §5.2.3 的 type 2;其余情形使用 §5.2.2 的 type 1,且
。此外,必须把“序列长度选择”和“端口 OCC/频域偏移”作为独立环节处理。
本文以 3GPP TS 38.211 §5.2.2、§5.2.3、§6.4.1.1.1.2 和 §6.4.1.1.3 为依据,解释 transform-precoded PUSCH DM-RS 的完整判断路径。
1. 不要把三个“type”混成一个
在这类问题中,至少有三个不同维度:
| 名称 | 它回答的问题 | 关键规范位置 |
|---|---|---|
low-PAPR sequence type 1/type 2 | DM-RS 的低 PAPR 基序列怎样生成 | TS 38.211 §5.2.2 / §5.2.3 |
DMRS configuration type 1/type 2 | DM-RS 使用哪种 RE pattern、端口复用结构 | TS 38.211 §6.4.1.1.3 |
| DM-RS antenna port | 该端口取哪组频域 OCC、时域 OCC 和频域偏移 | TS 38.211 表 6.4.1.1.3-1 / -2 |
本文的主角是第一项;后两项决定“同一条序列如何在不同端口和 RE 上区分”。因此,low-PAPR type 2 不等于 DMRS configuration type 2。
delta = 1 表示什么?
是 low-PAPR 序列定义中的长度缩放索引,不是功率参数、循环移位,也不是 DM-RS port。对于 transform-precoded PUSCH DM-RS,§6.4.1.1.1.2 将它固定为
,因此:
因为 NR 每个 RB 有个子载波,
令序列长度变为每 RB 6 个样点。它与 transform-precoded PUSCH DM-RS 的 Comb-2 映射相匹配:DM-RS 占用隔一个取一个的子载波位置,所以只需生成分配总子载波数一半长度的 low-PAPR 序列。
因此,还要加上一条本篇讨论范围内的约束:对启用 transform precoding 的 PUSCH DM-RS,映射采用 Comb-2,即 DM-RS configuration type 1 的 1/2 频域密度;若dmrs-Type=type2,则不进入本篇的 transform-precoded PUSCH DM-RS 链路。换言之,低 PAPR 序列仍可在 sequence type 1 与 sequence type 2 之间选择,但 RE 映射不是 configuration type 2。
2. 先判定:什么时候会有两种 low-PAPR 序列?
若 PUSCH 启用 transform precoding,TS 38.211 §6.4.1.1.1.2 规定其 DM-RS 从下列 low-PAPR 序列中产生:
具体分支如下。
分支 A:low-PAPR sequence type 2(§5.2.3)
同时满足以下条件时,DM-RS 采用 §5.2.3 的low-PAPR sequence type 2:
- 高层参数
dmrs-UplinkTransformPrecoding已配置; - PUSCH 采用 \pi/2-BPSK 调制;
- 本次 PUSCH 不是 Msg3;
- 本次传输不是由 common search space 中 DCI format 0_0 调度。
这时 c_{\mathrm{init}} 仍然参与相关伪随机序列的初始化;可由
pi2BPSK-ScramblingID0/1给出,未配置时按规范回退到小区物理层身份相关值。序列组号使用:
其中,是组跳频项;
的来源随上述高层配置及调度场景而定。组跳频与序列跳频分别影响组号 u 和组内序列号 v;规范不要求 UE 支持两者同时启用。
分支 B:low-PAPR sequence type 1(§5.2.2)
只要没有同时满足分支 A 的全部条件,DM-RS 走 §5.2.2 的low-PAPR sequence type 1,并且在这一 PUSCH DM-RS 分支中:
这句话非常关键:type 1 在通用定义中允许通过循环移位从基序列派生多个序列;但当前讨论的 transform-precoded PUSCH DM-RS 的“其他情形”被 §6.4.1.1.1.2 明确限定为
。
选择逻辑总结
可以把选择逻辑记为:
transform precoding enabled? └─ 是:δ = 1 ├─ dmrs-UplinkTransformPrecoding 已配置 │ 且 π/2-BPSK │ 且非 Msg3 │ 且非 common-SS DCI 0_0 调度 │ └─ low-PAPR sequence type 2(38.211 §5.2.3) └─ 其他所有情形 └─ low-PAPR sequence type 1(38.211 §5.2.2,α=0)3. 为什么“不同长度对应不同序列”必须单独处理?
对于 transform-precoded PUSCH DM-RS,,low-PAPR 序列长度为:
其中 NR 的,而在这条 PUSCH DM-RS 链中
。例如:
| PUSCH 带宽 | DM-RS low-PAPR 长度 M | |
|---|---|---|
| 1 RB | 1 | 6 |
| 2 RB | 2 | 12 |
| 4 RB | 4 | 24 |
| 5 RB | 5 | 30 |
| 6 RB | 6 | 36 |
| 20 RB | 20 | 120 |
这里的“不同长度对应不同序列”不是指把一条长序列简单截断:标准针对长度区间规定了不同的基序列构造。具体设计如下。
| M | 对应 PUSCH 分配 | type 1(TS 38.211 §5.2.2) | type 2(TS 38.211 §5.2.3) |
|---|---|---|---|
| 6 | 1 RB | 短序列:表 5.2.2.2-1 给出各组号的相位参数 \phi_i。 | 短序列:表 5.2.3.2-1 直接给出相位参数 \phi_i。 |
| 12 | 2 RB | 短序列:表 5.2.2.2-2 给出相位参数 \phi_i。 | 短序列:表 5.2.3.2-2 给出二进制序列 b_i,再作 \pi/2-BPSK。 |
| 18 | 3 RB | 短序列:表 5.2.2.2-3 给出相位参数 \phi_i。 | 短序列:表 5.2.3.2-3 给出 b_i,再作 \pi/2-BPSK。 |
| 24 | 4 RB | 短序列:表 5.2.2.2-4 给出相位参数 \phi_i。 | 短序列:表 5.2.3.2-4 给出 b_i,再作 \pi/2-BPSK。 |
| 30 | 5 RB | 仍属于 M<36 的短长度区间,走 §5.2.2.2 中为该长度给出的专门定义。 | 已进入 M\ge30 分支:伪随机序列 c_i 经 \pi/2-BPSK 后,按 §5.2.3.1 的 M 点变换构造基序列。 |
| 36,42,48,\ldots | 6,7,8,\ldots RB | 长序列:按 §5.2.2.1 选择满足条件的最大素数长度,再用根序列构造并做循环扩展。 | 继续使用 M\ge30 分支:c_i → \pi/2-BPSK → M 点变换。 |
例如,当带宽从 4 RB 增至 5 RB 时,长度从 M=24 变为 M=30:type 2 会从“表驱动的短序列”切换到“伪随机 \pi/2-BPSK 加 M 点变换”的通用构造;这不是多补 6 个样点,而是生成机制本身切换。同理,type 1 在 M=36 才从短序列定义切换到基于最大素数长度的根序列构造。
因此,写仿真或协议代码时,应当先计算 M,再进入 type 1/type 2 各自的长度分支。不能只实现“一个低 PAPR 公式”,然后对所有 RB 数复用;否则序列的相位集合、相关特性和低 PAPR 设计目标都会偏离规范。
4. 不同天线端口为什么对应不同 OCC 序列?
生成 r(n) 后,DM-RS 还没有完成端口区分。TS 38.211 §6.4.1.1.3 对 transform-precoded PUSCH 给出如下映射骨架:
其中:
- p 是 DM-RS antenna port;
是频域 OCC;
是时域 OCC;
是该端口/码分复用组对应的频域偏移;
是前文选出的 low-PAPR DM-RS 序列。
规范的表 6.4.1.1.3-1(configuration type 1)和表 6.4.1.1.3-2(configuration type 2)对每个可用端口列出 CDM group、\Delta、w_f 和 w_t。因此不同端口不仅可能占用不同的频域偏移,也会使用不同的 OCC 符号模式。例如,频域 OCC 可以出现 [+1,+1,+1,+1]、[+1,-1,+1,-1],也可以出现含 j 的复数正交码;时域 OCC 则可为 [+1,+1] 或 [+1,-1]。
这样做的意义是:即便若干端口在同一 DM-RS OFDM symbol、相同或部分重叠的频域结构中发送,gNB 仍可利用已知的 w_f、w_t 与 \Delta 将端口分离并分别做信道估计。
注意:端口可否被配置、可否并发使用以及最终的预编码矩阵,仍要以 TS 38.214 的调度与端口配置约束为准。这里的 OCC 表描述的是 DM-RS 端口正交化规则,不等价于“任意端口组合都可用于任意 transform-precoded PUSCH”。
5. 从配置到 RE 的正确实现顺序
推荐把实现和排障按下列顺序拆开:
- 读取 PUSCH 是否启用 transform precoding;
- 固定 delta=1,由 RB 数计算长度
;
- 判断是否满足 \pi/2-BPSK 的 type 2 条件;否则选择 type 1,并设置 alpha=0;
- 按所选 type 的长度分支生成
;
- 从 DM-RS port 与 DMRS configuration type 的对应表取出 w_f、w_t、\Delta;
- 按映射式生成
,再进入后续预编码和物理资源映射。
最常见的错误有三个:
- 把
DMRS configuration type 2误当作low-PAPR sequence type 2; - 忽略 RB 数变化导致的 M 变化,错误复用不同长度的基序列;
- 为所有 DM-RS port 使用同一组 w_f、w_t 和 \Delta,从而破坏端口正交性。
6. 小结
对 transform-precoded PUSCH DM-RS,可以用一句话记住:
先由高层配置、调制方式和调度场景,在 type 1/type 2 两个 low-PAPR 家族中选序列;再由 RB 数选长度构造;最后按端口表施加对应的频域 OCC、时域 OCC 和频域偏移。
这三个步骤缺一不可:序列家族保证波形与调制路径正确,长度分支保证短/长资源分配下的序列定义正确,OCC 与 \Delta 则保证端口可分离。
参考规范
- 3GPP TS 38.211,NR; Physical channels and modulation:§5.2.2、§5.2.3、§6.4.1.1.1.2、§6.4.1.1.3;
- 3GPP TS 38.214,NR; Physical layer procedures for data:PUSCH transform precoding、DM-RS port 和资源映射相关过程;
- 3GPP TS 38.331,NR; Radio Resource Control (RRC) protocol specification:
DMRS-UplinkConfig等高层配置。
本文面向理解和实现拆解。协议实现、一致性测试或仿真应以目标 Release 对应的正式规范版本及其表格为准。