nrPUSCHDMRSConfig
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
or nrWavegenPUSCHConfig
objects.
Creation
Description
creates a DM-RS
configuration object for a PUSCH with default properties.dmrs
= nrPUSCHDMRSConfig
specifies properties using one or more name-value pair arguments. Enclose each property in
quotes. For example, dmrs
= nrPUSCHDMRSConfig(Name,Value
)'DMRSConfigurationType',1,'DMRSLength',2
specifies
a double-symbol DM-RS with configuration type as 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.
This property value must be 1
when nrPUSCHDMRSConfig is a property of
nrPUSCHConfig
with TransformPrecoding
property set to 1
.
Data Types: double
DMRSTypeAPosition
— Position of first DM-RS OFDM symbol for mapping type A
2
(default) | 3
Position of the first DM-RS OFDM symbol for mapping type A, specified as
2
or 3
. This property is the higher-layer
parameter dmrs-TypeA-Position.
This property only applies when the MappingType
property of the nrPUSCHConfig
or nrWavegenPUSCHConfig
object 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.
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
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).
This property value must be 1
when nrPUSCHDMRSConfig is a property of
nrPUSCHConfig
object with FrequencyHopping
property set to 'intraSlot'
.
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 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
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 [12, 17] |
2 for double symbol | [0, 15] | [0, 23] |
This table corresponds to the PUSCH DM-RS antenna port values, as defined in TS 38.211 Table 6.4.1.1.3-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 nrPUSCHConfig
or nrWavegenPUSCHConfig
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 for CP-OFDM
[]
(default) | 1-by-2 integer vector | scalar integer
DM-RS scrambling identities for CP-OFDM (NID0 and NID1), specified as one of these options.
1-by-2 integer vector of values from 0 to 65,535 — The vector elements define NID0 and NID1.
Scalar integer from 0 to 65,535 — This option specifies equal values for both NID0 and NID1.
[]
— Use this option to set the DM-RS scrambling identity to the physical layer cell identity, specified by theNCellID
property of the carrier configuration.
Dependencies
This property applies when the TransformPrecoding
property of
the nrPUSCHConfig
object is set to 0
.
Data Types: double
NRSID
— DM-RS scrambling identity for DFT-s-OFDM
[]
(default) | integer from 0 to 1007
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 setNRSID
automatically.If you set the
DMRSUplinkTransformPrecodingR16
property to1
and theModulation
property of the PUSCH configuration object to'pi/2-BPSK'
, the object setsNRSID
to one of the NID values defined by theNIDNSCID
property.If you set the
DMRSUplinkTransformPrecodingR16
property to0
or theModulation
property of the PUSCH configuration object to a value that is different than'pi/2-BPSK'
, the object setsNRSID
to theNCellID
property value of thenrCarrierConfig
object.
Dependencies
This property applies when the TransformPrecoding
property of
the nrPUSCHConfig
object is set to 1
.
Data Types: double
NSCID
— DM-RS scrambling initialization for CP-OFDM
0
(default) | 1
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
GroupHopping
— Group hopping configuration
0
(default) | 1
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
SequenceHopping
— Sequence hopping configuration
0
(default) | 1
Sequence hopping configuration, specified as one of these options.
0
—SequenceHopping
is disabled.1
—SequenceHopping
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
NumCDMGroupsWithoutData
— Number of 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 6.2.2 [2].
1
— CDM group number 02
— CDM group numbers 0 and 13
— 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
DMRSUplinkR16
— Release 16 low PAPR DM-RS sequence
0
(default) | 1
Release 16 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
).
Dependencies
This property applies when the TransformPrecoding
property of
the nrPUSCHConfig
object is set to 0
.
Data Types: double
DMRSUplinkTransformPrecodingR16
— Release 16 low PAPR DM-RS sequence for DFT-s-OFDM
0
(default) | 1
Release 16 low PAPR DM-RS sequence for DFT-s-OFDM, specified as one of these logical values.
0
(false
) — Disable the use of low PAPR DM-RS for DFT-s-OFDM. The DM-RS sequence generation uses type 1 low PAPR sequences.1
(true
) — Enable the use of low PAPR DM-RS for DFT-s-OFDM. The DM-RS sequence generation uses type 2 low PAPR sequences.
Dependencies
This property applies when the TransformPrecoding
property of
the nrPUSCHConfig
object is set to 1
and the
Modulation
property is set to
'pi/2-BPSK'
.
Data Types: double
CDMGroups
— CDM group numbers corresponding to each 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
according to TS 38.211 Table 6.4.1.1.3-1 or 6.4.1.1.3-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 6.4.1.1.3-1 or 6.4.1.1.3-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 6.4.1.1.3-1 or 6.4.1.1.3-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 6.4.1.1.3-1 or 6.4.1.1.3-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 multi-user multiple-input multiple-output (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 [12, 17] |
2 for double symbol | [0, 15] | [0, 23] |
Data Types: double
Examples
Create PUSCH DM-RS Object
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 DMRSUplinkR16: 0 DMRSUplinkTransformPrecodingR16: 0 DMRSEnhancedR18: 0 Read-only properties: CDMGroups: [0 0] DeltaShifts: [0 0] FrequencyWeights: [2x2 double] TimeWeights: [2x2 double] DMRSSubcarrierLocations: [6x2 double] CDMLengths: [1 1]
Generate PUSCH DM-RS Symbols for CP-OFDM
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
⋮
Generate PUSCH DM-RS Indices for Codebook-Based Transmission
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
⋮
Generate PUSCH DM-RS Symbols and Indices
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™.
Version History
Introduced in R2020aR2024a: 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 PUSCH DM-RS antenna port values
from TS 38.211 Table 6.4.1.1.3-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.
R2022a: Release 16 updates for low PAPR sequences and DM-RS scrambling identities
The
DMRSUplinkR16
andDMRSUplinkTransformPrecodingR16
properties enable low peak-to-average-power (PAPR) PUSCH DM-RS sequences, as defined in Release 16 of TS 38.211 Section 6.4.1.1.The
NIDNSCID
property supports dynamic ID selection.The default value of the
NRSID
property depends on theDMRSUplinkTransformPrecodingR16
object property and theModulation
property of the PUSCH configuration object.
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)