根据38.212,DLSCH所涉及参数如下
CRC - CRC polynomial selection ('16' or '24A')
L - Number of CRC bits (16 or 24)
BGN - LDPC base graph selection (1 or 2)
C - Number of code blocks
Lcb - Number of parity bits per code block (0 or 24)
F - Number of <NULL> filler bits per code block
Zc - Lifting size selection
K - Number of bits per code block after CBS
N - Number of bits per code block after LDPC coding
1. LDPC Base Graph Selection(BGN)
Base graph number 2 is used if payload size A <= 292 or if rate <= 0.25 or if (payload size <= 3824, rate <=0.67). Else base graph number 1. Refer 3GPP 38.212 7.2.2 LDPC base graph selection.
Note: payload size is TBS not including CRC size.
% LDPC base graph selection
if A <= 292 || (A <= 3824 && R <= 0.67) || R <= 0.25
bgn = 2;
else
bgn = 1;
end
2. CRC Selection(L)
Refer 3GPP 38.212 7.2.1 Transport block CRC attachment
The parity bits are computed and attached to the DL-SCH transport block according to Clause 5.1, by setting L to 24 bits and using the generator polynomial Gcrc24 if A>3824;and by setting L to16bits and using the generator polynomial Gcrc16 otherwise.(A is payload size)
if A > 3824
L = 24;
info.CRC = '24A';
else
L = 16;
info.CRC = '16';
end
3. Number of codeblocks (C and Lcb)
Refer 38.212 5.2.2
(1)确定Kcb,即最大CB块
if bgn == 1
Kcb = 8448;
else
Kcb = 3840;
end
(2)确定CB块数C和包含分块CRC的总长度B‘
if B <= Kcb
Lcb = 0;
C = 1;
Bd = B;
else
Lcb = 24; % Length of the CRC bits attached to each code block
C = ceil(B/(Kcb-Lcb));
Bd = B+C*Lcb;
end
4. Code block Size(K) and Zc and Null Filler (F)
Refer 38.212 5.2.2
(1)确定每个CB的原始大小Kd,Kd不包含填充比特(null filler)
Kd = ceil(Bd/C);
(2)确定Kb
if bgn == 1
Kb = 22;
else
if B > 640
Kb = 10;
elseif B > 560
Kb = 9;
elseif B > 192
Kb = 8;
else
Kb = 6;
end
end
(3)确定Zc,在Z的集合中找到最小的Z使其满足Kb*Zc>=Kd
(4)确定K
Zlist = [2:16 18:2:32 36:4:64 72:8:128 144:16:256 288:32:384];
Zc = min(Zlist(Kb*Zlist >= Kd));
if bgn == 1
K = 22*Zc;
else
K = 10*Zc;
end
(5)确定F,原始CB长度Kd填充后等于最终CB长度K
F = K-Kd
5.LDPC输出长度N
if BGN == 1
N = 66*Zc;
else
N = 50*Zc;
end