# nrPDSCHDMRSConfig

## Description

The `nrPDSCHDMRSConfig`

object sets demodulation reference signal
(DM-RS) configuration parameters for a physical downlink shared channel (PDSCH), as defined in
TS 38.211 Section 7.4.1.1 [1]. Use this object when setting
the `DMRS`

property of the `nrPDSCHConfig`

or `nrWavegenPDSCHConfig`

objects.

The object defines the properties of PDSCH 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.

## Creation

### Description

creates a DM-RS
configuration object for a PDSCH with default properties.`dmrs`

= nrPDSCHDMRSConfig

specifies properties using one or more name-value pair arguments. Enclose each property in
quotes. For example, `dmrs`

= nrPDSCHDMRSConfig(`Name,Value`

)`'DMRSConfigurationType',1,'DMRSLength',2`

specifies
a double-symbol DM-RS with configuration type 1. Unspecified properties take their default
values.

## Properties

`DMRSConfigurationType`

— DM-RS configuration type

`1`

(default) | `2`

DM-RS configuration type, specified as `1`

or `2`

. This property is the higher-layer parameter *dmrs-Type*.

**Data Types: **`double`

`DMRSReferencePoint`

— Reference point for DM-RS sequence to subcarrier resource mapping

`CRB0`

(default) | `PRB0`

Reference point for the DM-RS sequence to subcarrier resource mapping, specified as one of these options.

`PRB0`

— When the reference point is subcarrier 0 of the physical resource block 0 (PRB 0) of the bandwidth part (BWP). Use this option when PDSCH is signalled by control resource set 0 (CORESET 0). For this case, the BWP parameters must align with CORESET 0.`CRB0`

— When the reference point is subcarrier 0 of the common resource block 0 (CRB 0)

**Data Types: **`char`

| `string`

`DMRSTypeAPosition`

— Position of first DM-RS OFDM symbol

`2`

(default) | `3`

Position of first DM-RS OFDM symbol, provided by higher layer parameter *dmrs-TypeA-Position*, specified as `2`

or `3`

.

This property only applies when the `MappingType`

property of the
`nrPDSCHConfig`

or `nrWavegenPDSCHConfig`

objects is
set to `'A'`

.

**Data Types: **`double`

`DMRSAdditionalPosition`

— Maximum number of DM-RS additional positions

`0`

(default) | `1`

| `2`

| `3`

Maximum number of DM-RS additional positions, specified as `0`

, `1`

, `2`

, or `3`

. This property is the higher layer parameter *dmrs-AdditionalPosition*.

**Data Types: **`double`

`DMRSLength`

— Number of consecutive front-loaded DM-RS OFDM symbols

`1`

(default) | `2`

Number of consecutive front-loaded DM-RS OFDM symbols, specified as `1`

(single-symbol DM-RS) or `2`

(double-symbol DM-RS).

**Data Types: **`double`

`CustomSymbolSet`

— DM-RS OFDM symbol locations

`[]`

(default) | integer from 0 to 13 | vector of nonnegative integers

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 symbol locations, as
defined in TS 38.211 Table 7.4.1.1.2-3 or 7.4.1.1.2-4. Setting this property overrides
the corresponding DM-RS symbol locations in these standard lookup tables.

**Data Types: **`double`

`DMRSPortSet`

— DM-RS antenna port indices

`[]`

(default) | vector of nonnegative integers

DM-RS antenna port indices, specified as a vector of nonnegative integers from 0 to 23. The valid range of antenna port indices depends on the DM-RS configuration type, DM-RS symbol duration, and whether enhanced DM-RS multiplexing is enabled, as described in this table.

`DMRSEnhancedR18`
Value | `DMRSLength` Value | Valid Range of Antenna Port Indices | |
---|---|---|---|

`DMRSConfigurationType=1` | `DMRSConfigurationType=2` | ||

`0` for basic multiplexing | `1` for single symbol | [0, 3] | [0, 5] |

`2` for double symbol | [0, 7] | [0, 11] | |

`1` for enhanced multiplexing | `1` for single symbol | [0, 3] and [8, 11] | [0, 5] and [2, 17] |

`2` for double symbol | [0, 15] | [0, 23] |

This table corresponds to the PDSCH DM-RS antenna port values, as defined in TS 38.211 Table 7.4.1.1.2-5. The value range from 0 to 23 in this table corresponds to the range from 1000 to 1023, respectively, in Table 7.4.1.1.2-5.

The default value, `[]`

, implies that the object automatically
selects the first *N* valid port indices, where *N* is
the number of layers that is specified by the `NumLayers`

property of
the `nrPDSCHConfig`

or `nrWavegenPDSCHConfig`

objects. For example, if `NumLayers=6`

and the valid port indices are
in the range [0, 3] and [8, 11], then the object selects the 0, 1, 2, 3, 8, 9 port
indices.

**Data Types: **`double`

`NIDNSCID`

— DM-RS scrambling identities

`[]`

(default) | 1-by-2 integer vector | scalar integer

DM-RS scrambling identities (*NID ^{0}* and

*NID*), specified as one of these options.

^{1}1-by-2 integer vector of values from 0 to 65,535 — The vector elements define

*NID*and^{0}*NID*.^{1}Scalar integer from 0 to 65,535 — This option specifies equal values for both

*NID*and^{0}*NID*.^{1}`[]`

— Use this option to set the DM-RS scrambling identity to the physical layer cell identity, specified by the`NCellID`

property of the carrier configuration.

**Data Types: **`double`

`NSCID`

— DM-RS scrambling initialization

`0`

(default) | `1`

DM-RS scrambling initialization, specified as `0`

or `1`

.

**Data Types: **`double`

`NumCDMGroupsWithoutData`

— Number of DM-RS CDM groups without data

`2`

(default) | `1`

| `3`

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 5.1.6.2.

`1`

— CDM group number 0`2`

— CDM group numbers 0 and 1`3`

— CDM group numbers 0, 1, and 2

**Data Types: **`double`

`DMRSDownlinkR16`

— Low PAPR DM-RS sequence

`0`

(default) | `1`

Low peak-to-average-power ratio (PAPR) DM-RS sequence, specified as one of these logical values.

`0`

(`false`

) — Disable the use of low PAPR DM-RS.`1`

(`true`

) — Enable the use of low PAPR DM-RS. The DM-RS sequence generation depends on the DM-RS antenna port indices (`DMRSPortSet`

) as well as the scrambling initialization (`NSCID`

).

**Data Types: **`double`

`CDMGroups`

— CDM group numbers corresponding to each DM-RS port

`0`

(default) | integer from 0 to 2 | row vector of integers

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`

property according to TS 38.211 Table 7.4.1.1.2-1 or 7.4.1.1.2-2 [1].

**Data Types: **`double`

`DeltaShifts`

— Delta shifts corresponding to each CDM group

`0`

(default) | integer from the set {0, 1, 2, 4} | row vector of integers

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 7.4.1.1.2-1 or 7.4.1.1.2-2 [1].

**Data Types: **`double`

`FrequencyWeights`

— Frequency weights

`[1; 1]`

(default) | column vector of integers | matrix of integers

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 7.4.1.1.2-1 or 7.4.1.1.2-2 [1].

**Data Types: **`double`

`TimeWeights`

— Time weights

`[1; 1]`

(default) | column vector of integers | matrix of integers

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 7.4.1.1.2-1 or 7.4.1.1.2-2 [1].

**Data Types: **`double`

`DMRSSubcarrierLocations`

— Subcarrier locations in RB for each port

`[0; 2; 4; 6; 8; 10]`

(default) | column vector of integers | matrix of integers

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`

`CDMLengths`

— CDM arrangement for reference signals

`[1 1]`

(default) | two-element row vector

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`

`DMRSEnhancedR18`

— Enhanced DM-RS multiplexing

`0`

(default) | `1`

*Since R2024a*

Enhanced DM-RS multiplexing, specified as one of these logical values:

`0`

(`false`

) — Disable enhanced DM-RS multiplexing.`1`

(`true`

) — Enable enhanced DM-RS multiplexing to extend the set of DM-RS antenna ports for MU-MIMO use.

This property together with the `DMRSLength`

and `DMRSConfigurationType`

properties define the valid range of antenna port
indices, as described in this table.

`DMRSEnhancedR18`
Value | `DMRSLength` Value | Valid Range of Antenna Port Indices | |
---|---|---|---|

`DMRSConfigurationType=1` | `DMRSConfigurationType=2` | ||

`0` for basic multiplexing | `1` for single symbol | [0, 3] | [0, 5] |

`2` for double symbol | [0, 7] | [0, 11] | |

`1` for enhanced multiplexing | `1` for single symbol | [0, 3] and [8, 11] | [0, 5] and [2, 17] |

`2` for double symbol | [0, 15] | [0, 23] |

**Data Types: **`double`

## Examples

### Create PDSCH DM-RS Object

Create a physical downlink shared channel (PDSCH) demodulation reference signal (DM-RS) object.

Specify a single-symbol DMRS with configuration type as 2, number of DM-RS additional positions as 2, and antenna ports as 0, 1, and 3.

View the corresponding properties.

dmrs = nrPDSCHDMRSConfig; dmrs.DMRSConfigurationType = 2; dmrs.DMRSLength = 1; dmrs.DMRSAdditionalPosition = 2; dmrs.DMRSPortSet = [0 1 3]; dmrs

dmrs = nrPDSCHDMRSConfig with properties: DMRSConfigurationType: 2 DMRSReferencePoint: 'CRB0' DMRSTypeAPosition: 2 DMRSAdditionalPosition: 2 DMRSLength: 1 CustomSymbolSet: [] DMRSPortSet: [0 1 3] NIDNSCID: [] NSCID: 0 NumCDMGroupsWithoutData: 2 DMRSDownlinkR16: 0 DMRSEnhancedR18: 0 Read-only properties: CDMGroups: [0 0 1] DeltaShifts: [0 0 2] FrequencyWeights: [2x3 double] TimeWeights: [2x3 double] DMRSSubcarrierLocations: [4x3 double] CDMLengths: [2 1]

### Generate PDSCH DM-RS Symbols and Indices

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

`carrier = nrCarrierConfig('NSlot',10);`

Create a physical downlink shared channel (PDSCH) configuration object, `pdsch`

, with physical resource blocks (PRBs) allocated from 0 to 30.

pdsch = nrPDSCHConfig; pdsch.PRBSet = 0:30;

Create a PDSCH demodulation reference signal (DM-RS) object, `dmrs`

, with specified properties.

dmrs = nrPDSCHDMRSConfig; dmrs.DMRSConfigurationType = 2; dmrs.DMRSLength = 2; dmrs.DMRSAdditionalPosition = 1; dmrs.DMRSTypeAPosition = 2; dmrs.DMRSPortSet = 5; dmrs.NIDNSCID = 10; dmrs.NSCID = 0;

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

pdsch.DMRS = dmrs;

Generate PDSCH DM-RS symbols and indices for the specified carrier, PDSCH configuration, and output formatting `name-value`

pair argument.

sym = nrPDSCHDMRS(carrier,pdsch,'OutputDataType','single')

`sym = `*496x1 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 = nrPDSCHDMRSIndices(carrier,pdsch,'IndexBase','0based','IndexOrientation','carrier')

`ind = `*496x1 uint32 column vector*
1252
1253
1258
1259
1264
1265
1270
1271
1276
1277
⋮

Display the generated DM-RS symbols on the carrier resource grid.

grid = complex(zeros([carrier.NSizeGrid*12 carrier.SymbolsPerSlot pdsch.NumLayers])); grid(ind+1) = sym; imagesc(abs(grid(:,:,1))); axis xy; xlabel('OFDM Symbols'); ylabel('Subcarriers'); title('PDSCH 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™.

## Version History

**Introduced in R2020a**

### R2024a: Use enhanced DM-RS multiplexing for MU-MIMO

Use the `DMRSEnhancedR18`

object property to enable enhanced DM-RS multiplexing for
MU-MIMO transmissions.

### R2024a: Value range of `DMRSPortSet`

property has changed

The value range of the `DMRSPortSet`

property has changed to match the PDSCH DM-RS antenna port values
from TS 38.211 Table 7.4.1.1.2-5. In previous releases, the valid antenna port numbers range
from 0 to 11 and the nominal value depends on the DM-RS configuration type and DM-RS symbol
duration. Starting in R2024a, the valid antenna port numbers range from 0 to 23 and the
nominal value also depends on whether enhanced DM-RS multiplexing is enabled.
The range from 0 to 23 in
the `DMRSPortSet`

property corresponds to the range from 1000 to 1023,
respectively, in Table 7.4.1.1.2-5.

### R2022a: Release 16 updates for low PAPR sequences, DM-RS scrambling identities, and type B mapping

The

`DMRSDownlinkR16`

property enables low peak-to-average-power ratio (PAPR) physical downlink shared channel (PDSCH) DM-RS sequences, as defined in Release 16 of TS 38.211 Section 7.4.1.1.The

`NIDNSCID`

property supports dynamic ID selection.PDSCH DM-RS symbol generation now supports type B mapping DM-RS symbol positions, as defined in Release 16 of TS 38.211 Tables 7.4.1.1.2-3 and 7.4.1.1.2-4.

## See Also

### Functions

### Objects

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)