5G/NR - PUSCH Transmission Mode

PUSCH Tansmission Mode/Transmission Scheme

There are roughly three different types of UL transmission scheme : not-configured, codebook based and non-codebook based. This scheme is determined by a RRC paramter txConfig.

# Parameters for Transmission Mode Determination

Followings are the major factors (configuration) to determine the PUSCH Transmission Mode and Precoding Matrix. Depending on the combinations (permutations) of these parameters, a specific transmission mode/precoding matrix is determined, but the detailed procedure is pretty complicated (confusing to me). Basically most of this page is all about how a specific transmission mode/precoding matrix is determined by combination of these three parameters.

Good thing would be that the precoding matrix is always 1 or Identity Matrix when the number of layer is 1. I think (hope) the number of UL layer would ramain as 1 for a long time -:).

# Determination of W matrix

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

NOTE : This is a little bit confusing to me. 38.211-6.3.1.5 says "For non-codebook-based transmission, the precoding matrix , equals the identity matrix.". This sounds like 'No precoding' to me. But this reference (5G NR Physical Layer | Chapter 12| Uplink Transmission Schemes | Codebook & Non-Codebook Based) says 'Even in non-codebook based transmission, precoding DO happens, but the precoding matrix is created by UE algorithm based on CSI-RS based channel estimation, not picking up a matrix from a predefined list of codebook'. To me, the YouTube reference make more sense, but not sure exactly what 3GPP implies.

# 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

W = 1

# NonCodebook based Transmission

Non-codebook based UL transmission in mobile communication refers to a method where the UE determines its transmission strategy without relying on a predefined codebook. The precoder is determined directly from measurements by the UE rather than from an indicated codebook/TPMI index. 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_0_0DCI 0_1 and semistatically ( srs-ResourceIndicator in RRC if configured)

• the UE determines the precoder(s) and rank based on one or two SRI fields in the DCI.
• These point to one or two SRS resources Sets configured by higher layers.
• Only one SRS port per SRS resource can be configured.

ii) figure out wideband SRI based on step i)

iii) figure out transmission rank and PUSCH Precoder

• The UE can calculate the SRS precoder based on measurements of an associated NZP CSI-RS resource:
• For aperiodic SRS, the NZP CSI-RS is indicated in the SRS request field of the DCI. The association between SRS Resource Sets and NZP CSI-RS resources is configured by higher layers.
• For periodic/semi-persistent SRS, the associated NZP CSI-RS resource is configured by higher layers.
• The UE calculates the precoder for SRS transmission based on the measurement of an associated NZP CSI-RS resource.
• Different configurations (aperiodic, periodic, semi-persistent) dictate how the NZP-CSI-RS resources and SRS resource sets are associated and triggered
• The UE maps the SRI(s) to DM-RS ports in increasing order and transmits the PUSCH using the same antenna ports as the indicated SRS resources. The UE maps SRIs to DM-RS ports and corresponding PUSCH layers, transmitting PUSCH using the same antenna ports as the SRS ports indicated by SRIs.

# Codebook based Transmission

Codebook-based UL transmission in mobile communications involves a method where the UE determines its transmission strategy using a predefined set of precoding vectors, known as a codebook. Codebook based UL transmission relies on an indicated SRS resource to determine the codebook, and TPMI values to indicate which precoder to use from that codebook for the transmission. The number of layers is also indicated. In this mode, the precoding matrix is determined as follows (based on 38.214-6.1.1.1).

i) figure out "SRS Resource Indicator(SRI)" and "Precoding information(TMPI) and number of layers" in DCI 0_1

ii) figure out following settings

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 (Further details are as follows)

• Codebook Subsets:
• The UE determines its codebook subsets based on TPMIs and the reception of the higher layer parameter codebookSubset in pusch-Config.
• Transmission Rank and Power Transmission:
• The maximum transmission rank may be set by the higher layer parameter maxRank in pusch-Config.
• Different configurations and UE capabilities influence whether the transmission is fullyAndPartialAndNonCoherent, partialAndNonCoherent, or nonCoherent.
• Antenna Port Usage:
• The UE transmits PUSCH using the same antenna ports as the SRS ports indicated in the DCI format or configuredGrantConfig as per 38.214-6.1.2.3.
• DM-RS Antenna Ports:
• The DM-RS antenna ports are determined according to the ordering of DM-RS ports in 38.212.

NOTE : When the UE is configured with the higher layer parameter txConfig set to 'codebook', the UE is configured with at least one SRS resource

# Codebook vs Non-Codebook based Transmission

Following is a comparative table between Codebook vs Non-Codebook based UL Transmission

Parameter

Codebook Based

Non-Codebook Based

Precoder Determination

Based on SRS-ResourceSet configuration which determines codebook, and indicated TPMI index choosing precoder from codebook

Based on measurements of indicated SRS/CSI-RS resources

Scheduling Options

DCI formats 0_0, 0_1, 0_2 or semi-static configuration

DCI formats 0_0, 0_1, 0_2 or semi-static configuration

Rank Determination

Indicated in number of layers field in DCI

Determined from measurements by UE

Number of Configured SRS Resources

Up to 2 (4 in fullpowerMode2)

Up to 4

DCI Contents

SRS Resource Indicator (SRI) and Precoding and Number of Layers (TPMI + rank)

SRS Resource Indicator (SRI) only

UE Processing

Applies configured codebook subset; uses TPMI to select precoder

Calculates precoder from measurements

Transmission Ports

Same ports as indicated SRS resource

Same ports as indicated SRS resource

Codebook Configuration

Codebook subset configuration based on UE capabilities

No codebook configuration

CSI-RS Association

Periodic/semi-persistent SRS associated with configured NZP CSI-RS

Aperiodic SRS associated with triggered NZP CSI-RS, periodic/semi-persistent SRS associated with configured NZP CSI-RS

# UE capability report vs applicable codebookSubset

Depending on UE capability, there are restrictions on the type of applicable codebookSubset as specified in 38.214-6.1.1.1.

•   When UE capability report 'partialAndNonCoherent',  'fullyAndPartialAndNonCoherent' cannot be used. '
•   When UE capability report 'NonCoherent', fullyAndPartialAndNonCoherent' or with 'partialAndNonCoherent' cannot be used

# Number of  configurable SRS

The number of SRS that can be configured is described as follows in 38.214-6.1.1.1 and 6.1.1.2

For codebook based (38.214-6.1.1.1)

•   A UE shall not expect to be configured with the higher layer parameter codebookSubset set to 'partialAndNonCoherent' when higher layer parameter nrofSRS-Ports in an SRS-ResourceSet with usage set to 'codebook' indicates thattwo SRS antenna ports are configured.
•   For codebook based transmission, the UE may be configured with a single SRS-ResourceSet set to 'codebook' and only one SRS resource can be indicated based on the SRI from within the SRS resource set.The maximum number of configured SRS resources for codebook based transmission is 2 . If aperiodic SRS is configured for a UE, the SRS request field in DCI triggers the transmission of aperiodidc SRS resources.
• When multiple SRS resources are configured by SRS-ResourceSet with usage set to 'codebook', the UE shall expect that higher layer parameters nrofSRS-Ports in SRS-Resource in SRS-ResourceSet shall be configured with the same value for all these SRS resources.

For non-codebook based (38.214-6.1.1.2)

•   The UE shall use one or multiple SRS resources for SRS transmission, where the number of SRS resources which can be configured to the UE for simultaneously transmission in the same RBs is a UE capability. Only one SRS port for each SRS resource is configured. Only one SRS resource set can be configured with higher layer parameter usage in SRS-ResourceSet set to 'nonCodebook'.The maximum number of SRS resources that can be configured for non-codebook based uplink transmission is 4

# txConfig and DCI type

According to 38.214-6.1.1, there is some relationship between applicable DCI 0_x type and txConfig as summarized below.

•   When txConfig is not configured, only DCI 0_0 can be used (6.1.1).
•   When txConfig is configured, DCI format 0_0, DCI format 0_1 or semi-static configuration can be used (6.1.1.1,6.1.1.2)
•   If DCI 0_0 is used, PUSCH transmission is based on single antenna port(6.1.1)
•   In FR2, DCI 0_0 cannot be used in a component carrier without configured PUCCH resource with PUCCH-SpatialRelationInfo(6.1.1)

# RRC Parameters

38.331 15.3 (2018-10)

PUSCH-Config ::= SEQUENCE {

dataScramblingIdentityPUSCH                 INTEGER (0..1023) OPTIONAL,

txConfig                                    ENUMERATED {codebook, nonCodebook}

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

OF SRS-ResourceSet OPTIONAL, -- Need N

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

OF SRS-ResourceId OPTIONAL, -- Need N

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,

}

}

}

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},

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),

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),

...

},

...

}

dmrs-Type ENUMERATED {type2} OPTIONAL, -- Need S

dmrs-AdditionalPosition ENUMERATED {pos0, pos1, pos3} OPTIONAL, -- Need S

phaseTrackingRS SetupRelease { PTRS-UplinkConfig } OPTIONAL, -- Need M

maxLength ENUMERATED {len2} OPTIONAL, -- Need S

transformPrecodingDisabled SEQUENCE {

scramblingID0 INTEGER (0..65535) OPTIONAL, -- Need S

scramblingID1 INTEGER (0..65535) OPTIONAL, -- Need S

...,

[[

dmrs-Uplink-r16 ENUMERATED {enabled} OPTIONAL -- Need R

]]

} OPTIONAL, -- Need R

transformPrecodingEnabled SEQUENCE {

nPUSCH-Identity INTEGER(0..1007) OPTIONAL, -- Need S

sequenceGroupHopping ENUMERATED {disabled} OPTIONAL, -- Need S

sequenceHopping ENUMERATED {enabled} OPTIONAL, -- Need S

...,

[[

]]

} OPTIONAL, -- Need R

...

}

pi2BPSK-ScramblingID0 INTEGER(0..65535) OPTIONAL, -- Need S

pi2BPSK-ScramblingID1 INTEGER(0..65535) OPTIONAL -- Need S

}

transformPrecoderDisabled SEQUENCE {

frequencyDensity SEQUENCE (SIZE (2)) OF INTEGER (1..276) OPTIONAL, -- Need S

timeDensity SEQUENCE (SIZE (3)) OF INTEGER (0..29) OPTIONAL, -- Need S

maxNrofPorts ENUMERATED {n1, n2},

resourceElementOffset ENUMERATED {offset01, offset10, offset11 } OPTIONAL, -- Need S

ptrs-Power ENUMERATED {p00, p01, p10, p11}

} OPTIONAL, -- Need R

transformPrecoderEnabled SEQUENCE {

sampleDensity SEQUENCE (SIZE (5)) OF INTEGER (1..276),

timeDensityTransformPrecoding ENUMERATED {d2} OPTIONAL -- Need S

} OPTIONAL, -- Need R

...

}

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