Main Content

nrPUSCHDMRSConfig

PUSCH DM-RS configuration parameters

Description

The nrPUSCHDMRSConfig object sets demodulation reference signal (DM-RS) configuration parameters for a physical uplink shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.1 [1].

The object defines the properties of PUSCH DM-RS symbols and indices generation and the resource elements pattern not used for data in DM-RS symbol locations. The read-only properties of this object provide the DM-RS subcarrier locations within a resource block (RB), code division multiplexing (CDM) groups, and time and frequency weights for DM-RS symbols. By default, the object specifies a single symbol DM-RS at symbol index 2 (0-based) with configuration type 1 and antenna port 0. Use this object when setting the DMRS property of the nrPUSCHConfig object.

Creation

Description

example

dmrs = nrPUSCHDMRSConfig creates a DM-RS configuration object for a PUSCH with default properties.

example

dmrs = nrPUSCHDMRSConfig(Name,Value) specifies properties using one or more name-value pair arguments. Enclose each property in quotes. For example, 'DMRSConfigurationType',1,'DMRSLength',2 specifies a double-symbol DM-RS with configuration type as 1. Unspecified properties take their default values.

Properties

expand all

DM-RS configuration type, specified as 1 or 2. This property is the higher-layer parameter dmrs-Type.

This property value must be 1 when nrPUSCHDMRSConfig is a property of nrPUSCHConfig with TransformPrecoding property set to 1.

Data Types: double

Position of first DM-RS OFDM symbol, provided by higher layer parameter dmrs-TypeA-Position, specified as 2 or 3.

This property is applicable when nrPUSCHDMRSConfig is a property of nrPUSCHConfig object with MappingType property value set to 'A'.

Data Types: double

Maximum number of DM-RS additional positions, specified as 0, 1, 2, or 3. This property is the higher layer parameter dmrs-AdditionalPosition.

This property value must be 0 or 1 when nrPUSCHDMRSConfig is a property of nrPUSCHConfig object with FrequencyHopping property set to 'intraSlot'.

Data Types: double

Number of consecutive front-loaded DM-RS OFDM symbols, specified as 1 (single-symbol DM-RS) or 2 (double-symbol DM-RS).

This property value must be 1 when nrPUSCHDMRSConfig is a property of nrPUSCHConfig object with FrequencyHopping property set to 'intraSlot'.

Data Types: double

DM-RS OFDM symbol locations that are 0-based, specified as one of these options.

  • Integer from 0 to 13 — For one DM-RS symbol

  • Vector of nonnegative integers from 0 to 13 — For multiple DM-RS symbols

Each input symbol location is assumed to be a single-symbol DM-RS within the physical shared channel symbol allocation.

The default value, [], corresponds to the DM-RS symbols locations as per TS 38.211 Table 6.4.1.1.3-3, 6.4.1.1.3-4, or 6.4.1.1.3-6 [1]. Setting this property overrides the corresponding DM-RS symbol locations in these standard lookup tables.

Data Types: double

DM-RS antenna ports, specified as one of these options.

  • Integer from 0 to 11 — For a single antenna port

  • Vector of nonnegative integers from 0 to 11 — For multiple antenna ports

Nominal antenna ports supported depend on DMRSLength and DMRSConfigurationType property values, as shown in this table.

DMRSLength ValueDMRSConfigurationType ValueNominal Range of Antenna Ports Supported
11[0, 3]
2[0, 5]
21[0, 7]
2[0, 11]

The default value of [] implies that DM-RS antenna port is equal to 0.

When nrPUSCHDMRSConfig is a property of nrPUSCHConfig object, [] implies that DMRSPortSet is in the range from 0 to NumLayers–1.

Data Types: double

DM-RS scrambling identity for CP-OFDM, specified as one of these options.

  • Integer from 0 to 65,535 — If NIDNSCID is higher-layer parameter scramblingID0/scramblingID1

  • [] — If NIDNSCID is not a higher-layer parameter, then the value is equal to the NCellID property of the nrCarrierConfig object. Use [] to set this property to the NCellID property value.

Dependencies

This property applies when the TransformPrecoding property of the nrPUSCHConfig object is set to 0.

Data Types: double

DM-RS scrambling identity for DFT-s-OFDM, specified as one of these options.

  • Integer from 0 to 1007 — If NRSID is the higher-layer parameter nPUSCH-Identity.

  • [] — Use this option to set the value of this property to the NCellID property value of the nrCarrierConfig object when the higher-layer parameter nPUSCH-Identity is undefined.

Dependencies

This property applies when the TransformPrecoding property of the nrPUSCHConfig object is set to 1.

Data Types: double

DM-RS scrambling initialization for CP-OFDM, specified as 0 or 1.

Dependencies

This property applies when the TransformPrecoding property of the nrPUSCHConfig object is set to 0.

Data Types: double

Group hopping configuration, specified as one of these options.

  • 0 — Group hopping is disabled.

  • 1 — Group hopping is enabled.

Dependencies

This property applies when the TransformPrecoding property of the nrPUSCHConfig object is set to 1 and SequenceHopping is set to 0.

Data Types: logical | double

Sequence hopping configuration, specified as one of these options.

  • 0SequenceHopping is disabled.

  • 1SequenceHopping is enabled.

Dependencies

This property applies when the TransformPrecoding property of the nrPUSCHConfig object is set to 1 and GroupHopping is set to 0.

Data Types: logical | double

Number of DM-RS CDM groups without data, specified as 1, 2, or 3.

Each value indicates a different set of CDM group numbers, according to TS 38.214 Section 6.2.2 [2].

  • 1 — CDM group number 0

  • 2 — CDM group numbers 0 and 1

  • 3 — CDM group numbers 0, 1, and 2

When TransformPrecoding property of the nrPUSCHConfig object is set to 1, this property value must be 2.

Data Types: double

This property is read-only.

CDM group numbers corresponding to each DM-RS port, specified as one of these options.

  • Integer from 0 to 2 — When DMRSPortSet property is a scalar, specifying single DM-RS antenna port.

  • Row vector of integers from 0 to 2 — When DMRSPortSet property is a vector, specifying multiple DM-RS antenna ports. Each element corresponds to a CDM group number for that port.

Value of this property depends on the DMRSConfigurationType according to TS 38.211 Table 6.4.1.1.3-1 or 6.4.1.1.3-2 [1].

Data Types: double

This property is read-only.

Delta shifts corresponding to each CDM group, specified as one of these options.

  • Integer from the set {0, 1, 2, 4} — When DMRSPortSet property is a scalar, specifying single DM-RS antenna port.

  • Row vector of integers from the set {0, 1, 2, 4} — When DMRSPortSet property is a vector, specifying multiple DM-RS antenna ports. Each element corresponds to the delta shift to be applied for that port.

Value of this property depends on the DMRSConfigurationType according to TS 38.211 Table 6.4.1.1.3-1 or 6.4.1.1.3-2 [1].

Data Types: double

This property is read-only.

Frequency weights for the DM-RS symbols, specified as one of these options.

  • Column vector of integers — When DMRSPortSet property is a scalar, specifying single DM-RS antenna port.

  • Matrix of integers — When DMRSPortSet property is a vector, specifying multiple DM-RS antenna ports. Each column corresponds to the weights for that port.

Value of this property depends on the DMRSConfigurationType according to TS 38.211 Table 6.4.1.1.3-1 or 6.4.1.1.3-2 [1].

Data Types: double

This property is read-only.

Time weights for to the DM-RS symbols, specified as one of these options.

  • Column vector of integers — When DMRSPortSet property is a scalar, specifying single DM-RS antenna port.

  • Matrix of integers — When DMRSPortSet property is a vector, specifying multiple DM-RS antenna ports. Each column corresponds to the weights for that port.

Value of this property depends on the DMRSConfigurationType according to TS 38.211 Table 6.4.1.1.3-1 or 6.4.1.1.3-2 [1].

Data Types: double

This property is read-only.

Subcarrier locations in an RB for each port, specified as one of these options.

  • Column vector of integers — When DMRSPortSet property is a scalar, specifying single DM-RS antenna port.

  • Matrix of integers — When DMRSPortSet property is a vector, specifying multiple DM-RS antenna ports. Each column corresponds to the subcarrier locations for that port.

Data Types: double

This property is read-only.

CDM arrangement for reference signals, specified as the comma-separated pair consisting of 'CDMLengths' and a two-element row vector of nonnegative integers [FD TD]. Array elements FD and TD specify the length of CDM despreading in the frequency domain (FD-CDM) and time domain (TD-CDM), respectively. A value of 1 for an element specifies no CDM.

Data Types: double

Examples

collapse all

Create a physical uplink shared channel (PUSCH) specific demodulation reference signal (DM-RS) object, dmrs.

Specify a single-symbol DMRS with number of DM-RS additional positions as 3, sequence hopping as 1, and having antenna ports as 0 and 4.

dmrs = nrPUSCHDMRSConfig;
dmrs.DMRSLength = 1;
dmrs.DMRSAdditionalPosition = 3;
dmrs.SequenceHopping = 1;
dmrs.DMRSPortSet = [0 4];

View the corresponding dmrs properties.

disp(dmrs)
  nrPUSCHDMRSConfig with properties:

      DMRSConfigurationType: 1
          DMRSTypeAPosition: 2
     DMRSAdditionalPosition: 3
                 DMRSLength: 1
            CustomSymbolSet: []
                DMRSPortSet: [0 4]
                   NIDNSCID: []
                      NSCID: 0
               GroupHopping: 0
            SequenceHopping: 1
                      NRSID: []
    NumCDMGroupsWithoutData: 2

   Read-only properties:
                  CDMGroups: [0 0]
                DeltaShifts: [0 0]
           FrequencyWeights: [2x2 double]
                TimeWeights: [2x2 double]
    DMRSSubcarrierLocations: [6x2 double]
                 CDMLengths: [1 1]

Create a carrier configuration object with default properties. This object corresponds to a 10 MHz carrier with 15 kHz subcarrier spacing.

carrier = nrCarrierConfig;

Create a physical uplink shared channel (PUSCH) configuration object with specified properties. When transform precoding is set to 0, the waveform type is cyclic-prefix orthogonal frequency division multiplexing (CP-OFDM).

pusch = nrPUSCHConfig;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'codebook';
pusch.NumAntennaPorts = 4;
pusch.TPMI = 0;

Configure PUSCH demodulation reference signal (DM-RS) with specified parameters.

pusch.DMRS.DMRSAdditionalPosition = 1;
pusch.DMRS.DMRSTypeAPosition = 2;
pusch.DMRS.DMRSPortSet = 2;
pusch.DMRS.NIDNSCID = 10;
pusch.DMRS.NSCID = 1;

Generate DM-RS symbols associated with PUSCH of single data type.

sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 624x4 single matrix

  -0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
  -0.3536 + 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
  -0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
  -0.3536 + 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
  -0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.3536 + 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.3536 - 0.3536i   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
      ⋮

Create a carrier configuration object with default properties. This object corresponds to a 10 MHz carrier with 15 kHz subcarrier spacing.

carrier = nrCarrierConfig;

Create a physical uplink shared channel (PUSCH) configuration object with specified properties. When transform precoding is set to 0, the waveform type is cyclic-prefix orthogonal frequency division multiplexing (CP-OFDM).

pusch = nrPUSCHConfig;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'codebook';
pusch.NumAntennaPorts = 4;
pusch.TPMI = 0;

Configure PUSCH demodulation reference signal (DM-RS) object with specified parameters.

pusch.DMRS.DMRSAdditionalPosition = 2;
pusch.DMRS.DMRSTypeAPosition = 2;
pusch.DMRS.DMRSPortSet = 3;
pusch.DMRS.NIDNSCID = 15;
pusch.DMRS.NSCID = 1;

Generate DM-RS indices associated to PUSCH of subscript indexing form.

ind = nrPUSCHDMRSIndices(carrier,pusch,'IndexStyle','subscript')
ind = 3744x3 uint32 matrix

    2    3    1
    4    3    1
    6    3    1
    8    3    1
   10    3    1
   12    3    1
   14    3    1
   16    3    1
   18    3    1
   20    3    1
      ⋮

Create a carrier configuration with 30 kHz subcarrier spacing and 5 MHz transmission bandwidth.

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 30;
carrier.NSizeGrid = 11;

Create a physical uplink shared channel (PUSCH) configuration object with specified properties. When transform precoding is set to 1, the waveform type is discrete fourier transform spread orthogonal frequency division multiplexing (DFT-s-OFDM).

pusch = nrPUSCHConfig;
pusch.NSizeBWP = 9;
pusch.NStartBWP = 1;
pusch.PRBSet = 0:3;
pusch.TransformPrecoding = 1;
pusch.FrequencyHopping = 'intraSlot';
pusch.SecondHopStartPRB = 5;

Create a PUSCH demodulation reference signal (DM-RS) object with specified properties.

dmrs = nrPUSCHDMRSConfig;
dmrs.DMRSAdditionalPosition = 1;
dmrs.DMRSTypeAPosition = 2;
dmrs.DMRSPortSet = 3;
dmrs.GroupHopping = 1;
dmrs.SequenceHopping = 0;
dmrs.NRSID = 10;

Assign the PUSCH DM-RS configuration object to DMRS property of PUSCH configuration object.

pusch.DMRS = dmrs;

Generate PUSCH DM-RS symbols and indices for the specified carrier, PUSCH configuration, and output formatting name-value pair argument.

sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 96x1 single column vector

  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 + 0.7071i
  -0.7071 + 0.7071i
      ⋮

ind = nrPUSCHDMRSIndices(carrier,pusch,'IndexBase','0based','IndexOrientation','bwp')
ind = 96x1 uint32 column vector

   217
   219
   221
   223
   225
   227
   229
   231
   233
   235
      ⋮

Create a bandwidth part (BWP) grid, and then map the DM-RS symbols on the grid.

bwp = complex(zeros([pusch.NSizeBWP*12 carrier.SymbolsPerSlot pusch.NumLayers]));
bwp(ind+1) = sym; % Map the DM-RS symbols

Map the BWP to the carrier resource grid, and then display the carrier grid.

grid = complex(zeros([carrier.NSizeGrid*12 carrier.SymbolsPerSlot pusch.NumLayers])); % Create carrier resource grid
offset = pusch.NStartBWP-carrier.NStartGrid; % BWP start location in the carrier grid
grid(offset*12+1:(offset+pusch.NSizeBWP)*12,:,:) = bwp;
imagesc(abs(grid(:,:,1)));
axis xy;
xlabel('OFDM Symbols');
ylabel('Subcarriers');
title('PUSCH DM-RS Resource Elements in the Carrier Resource Grid');

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.214. “NR; Physical layer procedures for data.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

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

Introduced in R2020a