Main Content

nrPUSCHPTRSConfig

PUSCH PT-RS configuration parameters

Since R2020a

Description

The nrPUSCHPTRSConfig object sets phase tracking reference signal (PT-RS) configuration parameters for the physical uplink shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.2 [1]. This object bundles all the properties involved in PUSCH PT-RS symbols and indices generation. By default, the object defines the PT-RS with a frequency density of 2 and time density of 1. Use this object when setting the PTRS property of the nrPUSCHConfig or nrWavegenPUSCHConfig objects.

Creation

Description

ptrs = nrPUSCHPTRSConfig creates a PUSCH-specific PT-RS configuration object with default properties.

example

ptrs = nrPUSCHPTRSConfig(Name,Value) specifies properties using one or more name-value pair arguments. Enclose each property in quotes. For example, 'TimeDensity',2,'FrequencyDensity',4 sets the time density to 2 and frequency density to 4. Unspecified properties take their default values.

Properties

expand all

PT-RS time density, specified as 1, 2, or 4. This property is the higher layer parameter timeDensity.

Data Types: double

PT-RS frequency density, specified as 2 or 4. This property is the higher layer parameter frequencyDensity.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 0.

Data Types: double

Number of PT-RS samples per PT-RS group, specified as 2 or 4. This property is the higher layer parameter sampleDensity.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 1.

Data Types: double

Number of PT-RS groups, specified as 2, 4, or 8. This property is the higher layer parameter sampleDensity.

When this property is set to 8, the number of PT-RS samples set by the NumPTRSSamples property must be set to 4.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 1.

Data Types: double

Resource element offset, specified as '00', '01','10', or '11'. This property is the higher layer parameter resourceElementOffset.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 0.

Data Types: char | string

PT-RS antenna port set, specified as a two-element vector of nonnegative integers. Specify [] to set this property to the lowest value in the DMRSPortSet property of nrPUSCHDMRSConfig object. This usage of [] value is applicable only when nrPUSCHDMRSConfig object is used as a property of nrPUSCHConfig object.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 0.

Data Types: double

PT-RS scrambling identity, specified as an integer from 0 to 1007. Specify [] to set this property equal to the NRSID property of nrPUSCHDMRSConfig object.

Dependencies

This property applies only when nrPUSCHPTRSConfig is a property of nrPUSCHConfig with TransformPrecoding set to 1.

Data Types: double

Examples

collapse all

Create a default PUSCH configuration object. Enable the PT-RS configuration and transform precoding for a DFT-s-OFDM waveform.

pusch = nrPUSCHConfig;
pusch.EnablePTRS = 1;
pusch.TransformPrecoding = 1;

Create a default PT-RS configuration object for the PUSCH. Set number of PT-RS samples to 4, number of PT-RS groups to 8, and PT-RS scrambling identity to 750.

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

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

pusch.PTRS = ptrs;

Display the properties for PUSCH PT-RS configuration object and PUSCH configuration object, respectively.

disp(pusch)
  nrPUSCHConfig with properties:

              NSizeBWP: []
             NStartBWP: []
            Modulation: 'QPSK'
             NumLayers: 1
           MappingType: 'A'
      SymbolAllocation: [0 14]
                PRBSet: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51]
    TransformPrecoding: 1
    TransmissionScheme: 'nonCodebook'
       NumAntennaPorts: 1
                  TPMI: 0
          CodebookType: 'codebook1_ng1n4n1'
      FrequencyHopping: 'neither'
     SecondHopStartPRB: 1
           Interlacing: 0
         BetaOffsetACK: 20
        BetaOffsetCSI1: 6.2500
        BetaOffsetCSI2: 6.2500
            UCIScaling: 1
                   NID: []
                  RNTI: 1
                NRAPID: []
                  DMRS: [1x1 nrPUSCHDMRSConfig]
            EnablePTRS: 1
                  PTRS: [1x1 nrPUSCHPTRSConfig]

   Read-only properties:
          NumCodewords: 1
disp(pusch.PTRS)
  nrPUSCHPTRSConfig with properties:

       TimeDensity: 1
    NumPTRSSamples: 4
     NumPTRSGroups: 8
               NID: 750

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 and transform precoding to 0. 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.EnablePTRS = 1;

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

ptrs = nrPUSCHPTRSConfig;
ptrs.TimeDensity = 2;
ptrs.FrequencyDensity = 4;
ptrs.REOffset = '11';

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

pusch.PTRS = ptrs;

Generate PUSCH PT-RS indices in subscript form

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

    21     1     1
    69     1     1
   117     1     1
   165     1     1
   213     1     1
   261     1     1
   309     1     1
   357     1     1
   405     1     1
   453     1     1
      ⋮

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
      ⋮

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 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