5G NR 下行链路向量波形生成
此示例说明如何使用 nrWaveformGenerator 函数为基带分量载波配置和生成 5G NR 下行链路向量波形。
简介
此示例说明如何使用 nrWaveformGenerator 函数参数化和生成 5G NR (New Radio) 下行链路波形。生成的波形包含以下信道和信号。
PDSCH 及其关联的 DM-RS 和 PT-RS
PDCCH 及其关联的 DM-RS
PBCH 及其关联的 DM-RS
PSS 和 SSS
CSI-RS
此示例说明如何参数化和生成由多个子载波间隔 (SCS) 载波和带宽部分 (BWP) 表征的基带分量载波波形。您可以在不同 BWP 上生成物理下行链路共享信道 (PDSCH)、物理下行链路控制信道 (PDCCH) 和信道状态信息参考信号 (CSI-RS) 的多个实例。您可以配置几组控制资源集 (CORESET) 和搜索空间监听时机,用于映射 PDCCH。此示例不对物理信道和信号应用预编码。
波形和载波配置
使用 nrDLCarrierConfig 对象可参数化基带波形生成。此对象包含一组与波形信道和信号关联的其他对象,使您能够设置以下下行链路载波配置参数。
此 DL 载波配置的标签
SCS 载波带宽(以资源块为单位)
载波小区 ID
生成波形的长度(以子帧为单位)
加窗
OFDM 调制波形的采样率
符号相位补偿的载波频率
您可以使用 nrSCSCarrierConfig 对象的 NStartGrid 和 NSizeGrid 属性来控制 SCS 载波带宽和保护带。
waveconfig = nrDLCarrierConfig; % Create a downlink carrier configuration object waveconfig.Label = 'DL carrier 1'; % Label for this downlink waveform configuration waveconfig.NCellID = 0; % Cell identity waveconfig.ChannelBandwidth = 40; % Channel bandwidth (MHz) waveconfig.FrequencyRange = 'FR1'; % 'FR1' or 'FR2' waveconfig.NumSubframes = 10; % Number of 1 ms subframes in generated waveform (1, 2, 4, 8 slots per 1 ms subframe, depending on SCS) waveconfig.WindowingPercent = 0; % Percentage of windowing relative to FFT length waveconfig.SampleRate = []; % Sample rate of the OFDM modulated waveform waveconfig.CarrierFrequency = 0; % Carrier frequency in Hz. This property is used for symbol phase % compensation before OFDM modulation % 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 requirements scscarriers = {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 突发
在本节中,您可以设置信号同步 (SS) 突发的参数。SS 突发的参数集可能与波形的其他部分不同。这是通过块模式参数指定的,如 TS 38.213 第 4.1 节所规定。位图指定了要在 5 毫秒的半帧突发中传输的块。您还可以设置突发的周期(以毫秒为单位)和功率。有关可配置 SS 突发属性的完整列表,请参阅 nrWavegenSSBurstConfig。
% SS burst configuration ssburst = nrWavegenSSBurstConfig; ssburst.Enable = 1; % Enable SS Burst ssburst.Power = 0; % Power scaling in dB ssburst.BlockPattern = 'Case B'; % Case B (30kHz) subcarrier spacing ssburst.TransmittedBlocks = [1 1 1 1]; % Bitmap indicating blocks transmitted in a 5ms half-frame burst 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 waveform center
BWP
BWP 由一组在给定 SCS 载波上共享一个参数集的连续资源构成。您可以使用元胞数组定义多个 BWP。nrWavegenBWPConfig 对象元胞数组中的每个元素定义一个 BWP。对于每个 BWP,您可以指定 SCS、循环前缀 (CP) 长度和带宽。SubcarrierSpacing 属性将 BWP 关联到之前定义的某个 SCS 特定的载波。NStartBWP 属性控制载波中 BWP 相对于 A 点的位置。NStartBWP 根据 BWP 参数集,以公共资源块 (CRB) 表示。不同的 BWP 可以相互重叠。

% BWP configurations bwp = {nrWavegenBWPConfig,nrWavegenBWPConfig}; bwp{1}.BandwidthPartID = 1; % BWP ID bwp{1}.Label = 'BWP 1 @ 15 kHz'; % Label for this BWP bwp{1}.SubcarrierSpacing = 15; % BWP subcarrier spacing bwp{1}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 15 kHz bwp{1}.NSizeBWP = 25; % Size of BWP in PRBs bwp{1}.NStartBWP = 12; % Position of BWP, relative to point A, in CRBs bwp{2}.BandwidthPartID = 2; % BWP ID bwp{2}.Label = 'BWP 2 @ 30 kHz'; % Label for this BWP bwp{2}.SubcarrierSpacing = 30; % BWP subcarrier spacing bwp{2}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 30 kHz bwp{2}.NSizeBWP = 50; % Size of BWP in PRBs bwp{2}.NStartBWP = 51; % Position of BWP, relative to point A, in CRBs
CORESET 和搜索空间配置
指定 CORESET 和 PDCCH 搜索空间配置。CORESET 和搜索空间指定了对于给定参数集,控制信道传输可能的位置(在时间和频率上)。nrCORESETConfig 对象元胞数组中的每个元素定义一个 CORESET,nrSearchSpaceConfig 对象元胞数组中的每个元素定义一个搜索空间。
为每个 CORESET 和搜索空间设置以下参数。
OFDM 符号,这些符号指定时隙中每个 CORESET 监听时机的第一个符号。
一个周期内分配的时隙块的持续时间。
分配模式的周期。
CORESET 持续时间,以符号表示,可以是 1、2 或 3。
定义 CORESET 的已分配物理资源块 (PRB) 的位图。CORESET 频率分配以 6 个 PRB 为一个整体块进行定义,并按照 CRB 编号相对于 A 点进行对齐。位图中的每一位都会选中包含该位的、CRB 对齐的块中的全部 6 个 PRB。
CCE 到 REG 的映射,可以是 'interleaved' 或 'noninterleaved'。
资源元素组 (REG) 捆绑包大小 (L),根据 CORESET 持续时间,可以是 (2,6) 或 (3,6)。
交织器大小,可以是 2、3 或 6。
移位索引,0...274 范围内的一个标量值。
下图显示了部分 CORESET 参数的含义。

% CORESET and search space configurations coresets = {nrCORESETConfig}; coresets{1}.CORESETID = 1; % CORESET ID coresets{1}.Duration = 3; % CORESET symbol duration (1,2,3) coresets{1}.FrequencyResources = [1 1 0 1]; % Bitmap indicating blocks of 6 PRB for CORESET (RRC - frequencyDomainResources) 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 NCellID searchspaces = {nrSearchSpaceConfig}; searchspaces{1}.SearchSpaceID = 1; % Search space ID searchspaces{1}.CORESETID = 1; % CORESET associated with this search space searchspaces{1}.SearchSpaceType = 'ue'; % Search space type, 'ue' or 'common' searchspaces{1}.SlotPeriodAndOffset = [5 0]; % Allocated slot period and slot offset of search space pattern searchspaces{1}.Duration = 2; % Number of slots in the block of slots in pattern period searchspaces{1}.StartSymbolWithinSlot = 0; % First symbol of each CORESET monitoring opportunity in a slot searchspaces{1}.NumCandidates = [8 8 4 2 0]; % Number of candidates at each AL (set to 0 if the AL doesn't fit in CORESET)
PDCCH 实例配置
使用元胞数组指定波形中的 PDCCH 传输实例集。nrWavegenPDCCHConfig 对象的元胞数组中的每个元素定义一个 PDCCH 实例序列。
为每个 PDCCH 序列设置以下参数。
启用或禁用此 PDCCH 序列。
为此 PDCCH 序列指定标签。
指定承载 PDCCH 的 BWP。PDCCH 使用为此 BWP 指定的 SCS。
功率缩放 (dB)。
启用或禁用下行链路控制信息 (DCI) 信道编码。
CORESET 监听时机序列内已分配的搜索空间。
承载 PDCCH 实例的搜索空间(和 CORESET)。
分配周期(以时隙为单位)。空周期表示不重复时隙模式。
PDCCH 的聚合级别 (AL)(控制信道元素 (CCE) 的数量)。
分配的候选项,指定用于传输 PDCCH 的 CCE。
RNTI。
此 PDCCH 及其关联 DM-RS 的加扰 NID。
DM-RS 功率提升 (dB)。
DCI 消息有效负载大小。
DCI 消息数据源。您可以使用比特数组或以下标准 PN 序列之一:
'PN9-ITU'、'PN9'、'PN11'、'PN15'、'PN23'。您可以将生成器的种子指定为{'PN9', seed}形式的元胞数组。如果没有指定种子,生成器将初始化为全部包含 1。
pdcch = {nrWavegenPDCCHConfig};
pdcch{1}.Enable = 1 ; % Enable PDCCH sequence
pdcch{1}.Label = 'UE 1 - PDCCH @ 15 kHz'; % Label for this PDCCH sequence
pdcch{1}.BandwidthPartID = 1; % Bandwidth part of PDCCH transmission
pdcch{1}.Power = 1.1; % Power scaling in dB
pdcch{1}.Coding = 1; % Enable DCI coding
pdcch{1}.SearchSpaceID = 1; % Search space
pdcch{1}.SlotAllocation = 0; % Allocated slots indices for PDCCH sequence
pdcch{1}.Period = 5; % Allocation period in slots
pdcch{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 = 11; % RNTI
pdcch{1}.DMRSScramblingID = 1; % PDCCH and DM-RS scrambling NID
pdcch{1}.DMRSPower = 0; % Additional DM-RS power boosting in dB
pdcch{1}.DataBlockSize = 20; % DCI payload size
pdcch{1}.DataSource = 'PN9'; % DCI data source
PDSCH 实例配置
使用元胞数组指定波形中的 PDSCH 传输实例集。nrWavegenPDSCHConfig 对象元胞数组中的每个元素定义一个 PDSCH 实例序列。此示例定义了两个 PDSCH 序列,用于对两个用户设备 (UE) 的传输进行建模。
常规参数
为每个 PDSCH 序列设置以下参数。
启用或禁用此 PDSCH 序列。
为此 PDSCH 序列指定标签。
指定承载 PDSCH 的 BWP。PDSCH 使用为此 BWP 指定的 SCS。
功率缩放 (dB)。
启用或禁用 DL-SCH 传输信道编码。
传输块数据源。您可以使用比特数组或以下标准 PN 序列之一:
'PN9-ITU'、'PN9'、'PN11'、'PN15'、'PN23'。您可以将生成器的种子指定为{'PN9', seed}形式的元胞数组。如果没有指定种子,生成器将初始化为全部包含 1。用于计算传输块大小的目标码率。
开销参数。
符号调制。
层数。
冗余版本 (RV) 序列。
启用或禁用虚拟资源块到物理资源块映射的交织。
交织映射的捆绑包大小,由高层参数 vrb-ToPRB-Interleaver 指定。
pdsch = {nrWavegenPDSCHConfig}; % Create a PDSCH configuration object for the first UE
pdsch{1}.Enable = 1; % Enable PDSCH sequence
pdsch{1}.Label = 'UE 1 - PDSCH @ 15 kHz'; % Label for this PDSCH sequence
pdsch{1}.BandwidthPartID = 1; % Bandwidth part of PDSCH transmission
pdsch{1}.Power = 0; % Power scaling in dB
pdsch{1}.Coding = 1; % Enable the DL-SCH transport channel coding
pdsch{1}.DataSource = 'PN9'; % Channel data source
pdsch{1}.TargetCodeRate = 0.4785; % Code rate used to calculate transport block sizes
pdsch{1}.XOverhead = 0; % Rate matching overhead
pdsch{1}.Modulation = 'QPSK'; % 'QPSK', '16QAM', '64QAM', '256QAM'
pdsch{1}.NumLayers = 2; % Number of PDSCH layers
pdsch{1}.RVSequence = [0 2 3 1]; % RV sequence to be applied cyclically across the PDSCH allocation sequence
pdsch{1}.VRBToPRBInterleaving = 0; % Disable interleaved resource mapping
pdsch{1}.VRBBundleSize = 2; % vrb-ToPRB-Interleaver parameter
分配
下图显示了 PDSCH 分配的参数。

您可以设置以下参数来控制 PDSCH 分配。这些参数均相对于 BWP。指定的 PDSCH 分配将避开用于 SS 突发的位置。
为每个 PDSCH 实例分配的时隙内符号。
用于 PDSCH 序列的帧内时隙。
分配周期(以时隙为单位)。空周期表示不重复时隙模式。
相对于 BWP 的已分配 PRB。
RNTI。此值用于将 PDSCH 关联到 PDCCH 实例。
用于对 PDSCH 比特进行加扰的 NID。
pdsch{1}.SymbolAllocation = [2 9]; % First symbol and length
pdsch{1}.SlotAllocation = 0:9; % Allocated slot indices for PDSCH sequence
pdsch{1}.Period = 15; % Allocation period in slots
pdsch{1}.PRBSet = [0:5, 10:20]; % PRB allocation
pdsch{1}.RNTI = 11; % RNTI for the first UE
pdsch{1}.NID = 1; % Scrambling for data part
如果需要,可以指定进行速率匹配所围绕的 CORESET 和 PRB 集
PDSCH 可以围绕一个或多个 CORESET 进行速率匹配。
PDSCH 可以围绕其他资源分配进行速率匹配。
pdsch{1}.ReservedCORESET = 1; % Rate matching pattern, defined by CORESET IDs
pdsch{1}.ReservedPRB{1}.PRBSet = []; % Rate matching pattern, defined by set of PRB (RRC 'bitmaps')
pdsch{1}.ReservedPRB{1}.SymbolSet = [];
pdsch{1}.ReservedPRB{1}.Period = [];
PDSCH DM-RS 配置
设置 DM-RS 参数。
% 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 dB pdsch{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 can be one of the set {1,2,3} pdsch{1}.DMRS.DMRSPortSet = []; % DM-RS antenna ports used ([] gives port numbers 0:NumLayers-1) pdsch{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),2(double 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 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 dB pdsch{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
当启用了 PT-RS 时,对于 DM-RS 配置类型 1,DM-RS 端口必须在 0 到 3 的范围内,对于 DM-RS 配置类型 2,则必须在 0 到 5 的范围内。名义上,PT-RS 的天线端口是 DM-RS 端口号最小的端口。
指定多个 PDSCH 实例
为第二个 BWP 指定第二个 PDSCH 序列。
pdsch{2} = pdsch{1}; % Create a PDSCH configuration object for the second UE
pdsch{2}.Enable = 1;
pdsch{2}.Label = 'UE 2 - PDSCH @ 30 kHz';
pdsch{2}.BandwidthPartID = 2; % PDSCH mapped to the second BWP
pdsch{2}.RNTI = 12; % RNTI for the second UE
pdsch{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 资源设置以下参数。
启用或禁用这组 CSI-RS 资源。
为这组 CSI-RS 资源指定标签。
指定承载这组 CSI-RS 资源的 BWP。CSI-RS 资源配置使用为此 BWP 指定的 SCS。
指定功率缩放 (dB)。通过提供一个标量,定义单个 CSI-RS 资源和所有已配置 CSI-RS 资源的功率缩放。通过提供一个向量,为每个 CSI-RS 资源定义单独的功率水平。
csirs = {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 配置
您可以针对一个或多个零功率 (ZP) 或非零功率 (NZP) CSI-RS 资源配置进行以下参数的配置。
CSI-RS 资源的类型 ('nzp','zp')。
行号 (1...18),对应于 TS 38.211 表 7.4.1.5.3-1 中定义的 CSI-RS 资源。
CSI-RS 资源的频域密度。可以为
'one'、'three'、'dot5even'或'dot5odd'。资源块 (RB) 内 CSI-RS 资源的子载波位置
分配给 CSI-RS 资源的 RB 数量 (1...275)。
CSI-RS 资源分配相对于载波资源网格的起始 RB 索引 (0...274)。
CSI-RS 资源在时隙内的 OFDM 符号位置。
CSI-RS 资源的时隙周期和偏移量(从 0 开始)。此参数可以是向量或向量元胞数组。如果是向量元胞数组,则每个元胞数组元素对应一个单独的 CSI-RS 资源。如果是向量,则对所有 CSI-RS 资源使用同一组时隙。
对应于 CSI-RS 资源的加扰标识,用于生成伪随机序列 (0...1023)。
csirs{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 资源。
csirs{2} = nrWavegenCSIRSConfig;
csirs{2}.Enable = 0;
csirs{2}.Label = 'CSI-RS @ 30 kHz';
csirs{2}.BandwidthPartID = 2;
csirs{2}.Power = 3; % Power scaling in dB
csirs{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,然后生成并绘制波形。
waveconfig.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);
绘制所定义的天线端口集的基带波形幅值。
figure; plot(abs(waveform)); title('Magnitude of 5G Downlink Baseband Waveform'); xlabel('Sample Index'); ylabel('Magnitude');

绘制第一个天线端口的波形频谱图。
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');

波形生成器函数返回时域波形和结构体 info。info 结构体包含底层资源元素网格,以及波形中所有 PDSCH 和 PDCCH 实例所使用资源的细分。
ResourceGrids 字段是一个结构体数组,其中包含以下字段。
每个 BWP 对应的资源网格。
包含每个 BWP 中的信道和信号的总体带宽资源网格。
包含每个 BWP 的对应信息的 info 结构体。例如,显示第一个 BWP 的信息。
disp('Modulation information associated with BWP 1:')
disp(info.ResourceGrids(1).Info)
Modulation information associated with BWP 1:
Nfft: 4096
SampleRate: 61440000
CyclicPrefixLengths: [320 288 288 288 288 288 288 320 288 … ] (1×14 double)
SymbolLengths: [4416 4384 4384 4384 4384 4384 4384 … ] (1×14 double)
Windowing: 0
SymbolPhases: [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
SymbolsPerSlot: 14
SlotsPerSubframe: 1
SlotsPerFrame: 10
k0: 0

生成的资源网格是一个三维矩阵。网格中的不同平面表示天线端口,按端口号升序排列。
另请参阅
函数
对象
nrWavegenBWPConfig|nrSCSCarrierConfig|nrULCarrierConfig|nrWavegenPDSCHConfig|nrWavegenSSBurstConfig|nrSearchSpaceConfig|nrWavegenPDCCHConfig|nrCORESETConfig|nrWavegenCSIRSConfig