当前位置:网站首页>UCI and data multiplexing are transmitted on Pusch - determine the bit number of harqack, csi1 and csi2 (Part II)
UCI and data multiplexing are transmitted on Pusch - determine the bit number of harqack, csi1 and csi2 (Part II)
2022-07-03 09:39:00 【Communication pawn】
1. obtain harq-ack How much subcarrier space needs to be allocated
This is a typeA The calculation process of is as follows ,typeB The calculation process is similar , I'm not going to introduce you here .
harq-ack The occupied symbol must be the data symbol following the first continuous pilot symbol .
% Get the number of coded HARQ-ACK symbols and bits, TS 38.212,
% Section 6.3.2.4.1.1
[qDashACK,EuciACK] = rateMatchInfoACK(...
tbs,oack,pusch.BetaOffsetACK,alpha,numCodedBits,s1,s2,rqm,nlqm); % This is real harqbit Count to count
[qDashACKrvd,EuciACKRvd] = rateMatchInfoACK(...
tbs,oACKrvd,pusch.BetaOffsetACK,alpha,numCodedBits,s1,s2,rqm,nlqm); % This is reserved ackbit Count to count .
function [Qd,E] = rateMatchInfoACK(ulschFlag,oack,beta,alpha,sumKr,s1,s2,rqm,nlqm)
%rateMatchInfoACK Rate matching information of HARQ-ACK on PUSCH
% Symbol and bit capacity of HARQ-ACK
if oack
firstTerm = getFirstTermOfFormula(ulschFlag,oack,beta,s1,sumKr,rqm);
secondTerm = ceil(alpha*s2);
Qd = min(firstTerm,secondTerm);
E = nlqm*Qd;
else
Qd = 0;
E = 0;
end
end
function val = getFirstTermOfFormula(ulschFlag,ouci,beta,s1,sumKr,rqm)
%getFirstTermOfFormula First term of UCI rate match calculations
% Value of first term in the formula
if ulschFlag
% In the presence of UL-SCH
val = ceil((double(ouci)+getCRC(ouci))*double(beta)*s1/sumKr);%ceil Rounding up
else
% In the absence of UL-SCH
val = ceil((double(ouci)+getCRC(ouci))*double(beta)/rqm);
end
end
function L = getCRC(oUCI)
% CRC bits for UCI information for input length oUCI, according to TS
% 38.212, Section 6.3.1.2.1
if oUCI > 19
L = 11;
elseif oUCI > 11
L = 6;
else
L = 0;
end
end
2. obtain csi -port1 How much subcarrier space needs to be allocated
If harq-ack Less than 2 , according to 2 Retain , Greater than 2 If so, just keep it true .csi1 It's just an introduction typeA The situation of ,typeB The situation is similar , No introduction .
This is a csi And data are not reused , And even if not csi2 The situation of :
% Get the number of coded CSI part 1 symbols and bits, TS 38.212,
% Section 6.3.2.4.1.2
if ocsi1 % If there is CSI1 Then calculate the rate matching according to the reserved , without CSI1 If so, follow the real harq ack Count it .
if oACKrvd
qDashACKCSI1 = qDashACKrvd;
else
qDashACKCSI1 = qDashACK;
end
firstTerm = getFirstTermOfFormula(...
tbs,ocsi1,pusch.BetaOffsetCSI1,s1,numCodedBits,rqm);
if tbs
qDashCSI1 = min(firstTerm,ceil(alpha*s1)-qDashACKCSI1);
else
if ocsi2
qDashCSI1 = min(firstTerm,s1-qDashACKCSI1);
else
qDashCSI1 = s1-qDashACKCSI1;
end
end
EuciCSI = nlqm*qDashCSI1;
else
qDashCSI1 = 0;
EuciCSI = 0;
end
% Get the bit capacity of UL-SCH Get the space left for the data
if tbs
gULSCH = G - EuciCSI - EuciCSI2 - EuciACK*(oACKrvd==0);
else
gULSCH = 0;
end
3. obtain csi -port2 How much subcarrier space needs to be allocated
When HARQ-ACK Less than 2bit Count ,csi2 You can occupy his space first
% Get the number of coded CSI part 2 symbols and bits, TS 38.212,
% Section 6.3.2.4.1.3
if ocsi2
qDashACKCSI2 = qDashACK;
if oack <= 2
qDashACKCSI2 = 0;
end
if tbs
firstTerm = getFirstTermOfFormula(...
tbs,ocsi2,pusch.BetaOffsetCSI2,s1,numCodedBits,rqm);
qDashCSI2 = min(firstTerm,ceil(alpha*s1)-qDashACKCSI2-qDashCSI1);
else
qDashCSI2 = s1-qDashACKCSI2-qDashCSI1;
end
EuciCSI2 = nlqm*qDashCSI2;
else
qDashCSI2 =0;
EuciCSI2 = 0;
end
边栏推荐
- Send mail using WP mail SMTP plug-in
- Find all possible recipes from given supplies
- [kotlin learning] control flow of higher-order functions -- lambda return statements and anonymous functions
- 制作jetson nano最基本的根文件系统、服务器挂载NFS文件系统
- Run flash demo on ECS
- [CSDN]C1训练题解析_第三部分_JS基础
- Jetson nano custom boot icon kernel logo CBOOT logo
- CATIA automation object architecture - detailed explanation of application objects (I) document/settingcontrollers
- LeetCode每日一题(2090. K Radius Subarray Averages)
- LeetCode每日一题(1856. Maximum Subarray Min-Product)
猜你喜欢
Solve the problem of disordered code in vscode development, output Chinese and open source code
Solve editor MD uploads pictures and cannot get the picture address
LeetCode每日一题(931. Minimum Falling Path Sum)
Vscode Arduino installation Library
[CSDN]C1訓練題解析_第三部分_JS基礎
【22毕业季】我是毕业生yo~
Error output redirection
Alibaba cloud notes for the first time
Nodemcu-esp8266 development (vscode+platformio+arduino framework): Part 2 --blinker_ Hello_ WiFi (lighting technology - Mobile App control routine)
MySQL environment variable configuration
随机推荐
Install database -linux-5.7
There is no open in default browser option in the right click of the vscade editor
基于opencv实现桌面图标识别
numpy. Reshape() and resize() functions
Uncle Wang's blog directory [constantly updating]
Leetcode daily question (516. long palindromic subsequence)
LeetCode每日一题(2090. K Radius Subarray Averages)
LeetCode每日一题(1996. The Number of Weak Characters in the Game)
Starting from 0, use pnpm to build a demo managed by monorepo
Directory and switching operation in file system
Please tell me how to set vscode
307. Range Sum Query - Mutable
Leetcode daily question (1162. as far from land as possible)
Flink learning notes (VIII) multi stream conversion
Flink-CDC实践(含实操步骤与截图)
Solve editor MD uploads pictures and cannot get the picture address
Win10 install elk
The idea of compiling VBA Encyclopedia
Leetcode daily question (2305. fair distribution of cookies)
Learning C language from scratch -- installation and configuration of 01 MinGW