Main Content

nrPUSCHPTRS

Generate PUSCH PT-RS symbols

Description

example

sym = nrPUSCHPTRS(carrier,pusch) returns sym in matrix form, which contains phase tracking reference signal (PT-RS) symbols of physical uplink shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.2.1 [1]. The number of columns in sym depends on the transmission scheme and transform precoding. carrier specifies the carrier configuration parameters for a specific OFDM numerology and pusch specifies the PUSCH configuration parameters.

example

sym = nrPUSCHPTRS(___,'OutputDataType',datatype) specifies the data type of output PT-RS symbols sym, in addition to the input arguments in the previous syntax.

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 PUSCH configuration object with 'codebook' based transmission and enable the PT-RS configuration. Set the number of antenna ports to 4, transmitted precoding matrix indicator to 5, frequency density to 4, and resource element offset to '11'. When transform precoding is 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 = 5;
pusch.EnablePTRS = 1;
pusch.PTRS.FrequencyDensity = 4;
pusch.PTRS.REOffset = '11';

Generate PUSCH PT-RS symbols of data type single.

sym = nrPUSCHPTRS(carrier,pusch,'OutputDataType','single')
sym = 169x4 single matrix

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

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

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

Create a PUSCH configuration object with intraslot frequency hopping and enable the PT-RS configuration. Set the transform precoding to 1, starting physical resource blocks (PRB) index of the second hop to 3 and PRB set to 0:5. When transform precoding is 1, the waveform type is discrete fourier transform spread orthogonal frequency division multiplexing (DFT-s-OFDM).

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

Create a PUSCH phase tracking reference signal (PT-RS) configuration object with specified properties.

ptrs = nrPUSCHPTRSConfig;
ptrs.TimeDensity = 2;
ptrs.NumPTRSSamples = 4;
ptrs.NumPTRSGroups = 8;
ptrs.NID = 750;

Assign the PUSCH PT-RS configuration object to PTRS property of PUSCH configuration object.

pusch.PTRS = ptrs;

Generate PUSCH PT-RS symbols of data type single.

sym = nrPUSCHPTRS(carrier,pusch,'OutputDataType','single')
sym = 192x1 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
      ⋮

Generate PUSCH PT-RS indices in subscript form.

ind = nrPUSCHPTRSIndices(carrier,pusch,'IndexStyle','subscript')
ind = 192x3 uint32 matrix

    1    1    1
    2    1    1
    3    1    1
    4    1    1
   12    1    1
   13    1    1
   14    1    1
   15    1    1
   21    1    1
   22    1    1
      ⋮

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object. This function uses only these properties of the nrCarrierConfig object.

Property FieldValuesDescription
NCellID

1 (default), integer from 0 to 1007

Physical layer cell identity

SubcarrierSpacing

15 (default), 30, 60, 120, 240

Subcarrier spacing in kHz

CyclicPrefix

'normal' (default), 'extended'

Cyclic prefix length, specified as one of these options.

  • 'normal' corresponds to 14 OFDM symbols in a slot.

  • 'extended' corresponds to 12 OFDM symbols in a slot.

For the numerologies specified in TS 38.211 Section 4.2, extended cyclic prefix length applies only for 60 kHz subcarrier spacing.

NSizeGrid

52 (default), integer from 1 to 275

Number of resource blocks in the carrier resource grid

NStartGrid

0 (default), integer from 0 to 2199

Start of carrier resource grid relative to common resource block 0 (CRB 0)

NSlot

0 (default), nonnegative integer scalar

Slot number. You can set NSlot to a value larger than the number of slots per frame.

PUSCH configuration parameters, specified as an nrPUSCHConfig object. This function uses only these nrPUSCHConfig object properties.

Property FieldValuesDescription
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 to NSizeGrid of carrier input 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 to NStartGrid of carrier input 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.

  • 0 — The transform precoding is disabled and waveform type is CP-OFDM.

  • 1 — The transform precoding is enabled and waveform type is DFT-s-OFDM.

TransmissionScheme

'nonCodebook' (default), 'codebook'

PUSCH transmission scheme

NumAntennaPorts

1 (default), 2, or 4

Number of antenna ports. The value must be greater than or equal to NumLayers. This property is applicable only, when TransmissionScheme is set to 'codebook'.

TPMI

0 (default), integer from 0 to 27

Transmitted precoding matrix indicator. This property is applicable only when TransmissionScheme is set to 'codebook'.

FrequencyHopping

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

Frequency hopping mode for PUSCH

SecondHopStartPRB

1 (default), integer from 0 to 274

Starting PRB index of second hop relative to NStartBWP

RNTI

1 (default), integer from 0 to 65,535

Radio network temporary identifier of the user equipment

DMRS

nrPUSCHDMRSConfig configuration object

DMRS configuration object only uses these properties.

  • DMRSConfigurationType

  • DMRSTypeAPosition

  • DMRSLength

  • DMRSAdditionalPosition

  • CustomSymbolSet

  • DMRSPortSet

  • These properties are applicable only when TransformPrecoding is set to zero.

    • NIDNSCID

    • NSCID

  • This property are applicable only when TransformPrecoding is set to one.

    • NRSID

For more information, see nrPUSCHDMRSConfig.

EnablePTRS

0 (default), 1

PT-RS configuration, specified as one of these values.

  • 0 — Disable PT-RS configuration.

  • 1 — Enable PT-RS configuration.

PTRS

nrPUSCHPTRSConfig configuration object

PTRS configuration object uses these properties.

  • TimeDensity

  • These properties are applicable only when TransformPrecoding is set to zero.

    • FrequencyDensity

    • REOffset

    • PTRSPortSet

  • These properties are applicable only when TransformPrecoding is set to one.

    • NumPTRSSamples

    • NumPTRSGroups

    • NID

For more information, see nrPUSCHPTRSConfig.

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

Data Types: char | string

Output Arguments

collapse all

PT-RS symbols, returned as a complex matrix. The number of columns depends on the TransmissionScheme and TransformPrecoding properties of nrPUSCHConfig object.

The number of columns in sym is returned as one these values.

  • Number of PT-RS antenna ports configured — When transform precoding is disabled and transmission scheme is non-codebook.

  • Number of antenna ports configured — When transform precoding is disabled and transmission scheme is codebook.

  • Number of transmission layers — When transform precoding is enabled.

Data Types: double | single
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