您的位置:首页 >科技 >

MATLAB示例:如何生成5G NR下行矢量波形?

时间:2021-08-23 14:16:47 来源:

说明

本文演示如何使用nrWaveformGenerator函数为基带组件载波配置和生成5G NR下行矢量波形。示例参考MATLAB官方的5G工具箱用户指南。

概述

本文演示如何使用nrWaveformGenerator函数参数化和生成5G新无线电(NR)下行波形。生成的波形包含这些信道和信号:

l PDSCH,以及与之相关的DM-RS和PT-RS

l PDCCH,以及与之相关的DM-RS

l PBCH,以及与之相关的DM-RS

l PSS和SSS

l SCI-RS

这个例子演示了如何参数化和生成基带分量载波波形,其特征是多个子载波间隔(SCS)载波和部分带宽(BWP)。我们可以在不同的BWP上生成物理下行共享通道(PDSCH)、物理下行控制通道(PDCCH)和信道状态信息参考信号(CSI-RS)的多个实例。可以配置控制资源集集(CORESET)和搜索空间监视机会来映射PDCCH。这个例子没有对物理信道和信号应用预编码。

波形和载波配置

基带波形由nrDLCarrierConfig对象和一组与波形通道和信号相关的附加对象进行参数化。

通过nrDLCarrierConfig对象,可以设置这些下行载波配置参数。

l DL载波配置标签

l SCS资源块中的载波带宽

l 载波单元ID

l 子帧中产生波形的长度

l 加窗

l OFDM调制波形的采样率

l 用于符号相位补偿的载波频率

可以使用nrSCSCarrierConfig对象的NStartGrid和NSizeGrid属性来控制SCS载波带宽和保护带宽。

%% ********************************************************%% 5G NR Dowlink Vetor Waveform Generation%% ********************************************************% Waveform and Carrier Configurationwaveconfig = nrDLCarrierConfig(); % Create an instance of the waveform's parameter objectwaveconfig.Label = 'DL carrier 1'; % Label for this downlink waveform configurationwaveconfig.NCellID = 0; % Cell identitywaveconfig.ChannelBandwidth = 40; % Channel bandwidth (MHz)waveconfig.FrequencyRange = 'FR1'; % 'FR1' or 'FR2'waveconfig.NumSubframes = 10; % Number of 1ms subframes in generated waveform waveconfig.WindowingPercent = 0; % Percentage of windowing relative to FFT lengthwaveconfig.SampleRate = []; % Sample rate of the OFDM modulated waveformwaveconfig.CarrierFrequency = 0; % Carrier frequency in Hz. This property is used for symbol phase% compensation before OFDM modulation, not for upconversion% Define a set of SCS specific carriers, using the maximum sizes for a% 40 MHz NR channel. See TS 38.101-1 for more information on defined% bandwidths and guardband requirementsscscarriers = {nrSCSCarrierConfig(),nrSCSCarrierConfig()};scscarriers{1}.SubcarrierSpacing = 15;scscarriers{1}.NSizeGrid = 216;scscarriers{1}.NStartGrid = 0;scscarriers{2}.SubcarrierSpacing = 30;scscarriers{2}.NSizeGrid = 106;scscarriers{2}.NStartGrid = 1;

SS Burst

在本节中,可以设置SS (signal synchronization)猝发的参数。SS爆发的数字学可能与波形的其他部分不同。这是通过块模式参数指定的,如TS 38.213节4.1所述。bitmap指定在5ms半帧猝发中要传输的块。您还可以设置以毫秒为单位的周期和猝发的功率。有关可配置SS猝发属性的完整列表,请参见nrWavegenSSBurstConfig。

% SS burst configurationssburst = nrWavegenSSBurstConfig();ssburst.Enable = 1; % Enable SS Burstssburst.Power = 0; % Power scaling in dBssburst.BlockPattern = 'Case B'; % Case B (30kHz) subcarrier spacingssburst.TransmittedBlocks = [1 1 1 1]; % Bitmap indicating blocks transmitted in a 5ms half-frame ssburst.Period = 20; % SS burst set periodicity in ms (5, 10, 20, 40, 80, 160)ssburst.NCRBSSB = []; % Frequency offset of SS burst (CRB), use [] for the wavefo

部分带宽(BWP)

BWP由在给定的载波上共享参数集的一组连续资源组成。可以使用单元格数组定义多个BWP。nrWavegenBWPConfig对象的单元格数组中的每个元素都定义了一个BWP。对于每个BWP,可以指定SCS、循环前缀(CP)长度和带宽。SubcarrierSpacing属性将BWP映射到前面定义的某个SCS特定载波。NStartBWP属性控制BWP在载波中的位置,相对于点A。这是根据BWP参数集用公共资源块(CRB)表示的。不同的BWP可以相互重叠。

% Bandwidth parts configurationsbwp = {nrWavegenBWPConfig(),nrWavegenBWPConfig()};bwp{1}.BandwidthPartID = 1; % Bandwidth part IDbwp{1}.Label = 'BWP @ 15 kHz'; % Label for this BWPbwp{1}.SubcarrierSpacing = 15; % BWP subcarrier spacingbwp{1}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 15 kHzbwp{1}.NSizeBWP = 25; % Size of BWP in PRBsbwp{1}.NStartBWP = 12; % Position of BWP, relative to point A (i.e. CRB)bwp{2}.BandwidthPartID = 2; % Bandwidth part IDbwp{2}.Label = 'BWP @ 30 kHz'; % Label for this BWPbwp{2}.SubcarrierSpacing = 30; % BWP subcarrier spacingbwp{2}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 30 kHzbwp{2}.NSizeBWP = 50; % Size of BWP in PRBsbwp{2}.NStartBWP = 51; % Position of BWP, relative to point A (i.e. CRB)

CORESET和搜索空间配置

本节指定CORESET和PDCCH搜索空间配置。CORESET和搜索空间为给定的参数集指定了控制信道传输的可能位置(在时间和频率上)。

nrCORESETConfig对象的单元格数组中的每个元素定义了一个CORESET, nrSearchSpaceConfig对象的单元格数组中的每个元素定义了一个搜索空间。

为每个CORESET和搜索空间设置这些参数:

l 指定slot中每个CORESET监视机会的第一个符号的OFDM符号

l 块在一个周期内已分配slot的持续时间

l 分配模式的周期性

l 符号中CORESET持续时间,可以是1、2或3

l 定义CORESET中已分配的物理资源块(PRB)的bitmap。CORESET频率分配定义在6个PRB块中,相对于点A,按CRB编号对齐。bitmap中的每个bit选择包含它的CRB对齐块中的所有6个PRB

l CCE-to-REG映射,可“交织”或“非交织”

l 基于CORESET持续时间的资源元素组(REG) bundle大小(L),可以是(2,6)或(3,6)

l 交织器大小, 2,3,或6

l 移位索引,范围为0…274

下图显示了一些CORESET参数的含义。

% CORESET and search space configurationscoresets = {nrCORESETConfig()};coresets{1}.CORESETID = 1; % CORESET IDcoresets{1}.Duration = 3; % CORESET symbol duration (1,2,3)coresets{1}.FrequencyResources = [1 1 0 1]; % Bitmap indicating blocks of 6 PRB for CORESET coresets{1}.CCEREGMapping = 'noninterleaved'; % Mapping: 'interleaved' or 'noninterleaved'coresets{1}.REGBundleSize = 3; % L (2,6) or (3,6)coresets{1}.InterleaverSize = 2; % R (2,3,6)coresets{1}.ShiftIndex = waveconfig.NCellID; % Set to NCellIDsearchspaces = {nrSearchSpaceConfig()};searchspaces{1}.SearchSpaceID = 1; % Search space IDsearchspaces{1}.CORESETID = 1; % CORESET associated with this search spacesearchspaces{1}.SearchSpaceType = 'ue'; % Search space type, 'ue' or 'common'searchspaces{1}.SlotPeriodAndOffset = [5,0]; % Allocated slot period and slot offset of search searchspaces{1}.Duration = 2; % Number of slots in the block of slots in pattern searchspaces{1}.StartSymbolWithinSlot = 0; % First symbol of each CORESET monitoring opportunitysearchspaces{1}.NumCandidates = [8 8 4 2 0]; % Number of candidates at each AL

PDCCH实例配置

本节通过使用单元格数组指定波形中的PDCCH实例集。

nrWavegenPDCCHConfig对象的cell数组中的每个元素都定义了一个PDCCH实例序列。

为每个PDCCH序列设置这些参数:

l 启用或禁用这个PDCCH序列

l 为这个PDCCH序列指定一个标签

l 指定携带PDCCH的BWP。PDCCH使用为本BWP指定的SCS

l 功率缩放Db

l 启用或禁用下行控制信息(DCI)信道编码

l 在CORESET监视场合序列中分配的搜索空间

l 携带PDCCH实例的搜索空间(和CORESET)

l slot分配的周期。空周期表示没有重复

l PDCCH的聚合级别(AL)(控制通道单元数)

l 指定用于传输PDCCH的CCE的已分配候选项

l RNTI

l 对这个PDCCH及其相关DM-RS的NID进行置乱

l DM-RS功率放大dB

l DCI消息有效负载大小

l DCI消息数据源。您可以使用位数组或这些标准PN序列中的一个:'PN9- itu ', 'PN9', 'PN11', 'PN15', 'PN23'。生成器的种子可以使用格式为{'PN9', seed}的单元格数组指定。如果没有指定种子,则用所有种子初始化生成器

% PDCCH Instances Configurationpdcch = {nrWavegenPDCCHConfig()};pdcch{1}.Enable = 1 ; % Enable PDCCH sequencepdcch{1}.Label = 'PDCCH @ 15 kHz'; % Label for this PDCCH sequencepdcch{1}.BandwidthPartID = 1; % Bandwidth part of PDCCH transmissionpdcch{1}.Power = 1.1; % Power scaling in dBpdcch{1}.Coding = 1; % Enable DCI codingpdcch{1}.SearchSpaceID = 1; % Search spacepdcch{1}.SlotAllocation = 0; % Allocated slots indices for PDCCH sequencepdcch{1}.Period = 5; % Allocation period in slotspdcch{1}.AggregationLevel = 8; % Aggregation level (1,2,4,8,16 CCEs)pdcch{1}.AllocatedCandidate = 1; % PDCCH candidate in search space (1 based)pdcch{1}.RNTI = 0; % RNTIpdcch{1}.DMRSScramblingID = 1; % PDCCH and DM-RS scrambling NIDpdcch{1}.DMRSPower = 0; % Additional DM-RS power boosting in dBpdcch{1}.DataBlockSize = 20; % DCI payload sizepdcch{1}.DataSource = 'PN9'; % DCI data source

PDSCH实例配置

本节通过使用单元格数组指定波形中的PDSCH实例集。

nrWavegenPDSCHConfig对象的cell数组中的每个元素都定义了一个PDSCH实例序列。本例定义了两个PDSCH序列。

常规参数

为每个PDSCH序列设置这些参数:

l 启用或禁用此PDSCH序列

l 为这个PDSCH序列指定一个标签

l 指定携带PDSCH的BWP。PDSCH使用为本BWP指定的SCS

l 功率缩放dB

l 启用或禁用DL-SCH传输信道编码

l 传输块数据源。您可以使用位数组或这些标准PN序列中的一个:'PN9- itu ', 'PN9', 'PN11', 'PN15', 'PN23'。生成器的种子可以使用格式为{'PN9', seed}的单元格数组指定。如果没有指定种子,则用所有种子初始化生成器

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

l 开销参数

l 符号调制

l 层数

l 冗余版本RV序列

l 启用/禁用交织虚拟资源块映射与物理资源块映射

l 交织映射的束大小,由更高层参数vrb-ToPRBInterleaver指定

% PDSCH Instances Configurationpdsch = {nrWavegenPDSCHConfig()};pdsch{1}.Enable = 1; % Enable PDSCH sequencepdsch{1}.Label = 'PDSCH @ 15 kHz'; % Label for this PDSCH sequencepdsch{1}.BandwidthPartID = 1; % Bandwidth part of PDSCH transmissionpdsch{1}.Power = 0; % Power scaling in dBpdsch{1}.Coding = 1; % Enable the DL-SCH transport channel codingpdsch{1}.DataSource = 'PN9'; % Channel data sourcepdsch{1}.TargetCodeRate = 0.4785; % Code rate used to calculate transport block sizespdsch{1}.XOverhead = 0; % Rate matching overheadpdsch{1}.Modulation = 'QPSK'; % 'QPSK', '16QAM', '64QAM', '256QAM'pdsch{1}.NumLayers = 2; % Number of PDSCH layerspdsch{1}.RVSequence = [0,2,3,1]; % RV sequence to be applied cyclically across the PDSCH allocation pdsch{1}.VRBToPRBInterleaving = 0; % Disable interleaved resource mappingpdsch{1}.VRBBundleSize = 2; % vrb-ToPRB-Interleaver parameter

分配

这个图表示了在PDSCH分配中使用的一些参数

可以设置以下参数来控制PDSCH分配。这些参数是相对于BWP的。指定的PDSCH分配将避免用于SS突发的位置。

l 分配给每个PDSCH实例的slot中的符号

l 用于PDSCH序列的帧中的slot

l slot分配的周期。空周期表示没有重复

l 相对于BWP分配的PRB

l RNTI。此值用于将PDSCH链接到PDCCH的一个实例

l 加扰PDSCH bit的NID

如果需要,可以指定CORESET和PRB的集合来进行速率匹配。

l PDSCH可以围绕一个或多个CORESET进行速率匹配

l PDSCH可以与其他资源分配进行速率匹配

% Allocationpdsch{1}.SymbolAllocation = [2,9]; % First symbol and lengthpdsch{1}.SlotAllocation = 0:9; % Allocated slot indices for PDSCH sequencepdsch{1}.Period = 15; % Allocation period in slotspdsch{1}.PRBSet = [0:5, 10:20]; % PRB allocationpdsch{1}.RNTI = 0; % RNTIpdsch{1}.NID = 1; % Scrambling for data partpdsch{1}.ReservedCORESET = 1; % Rate matching pattern, defined by CORESET IDspdsch{1}.ReservedPRB{1}.PRBSet = []; % Rate matching pattern, defined by set of PRB (RRC 'bitmaps')pdsc {1}.ReservedPRB{1}.SymbolSet = [];pdsch{1}.ReservedPRB{1}.Period = [];

PDSCH DM-RS配置

设置DM-RS参数。

% PDSCH DM-RS Configuration% Antenna port and DM-RS configuration (TS 38.211 section 7.4.1.1)pdsch{1}.MappingType = 'A'; % PDSCH mapping type ('A'(slot-wise),'B'(non slot-wise))pdsch{1}.DMRSPower = 0; % Additional power boosting in dBpdsch {1}.DMRS.DMRSConfigurationType = 2; % DM-RS configuration type (1,2)pdsch{1}.DMRS.NumCDMGroupsWithoutData = 1; % Number of DM-RS CDM groups without data. The value canpdsch {1}.DMRS.DMRSPortSet = []; % DM-RS antenna ports used ([] gives port numbers 0:NumLayers-1pdsch {1}.DMRS.DMRSTypeAPosition = 2; % Mapping type A only. First DM-RS symbol position (2,3)pdsch{1}.DMRS.DMRSLength = 1; % Number of front-loaded DM-RS symbols (1(single symbol),pdsch{1}.DMRS.DMRSAdditionalPosition = 0; % Additional DM-RS symbol positions (max range 0...3)pdsch{1}.DMRS.NIDNSCID = 1; % Scrambling identity (0...65535)pdsch {1}.DMRS.NSCID = 0; % Scrambling initialization (0,1)

PDSCH PT-RS 配置

设置PT-RS参数。

当PT-RS使能时,DM-RS配置类型1的DM-RS端口范围为0 ~ 3,DM-RS配置类型2的DM-RS端口范围为0 ~ 5。PT-RS的天线端口名义上是最小的DM-RS端口。

% PDSCH PT-RS Configuration% PT-RS configuration (TS 38.211 section 7.4.1.2)pdsch{1}.EnablePTRS = 0; % Enable or disable the PT-RS (1 or 0)pdsch{1}.PTRSPower = 0; % Additional PT-RS power boosting in dBpdsch{1}.PTRS.TimeDensity = 1; % Time density (L_PT-RS) of PT-RS (1,2,4)pdsch{1}.PTRS.FrequencyDensity = 2; % Frequency density (K_PT-RS) of PT-RS (2,4)pdsch{1}.PTRS.REOffset = '00'; % PT-RS resource element offset ('00','01','10','11')pdsch{1}.PTRS.PTRSPortSet = 0; % PT-RS antenna ports must be a subset of DM-RS ports指定多个PDSCH实例

为第二个BWP指定第二个PDSCH序列。

% Specifying Multiple PDSCH Instancespdsch{2} = pdsch{1};pdsch{2}.Enable = 1;pdsch{2}.Label = 'PDSCH @ 30 kHz';pdsch{2}.BandwidthPartID = 2; % PDSCH mapped to 2nd BWPpdsch{2}.SymbolAllocation = [0,12];pdsch{2}.SlotAllocation = [2:4,6:20];pdsch{2}.PRBSet = [25:30, 35:38]; % PRB allocation, relative to BWP

CSI-RS 实例配置

本节介绍了波形中CSI-RS的配置。nrWavegenCSIRSConfig对象的单元格数组中的每个元素定义了一组与BWP相关联的CSI-RS资源。这个示例定义了两组被禁用的CSI-RS资源。

% CSI-RS Instances Configurationcsirs = {nrWavegenCSIRSConfig()};csirs{1}.Enable = 0;csirs{1}.Label = 'CSI-RS @ 15 kHz';csirs{1}.BandwidthPartID = 1;csirs{1}.Power = 3; % Power scaling in dB

常规参数

为一组CSI-RS资源设置这些参数:

l 启用或禁用此CSI-RS资源集

l 为这组CSI-RS资源指定一个标签

l 指定携带这组CSI-RS资源的BWP。CSI-RS资源配置使用为这个BWP指定的SCS

l 指定以dB为单位的功率缩放。提供标量定义单个CSI-RS资源或所有配置的CSI-RS资源的功率缩放。提供向量为每个CSI-RS资源定义一个单独的功率级别。

CSI-RS配置

可以为一个或多个零功率(ZP)或非零功率(NZP) CSI-RS资源配置配置这些参数。

l CSI-RS资源类型('nzp','zp')

l CSI-RS资源行数,如TS38.211 表7.4.1.5.3-1(1…18)定义

l CSI-RS资源的频率密度。它可以是' 1 ',' 3 ','dot5even'或'dot5odd'

l 资源块(RB)内的CSI-RS资源的子载波位置

l 分配给CSI-RS资源的RB数量(1…275)

l 起始相对于载波资源网格的SCI-RS资源分配的RB索引(0…274)

l Slot内CSI-RS资源的OFDM符号位置

l CSI-RS资源slot的周期和偏移量(基于0)。该参数可以是向量或向量单元格数组。在后一种情况下,每个单元格对应一个单独的CSI-RS资源。对于向量,所有CSI-RS资源使用相同的slot集。

l 加扰标识对应于用于生成伪随机序列的CSI-RS资源(0…1023)

% CSI-RS Instances Configurationcsirs = {nrWavegenCSIRSConfig()};csirs{1}.Enable = 0;csirs{1}.Label = 'CSI-RS @ 15 kHz';csirs{1}.BandwidthPartID = 1;csirs{1}.Power = 3; % Power scaling in dB% CSI-RS Configurationcsirs{1}.CSIRSType = {'nzp','zp'};csirs{1}.RowNumber = [3 5];csirs{1}.Density = {'one','one'};csirs{1}.SubcarrierLocations = {6,4};csirs{1}.NumRB = 25;csirs{1}.RBOffset = 12;csirs{1}.SymbolLocations = {13,9};csirs{1}.CSIRSPeriod = {[5 0],[5 0]};csirs{1}.NID = 5;

指定多个CSI-RS实例

为第二个BWP指定第二组CSI-RS资源。

% Specifying Multiple CSI-RS Instancescsirs{2} = nrWavegenCSIRSConfig();csirs{2}.Enable = 0;csirs{2}.Label = 'CSI-RS @ 30 kHz';csirs{2}.BandwidthPartID = 2;csirs{2}.Power = 3; % Power scaling in dBcsirs{2}.CSIRSType = {'nzp','nzp'};csirs{2}.RowNumber = [1 1];csirs{2}.Density = {'three','three'};csirs{2}.SubcarrierLocations = {0,0};csirs{2}.NumRB = 50;csirs{2}.RBOffset = 50;csirs{2}.SymbolLocations = {6,10};csirs{2}.CSIRSPeriod = {[10,1],[10,1]};csirs{2}.NID = 0;

波形生成

本节将所有信道和信号参数分配到主载波配置对象nrDLCarrierConfig中,然后生成波形并绘制波形图。

% Waveform Generationwaveconfig.SSBurst = ssburst;waveconfig.SCSCarriers = scscarriers;waveconfig.BandwidthParts = bwp;waveconfig.CORESET = coresets;waveconfig.SearchSpaces = searchspaces;waveconfig.PDCCH = pdcch;waveconfig.PDSCH = pdsch;waveconfig.CSIRS = csirs;% Generate complex baseband waveform[waveform,info] = nrWaveformGenerator(waveconfig);% Plot the magnitude of the baseband waveform for the set of antenna ports defined.figure;plot(abs(waveform));title('Magnitude of 5G Downlink Baseband Waveform');xlabel('Sample Index');ylabel('Magnitude');

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

% Plot spectogram of waveform for first antenna port.samplerate = info.ResourceGrids(1).Info.SampleRate;nfft = info.ResourceGrids(1).Info.Nfft;figure;spectrogram(waveform(:,1),ones(nfft,1),0,nfft,'centered',samplerate,'yaxis','MinThreshold',-130);title('Spectrogram of 5G Downlink Baseband Waveform');disp('Modulation information associated with BWP 1:')disp(info.ResourceGrids(1).Info)

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

ResourceGrids字段是结构数组,它包含这些字段:

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

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

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

关于使用nrWaveformGenerator函数生成5G NR下行矢量波形的介绍,就到这里。更多关于NR 下行信道和参考信号等详细内容说明,请参考3GPP TS38系列技术规范。


郑重声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。