当前位置:网站首页>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
边栏推荐
- Flink learning notes (VIII) multi stream conversion
- Intelligent home design and development
- Solve the problem of disordered code in vscode development, output Chinese and open source code
- 小王叔叔的博客目录【持续更新中】
- CATIA automation object architecture - detailed explanation of application objects (I) document/settingcontrollers
- LeetCode每日一题(2109. Adding Spaces to a String)
- Install database -linux-5.7
- PIP configuring domestic sources
- Failed building wheel for argon2 cffi when installing Jupiter
- LeetCode每日一题(2305. Fair Distribution of Cookies)
猜你喜欢
Nodemcu-esp8266 development (vscode+platformio+arduino framework): Part 2 --blinker_ Hello_ WiFi (lighting technology - Mobile App control routine)
Flask+supervisor installation realizes background process resident
Learning C language from scratch -- installation and configuration of 01 MinGW
Arduino handles JSON data, arduinojson assistant
数字身份验证服务商ADVANCE.AI顺利加入深跨协 推进跨境电商行业可持续性发展
CATIA automation object architecture - detailed explanation of application objects (III) systemservice
全球KYC服务商ADVANCE.AI 活体检测产品通过ISO国际安全认证 产品能力再上一新台阶
Nodemcu-esp8266 development board to build Arduino ide development environment
Definition and use of enum in C language
PolyWorks script development learning notes (III) -treeview advanced operation
随机推荐
Leetcode daily question (1856. maximum subarray min product)
Overview of image restoration methods -- paper notes
MySQL data manipulation language DML common commands
Quickly use markdown to edit articles
Spark overview
Leetcode daily question (968. binary tree cameras)
numpy. Reshape() and resize() functions
Epoll read / write mode in LT and et modes
MySQL environment variable configuration
LeetCode每日一题(985. Sum of Even Numbers After Queries)
1300. sum of varied array closed to target
There is no open in default browser option in the right click of the vscade editor
QT sub window is blocked, and the main window cannot be clicked after the sub window pops up
MySQL Data Definition Language DDL common commands
Equality judgment of long type
Analysis of the implementation principle of an open source markdown to rich text editor
从0开始使用pnpm构建一个Monorepo方式管理的demo
Leetcode daily question (2305. fair distribution of cookies)
WARNING: You are using pip ; however. Later, upgrade PIP failed, modulenotfounderror: no module named 'pip‘
Leetcode daily question (1362. closest divisors)