Main Content

nrPUSCHDMRS

Generate PUSCH DM-RS symbols

Description

example

sym= nrPUSCHDMRS(carrier,pusch)returns a matrix containing demodulation reference signal (DM-RS) symbols of physical uplink shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.1.1[1].carrierspecifies the carrier configuration parameters for a specific OFDM numerology.puschspecifies the PUSCH configuration parameters.

example

sym= nrPUSCHDMRS(carrier,pusch,'OutputDataType',datatype)specifies the data type for the DM-RS symbols.

Examples

collapse all

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 ofsingledata type.

sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym =624 x4单一matrix-0.3536 - 0.3536我0.0000 + 0.0000 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 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 formattingname-valuepair 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 vector217 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 gridoffset = pusch.NStartBWP-carrier.NStartGrid;% BWP start location in the carrier gridgrid(offset*12+1:(offset+pusch.NSizeBWP)*12,:,:) = bwp; imagesc(abs(grid(:,:,1))); axisxy; xlabel('OFDM Symbols'); ylabel('Subcarriers'); title('PUSCH DM-RS Resource Elements in the Carrier Resource Grid');

Figure contains an axes. The axes with title PUSCH DM-RS Resource Elements in the Carrier Resource Grid contains an object of type image.

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as annrCarrierConfigobject. This function uses only these properties of thenrCarrierConfigobject.

PUSCH configuration parameters, specified as annrPUSCHConfigobject. This function uses only these properties of thenrPUSCHConfigobject.

Property Field Values Description
NSizeBWP

[](default), integer from 1 to 275

Size of the bandwidth part (BWP) in terms of number of physical resource blocks (PRBs). The default value of[]implies that the value is equal toNSizeGridofcarrierinput argument.

NStartBWP

[](default), integer from 0 to 2473

Starting PRB index of BWP relative to CRB 0. The default value of[]implies that the value is equal toNStartGridofcarrierinput argument.

NumLayers

1 (default), integer from 1 to 4

Number of transmission layers

MappingType

'A' (default), 'B'

Mapping type of PUSCH

SymbolAllocation

[0 14] (default), two-element vector of nonnegative integers

OFDM symbols allocated for PUSCH

PRBSet

[0:51] (default), vector of nonnegative integers from 0 to 274

PRBs allocated for PUSCH within the BWP

TransformPrecoding

0 (default), 1

Transform precoding flag, specified as one of these values.

  • 0indicates that the transform precoding is enabled and waveform type is CP-OFDM.

  • 1indicates that the transform precoding is disabled and waveform type is DFT-s-OFDM.

TransmissionScheme

'nonCodebook'(default),'codebook'

PUSCH transmission scheme

TPMI

0 (default), integer from 0 to 27

Transmitted precoding matrix indicator. This property is applicable whenTransmissionSchemeis set to'codebook'.

NumAntennaPorts

1 (default), 2, or 4

Number of antenna ports. The value must be greater than or equal toNumLayers. This property is applicable whenTransmissionSchemeis set to'codebook'.

FrequencyHopping

'neither(default),'intraSlot', or'interSlot'

Frequency hopping configuration for PUSCH

SecondHopStartPRB

1 (default), integer from 0 to 274

Starting PRB index of second hop relative to BWP

DMRS

nrPUSCHDMRSConfigconfiguration object

DMRSconfiguration object only uses these properties.

  • DMRSConfigurationType

  • DMRSTypeAPosition

  • DMRSLength

  • DMRSAdditionalPosition

  • CustomSymbolSet

  • DMRSPortSet

  • These properties are applicable only whenTransformPrecodingis set to zero.

    • NIDNSCID

    • NSCID

  • These properties are applicable only whenTransformPrecodingis set to one.

    • GroupHopping

    • SequenceHopping

    • NRSID

For more information, seenrPUSCHDMRSConfig.

Data type for the generated DM-RS symbols, specified as'double'or'single'.

Data Types:char|string

Output Arguments

collapse all

DM-RS symbols, returned as a complex matrix. The number of columns correspond to the number of antenna ports configured.

Data Types:single|double
Complex Number Support:Yes

References

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

Extended Capabilities

Introduced in R2020a