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 | A ≤ 292 ——————————————————————→ LDPC base graph 2 |
即:
![](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]
¶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$ |
---|---|---|
1 | 1 | $x^{(0)}(i) = d^{(0)}(i)$ $M_{symb}^{layer} = M_{symb}^{(0)}$ |
2 | 1 | $x^{(0)}(i) = d^{(0)}(2i)$ $x^{(1)}(i) = d^{(0)}(2i+1)$ $M_{symb}^{layer} = M_{symb}^{(0)}/2$ |
3 | 1 | $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)$ |
4 | 1 | $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)$ |
5 | 2 | $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)$ |
6 | 2 | $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)$ |
7 | 2 | $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)$ |
8 | 2 | $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 Layers | Number of Antenna | Transform Precoding | Precoding Matrix |
---|---|---|---|
1 | 2 | 211 Table 6.3.1.5-1 | |
1 | 4 | enabled | 211 Table 6.3.1.5-2 |
1 | 4 | disabled | 211 Table 6.3.1.5-3 |
2 | 2 | disabled | 211 Table 6.3.1.5-4 |
2 | 4 | disabled | 211 Table 6.3.1.5-5 |
3 | 4 | disabled | 211 Table 6.3.1.5-6 |
4 | 4 | disabled | 211 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}$:分别由高层参数 scramblingID0 和 scramblingID1 给出 (如果配置的话,且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 | 1. set i=0 and l_{ref} = 0 |
以上步骤简单描述如下:
$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)