Main Content

nrPDSCHConfig

PDSCH configuration parameters

Since R2020a

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

This object defines 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).

The default nrPDSCHConfig object configures a single-layer PDSCH with mapping type A, QPSK modulation, a resource allocation of 52 resource blocks and 14 OFDM symbols in a slot, and single-symbol DM-RS type 1. This configuration corresponds to a full resource allocation with respect to the default nrCarrierConfig object.

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

Channel Configuration

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 the BWP, specified as a cell array of nrPDSCHReservedConfig objects.

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', '256QAM', '1024QAM', a string scalar, a string array, or a cell array of character vectors. This modulation scheme specifies the modulation type of the codewords and the number of bits used per modulation symbol. For one codeword, specify the modulation scheme as a character vector or string scalar. If two codewords are present (NumLayers > 4), the same modulation scheme applies to both codewords or 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
'1024QAM'10

Example: {'QPSK','16QAM'} or ["QPSK","16QAM"] specifies different modulation schemes for two codewords.

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 you set this property to [] or the second element of the vector to 0, no symbol is allocated for the channel.

Data Types: double

PRB allocation of the PDSCH in the BWP, specified as a vector of integers from 0 to 274. Specify with the PRBSetType property whether PRBSet defines PRB or virtual resource block (VRB) allocation.

Data Types: double

PRB allocation type, specified as one of these values:

  • 'VRB' — The PRBSet property specifies VRB allocation, in which the allocation indices are before the VRB-to-PRB mapping.

  • 'PRB' — The PRBSet property specifies PRB allocation, in which the allocation indices are after the VRB-to-PRB mapping.

Data Types: string | char

Enable 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

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

Dependencies

To enable this property, set the VRBToPRBInterleaving property to 1.

Data Types: double

PDSCH scrambling identity, specified as [] or an integer from 0 to 1023.

  • If the higher layer parameter dataScramblingIdentityPDSCH is configured, NID must be in the range from 0 to 1023.

  • If the higher layer parameter dataScramblingIdentityPDSCH is not configured, NID must be in the range from 0 to 1007.

When you specify this property as [], the object sets the PDSCH scrambling identity to the physical layer cell identity, specified by the NCellID property of the carrier.

Data Types: double

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

Data Types: double

Reference Signals Configuration

PDSCH DM-RS configuration parameters, specified as an nrPDSCHDMRSConfig object.

Enable the PT-RS, specified as one of these values.

  • 0 (false) — Disable the PT-RS configuration.

  • 1 (true) — Enable the PT-RS configuration.

Data Types: double | logical

PDSCH PT-RS configuration, specified as an nrPDSCHPTRSConfig object.

Read-Only Properties

This property is read-only.

Number of codewords, returned as one of these values:

  • 1 — If NumLayers is an integer from 1 to 4

  • 2 — If NumLayers is an integer from 5 to 8

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: [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]
              PRBSetType: 'VRB'
    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]
           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]

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

Version History

Introduced in R2020a

expand all