确定TBS(Transport block size) ,是NR-PDSCH在解码的一个重要过程,本文将尝试用较为通俗的语言去解释这个过程。
1.计算时隙(slot)中的PDSCH RE数量
N
R
E
′
=
N
S
C
R
B
∗
N
s
y
m
b
S
H
−
N
D
M
R
S
P
R
B
−
N
O
H
P
R
B
N^{'}_{RE} = N^{RB}_{SC} * N^{SH}_{symb} - N^{PRB}_{DMRS} - N^{PRB}_{OH}
NRE′=NSCRB∗NsymbSH−NDMRSPRB−NOHPRB
N
R
E
=
m
i
n
(
156
,
N
R
E
′
)
∗
n
P
R
B
N_{RE} = min(156,N^{'}_{RE}) * n_{PRB}
NRE=min(156,NRE′)∗nPRB
3GPP -38214 5.1.3.2
其中:
N
S
C
R
B
N^{RB}_{SC}
NSCRB = 12,代表一个RB中子载波(SCS), 也就是RE的数量;
N s y m b S H N^{SH}_{symb} NsymbSH 表示一个slot中PDSCH的符号数,UE可通过PDCCH中的DCI指示获得,详见DCI格式解析;
N D M R S P R B N^{PRB}_{DMRS} NDMRSPRB 表示在PDSCH符号持续时间内每个RB中DMRS的RE数量,包括 DM-RS CDM 组的开销(这部分没有研究得特别透彻,后面会另外花时间整理);
N O H P R B N^{PRB}_{OH} NOHPRB 同常设成0;这个部分的意义也没有看的特别明白
即 N R E ′ N^{'}_{RE} NRE′ 表式时域上1个slot内 频域上一个RB的PDSCH RE数量;
n P R B n_{PRB} nPRB表示PDSCH占用的RB数量,UE可通过PDCCH中的DCI指示获得,详见DCI格式解析;
在156 和
N
R
E
′
N^{'}_{RE}
NRE′ 中取较小值的原因是:
156 = 12(RE) * 13(symb) 至少要留有一个symb配置DMRS
2.确定信息比特数量 N i n f o N_{info} Ninfo
N
i
n
f
o
=
N
R
E
∗
R
∗
Q
m
∗
v
N_{info}=N_{RE} * R * Q_m * v
Ninfo=NRE∗R∗Qm∗v
R
R
R表示编码率,
Q
m
Q_m
Qm表示 调制模式. UE通过PDCCH的DCI获知MSC_ID,
通过查表38.214 Table 5.1.3.1-1、Table 5.1.3.1-2、Table 5.1.3.1-3得到编码率及调制方式。详见DCI格式解析;
!(https://img-blog.csdnimg.cn/2ec78b1412c7461f8757baf97c9a9ba2.png
例: MSC_ID = 11; Q m = 4 Q_m=4 Qm=4 即16QAM调制; R = 378 / 1024 = 0.3691 R = 378/1024=0.3691 R=378/1024=0.3691
3. 确定传输块的大小(Transport block size)
目前系统支持传输两种格式大小的块
- k c b = 3840 k_{cb} = 3840 kcb=3840 ; 其中 16bits 为CRC检验码;则信息位为3824bits;
- k c b = 8448 k_{cb} = 8448 kcb=8448 ; 其中 24bits 为CRC检验码;则信息位为8424bits;
根据信息比特 N i n f o N_{info} Ninfo的大小 从而确定TBS
(1) N i n f o < = 3824 N_{info} < =3824 Ninfo<=3824
此时不需要分块; 但需要对
N
i
n
f
o
N_{info}
Ninfo进行量化处理,保证字节对齐(
N
i
n
f
o
′
N_{info}^{'}
Ninfo′必须为8的倍数),为后续的LDPC编码做准备。
N
i
n
f
o
′
=
m
a
x
(
24
,
2
n
∗
(
N
i
n
f
o
/
2
n
)
)
N_{info}^{'} = max(24,2^n*(N_{info} /2^n))
Ninfo′=max(24,2n∗(Ninfo/2n))
n
=
m
a
x
(
3
,
l
o
g
2
N
i
n
f
o
−
6
)
n = max(3, log_2N_{info} -6 )
n=max(3,log2Ninfo−6)
在 214 Table 5.1.3.2-1中寻找一个比
N
i
n
f
o
′
N_{info}^{'}
Ninfo′大的最小值作为TBS
example:
R
B
=
3
;
s
y
m
b
=
10
;
Q
m
=
4
;
R
=
0.3691
RB = 3; s ymb = 10; Q_m=4; R =0.3691
RB=3;symb=10;Qm=4;R=0.3691
N
R
E
=
R
B
∗
12
∗
S
y
m
b
=
3
∗
12
∗
10
=
360
N_{RE} =RB* 12*Symb = 3*12*10=360
NRE=RB∗12∗Symb=3∗12∗10=360
N i n f o = N R E ∗ R ∗ Q m ∗ v = 360 ∗ 0.3691 ∗ 4 = 531.718 N_{info}=N_{RE} * R * Q_m * v = 360* 0.3691*4= 531.718 Ninfo=NRE∗R∗Qm∗v=360∗0.3691∗4=531.718
量化后 N i n f o ‘ = 528 N_{info}^{‘} = 528 Ninfo‘=528
tbs =528
(2) N i n f o > 3824 N_{info} > 3824 Ninfo>3824
需要进行分块操作。同样要对信息比特进行量化处理,此时量化中间比特数
N
i
n
f
o
′
N_{info}^{'}
Ninfo′的计算如下:
N
i
n
f
o
′
=
m
a
x
(
3840
,
2
n
∗
r
o
u
n
d
(
(
N
i
n
f
o
−
24
)
/
2
n
)
)
N_{info}^{'} = max(3840,2^n*round((N_{info} - 24 )/2^n))
Ninfo′=max(3840,2n∗round((Ninfo−24)/2n))
n
=
l
o
g
2
(
N
i
n
f
o
−
24
)
−
5
n = log_2(N_{info}-24) -5
n=log2(Ninfo−24)−5
-
R
<
=
0.25
R <= 0.25
R<=0.25
编码率较低,选取BG1作为LPDC编码块( k c b = 3840 k_{cb} =3840 kcb=3840),计算基于此条件下的块数C
C = ( N i n f o ′ + 24 ) / 3816 C = (N_{info}^{'} + 24) / 3816 C=(Ninfo′+24)/3816
在分块前需对信息块+ 24位CRC校验码,如下图所示:
T B S = ( ( N i n f o ′ + 24 ) / ( 8 ∗ C ) ) ∗ 8 ∗ C ) − 24 TBS = ((N_{info}^{'} + 24)/(8*C))*8*C ) - 24 TBS=((Ninfo′+24)/(8∗C))∗8∗C)−24
乘以8的原因是要保证加上24位检验码分块以后仍然保持字节对齐; -
R
>
0.25
R >0.25
R>0.25 此时编码率较高,选取选取BG1作为LPDC编码块(
k
c
b
=
8448
k_{cb} =8448
kcb=8448);判断
N
i
n
f
o
′
N_{info}^{'}
Ninfo′是否大于8424;是否需要进行分块;
1. N i n f o ′ < 8424 N_{info}^{'}<8424 Ninfo′<8424 不需要分块;
T B S = ( ( N i n f o ′ + 24 ) / 8 ) ∗ 8 ) − 24 TBS = ((N_{info}^{'} + 24)/8)*8 ) - 24 TBS=((Ninfo′+24)/8)∗8)−24
保证信息块加上24位校验码后仍字节对齐即可;
2. N i n f o ′ > = 8424 N_{info}^{'}>=8424 Ninfo′>=8424 需要分块;
C = ( N i n f o ′ + 24 ) / 8424 C = (N_{info}^{'} + 24) / 8424 C=(Ninfo′+24)/8424
T B S = ( ( N i n f o ′ + 24 ) / ( 8 ∗ C ) ) ∗ 8 ∗ C ) − 24 TBS = ((N_{info}^{'} + 24)/(8*C))*8*C ) - 24 TBS=((Ninfo′+24)/(8∗C))∗8∗C)−24