Main Content

nrCarrierConfig

Carrier configuration parameters

Description

The nrCarrierConfig object sets carrier configuration parameters for a specific OFDM numerology, as defined in TS 38.211 Sections 4.2, 4.3, and 4.4 [1].

The object defines the carrier subcarrier spacing, bandwidth, and offset parameters from point A, the center of subcarrier 0 in the common resource block 0 (CRB 0). For a 60 kHz subcarrier spacing, you can specify either normal or extended cyclic prefix. The read-only properties of this object provide the carrier resource grid time-domain dimensions. By default, the object specifies a 10 MHz carrier corresponding to 52 resource blocks (RBs) and 15 kHz subcarrier spacing. You can use the object in slot-oriented processing by specifying the current slot and frame numbers.

Creation

Description

carrier = nrCarrierConfig creates a carrier configuration object with default properties.

example

carrier = nrCarrierConfig(Name,Value) specifies properties using one or more name-value pair arguments. Enclose each property in quotes. For example, 'SubcarrierSpacing',30,'NSizeGrid',273 specifies a 100 MHz carrier corresponding to 273 RBs and 30 kHz subcarrier spacing. Unspecified properties take their default values.

example

Properties

expand all

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

Data Types: double

Subcarrier spacing in kHz, for all channels and reference signals of the carrier, specified as 15, 30, 60, 120, 240, 480, or 960.

Data Types: double

Cyclic prefix length, specified as one of these options.

  • 'normal' — Use this value to specify normal cyclic prefix. This option corresponds to 14 OFDM symbols in a slot.

  • 'extended' — Use this value to specify extended cyclic prefix. This option corresponds to 12 OFDM symbols in a slot. For the numerologies specified in TS 38.211 Section 4.2, extended cyclic prefix length applies for only 60 kHz subcarrier spacing.

Data Types: char | string

Number of RBs in the carrier resource grid, specified as an integer from 1 to 275. The default value of 52 corresponds to the maximum number of RBs of a 10 MHz carrier with 15 kHz SCS.

Data Types: double

Start of carrier resource grid relative to CRB 0, specified as an integer from 0 to 2199. This property is the higher-layer parameter offsetToCarrier.

Data Types: double

Slot number, specified as a nonnegative integer. You can set NSlot to a value larger than the number of slots per frame. For example, you can set this value using transmission loop counters in a MATLAB® simulation. In this case, you may have to ensure that the property value is modulo the number of slots per frame in a calling code.

Data Types: double

System frame number, specified as a nonnegative integer. You can set NFrame to a value larger than the maximum frame number 1023. For example, you can set this value using transmission loop counters in a MATLAB simulation. In this case, you may have to ensure that the property value is modulo 1024 in a calling code.

Data Types: double

Since R2023b

Intracell guard bands for operation with shared spectrum channel access for FR1, specified as one of these options:

  • NGB-by-2 matrix of nonnegative integers — NGB is the number of guard bands. Each row defines a guard band: the first column specifies the start of the guard band relative to CRB 0 and the second column defines the size of the guard band in RBs.

  • Cell array of nrIntraCellGuardBandsConfig objects — Only those guard band configurations that have the same subcarrier spacing as the SubcarrierSpacing object property are applicable.

The default value of [] indicates that intracell guard bands are not configured, which means that all resources are available.

This property corresponds to higher-layer parameter IntraCellGuardBandsPerSCS in TS 38.331[2].

This property is read-only.

Number of OFDM symbols per slot, returned as 14 for normal cyclic prefix or 12 for extended cyclic prefix. The object sets this property based on the CyclicPrefix property.

Data Types: double

This property is read-only.

Number of slots per 1 ms subframe, returned as 1, 2, 4, 8, 16, 32 or 64. The object sets this property based on the SubcarrierSpacing property values 15, 30, 60, 120, 240, 480, and 960, respectively.

Data Types: double

This property is read-only.

Number of slots per 10 ms frame, returned as 10, 20, 40, 80, 160, 320, or 640. The object sets this property based on the SubcarrierSpacing property values 15, 30, 60, 120, 240, 480, and 960, respectively.

Data Types: double

Examples

collapse all

Create a carrier configuration object with default properties. This object corresponds to a 10 MHz carrier.

carrier = nrCarrierConfig;

Create a CSI-RS configuration object with default properties.

csirs = nrCSIRSConfig;

Generate CSI-RS symbols of single data type.

[sym,info_sym] = nrCSIRS(carrier,csirs,'OutputDataType','single');

Generate resource element indices for CSI-RS.

[ind,info_ind] = nrCSIRSIndices(carrier,csirs);

Create a carrier configuration object, specifying the slot number as 10.

carrier = nrCarrierConfig('NSlot',10);

Create a CSI-RS resource configuration object for two periodic resources. Specify one NZP resource and one ZP resource with row numbers 3 and 5, symbol locations 13 and 9, and subcarrier locations 6 and 4, respectively. For both resources, set the periodicity to 5, offset to 1, and density to 'one'.

csirs = nrCSIRSConfig;
csirs.CSIRSType = {'nzp','zp'};
csirs.CSIRSPeriod = {[5 1],[5 1]};
csirs.RowNumber = [3 5];
csirs.Density = {'one','one'};
csirs.SymbolLocations = {13,9};
csirs.SubcarrierLocations = {6,4};

Generate CSI-RS symbols and indices for the specified carrier, CSI-RS resource configuration, and output formatting name-value pair arguments. Verify the format of the symbols and indices.

[sym,info_sym] = nrCSIRS(carrier,csirs, ...
                'OutputResourceFormat','cell')
sym=1×2 cell array
    {0x1 double}    {0x1 double}

info_sym = struct with fields:
      ResourceOrder: [2 1]
           KBarLBar: {{1x2 cell}  {1x2 cell}}
    CDMGroupIndices: {[0]  [0 1]}
             KPrime: {[0 1]  [0 1]}
             LPrime: {[0]  [0]}

[ind,info_ind] = nrCSIRSIndices(carrier,csirs, ...
                'IndexStyle','subscript','OutputResourceFormat','cell')
ind=1×2 cell array
    {0x3 uint32}    {0x3 uint32}

info_ind = struct with fields:
      ResourceOrder: [2 1]
           KBarLBar: {{1x2 cell}  {1x2 cell}}
    CDMGroupIndices: {[0]  [0 1]}
             KPrime: {[0 1]  [0 1]}
             LPrime: {[0]  [0]}

Verify that the generated outputs are in the order of ZP-CSI-RS resources followed by NZP-CSI-RS resources in terms of the specified csirs.CSIRSType indices.

info_sym.ResourceOrder
ans = 1×2

     2     1

info_ind.ResourceOrder
ans = 1×2

     2     1

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.331. “NR; Radio Resource Control (RRC) protocol specification.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

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

Version History

Introduced in R2019b

expand all