主要内容

5G NR上行矢量波形生成

该示例显示了如何通过使用波形发生器功能。

介绍

这个示例演示了如何使用参数化和生成5G新无线电(NR)上行波形波形发生器功能。生成的波形包含以下通道和信号:

  • PUSCH及其相关DM-RS和PT-RS

  • SRS

这个例子演示了如何参数化和生成基带分量载波波形,其特征是多个子载波间隔(SCS)载波和带宽部分(BWP)。您可以在不同的bwp上生成物理上行共享通道(PUSCH)和探测参考信号(SRS)的多个实例。

该示例还显示了如何使用CG-UCI和SRS在PUSCH上参数化和生成上行链路控制信息(UCI)以进行定位。

波形和载波配置

基带波形的产生由nrULCarrierConfig对象和一组与波形通道和信号相关的附加对象。

nrULCarrierConfig对象,您可以设置这些上行载波配置参数。

  • 此UL载波配置的标签

  • SCS以资源块为单位的载波带宽

  • 载体细胞ID

  • 以子帧为单位的生成波形的长度

  • 开窗

  • OFDM调制波形的采样率

  • 符号相位补偿的载波频率

您可以控制SCS载波带宽和保护带使用NStartGridNSizeGrid特性NRSCarrierConfig对象。

waveconfig = nrULCarrierConfig ();%创建波形参数对象的实例waveconfig。标签=“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。SampleRate = [];% OFDM调制波形的采样率waveconfig。CarrierFrequency = 0;%载波频率,单位为Hz。此属性用于符号阶段%OFDM调制前的补偿,不用于上转换%定义一组特定于SCS的载波,使用% 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}.标签=“15 kHz时的BWP”%此BWP的标签bwp{1}。子载波间隔=15;%子载波间隔bwp{1}.CyclicPrefix=“正常”% BWP循环前缀15千赫bwp{1}.nsizebp=25;prb中BWP的大小%bwp{1}。NStartBWP = 10;%BWP相对于点A(即CRB)的位置bwp{2}。BandwidthPartID = 2;%带宽部分IDbwp{2}。标签=“30 kHz时的BWP”%此BWP的标签bwp{2}。子载波间隔=30;%子载波间隔bwp{2}。CyclicPrefix =“正常”%30 kHz的BWP循环前缀bwp{2}。NSizeBWP = 51;prb中BWP的大小%bwp{2}。NStartBWP = 40;%BWP相对于点A(即CRB)的位置

PUSCH实例配置

本节通过使用单元格数组指定波形中的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,种子}.如果没有指定种子,则用所有种子初始化生成器

pusch={nrWavegenPUSCHConfig()};pusch{1}.Enable=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 =“代码本”%“码本”,“非码本”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}.跳频=“地块间”%槽内频率跳变('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'(时隙方向),'B'(非时隙方向))pusch{1}。SymbolAllocation = [0, 14];%第一个符号和长度pusch{1}.SlotAllocation=[01];%为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=[02];% 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)的加扰标识。使用空([])来使用物理层小区标识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.GroupHopping=true;%组跳转配置。此属性仅在启用转换预编码时使用pusch{1}.DMRS.SequenceHopping=false;%序列跳转配置。此属性仅在启用转换预编码时使用

这个GroupHopping属性在启用转换预编码时用于DM-RS序列生成。你可以设置GroupHopping:

  • “启用”指示是否存在组跳跃。由更高的层参数配置sequenceGroupHopping

  • “禁用”来表示序列跳变的存在。由上层参数配置跳序

  • “没有”表示不存在组跳转和序列跳转

没有数据的DM-RS CDM组的数量取决于配置类型。对于DM-RS配置类型1,DM-RS CDM组的最大数量可以是2个,对于DM-RS配置类型2,DM-RS CDM组的最大数量可以是3个。

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。TimeDensity = 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'% PT-RS资源元件偏移量CP-OFDM ('00','01','10','11')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 part1、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,种子}.如果没有指定种子,则用所有种子初始化生成器

  • 启用UCI的UL-SCH传输

  • UCIScaling是由高层参数提供的吗扩展,根据TS 38.212第6.3.2.4节

pusch{1}.EnableACK=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 =“地块间”;pusch{2}。NumLayers = 1;pusch{2}。RNTI = 0;pusch {2} .DMRS。GroupHopping= false; pusch{2}.DMRS.DMRSPortSet = 1;

SRS实例配置

本节配置波形中的SRS。的单元格数组中的每个元素nrWavegenSRSConfig对象定义与BWP关联的SRS实例序列。此示例定义了两个禁用的SRS序列。

一般参数

为每个SRS序列设置以下参数:

  • 启用或禁用此SRS序列

  • 为这个SRS序列指定一个标签

  • 指定携带此SRS序列的BWP。SRS序列配置使用为此BWP指定的SCS

  • 指定以dB为单位的功率缩放

srs={nrWavegenSRSConfig()};srs{1}.Enable=0;srs{1}.Label=“SRS@15 kHz”srs{1}.BandwidthPartID=1;srs{1}.Power=3;%以dB为单位的功率缩放

SRS配置

您可以为每个SRS序列配置以下参数:

  • SRS天线端口数

  • 分配给每个SRS序列的槽中的符号

  • 用于SRS传输的一段时间内的槽

  • 槽位分配的周期。空周期表示没有重复

  • RBs中BWP中SRS序列的起始位置

  • 额外的频率偏移从4-PRB块的起始位置

  • 带宽和频率跳频配置。占用带宽取决于属性CSR,建筑,必和必拓.集BHop <建筑启用跳频

  • 用于指定子载波中SRS频率密度的传输梳

  • 子载波中传输梳的偏移量

  • 循环移位旋转低PAPR基序列。循环移位的最大数目8或12取决于传输梳数2或4。对于4个SRS天线端口,分配给第一和第三天线端口中SRS的子载波集取决于循环移位

  • 插槽内重复的SRS符号数。它可以在数据块中禁用跳频重复符号,集合重复= 1不重复

  • 组或序列跳转。它可以是“没有”,“群居”“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)块中指定的与FreqStart的额外偏移量srs{1}.CSRS=13;%带宽配置C_SRS(0…63)。它控制分配给SRS的带宽srs{1}。建筑= 2;%带宽配置B_SRS(0…3)。它控制分配给SRS的带宽srs{1}。必和必拓= 1;%跳频配置(0…3)。设置BHop < BSRS使能跳频功能srs{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=“没有”%组或序列跳转('none'、'groupHopping'、'sequenceHopping')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上行基带波形的幅度”); xlabel(“样本指数”);ylabel (“震级”);

绘制第一个天线端口的波形频谱图。

samplerate = info.ResourceGrids (1) .Info.SampleRate;nfft = info.ResourceGrids (1) .Info.Nfft;图;光谱图(波形(:1)的(nfft, 1), 0, nfft,“中心”,采样器,“桠溪”,“MinThreshold”, -130);标题(“5G上行基带波形频谱图”);

波形发生器函数返回时域波形和结构信息,它包含底层资源元素网格和波形中所有PUSCH和SRS实例使用的资源细分。

这个资源网格字段是结构数组,其中包含以下字段:

  • 对应于每个BWP的资源网格

  • 包含每个BWP中的信道和信号的总带宽的资源网格

  • 一种信息结构,其信息与每个BWP相对应。第一个BWP的信息结构的内容如下所示。

disp('与BWP 1相关的调制信息:') disp (info.ResourceGrids info) (1)
与BWP 1:Nfft:4096采样器相关的调制信息:61440000循环校准长度:[1x14双精度]符号长度:[1x14双精度]窗口:0符号相位:[0 0 0 0 0 0 0 0 0]符号批次:14插槽子帧:1插槽性能帧:10 k0:0

请注意,生成的资源网格是一个3D矩阵,其中不同的平面表示天线端口。对于不同的物理通道和信号,最低的端口映射到网格的第一个平面。

另见

功能

物体

相关的话题