5G/NR - PUSCH Transmission Mode                                           Home : www.sharetechnote.com

 

 

 

 

PUSCH Tansmission Mode

 

Basically PUSCH transmission mode is a parameter that determines Precoding matrix during the PUSCH channel processing(See here for the Precoding step in the whole PUSCH transport process) and the transmission mode is determined by several factors in RRC as shown below. Simply put, this is all about determining W matrix in following equation.

 

 

According to 38.211 - 6.3.1.5, we can determine W matrix as follows.

 

Case 1 : txConfig in RRC = Non-codebook

    W = Identity Matrix

 

Case 2 : txConfig in RRC = codebook

    When number of layer = 1, number of antenna port = 1

      W = 1

     

    When number of layer >= 2 and number of antenna port >=2 (See Codebook based transmission for details)

     

The Precoding matrix is determined by the number of layers and physical antenna, and Transform Precoding as summarized below.

 

Number of Layers

Number of Antenna

Transform Precoding

Precoding Matrix

1

2

 

Table 6.3.1.5-1

1

4

enabled

Table 6.3.1.5-2

1

4

disabled

Table 6.3.1.5-3

2

2

disabled

Table 6.3.1.5-4

2

4

disabled

Table 6.3.1.5-5

3

4

disabled

Table 6.3.1.5-6

4

4

disabled

Table 6.3.1.5-7

 

 

 

Case 3 : txConfig in RRC : Not configured

    W = 1

 

 

 

NonCodebook based Transmission  

 

In this mode, UE calculate Precoder matrix as follows (based on 38.214-6.1.1.2)

    i) figure out "SRS Resource Indicator" in DCI and srs-ResourceIndicator in RRC if configured

    ii) figure out wideband SRI based on step i)

    iii) figure out transmission rank and PUSCH Precoder

 

 

 

Codebook based Transmission

 

In this mode, the precoding matrix is determined as follows (based on 38.214-6.1.1.1).

    i) figure out "SRS resource indicator" and "Precoding information and number of layers" in DCI 0_1  

    ii) figure out following settings

      • Codebook Subset(PUSCH-Config.codebookSubset)
      • Number of Antenna Ports
      • PUSCH Transform Precoding(PUSCH-Config.transformPrecoder)
      • PUSCH Max Rank (PUSCH-Config.maxRank)
      • DMRS Config Type (DMRS-UplinkConfig.dmrs-Type)
      • UL PTRS Configuration (PUSCH-Config.DMRS-UplinkConfig.PTRS-UplinkConfig)

    iii) Select a specific TPMI table using all the information from step i) and ii), and the mapping tables summarized as below.

    iv) Figure out TPMI from the selected table 

 

 

 

RRC Parameters

 

 

38.331 15.3 (2018-10)

 

PUSCH-Config ::= SEQUENCE {

    dataScramblingIdentityPUSCH                 INTEGER (0..1023) OPTIONAL,

    txConfig                                    ENUMERATED {codebook, nonCodebook}

    dmrs-UplinkForPUSCH-MappingTypeA            SetupRelease { DMRS-UplinkConfig }

    dmrs-UplinkForPUSCH-MappingTypeB            SetupRelease { DMRS-UplinkConfig }

    pusch-PowerControl                          PUSCH-PowerControl

    frequencyHopping                            ENUMERATED {intraSlot, interSlot}

    frequencyHoppingOffsetLists                 SEQUENCE (SIZE (1..4)) OF

                                                     INTEGER (1.. maxNrofPhysicalResourceBlocks-1)

    resourceAllocation                          ENUMERATED { resourceAllocationType0,

                                                             resourceAllocationType1,

                                                             dynamicSwitch},

    pusch-TimeDomainAllocationList              SetupRelease {

                                                         PUSCH-TimeDomainResourceAllocationList

                                                }

    pusch-AggregationFactor                     ENUMERATED { n2, n4, n8 }

    mcs-Table                                   ENUMERATED {qam256, qam64LowSE}

    mcs-TableTransformPrecoder                  ENUMERATED {qam256, qam64LowSE}

    transformPrecoder                         ENUMERATED {enabled, disabled}

    codebookSubset                              ENUMERATED {fullyAndPartialAndNonCoherent,

                                                            partialAndNonCoherent,

                                                            nonCoherent}

    maxRank                                     INTEGER (1..4)

    rbg-Size                                    ENUMERATED { config2}

    uci-OnPUSCH                                 SetupRelease { UCI-OnPUSCH }

    tp-pi2BPSK                                  ENUMERATED {enabled}

    ...

}

 

UCI-OnPUSCH ::= SEQUENCE {

    betaOffsets CHOICE {

        dynamic                                 SEQUENCE (SIZE (4)) OF BetaOffsets,

        semiStatic                              BetaOffsets

    } OPTIONAL, -- Need M

    scaling                                     ENUMERATED { f0p5, f0p65, f0p8, f1 }

}

 

 

SRS-Config ::= SEQUENCE {

   srs-ResourceSetToReleaseList        SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets))

                                          OF SRS-ResourceSetId OPTIONAL, -- Need N

   srs-ResourceSetToAddModList         SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets))

                                          OF SRS-ResourceSet OPTIONAL, -- Need N

   srs-ResourceToReleaseList           SEQUENCE (SIZE(1..maxNrofSRS-Resources))

                                          OF SRS-ResourceId OPTIONAL, -- Need N

   srs-ResourceToAddModList            SEQUENCE (SIZE(1..maxNrofSRS-Resources))

                                          OF SRS-Resource OPTIONAL, -- Need N

   tpc-Accumulation                    ENUMERATED {disabled} OPTIONAL, -- Need S

   ...

}

 

 

SRS-ResourceSet ::= SEQUENCE {

   srs-ResourceSetId          SRS-ResourceSetId,

   srs-ResourceIdList         SEQUENCE (SIZE(1..maxNrofSRS-ResourcesPerSet))

                                  OF SRS-ResourceId OPTIONAL, -- Cond Setup

   resourceType CHOICE {

      aperiodic SEQUENCE {

         aperiodicSRS-ResourceTrigger        INTEGER (1..maxNrofSRS-TriggerStates-1),

         csi-RS                              NZP-CSI-RS-ResourceId OPTIONAL, -- Cond NonCodebook

         slotOffset                          INTEGER (1..32) OPTIONAL, -- Need S

         ...,

         [[

         aperiodicSRS-ResourceTriggerList-v1530     SEQUENCE (SIZE(1..maxNrofSRS-TriggerStates-2))

                                                       OF INTEGER (1..maxNrofSRS-TriggerStates-1)

         ]]

      },

      semi-persistent SEQUENCE {

         associatedCSI-RS                    NZP-CSI-RS-ResourceId OPTIONAL, -- Cond NonCodebook

         ...

      },

      periodic SEQUENCE {

         associatedCSI-RS                    NZP-CSI-RS-ResourceId OPTIONAL, -- Cond NonCodebook

         ...

      }

   },

   usage                   ENUMERATED {beamManagement, codebook, nonCodebook, antennaSwitching},

   alpha                   Alpha OPTIONAL, -- Need S

   p0                      INTEGER (-202..24) OPTIONAL, -- Cond Setup

   pathlossReferenceRS CHOICE {

      ssb-Index            SSB-Index,

      csi-RS-Index         NZP-CSI-RS-ResourceId

   } OPTIONAL, -- Need M

   srs-PowerControlAdjustmentStates        ENUMERATED { sameAsFci2, separateClosedLoop} OPTIONAL,

   ...

}

 

 

SRS-ResourceSetId ::= INTEGER (0..maxNrofSRS-ResourceSets-1)

 

SRS-Resource ::= SEQUENCE {

   srs-ResourceId               SRS-ResourceId,

   nrofSRS-Ports                ENUMERATED {port1, ports2, ports4},

   ptrs-PortIndex               ENUMERATED {n0, n1 } OPTIONAL, -- Need R

   transmissionComb    CHOICE {

      n2 SEQUENCE {

         combOffset-n2          INTEGER (0..1),

         cyclicShift-n2         INTEGER (0..7)

      },

      n4 SEQUENCE {

         combOffset-n4          INTEGER (0..3),

         cyclicShift-n4         INTEGER (0..11)

      }

   },

   resourceMapping     SEQUENCE {

      startPosition             INTEGER (0..5),

      nrofSymbols               ENUMERATED {n1, n2, n4},

      repetitionFactor          ENUMERATED {n1, n2, n4}

   },

   freqDomainPosition           INTEGER (0..67),

   freqDomainShift              INTEGER (0..268),

      c-SRS                     INTEGER (0..63),

      b-SRS                     INTEGER (0..3),

      b-hop                     INTEGER (0..3)

   },

   groupOrSequenceHopping       ENUMERATED { neither, groupHopping, sequenceHopping },

   resourceType CHOICE {

      aperiodic SEQUENCE {

         ...

      },

      semi-persistent SEQUENCE {

         periodicityAndOffset-sp         SRS-PeriodicityAndOffset,

         ...

      },

      periodic SEQUENCE {

         periodicityAndOffset-p          SRS-PeriodicityAndOffset,

         ...

      }

   },

   sequenceId INTEGER (0..1023),

   spatialRelationInfo                   SRS-SpatialRelationInfo OPTIONAL, -- Need R

   ...

}

 

SRS-SpatialRelationInfo ::= SEQUENCE {

   servingCellId                   ServCellIndex OPTIONAL, -- Need S

   referenceSignal CHOICE {

      ssb-Index                    SSB-Index,

      csi-RS-Index                 NZP-CSI-RS-ResourceId,

      srs SEQUENCE {

         resourceId                SRS-ResourceId,

         uplinkBWP                 BWP-Id

      }

   }

}

 

SRS-ResourceId ::= INTEGER (0..maxNrofSRS-Resources-1)

 

SRS-PeriodicityAndOffset ::= CHOICE {

   sl1 NULL,

   sl2 INTEGER(0..1),

   sl4 INTEGER(0..3),

   sl5 INTEGER(0..4),

   sl8 INTEGER(0..7),

   sl10 INTEGER(0..9),

   sl16 INTEGER(0..15),

   sl20 INTEGER(0..19),

   sl32 INTEGER(0..31),

   sl40 INTEGER(0..39),

   sl64 INTEGER(0..63),

   sl80 INTEGER(0..79),

   sl160 INTEGER(0..159),

   sl320 INTEGER(0..319),

   sl640 INTEGER(0..639),

   sl1280 INTEGER(0..1279),

   sl2560 INTEGER(0..2559)

}

 

 

ConfiguredGrantConfig ::= SEQUENCE {

    frequencyHopping                 ENUMERATED {intraSlot, interSlot},

    cg-DMRS-Configuration            DMRS-UplinkConfig,

    mcs-Table                        ENUMERATED {qam256, qam64LowSE},

    mcs-TableTransformPrecoder       ENUMERATED {qam256, qam64LowSE},

    uci-OnPUSCH                      SetupRelease { CG-UCI-OnPUSCH },

    resourceAllocation               ENUMERATED { resourceAllocationType0,

                                                  resourceAllocationType1,

                                                  dynamicSwitch },

    rbg-Size                         ENUMERATED {config2},

    powerControlLoopToUse            ENUMERATED {n0, n1},

    p0-PUSCH-Alpha                   P0-PUSCH-AlphaSetId,

    transformPrecoder                ENUMERATED {enabled, disabled},

    nrofHARQ-Processes               INTEGER(1..16),

    repK                             ENUMERATED {n1, n2, n4, n8},

    repK-RV                          ENUMERATED {s1-0231, s2-0303, s3-0000},

    periodicity                      ENUMERATED {

                                            sym2, sym7, sym1x14, sym2x14, sym4x14, sym5x14,

                                            sym8x14, sym10x14, sym16x14, sym20x14,sym32x14,

                                            sym40x14, sym64x14, sym80x14, sym128x14, sym160x14,

                                            sym256x14, sym320x14, sym512x14,sym640x14, sym1024x14,

                                            sym1280x14, sym2560x14, sym5120x14, sym6, sym1x12,

                                            sym2x12, sym4x12, sym5x12,sym8x12,sym10x12,sym16x12,

                                            sym20x12, sym32x12,sym40x12, sym64x12, sym80x12,

                                            sym128x12, sym160x12, sym256x12, sym320x12, sym512x12,

                                            sym640x12,sym1280x12, sym2560x12

                                     },

    configuredGrantTimer             INTEGER (1..64),

    rrc-ConfiguredUplinkGrant        SEQUENCE {

        timeDomainOffset                 INTEGER (0..5119),

        timeDomainAllocation             INTEGER (0..15),

        frequencyDomainAllocation        BIT STRING (SIZE(18)),

        antennaPort                      INTEGER (0..31),

        dmrs-SeqInitialization           INTEGER (0..1),

        precodingAndNumberOfLayers       INTEGER (0..63),

        srs-ResourceIndicator            INTEGER (0..15),

        mcsAndTBS                        INTEGER (0..31),

        frequencyHoppingOffset           INTEGER (1.. maxNrofPhysicalResourceBlocks-1),

        pathlossReferenceIndex           INTEGER (0..maxNrofPUSCH-PathlossReferenceRSs-1),

        ...

    },

...

}

 

 

 

Tables

 

< 38.211 v15.5 - Table 6.3.1.5-1: Precoding matrix W for single-layer transmission using two antenna ports. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-2: Precoding matrix W for single-layer transmission using four antenna ports with transform precoding enabled. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-3: Precoding matrix W for single-layer transmission using four antenna ports with transform precoding disabled. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-4: Precoding matrix W for two-layer transmission using two antenna ports with transform precoding disabled. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-5: Precoding matrix W for two-layer transmission using four antenna ports with transform precoding disabled. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-6: Precoding matrix W for three-layer transmission using four antenna ports with transform precoding disabled. >

 

 

< 38.211 v15.5 - Table 6.3.1.5-7: Precoding matrix W for four-layer transmission using four antenna ports with transform precoding disabled. >

 

 

 

Reference

 

[1]