主要内容

PUSCH上的NR UCI复用

此示例展示了使用5G工具箱™功能,通过数据和控制多路复用形成与物理上行共享信道(PUSCH)相关联的码字所涉及的不同处理步骤。

介绍

上行控制信息(UCI)消息由混合自动重复请求确认(HARQ-ACK)、信道状态信息(CSI)和调度请求(SR)组成。这些UCI消息被编码并通过物理上行控制通道(PUCCH)传输或在PUSCH上复用。CSI报告配置可以是非周期性的(使用PUSCH)、周期性的(使用PUCCH)或半持久性的(使用PUCCH或dci激活的PUSCH)。CSI报告由两部分组成。CSI第1部分具有固定的有效负载大小,用于识别CSI第2部分中的信息比特数。在CSI第2部分传输之前,CSI第1部分必须传输完成。HARQ-ACK(如果有的话)和CSI(如果有的话)经过编码和多路复用,使用或不使用经过编码的UL-SCH数据,然后在PUSCH上传输。

数据和控制复用

编码数据,编码的HARQ-ACK,编码的CSI部分1和编码的CSI部分2被复用以形成码字,其中TS 38.212第6.2.7节中概述的步骤[1]

UCI信息仅在未使用的OFDM符号中发送,该符号用于解调参考信号(DM-RS)传输。在用于UCI类型的UCI传输的任何OFDM符号中,该UCI类型的映射取决于可用于UCI传输的资源元素(RES)的数量,以及该UCI类型所需的剩余res。如果OFDM符号中该UCI类型所需的剩余res的数量大于UCI传输的可用RE的一半,则UCI类型的映射是连续的。否则,映射在OFDM符号中均匀分布在可用的res上以实现分集增益。用于UCI或数据传输中占用的编码比特的数量等于调制顺序和层数的乘积。

编码的HARQ-ACK位从OFDM符号开始,位于第一个连续的DM-RS OFDM符号之后。编码的CSI第1部分或第2部分位被放置在共享信道码元分配中DM-RS未使用的起始OFDM码元上。复用操作取决于HARQ-ACK的位数。当HARQ-ACK的位数小于等于2时,编码的HARQ-ACK被戳穿。否则,编码的HARQ-ACK位是速率匹配的。

多路复用涉及这些处理步骤。

  • 步骤1:当HARQ-ACK位数小于或等于2时,找到保留的HARQ-ACK位置。

  • 步骤2:当HARQ-ACK位数大于2时,映射编码的HARQ-ACK位(如果有)。

  • 步骤3:映射编码的CSI第1部分和CSI第2部分(如果有的话)位。

  • 步骤4:映射编码的UL-SCH位(如果有)。

  • 步骤5:当HARQ-ACK位的数量小于或等于2时,映射编码的HARQ-ACK位(如果有)。

  • 步骤6:形成密码。

这个例子展示了PUSCH的两种独立情况的步骤1到6,一个资源块占用槽中的所有OFDM符号,单层,pi/2- bpsk调制方案,DM-RS符号占用OFDM符号2,7和11(基于0)。DM-RS OFDM符号中除DM-RS外的REs用于数据传输。对于第一种情况,HARQ-ACK的位数小于等于2。对于第二种情况,HARQ-ACK的位数大于2。这个图显示了只有DM-RS符号位置的网格。根据每个案例的多路复用操作,使用编码类型UL-SCH、HARQ-ACK、CSI第1部分和CSI第2部分填充这个网格。传输块大小设置为24,目标码率设置为314/1024。每个CSI部分的有效负载位数设置为10,所有相关的beta因子设置为1。

配置运营商资源网格和PUSCH

配置一个nrcarrierconfig对象创建带有一个资源块的15khz载波资源网格。配置一个nrPUSCHConfig对象,得到相应的DM-RS位置,如图所示。另外,配置UCI参数(BetaOffsetACKBetaOffsetCSI1BetaOffsetCSI2, 和UCIScaling).房地产BetaOffsetACK确定在PUSCH中多路复用HARQ-ACK的资源数量。属性BetaOffsetCSI1BetaOffsetCSI2确定在PUSCH中复用CSI报告的资源数量。房地产UCIScaling限制了PUSCH上分配给UCI的REs数量。

%设置运营商配置载体= nrCarrierConfig;母舰。SubcarrierSpacing = 15;%子载波间距,在kHz (15,30,60,120,240)母舰。CyclicPrefix =“正常”%循环前缀('普通'或'延长')母舰。NSizeGrid = 1;运营商资源网格中的资源块数(1 ... 275)%设置PUSCH配置pusch = nrpuschconfig;pusch.modulation =“π/ 2-BPSK”%调制方案('PI / 2-BPSK','QPSK','16QAM','64QAM'或'256QAM')pusch。NumLayers = 1;%层数(1、2、3、4)pusch。SymbolAllocation = [0 14];%OFDM符号分配[S L]pusch。PRBSet = 0;以范围的值分配的PRB的%向量[0,274]pusch。MappingType =“一个”%映射类型('A'或'B')pusch.frequencyhopping =“没有”%跳频配置('neither', 'interSlot'或'intraSlot')pusch.secondhopstartprb = 0;% Second hop start PRB in the range[0,274],请确保与PRBSet的组合不超过274pusch。TransformPrecoding = 0;%变换预编码(0或1)%设置UCI参数pusch.betaoffsetack = 1;Harq-ack的%beta偏移量pusch.betaoffsetcsi1 = 1;CSI第1部分的Beta偏移量pusch。BetaOffsetCSI2 = 1;% CSI第2部分的Beta偏移量pusch.uciscaling = 1;%UCI缩放因子%设置DM-RS参数pusch.DMRS.DMRSConfigurationType = 1;DM-RS配置类型(1或2)pusch.dmrs.dmrstypeaposition = 2;%DM-RS键入位置(2或3)pusch.DMRS.DMRSLength = 1;%DM-RS长度(1或2)pusch.dmrs.dmrsadditionalposition = 2;%DM-RS附加位置(0,1,2或3)pusch.dmrs.numcdmgroupswithoutdata = 1;百分比没有数据的CDM组数(1,2或3)%设置PT-RS参数pusch。EnablePTRS = 0;%禁用或启用PT-RS(0或1)pusch.ptrs.frequencydensity = 2;PT-RS频率密度%(2或4)pusch.ptrs.timedity = 1;%pt-rs时间密度(1,2或4)pusch.PTRS.REOffset =“00”% PT-RS资源元素偏移量('00','01','10',或'11')pusch.PTRS.NumPTRSSamples = 2;PT-RS样品的数量(2或4)pusch.ptrs.numptrsgroups = 2;% PT-RS组数(2、4、8)%设置目标代码率,传输块大小,CSI第1部分和CSI第2部分的有效载荷长度TCR = 314/1024;%在(0,1)范围内的目标码率tbs = 24;%传输块大小ocsi1 = 10;% CSI第1部分的位数ocsi2 = 10;% CSI第2部分的位数

情况1:HARQ-ACK比特数小于等于2

出于插图,在此示例中,HARQ-ACK位的数量设置为1。要获取有关每种类型的编码位数的信息,请使用nrULSCHInfo功能。对于指定的PUSCH配置,目标代码率和有效载荷值,编码HARQ-ACK位的数量是2,编码的CSI部分1和CSI部分2位的数量为19,以及编码的UL-SCH位数是94。

第1步:当HARQ-ACK位数小于等于2时,查找保留HARQ-ACK位置并将它们标记在网格上。

通过将HARQ-ACK的速率匹配长度设置为2.具有2.具有指定的PUSCH配置,目标代码率和传输块大小,可以实现保留的HARQ-ACK位置的数量。保留的HARQ-ACK位置是4. HARQ-ACK映射到OFDM符号中的res,该符号可在第一连续DM-RS OFDM符号之后可用。该图显示了保留了Harq-Ack的位置。

第2步:当HARQ-ACK位的数量大于2时,映射编码HARQ-ACK位。

在本例中,由于HARQ-ACK的位数小于等于2,请跳过此步骤。

步骤3:映射编码CSI第1部分CSI第2部分

CSI映射(CSI第1部分后跟CSI第2部分)从PUSCH分配中可用的第一个非DMRS OFDM符号开始。对于配置的设置,映射从OFDM符号0开始(基于0)。基于可用的RES的数量和CSI第1部分传输所需的RE的数量来确定映射位置。CSI部分需要传输19 Res。由于只有12个RES可用于传输,因此在这种情况下占用OFDM符号0的CSI部分1的情况下占用。对于剩余的CSI部分1符号的传输,映射进入未用于DM-R的下一个OFDM符号(即OFDM符号1)。在OFDM符号1,12中可用,但CSI第1部分只需要7个RES。因为CSI第1部分所需的剩余RE超过UCI传输的距离的一半以上,所以CSI部分1映射到连续的RES。这个数字显示了这种情况。

一旦编码的CSI第1部分被完全映射,编码的CSI第2部分的映射就开始了。映射从用于PUSCH传输的第一个非dmrs OFDM符号(即OFDM符号0)开始。在OFDM符号0中,没有REs可用于UCI传输,跳过该OFDM符号。因此,映射移动到下一个OFDM符号(即OFDM符号1)。在OFDM符号1中,UCI传输有5个REs, CSI part 2传输需要19个REs。这个场景导致将5个REs映射到CSI第2部分,然后继续使用CSI第1部分中相同的映射规则来映射DM-RS以外的下一个OFDM符号。除编码的CSI第1部分外,编码的CSI第2部分和UL-SCH数据可以映射到预留的HARQ-ACK位置。该图显示了CSI第2部分的映射。保留的HARQ-ACK位置由OFDM符号3的CSI第2部分覆盖。此外,在OFDM符号4中,CSI第2部分是分布式的,因为剩余的CSI第2部分传输所需的REs少于UCI传输可用REs的一半。

步骤4:映射编码UL-SCH数据位。

该图显示了如何将UL-SCH数据映射到网格中的其余位置。

步骤5:当HARQ-ACK位数小于或等于2时,映射编码HARQ-ACK位。

HARQ-ACK位以分布式的方式映射到保留的HARQ-ACK位置中。这个图表示HARQ-ACK到网格的映射。HARQ-ACK将穿透占据预留HARQ-ACK位置的CSI第2部分。

步骤6:形成码字通过在DM-RS RE以外的每个RE读取比特频率和时间。

使用nrulschmultiplex函数获取代码,执行步骤1到6。

%设置HARQ-ACK有效载荷大小小于等于2ooack = 1;%harq-ack位数%获取UL-SCH编码信息信息= nrULSCHInfo (pusch tcr、tbs oack, ocsi1, ocsi2);%设置随机编码的UL-SCH,HARQ-ACK,CSI部分1和CSI第2部分位Colsch = Randi([0 1],Info.Gulsch,1);CACK = RANDI([0 1],INFO.GACK,1);CCSI1 = RANDI([0 1],INFO.GCSI1,1);CCSI2 = RANDI([0 1],INFO.GCSI2,1);%获取每种类型的码字和位置(数据和UCI)[cw, indInfo] = nrULSCHMultiplex (culsch pusch tcr, tbs,平底靴,ccsi1, ccsi2);%创建并绘制具有预定义符号的第一层的输出网格不同类型的%值CreateAndplotgrid(运营商,PUSCH,CW,IndInfo)

图包含轴。具有不同类型位置的标题网格的轴包含6个类型图像,线路。这些对象代表UL-SCH,DM-RS,HARQ-ACK,CSI第1部分,CSI第2部分。

案例2:HARQ-ACK位数大于2

对于案例1中提到的相同配置,将HARQ-ACK的位数从1修改为3。对于这个设置,编码的HARQ-ACK位数是6,编码的CSI第1部分和第2部分的位数分别是19,编码的UL-SCH位数是106。

第1步:当HARQ-ACK位数小于等于2时,查找保留HARQ-ACK位置并将它们标记在网格上。

由于HARQ-ACK位数大于2,因此在这种情况下跳过此步骤。

第2步:映射编码HARQ-ACK位。

HARQ-ACK被映射到OFDM符号中的REs,该REs在第一个连续的DM-RS OFDM符号之后可用。HARQ-ACK所需的REs数量为6个。由于该值不大于UCI传输可用REs数的一半,因此HARQ-ACK的映射分布如图所示。

步骤3:映射编码CSI第1部分和编码CSI第2部分比特类似于案例1。

步骤4:映射编码UL-SCH类似于情形1的数据位。

步骤5:当HARQ-ACK位数小于或等于2时,映射编码HARQ-ACK位。

由于HARQ-ACK位数大于2,因此在这种情况下跳过此步骤。

步骤6:形成码字。

%配置HARQ-ACK位的有效载荷大小大于2oack = 3;%harq-ack位数%获取UL-SCH编码信息信息= nrULSCHInfo (pusch tcr、tbs oack, ocsi1, ocsi2);%设置随机编码的UL-SCH,HARQ-ACK,CSI部分1和CSI第2部分位Colsch = Randi([0 1],Info.Gulsch,1);CACK = RANDI([0 1],INFO.GACK,1);CCSI1 = RANDI([0 1],INFO.GCSI1,1);CCSI2 = RANDI([0 1],INFO.GCSI2,1);%获取每种类型的码字和位置(数据和UCI)[cw, indInfo] = nrULSCHMultiplex (culsch pusch tcr, tbs,平底靴,ccsi1, ccsi2);%创建并绘制具有预定义符号的第一层的输出网格不同类型的%值CreateAndplotgrid(运营商,PUSCH,CW,IndInfo)

图包含轴。具有不同类型位置的标题网格的轴包含6个类型图像,线路。这些对象代表UL-SCH,DM-RS,HARQ-ACK,CSI第1部分,CSI第2部分。

进一步的探索

更改影响PUSCH的时间或频率分配的不同参数以及每个UCI类型的有效载荷比特数以改变UCI类型的RE位置。

启用PT-RS以改变码字中的UCI类型的位容量。

开启槽位内跳频功能,观察每一跳不同UCI类型的对应关系。

该示例示出了如何生成各个UCI类型的比特容量,并执行多路复用以生成与PUSCH相关联的码字。当HARQ-ACK位数小于或等于2且大于2时,该示例突出显示多路复用涉及的不同步骤。

参考

  1. 3 gpp TS 38.212。“NR;多路复用和信道编码(第15版)。”第三代合作伙伴计划;技术规范集团无线电接入网络

本地功能

功能CreateAndplotgrid(运营商,PUSCH,CW,IndInfo)初始化网格qm = strcmpi (pusch。调制,{“π/ 2-BPSK”'QPSK''16QAM'64 qam'256QAM'})*[1 2 4 6 8]';gridOFDM =复杂(0([运营商。NSizeGrid * 12。SymbolsPerSlot双(pusch.NumLayers) * qm]));%为每个实体指定预定义值以获得所需的可视化效果Chplevel = struct;chplevel.pusch = 0.6;chplevel.dmrs = 1.1;chplevel.ack = 0.4;chplevel.csi1 = 1.5;chplevel.csi2 = 2;%分配具有预定义值的代码字CW1 =零(尺寸(CW));CW1(indinfo.ulschindices)= chplevel.pusch;CW1(indinfo.ackindices)= chplevel.ack;CW1(indinfo.csi1indices)= chplevel.csi1;CW1(indinfo.csi2indices)= chplevel.csi2;%图例标签labelstr = {“UL-SCH”'dm-rs'“HARQ-ACK”“CSI第1部分”'CSI第2部分'};%获取PUSCH和DM-RS指数Puschindices = NRPUSCHINDICES(载体,PUSCH);dmrsindices = nrpuschdmrsindices(载体,pusch);%获得PT-RS指数如果pusch.enableptrs labelstr {end + 1} ='pt-rs';chpLevel。ptr = 1.6;ptrsIndices = nrPUSCHPTRSIndices(载体、pusch);结尾%将DM-RS,PT-RS和PUSCH指数映射到网格上[〜,puschextind] = nrextractresources(puschindices,gridofdm);gridofdm(dmrsindices)= chplevel.dmrs;如果pusch。TransformPrecoding% DFT-s-OFDMtitleStr =“在变换预编码之前的不同类型的投影”;cwLen = 0(大小(puschIndices, 1), pusch.NumLayers * qm);如果pusch.enableptrs cwlen(ptrsindices)= chplevel.ptrs;结尾cwlen(cwlen == 0)= CW1;gridofdm(重塑(puschextind',[],1))= cwlen;其他的% CP-OFDMtitleStr =“网格包含不同类型的位置”如果pusch。EnablePTRS gridOFDM(ptrsIndices) = chpllevel . ptrs;结尾gridOFDM(重塑(puschExtInd ', 1) []) = cw1;结尾绘制网格图映射= Jet(64);cscaling = 30;IM =图像(1:尺寸(gridofdm,2),1:尺寸(gridofdm,1),cscaling * abs(gridofdm(::,1)));Colormap(IM.Parent,地图)%添加一个图例到图像chpval = struct2cell(chplevel);clevels = cscaling * [chpval {:}];n =长度(clevels);l =行(那些(n),一个(n),'行宽',8);%生成线索引颜色地图,并将选中的颜色与线条关联起来集(L, {“颜色”},Mat2Cell(MAM(MIN(1 + CLEVELS,LENGE(MAP)),:),(1,N),3)))%根据地图设置颜色%创建图例图例(LabelStr {:})轴XY.ylabel('子载波')xlabel(OFDM符号的标题(titleStr)结尾

另请参阅

功能

对象

相关话题