主要内容

5G NR上行矢量波形生成

本示例演示如何使用物理上行共享信道(PUSCH)和探测参考信号(SRS)为基带组件载波配置和生成5G NR上行矢量波形波形发生器函数。

介绍

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

  • PUSCH及其相关解调参考信号(DM-RS)和相位跟踪参考信号(PT-RS)

  • SRS

该示例中的基带分量载波波形的特征在于多个子载波间隔(SCS)载波和带宽部分(BWP),以及不同BWP上的多个PUSCH和SRS传输实例的序列。该示例还示出了如何使用CG-UCI和SRS参数化和生成PUSCH上的上行链路控制信息(UCI)以进行定位。

有关如何使用物理上行控制信道(PUCCH)生成5G上行波形的示例,请参见5G NR上行链路,采用PUCCH矢量波形生成

波形和载波配置

使用nrULCarrierConfig对象以参数化基带波形产生。该对象包含一组与波形通道和信号相关的附加对象,使您能够设置这些上行载波配置参数。

  • UL运营商配置的标签

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

  • 载体单元ID

  • 在子帧中生成的波形的长度

  • 开窗

  • OFDM调制波形的采样率

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

您可以使用备受控制器控制SCS载波带宽和保护带NStartGridnsizegrid.的属性NRSCarrierConfig对象。

waveconfig = nrULCarrierConfig;%创建上行运营商配置对象waveconfig。标签=“UL承运人1”此上行链路波形配置的%标签waveconfig。NCellID = 0;%细胞身份waveconfig.ChannelBandwidth=40;%通道带宽(MHz)waveconfig.FrequencyRange=“FR1”% 'FR1'或'FR2'waveconfig.NumSubframes=10;%生成波形中1 ms子帧的数量(每1 ms子帧1、2、4、8个时隙,取决于SCS)waveconfig.WindowingPercent=0;%开窗相对FFT长度的百分比waveconfig。SampleRate = [];%OFDM调制波形的采样率waveconfig.carierfrequency = 0;%载波频率,单位为Hz。此属性用于符号阶段OFDM调制前的赔偿%定义一组特定于SCS的载波,使用% 40 MHz NR信道。参见TS 38.101-1了解更多关于定义的信息%带宽和防护带要求。scscarriers={nrSCSCarrierConfig,nrSCSCarrierConfig};scscarriers{1}.子载波间隔=15;scscarriers{1}.NSizeGrid=216;scscarriers{1}.NStartGrid=0;scscarriers{2}.子载波间隔=30;scscarriers{2}.NSizeGrid=106;scscarriers{2}.NStartGrid=1;

BWPs

BWP由在给定的SCS载体上共享命数的一组连续资源组成。可以使用单元格数组定义多个bwp。单元格数组中的每个元素nrWavegenBWPConfig对象定义BWP。对于每个BWP,可以指定SCS、循环前缀(CP)长度和带宽。的子载波间隔属性将BWP链接到前面定义的某个SCS特定载波。的nstartbwp.属性控制载体中BWP的位置,相对于点A.nstartbwp.在BWP数字中以公共资源块(CRB)表示。不同的BWP可以彼此重叠。

% BWP配置bwp = {nrWavegenBWPConfig, nrWavegenBWPConfig};bwp{1}。BandwidthPartID = 1;% BWP IDbwp{1}.标签=“BWP 1 @ 15千赫”这个BWP的标签bwp{1}。SubcarrierSpacing = 15;%子载波间隔bwp{1}。CyclicPrefix =“正常”% BWP循环前缀15千赫bwp{1}.nsizebp=25;PRB中BWP的%大小bwp{1}.NStartBWP=10;在crb中BWP相对于A点的位置bwp{2}。BandwidthPartID = 2;% BWP IDbwp{2}。标签=“30 kHz时的BWP 2”这个BWP的标签bwp{2}。SubcarrierSpacing = 30;%子载波间隔bwp{2}。CyclicPrefix =“正常”% BWP循环前缀为30 kHzBWP {2} .nsizebwp = 51;PRB中BWP的%大小BWP {2} .nstartbwp = 40;在crb中BWP相对于A点的位置

PUSCH实例配置

使用单元数组指定波形中的PUSCH传输实例集。单元格数组中的每个元素nrWavegenPUSCHConfig对象定义了一个PUSCH传输实例序列。这个例子定义了两个PUSCH序列,用于模拟两个用户设备(UE)传输。

一般参数

为每个PUSCH序列设置这些参数。

  • 启用或禁用此PUSCH序列。

  • 为此PUSCH序列指定标签。

  • 指定携带PUSCH的BWP。PUSCH使用为此BWP指定的SCS。

  • DB中的电源缩放。

  • 启用或禁用UL-SCH传输信道编码。

  • RNTI。

  • NID用于扰乱PUSCH位。

  • 改变预编码。当变换预编码时真正的,变换预编码已启用,结果波形是DFT-S-OFDM。当变换预编码时,生成的波形为CP-OFDM。

  • 用于计算传输块大小的目标码率。

  • 开销参数。

  • 传输方案。当传输方案是“码”,启用MIMO预编码,并根据层数、天线端口数和发送的预编码矩阵指示符选择预编码矩阵'nonodebook',使用单位矩阵,导致没有MIMO预编码。

  • 灯象征。

  • 层数。随着只有一个代码字传输,层数在上行链路中最多限制为最多4个。名义上,当启用变换预编码时,图层的数量设置为1。忽略此值,当时dmr。PortSet属性指定。

  • 天线端口数。启用码本传输时使用。天线端口数必须大于或等于配置的DM-RS端口数。

  • 发送的预编码矩阵指示符。

  • 冗余版本(RV)序列。

  • 跳频。

  • 第二跳的资源块偏移。

  • 传输块数据源。您可以使用一系列比特或其中一个标准PN序列:“PN9-ITU”“PN9”“PN11”“PN15”“PN23”.您可以在表单中将生成器的种子指定为单元格数组{PN9,种子}.如果不指定种子,则用所有种子初始化生成器。

pusch={nrWavegenPUSCHConfig};%为第一个UE创建PUSCH配置对象pusch{1}.Enable=1;%启用PUSCH序列PUSCH {1} .Label =“UE 1-15 kHz时的脉冲频率”此PUSCH序列的%标签pusch{1}。BandwidthPartID = 1;PUSCH传播% BWPpusch{1}。权力= 0;%以dB为单位的功率缩放PUSCH {1} .coding = 1;%启用UL-SCH传输信道编码pusch{1}。NID = 1;%数据部分置乱pusch{1}。RNTI = 11;% RNTI为第一个UEpusch{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}。FrequencyHopping =“地块间”%跳频配置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} .period = 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)的加扰标识。使用空([])来使用物理层小区标识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

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

  • “没有”表示组跳变和序列跳变都不存在。

没有数据的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-RS端口的子集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.BetaOffsetCSI1BetaOffsetCSI2,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}.numgucibits=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};为第二个UE创建一个PUSCH配置对象PUSCH {2} .ENABLE = 1;pusch {2} .label =“UE 2-30 kHz时的脉冲频率”;pusch{2}。BandwidthPartID = 2;% PUSCH映射到第二个BWPpusch{2}。RNTI = 12;%第二UE的RNTIpusch{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 = 1;pusch {2} .DMRS。GroupHopping= false; pusch{2}.DMRS.DMRSPortSet = 1;

SRS实例配置

在波形中指定SRS。单元格数组中的每个元素nrwavenensrsconfig对象定义了与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.BSR.,BHop.集BHop <建筑使能跳频。

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

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

  • 循环移位,旋转低papr基序列。最大循环移位数,8或12,取决于传输梳数,2或4。对于4个SRS天线端口,分配给第1和第3天线端口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}。CSR.= 13;%带宽配置C_SRS(0…63)它控制分配给SRS的带宽srs{1}。BSR.= 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=“没有”%组或序列跳转('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 kHz';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(“级”);

绘制第一天线端口的波形的阶段。

samplerate = 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 SampleRate: 61440000 cyclicprefixlength:[320 288 288 288 288 288 288 320 288 288 288…]symbollength:[4416 4384 4384 4384 4384 4384 4384 4416 4384…]SymbolPhases: [0 0 0 0 0 0 0 0 0 0 0] SymbolsPerSlot: 14 SlotsPerSubframe: 1 SlotsPerFrame: 10 k0: 0

生成的资源网格是一个三维矩阵。网格中的不同平面以端口号递增的顺序表示天线端口。

另请参阅

功能

对象

相关话题