PDSCH物理层处理过程(三):码块划分(基于LDPC码)和增加CRC
参考资料:3GPP TS38.212 5.2.2
背景
在NR中,由于传输块的尺寸可能非常大,则需要通过码块分割(Code-Block Segmentation)的方式把传输块分割成多个尺寸相等的码块(Code Block, CB)。
分割
- 对输入的bit分码块,输入的bit表示为
b
0
,
b
1
,
b
2
,
.
.
.
,
b
B
−
1
b_0,b_1,b_2,...,b_{B-1}
b0,b1,b2,...,bB−1,
B
B
B为传输块的尺寸(包括CRC)。
注:此处输入的bit为输入bit附加了CRC后的结果 - 判断 B B B和 K c b K_{cb} Kcb的大小,当 B B B大于 K c b K_{cb} Kcb时,需要分多个码块,且在每个码块后需要增加长度 L = 24 L=24 L=24的CRC,其中, K c b K_{cb} Kcb为码块能够承载的最大bit数。
1. 确定码块可以承载的最大bit数
-
K
c
b
K_{cb}
Kcb的大小与LDPC基图有关:
- LDPC基图1的最大码块大小为 K c b = 8448 K_{cb} = 8448 Kcb=8448。
- LDPC基图2的最大码块大小为 K c b = 3840 K_{cb} = 3840 Kcb=3840。
2. 确定码块的数量(Total number)
- 若 B ≤ K c b B \le K_{cb} B≤Kcb,则 L = 0 L=0 L=0,码块数 C = 1 C=1 C=1, B ′ = B B' = B B′=B。
- 若
B
>
K
c
b
B \gt K_{cb}
B>Kcb,则
L
=
24
L=24
L=24,码块数
C
=
⌈
B
/
(
K
c
b
−
L
)
⌉
C = \lceil B/(K_{cb}-L) \rceil
C=⌈B/(Kcb−L)⌉,
B
′
=
B
+
C
⋅
L
B' = B+ C \cdot L
B′=B+C⋅L。
注:每个码块中包含 K c b − L K_{cb}-L Kcb−L个数据比特以及 L L L个CRC。 - B ′ B' B′ 代表码块分割之后,每个码块加上CRC后,数据的总长度。
3. 确定码块中的bit数
- 码块分割后的bit输出表示为 c r 0 , c r 1 , c r 2 , . . . , c ( K r − 1 ) c_{r0},c_{r1},c_{r2},...,c_{(K_r-1)} cr0,cr1,cr2,...,c(Kr−1),其中 0 ≤ r < C 0 \le r \lt C 0≤r<C为第 r r r个码块, K r = K K_r = K Kr=K为第 r r r个码块的bit数。
- 码块的大小
K
K
K 计算方法如下:
- 已知
K
′
=
B
′
/
C
K' = B'/C
K′=B′/C
注: K ′ K' K′ 为数据bit及CRC两部分 - 确定基图中
K
b
K_b
Kb的大小
- 对于基图1, K b = 22 K_b = 22 Kb=22
- 对于基图2,
- 如果 B > 640 B \gt 640 B>640,则 K b = 10 K_b = 10 Kb=10;
- 如果 B > 560 B \gt 560 B>560,则 K b = 9 K_b = 9 Kb=9;
- 如果 B > 192 B \gt 192 B>192,则 K b = 8 K_b = 8 Kb=8;
- B B B为其他值时, K b = 6 K_b = 6 Kb=6。
- 计算出待编码的比特数
K
K
K
- 在38.212表格5.3.2-1中找到满足
K
b
⋅
Z
c
≥
K
′
K_b \cdot Z_c \ge K'
Kb⋅Zc≥K′的最小值
- 基图1中, K = 22 Z c K = 22Z_c K=22Zc
- 基图2中, K = 10 Z c K = 10Z_c K=10Zc
- 在38.212表格5.3.2-1中找到满足
K
b
⋅
Z
c
≥
K
′
K_b \cdot Z_c \ge K'
Kb⋅Zc≥K′的最小值
- 已知
K
′
=
B
′
/
C
K' = B'/C
K′=B′/C
4. 执行分割,加CRC
- 计算bit序列 c r k c_{rk} crk
s = 0;
for r = 0 : C-1
for k = 0 : (K'-L-1)
c[r][k] = b[s];
s = s + 1;
end
%若C>1,序列c[r][0],...,c[r][K'-L-1]用于计算CRC校验比特p[r][0],...,p[r][L-1].计算公式为gCRC24B(D)
for k = (K'-L) : (K'- 1)
c[r][k] = p[r][k+L-K'];
end
%填满码块k
for k = K' : (K - 1)
c[r][k] = <NULL>;
end
end
输入bit:数据传输块+CRC
b
0
,
b
1
,
b
2
,
.
.
.
,
b
B
−
1
b_0,b_1,b_2,...,b_{B-1}
b0,b1,b2,...,bB−1
输出bit:针对每一个码块CB,输出比特为
c
0
,
c
1
,
c
2
,
.
.
.
,
c
K
−
1
c_0,c_1,c_2,...,c_{K-1}
c0,c1,c2,...,cK−1,其中对于BG1,
K
=
22
K=22
K=22;对于BG2,
K
=
10
K=10
K=10。
举例
参考原文:https://zhuanlan.zhihu.com/p/455310565