代码如下,其中计算基图的部分其实是不需要的,因为暂时目的就是算代码块,不用跟LDPC扯上关系。但是我有点懒得删了,大家自取。
%% Function Description
% TBS Length Calculation.
% According to TS38.214 5.1.3.2 Transport block size determination.
%% Input
% No need for input for now(2021.12.2)
%% Output
% Get the blkSeg & TBS when Ninfo is different.
% And blkSeg means CB(Code Block) length, TBS means Tranport Block Size.
%% Modify History
% 2021/11/30 Created by Cheng Zixin
%%
len=length(30000:1:35000);bgn = zeros(len,1);
TBS=zeros(len,1);TBCRC = zeros(len,1);
R = 0.5;idx=1;
for Ninfo = 1000000:1:1005000
n=floor(log2(Ninfo-24))-5;
N_info = max(3840,(2^n)*round((Ninfo-24)/2^n));
if R <=1/4
bgn(idx)=2;
C = ceil((N_info+24)/3816);
TBS(idx) = 8*C*ceil((N_info+24)/(8*C))-24;
elseif R>1/4 && N_info>8424
bgn(idx) = 1;
C = ceil((N_info+24)/8424);
TBS(idx) = 8*C*ceil((N_info+24)/(8*C))-24;
else
TBS(idx)=8*ceil((N_info+24)/8)-24;
if TBS(idx) <=292 || (TBS(idx) <= 3824 && R <= 0.67) || R <= 0.25
bgn(idx) = 2; % bgn=2 表示使用LDPC基图2
else
bgn(idx) = 1; % bgn=1 表示使用LDPC基图1
end
end
if TBS(idx)> 3824
TBCRC(idx)=TBS(idx)+24;
else
TBCRC(idx)=TBS(idx)+16;
end
idx=idx+1;
end
% TBS = [24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168 176 184 192 208 224 240 256 272 288 ...
% 304 320 336 352 368 384 408 432 456 480 504 528 552 576 608 640 672 704 736 768 808 848 888 928 984 1032 ...
% 1064 1128 1160 1192 1224 1256 1288 1320 1352 1416 1480 1544 1608 1672 1736 1800 1864 1928 2024 2088 2152 ...
% 2216 2280 2408 2472 2536 2600 2664 2728 2792 2856 2976 3104 3240 3368 3496 3624 3752 3824];
这段代码实现了根据3GPP TS38.214标准计算不同信息长度下的传输块大小(TBS)和码块段(blkSeg)的过程。针对不同的信噪比条件,确定适当的LDPC基图,并考虑了CRC位的添加。该计算对于理解无线通信系统中数据包的编码和传输具有重要意义。

1万+

被折叠的 条评论
为什么被折叠?



