PDSCH物理层处理过程(三):码块分割和增加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,...,bB1, 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} BKcb,则 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/(KcbL)⌉ B ′ = B + C ⋅ L B' = B+ C \cdot L B=B+CL
    注:每个码块中包含 K c b − L K_{cb}-L KcbL个数据比特以及 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(Kr1),其中 0 ≤ r < C 0 \le r \lt C 0r<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' KbZcK的最小值
        • 基图1中, K = 22 Z c K = 22Z_c K=22Zc
        • 基图2中, K = 10 Z c K = 10Z_c K=10Zc

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 + 1end
	%若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,...,bB1
输出bit:针对每一个码块CB,输出比特为 c 0 , c 1 , c 2 , . . . , c K − 1 c_0,c_1,c_2,...,c_{K-1} c0,c1,c2,...,cK1,其中对于BG1, K = 22 K=22 K=22;对于BG2, K = 10 K=10 K=10

举例

参考原文:https://zhuanlan.zhihu.com/p/455310565
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值