下文为对3GPP TS38.212 Clause5.3部分的学习。
LDPC编码
针对每一个码块进行编码,给定一个码块,其比特序列输入为 c 0 , c 1 , c 2 , . . . , c K − 1 c_0,c_1,c_2,...,c_{K-1} c0,c1,c2,...,cK−1,码块分割部分见PDSCH物理层处理过程第三部分。信道编码后的输出可以表示为 d 0 , d 1 , d 2 , . . . , d N − 1 d_0,d_1,d_2,...,d_{N-1} d0,d1,d2,...,dN−1,其中对于LDPC基图1, N = 66 Z c N=66Z_c N=66Zc;对于LDPC基图2, N = 50 Z c N=50Z_c N=50Zc。 Z c Z_c Zc的确定见PDSCH物理层处理过程第三部分。
编码流程
-
根据 Z c Z_c Zc确定索引 i L S i_{LS} iLS(下表为 TS 38.212中表格5.3.2-1);
举例:若根据码块分割部分计算得到 Z c = 384 Z_c = 384 Zc=384,则根据表格得到 i L S i_{LS} iLS为1。
注:表格中每一行的值分别为2,3,5,7,9,11,13的倍数。
-
信息比特映射
for k = 2Zc : K-1 if c[k] != <NULL> d[k-2Zc] = c[k]; else c[k] = 0; d[k-2Zc] = <NULL>; end end
-
生成校验比特。校验比特长度为 N + 2 Z c − K N+2Z_c-K N+2Zc−K,可以表示为 w = [ w 0 , w 1 , w 2 , . . . , w N + 2 Z c − K − 1 ] T \boldsymbol {w} = [w_0,w_1,w_2,...,w_{N+2Z_c-K-1}]^{T} w=[w0,w1,w2,...,wN+2Zc−K−1]T,使得 H × [ c w ] = 0 , \boldsymbol{H}\times \begin{bmatrix}\boldsymbol{c}\\\boldsymbol{w}\end{bmatrix}=\boldsymbol{0}, H×[cw]=0,其中 c = [ c 0 , c 1 , . . . , c K − 1 ] T \boldsymbol{c}=[c_0,c_1,...,c_{K-1}]^{T} c=[c0,c1,...,cK−1]T; 0 \boldsymbol{0} 0为全为0的列向量。编码在GF(2)中进行。
注:GF(2)为素数 p = 2 p=2 p=2的有限域,只有0、1二元以及异或、与运算对于LDPC基图1,基矩阵 H B G \boldsymbol{H}_{BG} HBG 的大小为 46 × 68 46\times68 46×68 (行数*列数);对于LDPC基图2,基矩阵 H B G \boldsymbol{H}_{BG} HBG 的大小为 42 × 52 42\times52 42×52 。 H B G \boldsymbol{H}_{BG} HBG 中的元素在TS38.212的表格5.3.2-2(LDPC基图1)及表格5.3.2-3(LDPC基图2)中给出,即表格中包括的行列索引处的元素值为1,其余没有包括在表格内的行列索引处的元素值为0。
将 H B G \boldsymbol{H}_{BG} HBG中的每个元素按以下方式替换为 Z c × Z c Z_c\times Z_c Zc×Zc 矩阵从而得到矩阵 H H H:
-
H B G \boldsymbol{H}_{BG} HBG 中元素值为0的位置替换成大小为 Z c × Z c Z_c\times Z_c Zc×Zc元素值全为0的矩阵;
-
H B G \boldsymbol{H}_{BG} HBG 中元素值为1的位置替换成大小为 Z c × Z c Z_c\times Z_c Zc×Zc 的循环置换矩阵 I ( P i , j ) \boldsymbol{I}(P_{i,j}) I(Pi,j),其中 i i i 和 j j j 为 H B G \boldsymbol{H}_{BG} HBG 矩阵中元素的行列索引值, I ( P i , j ) \boldsymbol{I}(P_{i,j}) I(Pi,j)通过大小为 Z c × Z c Z_c\times Z_c Zc×Zc 的单位矩阵向右循环移位 P i , j P_{i,j} Pi,j 得到,其中 P i , j = m o d ( V i , j , Z c ) P_{i,j} = mod(V_{i,j},Z_c) Pi,j=mod(Vi,j,Zc), V i , j V_{i,j} Vi,j 的值在TS38.212的表格5.3.2-2(LDPC基图1)及表格5.3.2-3(LDPC基图2)中给出,根据对应的LDPC基图及 i L S i_{LS} iLS 找到 V i , j V_{i,j} Vi,j 的值。
下图为LDPC基图1的部分内容。
举例: H B G \boldsymbol{H}_{BG} HBG 中行索引为0,列索引为0的元素值为1,参照编码步骤1例子中 i L S = 1 i_{LS} = 1 iLS=1得到 V i , j V_{i,j} Vi,j 的值为307,且 Z c = 384 Z_c = 384 Zc=384,则 P i , j = m o d ( V i , j , Z c ) = 307 P_{i,j} = mod(V_{i,j},Z_c)=307 Pi,j=mod(Vi,j,Zc)=307,因此将该位置的元素替换为单位矩阵向右循环移位 P i , j = 307 P_{i,j} = 307 Pi,j=307的大小为 Z c × Z c Z_c\times Z_c Zc×Zc的矩阵; H B G \boldsymbol{H}_{BG} HBG 中行索引为0,列索引为4没有包含在表格中,表示该位置元素值为0,因此将该位置的元素替换为大小为 Z c × Z c Z_c\times Z_c Zc×Zc的全为0的矩阵。
-
-
校验比特映射
for k = K : N+2Zc-1 d[k-2Zc] = w[k-K]; end
LDPC编码实现
参考原文:https://zhuanlan.zhihu.com/p/455310565
5G标准下有两种分别对应于LDPC基图1和LDPC基图2的基矩阵,
其中,
I
I
I 区域表示该部分整体是一个单位阵,且对角线上元素1对应的子矩阵的循环移位系数全为0,
0
0
0 区域表示该区域在
H
H
H 矩阵中对应的部分全是零,两种基矩阵下
B
\boldsymbol B
B 区域均是
4
×
4
4\times4
4×4矩阵且对应的循环移位系数分布情况只有
4
4
4 种:
注:编码实现中矩阵中的元素,其中 1 表示单位矩阵向左移一位, 0 表示不偏移, -1 表示 0 矩阵。
由于生成校验位时需要满足
H
×
[
c
w
]
=
0
,
\boldsymbol{H}\times \begin{bmatrix}\boldsymbol{c}\\\boldsymbol{w}\end{bmatrix}=\boldsymbol{0},
H×[cw]=0,,且及由于LDPC基图1及LDPC基图2均具有特殊结构,即矩阵
H
\boldsymbol H
H可以表示为
H
=
[
A
B
0
C
D
I
]
,
\boldsymbol H = \begin{bmatrix}A&B&0\\C&D&I\end{bmatrix},
H=[ACBD0I],令
w
=
[
p
1
T
p
2
T
]
\boldsymbol{w}=\begin{bmatrix}\boldsymbol{p_1}^T\\\boldsymbol{p_2}^T\end{bmatrix}
w=[p1Tp2T],其中
p
1
\boldsymbol{p_1}
p1长度为4,
p
1
\boldsymbol{p_1}
p1长度为
N
+
2
Z
c
−
K
−
4
N+2Z_c-K-4
N+2Zc−K−4,可以得到
[
A
B
0
C
D
I
]
×
[
c
T
p
1
T
p
2
T
]
=
0
,
\begin{bmatrix}A&B&0\\C&D&I\end{bmatrix}\times\begin{bmatrix}\boldsymbol{c}^T\\\boldsymbol{p_1}^T\\\boldsymbol{p_2}^T\end{bmatrix}=0,
[ACBD0I]×
cTp1Tp2T
=0,
⟹
{
A
c
T
+
B
p
1
T
=
0
C
c
T
+
D
p
1
T
+
p
2
T
=
0
\Longrightarrow \left\{\begin{matrix}A\boldsymbol{c}^T+B\boldsymbol{p_1}^T=\boldsymbol0\\C\boldsymbol{c}^T+D\boldsymbol{p_1}^T+\boldsymbol{p_2}^T=\boldsymbol0\end{matrix}\right.
⟹{AcT+Bp1T=0CcT+Dp1T+p2T=0
⟹
{
p
1
T
=
B
−
1
A
c
T
p
2
T
=
C
c
T
+
D
p
1
T
\Longrightarrow \left\{\begin{matrix}\boldsymbol{p_1}^T=B^{-1}A\boldsymbol{c}^T\\\boldsymbol{p_2}^T=C\boldsymbol{c}^T+D\boldsymbol{p_1}^T\end{matrix}\right.
⟹{p1T=B−1AcTp2T=CcT+Dp1T
直接通过上述式子计算得到校验位
p
1
\boldsymbol{p1}
p1较难,其中涉及到矩阵求逆,这对软件或者硬件的消耗很大,为了尽量减小这种消耗,5G标准在
H
H
H矩阵的结构上做了特殊处理,基图中矩阵
B
B
B较小且内容简单,可以通过式子
A
c
T
+
B
p
1
T
=
0
A\boldsymbol{c}^T+B\boldsymbol{p1}^T =0
AcT+Bp1T=0计算(由于其中均为模二计算,则
A
c
T
=
B
p
1
T
A\boldsymbol{c}^T=B\boldsymbol{p_1}^T
AcT=Bp1T),通过该方法可以降低编码硬件实现的复杂度,实现快速编码。
以LDPC基图1为例,计算
p
1
T
\boldsymbol{p_1}^T
p1T方法如下(下图中的
s
\boldsymbol{s}
s为上述式子中的
c
\boldsymbol{c}
c):