5G/NR - PUSCH DMRS  

 

 

 

PUSCH DMRS(DeModulation Reference Signal)

PUSCH DMRS is a special type of physical layer signal which functions as a reference signal for decoding PUSCH. Most of the fundamental paramters of PUSCH DMRS are same as in PDSCH DMRS. I would not explain much of those parameters on this note and strongly suggest you to go through PDSCH DMRS first if you are new to PDSCH/PUSCH DMRS. If frequency hoping is disabled and transform precoding is not enabled, PUSCH DMRS and PDSCH DMRS is almost same. The difference arises when frequency hoping is enabled or transform precoding is enabled.

Another important difference between PDSCH DMRS and PUSCH DMRS arises from the precoding. In PDSCH, there is no Precoding step in channel processing, but there is Precoding stage in PUSCH channel coding process. PUSCH DMRS undergoes this procoding procedure like PUSCH user data.

In this note, I am just trying to collect all the informations about PUSCH DMRS without much of the descriptions assuming that you are familiar to PDSCH DMRS and know how to interprete those parameters and tables in this note by yourselves.

Basic questions.

DMRS configuration sometimes is pretty confusing unless you have some type of big picture. If you frequently refresh yourself with the following questions, it will be helpful when you read further details in this page.

What is the difference between Mapping Type A and  B in terms of resource allocation ?

Type A can start only at symbol 2 or 3 within a slot, meaning that SLIV that start from symbol 4 or higher cannot use this type of DMRS.

Type B starts always at the first symbols of scheduled SLIV.

What is the difference between configuration type 1 and 2 in terms of resource allocation ?

In Configuration type 1, the minimum resource element group in frequency domain is one RE. In Configuration type 2, the minimum resource element group in frequency domain is two consecutive REs. See the pictures in Resource Element Mapping.

What is the effect of port number on DMRS resource element position ?

As antenna port number changes, the location of DMRS position in frequency domain changes.  Check out this note for the details.

How many DMRS symbol can be put into a slot ?

Minimum number is 1, but it can be more than 1 depending on dmrs-AdditionalPosition in RRC. Max number is 4. See 38.211 - Table 7.4.1.1.2-3 and 38.211 - Table 7.4.1.1.2-4 for the details.

Parameters

38.211-7.4.1.1

Higher Layer Parameter

Value

Comment

UL-DMRS-Scrambling-ID

{0,1}

Sequence Generation

DMRS-Scrambling-ID

{0,1,..,65535}

Sequence Generation

Configuration Type

UL-DMRS-config-type

dmrs-Type

type1, type2

RE Mapping

UL-DMRS-typeA-pos

dmrs-TypeA-Position

pos2, pos3

RE Mapping

 

UL-DMRS-add-pos

dmrs-AdditionalPosition

pos0, pos1, pos2, pos3

RE Mapping

 

UL-DMRS-max-len

 

RE Mapping

single or double symbol

 

 

RE Mapping

 

 

MIB ::= SEQUENCE {

    ...

    dmrs-TypeA-Position                 ENUMERATED {pos2, pos3},

    ...

}

 

PUSCH-TimeDomainResourceAllocation ::=      SEQUENCE {

    k2                                  INTEGER (0..32)

    mappingType                         ENUMERATED {typeA, typeB},

    startSymbolAndLength                INTEGER (0..127)

}

 

PUSCH-TimeDomainResourceAllocation-r16 ::= SEQUENCE {

   k2-r16                                  INTEGER(0..32) OPTIONAL, -- Need S

   puschAllocationList-r16            SEQUENCE (SIZE(1..maxNrofMultiplePUSCHs-r16)) OF PUSCH-Allocation-r16,

...

}

 

PUSCH-Allocation-r16 ::= SEQUENCE {

   mappingType-r16                   ENUMERATED {typeA, typeB} OPTIONAL, -- Cond NotFormat01-02-Or-TypeA

   startSymbolAndLength-r16       INTEGER (0..127) OPTIONAL, -- Cond NotFormat01-02-Or-TypeA

   startSymbol-r16                     INTEGER (0..13) OPTIONAL, -- Cond RepTypeB

   length-r16                             INTEGER (1..14)  OPTIONAL, -- Cond RepTypeB

   numberOfRepetitions-r16          ENUMERATED {n1, n2, n3, n4, n7, n8, n12, n16} OPTIONAL, -- Cond Format01-02

...

}

 

k0 : Corresponds to L1 parameter 'K0'. When the field is absent the UE applies the value 0

mappingType : PUSCH mapping type. Corresponds to L1 parameter 'Mapping-type' (See SLIV page)

startSymbolAndLength : An index into a table/equation in RAN1 specs capturing valid combinations of start symbol and length (jointly encoded). Corresponds to L1 parameter 'Index-start-len' (See SLIV page)

 

PUSCH-Config ::=                        SEQUENCE {

    ...

    dmrs-UplinkForPUSCH-MappingTypeA     SetupRelease { DMRS-UplinkConfig }

    dmrs-UplinkForPUSCH-MappingTypeB     SetupRelease { DMRS-UplinkConfig }

    ...

}

 

DMRS-UplinkConfig ::= SEQUENCE {

   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

      ...,

      [[

      dmrs-UplinkTransformPrecoding-r16        SetupRelease {DMRS-UplinkTransformPrecoding-r16}

                                                                                                                    OPTIONAL -- Need M

      ]]

      } OPTIONAL, -- Need R

      ...

}

 

DMRS-UplinkTransformPrecoding-r16 ::= SEQUENCE {

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

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

}

 

PTRS-UplinkConfig ::= SEQUENCE {

   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

   ...

}

dmrs-Type : Selection of the DMRS type to be used for DL. If the field is absent, the UE uses DMRS type 1.

dmrs-AdditionalPosition : Position for additional DM-RS in DL. The four values represent the cases of 1+0, 1+1, 1+1+1. 1+1+1+1 non-adjacent OFDM symbols for DL. If the field is absent, the UE applies the value pos2.

dmrs-group1 : DM-RS groups that are QCL:ed, i.e. group 1

dmrs-group2 : DM-RS groups that are QCL:ed, i.e. group 2  

maxLength : The maximum number of OFDM symbols for DL front loaded DMRS. 'len1' corresponds to value 1. 'len2 corresponds to value 2. If the field is absent, the UE applies value len1. Corresponds to L1 parameter 'DL-DMRS-max-len'

scramblingID0 : DL DMRS scrambling initalization. Corresponds to L1 parameter 'n_SCID 0'. When the field is absent the UE applies the value Physical cell ID (physCellId) configured for this serving cell

scramblingID1 : DL DMRS scrambling initalization. Corresponds to L1 parameter 'n_SCID 0'. When the field is absent the UE applies the value Physical cell ID (physCellId) configured for this serving cell  

phaseTrackingRS : Configures downlink PTRS. If absent or released, the UE assumes that downlink PTRS are not present  

It would be almost impossible for you to get the practical meaning of these parameters just by looking into the specification unless you are the person who designed this algorithm or create your own program to implement this specification and plot it in graphics. I am not the person who desgined the algorithm and I don't have my own program to implement it. So it was so difficult for me to get any intuitive understandings on these parameters and algorithm. Fortunately, I got a chance to try with Matlab 5G library. Followings are the examples in graphics that I created using Matlab 5G library. I posted Matlab code and more examples here. The subcarrier spacing used in this example is 30 Khz and for the simplicity I assigned only one RB for the PUSCH.

Sequence Generation

 

< Transform Precoding Not Enabled >

 

Resource Element Mapping

Resource Mapping of PUSCH DMRS is done as following equation. For simplicity, let's think of the location of resource element only (i.e, let's think only of k and l). k represents frequency domain location and l represents time domain location.

With this in mind, the first thing you can notice would be

  • Configuration type changes the location pattern in frequency domain
    • Configurataion Type 1 :  3 pairs(6 Resource Elements:RE) of DMRS are dispersed in one OFDM symbol/one RB at the interval of 4 REs (4n). The two RE in each pare are apart at the interval of 2 RE(2k'). In short, 6 REs of DMRS symbols are dispersed at every other REs in frequency domain. This supports 8 DMRS ports in case of double-symbol DMRS(port 0~7) and 4 DMRS ports in case of single symbol DMRS(port 1000~1003). See Table 6.4.1.1.3-1 and Table 6.4.1.1.3-2 for further details.
    • Configuration Type 2 : 2 pairs(4 Resource Elements:RE) of DMRS are dispersed in one OFDM symbol/one RB at the interval of 6 REs (6n). The two RE in each pare are apart at the interval of  1 RE(k'), meaning that the two REs in each pair are contiguous. This supports 12 DMRS ports in case of double-symbol DMRS(port 0~7) and 8 DMRS ports in case of single symbol DMRS(port 0~11). See Table 6.4.1.1.3-1 and Table 6.4.1.1.3-2 for further details for further details.
  • PUSCH mapping type changes the location pattern in time domain
    • PUSCH Mapping Type A : In this type, the DMRS symbol can start only at symbol 2 or 3 regardless of PUSCH start and length. It implies this cannot be used when PUSCH start symbol is greater than 3. This is related to the row 'Type A' in PUSCH SLIV table. This type is used for slot based scheduling.
    • PUSCH Mapping Type B : In this type, the DMRS symbol can start at the first PUSCH symbol regardless of PUSCH start. This is related to the row 'Type B'  in PUSCH SLIV table. This type is used for mini-slot based scheduling

Another points you would notice would be

  • frequency domain location(k) is determined by equation(formula) as shown below
  • time domain location(l) is determined by a predefined table and predefined value.

< When Transform Preconding is not enabled >

< When Transform Preconding is enabled >

< Resource Element Mapping after Precoding >

Regardless of whether Transformed Precoding is enabled or not, the DMRS goes through scaling and Precoding procedure as below. W is precoding matrix which is same matrix for PUSCH data. This Procoding step itself is a pretty complicated process and explained in a separate note here.

Tables

Followings are various tables that are used in Sequence Generation and Resource Element Mappaing shown above.

< 38.211 - Table 6.4.1.1.3-1: Parameters for PUSCH DM-RS configuration type 1.>

 

< 38.211 - Table 6.4.1.1.3-2: Parameters for PUSCH DM-RS configuration type 2. >

 

< 38.211 - Table 6.4.1.1.3-3: PUSCH DM-RS positions  within a slot for single-symbol DM-RS and intra-slot frequency hopping disabled.>

 

< 38.211 - Table 6.4.1.1.3-4: PUSCH DM-RS positions  within a slot for double-symbol DM-RS and intra-slot frequency hopping disabled. >

 

< 38.211 - Table 6.4.1.1.3-5: PUSCH DM-RS time index l' >

 

< 38.211 - Table 6.4.1.1.3-6: PUSCH DM-RS positions  within a slot for single-symbol DM-RS and intra-slot frequency hopping enabled. >

Reference

[1] Wireless Technology Evolution - Transition from 4G to 5G : 5G Americas