Main Content

nrDLCarrierConfig

5G downlink waveform configuration parameters

Description

The nrDLCarrierConfig object sets the parameters of a single-component-carrier 5G downlink waveform. Use this object to configure 5G downlink waveform generation when calling the nrWaveformGenerator function.

This object defines these aspects of the downlink waveform:

  • Frequency range

  • Channel bandwidth

  • Cell identity

  • Waveform duration

  • Subcarrier spacing (SCS) carriers

  • Bandwidth parts (BWPs)

  • Synchronization signal (SS) burst

  • Control resource sets (CORESETs)

  • Search spaces

  • Physical downlink control channel (PDCCH) and PDCCH demodulation reference signal (DM-RS)

  • Physical downlink shared channel (PDSCH), PDSCH DM-RS, and PDSCH phase-tracking reference signal (PT-RS)

  • Channel state information reference signal (CSI-RS)

Creation

Description

cfgDL = nrDLCarrierConfig creates a default single-component-carrier 5G downlink waveform configuration object.

example

cfgDL = nrDLCarrierConfig(Name,Value) sets properties using one or more name-value pair arguments. Enclose each property name in quotes. For example, 'FrequencyRange','FR2' specifies a downlink waveform for frequency range 2 (FR2).

Properties

expand all

Name of the downlink carrier configuration, specified as a character array or string scalar. Use this property to set a description to the downlink carrier configuration.

Data Types: char | string

Frequency range, specified as one of these values.

  • 'FR1' for frequency range 1 (FR1)

  • 'FR2' for frequency range 2 (FR2)

Data Types: char | string

Channel bandwidth, in MHz, specified as one of these values.

  • 5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, or 100 for FR1

  • 50, 100, 200, or 400 for FR2

Set the frequency range with the FrequencyRange property.

Data Types: double

Physical layer cell identity, specified as an integer from 0 to 1007.

Data Types: double

Waveform duration in subframes (multiples of 1 ms), specified as a positive integer. The default value of 10 subframes corresponds to one frame.

Data Types: double

Windowing percentage relative to the fast Fourier transform (FFT) length, specified as one of these values.

  • Real scalar from 0 to 50 — The object sets the same windowing percentage for all combinations of SCS and cyclic prefix.

  • Six-element row vector of the form [w1 w2 w3 w4 w5 w6 ], where each element is a real scalar from 0 to 50 — The object sets individual windowing percentage for the different SCS and cyclic prefix combinations.

    • w1 specifies the windowing percentage for 15 kHz SCS.

    • w2 specifies the windowing percentage for 30 kHz SCS.

    • w3 specifies the windowing percentage for 60 kHz SCS and normal cyclic prefix.

    • w4 specifies the windowing percentage for 60 kHz SCS and extended cyclic prefix.

    • w5 specifies the windowing percentage for 120 kHz SCS.

    • w6 specifies the windowing percentage for 240 kHz SCS.

  • [] — The object automatically selects the windowing percentage of each SCS carrier (specified by SCSCarriers) based on the SampleRate property and these additional properties.

    • The NSizeGrid and SubcarrierSpacing properties of the actual SCS carrier.

    • The CyclicPrefix property of the actual BWP specified by the BandwidthParts property.

    For more information, see the 'Windowing' name-value argument description of the nrOFDMModulate function.

This property configures the number of time-domain samples, as a percentage of the FFT length, over which windowing and overlapping of the OFDM symbols take place.

Data Types: double

Sample rate of the OFDM-modulated waveform, specified as [] or a positive integer scalar. When you set this value to [], the object sets the sample rate to the minimum value that accommodates all carriers in the waveform without aliasing.

Carrier frequency in Hz, specified as a real number. This property corresponds to f0, defined in TS 38.211 Section 5.4, and is used for symbol phase compensation before OFDM modulation.

Data Types: double

One or more SCS carrier configurations, specified as a cell array of nrSCSCarrierConfig objects. Because this property configures the subcarrier spacing and grid size of each numerology, each nrSCSCarrierConfig object in the cell array must have a unique SubcarrierSpacing property value.

One or more BWP configurations, specified as a cell array of nrWavegenBWPConfig objects. The SubcarrierSpacing properties of these BWP objects must be one of the values defined by the SubcarrierSpacing properties of the carriers specified by the SCSCarriers property.

SS burst configuration, specified as an nrWavegenSSBurstConfig object. Use this property to configure the SS burst and blocks.

One or more CORESET configurations, specified as a cell array of nrCORESETConfig objects. Use this property to specify different CORESET configurations for multiple search spaces and PDCCH.

One or more search space set configurations, specified as a cell array of nrSearchSpaceConfig objects. Use this property to specify different search space set configurations for linking to a CORESET and for multiple PDCCH.

One or more PDCCH configurations, specified as a cell array of nrWavegenPDCCHConfig objects. Use this property to configure different PDCCH and associated DM-RS.

One or more PDSCH configurations, specified as a cell array of nrWavegenPDSCHConfig objects. Use this property to configure different PDSCH and associated DM-RS and PT-RS.

One or more CSI-RS configurations, specified as a cell array of nrWavegenCSIRSConfig objects.

Examples

collapse all

Create an SCS carrier configuration object with the default SCS of 15 kHz and 100 resource blocks.

carrier = nrSCSCarrierConfig('NSizeGrid',100);

Create a customized BWP configuration object for the SCS carrier.

bwp = nrWavegenBWPConfig('NStartBWP',carrier.NStartGrid+10);

Create an SS burst configuration object with block pattern Case A.

ssb = nrWavegenSSBurstConfig('BlockPattern','Case A');

Create a PDCCH configuration object, specifying an aggregation of size two and the fourth candidate for the PDCCH instance.

pdcch = nrWavegenPDCCHConfig('AggregationLevel',2,'AllocatedCandidate',4);

Create a CORESET configuration object, specifying four frequency resources and a duration of three OFDM symbols.

coreset = nrCORESETConfig;
coreset.FrequencyResources = [1 1 1 1];
coreset.Duration = 3;

Create a search space set configuration object, specifying two aggregation levels.

ss = nrSearchSpaceConfig;
ss.NumCandidates = [8 4 0 0 0];

Create a PDSCH configuration object, specifying the modulation scheme and the target code rate. Enable the PDSCH PT-RS.

pdsch = nrWavegenPDSCHConfig( ...
    'Modulation','16QAM','TargetCodeRate',658/1024,'EnablePTRS',true);

Create a PDSCH DM-RS and a PDSCH PT-RS configuration object with the specified property values.

dmrs = nrPDSCHDMRSConfig('DMRSTypeAPosition',3);
pdsch.DMRS = dmrs;
ptrs = nrPDSCHPTRSConfig('TimeDensity',2);
pdsch.PTRS = ptrs;

Create a CSI-RS configuration object with the specified property values.

csirs = nrWavegenCSIRSConfig('RowNumber',4,'RBOffset',10);

Create a single-user 5G downlink waveform configuration object, specifying the previously defined configurations.

cfgDL = nrDLCarrierConfig( ...
    'FrequencyRange','FR1', ...
    'ChannelBandwidth',40, ...
    'NumSubframes',20, ...
    'SCSCarriers',{carrier}, ...
    'BandwidthParts',{bwp}, ...
    'SSBurst',ssb, ...
    'CORESET',{coreset}, ...
    'SearchSpaces',{ss}, ...
    'PDCCH',{pdcch}, ...
    'PDSCH',{pdsch}, ...
    'CSIRS',{csirs});

Generate a 5G downlink waveform using the specified configuration.

waveform = nrWaveformGenerator(cfgDL);

Create two SCS carrier configuration objects with mixed numerologies and custom numbers of resource blocks.

carriers = {
    nrSCSCarrierConfig('SubcarrierSpacing',15,'NStartGrid',10,'NSizeGrid',100), ...
    nrSCSCarrierConfig('SubcarrierSpacing',30,'NStartGrid',0,'NSizeGrid',70)};
    

Create two custom BWP configuration objects, one for each of the carriers.

bwp = {
    nrWavegenBWPConfig('BandwidthPartID',1,'SubcarrierSpacing',15,'NStartBWP',10,'NSizeBWP',80), ...
    nrWavegenBWPConfig('BandwidthPartID',2,'SubcarrierSpacing',30,'NStartBWP',0,'NSizeBWP',60)};

Create an SS burst configuration object with block pattern Case A, corresponding to an SCS of 15 kHz.

ssb = nrWavegenSSBurstConfig('BlockPattern','Case A');

Create two PDCCH configuration objects.

pdcch = {
    nrWavegenPDCCHConfig('SearchSpaceID',1,'BandwidthPartID',1,'RNTI',1,'DMRSScramblingID',1), ...
    nrWavegenPDCCHConfig('SearchSpaceID',2,'BandwidthPartID',2,'RNTI',2,'DMRSScramblingID',2, ...
        'AggregationLevel',4)};
    

Create two CORESET configuration objects and two search space set configuration objects for the two PDCCH.

coreset = {
    nrCORESETConfig('CORESETID',1,'FrequencyResources',[1 1 1 1 1 0 0 0 0 0 1],'Duration',3), ...
    nrCORESETConfig('CORESETID',2,'FrequencyResources',[0 0 0 0 0 0 0 0 1 1])};

ss = {
    nrSearchSpaceConfig('SearchSpaceID',1,'CORESETID',1,'StartSymbolWithinSlot',4), ...
    nrSearchSpaceConfig('SearchSpaceID',2,'CORESETID',2,'NumCandidates',[8 8 4 0 0])};

Create two PDSCH configuration objects with mixed modulation schemes.

pdsch = {
    nrWavegenPDSCHConfig('BandwidthPartID',1,'Modulation','16QAM','RNTI',1,'NID',1), ...
    nrWavegenPDSCHConfig('BandwidthPartID',2,'Modulation','QPSK','RNTI',2,'NID',2, ...
            'PRBSet', 50:59)};

Create two CSI-RS configuration objects.

 csirs = {
     nrWavegenCSIRSConfig('BandwidthPartID',1,'RowNumber',2,'RBOffset',10), ... 
     nrWavegenCSIRSConfig('BandwidthPartID',2,'Density','three','RowNumber',4)};

Create a multiuser 5G downlink waveform configuration object, specifying the previously defined configurations.

cfgDL = nrDLCarrierConfig( ...
    'FrequencyRange','FR1', ...
    'ChannelBandwidth',40, ...
    'NumSubframes',20, ...
    'SCSCarriers',carriers, ...
    'BandwidthParts',bwp, ...
    'SSBurst',ssb, ...
    'CORESET',coreset, ...
    'SearchSpaces',ss, ...
    'PDCCH',pdcch, ...
    'PDSCH',pdsch, ...
    'CSIRS',csirs);

Generate a 5G downlink waveform using the specified configuration.

waveform = nrWaveformGenerator(cfgDL);

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2020b