Main Content

nrULCarrierConfig

5G uplink waveform configuration parameters

Description

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

This object defines these aspects of the uplink waveform:

  • Frequency range

  • Channel bandwidth

  • Cell identity

  • Waveform duration

  • Subcarrier spacing (SCS) carriers

  • Bandwidth parts (BWPs)

  • Physical uplink shared channel (PUSCH), PUSCH demodulation reference signal (DM-RS), and PUSCH phase-tracking reference signal (PT-RS)

  • Physical uplink control channel (PUCCH) and associated DM-RS

  • Sounding reference signal (SRS)

Creation

Description

cfgUL = nrULCarrierConfig creates a default single-component-carrier 5G uplink waveform configuration object.

example

cfgUL = nrULCarrierConfig(Name,Value) sets properties using one or more name-value arguments. Enclose each property name in quotes. For example, 'FrequencyRange','FR2' specifies an uplink waveform for frequency range 2 (FR2).

Properties

expand all

Name of the uplink carrier configuration, specified as a character array or string scalar. Use this property to set a description to the uplink 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.

  • Five-element row vector of the form [w1 w2 w3 w4 w5 ], 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.

  • [] — 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.

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

One or more PUCCH configurations, specified as a cell array of any combination of nrWavegenPUCCH0Config, nrWavegenPUCCH1Config, nrWavegenPUCCH2Config, nrWavegenPUCCH3Config, and nrWavegenPUCCH4Config objects. This property configures different PUCCH and associated DM-RS. By default, the PUCCH is disabled in the uplink configuration.

One or more SRS configurations, specified as a cell array of nrWavegenSRSConfig objects. Use this property to configure different SRS. By default, the SRS is disabled in the uplink configuration.

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 a single-user 5G uplink waveform configuration object, specifying the previously defined configurations. In the uplink configuration object, by default, the PUSCH is enabled, while the PUCCH and the SRS are disabled.

cfgUL = nrULCarrierConfig( ...
    'FrequencyRange','FR1', ...
    'ChannelBandwidth',40, ...
    'NumSubframes',20, ...
    'SCSCarriers',{carrier}, ...
    'BandwidthParts',{bwp});

Generate a 5G uplink waveform using the specified configuration.

waveform = nrWaveformGenerator(cfgUL);

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',0,'SubcarrierSpacing',15,'NStartBWP',30,'NSizeBWP',80), ...
    nrWavegenBWPConfig('BandwidthPartID',1,'SubcarrierSpacing',30,'NStartBWP',0,'NSizeBWP',60)};

Create two PUSCH configuration objects, one for each of the carriers, with mixed modulation schemes.

pusch = {
    nrWavegenPUSCHConfig('BandwidthPartID',0,'Modulation','16QAM','SlotAllocation',0:2:9,'PRBSet',0:19,'RNTI',1,'NID',1), ...
    nrWavegenPUSCHConfig('BandwidthPartID',1,'Modulation','QPSK','RNTI',2,'NID',2,'PRBSet',50:59)};

Create a single PUCCH configuration object, only for the second carrier. By default, the PUCCH is enabled in this configuration.

pucch = {nrWavegenPUCCH0Config('BandwidthPartID',1,'SlotAllocation',0:9,'PRBSet',2,'DataSourceUCI', 'PN9')};

Create two SRS configuration objects, one for each of the carriers. By default, the SRS is enabled in both configurations.

srs = {
    nrWavegenSRSConfig('BandwidthPartID',0,'SlotAllocation',1:2:9,'NumSRSPorts',2), ... 
    nrWavegenSRSConfig('BandwidthPartID',1,'FrequencyStart',4)};

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

cfgUL = nrULCarrierConfig( ...
    'FrequencyRange','FR1', ...
    'ChannelBandwidth',40, ...
    'NumSubframes',20, ...
    'SCSCarriers',carriers, ...
    'BandwidthParts',bwp, ...
    'PUSCH',pusch, ...
    'PUCCH',pucch, ...
    'SRS',srs);

Generate a 5G uplink waveform using the specified configuration.

waveform = nrWaveformGenerator(cfgUL);

Extended Capabilities

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

Introduced in R2021a