当前位置:网站首页>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
边栏推荐
- Jestson Nano 从tftp服务器下载更新kernel和dtb
- Hudi learning notes (III) analysis of core concepts
- [kotlin puzzle] what happens if you overload an arithmetic operator in the kotlin class and declare the operator as an extension function?
- DSP data calculation error
- LeetCode每日一题(2212. Maximum Points in an Archery Competition)
- Flink CDC practice (including practical steps and screenshots)
- Spark 集群安装与部署
- Implementing distributed lock with redis
- Spark cluster installation and deployment
- Spark structured stream writing Hudi practice
猜你喜欢

MySQL data manipulation language DML common commands

Idea uses the MVN command to package and report an error, which is not available

Common software open source protocols

PolyWorks script development learning notes (4) - data import and alignment using file import

小王叔叔的博客目录【持续更新中】
![[CSDN]C1训练题解析_第三部分_JS基础](/img/b2/68d53ad09688f7fc922ac65e104f15.png)
[CSDN]C1训练题解析_第三部分_JS基础

Hudi integrated spark data analysis example (including code flow and test results)

Directory and switching operation in file system

Win10 install elk

Shell logic case
随机推荐
Flink learning notes (10) Flink fault tolerance mechanism
Filter comments to filter out uncommented and default values
Patent inquiry website
[CSDN] C1 training problem analysis_ Part III_ JS Foundation
[solution to the new version of Flink without bat startup file]
LeetCode每日一题(745. Prefix and Suffix Search)
Spark overview
Send mail using WP mail SMTP plug-in
[CSDN]C1訓練題解析_第三部分_JS基礎
Electronic product design
LeetCode每日一题(2115. Find All Possible Recipes from Given Supplies)
Jestson Nano 从tftp服务器下载更新kernel和dtb
QT qstring:: number apply base conversion
The number of weak characters in the game (1996)
Win10 install elk
Leetcode daily question (1362. closest divisors)
Find all possible recipes from given supplies
【22毕业季】我是毕业生yo~
Logstash+jdbc data synchronization +head display problems
How MySQL modifies null to not null