nrPDSCHConfig

PDSCH configuration parameters

Description

The nrPDSCHConfig object sets physical downlink shared channel (PDSCH) configuration parameters, as defined in TS 38.211 Sections 7.3.1, 7.4.1.1, and 7.4.1.2 [1]. The object bundles all the properties involved in the PDSCH processing chain, including scrambling, symbol modulation, layer mapping, virtual resource blocks (VRB) to physical resource blocks (PRB) interleaving, and resource element (RE) mapping with the reserved resources patterns. The object also contains properties of the associated physical reference signals, such as demodulation reference signal (DM-RS) and phase tracking reference signal (PT-RS).

By default, the object configures a physical downlink shared channel occupying a 10 MHz bandwidth at, 15 kHz subcarrier spacing (52 resource blocks) and spanning over 14 OFDM symbols in a slot.

Creation

Description

pdsch = nrPDSCHConfig creates a PDSCH configuration object with default properties.

example

pdsch = nrPDSCHConfig(Name,Value) specifies properties using one or more name-value pair arguments. Enclose each property in quotes. For example, 'NSizeBWP',200,'NumLayers',7 specifies 200 PRBs in the bandwidth part (BWP) and 7 transmission layers. Unspecified properties take their default values.

Properties

expand all

Number of PRBs in BWP, specified as an integer from 1 to 275. Use [] to set this property to the NSizeGrid property of the nrCarrierConfig object.

Data Types: double

Starting PRB index of BWP relative to common resource block (CRB) 0, specified as an integer from 0 to 2473. Use [] to set this property to the NStartGrid property of the nrCarrierConfig object.

Data Types: double

Reserved PRBs and OFDM symbols pattern in BWP, specified as a cell array of object(s), of class nrPDSCHReservedConfig.

Data Types: cell

Reserved RE indices within the BWP, specified as a vector of nonnegative integers. This property specifies RE indices (0-based) that are unavailable for a PDSCH due to the channel state information reference signal (CSI-RS) or cell-specific reference signal being present in a particular slot.

Data Types: double

Modulation scheme, specified as 'QPSK', '16QAM', '64QAM', or '256QAM', a string scalar, a string array, or a cell array of character vectors. Modulation scheme for single codeword is specified as a character vector or string scalar. If two codewords are present, single modulation scheme can be applied to both the codewords. Alternatively, you can specify different modulation schemes for each codeword by using a string array or a cell array of character vectors.

Modulation SchemeNumber of Bits Per Symbol
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Example: To specify different modulation schemes for two codewords, you can use any of these formats: {'QPSK','16QAM'} or ["QPSK","16QAM"].

Data Types: char | string | cell

Number of transmission layers, specified as an integer from 1 to 8.

  • For one codeword, specify an integer from 1 to 4.

  • For two codewords, specify an integer from 5 to 8.

Data Types: double

Mapping type of the physical shared channel, specified as 'A' or 'B'.

Data Types: char | string

OFDM symbol allocation of the physical shared channel, specified as a two-element vector of nonnegative integers. The first element of this property represents the start of symbol allocation (0-based). The second element represents the number of allocated OFDM symbols.

When this property is set to [] or second element in this two-element vector of nonnegative integers is 0, the symbol allocation is empty.

Data Types: double

PRB allocation of PDSCH within the BWP, specified as a vector of nonnegative integers from 0 to 274.

Data Types: double

VRB-to-PRB interleaving, specified as one of these values.

  • 0 — Disable VRB-to-PRB interleaving.

  • 1 — Enable VRB-to-PRB interleaving.

Data Types: double | logical

Bundle size in terms of the number of PRBs for VRB-to-PRB interleaving, specified as a 2 or 4.

Dependencies

This property applies only, when VRBToPRBInterleaving is set to 1.

Data Types: double

Scrambling identity, specified as an integer from 0 to 1023. Use [] to set this property to the NCellID property of the nrCarrierConfig object.

Data Types: double

Radio network temporary identifier of the user equipment, specified as an integer from 0 to 65,535.

Data Types: double

PDSCH DM-RS configuration parameters, specified as an nrPDSCHDMRSConfig object. This property relates to the demodulation reference signal configuration and contains all properties of the specified nrPDSCHDMRSConfig object.

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

  • 0 — Disable PT-RS configuration.

  • 1 — Enable PT-RS configuration.

Data Types: double | logical

PDSCH PT-RS configuration, specified as an nrPDSCHPTRSConfig object. This property relates to the phase tracking reference signal configuration and and contains all properties of the specified nrPDSCHPTRSConfig object.

This property is read-only.

Number of codewords, specified as a 1 or 2. This property is updated based on the DMRSPortSet property of nrPDSCHDMRSConfig object. Use NumLayers property to calculate the number of codewords, when DMRSPortSet property is empty.

Data Types: double

Examples

collapse all

Create a physical downlink shared channel (PDSCH) configuration object that occupies a bandwidth of 10 MHz bandwidth with 15 kHz subcarrier spacing.

Specify 52 PRBs in the bandwidth part (BWP), a scrambling identity of 750, and a 16-QAM modulation scheme. Enable VRB-to-PRB interleaving and PT-RS configuration.

pdsch = nrPDSCHConfig;
pdsch.NSizeBWP = 52;
pdsch.NID = 750;
pdsch.Modulation = '16QAM';
pdsch.VRBToPRBInterleaving = 1;
pdsch.EnablePTRS = 1;
disp(pdsch)
  nrPDSCHConfig with properties:

                NSizeBWP: 52
               NStartBWP: []
             ReservedPRB: {[1x1 nrPDSCHReservedConfig]}
              ReservedRE: []
              Modulation: '16QAM'
               NumLayers: 1
             MappingType: 'A'
        SymbolAllocation: [0 14]
                  PRBSet: [1x52 double]
    VRBToPRBInterleaving: 1
           VRBBundleSize: 2
                     NID: 750
                    RNTI: 1
                    DMRS: [1x1 nrPDSCHDMRSConfig]
              EnablePTRS: 1
                    PTRS: [1x1 nrPDSCHPTRSConfig]

   Read-only properties:
            NumCodewords: 1

Create a PDSCH configuration object with two reserved PRB patterns.

pdsch = nrPDSCHConfig('ReservedPRB',{nrPDSCHReservedConfig,nrPDSCHReservedConfig});

For each reserved PRB pattern, specify the reserved PRB indices in the BWP, the OFDM symbols associated with those reserved PRBs, and the period for the number of slots in the pattern.

pdsch.ReservedPRB{1}.PRBSet = (0:15);
pdsch.ReservedPRB{1}.SymbolSet = (5:6);
pdsch.ReservedPRB{1}.Period = 5;
pdsch.ReservedPRB{2}.PRBSet = (0:23);
pdsch.ReservedPRB{2}.SymbolSet = [2:4 7:9];
pdsch.ReservedPRB{2}.Period = 3;

Display the two PRB patterns.

PRBPattern1 = pdsch.ReservedPRB{1}
PRBPattern1 = 
  nrPDSCHReservedConfig with properties:

       PRBSet: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
    SymbolSet: [5 6]
       Period: 5

PRBPattern2 = pdsch.ReservedPRB{2}
PRBPattern2 = 
  nrPDSCHReservedConfig with properties:

       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]
    SymbolSet: [2 3 4 7 8 9]
       Period: 3

Create a carrier configuration object with default properties. Specify the physical layer cell identity as 42 and slot number as 10.

carrier = nrCarrierConfig;
carrier.NCellID = 42;
carrier.NSlot = 10;

Create a PDSCH configuration object with a 16-QAM modulation scheme. Set the radio network temporary identifier to 1005, size of the BWP to 25, starting PRB index of the BWP to 10, and PRB set to occupy the whole BWP.

pdsch = nrPDSCHConfig;
pdsch.Modulation = '16QAM';
pdsch.RNTI = 1005;
pdsch.NID = []; % Set NID equal to the NCellID property of carrier
pdsch.NSizeBWP = 25;
pdsch.NStartBWP = 10;
pdsch.PRBSet = 0:pdsch.NSizeBWP-1;

Generate PDSCH indices in subscript form and set the index orientation to bandwidth part.

[ind,info] = nrPDSCHIndices(carrier,pdsch,'IndexStyle','subscript','IndexOrientation','bwp')
ind = 3900x3 uint32 matrix

    1    1    1
    2    1    1
    3    1    1
    4    1    1
    5    1    1
    6    1    1
    7    1    1
    8    1    1
    9    1    1
   10    1    1
      ⋮

info = struct with fields:
                G: 15600
               Gd: 3900
        NREPerPRB: 156
    DMRSSymbolSet: 2
    PTRSSymbolSet: [1x0 double]

Generate PDSCH symbols of data type single.

numDataBits = info.G;
cws = randi([0 1],numDataBits,1);
sym = nrPDSCH(carrier,pdsch,cws,'OutputDataType','single')
sym = 3900x1 single column vector

  -0.9487 + 0.9487i
  -0.9487 - 0.9487i
  -0.3162 - 0.9487i
   0.9487 - 0.3162i
  -0.9487 + 0.3162i
   0.3162 + 0.9487i
   0.3162 + 0.9487i
  -0.3162 + 0.3162i
   0.3162 + 0.3162i
   0.9487 - 0.3162i
      ⋮

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

Introduced in R2020a