5G/NR  -  PDSCH  

 

 

 

PDSCH (Physical Data Shared Channel) in a Nutshell

 

  • PDSCH is a downlink physical channel that deliver user data from gNB to UE. It has characterstics summarized as below.
  • Resource Grid: PDSCH occupies a time-frequency grid of Resource Blocks (RBs) within a slot. Maximum number of PDSCH OFDM symbol within a slot is 14, but in most case it use less than 14 because usually one or more OFDM symbols are used for PDCCH.
  • Scheduling: The gNB schedules PDSCH resources for UEs based on their channel quality, data requirements, and fairness considerations.
  • Modulation: PDSCH supports various modulation schemes such as QPSK, 16QAM, 64QAM, and 256QAM to accommodate different channel conditions and data rates.
  • Channel Coding: PDSCH uses LDPC (Low-Density Parity-Check) coding to provide forward error correction, enhancing the robustness of data transmission over the wireless channel.
  • Layer Mapping : In MIMO (Multiple Input Multiple Output) systems, a PDSCH is distributed among multiple layers.
  • Rate Matching: PDSCH employs rate matching to adjust the coded data rate to match the allocated resources, accommodating different UE requirements and channel conditions.
  • DMRS (Demodulation Reference Signals): PDSCH includes DMRS to assist the UE in channel estimation and demodulation, ensuring accurate data reception ==> DMRS is explain in further detail in another note here.

PDSCH (Physical Data Shared Channel) in detail

This page is about the process of converting user data into PDSCH data and transmit it through each transmission antenna. This would be one of the most complicated process in NR process and a lot of factors are involved in this process. Followings are those factors getting involved in this process. The critical (core part) is Transport Process and DCI and RRC is to provide (configure) some parameters for the transport process. In LTE, most of the transport parameters are fixed or automatically determined by transport process algorithm and only small numbers of parameters are configured by DCI but RRC message does not influence very much in the process. However, in NR many of the transport process parameters are provided (configure) not only by DCI but also by RRC message, meaning that the process would become more flexible but troubleshoot for the process will become more challenging.

PDSCH Transport Process

Following diagram outlines the PDSCH (Physical Downlink Shared Channel) Transport Process and shows corresponding 3GPP specification for each process.

Following is brief summary for each step.

  • Transport Block CRC Attachment: The PDSCH data a0, a1, a2, ..., aA-1 undergoes a CRC attachment process to detect errors at the receiver side.
  • LDPC Base Graph Selection: After CRC attachment, the data is processed through LDPC (Low-Density Parity-Check) encoding for error correction purposes.
  • Code Block Segmentation and CRC Attachment: The data is then segmented into smaller code blocks, and another CRC is attached to each block.
  • Channel Coding: The code blocks are channel-coded to protect against errors during transmission.
  • Rate Matching: The channel-coded data is adjusted to fit the available transmission bandwidth.
  • Code Block Concatenation: The rate-matched code blocks are concatenated back into a single data stream.
  • Scrambling: The concatenated data is scrambled to randomize the data pattern for security and interference mitigation.
  • Modulation: The scrambled bits are then modulated into symbols suitable for transmission.
  • Layer Mapping: The modulated symbols are mapped across multiple layers for MIMO transmission.
  • Antenna Port Mapping: The layers are mapped to specific antenna ports.
  • Mapping to VRB (Virtual Resource Block): The data is mapped to virtual resource blocks within the frequency domain.
  • Mapping from VRB to PRB (Physical Resource Block): The virtual resource blocks are then mapped to physical resource blocks for actual transmission.

Each step in the process is vital for ensuring efficient and reliable communication over the PDSCH.

(1) Transport block CRC attachment

The transport block CRC attachment in 5G PDSCH channel processing is a step that allows the UE to detect errors in the received transport block, ensuring reliable data transmission over the wireless channel.  a CRC is calculated for the transport block to enable error detection at the receiver (UE). The CRC is a fixed-size checksum generated by applying a polynomial function to the transport block data. In 5G NR, a 24-bit or 16 bit CRC is attached to the transport block depending on the size of the transport block.

Let's break this down into steps:

  • The data from the transport block, represented as a sequence of bits a0, a1, a2, ..., aA-1, is prepared for CRC attachment to enable error detection at the receiver end.
  • If the size of the transport block A is greater than 3824, a 24-bit CRC is attached using the generator polynomial GCRC24(D).
  • If the size of the transport block A is less than or equal to 3824, a 16-bit CRC is used instead, with the polynomial GCRC16(D).
  • The CRC is computed and appended to the data sequence, resulting in an extended sequence a0, a1, a2, ..., aA-1 | p0, p1, p2, ..., pL-1.
  • The length L of the CRC is set to 24 when A > 3824 and 16 otherwise, to accommodate the CRC bits.
  • The resulting sequence after CRC attachment is represented as b0, b1, b2, ..., bB-1, where B = A + L, indicating the new length of the sequence.

This CRC attachment process is essential for ensuring reliable data transmission over the wireless channel by allowing error detection at the UE.

(2) LDPC base graph selection

LDPC graph selection is the step that enables efficient channel coding tailored to the transport block size, ensuring reliable data transmission and optimized performance.

5G NR specifies two base graphs for LDPC encoding, known as Base Graph 1 and Base Graph 2. Each base graph has a predefined size, with Base Graph 1 being larger than Base Graph 2.

The selection of a base graph depends on the size of the transport block being transmitted over the PDSCH. If the transport block size is larger than a certain threshold, Base Graph 1 is used; otherwise, Base Graph 2 is employed. The smaller Base Graph 2 is more suitable for smaller transport blocks, as it offers a better trade-off between complexity and performance.

LDPC BaseGraph type is determined by Transport Size (A) and Code Rate(R)  based on following criteria.

If I represent this as areas in coordinate, it would become as follows.

 

(3) Code block segmentation And Code Block CRC Attachment

This step is to ensure efficient and reliable data transmission by dividing large transport blocks into smaller segments and providing error detection capabilities at the code block level. We can think of this with a few different perspectives/steps summarized below.

  • Code Block Segmentation: If the size of a transport block is too large for efficient LDPC (Low-Density Parity-Check) coding, it is divided into smaller segments, called code blocks. The maximum size of a code block is defined by the 5G NR specifications. Segmentation is performed to ensure efficient channel coding and decoding while maintaining a reasonable complexity.
  • Segmentation Criteria: The segmentation process is determined by comparing the transport block size with a specified maximum code block size. If the transport block size exceeds the maximum code block size, the transport block is divided into equal-sized code blocks (with the exception of the last code block, which may be smaller). If the transport block size is within the maximum code block size, no segmentation is performed.
  • Code Block CRC Attachment: After segmentation, a CRC (Cyclic Redundancy Check) is calculated and attached to each code block individually. This 24-bit CRC allows for error detection at the receiver (UE) on a per-code-block basis.

The defailed steps for this process is as follows.

    i) Determine the max size of the code block (Kcb)

    : The max size of the code block depends on LDPC base graph type as follows.

    • For LDPC base graph type 1 : Kcb = 8448
    • For LDPC base graph type 2 : Kcb = 3840

    ii) Determine the number of Codeblocks

      if B(Transport block size) < Kcb(Max Codeblock size)

          L = 0

          C (number of codeblocks) = 1

          B' = B   // this mean 'No Segmentation'.

      else

          L = 24

          C = Ceiling(B/(Kcb - L))

          B' = B + C * L     

    iii) Determine the number of bits in each code block

      K'(the number of bits in each code block) = B'/C

    iv) Determine Kb

      For LDPC base graph type 1

        Kb = 22

      For LDPC base graph type 2

        if B (Transport blocksize) > 640

          Kb = 10

        else if B (Transport blocksize) > 560

          Kb = 9   

        else if B (Transport blocksize) > 192

          Kb = 8

        else

          Kb = 6

    v) find the minimum value of  Z in all sets of lifting sizes in [38.212-Table 5.3.2-1: Sets of LDPC lifting size]

    vi) denote Zc such that (Kb * Zc) >= K'

    vii) set K = 22 Zc for LDPC base graph 1

              K = 10 Zc for LDPC base graph 2

    viii) perform segmentation and add CRC bits

      s = 0  // s = bit position in B (transport block)

      for r = 0 to C-1

        for k = 0 to K'-L-1

          crk = bs

          s = s + 1

        end for

        if C > 1  // Do this if the number of the code block is more than 1

          Calculate pr0,pr1,pr2,...,pr(L-1) using the sequence cr0,cr1,cr2,...,cr(K'-L-1) and g_CRC24B(D)

          for k = K'-L to K'-1  // Append CRC bit

            crk = pr(k+L-K')

          end for

        end if

        for k = K' to K-1  // Insertion of filler bis

          crk = < NULL >

        end for

      end for

High level summary of the procedure listed above in pseudocode is as follows :

  • Determine the maximum size of the code block (Kcb), which varies depending on the LDPC base graph type used.
  • Decide on segmentation based on whether the transport block size exceeds Kcb, calculating the number of code blocks (C) and the size of each block (B').
  • Calculate the number of bits in each code block by dividing the transport block size by C.
  • Determine Kb, which is the number of bits within each code block, based on the LDPC base graph type and the transport block size.
  • Find the minimum value of Z from the set of LDPC lifting sizes that satisfies the condition Kb ≤ Zc.
  • For each code block, if C > 1, calculate the CRC bits and append them to the code block, inserting filler bits as necessary.

(4) Channel Coding

Detailed procedure of LDPC as described in 38.212 - 5.3.2 which is out of scope of this section (Beyond my knowledge as well :). Overall process can be summarized as below.

  • Parity Check Matrix: The LDPC codes are defined by a sparse parity-check matrix that represents the relationship between the data bits and the parity bits. 5G NR specifies two base graphs (Base Graph 1 and Base Graph 2) to construct the parity-check matrix, depending on the transport block size.
  • Encoding:The LDPC encoding process takes the segmented code blocks (with attached CRC) as input and generates parity bits based on the chosen base graph and lifting factor. These parity bits are then appended to the original data bits, forming a codeword that is transmitted over the PDSCH.

(5) Rate Matching

The Purpose of Rate matching is to adapts the output data rate of the channel encoder (LDPC) to match the available resources allocated for transmission in the time-frequency grid of the PDSCH. It can be describe in a few different steps as follows :

  • Bit Collection:: After LDPC coding, the encoded bits (data bits and parity bits) are collected in a circular buffer. The circular buffer is a temporary storage area with a fixed size that can hold bits in a circular manner, allowing for efficient bit selection.
  • Bit Selection:: Depending on the allocated PDSCH resources, a specific number of bits are selected from the circular buffer. The selection process involves three main operations: bit interleaving, bit pruning, and bit puncturing.
    • Bit Interleaving: Rearranges the order of the bits to improve the robustness against burst errors during transmission.
    • Bit Pruning: Removes any extra redundancy bits generated by the LDPC encoder
    • Bit Puncturing: Discards some of the encoded bits (usually parity bits) if the number of encoded bits exceeds the allocated resources.

(6) Code Block Concatenation

This is the step that combines the multiple code blocks resulting from the previous processing steps into a single data stream for transmission.

After rate matching, the processed code blocks are combined into a single data stream. The concatenation is performed in a specific order to ensure that the receiver (UE) can correctly separate and decode the individual code blocks. Typically, the code blocks are concatenated in the order they were segmented from the original transport block.

(7) Scrambling

Scrambling process is the step that introduces randomness to the transmitted data, ensuring uniform power distribution, interference management, data privacy, and accurate channel estimation. Scrambling and descrambling operations are performed at the transmitter and receiver, respectively, using the same cell-specific scrambling sequence. Scrambling introduces randomness to the transmitted data by applying a pseudo-random binary sequence (PRBS) to the data stream. This operation ensures that the transmitted signal has a uniform power distribution across different frequency and time resources. Scrambling also aids in mitigating inter-cell interference, improving data privacy, and allowing the receiver (UE) to perform accurate channel estimation. Some of highlights of this process are :

  • Scrambling Sequence: The scrambling process uses a cell-specific scrambling sequence generated based on the cell ID and a scrambling identity. The scrambling identity can be unique for each user (UE) within a cell, ensuring that the scrambling sequences used by different UEs are orthogonal to each other.
  • Bitwise XOR: The scrambling process involves a bitwise exclusive-or (XOR) operation between the input data stream (resulting from the code block concatenation step) and the scrambling sequence. The output of this operation is a scrambled data stream.
  • Impact on Data Rate: Scrambling does not change the data rate, as it only modifies the data stream by introducing randomness. The data rate is determined by other channel processing steps, such as LDPC encoding and rate matching.

The high leve summary of the above illustration is as follows :

  • The scrambling identity nID is determined based on configuration. If dataScramblingIdentity is configured in PDSCH-Config, nID takes a value from the set {0,1,...,1023}. Otherwise, nID is set to the physical cell ID NIDcell.
  • The initialization sequence cinit is calculated using the formula cinit = nRNTI * 215 + q * 214 + nID, where q is a quarter index.
  • Two sequences x1(n) and x2(n) are generated, with each bit in the sequences updated using the given polynomials and modulo 2 arithmetic.
  • The scrambling sequence c(n) is then produced by combining x1(n + Nc) and x2(n + Nc) also with modulo 2 arithmetic.
  • Finally, each bit b(i) of the data sequence is scrambled with the corresponding bit c(i) from the scrambling sequence to produce the scrambled bit b~(i).

(8) Modulation

The modulation step is essential for converting the binary data stream into complex symbols suitable for wireless transmission. The choice of modulation scheme affects the data rate, spectral efficiency, and robustness against noise and interference. In 5G, 4 different modulation schemes are supported as of now.

  • QPSK: QPSK modulates 2 bits per symbol, offering low data rates with high robustness against noise and interference.
  • 16QAM: 16QAM modulates 4 bits per symbol, providing a balance between data rate and robustness.
  • 64QAM: 64QAM modulates 6 bits per symbol, enabling higher data rates but with reduced robustness compared to QPSK and 16QAM.
  • 256QAM: 256QAM modulates 8 bits per symbol, offering the highest data rates with the lowest robustness among the supported modulation schemes.

The choice of modulation scheme depends on factors such as channel conditions, link adaptation, and UE capabilities.

(9) Layer Mapping

Layer mapping is the step that distributes the modulated symbols across one or multiple layers for transmission using multiple antennas. It aims to improve the spectral efficiency, reliability, and capacity of the wireless communication system by utilizing advanced antenna techniques such as MIMO and beamforming.

The number of layers depends on the availability of physical antenna, UE capability, and channel conditions. The 5G NR standard supports up to 8 layers per carrier as of now. The number of layers can be dynamically adapted based on the current system requirements and channel conditions.

 

<  38.211 - Table 7.3.1.3-1: Codeword-to-layer mapping for spatial multiplexing.  >

 

 

 

(10) Antenna Port Mapping

Once the data path through the layer mapping process, the data from each layer are mapped to each Antenna Port. When CSI is not applied, the data maps to physical antenna port as below.

When CSI is applied, the data from layer mapper are first mapped to each of CSI antenna port as shown below.

The determination of W(i) from reportQuantity of CSI-ReportConfig can be summarized as shown below.

reportQuantity

W(i) determination criterial

cri-RI-PMI-CQI or cri-RI-LI-PMI-CQI

PMI Report from UE

cri-RI-CQI

The process described in 38.214-5.2.1.4.2

cri-RI-i1-CQI

i1 Report from UE

(11) Mapping to VRB

For each antenna step, a virtual resource grid is created. Within the resource grid, fill out each of the resource elements(RE) with PDSCH data from the RE at the lowest frequency to higher frequency. Once it reaches the RE at the highest frequency of the assigned PDSCH resource block, move to the RE at the lowest frequency of next OFDM symbol.

But you should not use the REs that are assigned for following purpose :

  • REs assigned for DMRS associated with the PDSCH to be transmitted
  • REs assigned for DMRS intended for other co-scheduled UEs
  • REs for non-zero-power CSI-RS, except for non-zero-power CSI-RSs configured by the higher-layer parameter CSI-RS-Resource-Mobility in the MeasObjectNR IE.
  • REs for PTRS
  • REs declared as 'not available for PDSCH

(12) Mapping from virtual to physical resource blocks

This step is the process that maps (converts) the virtual resource block(resource grid) into physical resource block(resource grid).

Two different types of mappings are supported in 5G as described below.

  • Non-Interleaved Mapping: In non-interleaved mapping, the modulated and precoded symbols are allocated to the physical resource blocks in a continuous and sequential manner. This strategy simplifies the mapping process but may result in reduced frequency diversity since adjacent symbols are transmitted on adjacent subcarriers.
    • Advantages: Non-interleaved mapping is simple and straightforward, making it easy to implement and manage.
    • Disadvantages: Due to the continuous allocation of symbols, non-interleaved mapping may be less resilient to frequency-selective fading and interference.
  • Interleaved Mapping: In interleaved mapping, the modulated and precoded symbols are allocated to the physical resource blocks in a non-sequential and dispersed manner. This strategy increases frequency diversity by spreading the symbols across the available resources, improving resilience against frequency-selective fading and interference.
    • Advantages: Interleaved mapping provides better frequency diversity and is more robust against frequency-selective fading and interference, which can improve the overall system performance.
    • Disadvantages: The increased complexity of interleaved mapping can make it more challenging to implement and manage compared to non-interleaved mapping.

 

< Non-Interleaved >

This is illustration of Non-Interleaved mapping from VRB to PRB

< Interleaved >

This is illustration of Interleaved mapping from VRB to PRB

RRC Parameters

< PDSCH-Config relase 15 >

PDSCH-Config ::=                        SEQUENCE {
    dataScramblingIdentityPDSCH         INTEGER (0..1007)    OPTIONAL,
    dmrs-DownlinkForPDSCH-MappingTypeA      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,   
    dmrs-DownlinkForPDSCH-MappingTypeB      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,  
    tci-StatesToAddModList                  SEQUENCE (SIZE(1..maxNrofTCI-States)) 
                                                OF TCI-State    OPTIONAL,   -- Need N
    tci-StatesToReleaseList                 SEQUENCE (SIZE(1..maxNrofTCI-States)) 
                                                OF TCI-StateId  OPTIONAL,   -- Need N
    vrb-ToPRB-Interleaver                   ENUMERATED {n2, n4},
    resourceAllocation                      ENUMERATED { resourceAllocationType0,
                                                         resourceAllocationType1, 
                                                         dynamicSwitch},
    pdsch-AllocationList           SEQUENCE (SIZE(1..maxNrofDL-Allocations)) 
                                     OF PDSCH-TimeDomainResourceAllocation     OPTIONAL,
    pdsch-AggregationFactor                 ENUMERATED { n2, n4, n8 } OPTIONAL, 
    rateMatchPatternToAddModList            SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                 OF RateMatchPattern    OPTIONAL, -- Need N
    rateMatchPatternToReleaseList           SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                 OF RateMatchPatternId     OPTIONAL, -- Need N
    rateMatchPatternGroup1                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                 OF RateMatchPatternId     OPTIONAL, -- Need R
    rateMatchPatternGroup2                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                 OF RateMatchPatternId     OPTIONAL, -- Need R
    rbg-Size                                ENUMERATED {config1, config2},
    mcs-Table                               ENUMERATED {qam64, qam256},
    maxNrofCodeWordsScheduledByDCI          ENUMERATED {n1, n2} OPTIONAL,   -- Need R
    prb-BundlingType                    CHOICE {
        static                                  SEQUENCE {
            bundleSize                              ENUMERATED { n4, wideband }  OPTIONAL  
        },
        dynamic                                 SEQUENCE {
            bundleSizeSet1                          ENUMERATED { n4, 
                                                                 wideband,
                                                                 n2-wideband,
                                                                 n4-wideband
                                                                }  OPTIONAL,   -- Need S
            bundleSizeSet2                          ENUMERATED { n4, 
                                                                 wideband
                                                                } OPTIONAL    -- Need S
        }
    },
    zp-CSI-RS-ResourceToAddModList          SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) 
                                                OF ZP-CSI-RS-Resource   OPTIONAL,   -- Need N
    zp-CSI-RS-ResourceToReleaseList         SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) 
                                                OF ZP-CSI-RS-ResourceId OPTIONAL,   -- Need M
    aperiodic-ZP-CSI-RS-ResourceSetsToAddModList    SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) 
                                                OF ZP-CSI-RS-ResourceSet   OPTIONAL, -- Need N
    aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList   SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) 
                                                OF ZP-CSI-RS-ResourceSetId   OPTIONAL, -- Need N
    sp-ZP-CSI-RS-ResourceSetsToAddModList   SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) 
                                                OF ZP-CSI-RS-ResourceSet     OPTIONAL, -- Need N
    sp-ZP-CSI-RS-ResourceSetsToReleaseList  SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) 
                                                OF ZP-CSI-RS-ResourceSetId   OPTIONAL, -- Need N

    ...
}
                

dataScramblingIdentityPDSCH : Identifer used to initalite data scrambling (c_init) for both PDSCH. Corresponds to L1 parameter 'Data-scrambling-Identity'      

dmrs-DownlinkForPDSCH-MappingTypeA : DMRS configuration for PDSCH transmissions using PDSCH mapping type A (chosen dynamically via PDSCH-TimeDomainResourceAllocation)   

dmrs-DownlinkForPDSCH-MappingTypeB : DMRS configuration for PDSCH transmissions using PDSCH mapping type B (chosen dynamically via PDSCH-TimeDomainResourceAllocation)     

tci-StatesToAddModList : A list of Transmission Configuration Indicator (TCI) states for dynamically indicating (over DCI) a transmission configuration which includes QCL-relationships between the DL RSs in one RS set and the PDSCH DMRS ports      

vrb-ToPRB-Interleaver :  Interleaving unit configurable between 2 and 4 PRBs. Corresponds to L1 parameter 'VRB-to-PRB-interleaver'     

resourceAllocation :  Configuration of resource allocation type 0 and resource allocation type 1 for non-fallback DCI. Corresponds to L1 parameter 'Resouce-allocation-config'     

pdsch-AllocationList :  List of PDSCH-TimeDomainResourceAllocation. If configured, the values provided herein override the values received in corresponding PDSCH-ConfigCommon. This information elements has an array structure as sown below. For each PDSCH scheduling, Time domain resource assignment of DCI 1_0 or DCI 1_1 specify a specific row number (row index) of the following table as stated in 38.214 - 5.1.2.1.   

    When the UE is scheduled to receive PDSCH by a DCI, the Time domain resource assignment field of the DCI provides a row index of a higher layer configured table pdsch-symbolAllocation, where the indexed row defines the slot offset K0, the start and length indicator SLIV, and the PDSCH mapping type to be assumed in the PDSCH reception.

    pdsch-AllocationList

    row 0

    PDSCH-TimeDomainResourceAllocation ::=      SEQUENCE {

        k0                                  INTEGER (1..3)

        mappingType                         ENUMERATED {typeA, typeB},

        startSymbolAndLength                BIT STRING (SIZE (7))

    }

    row 1

    PDSCH-TimeDomainResourceAllocation ::=      SEQUENCE {

        k0                                  INTEGER (1..3)

        mappingType                         ENUMERATED {typeA, typeB},

        startSymbolAndLength                BIT STRING (SIZE (7))

    }

    ...

    ...

    row N

    PDSCH-TimeDomainResourceAllocation ::=      SEQUENCE {

        k0                                  INTEGER (1..3)

        mappingType                         ENUMERATED {typeA, typeB},

        startSymbolAndLength                BIT STRING (SIZE (7))

    }

 

pdsch-AggregationFactor  : Number of repetitions for data. Corresponds to L1 parameter 'aggregation-factor-DL' . When the field is absent the UE applies the value 1    

rateMatchPatternToAddModList : Resources patterns which the UE should rate match PDSCH around. The UE rate matches around the union of all resources indicated in the nexted bitmaps. Corresponds to L1 parameter 'Resource-set-BWP'       

rateMatchPatternGroup1 : The IDs of a first group of RateMatchPatterns defined in the rateMatchPatternToAddModList. Corresponds to L1 parameter 'Resource-set-group-1'   

rateMatchPatternGroup2 :  The IDs of a second group of RateMatchPatterns defined in the rateMatchPatternToAddModList Corresponds to L1 parameter 'Resource-set-group-2'     

rbg-Size : Selection between config 1 and config 2 for RBG size for PDSCH. Corresponds to L1 parameter 'RBG-size-PDSCH'      

rbg-Size : Selection between config 1 and config 2 for RBG size for PDSCH. Corresponds to L1 parameter 'RBG-size-PDSCH' for Resource Allocation Type 0.

mcs-Table : Indicates which MCS table the UE shall use for PDSCH. Corresponds to L1 parameter 'MCS-Table-PDSCH'. (64QAM, 256 QAM)

maxNrofCodeWordsScheduledByDCI :  Maximum number of code words that a single DCI may schedule. This changes the number of MCS/RV/NDI bits in the DCI message from 1 to 2.    

prb-BundlingType : Indicates the PRB bundle type and bundle size(s). If "dynamic" is chosen, the actual BundleSizeSet to use is indicated via DCI. If a bundleSize(Set) value is absent, the UE applies the value n2. Corresponds to L1 parameter 'PRB_bundling'            

zp-CSI-RS-ResourceToAddModList : A list of Zero-Power (ZP) CSI-RS resources used for PDSCH rate-matching. Corresponds to L1 parameter 'ZP-CSI-RS-ResourceConfigList'        

aperiodic-ZP-CSI-RS-ResourceSetsToAddModList : A list of sets. Each set contains a set-ID and the IDs of one or more ZP-CSI-RS-Resources (the actual resources are defined in the  zp-CSI-RS-ResourceToAddModList). The network triggers a set by indicating its set-ID (ZP-CSI-RS-ResourceSetId) in the DCI payload. The resources referenced in these sets are confgiured with resourceType 'aperiodic'. Corresponds to L1 parameter ' ZP-CSI-RS-ResourceSetConfigList'      

sp-ZP-CSI-RS-ResourceSetsToAddModList :  A list of sets. Each set contains a set-ID and the IDs of one or more ZP-CSI-RS-Resources (the actual resources are defined in the zp-CSI-RS-ResourceToAddModList). The network triggers a set by indicating its set-ID (ZP-CSI-RS-ResourceSetId) in the MAC CE. The resources referenced in these sets are confgiured with resourceType 'semi-persistent'. Corresponds to L1 parameter 'SP-ZP-CSI-RS-Resource-List'        

 

< PDSCH-Config relase 17 >

PDSCH-Config ::= SEQUENCE {
   dataScramblingIdentityPDSCH            INTEGER (0..1023) OPTIONAL, -- Need S
   dmrs-DownlinkForPDSCH-MappingTypeA     SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M
   dmrs-DownlinkForPDSCH-MappingTypeB     SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M
   tci-StatesToAddModList                 SEQUENCE (SIZE(1..maxNrofTCI-States)) 
                                                OF TCI-State OPTIONAL, -- Need N
   tci-StatesToReleaseList                SEQUENCE (SIZE(1..maxNrofTCI-States)) 
                                                OF TCI-StateId OPTIONAL, -- Need N
   vrb-ToPRB-Interleaver                  ENUMERATED {n2, n4} OPTIONAL, -- Need S
   resourceAllocation                     ENUMERATED { resourceAllocationType0,
                                                       resourceAllocationType1, dynamicSwitch},
   pdsch-TimeDomainAllocationList         SetupRelease { PDSCH-TimeDomainResourceAllocationList }
                                                       OPTIONAL, -- Need M
   pdsch-AggregationFactor                ENUMERATED { n2, n4, n8 } OPTIONAL, -- Need S
   rateMatchPatternToAddModList           SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                       OF RateMatchPattern OPTIONAL, -- Need N
   rateMatchPatternToReleaseList          SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) 
                                                       OF RateMatchPatternId OPTIONAL, -- Need N
   rateMatchPatternGroup1                 RateMatchPatternGroup OPTIONAL, -- Need R
   rateMatchPatternGroup2                 RateMatchPatternGroup OPTIONAL, -- Need R
   rbg-Size                               ENUMERATED {config1, config2},
   mcs-Table                              ENUMERATED {qam256, qam64LowSE} OPTIONAL, -- Need S
   maxNrofCodeWordsScheduledByDCI         ENUMERATED {n1, n2} OPTIONAL, -- Need R
   prb-BundlingType CHOICE {
      staticBundling SEQUENCE {
          bundleSize ENUMERATED { n4, wideband } OPTIONAL -- Need S
      },
      dynamicBundling SEQUENCE {
          bundleSizeSet1 ENUMERATED { n4, wideband, n2-wideband, n4-wideband } OPTIONAL, -- Need S
          bundleSizeSet2 ENUMERATED { n4, wideband } OPTIONAL -- Need S
      }
   },
   zp-CSI-RS-ResourceToAddModList        SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) 
                                               OF ZP-CSI-RS-Resource   OPTIONAL, -- Need N
   zp-CSI-RS-ResourceToReleaseList       SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) 
                                               OF ZP-CSI-RS-ResourceId OPTIONAL, -- Need N
   aperiodic-ZP-CSI-RS-ResourceSetsToAddModList  SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets))
                                               OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N
   aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets))
                                               OF ZP-CSI-RS-ResourceSetId OPTIONAL, -- Need N
   sp-ZP-CSI-RS-ResourceSetsToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) 
                                               OF ZP-CSI-RS-ResourceSet  OPTIONAL, -- Need N
   sp-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) 
                                               OF ZP-CSI-RS-ResourceSetId  OPTIONAL, -- Need N
   p-ZP-CSI-RS-ResourceSet                SetupRelease { ZP-CSI-RS-ResourceSet } OPTIONAL,--Need M
   ...,
   [[
   maxMIMO-Layers-r16             SetupRelease { MaxMIMO-LayersDL-r16 } OPTIONAL, -- Need M
   minimumSchedulingOffsetK0-r16  SetupRelease { MinSchedulingOffsetK0-Values-r16 } 
                                              OPTIONAL, -- Need M
   -- Start of the parameters for DCI format 1_2 introduced in V16.1.0
   antennaPortsFieldPresenceDCI-1-2-r16                     ENUMERATED {enabled} OPTIONAL, -- Need S
   aperiodicZP-CSI-RS-ResourceSetsToAddModListDCI-1-2-r16   SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-
                                                            ResourceSets)) OF ZP-CSI-RS-ResourceSet
                                                            OPTIONAL, -- Need N
   aperiodicZP-CSI-RS-ResourceSetsToReleaseListDCI-1-2-r16  SEQUENCE (SIZE (1..maxNrofZP-CSI-RS
                                                   -ResourceSets)) OF ZP-CSI-RS-ResourceSetId
   dmrs-DownlinkForPDSCH-MappingTypeA-DCI-1-2-r16   SetupRelease { DMRS-DownlinkConfig } 
                                                            OPTIONAL, -- Need M
   dmrs-DownlinkForPDSCH-MappingTypeB-DCI-1-2-r16   SetupRelease { DMRS-DownlinkConfig } 
                                                            OPTIONAL, -- Need M
   dmrs-SequenceInitializationDCI-1-2-r16           ENUMERATED {enabled} OPTIONAL, -- Need S
   harq-ProcessNumberSizeDCI-1-2-r16                INTEGER (0..4) OPTIONAL, -- Need R
   mcs-TableDCI-1-2-r16                       ENUMERATED {qam256, qam64LowSE} OPTIONAL, -- Need S
   numberOfBitsForRV-DCI-1-2-r16              INTEGER (0..2) OPTIONAL, -- Need R
   pdsch-TimeDomainAllocationListDCI-1-2-r16  SetupRelease 
                                                   { PDSCH-TimeDomainResourceAllocationList-r16 }
                                                     OPTIONAL, -- Need M
   prb-BundlingTypeDCI-1-2-r16 CHOICE {
      staticBundling-r16  SEQUENCE {
         bundleSize-r16 ENUMERATED { n4, wideband } OPTIONAL -- Need S
      },
      dynamicBundling-r16 SEQUENCE {
          bundleSizeSet1-r16 ENUMERATED { n4, wideband, n2-wideband, n4-wideband }OPTIONAL,--Need S
          bundleSizeSet2-r16 ENUMERATED { n4, wideband } OPTIONAL -- Need S
      }
   } OPTIONAL, -- Need R
   priorityIndicatorDCI-1-2-r16               ENUMERATED {enabled} OPTIONAL, -- Need S
   rateMatchPatternGroup1DCI-1-2-r16          RateMatchPatternGroup OPTIONAL, -- Need R
   rateMatchPatternGroup2DCI-1-2-r16          RateMatchPatternGroup OPTIONAL, -- Need R
   resourceAllocationType1GranularityDCI-1-2-r16     ENUMERATED {n2,n4,n8,n16} OPTIONAL, -- Need S
   vrb-ToPRB-InterleaverDCI-1-2-r16                  ENUMERATED {n2, n4} OPTIONAL, -- Need S
   referenceOfSLIVDCI-1-2-r16                        ENUMERATED {enabled} OPTIONAL, -- Need S
   resourceAllocationDCI-1-2-r16              ENUMERATED { resourceAllocationType0,
                                                      resourceAllocationType1, dynamicSwitch}
                                                      OPTIONAL, -- Need M
   -- End of the parameters for DCI format 1_2 introduced in V16.1.0
   priorityIndicatorDCI-1-1-r16               ENUMERATED {enabled} OPTIONAL, -- Need S
   dataScramblingIdentityPDSCH2-r16           INTEGER (0..1023) OPTIONAL, -- Need R
   pdsch-TimeDomainAllocationList-r16    SetupRelease { PDSCH-TimeDomainResourceAllocationList-r16}
                                              OPTIONAL, -- Need M
   repetitionSchemeConfig-r16         SetupRelease { RepetitionSchemeConfig-r16} OPTIONAL -- Need M
   ]],
   [[
   repetitionSchemeConfig-v1630     SetupRelease { RepetitionSchemeConfig-v1630} OPTIONAL -- Need M
   ]],
   [[
   pdsch-HARQ-ACK-OneShotFeedbackDCI-1-2-r17            ENUMERATED {enabled} OPTIONAL, -- Need R
   pdsch-HARQ-ACK-EnhType3DCI-1-2-r17                   ENUMERATED {enabled} OPTIONAL, -- Need R
   pdsch-HARQ-ACK-EnhType3DCI-Field-1-2-r17             ENUMERATED {enabled} OPTIONAL, -- Need R
   pdsch-HARQ-ACK-RetxDCI-1-2-r17                       ENUMERATED {enabled} OPTIONAL, -- Need R
   pucch-sSCellDynDCI-1-2-r17                           ENUMERATED {enabled} OPTIONAL, -- Need R
   dl-OrJoint-TCIStateList-r17 CHOICE {
      explicitlist SEQUENCE {
      dl-orJoint-TCI-State-ToAddModList-r17        SEQUENCE (SIZE (1..maxNrofTCI-States)) 
                                                      OF TCI-State  OPTIONAL, -- Need N
      dl-orJoint-TCI-State-ToReleaseList-r17       SEQUENCE (SIZE (1..maxNrofTCI-States)) 
                                                      OF TCI-StateId OPTIONAL -- Need N
      },
      unifiedTCI-StateRef-r17                      ServingCellAndBWP-Id-r17
   } OPTIONAL, -- Need R
   beamAppTime-r17              ENUMERATED {n1, n2, n4, n7, n14, n28, n42, n56, n70, n84, 
                                      n98, n112, n224, n336, spare2, spare1} OPTIONAL, -- Need R
   pdsch-TimeDomainAllocationListForMultiPDSCH-r17       SetupRelease { MultiPDSCH-TDRA-List-r17 }
                                                               OPTIONAL, -- Need M
   dmrs-FD-OCC-DisabledForRank1-PDSCH-r17                ENUMERATED {true} OPTIONAL, -- Need R
   minimumSchedulingOffsetK0-r17                SetupRelease { MinSchedulingOffsetK0-Values-r17 }
                                                         OPTIONAL, -- Need M
   harq-ProcessNumberSizeDCI-1-2-v1700          INTEGER (0..5) OPTIONAL, -- Need R
   harq-ProcessNumberSizeDCI-1-1-r17            INTEGER (5) OPTIONAL, -- Need R
   mcs-Table-r17                                ENUMERATED {qam1024} OPTIONAL, -- Need R
   mcs-TableDCI-1-2-r17                         ENUMERATED {qam1024} OPTIONAL, -- Need R
   xOverheadMulticast-r17                       ENUMERATED {xOh6, xOh12, xOh18} OPTIONAL,--Need S
   priorityIndicatorDCI-4-2-r17                 ENUMERATED {enabled} OPTIONAL, -- Need S
   sizeDCI-4-2-r17                              INTEGER (20..maxDCI-4-2-Size-r17) OPTIONAL--Need R
   ]]
}

PDSCH-TimeDomainResourceAllocation-r16 ::= SEQUENCE {
   k0-r16                            INTEGER(0..32) OPTIONAL, -- Need S
   mappingType-r16                   ENUMERATED {typeA, typeB},
   startSymbolAndLength-r16          INTEGER (0..127),
   repetitionNumber-r16              ENUMERATED {n2, n3, n4, n5, n6, n7, n8, n16} 
                                                              OPTIONAL,--Cond Formats1-0and1-1
   ...,
   [[
   k0-v1710 INTEGER(33..128)     OPTIONAL -- Need S
   ]]
}

RateMatchPatternGroup ::=     SEQUENCE (SIZE (1..maxNrofRateMatchPatternsPerGroup)) OF CHOICE {
   cellLevel                   RateMatchPatternId,
   bwpLevel                    RateMatchPatternId
}

MinSchedulingOffsetK0-Values-r16 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16)) 
                                         OF INTEGER (0..maxK0-SchedulingOffset-r16)
MinSchedulingOffsetK0-Values-r17 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16)) 
                                         OF INTEGER (0..maxK0-SchedulingOffset-r17)
MaxMIMO-LayersDL-r16 ::= INTEGER (1..8)


RepetitionSchemeConfig-r16 ::= CHOICE {
   fdm-TDM-r16                 SetupRelease { FDM-TDM-r16 },
   slotBased-r16               SetupRelease { SlotBased-r16 }
}

RepetitionSchemeConfig-v1630 ::= SEQUENCE {
   slotBased-v1630             SetupRelease { SlotBased-v1630 }
}

FDM-TDM-r16 ::= SEQUENCE {
   repetitionScheme-r16        ENUMERATED {fdmSchemeA, fdmSchemeB,tdmSchemeA },
   startingSymbolOffsetK-r16   INTEGER (0..7) OPTIONAL -- Need R
}

SlotBased-r16 ::= SEQUENCE {
   tciMapping-r16              ENUMERATED {cyclicMapping, sequentialMapping},
   sequenceOffsetForRV-r16     INTEGER (1..3)
}

SlotBased-v1630 ::= SEQUENCE {
   tciMapping-r16              ENUMERATED {cyclicMapping, sequentialMapping},
   sequenceOffsetForRV-r16     INTEGER (0)
}

PDSCH-ConfigCommon ::=       SEQUENCE {

    pdsch-AllocationList        SEQUENCE (SIZE(1..maxNrofDL-Allocations)) 
                                       OF PDSCH-TimeDomainResourceAllocation   OPTIONAL,-- Need R

    ...
}

Reference