Main Content

nrCSIRSConfig

CSI-RS configuration parameters

Since R2019b

Description

The nrCSIRSConfig object sets channel state information reference signal (CSI-RS) configuration parameters for one or more zero-power (ZP) or non-zero-power (NZP) CSI-RS resources, as defined in TS 38.211 Section 7.4.1.5 [1].

Creation

Description

example

csirs = nrCSIRSConfig creates a CSI-RS configuration object with default properties.

csirs = nrCSIRSConfig(Name,Value) specifies properties using one or more name-value pair arguments. Enclose each property in quotes. For example, 'CSIRSType',{'zp','nzp','zp'},'Density',{'one','dot5odd','three'},'SubcarrierLocations',{0,4,[0 4]} specifies three CSI-RS resources with different frequency density values and different frequency-domain locations. Unspecified properties take their default values.

Properties

expand all

Type of one or more CSI-RS resource configurations, specified as one of these options.

  • 'nzp' — Use this option to specify a single NZP-CSI-RS resource.

  • 'zp' — Use this option to specify a single ZP-CSI-RS resource.

  • Cell array with elements 'nzp' or 'zp' — Use this option to specify multiple CSI-RS resources.

Alternatively, you can specify this property by using "nzp" and "zp" as string scalars or as elements of a string array.

The number of CSI-RS resource configurations is equal to the number of values provided for this property.

Data Types: cell | string | char

Slot periodicity and offset of the CSI-RS resource, specified as one of these options.

For Single CSI-RS Resource

  • 'on' — Use this option to indicate that the resource is present in all slots.

  • 'off' — Use this option to indicate that the resource is absent in all slots.

  • Vector of integers of the form [Tcsi-rs Toffset] — Use this option to specify slot periodicity Tcsi-rs and offset Toffset for scheduling the CSI-RS resource in specific slots.

    Tcsi-rs is 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 160, 320, or 640. For a particular value of Tcsi-rs, the value of Toffset is in the range from 0 to Tcsi-rs–1.

For Multiple CSI-RS Resources

  • Cell array with elements 'on', 'off', or [Tcsi-rs Toffset] — The number of elements in the cell array must be one or equal the number of CSI-RS resources specified by the CSIRSType property. When the cell array contains only one element, the specified value applies to all CSI-RS resources.

Alternatively, you can specify this property by using "on" and "off" as string scalars or as elements of a string array.

This property is the higher-layer parameter CSI-ResourcePeriodicityAndOffset or slotConfig defined in the CSI-RS-CellMobility IE.

Data Types: cell | string | char | double

Row number of CSI-RS resource, as defined in TS 38.211 Table 7.4.1.5.3-1, specified as one of these options.

For Single CSI-RS Resource

  • Integer from 1 to 18

For Multiple CSI-RS Resources

  • Vector of integers in the range from 1 to 18 — The number of vector elements must equal the number of CSI-RS resources specified by the CSIRSType property.

Data Types: double

Frequency density of the CSI-RS resource, as defined in TS 38.211 Table 7.4.1.5.3-1, specified as one of these options.

For Single CSI-RS Resource

  • 'one' — This option corresponds to ρ = 1 from the specified table.

  • 'three' — This option corresponds to ρ = 3 from the specified table.

  • 'dot5even' — This option corresponds to ρ = 0.5 from the specified table with even resource block (RB) allocation regarding the common resource block 0 (CRB 0).

  • 'dot5odd' — This option corresponds to ρ = 0.5 from the specified table with odd RB allocation regarding CRB 0.

For Multiple CSI-RS Resources

  • Cell array of the character vectors 'one', 'three', 'dot5even', or 'dot5odd' — The number of elements in the cell array must equal the number of CSI-RS resources specified by the CSIRSType property.

Alternatively, you can specify this property by using "one", "three", "dot5even", and "dot5odd" as string scalars or as elements of a string array.

The value of ρ is the higher-layer parameter density defined in the CSI-RS-ResourceMapping IE or the CSI-RS-CellMobility IE.

Data Types: cell | string | char

Time-domain locations of the CSI-RS resource (l0 and l1 values in the TS 38.211 Table 7.4.1.5.3-1), specified as one of these options.

For Single CSI-RS Resource

  • Integer from 0 to 13 — This option corresponds to the l0 value in the specified table.

  • Vector of integers of the form [l0 l1] or [l0; l1], where l0 and l1 are the corresponding l0 and l1 values in the specified table — The l1 values are required only in table rows 13, 14, 16, and 17. l0 is an integer from 0 to 13, and l1 is an integer from 2 to 12.

For Multiple CSI-RS Resources

  • Cell array of l0 values or vectors of the form [l0 l1] or [l0; l1] — The number of elements in the cell array must equal the number of CSI-RS resources specified by the CSIRSType property.

    In a two-element vector based on l0 and l1, to avoid the overlap between the CDM groups corresponding to different CSI-RS ports, specify the symbol locations at least 2 locations apart.

The values of l0 and l1 are the higher-layer parameters firstOFDMSymbolInTimeDomain and firstOFDMSymbolInTimeDomain2, respectively, in the CSI-RS-ResourceMapping IE or CSI-RS-ResourceConfigMobility IE.

Data Types: double

Frequency-domain locations of the CSI-RS resource (ki elements in column 5 of TS 38.211 Table 7.4.1.5.3-1), specified as one of these options.

For Single CSI-RS Resource

  • Numeric vector with the number of elements 1, 2, 3, 4, or 6

For Multiple CSI-RS Resources

  • Cell array of numeric vectors with the number of elements 1, 2, 3, 4, or 6 — The number of elements in the cell array must equal the number of CSI-RS resources specified by the CSIRSType property.

    To avoid the overlap between the CDM groups that correspond to different CSI-RS ports, specify the subcarrier locations at least 2 locations apart. TS 38.211 Section 7.4.1.5.3 describes the procedure to calculate subcarrier locations from a bitmap defined by the higher-layer parameter frequencyDomainAllocation in the CSI-RS-ResourceMapping IE or CSI-RS-ResourceConfigMobility IE. To avoid the loss in orthogonality among different CSI-RS ports, this procedure ensures that there is no overlap between the CDM groups.

Data Types: double

CSI-RS resource bandwidth, in terms of the number of allocated RBs, specified as one of these options.

For Single CSI-RS Resource

  • Integer from 1 to 275

For Multiple CSI-RS Resources

  • Vector of integers in the range from 1 to 275 — The number of vector elements must equal to one or the number of CSI-RS resources specified by the CSIRSType property. When the vector contains only one element, the specified value applies to all CSI-RS resources.

This property is the higher-layer parameter nrOfRBs in FrequencyOccupation IE or nrOfPRBs in CSI-RS-ResourceConfigMobility IE.

Data Types: double

Starting RB index of the CSI-RS resource allocation, relative to the carrier resource grid, specified as one of these options.

For Single CSI-RS Resource

  • Integer from 0 to 274

For Multiple CSI-RS Resources

  • Vector of integers in the range from 0 to 274 — The number of vector elements must be one or equal the number of CSI-RS resources specified by the CSIRSType property. When the vector contains only one element, the specified value applies to all CSI-RS resources.

Data Types: double

Scrambling identity, specified as one of these options.

For Single CSI-RS Resource

  • Integer from 0 to 1023

For Multiple CSI-RS Resources

  • Vector of integers in the range from 0 to 1023 — The number of vector elements must be one or equal the number of CSI-RS resources specified by the CSIRSType property. When the vector contains only one element, the specified value applies to all CSI-RS resources.

This property is the higher-layer parameter scramblingID in NZP-CSI-RS-Resource IE or sequenceGenerationConfig in CSI-RS-ResourceConfigMobility IE.

When the CSIRSType property defines only ZP resources, this property is hidden.

Data Types: double

This property is read-only.

Number of CSI-RS antenna ports, specified as 1, 2, 4, 8, 12, 16, 24, 32, or a vector of integers from this list. The object sets this property based on the RowNumber property.

Data Types: double

This property is read-only.

CDM type of CSI-RS resource, specified as 'noCDM', 'FD-CDM2', 'CDM4', 'CDM8', or a cell array of character vectors from this list. The object sets this property based on the RowNumber property.

Data Types: char

Examples

collapse all

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: {{1x1 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: {{1x1 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

Create a carrier configuration object with default properties.

carrier = nrCarrierConfig;

Create a CSI-RS resource configuration object with CSI-RS parameters set for tracking. Specify four periodic NZP-CSI-RS resources in two consecutive slots. Specify for each slot to contain two periodic NZP-CSI-RS resources with periodicity set to 20. Set the offset for the first two resources to 0. Set the offset for the next two resources to 1. Set the row number to 1 and density to 'three' for all resources.

csirs = nrCSIRSConfig;
csirs.CSIRSType = {'nzp','nzp','nzp','nzp'};
csirs.CSIRSPeriod = {[20 0],[20 0],[20 1],[20 1]};
csirs.RowNumber = [1 1 1 1];
csirs.Density = {'three','three','three','three'};
csirs.SymbolLocations = {6,10,6,10};
csirs.SubcarrierLocations = {0,0,0,0};

Generate CSI-RS symbols and indices for the default slot number of the carrier configuration object (slot number 0).

ind0 = nrCSIRSIndices(carrier,csirs);
sym0 = nrCSIRS(carrier,csirs);

Map the symbols to a carrier grid of one slot duration.

gridSize = [12*carrier.NSizeGrid carrier.SymbolsPerSlot max(csirs.NumCSIRSPorts)];
slotgrid0 = complex(zeros(gridSize));
slotgrid0(ind0) = sym0;

Change the absolute slot number in the carrier configuration from 0 to 1.

carrier.NSlot = 1; 

Generate CSI-RS symbols and indices for slot number 1.

ind1 = nrCSIRSIndices(carrier,csirs);
sym1 = nrCSIRS(carrier,csirs);

Map the symbols to another carrier grid of one slot duration.

slotgrid1 = complex(zeros(gridSize));
slotgrid1(ind1) = sym1;

Concatenate the two slots to form the final grid.

grid = [slotgrid0 slotgrid1];

Plot the grid.

imagesc(abs(grid(:,:,1)));
axis xy;
title('CSI-RS as Tracking Reference Signal');
xlabel('OFDM Symbols');
ylabel('Subcarriers');

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 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