5G-NR-PUSCH学习

弗洛伦萨 -- 意大利

1 PUSCH信道处理流程

1.1 TS 38.212对应处理过程

1.1.1 增加CRC校验

PUSCH数据$a_0,a_1,…,a_{A-1}$,首先判断传输块长度 A 的大小,来确定选择的 CRC方法:
$if$ $A > 3824$
​ $g_{CRC24(D)}$ \\ L = 24
$else$
​ $g_{CRC16(D)}$ \\ L = 16

随后,$a_0,a_1,…,a_{A-1}$ 通过 $g_{CRC24(D)}$ 或 $g_{CRC16(D)}$ 来生成校验位 $p_0,p_1,…,p_{L-1}$

最后,将校验位$p_0,p_1,…,p_{L-1}$,附在 $a_0,a_1,…,a_{A-1}$ 后,形成添加CRC的数据,$a_0,…,a_{A-1},p_0,…,p_{L-1}$。即$b_0,b_1,…,b_{B-1}$,其中 $B = A+L$

1.1.2 LDPC base graph selection

base graph 的选择有如下的规则:

1
2
3
4
A ≤ 292 ——————————————————————→ LDPC base graph 2
A ≤ 3824 and R ≤ 0.67 ————————→ LDPC base graph 2
R ≤ 0.25 —————————————————————→ LDPC base graph 2
else ————————————————————————→ LDPC base graph 1

即:
![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/p1-base graph选择.png)

可以近似理解为:
低码率/小TBS选择BG2;高码率/大TBS选择BG1。

1.1.3 Code block 码块分割和增加CRC

NR中LDPC编码,最大码块长度限定为:
LDPC base graph 1 $K_{cb} = 8448$ ;
LDPC base graph 2 $K_{cb} = 3840$;

因此TB块(含CRC)要根据LDPC码块长度分为多个码块。
待编码bit $b_0,b_1,…,b_{B-1}$

  • 当 $B\leq K_{cb}$, 码块个数 $C = 1$
  • 当$B> k_{cb}$,码块个数 $C = \lceil B/(K_{cb}-L)\rceil$,其中 $L = 24$ 为每个码块增加的CRC校验bit位数
    如下图所示:

以上每个码块内含有的比特数为 $K’ = B’/C$,即$B/C + L$,因为 $B’ = B + C\cdot L$

简单的说就是每个分组的的码块长度是 K’ 有三种情况:

  • 如果$B$ ≤ $K_{cb}$,$K’ = B$;
  • 如果$B$ > $K_{cb}$,除了最后一个可能取整多余出来分组外,$K’ = K_{cb}$;
  • 就上述最后一个分组,$K’ = B - (C-1)\cdot(K_{cb}-L) + L$;

码块长度确定后,要根据不同BG,生成编码矩阵,首先要确定编码矩阵的列数

  • 对于BG1,$K_b = 22$,即基础矩阵的最大系统列数22列
  • 对于BG2:
    $if\quad B>640\quad K_b = 10;$
    $elseif\quad B>560\quad K_b = 9;$
    $elseif\quad B>192\quad K_b = 8;$
    $else\quad K_b = 6$

**lifting size $Z_c$ **:满足 $K_b\cdot Z_c \leq K’$,且是表格中的最小值。设,BG1:$K = 22Z_c$;BG2:$K = 10Z_c$。

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t3-38.212 5.3.2-1.png)

通过上图 $Z_c$ 所处在的集合,可以确定 Set Index ($i_{LS}$)。

1.1.4 信道编码

编码前,$c_0,c_1,c_2,…,c_{K-1}$,K由上文给出。
LDPC编码后,$d_0,d_1,d_2,…,d_{N-1}$,BG1:$N = 66Z_c$;BG2:$N = 50Z_c$。
基矩阵

  • 对于BG1:$H_{BG}$ 为 46$\times$68 的矩阵
  • 对于BG2:$H_{BG}$ 为 42$\times$52 的矩阵

$H_{BG}$ 中的元素通过 Set Index ($i_{LS}$) 查表获得:

BG1:[TS 38.212 Table 5.3.2-2]
BG2:[TS 38.212 Table 5.3.2-3]

:通过查表中的前两列可知 $H_{BG}$中对应的行列数元素值为1,其中没有的行列数对应的值为0,全部设置为0。表中 $V_{i,j}$ 则代表其奇偶校验矩阵对应的元素数值。

再利用Set Index ($i_{LS}$) 确定$V_{i,j}$后,根据$P_{i,j} = mod(V_{i,j},Z_c)$,获得编码矩阵的循环移位值,根据 $H_{BG}$ 生成编码校验矩阵 H,生成方式再协议中的描述如下:

简单来说就是将$H_{BG}$中的每个元素用大小为 $Z_c\times Z_c$ 的矩阵代替。

  • 如果元素值为0,则用大小为 $Z_c\times Z_c$ 的零矩阵代替。
  • 如果元素值为1,则用大小为 $Z_c\times Z_c$ 的单位矩阵经过循环移位后的矩阵 $I(P_{i,j})$ 来替换。其中循环移位值由之前的$P_{i,j} = mod(V_{i,j},Z_c)$ 给出。

总结,若:
待编码的信息比特,c $=[ c_0,c_1,c_2,…,c_{K-1}]^T$
其校验比特, w $=[w_0,w_1,…,w_{N+2Z_c-K-1}]^T$,可以得到 $H\times \left[ \begin{matrix} c\w \end{matrix}\right]=0$

疑问:用来生成**[c|W]的生成矩阵到底是什么? 按理来说使用信息比特与生成矩阵相乘,产生信息比特和校验比特 [c|W],这个生成矩阵到底是上面的那个$H_{BG}$**又不是啊,H又是校验矩阵。

1.1.5 速率匹配

完成LDPC编码后,得到 $d_0,d_1,d_2,…,d_{N-1}$。需要对其进行 Rate matching 速率适配,包括

  • Bit selection
  • Bit interleaving

1.1.6 码块串联

将速率匹配完成后的数据码块按序重组。

1.2 TS 38.211对应处理过程

1.2.1 加扰

对于单码字传输时,$q = 0$。[TS 38.211 7.3.1.1],每一个码字对应的原始数据 $b{(q)}(0),…,b{(q)}(M_{bit}^{(q)}-1)$ ,经过加扰处理生成加扰后的数据为 $\widetilde b^{(q)}(0),…,\widetilde b{(q)}(M_{bit}{(q)}-1)$ 。加扰处理如下伪代码所示:

$while$ $i$ < $M_{bit}^{(q)}$

​ $if$ $b^{(q)}(i) = x$ // UCI placeholder bits

​ $\widetilde b^{(q)}(i) = 1$

$else$
$if$ $b^{(q)}(i)=y$ // UCI placeholder bits

​ $\widetilde b^{(q)}(i) = \widetilde b^{(q)}(i-1)$

​ $else$

​ $\widetilde b^{(q)}(i) = (b^{(q)}(i) + c^{(q)}(i))mod2$

​ $end$ $if$

​ $end$ $if$

​ $i=i+1$

$end$ $ while$

其中加扰序列$c^{(q)}(i)$是一个伪随机序列,由[TS 38.211 5.2.1]给出,加扰序列的初始为:
$$
C_{init} = n_{RNTI}\cdot2^{15}+n_{ID}
$$

其中

  • $n_{RNTI}$ = C-RNTI or CS-RNTI , 并且在公共搜索空间中不使用DCI forrmat 0_0调度传输
  • $n_{ID}\in {0,1,…,1023}$ , 其值等于dataScramblingIdentityPUSCH(如果配置),否则 $n_{ID} = N_{ID}^{cell}$

1.2.2 调制

每一个码字加扰后的比特块 $\widetilde b^{(q)}(0),…,\widetilde b{(q)}(M_{bit}{(q)}-1)$ 采用下表中的一种调制方式进行调制,得到一个复值调制符号块$d{(q)}(0),…,d{(q)}(M_{symb}^{(q)}-1)$。[TS 38.211 6.3.1.2-1]

Transform precoding disabled
Transform precoding enabled
Modulation scheme
Modulation order
Modulation scheme
Modulation order
π/2-BPSK
1
QPSK
2
QPSK
2
16QAM
4
16QAM
4
64QAM
6
64QAM
6
256QAM
8
256QAM
8

1.2.3 层映射

对于单个码字$q = 0$ , 每一个码字生成的调制信号 $d{(q)}(0),…,d{(q)}(M_{symb}^{(q)}-1)$ 根据表[TS 38.211 7.3.1.3-1] 映射到4层$x(i)=[x^0{i} \cdots x{v-1}(i)]T$,$i = 0,1,…,M_{symb}^{layer}-1$,具体的矩阵形式如下所示 , $M_{symb}^{layer}$ 表示每层调制符号的数量,其中$v$表示层数。,需要注意的是PUSCH最多映射4层,PDSCH最多8层。

$$
x(i)=[x^0{i} \cdots x{v-1}(i)]T\quad i = 0,1,…,M_{symb}^{layer}-1\=\left[ \begin{matrix} x{(0)}(0)&x{(0)}(1)&\cdots&x{(0)}(M_{sysmb}{layer}-1)\x{(1)}(0)&x{(1)}(1)&\cdots&x{(1)}(M_{sysmb}{layer}-1)\ \vdots&\vdots&\ddots&\vdots \x{(p-1)}(0)&x{(p-1)}(1)&\cdots&x{(p-1)}(M_{sysmb}{layer}-1)\end{matrix} \right]
$$

层数码字数码字到层映射
$i = 0,1,…,M_{symb}^{layer}-1$
11$x^{(0)}(i) = d^{(0)}(i)$ $M_{symb}^{layer} = M_{symb}^{(0)}$
21$x^{(0)}(i) = d^{(0)}(2i)$
$x^{(1)}(i) = d^{(0)}(2i+1)$ $M_{symb}^{layer} = M_{symb}^{(0)}/2$
31$x^{(0)}(i) = d^{(0)}(3i)$
$x^{(1)}(i) = d^{(0)}(3i+1)$ $M_{symb}^{layer} = M_{symb}^{(0)}/3$
$x^{(2)}(i) = d^{(0)}(3i+2)$
41$x^{(0)}(i) = d^{(0)}(4i)$
$x^{(1)}(i) = d^{(0)}(4i+1)$
$x^{(2)}(i) = d^{(0)}(4i+2)$ $M_{symb}^{layer} = M_{symb}{(0)}/4$<br/>$x{(3)}(i) = d^{(0)}(4i+3)$
52$x^{(0)}(i) = d^{(0)}(2i)$
$x^{(1)}(i) = d^{(0)}(2i+1)$
$x^{(2)}(i) = d^{(1)}(3i)$ $M_{symb}^{layer} = M_{symb}^{(0)}/2 = M_{symb}{(1)}/3$<br/>$x{(3)}(i) = d{(1)}(3i+1)$<br/>$x{(4)}(i) = d^{(1)}(3i+2)$
62$x^{(0)}(i) = d^{(0)}(3i)$
$x^{(1)}(i) = d^{(0)}(3i+1)$
$x^{(2)}(i) = d{(0)}(3i+2)$<br/>$x{(3)}(i) = d^{(1)}(3i)$ $M_{symb}^{layer} = M_{symb}^{(0)}/3 = M_{symb}{(1)}/3$<br/>$x{(4)}(i) = d{(1)}(3i+1)$<br/>$x{(5)}(i) = d^{(1)}(3i+2)$
72$x^{(0)}(i) = d^{(0)}(3i)$
$x^{(1)}(i) = d^{(0)}(3i+1)$
$x^{(2)}(i) = d{(0)}(3i+2)$<br/>$x{(3)}(i) = d^{(1)}(4i)$ $M_{symb}^{layer} = M_{symb}^{(0)}/3 = M_{symb}{(1)}/4$<br/>$x{(4)}(i) = d{(1)}(4i+1)$<br/>$x{(5)}(i) = d{(1)}(4i+2)$<br/>$x{(6)}(i)=d^{(1)}(4i+3)$
82$x^{(0)}(i) = d^{(0)}(4i)$
$x^{(1)}(i) = d^{(0)}(4i+1)$
$x^{(2)}(i) = d{(0)}(4i+2)$<br/>$x{(3)}(i)=d{(0)}(4i+3)$<br/>$x{(4)}(i) = d^{(1)}(4i)$ $M_{symb}^{layer} = M_{symb}^{(0)}/4 = M_{symb}{(1)}/4$<br/>$x{(5)}(i) = d{(1)}(4i+1)$<br/>$x{(6)}(i) = d{(1)}(4i+2)$<br/>$x{(7)}(i)=d^{(1)}(4i+3)$

1.2.4 变换预编码

为了降低PAPR峰均比,上行PUSCH可以支持Transform Precoding , 即采用DFT-s-OFDM的形式,通过RRC层参数和DCI指示。

仅当PUSCH-Config -> transformprecoder 配置 或者RACH-configCommon -> msg3-transformPrecoding 配置时使用。

  • 如果变换预编码不可用,对于层$\lambda = 0,1,…,v-1$,有 $y^{(\lambda)}(i) = x^{(\lambda)}(i)$。
  • 如果变换预编码可用,$v = 1$ , 且复值符号块$x{(0)}(0),…,x{(0)}(M_{symb}^{layer}-1)$ 被分为$M_{symb}{layer}/M_{sc}{PUSCH}$个集合,每个集合对应于一个OFDM符号。变换预编码根据如下公式进行:
    $$
    y^{(0)}(l \cdot M_{sc}{PUSCH}+k)=\frac{1}{\sqrt{M_{sc}{PUSCH}}}\sum_{i=0}{M_{sc}{PUSCH}-1}\widetilde x^{(0)}(l \cdot M_{sc}{PUSCH}+i)e{-j\frac{2\pi ik}{M_{sc}^{PUSCH}}}\k =0,1,…,M_{sc}{PUSCH}-1\l=0,1,…,M_{symb}{layer}/M_{sc}^{PUSCH}-1
    $$

得到复值符号块 $y{(0)}(0),…,y{(0)}(M_{symb}^{layer}-1)$ 。$M_{sc}^{PUSCH} = M_{RB}^{PUSCH}\cdot M_{sc}{RB}$,其中$M_{RB}{PUSCH}$ 就是RB而言的带宽,并且满足

$$
M_{RB}^{PUSCH} = 2^{\alpha_2}\cdot 3^{\alpha_3}\cdot 5^{\alpha_5}\leq N_{RB}^{UL}
$$
其中 $\alpha_2,\alpha_3,\alpha_5$ 是非负整数集合。

1.2.5 预编码

根据如下公式对向量块$[y{(0)}(i),…,y{(v-1)}(i)]^{T},i = 0,1,…,M_{symb}^{layer}-1$ 进行预编码处理:
$$
\left[\begin{matrix} z^{(0)}(i)\ \vdots\ z^{(p-1)}(i) \end{matrix} \right]=W\left[\begin{matrix} y^{(0)}(i)\ \vdots \ y^{(p-1)}(i) \end{matrix} \right]
$$

其中 $i = 0,1,…,M_{symb}^{ap} -1, M_{symb}^{ap} =M_{symb}^{layer}$ 。

RRC 参数如下:

1
txConfig				ENUMERATED {codebook,nonCodebook}

对于基于非码本的传输,预编码矩阵 W 为单位矩阵。
对于基于码本的传输,预编码矩阵 W

  • When number of layer = 1, number of antenna port = 1,W = 1。

  • When number of layer $\geq$ 1 and number of antenna port $\geq$ 2 ,

    根据DCI 0-1中的 “Precoding information and number of layers” 确定预编码矩阵W(参考如下表格):

[TS 38.211 Table 6.3.1.5-1]
[TS 38.211 Table 6.3.1.5-2]
[TS 38.211 Table 6.3.1.5-3]
[TS 38.211 Table 6.3.1.5-4]
[TS 38.211 Table 6.3.1.5-5]
[TS 38.211 Table 6.3.1.5-6]
[TS 38.211 Table 6.3.1.5-7]

按照层数,天线端口数,是否配置变换预编码,三者的参数,选取预编码矩阵,总结成如下表格:

Number of LayersNumber of AntennaTransform PrecodingPrecoding Matrix
12211 Table 6.3.1.5-1
14enabled211 Table 6.3.1.5-2
14disabled211 Table 6.3.1.5-3
22disabled211 Table 6.3.1.5-4
24disabled211 Table 6.3.1.5-5
34disabled211 Table 6.3.1.5-6
44disabled211 Table 6.3.1.5-7

1.2.6 映射到VRB

对于用于传输PUSCH的每个天线端口,复值符号块 $z{§}(0),…,z{§}(M_{symb}^{ap}-1)$ 应与幅度缩放因子$\beta_{PUSCH}$相乘,以满足[5,TS 38.213]中规定的发射功率。
对于每个天线步骤,都会创建一个虚拟资源网格。在资源网格内,从RE的最低频率到较高频率的来自来填充PUSCH数据到每个RE中。一旦它以分配的PUSCH资源块的最高频率到达RE,则移至下一个OFDM符号的最低频率的RE。

1.2.7 映射到PRB

按照之前的协议:有交织和非交织两种模式,和PDSCH一样。参考PDSCH映射规则。
按照现在最新版本的协议,只有非交织的模式。如下所示:


2 PUSCH DMRS

2.1 序列生成

有两种条件下DMRS序列生成方式,Transform Precoding disabled,Transform Precoding enabled。

2.1.1 Transform Precoding disabled

这种情况的生成方式是与PDSCH DMRS一样的:
PUSCH DMRS序列有如下公式生成:
$$
r(n) = \frac{1}{\sqrt{2}}(1-2\cdot c(2n))+j\frac{1}{\sqrt{2}}(1-2\cdot c(2n+1))
$$
加扰序列采用31阶Gold序列生成,加扰序列的初始序列$c_{init}$如下式所示:
$$
c_{init} = (2{17}(N_{symb}{slot}n_{s,f}{\mu}+l+1)(2N_{ID}{\overline n_{SCID}^{\overline \lambda}}+1)+2^{17}\lfloor\frac{\overline \lambda}{2} \rfloor+2N_{ID}^{\overline n_{SCID}^{\overline \lambda}}+\overline n_{SCID}^{\overline \lambda})mod2^{31}
$$
其中: $l$ 为时隙中的符号索引, $n_{s,f}$ 为时隙索引, $N_{symb}^{slot}$ 为一个时隙内的符号数量。

  • $N_{ID}0,N_{ID}1\in{0,1,…,65535}$:分别由高层参数 scramblingID0scramblingID1 给出 (如果配置的话,且PUSCH由 DCI format 0_1,0_2调度,或者是具有配置的授权的PUSCH传输);
  • $N_{ID}^0\in{0,1,…,65535}$:由 DMRS-UplinkConfig -> scramblingID0 给出(如果配置的话,且PUSCH由被 C-RNTI,MSC-C-RNTI,或者 CS-RNTI 加扰的 DCI format 0_0 调度);
  • $N_{ID}0,N_{ID}1\in{0,1,…,65535}$:对于每个msgA PUSCH 配置,分别由高层参数 msgA-DMRS-Configuration -> msgA-scramblingID0 , msgA-scramblingID1给出(如果配置的话,且PUSCH传输是由Type-2随机接入过程触发的);
  • $N_{ID}^{\overline n_{SCID}^{\overline \lambda}}=N_{ID}^{cell}$ otherwise;
  • $\overline n_{SCID}^{\overline \lambda}$ and $\overline \lambda$ 由高层参数 DMRS-UplinkConfig -> dmrs-Uplink-r16给出,其中 $\lambda$ 是CDM group:
    $$
    N_{ID}^{\overline n_{SCID}^{\overline \lambda}}=\begin{cases}n_{SCID}\quad\quad\quad \lambda=0\quad or\quad\lambda = 2\1-n_{SCID}\quad\quad \lambda=1 \end{cases}\\overline \lambda = \lambda
    $$
    否则
    $$
    N_{ID}^{\overline n_{SCID}^{\overline \lambda}}=n_{SCID}\ \overline \lambda = 0
    $$
    其中 $n_{SCID}\in {0,1}$:
  • 如果使用DCI format 0_1 或者 0_2,则在与PUSCH传输相关的DCI中使用 DM-RS初始化字段(如果存在)
  • 由高层参数 dmrs-SeqInitialization 给出(如果存在,且是具有配置的授权的Type 1 PUSCH传输,或者PUSCH传输是由Type-2随机接入过程触发的);
  • 否则 $n_{SCID} = 0$;

2.1.2 Transform Precoding enabled

生成公式如下:
$$
r(n)=r_{u,v}{(\alpha,\delta)}(n)\n=0,1,…,M_{sc}{PUSCH}/2^{\delta}-1
$$
其中 $r_{u,v}^{(\alpha,\delta)}(n)$ 中 $\delta = 1,\alpha =0$

  • 如果高层参数 dmrsUplinkTransformPrecoding-r16 已配置,PUSCH使用 $\pi/3-BPSK$ 调制 ,且此次PUSCH传输不是 msg3,并且这次传输在CCS中并没有使用 DCI format 0_0 调度,$r_{u,v}^{(\alpha,\delta)}(n)$ 为低均峰比序列,见[TS 38.211 5.2.2~3]。

序列组 $u = (f_{gh}+n_{ID}{RS})mod30$,其中$n_{ID}{RS}$由下面给出:

  • $n_{ID}{RS}=n_{ID}{PUSCH}$,如果 $n_{ID}^{PUSCH}$ 由高层参数DMRS-UplinkConfig -> nPUSCH-Identity 配置,而高层参数dmrsUplinkTransformPrecoding-r16 为配置,而且PUSCH既不是由RAR UL调度,也不是由利用TC-RNTI加扰的DCI format 0_0 调度的;

  • $n_{ID}{RS}=n_{ID}{PUSCH}$,如果 $n_{ID}^{PUSCH}$ 由高层参数dmrs-UplinkTransformPrecoding-r16配置,PUSCH 使用 $\pi/2-BPSK$ 调制,且此次PUSCH传输不是 msg3,并且这次传输在 CCS中并没有使用 DCI format 0_0 调度。

  • $n_{ID}^{RS} = N_{ID}^{cell}$ otherwise;

其中 $f_{gh}$ 和 序列数 $v$ 由下面给出:

  • 如果既没有组跳变也没有序列跳变
    $$
    f_{gh}=0\v-0
    $$
  • 如果配置了组跳变,未配置序列跳变
    $$
    f_{gh} = (\sum_{m = 0}{7}2mc(8(N_{symb}{slot}n_{s,f}{\mu}+l)+m))mod30\v=0\c_{init}=\lfloor n_{ID}^{RS}/30 \rfloor
    $$
  • 如果序列跳变配置,组跳变未配置
    $$
    f_{gs} = 0\v=\begin{cases}v = c(N_{symb}{slot}n_{s,f}{\mu}+l) \quad if\quad M_{ZC}\geq 6N_{sc}^{RB}\0\quad\quad\quad\quad\quad\quad\quad\quad\quad otherwise \end{cases}\c_{init}=n_{ID}^{RS}
    $$

跳变模式(hopping mode)由高层参数控制:

  • 如果PUSCH传输是由RAR UL 调度的,或者是由由TC-RNTI 加扰的 DCI format 0_0 调度的,此时序列跳变禁用,组跳变禁用启用于否由高层参数 groupHoppingEnabledTransformPrecoding 决定;
  • 其他传输时,序列跳变和组跳变的禁用启用与否分别由高层参数 sequenceHopping , sequenceGroupHopping 决定(如果这些参数配置的话,否则将采用和Msg3一样的hopping mode)。

UE 是并不期待同时处理序列跳变和组跳变的。

2.2 资源映射

序列 $r(m)$ 被 映射中间值为 $\widetilde \alpha_{k,l}^{(\widetilde p_j,\mu)}$ ,根据如下:

  • ①if transform precoding is not enable,
    $$
    \widetilde \alpha_{k,l}^{(\widetilde p_j,\mu)}=w_f(k’)w_t(l’)r(2n+k’)\k = \begin{cases}4n+2k’+\Delta \quad \quad Configuration\quad type\quad1\6n+k’+\Delta\quad \quad Configuration\quad type\quad 2 \end{cases}\k’=0,1\l=\overline{l}+l’\n = 0,1,…\j=0,1,…,v-1
    $$
  • ②if transform precoding is enable
    $$
    \widetilde \alpha_{k,l}^{(\widetilde p_j,\mu)}=w_f(k’)w_t(l’)r(2n+k’)\k=4n+2k’+\Delta\k’=0,1\l=\overline l+l’\n=0,1,…
    $$
    中间值 $\widetilde \alpha_{k,l}^{(\widetilde p_j,\mu)}$ 会经过预编码矩阵 W 和缩放因子 $\beta_{PUSCH}^{DMRS}$ , 最终映射为 $\alpha_{k,l}^{( p_j,\mu)}$,如下所示:
    $$
    \left[ \begin{matrix}\alpha_{k,l}^{( p_0,\mu)}\ \vdots\\alpha_{k,l}^{( p_{\rho-1},\mu)} \end{matrix}\right]=\beta_{PUSCH}^{DMRS}W\left[ \begin{matrix}\widetilde \alpha_{k,l}^{( \widetilde p_0,\mu)}\ \vdots\ \widetilde \alpha_{k,l}^{(\widetilde p_{\rho-1},\mu)} \end{matrix} \right]
    $$

2.2.1 频域索引

由以上可知

  • ① 情形时,DMRS的映射情况和PUSCH DMRS 一致
  • ② 情形时,其频域映射规则只有Configuration Type 1

需要注意的是,对于两种情况的参考点

  • ①情形时,其参考点是PUSCH RB#0
  • ②情形时,其参考点是CRB#0

2.2.2 时域索引

DMRS的符号位置取决于PDSCH的mapping type,分为mapping type A 和 mapping type B,如下表所示:

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t2-38.214 6.1.2.1-1.png)

PUSCH 与 PDSCH 的差别除了初始符号位置和符号长度的些许区别外,还在于PUSCH 还会配置 frequency intra-slot hopping 方式,是否hopping 的两种方式下DMRS符号会有些差异。所以DMRS也会略有不同。
但是PUSCH和PDSC和的DMRS类似,PUSCH DMRS也支持:

  • Front-loaded DM-RS:支持单前置,双前置
  • Additional DM-RS:支持单符号和双符号

两种hopping下的DMRS:

  • 对于不跳频:其时域映射和PDSCH DMRS 机制一样,参考表[TS 38.211 6.4.1.1.3-3~4]

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t9-211 6.4.1.1.3-3.png)


![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t10-211 6.4.1.1.3-4.png)

  • 对于跳频:其时域映射,参考表[TS 38.211 6.4.1.1.3-6],注意此时仅支持单前置+additional DMRS。

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t13-211 6.4.1.1.3-6.png)

2.3 天线端口问题

PUSCH DMRS Type 1 和 Type 2 多天线端口CDM group 定义和PDSCH DMRS相同,仅仅是天线端口的编号差异。参考表格[TS 38.211 6.1.1.3-1,2,5]如下:

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t7-211 6.4.1.1.3-1.png)

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t8-211 6.4.1.1.3-2.png)

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t14-211 6.4.1.1.3-5.png)

  • type 1,single symbol情况下,最多支持4个端口,端口0,1和2,3分别在不同的CDM group,每个CDM group内,比如端口0和1,又通过频域的OCC来实现正交,从而实现4个端口的正交。
  • type 1,double symbol情况下,最多支持8个端口,除了频域OCC外,还可以时域OCC来实现正交,所以可以支持更多的端口。
  • type 2,single symbol情况下,最多支持6个端口,共三个CDM group,每个group内又通过频域OCC实现正交。
  • type 2,double symbol情况下,最多支持12个端口,与类型1双符号情况同理,除了频域OCC外,还可以时域OCC,从而支持更多的端口。

3 PUSCH PTRS

3.1 序列生成

有两种条件下PTRS序列生成方式,Transform Precoding disabled,Transform Precoding enabled。

3.1.1 Transform Precoding disabled

如果未使用变换预编码,层j上子载波k上的PTRS由下式给出:
$$
r^{(\widetilde p_j)}(m) = \begin{cases}r(m)\quad\quad if\quad j=j’||j = j’'\0\quad\quad\quad\quad otherwise \end{cases}
$$

  • 序列$r(m)$与对应的PUSCH的DMRS相同
  • 不论是否跳频,PTRS的时域位置都在所在子载波的第一个DMRS符号上。

3.1.2 Transform Precoding enabled

如果未使用变换预编码,PTRS再DFT之前插入,此时PTRS映射位置m取决于PTRS group数量和每个group内sample的数量以及PUSCH总共所占的子载波的数量。序列生成公式如下所示:
$$
r_{m}(m’)=w(k’)\frac{e{j\frac{\pi}{2}(mmod2)}}{\sqrt{2}}[(1-2c(m’))+j(1-2c(m’))]\m’=N_{samp}{group}s’+k’\s’=0,1,…N_{group}^{PT-RS}-1\k’ = 0,1,N_{samp}{group}-1\c_{init}=(2{17}(N_{symb}{slot}n_{s,f}{\mu}+l+1)(2N_{ID}+1)+2N_{ID})mod2^{31}
$$
$w(i)$ 由下表给出:

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t4-211 6.4.1.2.1.2-1.png)

3.2 资源映射

同样对应着有两种条件下PTRS序列映射方式,Transform Precoding disabled,Transform Precoding enabled。

3.2.1 Transform Precoding disabled

UE只在高层信令指示PTRS传输下才传输,且只在PUSCH内传输PTRS,映射到RE的公式如下
$$
\left[ \begin{matrix}a_{k.l}^{(p_0,\mu)}\ \vdots\ a_{k.l}^{(p_{\rho-1},\mu)} \end{matrix} \right]=\beta_{PT-RS}W\left[ \begin{matrix}r^{(\widetilde p_0)}(2n+k’)\ \vdots\ r^{(\widetilde p_v-1{})}(2n+k’) \end{matrix} \right]\k=\begin{cases}4n+2k’+\Delta\quad\quad configuration\quad type1\6n+k’+\Delta\quad\quad\quad configuration\quad type2 \end{cases}
$$
其中:

  • $l$ 是PUSCH所占OFDM符号数;
  • RE未被DMRS占用;
  • $k’$ and $\Delta$ 对应 $\widetilde p_0,…,\widetilde p_{v-1}$
  • W是预编码矩阵
  • $\beta_{PT-RS}$ 是功率因子

3.2.1.1 时域索引

确定时域索引$l$的方式如下:

1
2
3
4
5
6
7
8
9
1. set i=0 and l_{ref} = 0 
2. if any symbol in the interval max(l_{ref}+(i-1)L_{PT-RS} + 1,l_{ref}),…,l_{ref} + iL_{PT-RS} overlaps with a symbol used for DM-RS according to clause 6.4.1.1.3
- set i=1
- set l_{ref} to the symbol index of the DM-RS symbol in case of a single-symbol DM-RS or to the symbol index of the second DM-RS symbol in case of a double-symbol DM-RS
- repeat from step 2 as long as l_{ref} +iL_{PT-RS} is inside the PUSCH allocation
3. add l_{ref} + iL_{PT-RS} to the set of time indices for PT-RS
4. increment i by one
5. repeat from step 2 above as long as l_{ref} +iL_{PT-RS} is inside the PUSCH allocation
where L_{PT-RS}∈{1,2,4} is defined in Table 6.2.3.1-1 of [6,TS 38.214].

以上步骤简单描述如下:
$L_{PT-RS}$ 表示PTRS再时域上的密度,也就是每 $L_{PT-RS}$ 个符号有一个PTRS符号。配置方式为:从PUSCH开始调度的位置开始,直到PUSCH结束,每个L符号配置PTRS,如果碰到了DMRS,则重新开始计数。例如,PUSCH在一个slot内调度,即从$i = 0$ 开始,$i = 13$ 结束,$L_{PT-RS} = 4$,DMRS在 $l = 2$ 的符号上,则PTRS时域配置情形如下图所示:

3.2.1.2 频域索引

(与PDSCH PTRS 几乎一样)
首先,假定分配给PUSCH的RB为从0到$N_{RB}-1$,那么分配给PUSCH的子载波范围就是0-$N_{sc}^{RB}N_{RB}-1$。最终PTRS频域索引$k$,由下面公式得到:
$$
k=k_{ref}{RE}+(iK_{PT-RS}+k_{ref}{RB})N_{sc}{RB}\k_{ref}{RB}= \begin{cases}n_{RNTI}modK_{PT-RS} \quad \quad \quad if N_{RB}modK_{PT-RS} = 0 \n_{RNTI}mod(N_{RB}modK_{PT-RS})\quad \quad otherwise\end{cases}
$$

$k_{ref}^{RE}$ 由下表获得[TS 38.211-Table 6.4.1.2.2-1]:

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t5-211 6.4.1.2.2.1-1.png)

由上可知,$K_{PT-RS}$为相邻 PTRS之间间隔的RB数,即相邻 PTRS之间相差$K_{PT-RS}\cdot N_{sc}^{RB}$ 个子载波,第一个PTRS 子载波定位是 $k_{ref}{RE}+(0K_{PT-RS}+k_{ref}{RB})N_{sc}^{RB}$ 。大概的图样如下图所示:

3.2.2 Transform Precoding enabled

此种情况PTRS是在DFT之前插入,插入的位置m与三个参数有关:PTRS的group数量,每个group内的sample数量和PUSCH所占子载波的数量,不同情况下的具体公式在下表中给出:

![](D:/blog/source/_posts/5G协议/5G-NR-PUSCH学习/t6-211 6.4.1.2.2.2-1.png)

参考目录
微信公众号:春天工作室,5G菜鸟成长日记
网页:https://mp.weixin.qq.com/s/83D25ABb2YURSbLQ3fOYsg
网页:https://mp.weixin.qq.com/s/SZwf4bJEzWa8RfJDiCC-CA
网页:http://www.sharetechnote.com/html/5G/5G_PUSCH.html
网页:http://www.sharetechnote.com/html/5G/5G_PUSCH_TxMode.html
博客:https://blog.csdn.net/kakamilan/article/details/104759214/ (DMRS)
博客:https://blog.csdn.net/m0_45416816/article/details/105097130 (PTRS)



----------- 本文结束 -----------




0%