主要内容

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 对象的 NStartGridNSizeGrid 属性来控制 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');

波形生成器函数返回时域波形和结构体 infoinfo 结构体包含底层资源元素网格,以及波形中所有 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

生成的资源网格是一个三维矩阵。网格中的不同平面表示天线端口,按端口号升序排列。

另请参阅

函数

对象

主题