本示例演示如何使用PUSCH和SRS为基带组件载波配置和生成5G NR上行矢量波形nrwaveformgenerator
函数。
这个示例演示了如何使用参数化和生成5G新无线电(NR)上行波形nrwaveformgenerator
函数。生成的波形包含这些通道和信号:
PUSCH及其相关DM-RS和PT-RS
SRS
这个例子演示了如何参数化和生成基带分量载波波形,其特征是多个子载波间隔(SCS)载波和带宽部分(BWP)。您可以在不同的bwp上生成物理上行共享通道(PUSCH)和探测参考信号(SRS)的多个实例。
该示例还示出了如何使用CG-UCI和SRS参数化和生成PUSCH上的上行链路控制信息(UCI)以进行定位。
基带波形的产生由nrulcarrierconfig
对象和一组与波形通道和信号相关的附加对象。
与nrulcarrierconfig
对象中,可设置这些上行运营商配置参数。
UL运营商配置的标签
SCS以资源块为单位的载波带宽
载体细胞ID
在子帧中生成的波形的长度
窗口
OFDM调制波形的采样率
符号相位补偿的载波频率
您可以控制SCS载波带宽和保护带使用NStartGrid
和NSizeGrid
的属性nrscscarrierconfig
对象。
waveconfig = nrULCarrierConfig ();%创建波形的参数对象的实例waveconfig.label ='UL载体1';%上行波形配置的标签waveconfig。NCellID = 0;%细胞身份waveconfig.channelbandwidth = 50;%通道带宽(MHz)waveconfig.frequencyRange ='fr1';% 'FR1'或'FR2'waveconfig.numsubframes = 10;%生成的波形中1ms子帧的数量(每1ms子帧1、2、4、8个插槽,取决于SCS)waveconfig.windowingpercent = 0;%开窗相对FFT长度的百分比waveconfig.samplerve = [];OFDM调制波形的%采样率waveconfig。CarrierFrequency = 0;%载波频率,单位为Hz。此属性用于符号阶段%补偿在OFDM调制前,不用于上转换定义一组SCS特定的载体,使用a的最大尺寸% 50 MHz NR信道。参见TS 38.101-1了解更多关于定义的信息%带宽和保护带需求scscarriers = {nrSCSCarrierConfig (), nrSCSCarrierConfig ()};scscarriers{1}。SubcarrierSpacing = 15;scscarriers{1}。NSizeGrid= 270; scscarriers{1}.NStartGrid = 0; scscarriers{2}.SubcarrierSpacing = 30; scscarriers{2}.NSizeGrid = 133; scscarriers{2}.NStartGrid = 1;
BWP由一组连续的资源形成,在给定载波上共享数字。您可以使用单元格数组定义多个BWP。单元格数组中的每个元素nrWavegenBWPConfig
对象定义BWP。对于每个BWP,可以指定SCS、循环前缀(CP)长度和带宽。的SubcarrierSpacing
属性将BWP映射到前面定义的SCS特定载波之一。的NStartBWP
属性控制BWP相对于点a在载体中的位置。这是根据BWP命数学在公共资源块(CRB)中表示的。不同的bwp可以相互重叠。
带宽部件配置bwp = {nrWavegenBWPConfig (), nrWavegenBWPConfig ()};bwp{1}。BandwidthPartID = 1;%带宽部分IDBWP {1} .label ='BWP @ 15 khz';这个BWP的标签bwp{1}。SubcarrierSpacing = 15;%BWP子载波间距bwp{1}。CyclicPrefix =“正常”;% BWP循环前缀15千赫BWP {1} .nsizebwp = 25;prb中BWP的大小%BWP {1} .nstartbwp = 10;BWP的%位置,相对于点A(即CRB)BWP {2} .BandWidthpartid = 2;%带宽部分IDbwp{2}。标签='BWP @ 30 khz';这个BWP的标签bwp{2}。SubcarrierSpacing = 30;%BWP子载波间距BWP {2} .CYCLICPREFIX =“正常”;% BWP循环前缀为30 kHzbwp{2}。NSizeBWP = 51;prb中BWP的大小%bwp{2}。NStartBWP = 40;BWP的%位置,相对于点A(即CRB)
本节通过使用单元格数组指定波形中的PUSCH实例集。单元格数组中的每个元素nrWavegenPUSCHConfig
对象定义了一个PUSCH实例序列。这个例子定义了两个PUSCH序列。
一般参数
为每个PUSCH序列设置以下参数:
启用或禁用此PUSCH序列
为这个PUSCH序列指定一个标签
指定携带PUSCH的BWP。PUSCH使用本BWP指定的SCS
DB中的电力缩放
启用或禁用UL-SCH传输信道编码
RNTI
NID用于扰乱PUSCH位
转换预编码。变换预编码时真正的
时,使能变换预编码,得到的波形为DFT-s-OFDM。变换预编码时假
,所得到的波形是CP-OFDM
用于计算传输块大小的目标代码率
开销参数
传输方案。当传输方案为“码”
,启用MIMO预编码并基于层数,天线端口数和发送的预编码矩阵指示符来选择预编码矩阵。当传输设置为“nonCodebook”
,使用单位矩阵,导致没有MIMO预编码
标志灯
层数。由于只有一个码字传输,上行链路层数限制在4层以内。名义上,当转换预编码被启用时,层的数量被设置为1。时,此值将被忽略dmr。PortSet
特定属性
天线接口个数。在启用码本传输时使用。天线接口数量必须大于等于实际配置的DM-RS接口数量
传输预编码矩阵指示器
冗余版本(RV)序列
跳频
第二跳的资源块偏移量
传输块数据源。你可以使用一个比特数组或这些标准的PN序列:“PN9-ITU”
,“PN9”
,“PN11”
,“PN15”
,“PN23”
.生成器的种子可以使用表单中的单元格数组指定{'pn9',seed}
.如果没有指定种子,则将生成器与所有组件初始化
pusch = {nrWavegenPUSCHConfig ()};pusch{1}。使= 1;%启用PUSCH序列pusch{1}。标签=“push @ 15khz”;此PUSCH序列的%标签PUSCH {1} .BANDWIDTHPARTID = 1;PUSCH传输的%带宽部分pusch{1}。权力= 0;DB中的%功率缩放pusch{1}。编码= 1;%启用UL-SCH传输信道编码PUSCH {1} .nid = 1;%数据部分置乱pusch{1}。RNTI = 0;% RNTIpusch{1}。TransformPrecoding = false;%变换预编码PUSCH {1} .targetCoderate = 0.47;用于计算传输块大小的百分比代码率pusch{1}。XOverhead = 0;比率匹配开销%传输设置pusch{1}。TransmissionScheme =“码”;%'codebook','nongodebook'pusch{1}。调制=“正交相移编码”;%的π/ 2-BPSK, QPSK, 16 qam,‘64 qam’,‘256 qam’pusch{1}。NumLayers = 2;%数量的PUSCH层pusch{1}。NumAntennaPorts = 4;%天线端口数PUSCH {1} .tpmi = 0;%传输预编码矩阵指示器(0 ... 27)pusch{1}。RVSequence =[0, 2、3、1];% RV序列将在PUSCH分配序列中循环应用pusch{1}。FrequencyHopping ='Interslot';%槽内频率跳变('enabled','disabled')pusch {1} .secondhopstartprb = 10;%第二跳的资源块偏移量% 数据源pusch{1}。数据源=“PN9”;%通道数据源
分配
该图表表示PUSCH分配中使用的一些参数。
您可以设置以下参数来控制PUSCH分配。这些参数相对于BWP。
PUSCH映射类型
分配给每个PUSCH实例的槽中的符号。用于PUSCH映射类型“一个”
,插槽内的开始符号必须为零,长度可以从4到14(对于普通CP),最多12(对于扩展CP)。用于PUSCH映射类型“B”
,开始符号可以来自插槽中的任何符号
用于PUSCH序列的帧中的槽
插槽中的分配时期。空时期表示没有重复
相对于BWP分配的prb
pusch{1}。MappingType =“一个”;% PUSCH映射类型('A'(slot-wise),'B'(non - slot-wise))pusch{1}。SymbolAllocation = [0, 14];%第一个符号和长度pusch{1}。SlotAllocation = [0 1];%为PUSCH序列分配的槽索引pusch{1}。时间= 5;%槽位分配周期pusch {1} .prbset = 0:10;%复审委员会分配
PUSCH DM-RS配置
设置DM-RS参数。
%天线接口和DM-RS配置(TS 38.211章节6.4.1.1)pusch{1}。DMRSPower = 0;%额外的功率升高在DB中pusch {1} .DMRS。DMRSConfigurationType = 1;% DM-RS配置类型(1,2)pusch {1} .DMRS。NumCDMGroupsWithoutData = 2;%没有数据的DM-RS CDM组数。该值可以是集合{1,2,3}中的一个。pusch {1} .DMRS。DMRSPortSet = [0 2];% DM-RS天线端口使用([]给出端口号0:NumLayers-1)pusch {1} .DMRS。DMRSTypeAPosition = 2;%映射类型a。第一个DM-RS符号位置(2,3)PUSCH {1} .dmrs.dmrslength = 1;%前置DM-RS符号数(1个(单符号),2个(双符号))pusch {1} .DMRS。DMRSAdditionalPosition = 2;%附加DM-RS符号位置(最大范围0…3)pusch {1} .DMRS。NIDNSCID = 1;CP-OFDM(0 ... 65535)的%加扰标识。使用empty([])来使用物理层单元标识PUSCH {1} .dmrs.nscid = 0;CP-OFDM(0,1)的置乱初始化pusch {1} .DMRS。NRSID = 0;DFT-s-OFDM DM-RS的置乱标识(0…1007)。使用empty([])来使用物理层单元标识pusch {1} .DMRS。格兰波坪= true;%组跳跃配置。仅在启用变换预编码时使用此属性pusch {1} .DMRS。SequenceHopping = false;%序列跳跃配置。仅在启用变换预编码时使用此属性
的格兰波坪
当启用变换预编码时,属性用于DM-RS序列生成。你可以设置格兰波坪
:
'使能够'
表示群体跳跃的存在。由上层参数配置sequencgrouphopping.
“禁用”
表示跳跃的存在。由上层参数配置sequenceHopping
“没有”
表示跳跃和序列跳跃都不存在
没有数据的DM-RS CDM组的数量取决于配置类型。DM-RS配置类型1的最大DM-RS CDM组的最大数量可以为2,并且可以为DM-RS配置类型2。
PUSCH PT-RS配置
设置PT-RS参数。
PT-RS配置(TS 38.211章节6.4.1.2)pusch {1} .enableptrs = 0;%启用或禁用PT-RS(1或0)PUSCH {1} .ptrspower = 0;用于CP-OFDM的额外PT-RS功率增益(dB)pusch {1} .ptrs.timeditys = 1;PT-RS(1,2,4)的时间密度(L_PT-RS) %pusch {1} .PTRS。FrequencyDensity = 2;CP-OFDM PT-RS频率密度(K_PT-RS) (2,4)pusch {1} .PTRS。NumPTRSSamples = 2;用于DFT-S-OFDM的PT-RS样本(NGROUPSAMP)的数量(2,4)pusch {1} .ptrs.numptrsgroups = 2;% DFT-s-OFDM PT-RS组(NPTRSGroup)数(2,4,8)PUSCH {1} .ptrs.reoffset =“00”;CP-OFDM('00','01','10','11')的%pt-rs资源元素偏移量pusch {1} .PTRS。PTRSPortSet = 0;% PT-RS天线端口必须是CP-OFDM dm端口的一个子集pusch {1} .PTRS。NID = 0;DFT-s-OFDM的PT-RS置乱标识(0…1007)
CP-OFDM使能PT-RS时,DM-RS配置类型1的DM-RS端口范围为0 ~ 3,DM-RS配置类型2的DM-RS端口范围为0 ~ 5。当DFT-s-OFDM使能PT-RS时,当设置PT-RS组数为8时,必须设置PT-RS样本数为4。
在UCI PUSCH
可以通过设置以下参数来配置PUSCH上的UCI传输:
启用或禁用HARQ-ACK,CSI第1部分,CSI PART2和CG-UCI的传输
HARQ-ACK,CSI第1部分,CSI第2部分和CG-UCI位数
BetaOffsetACK
,BetaOffsetCSI1
,BetaOffsetCSI2
,BetaOffsetCGUCI
可以从TS 38.213的表9.3-1和9.3-2中设置
用于HARQ-ACK、CSI第1部分、CSI第2部分和CG-UCI的数据源。你可以使用一个比特数组或这些标准的PN序列:“PN9-ITU”
,“PN9”
,“PN11”
,“PN15”
,“PN23”
.生成器的种子可以使用表单中的单元格数组指定{'pn9',seed}
.如果没有指定种子,则将生成器与所有组件初始化
启用UCI的UL-SCH传输
UCIScaling
是由高层参数提供的吗扩展
,根据TS 38.212,第6.3.2.4节
pusch {1} .enablereacck = true;%启用或禁用Harq-Ackpusch {1} .numackbits = 5;% HARQ-ACK位数pusch{1}。BetaOffsetACK = 1;% HARQ-ACK功率因数PUSCH {1} .datasourceack =“PN9”;%HARQ-ACK数据源pusch{1}。EnableCSI1 = true;%启用或禁用CSI第1部分pusch {1} .numcsi1bits = 10;% CSI第1部分的位数PUSCH {1} .betaoffsetcsi1 = 2;CSI第1部分的%功率因数pusch{1}。DataSourceCSI1 =“PN9”;% CSI第1部分数据源pusch {1} .enablecsi2 = true;%启用或禁用CSI第2部分pusch{1}。NumCSI2Bits = 10;% CSI第2部分的位数pusch{1}。BetaOffsetCSI2 = 2;CSI第2部分的%功率因数pusch{1}。DataSourceCSI2 =“PN9”;% CSI第2部分数据源pusch{1}。EnableCGUCI = false;%启用或禁用CG-UCIpusch {1} .numcgucibits = 10;% CG-UCI位数pusch{1}。BetaOffsetCGUCI = 2;CG-UCI功率因数%PUSCH {1} .datasourcecguci =“PN9”;%CG-UCI数据源pusch{1}。EnableULSCH = true;%当PUSCH上有UCI传输时启用或禁用UL-SCHpusch{1}。UCIScaling = 1;比例因子(0.5,0.65,0.8,1)
当HARQ-ACK和CG-UCI都启用时,TS 38.212的第6.3.2.1.4节将UCI位序列指定为CG-UCI位和HARQ-ACK位的联合。因此,PUSCH上的UCI的处理将任何活动CG-UCI源视为HARQ-ACK的扩展,并且只有值BetaOffsetACK
在这种情况下使用。
指定多个PUSCH序列
为第二个BWP指定第二个PUSCH序列。
pusch {2} = pusch {1};pusch{2}。使= 1;pusch{2}。标签=“push @ 30khz”;pusch{2}。BandwidthPartID = 2;%PUSCH映射到第二BWPpusch{2}。SymbolAllocation = [0, 12];pusch{2}。[5 6 7 8];pusch{2}。PRBSet = 5:10;PRB分配百分比,相对于BWPpusch{2}。时间= 10;pusch{2}。TransformPrecoding = 1;pusch{2}。FrequencyHopping ='Interslot';pusch{2}。NumLayers = 1;pusch{2}。RNTI = 0;pusch {2} .DMRS。格兰波坪= false; pusch{2}.DMRS.DMRSPortSet = 1;
本节在波形中配置SRS。单元格数组中的每个元素nrWavegenSRSConfig
对象定义了与BWP相关联的SRS实例序列。此示例定义了两个已禁用的SRS序列。
一般参数
为每个SRS序列设置这些参数:
启用或禁用此SRS序列
为这个SRS序列指定一个标签
指定携带此SRS序列的BWP。SRS序列配置使用为此BWP指定的SCS
指定以dB为单位的功率缩放
srs = {nrwavegensrsconfig();SRS {1} .Enable = 0;SRS {1} .Label =“SRS @ 15khz”;SRS {1} .BandWidthpartid = 1;SRS {1} .Power = 3;DB中的%功率缩放
SRS配置
您可以为每个SRS序列配置以下参数:
SRS天线端口数
分配给每个SRS序列的槽中的符号
用于SRS传输的一段时间内的槽
插槽中的分配时期。空时期表示没有重复
在RBS中BWP中SRS序列的起始位置
额外的频率偏移从4-PRB块的起始位置
带宽和跳频配置。占用带宽取决于属性csr
,建筑
,BHop
.集BHop <建筑
启用跳频
用于指定子载波中SRS频率密度的传输梳
子载波中传输梳的偏移量
循环移位,旋转低papr基序列。最大循环移位数,8或12,取决于传输梳数,2或4。对于4个SRS天线端口,分配给第1和第3天线端口SRS的子载波集取决于循环移位
槽内重复SRS符号的个数。它会在区块中禁用频率跳跃重复
符号。集重复= 1
没有重复
群或序列跳跃。有可能“没有”
,'Grouphopping'
或“sequenceHopping”
匆忙的身份。当启用组或序列跳变时,它初始化伪随机二进制序列
SRS {1} .numsrsports = 1;% SRS端口数(1,2,4)SRS {1} .numsrssymbols = 4;槽中%的SRS符号数(1,2,4)srs {1} .symbolstart = 10;% SRS在槽中的时域位置。(8…13)为正常CP,(6…11)为延长CPsrs{1}。SlotAllocation = 2;%分配的插槽索引srs{1}。时间= 5;%槽位分配周期srs{1}。FrequencyStart = 0;%在RBs中BWP中SRS的频率位置srs{1}。NRRC = 0;从4个PRB块中指定的频率额外偏移量(0 ... 67)srs{1}。csr= 13;%带宽配置C_SRS(0…63)它控制分配给SRS的带宽srs{1}。建筑= 2;%带宽配置B_SRS(0…3)。它控制分配给SRS的带宽srs{1}。BHop= 1;%跳频配置(0 ... 3)。设置BHOPSRS {1} .ktc = 2;%梳编号(2,4)。它表示每个KTC子载波的SRS分配srs{1}。KBarTC = 0;SRS序列的副载波偏移量(0…KTC-1)srs{1}。CyclicShift = 0;%循环移位数(0…NCSmax-1)。对于KTC = 2, NCSmax = 8;对于KTC = 4, NCSmax = 12。srs{1}。重复= 1;%重复因子(1,2,4)。它表示槽位中相等连续的SRS符号的个数SRS {1} .groupseqhopping =“没有”;%组或序列跳跃('既不','gouphopping','sequenchopping')srs{1}。NSRSID = 0;%置乱标识(0…1023)SRS {1} .srspositioning = false;%使能SRS进行用户定位
指定多个SRS序列
为第二个BWP指定第二个SRS序列。
srs {2} = srs {1};srs{2}。使= 0;srs{2}。标签=“SRS @ 30千赫”;srs{2}。BandwidthPartID = 2;srs{2}。NumSRSSymbols = 2;srs{2}。SymbolStart = 12;srs{2}。[5 6 7 8];srs{2}。Period = 10; srs{2}.BSRS = 0; srs{2}.BHop = 0;
本节将所有通道和信号参数分配给主载体配置对象nrulcarrierconfig
,然后生成并绘制波形图。
waveconfig。SCSCarriers = SCSCarriers;waveconfig。BandwidthParts = bwp;waveconfig。PUSCH = PUSCH;waveconfig。SRS = SRS;%产生复基带波形(波形信息]= nrWaveformGenerator (waveconfig);
绘制天线端口组基带波形的幅值。
数字;绘图(ABS(波形));标题(“5G上行基带波形的幅度”);包含(“样本指数”);ylabel (“级”);
第一个天线端口波形的绘图阶段。
samplerve = info.resourcegrids(1).info.samplerate;nfft = info.resourcegrids(1).info.nfft;数字;频谱图(波形(:,1),那些(NFFT,1),0,NFFT,“中心”samplerate,“桠溪”,'minthreshold', -130);标题(“5G上行基带波形谱图”);
波形发生器功能返回时域波形和结构信息
,它包含底层资源元素网格和波形中所有PUSCH和SRS实例使用的资源细分。
的资源格栅
Field是结构数组,它包含以下字段:
对应于每个BWP的资源网格
包含每个BWP中的信道和信号的总带宽的资源网格
具有与每个BWP对应的信息的信息结构。该第一BWP的此信息结构的内容如下所示。
DISP('与BWP 1相关的调制信息:') disp (info.ResourceGrids info) (1)
调制信息与BWP 1:NFFT:4096 SampleRe:61440000 CyclicPrefixLength:[1x14双] Symbollengths:[1x14双]窗口:0符号:[0 0 0 0 0 0 0 0 0 0 0 0 0 0]符号架:14 Slotspersubframe:1 Slotsperframe:10 K0:0
请注意,生成的资源网格是一个3D矩阵,其中不同的平面表示天线端口。对于不同的物理通道和信号,最低的端口映射到网格的第一个平面。