DMRS — Demodulation Reference Signals in 5G NR
The reference signal that demodulates every physical channel — config type 1 vs 2, mapping type A/B, front-loaded + additional positions, CDM groups and antenna ports, for PDSCH/PUSCH/PDCCH/PBCH.
A receiver cannot demodulate a channel it has not estimated. That single sentence is the whole reason reference signals exist, and it is why every data and control channel in NR carries its own pilots rather than leaning on a cell-wide reference signal the way LTE leaned on CRS. Beamforming killed the cell-wide pilot: a pilot is only useful if it traverses the same beam as the data it is measuring, and in NR the beam is chosen per UE and per transmission. So the pilots moved inside the channel. NR's distinctive further choice is to put them front-loaded, at the very start of the allocation, so that channel estimation and decoding can begin before the transmission has finished -- which is what makes low-latency processing possible at all. Everything else in DMRS is a trade against that decision. This document works through the two configuration types resource element by resource element, derives the symbol positions from the TS 38.211 tables, does the coherence-time arithmetic that makes dmrs-AdditionalPosition mean something, and then spends its second half on the practical consequence that a DMRS fault presents as high block error rate with a perfectly healthy reported RSRP -- the one signature that separates a reference-signal problem from a coverage problem.
Contents
- 01Why Reference Signals Exist, and Why Each Channel Has Its Own
- 02Front-Loading, and the Price of It
- 03Configuration Type 1: Comb-2 and Two CDM Groups
- 04Configuration Type 2: Adjacent Pairs and Three CDM Groups
- 05CDM, Orthogonal Cover Codes, and CDM Groups Without Data
- 06Antenna Ports, Layers, and the DCI Antenna Port Field
- 07Double-Symbol DMRS and the Port Doubling
- 08Configuration, Field by Field
- 09The First DMRS Symbol: Type A, Type B, and dmrs-TypeA-Position
- 10Additional Positions: the TS 38.211 Tables
- 11Doppler, Coherence Time, and Why pos3 Exists
- 12Choosing a Configuration Before the First Grant
- 13Sequence Generation and the Scrambling Identities
- 14PUSCH DMRS: CP-OFDM, Transform Precoding and Low-PAPR Sequences
- 15DMRS on PDCCH, PBCH and PUCCH
- 16PT-RS: Tracking Phase Noise
- 17DMRS, CSI-RS and SRS: Telling Them Apart
- 18Overhead, and What It Costs in Throughput
- 19Parameter and Range Reference
- 20Failure Modes and What Each One Means
- 21Configuration Reference (ASN.1)
- 22Three More Worked Calculations
- 23Illustrative Message Traces
- 24Release Deltas: Rel-15 to Rel-18
- 25Reading DMRS in Logs: A Checklist
- 26Glossary
- 27References
1. Why Reference Signals Exist, and Why Each Channel Has Its Own
A radio channel rotates and scales everything that passes through it. The transmitter sends a QAM constellation point; the receiver sees that point multiplied by a complex number it does not know, and buried in noise. Demodulation is the process of dividing that unknown complex number back out, and to divide it out you have to know it. The only way to know it is to have sent something whose value the receiver already knew, observed what came out, and taken the ratio. That known signal is a reference signal, and demodulation reference signal is exactly what the name says: the pilot whose only job is to make demodulation of the channel it rides on possible.
Everything else about DMRS follows from three questions. How densely do you have to sample the channel in frequency, given that it varies across the band? How densely in time, given that it varies as the UE moves? And how do you separate the pilots of several spatial layers that arrive on the same resource elements at the same instant? Those three questions produce the configuration type, the additional positions, and the CDM groups respectively, and the answer to each costs resource elements the transport block would otherwise have had.
1.1 The LTE arrangement, and why NR could not keep it
LTE broadcast a cell-specific reference signal, CRS, on a fixed lattice of resource elements in every subframe, on every antenna port, whether or not anyone was being scheduled. Every UE in the cell used the same CRS. It was elegant: one pilot amortised across the entire cell, always present, always available for measurement as well as demodulation.
That arrangement depends on one assumption which NR breaks. CRS is only a valid channel estimate for the data if the data traverses the same channel as the CRS. In LTE that was nearly true, because the eNB transmitted CRS and PDSCH from the same wide sector beam. In NR the gNB forms a narrow beam per UE, chosen from a codebook and updated as the UE moves, and it may apply a different precoder to every layer of every grant. A cell-wide pilot transmitted on a wide beam tells a UE nothing whatsoever about the narrow beam its own PDSCH arrived on. The pilot must traverse the same beam as the data. That is the single most important conceptual point in this document, and it is why NR has no CRS at all.
A pilot that does not go through the same precoder, the same antenna weights and the same beam as the data is not a channel estimate for that data. It is a channel estimate for something else. Once beamforming is per-UE and per-layer -- which is the entire point of massive MIMO -- the only place a usable pilot can live is inside the transmission it is estimating. NR therefore gives PDSCH, PUSCH, PDCCH, PBCH and PUCCH each their own DMRS, carried in the same beam, with the same precoder, in the same resource block allocation. There is no shared alternative, and this is not an optimisation -- it is a structural necessity.
The consequences are worth listing because they shape the rest of the specification:
- DMRS is only present when the channel is present. No transmission, no pilots. A UE cannot use DMRS to measure a cell it is not being scheduled in, which is why NR needs SSB and CSI-RS as separate, independently transmitted measurement references (§17).
- DMRS is precoded with the data. The UE estimates the effective channel -- physical channel times precoder -- and never needs to know the precoder. This is what "non-codebook-transparent" precoding means in practice, and it is why the gNB can change its precoder between grants without telling the UE anything.
- DMRS density is a per-UE decision. A stationary UE and a UE on a train can be scheduled in adjacent slots of the same cell with completely different pilot densities. LTE could not do this at all.
- Every DMRS resource element is a data resource element you did not send, charged to the transport block of the UE that needs it rather than spread across the cell (§18).
| LTE CRS | NR DMRS | |
|---|---|---|
| Transmitted | Always, in every subframe, whether scheduled or not | Only inside a scheduled PDSCH, PUSCH, PDCCH, PBCH or PUCCH |
| Scope | Cell-wide. One set of pilots serves every UE | Per transmission. Each grant carries its own |
| Beam / precoder | The cell's sector beam, independent of any UE | Identical to the data's -- same precoder, same beam, same PRBs |
| Usable for measurement? | Yes. RSRP, RSRQ and CQI were all CRS-based | No. Measurement uses SSB and CSI-RS instead (§17) |
| Density control | Fixed by the port count. Not configurable per UE | dmrs-Type, maxLength and dmrs-AdditionalPosition, per UE and per mapping type |
| Overhead | About 4.8% of the grid per port, paid by the whole cell | 2.4% to 28.6% of the allocation, paid by the scheduled UE (§18) |
| Max orthogonal ports | 4 | 8 for type 1, 12 for type 2, and 24 in Rel-18 |
Table 1. Why the mechanism changed. The "beam / precoder" row is the cause; every other row is a consequence. The companion 02 Radio Frame Structure document owns the resource grid both columns are drawn on.
1.2 What triggers DMRS
Nothing, in the sense of a procedure. DMRS is not a procedure and there is no DMRS trigger, no DMRS request and no DMRS timer. It is a mapping rule: given a grant -- its mapping type, its start symbol, its length, its layer count and the UE's configured DMRS parameters -- the rule says which resource elements of that grant carry pilots instead of data. Both ends run the same rule and neither signals the result. That is precisely why the failure modes in §20 are so quiet: when the two ends run the rule with different inputs, there is nothing in the protocol that notices.
2. Front-Loading, and the Price of It
LTE put its pilots in the middle of the subframe as well as at the start, and there was no reason not to: the receiver had to wait for the whole subframe to arrive before it could do anything with it. NR made a different choice, deliberately. The first DMRS symbol sits at the start of the allocation -- symbol 2 or 3 of the slot for mapping type A, the first symbol of the allocation for mapping type B TS 38.211 cl. 7.4.1.1.2. Nothing about channel estimation requires this. Interpolation from pilots spread evenly through the allocation gives a better estimate than extrapolation from pilots at one end.
The reason is pipelining. A receiver that has the channel estimate in hand after the second or third symbol can start equalising, demodulating and feeding the LDPC decoder while the remaining symbols are still arriving. A receiver that has to wait for a mid-allocation pilot cannot begin until the pilot arrives, and the whole of its processing latency then stacks on top of the transmission duration rather than overlapping it. On a 14-symbol slot at 30 kHz that is the difference between finishing 100 µs after the last symbol and finishing 500 µs after it, and the HARQ round trip is built from exactly those numbers -- see the companion 05 HARQ document for how k1 and the N1 processing time consume the budget front-loading protects.
Front-loading is a latency design choice, not an estimation-quality one. It buys the receiver the ability to start work early and it costs estimation accuracy at the far end of a long allocation, because the channel at symbol 13 has to be extrapolated from a measurement taken at symbol 2. dmrs-AdditionalPosition exists to buy that accuracy back, one symbol of overhead at a time (§10, §11). The whole parameter is a correction to a decision made for latency reasons.
Two smaller consequences of front-loading show up constantly in logs:
- A mapping type A allocation must contain its own DMRS symbol. This is why the start symbol S is restricted to {0, 1, 2, 3} for PDSCH type A: the DMRS is at slot symbol 2 or 3, and an allocation starting at symbol 5 would begin after its own reference signal. The companion 32 SLIV and Time Domain Allocation document derives the S restriction from this constraint; §9 here closes the loop from the other side.
- A very short mapping type B allocation spends a large fraction of itself on pilot. A two-symbol type B PDSCH carries DMRS in one of its two symbols. Half the allocation is reference signal. Front-loading makes the mini-slot possible and simultaneously makes it expensive, which is why mini-slots are a latency tool and never a throughput tool.
3. Configuration Type 1: Comb-2 and Two CDM Groups
There are exactly two DMRS configuration types for PDSCH and PUSCH, selected by dmrs-Type, and they differ only in how the DMRS resource elements are laid out in frequency within a PRB. Everything else -- symbol positions, sequence generation, front-loading -- is common. Type 1 is the default and by a wide margin the more common.
Type 1 places DMRS on every second subcarrier, a comb-2 pattern, with two interleaved combs TS 38.211 cl. 7.4.1.1.1:
Configuration type 1, frequency mapping:
k = 4n + 2k' + delta n = 0, 1, 2, ...
k' in {0, 1}
delta in {0, 1}
delta = 0 -> CDM group 0 -> k = 0, 2, 4, 6, 8, 10 within a PRB
delta = 1 -> CDM group 1 -> k = 1, 3, 5, 7, 9, 11 within a PRB
k' selects which of the two REs of a group the frequency-domain
orthogonal cover code element w_f(k') is applied to: the pair is
(4n, 4n+2) for group 0 and (4n+1, 4n+3) for group 1.
6 DMRS REs per CDM group, per PRB, per DMRS symbol.dmrs-AdditionalPosition pos0. This is the everyday case and the figure worth memorising: even subcarriers are CDM group 0, odd subcarriers are CDM group 1, and the two ports of each group occupy identical resource elements. If only one CDM group is declared "without data" in the DCI, the other group's six subcarriers carry PDSCH in the DMRS symbol -- which halves the overhead of a single-layer grant.| Property | Type 1 value | Why it is that |
|---|---|---|
| Comb | Every 2nd subcarrier | Two orthogonal combs give two CDM groups from frequency alone, before any code is applied |
| REs per group per PRB per symbol | 6 | Twelve subcarriers split two ways |
| Frequency spacing of a port's pilots | 4 subcarriers, i.e. 60 kHz at 15 kHz SCS | Because the length-2 OCC pairs REs 4n and 4n+2, so the unambiguous channel sampling of one port is every 4th subcarrier |
| CDM groups | 2 (group 0 and group 1) | delta in {0, 1} |
| Ports, single symbol | 4 (1000 to 1003 for PDSCH; 0 to 3 for PUSCH) | 2 CDM groups x 2 frequency OCC codes |
| Ports, double symbol | 8 (1000 to 1007; 0 to 7) | x 2 again from the time-domain OCC (§7) |
| Delay-spread tolerance | Lower than type 2 | The OCC spans 4 subcarriers; the channel must be flat across that span for the code to stay orthogonal |
| Signalled as | dmrs-Type absent | The enumeration only contains type2. Absence means type 1 -- a real decoding trap (§8) |
Table 2. Configuration type 1 at a glance. The delay-spread row is the one people forget: CDM only works if the channel is approximately constant across the resource elements the code spans, and type 1 spans twice the bandwidth type 2 does.
The frequency spacing that matters for channel estimation is 4 subcarriers, not 2. A single port's pilots sit at 4n and 4n+2 with an OCC across them, so the pair jointly identifies one port and the estimate is effectively sampled every 4 subcarriers. At 30 kHz SCS that is 120 kHz between independent samples, which bounds the delay spread the estimator can resolve without aliasing. In a heavily delay-dispersive channel this is the reason type 1 estimation degrades before type 2 does, and it is not visible anywhere in the configuration.
4. Configuration Type 2: Adjacent Pairs and Three CDM Groups
Type 2 exists for one reason: more orthogonal ports per DMRS symbol. It gets them by cutting the PRB into three groups of four resource elements instead of two groups of six, and by pairing adjacent subcarriers rather than subcarriers two apart:
Configuration type 2, frequency mapping:
k = 6n + k' + delta n = 0, 1, 2, ...
k' in {0, 1}
delta in {0, 2, 4}
delta = 0 -> CDM group 0 -> k = 0, 1, 6, 7 within a PRB
delta = 2 -> CDM group 1 -> k = 2, 3, 8, 9 within a PRB
delta = 4 -> CDM group 2 -> k = 4, 5, 10, 11 within a PRB
k' selects which RE of the adjacent pair (6n+delta, 6n+delta+1) the
frequency-domain OCC element w_f(k') applies to.
4 DMRS REs per CDM group, per PRB, per DMRS symbol.| Type 1 | Type 2 | |
|---|---|---|
| CDM groups | 2 | 3 |
| Pattern | Comb-2, alternate subcarriers | Pairs of adjacent subcarriers, 3 pairs per group per 2 PRB |
| REs per group per PRB per symbol | 6 | 4 |
| OCC span in frequency | 4 subcarriers | 2 subcarriers |
| Port sampling interval | Every 4th subcarrier | Every 6th subcarrier |
| Ports, single symbol | 4 | 6 |
| Ports, double symbol | 8 | 12 |
| Full-symbol pilot cost | 2 groups without data = 12 REs per PRB | 3 groups without data = 12 REs per PRB -- identical |
| Single-layer pilot cost | 1 group without data = 6 REs per PRB | 1 group without data = 4 REs per PRB -- type 2 is cheaper here |
| Typical deployment use | Everything single-user: 1 to 4 layers, which is the overwhelming majority of traffic | Multi-user MIMO with many co-scheduled UEs, and 8-layer single-user downlink |
Table 3. Type 1 against type 2. Note the two cost rows: at maximum port count the two types cost exactly the same -- the whole DMRS symbol -- and type 2's advantage is entirely in ports per symbol, not in overhead. Type 2 is cheaper only when few CDM groups are declared without data.
"Type 2 has lower overhead because it uses 4 REs per group instead of 6" is a half-truth that gets repeated a lot. It is true per group and false per transmission. Type 1 with both CDM groups without data and type 2 with all three CDM groups without data both consume every subcarrier of the DMRS symbol: 12 REs per PRB, identically. The place type 2 genuinely wins on overhead is a single-layer grant with one CDM group without data, where it spends 4 REs where type 1 spends 6 -- and almost nobody configures type 2 for single-layer traffic, because its reason for existing is port count.
5. CDM, Orthogonal Cover Codes, and CDM Groups Without Data
A CDM group is a set of resource elements shared by several antenna ports. Not divided between them -- shared. Every port of the group transmits on every resource element of the group, at the same time, on the same subcarriers, and the receiver separates them by code. That is code division multiplexing, and it is the mechanism that lets four ports fit in a symbol that has room for only two orthogonal frequency combs.
5.1 The frequency-domain cover code
Within a CDM group the resource elements come in pairs: (4n, 4n+2) for type 1, (6n+delta, 6n+delta+1) for type 2. Two ports share the pair, and they are distinguished by a length-2 orthogonal cover code applied across the two resource elements:
Frequency-domain OCC, w_f(k'), k' in {0, 1}:
port A: w_f = [ +1, +1 ] both REs get the same value
port B: w_f = [ +1, -1 ] the second RE is negated
The receiver recovers each port by combining the two REs:
h_A = ( y(k0) + y(k1) ) / 2
h_B = ( y(k0) - y(k1) ) / 2
which is exact if and only if the channel is the same at k0 and k1.
If it is not, energy from port A leaks into the estimate of port B.
This leakage is the practical limit on CDM, and it grows with delay
spread and with the frequency separation of the pair.That assumption -- flat channel across the code span -- is the reason type 2 pairs adjacent subcarriers. Two subcarriers 30 kHz apart are much more likely to see the same channel than two 60 kHz apart. Type 1 spans twice the bandwidth and so leaks sooner, and in a channel with a long delay spread the practical port isolation of type 1 degrades before type 2's does. Nothing in the configuration warns you about this; it shows up as a MIMO throughput ceiling in dispersive channels and nowhere else.
5.2 The time-domain cover code
With maxLength set to len2 the DMRS occupies two consecutive symbols, and a second length-2 cover code becomes available across those two symbols: w_t = [+1, +1] and [+1, −1]. That doubles the port count again. Section 7 works through it. The important structural point is that the two symbols are one DMRS instance, not two DMRS positions -- a double-symbol DMRS at l0 is a single front-loaded pilot that happens to be two symbols wide, and it is counted once by dmrs-AdditionalPosition.
5.3 CDM groups without data
Here is the part that appears in every DCI dump and confuses everybody. The gNB does not have to use all the CDM groups. A single-layer transmission needs one port, which lives in one CDM group, and the resource elements of the other group or groups are then free -- the gNB can put PDSCH data in them. Or it can leave them empty, which it will do when it is co-scheduling another UE whose DMRS occupies that group.
The UE cannot work out which of those two things happened. It has to be told, and the field that tells it is "Number of DMRS CDM groups without data", encoded jointly with the port list in the DCI's antenna port field TS 38.212 cl. 7.3.1.2.2:
| Groups without data | Valid for | REs of the DMRS symbol reserved | What it means |
|---|---|---|---|
| 1 | type 1 and type 2 | Type 1: 6 of 12 per PRB. Type 2: 4 of 12 per PRB | One group is pilot; the remaining subcarriers of the DMRS symbol carry PDSCH for this UE. The cheapest configuration, used for 1 and 2 layer transmissions |
| 2 | type 1 and type 2 | Type 1: 12 of 12 (the whole symbol). Type 2: 8 of 12 | Two groups are pilot-only. For type 1 this is the maximum and the DMRS symbol carries no data at all. For type 2 it leaves one group free |
| 3 | type 2 only | 12 of 12 (the whole symbol) | All three groups pilot-only. Required whenever type 2 ports from all three groups are in use, and used for MU-MIMO where the other groups belong to another UE |
Table 4. The three values and their resource-element consequence. This is not a statement about how many layers this UE has -- it is a statement about which resource elements this UE must not treat as data. In MU-MIMO the two are deliberately different.
The field says "without data", and it means without data for this UE. A single-layer UE told "2 CDM groups without data" is being told to skip all twelve subcarriers of the DMRS symbol even though only six of them carry its own pilots. The other six carry the co-scheduled UE's pilots, which this UE must not decode as its own data and must not include in its rate matching. Getting this wrong does not corrupt six resource elements -- it shifts the whole rate-matching alignment of the transport block, and every code block after the DMRS symbol decodes as noise. One CRC failure, no partial degradation.
The rate-matching mechanism is behind several of the failure modes in §20. The UE builds an ordered list of the resource elements available for data, frequency-first, and maps the coded bits onto it. Disagree about how many resource elements the DMRS symbol holds and every subsequent bit lands in the wrong place -- no gradual degradation, no partial success, just a failed transport block.
6. Antenna Ports, Layers, and the DCI Antenna Port Field
An antenna port in NR is not a physical antenna. It is defined by its reference signal: two signals are on the same antenna port if the channel over which one is conveyed can be inferred from the channel over which the other is conveyed TS 38.211 cl. 4.4. In practice, a DMRS port is a spatial layer, and the port numbering tells you which physical channel the reference signal belongs to:
| Port range | Signal | Direction | Notes |
|---|---|---|---|
| 0 to 11 | PUSCH DMRS | Uplink | 0 to 3 type 1 single-symbol, 0 to 7 type 1 double, 0 to 5 type 2 single, 0 to 11 type 2 double |
| 1000 to 1011 | PDSCH DMRS | Downlink | The same structure, offset by 1000. This is the range in every DL log |
| 1000 to 1003 | SRS, and PUSCH after precoding | Uplink | Shares numbers with PDSCH DMRS but in the opposite direction -- read the direction before the number |
| 2000 to 2001 | PDCCH DMRS | Downlink | One port. PDCCH is never spatially multiplexed |
| 2000 | PUCCH and its DMRS | Uplink | One port |
| 3000 and up | CSI-RS | Downlink | Up to 32 ports (§17) |
| 4000 | SS/PBCH and PBCH DMRS | Downlink | One port. The SSB is a single-port transmission by definition (§15.2) |
Table 5. Antenna port numbering, TS 38.211 cl. 4.4. The 1000-series collision between PDSCH DMRS and SRS is real and is resolved only by direction, which is a genuine source of confusion in logs that print port numbers without a direction tag.
6.1 The antenna port field, and how wide it is
The DCI field named Antenna port(s) carries the CDM-groups-without-data value and the port list as a single joint code point. Its width depends on the configured dmrs-Type and maxLength, which is why the DMRS configuration changes the DCI size:
| dmrs-Type | maxLength | Field width | Spec table | Code points used |
|---|---|---|---|---|
| type1 | len1 | 4 bits | TS 38.212 Table 7.3.1.2.2-1 | 0 to 11; values 12 to 15 reserved |
| type1 | len2 | 5 bits | TS 38.212 Table 7.3.1.2.2-2 | Adds the double-symbol combinations and the 5 to 8 layer rows |
| type2 | len1 | 5 bits | TS 38.212 Table 7.3.1.2.2-3 | Three CDM groups multiply the combinations |
| type2 | len2 | 6 bits | TS 38.212 Table 7.3.1.2.2-4 | The largest, covering up to 12 ports |
Table 6. Antenna port field widths for DCI format 1_1, one codeword. Two codewords use separate tables. Changing dmrs-Type or maxLength in an RRCReconfiguration therefore changes the total DCI 1_1 payload size -- and until both ends apply the change at the same slot, the UE is blind-decoding for the wrong length and finds nothing at all. The companion 31 PDCCH Blind Decoding document explains why that produces silence rather than an error.
6.2 The type 1, single-symbol table
This is the one you will actually decode, because type 1 with maxLength absent is the default and covers most traffic. Ports are written relative to the base -- port "0" here means 1000 for PDSCH:
| Value | CDM groups without data | DMRS ports | Layers | Comment |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 | The cheapest possible grant: 6 pilot REs per PRB |
| 1 | 1 | 1 | 1 | Same cost, the other port of CDM group 0 |
| 2 | 1 | 0, 1 | 2 | Two layers, both in CDM group 0, 6 pilot REs |
| 3 | 2 | 0 | 1 | One layer but the whole DMRS symbol reserved -- the MU-MIMO case |
| 4 | 2 | 1 | 1 | As above, other port |
| 5 | 2 | 2 | 1 | One layer in CDM group 1 |
| 6 | 2 | 3 | 1 | One layer in CDM group 1, other port |
| 7 | 2 | 0, 1 | 2 | Two layers in group 0, group 1 reserved |
| 8 | 2 | 2, 3 | 2 | Two layers in group 1, group 0 reserved |
| 9 | 2 | 0, 1, 2 | 3 | Three layers across both groups |
| 10 | 2 | 0, 1, 2, 3 | 4 | Four layers. The maximum for type 1 single-symbol |
| 11 | 2 | 0, 2 | 2 | Two layers, one per CDM group -- chosen when the two layers need maximum pilot isolation rather than minimum overhead |
| 12 to 15 | -- | reserved | -- | A DCI carrying one of these is malformed |
Table 7. TS 38.212 Table 7.3.1.2.2-1, one codeword, dmrs-Type type1 and maxLength len1. Note values 2 and 11: both give two layers, and they differ only in whether the two ports share a CDM group. Value 2 costs 6 pilot REs per PRB, value 11 costs 12.
Four layers, configuration type 1. Antenna port field value 10.
CDM groups without data = 2 -> all 12 subcarriers of the DMRS
symbol are reserved, none carry PDSCH.
Ports 1000, 1001 in CDM group 0 (k = 0, 2, 4, 6, 8, 10), separated
by w_f = [+1,+1] and [+1,-1].
Ports 1002, 1003 in CDM group 1 (k = 1, 3, 5, 7, 9, 11), same codes.
Pilot cost with pos1: 2 symbols x 12 REs = 24 REs per PRB of 168.
Four layers, configuration type 2. The corresponding row of Table 7.3.1.2.2-3 gives ports 0-3 with 3 CDM groups without data.
Ports 1000, 1001 in CDM group 0 (k = 0, 1, 6, 7).
Ports 1002, 1003 in CDM group 1 (k = 2, 3, 8, 9).
CDM group 2 (k = 4, 5, 10, 11) carries nothing for this UE.
Pilot cost is identical: 12 of 12 REs in each DMRS symbol.
Same four layers, same overhead, different resource elements. Type 2 buys nothing at four layers. It buys everything at eight and twelve.
The layer count is not signalled anywhere as a number. It is the length of the port list in the antenna port field, and that is the only place it appears. A log printing "rank 4" is reporting its own interpretation of this field -- so when the port list and the reported rank disagree, trust the port list.
7. Double-Symbol DMRS and the Port Doubling
maxLength = len2 tells the UE that the DMRS may be two symbols long, and the antenna port field then says whether a given grant actually uses one symbol or two. It is a capability switch, not a commitment: a len2-configured UE still receives single-symbol DMRS on most of its grants, and the cost of the configuration is paid in the wider antenna port field (§6.1) rather than in pilots.
dmrs-AdditionalPosition, which is why len2 restricts that parameter to pos0 or pos1 -- there is no room for four double-symbol positions in fourteen symbols.| Single symbol (len1) | Double symbol (len2) | |
|---|---|---|
| Symbols per DMRS position | 1 | 2, consecutive |
| Codes available | Frequency OCC only, length 2 | Frequency OCC length 2 and time OCC length 2 |
| Type 1 ports | 4 (1000 to 1003) | 8 (1000 to 1007) |
| Type 2 ports | 6 (1000 to 1005) | 12 (1000 to 1011) |
| dmrs-AdditionalPosition allowed | pos0, pos1, pos2, pos3 | pos0 and pos1 only |
| Pilot symbols in a 14-symbol grant, pos0 | 1 | 2 |
| Pilot symbols in a 14-symbol grant, pos1 | 2 | 4 |
| Overhead, 14-symbol grant, all groups reserved | 7.1% at pos0, 14.3% at pos1 | 14.3% at pos0, 28.6% at pos1 |
| Doppler tolerance | Better -- more positions available | Worse. Four pilot symbols in fourteen, but only two distinct positions, so the channel is sampled in time at only two instants |
| When to use it | Everything up to 4 layers (type 1) or 6 (type 2) | Only when the port count genuinely requires it: 5 to 8 layers with type 1, 7 to 12 with type 2 |
Table 8. maxLength len1 against len2. The Doppler row is the counter-intuitive one: len2 with pos1 puts four symbols of pilot in the slot but samples the channel at only two points in time, so it is worse for a fast-moving UE than len1 with pos2, which costs less and samples three times.
Configuring maxLength len2 on a cell that never schedules more than four layers costs you nothing in pilots -- no grant will use the second symbol -- and one bit in every DCI 1_1, because the antenna port field widens from 4 bits to 5. One bit does not sound like much until you notice it changes the DCI payload size, which changes the aggregation level needed for a given PDCCH reliability, which changes CORESET capacity. Configure len2 because you need the ports, not because it looks more capable.
8. Configuration, Field by Field
The DMRS configuration is small -- six fields plus an optional PT-RS substructure -- and every one of them has a default that is expressed by absence rather than by a value. That single design choice is responsible for a disproportionate share of the field problems in §20, so it is worth going through the fields one at a time.
| Field | ASN.1 type | Absent means | What it controls |
|---|---|---|---|
dmrs-Type | ENUMERATED {type2} | type 1 | The frequency mapping and the CDM group count (§3, §4). The enumeration has exactly one member, so the only way to say type 1 is to omit the field |
dmrs-AdditionalPosition | ENUMERATED {pos0, pos1, pos3} | pos2 | How many DMRS symbols beyond the front-loaded one, and where (§10). Note that pos2 is not in the enumeration -- it is the absent case |
maxLength | ENUMERATED {len2} | len1 | Whether double-symbol DMRS is permitted, and therefore the antenna port field width (§7) |
scramblingID0 | INTEGER (0..65535) | N_ID_cell | The sequence identity used when nSCID = 0 (§13) |
scramblingID1 | INTEGER (0..65535) | N_ID_cell | The sequence identity used when nSCID = 1 |
phaseTrackingRS | SetupRelease { PTRS-DownlinkConfig } | No PT-RS | Phase tracking reference signals (§16) |
Table 9. DMRS-DownlinkConfig, field by field. Four of the six fields encode their most common value as absence. A configuration dump that shows an empty DMRS-DownlinkConfig is not unconfigured -- it is type 1, pos2, len1, cell-ID scrambling, no PT-RS.
An empty DMRS-DownlinkConfig means type 1, pos2, len1. It does not mean "nothing configured" and it does not mean "defaults to pos0". This trips up log readers and configuration tools in equal measure: a tool that treats an absent dmrs-AdditionalPosition as pos0 will compute one DMRS symbol where the UE computes three, and every rate-matching calculation downstream of that is wrong. If you are writing a decoder, hard-code the four absent-case defaults and print them explicitly, because that is what the UE does.
8.1 Two configurations, one per mapping type
The DMRS configuration is not attached to the bandwidth part or to the cell. It is attached to the mapping type, and there are two separate instances inside PDSCH-Config:
PDSCH-Config
|
+-- dmrs-DownlinkForPDSCH-MappingTypeA SetupRelease { DMRS-DownlinkConfig }
| applies to every grant whose TDRA row says mappingType typeA
| typically: dmrs-AdditionalPosition pos1 or pos2 (long allocations)
|
+-- dmrs-DownlinkForPDSCH-MappingTypeB SetupRelease { DMRS-DownlinkConfig }
applies to every grant whose TDRA row says mappingType typeB
typically: dmrs-AdditionalPosition pos0 (short allocations)
PUSCH-Config carries the same pair:
dmrs-UplinkForPUSCH-MappingTypeA / -MappingTypeB, both DMRS-UplinkConfig
-- Either may be absent. An absent structure for a mapping type that the
-- TDRA list actually uses means the UE applies the all-defaults case:
-- type 1, pos2, len1, cell-ID scrambling.This separation is the right design and it is also a trap. A cell running both slot-based eMBB and mini-slot URLLC has two DMRS configurations in flight for the same UE at the same time, and a grant switches between them purely by its TDRA row's mappingType field. When a log shows a UE decoding type A grants correctly and type B grants not at all -- or the reverse -- the mapping-type-specific configuration is the first place to look, not the radio.
8.2 dmrs-TypeA-Position: the field that arrives before RRC does
One DMRS parameter does not live in DMRS-DownlinkConfig at all. dmrs-TypeA-Position, which selects whether the mapping type A DMRS is at slot symbol 2 or symbol 3, is broadcast in the MIB TS 38.331 `MIB` and repeated in ServingCellConfigCommon:
MIB ::= SEQUENCE {
systemFrameNumber BIT STRING (SIZE (6)),
subCarrierSpacingCommon ENUMERATED {scs15or60, scs30or120},
ssb-SubcarrierOffset INTEGER (0..15),
dmrs-TypeA-Position ENUMERATED {pos2, pos3},
pdcch-ConfigSIB1 PDCCH-ConfigSIB1,
cellBarred ENUMERATED {barred, notBarred},
intraFreqReselection ENUMERATED {allowed, notAllowed},
spare BIT STRING (SIZE (1))
}
-- 1 bit of the 23-bit MIB payload. It has to be here, and not in any
-- dedicated configuration, because the UE must receive SIB1 -- a
-- mapping type A PDSCH -- before any dedicated configuration exists.The reason it is in the MIB is causal, not historical. SIB1 is carried on a mapping type A PDSCH. To receive that PDSCH the UE must know where its DMRS is. So the DMRS position has to be known before SIB1 is read, which means it has to be in the MIB. The companion 18 MIB and SIB1 IEs document owns the MIB payload in full and the companion 02 Radio Frame Structure document owns how the MIB is carried on PBCH.
dmrs-TypeA-Position is also the index into the default PDSCH time-domain allocation tables, which have separate S and L columns for pos2 and pos3 -- see the companion 32 SLIV and Time Domain Allocation document, §8.1. So a single MIB bit decides both where the DMRS symbol is and which start symbol and length a default-table grant resolves to. A gNB whose dedicated ServingCellConfigCommon disagrees with what it is broadcasting in its own MIB produces a UE that decodes SIB1 and the RAR perfectly and then fails every dedicated type A grant, which is a very odd-looking symptom until you know to check for it.
9. The First DMRS Symbol: Type A, Type B, and dmrs-TypeA-Position
The position of the first DMRS symbol, written l0 throughout TS 38.211, has exactly two possible definitions and the mapping type chooses between them TS 38.211 cl. 7.4.1.1.2:
| Mapping type A | Mapping type B | |
|---|---|---|
| l0 is | dmrs-TypeA-Position: symbol 2 or symbol 3 | 0 -- always |
| Referenced to | The slot boundary | The first symbol of the allocation |
| Absolute symbol of the first DMRS | 2 or 3, whatever S is | S, whatever S is |
| Consequence for S | S must be <= l0, hence S in {0, 1, 2, 3} for PDSCH and S = 0 for PUSCH | No constraint from DMRS. S may be anywhere in the slot |
| ld, the duration used to index the position tables | From the first symbol of the slot to the last symbol of the allocation, i.e. ld = S + L | The allocation length, i.e. ld = L |
| Configuration used | dmrs-DownlinkForPDSCH-MappingTypeA | dmrs-DownlinkForPDSCH-MappingTypeB |
Table 10. l0 and ld for the two mapping types. The ld row is the one that produces wrong answers: for mapping type A, ld is not the allocation length. A grant with S = 2 and L = 12 has ld = 14, and it is row 14 of the position table that applies, not row 12.
For mapping type A, ld = S + L, not L. TS 38.211 defines ld for type A as the duration from the first symbol of the slot to the last symbol of the scheduled resources, so the two symbols before S are counted even though nothing is transmitted in them. A grant with S = 2, L = 12 uses the ld = 14 row. A grant with S = 3, L = 11 also uses the ld = 14 row. Reading the table at ld = 12 for the first of those gives {l0, 6, 9} instead of {l0, 7, 11} at pos2 -- two of the three DMRS symbols in the wrong place, and the UE will be looking at symbols 6 and 9 while the gNB transmits at 7 and 11. Everything decodes as noise.
9.1 Why S is capped for mapping type A
The chain of reasoning is short and it runs in the direction people usually do not expect. The DMRS symbol is fixed at slot symbol 2 or 3. The allocation must contain its own DMRS. Therefore S cannot exceed l0. The (S, L) validity table in TS 38.214 encodes that as S in {0, 1, 2, 3} for PDSCH mapping type A, with S = 3 usable only when dmrs-TypeA-Position = pos3. The restriction is not about control regions or about the CORESET -- it is entirely about the DMRS. The companion 32 SLIV and Time Domain Allocation document works the same constraint from the allocation side.
For PUSCH mapping type A the cap is tighter still: S = 0, full stop. There is no uplink control region to skip, so a nonzero S buys nothing, and the spec simply forbids it.
9.2 Mapping type B and the mini-slot
Mapping type B moves the reference point to the allocation, and that is the whole of what mapping type B is. Everything else about the mini-slot -- the ability to start at any symbol, the two-symbol PDSCH, the sub-slot PUSCH -- follows from the DMRS travelling with the grant. Rel-15 PDSCH type B permits L in {2, 4, 7} only; PUSCH type B permits L from 1 to 14.
| Type B allocation | ld | pos0 | pos1 | First DMRS at |
|---|---|---|---|---|
| PDSCH, L = 2 | 2 | {0} | {0} | S |
| PDSCH, L = 4 | 4 | {0} | {0} | S |
| PDSCH, L = 7 | 7 | {0} | {0, 4} | S, and S + 4 at pos1 |
| PUSCH, L = 1 | 1 | {0} | {0} | S -- the entire allocation is DMRS |
| PUSCH, L = 5 | 5 | {0} | {0, 4} | S, and S + 4 at pos1 |
| PUSCH, L = 6 | 6 | {0} | {0, 4} | S, and S + 4 at pos1 |
Table 11. Type B DMRS positions, relative to the start of the allocation, from TS 38.211 Table 7.4.1.1.2-3 (PDSCH) and Table 6.4.1.1.3-3 (PUSCH). Positions are given as offsets from S because l0 = 0 for type B. Below ld = 7 there is nowhere to put an additional position, so pos1, pos2 and pos3 all collapse to pos0.
A single-symbol PUSCH -- legal for mapping type B -- is entirely DMRS. There is no data in it at all; it is a channel sounding opportunity that happens to be shaped like a grant. If you find L = 1 PUSCH grants in a log and no uplink transport blocks associated with them, nothing is broken.
10. Additional Positions: the TS 38.211 Tables
dmrs-AdditionalPosition says how many DMRS symbols the allocation gets beyond the front-loaded one, and the spec then decides where they go as a function of ld. It is not a free choice of positions -- the UE and the gNB both read the same table and there is no signalling of the result. The table is TS 38.211 Table 7.4.1.1.2-3, "PDSCH DM-RS positions l-bar for single-symbol DM-RS"; the PUSCH equivalent is Table 6.4.1.1.3-3 and has the same structure.
| ld | pos0 | pos1 | pos2 | pos3 |
|---|---|---|---|---|
| 3 to 7 | l0 | l0 | l0 | l0 |
| 8 | l0 | l0, 7 | l0, 7 | l0, 7 |
| 9 | l0 | l0, 7 | l0, 7 | l0, 7 |
| 10 | l0 | l0, 9 | l0, 6, 9 | l0, 6, 9 |
| 11 | l0 | l0, 9 | l0, 6, 9 | l0, 6, 9 |
| 12 | l0 | l0, 9 | l0, 6, 9 | l0, 5, 8, 11 |
| 13 | l0 | l0, 11 | l0, 7, 11 | l0, 5, 8, 11 |
| 14 | l0 | l0, 11 | l0, 7, 11 | l0, 5, 8, 11 |
Table 12. TS 38.211 Table 7.4.1.1.2-3, PDSCH mapping type A, single-symbol DMRS, normal CP -- the rows for ld = 3 to 14. Values other than l0 are absolute symbol indices within the slot, not offsets. For mapping type A, ld = S + L (§9). Rows below ld = 3 and the mapping type B columns are omitted; the type B columns are in §9.2.
Three structural properties of this table are worth having in your head before you use it:
- Below ld = 8, every value of
dmrs-AdditionalPositiongives the same answer. There is no room for an additional position in a seven-symbol allocation, so pos3 behaves exactly like pos0. Configuring pos3 on a cell that only schedules short allocations achieves nothing and costs nothing. - Only the entries after l0 are absolute. "l0, 7, 11" means the configured l0 -- 2 or 3 -- followed by symbols 7 and 11 of the slot. The second and third positions do not move when l0 moves from 2 to 3, which is why pos2 with l0 = 3 gives {3, 7, 11}: a 4-symbol gap followed by a 4-symbol gap, slightly more even than {2, 7, 11}.
- The additional positions are not evenly spaced. pos2 at ld = 14 gives gaps of 5 and 4 symbols; pos3 gives 3, 3 and 3. The designers chose positions that keep the last pilot near the end of the allocation, because extrapolation past the final pilot is the worst part of the estimate.
dmrs-AdditionalPosition over one 14-symbol type A allocation, with the pilot spacing annotated. pos0 leaves symbol 13 eleven symbols away from the only measurement of the channel; pos3 never leaves any symbol more than two away from a pilot. The density change is the whole parameter, and §11 turns it into a speed limit.10.1 The double-symbol table
With maxLength = len2, a different and much shorter table applies (TS 38.211 Table 7.4.1.1.2-4), and only pos0 and pos1 exist:
| ld | pos0 | pos1 | Pilot symbols total |
|---|---|---|---|
| 4 to 9 | l0 | l0 | 2 |
| 10 to 12 | l0 | l0, and a second pair in the upper half of the slot | 2 at pos0, 4 at pos1 |
| 13 to 14 | l0 | l0, and a second pair later still | 2 at pos0, 4 at pos1 |
Table 13. TS 38.211 Table 7.4.1.1.2-4, double-symbol DMRS, condensed. The exact index of the second pair depends on ld -- check the table for your ld rather than assuming, because the second pair moves between the ld = 12 and ld = 13 rows. What is certain is that there are at most two double-symbol positions in a slot, and each of them occupies two symbols.
maxLength len2 and dmrs-AdditionalPosition pos2 or pos3 is an invalid combination, and a configuration tool that emits it has a bug. The double-symbol table has no pos2 or pos3 rows: four double-symbol positions would be eight pilot symbols in a fourteen-symbol slot, which is not a transmission, it is a sounding signal. Some UEs reject the reconfiguration; others accept it and apply pos1. Both behaviours have been observed, and neither is documented, so do not rely on either.
11. Doppler, Coherence Time, and Why pos3 Exists
dmrs-AdditionalPosition is the only DMRS parameter whose correct value depends on something the configuration cannot see: how fast the UE is moving. This section does the arithmetic that turns a speed into a parameter value, because without it the four enumeration members are just four numbers.
A moving UE sees a Doppler shift, and the spread of Doppler shifts across the multipath components is what makes the channel change with time. The maximum Doppler frequency is:
f_d = v * f_c / c
v UE speed, metres per second
f_c carrier frequency, hertz
c 3 x 10^8 m/s
The coherence time -- the interval over which the channel stays
correlated enough to reuse an estimate -- is inversely proportional:
T_c ~ 0.423 / f_d (50% correlation, Clarke model)
T_c ~ 0.179 / f_d (a stricter 90% criterion)
The 0.423 figure is used below. It is an approximation and the exact
constant depends on the scattering model; treat the results as an
order of magnitude, not a specification.Case 1: 3 km/h at 3.5 GHz -- a pedestrian in an FR1 macro cell.
v = 0.833 m/s
f_d = 0.833 x 3.5e9 / 3e8 = 9.7 Hz
T_c = 0.423 / 9.7 = 43.5 ms
At 30 kHz SCS a slot is 0.5 ms, so T_c spans about 87 slots.
The channel is static across the whole allocation and then some.
-> pos0. Anything more is pure waste.
Case 2: 300 km/h at 3.5 GHz -- high-speed rail, FR1.
v = 83.3 m/s
f_d = 83.3 x 3.5e9 / 3e8 = 972 Hz
T_c = 0.423 / 972 = 435 us
At 30 kHz a symbol is 35.7 us, so T_c is about 12 symbols.
A pilot at symbol 2 is stale by symbol 13 of the same slot.
-> pos2 at minimum, pos3 to be safe. pos3's 3-symbol spacing is
107 us, comfortably inside 435 us.
Case 3: 3 km/h at 28 GHz -- a stationary FR2 user.
f_d = 0.833 x 28e9 / 3e8 = 77.8 Hz
T_c = 0.423 / 77.8 = 5.4 ms
At 120 kHz a slot is 125 us, so T_c spans about 43 slots.
-> pos0. Even walking pace is slow at FR2 if the slot is short
enough.
Case 4: 300 km/h at 28 GHz -- the hard case.
f_d = 83.3 x 28e9 / 3e8 = 7778 Hz
T_c = 0.423 / 7778 = 54 us
At 120 kHz a symbol is 8.93 us, so T_c is about 6 symbols.
-> pos3, and even that is marginal: 3-symbol spacing is 27 us
against a 54 us coherence time. This is why FR2 high mobility is
genuinely difficult and why beam management, not DMRS density,
usually becomes the limit first.
Two conclusions fall out. First, what matters is the ratio of coherence time to symbol duration, and because a higher SCS shortens the symbol almost as fast as a higher carrier raises the Doppler, FR2 at 120 kHz is not eight times worse than FR1 at 30 kHz -- compare cases 2 and 4 and the symbol counts are 12 and 6. Second, the parameter is genuinely per-UE: cases 1 and 2 are the same cell and the same numerology, and they want different values.
| Scenario | f_d | T_c (0.423/f_d) | T_c in symbols | Sensible value |
|---|---|---|---|---|
| 3 km/h, 3.5 GHz, 30 kHz | 9.7 Hz | 43.5 ms | ~1220 | pos0 |
| 30 km/h, 3.5 GHz, 30 kHz | 97 Hz | 4.4 ms | ~122 | pos0 |
| 120 km/h, 3.5 GHz, 30 kHz | 389 Hz | 1.09 ms | ~30 | pos1 |
| 300 km/h, 3.5 GHz, 30 kHz | 972 Hz | 435 us | ~12 | pos2 or pos3 |
| 500 km/h, 3.5 GHz, 30 kHz | 1620 Hz | 261 us | ~7 | pos3 |
| 3 km/h, 28 GHz, 120 kHz | 77.8 Hz | 5.4 ms | ~605 | pos0 |
| 120 km/h, 28 GHz, 120 kHz | 3111 Hz | 136 us | ~15 | pos1 or pos2 |
| 300 km/h, 28 GHz, 120 kHz | 7778 Hz | 54 us | ~6 | pos3 |
Table 14. The parameter as a speed limit. "T_c in symbols" is the coherence time divided by the symbol duration at that SCS. The rule of thumb the table encodes: pick a value whose worst pilot spacing is comfortably below T_c in symbols, and no denser. Approximate throughout -- the Clarke constant is model-dependent.
Over-configuring the additional positions is the more common error, and it is invisible because nothing fails. A cell serving a static fixed-wireless-access population with pos3 is throwing away 21.5% of its downlink capacity relative to pos0 (§18) for no benefit at all -- and the KPI dashboard shows healthy BLER, healthy SINR and healthy modulation, because everything is healthy. The only symptom is a throughput number lower than the link budget predicts, which almost nobody checks against theory.
The opposite error is easier to spot. Under-configuring produces BLER that rises with allocation length and with UE speed, and correlates with nothing else. A UE whose short grants succeed and whose 14-symbol grants fail, at good SINR, is a UE whose channel estimate has gone stale by the end of the allocation. Outer-loop link adaptation will respond by cutting the MCS, which fixes the BLER and hides the cause -- see the companion 34 Link Adaptation document for how that feedback loop converts a DMRS density problem into an apparent coverage problem.
12. Choosing a Configuration Before the First Grant
The gNB has to commit to a DMRS configuration in an RRCReconfiguration, before it has scheduled anything, and it cannot change it per grant -- only the number of ports actually used and the CDM groups without data are dynamic, through the antenna port field. So the configuration has to cover the whole envelope of what the scheduler might want to do with this UE.
The decision order matters, because the port requirement is a hard constraint and the Doppler requirement is a trade:
dmrs-Type and maxLength, and both are capability questions with a right answer. Doppler second: dmrs-AdditionalPosition is a trade, and §11 gives the arithmetic. Note the constraint flowing backwards -- choosing len2 for ports removes pos2 and pos3 from the Doppler decision, so a high-mobility 8-layer UE is a configuration NR cannot express well.| What the scheduler needs | dmrs-Type | maxLength | Typical AdditionalPosition | Pilot symbols in a 14-symbol grant |
|---|---|---|---|---|
| 1 to 2 layers, low mobility | absent (type 1) | absent (len1) | pos0 or pos1 | 1 or 2 |
| 1 to 4 layers, low mobility | absent (type 1) | absent (len1) | pos1 | 2 |
| 1 to 4 layers, high mobility | absent (type 1) | absent (len1) | pos2 or pos3 | 3 or 4 |
| Up to 6 layers, MU-MIMO | type2 | absent (len1) | pos1 | 2 |
| Up to 8 layers single-user | absent (type 1) | len2 | pos0 or pos1 | 2 or 4 |
| Up to 12 layers, dense MU-MIMO | type2 | len2 | pos0 or pos1 | 2 or 4 |
| URLLC mini-slots, any mobility | absent (type 1) | absent (len1) | pos0 -- the allocation is too short for more | 1 |
Table 15. Configurations that make sense together. The last row is why the mapping-type-specific structures exist: a cell serving both eMBB and URLLC configures pos2 for mapping type A and pos0 for mapping type B on the same UE, and the TDRA row's mappingType field picks between them per grant.
The one combination NR handles badly is high port count and high mobility together. Eight layers needs maxLength len2, len2 caps dmrs-AdditionalPosition at pos1, and pos1 with double symbols samples the channel at only two instants in the slot. A 300 km/h UE cannot usefully be given eight layers, and that is a structural property of the DMRS design rather than an implementation limitation. In practice the scheduler resolves it the other way round: fast UEs get fewer layers, which they need anyway because rank collapses at speed.
13. Sequence Generation and the Scrambling Identities
Knowing which resource elements carry DMRS is half the problem. The other half is knowing what value each one carries, because a reference signal is only a reference if the receiver already knows it. For CP-OFDM PDSCH and PUSCH the values come from a length-31 Gold sequence -- a pseudo-noise sequence built from two maximal-length shift register sequences -- mapped to QPSK TS 38.211 cl. 7.4.1.1.1:
r(n) = (1/sqrt2)(1 - 2c(2n)) + j (1/sqrt2)(1 - 2c(2n+1))
c(i) is the length-31 Gold sequence of TS 38.211 cl. 5.2.1,
initialised per DMRS symbol with:
c_init = ( 2^17 * ( N_symb_slot * n_s + l + 1 ) * ( 2 * N_ID + 1 )
+ 2 * N_ID + n_SCID ) mod 2^31
N_symb_slot 14 for normal CP
n_s slot number within the frame
l OFDM symbol index within the slot
N_ID scramblingID0 if n_SCID = 0, scramblingID1 if n_SCID = 1;
N_ID_cell if the field is absent
n_SCID 0 or 1, from the DCI (see below)
-- Rel-15 form. Later releases add terms for the extended CDM group and
-- multi-TRP cases; check the release of the specification you are
-- working against before hand-computing a sequence.Four things go into that initialisation, and each of them is doing a job:
| Input | Where it comes from | Why it is in the initialisation |
|---|---|---|
| Slot number n_s | The frame timing | The sequence changes every slot, so a persistent interferer does not correlate with a UE's pilots slot after slot |
| Symbol index l | The DMRS symbol position | Each DMRS symbol of a multi-position configuration gets a distinct sequence, so the additional positions do not reinforce interference |
| N_ID | scramblingID0 / scramblingID1, or N_ID_cell | The identity that separates one cell's or one TRP's pilots from another's. This is the inter-cell interference randomisation term |
| n_SCID | The 1-bit DMRS sequence initialization field in DCI 1_1 / 0_1; 0 for DCI 1_0 / 0_0 | Lets the scheduler switch between two identities dynamically, per grant, without an RRC reconfiguration |
Table 16. The four inputs to c_init. Note that N_ID has a range of 0 to 65535 while there are only 1008 physical cell identities -- the scrambling identity is deliberately a much larger space, so that neighbouring cells and co-operating TRPs can be given distinct pilot sequences independently of their cell IDs.
13.1 Why the scrambling identity matters
Two cells transmitting DMRS on the same resource elements with the same sequence do not interfere randomly -- they interfere coherently. The victim UE's correlator sees the interferer's pilots as though they were its own, and the channel estimate it produces is a weighted sum of two channels. That is far worse than noise, because it biases the estimate rather than adding variance to it: the equaliser then confidently applies the wrong correction to every data symbol.
Distinct scrambling identities make that interference behave like noise, which averaging can suppress. So scramblingID0 and scramblingID1 want planning like a PCI: reusing a value across a cell boundary produces a localised throughput hole that moves with the interferer's traffic.
A scrambling ID mismatch between what the gNB's transmitter uses and what it signalled to the UE is the purest DMRS failure there is. The UE generates the wrong sequence, correlates it against the received pilots, and gets a channel estimate that is pure noise -- not a degraded estimate, an uncorrelated one. Every transport block then fails CRC, at every MCS, at every SINR, in every PRB. And because SSB is a completely separate signal with its own sequence generation, the UE's reported RSRP and SINR stay perfectly healthy throughout. High BLER with good reported RSRP is the discriminator: it says the problem is in the reference signal chain, not in the radio path. This one signature is the single most useful thing in this document.
13.2 nSCID and dynamic switching
The nSCID bit in the DCI lets the scheduler pick between scramblingID0 and scramblingID1 per grant. Its main uses are multi-TRP transmission, where the two TRPs need distinct pilot sequences, and MU-MIMO pairing across CDM groups, where two co-scheduled UEs benefit from decorrelated pilots even in different groups. A UE that is configured with only scramblingID0 still has the bit in its DCI, and nSCID = 1 then resolves to N_ID_cell rather than to a configured value -- a subtlety worth knowing when a log shows a single UE's DMRS identity changing between grants for no configured reason.
14. PUSCH DMRS: CP-OFDM, Transform Precoding and Low-PAPR Sequences
Uplink DMRS for a CP-OFDM PUSCH is structurally identical to downlink: the same two configuration types, the same CDM groups, the same additional-position tables, the same Gold sequence. The differences are the port numbering -- 0 to 11 rather than 1000 to 1011 -- and the fact that the configuration lives in DMRS-UplinkConfig with the scrambling identities pushed one level down into a transformPrecodingDisabled substructure.
That substructure exists because transform precoding changes the reference signal design completely. DFT-s-OFDM -- transform precoding enabled, the single-carrier waveform inherited from LTE's SC-FDMA -- is used for coverage-limited uplink, where the peak-to-average power ratio of CP-OFDM would force the UE's power amplifier to back off. A Gold-sequence QPSK DMRS would destroy the low-PAPR property it exists to protect, so a different sequence is used:
| CP-OFDM PUSCH | DFT-s-OFDM PUSCH (transform precoding on) | |
|---|---|---|
dmrs-Type | type 1 or type 2, configurable | Type 1 only. Type 2 is not defined for transform precoding |
| Sequence | Gold sequence mapped to QPSK, as §13 | A low-PAPR sequence: Zadoff-Chu based for longer allocations, computer-generated for the shortest ones TS 38.211 cl. 6.4.1.1.1.2 |
| Occupied subcarriers in the DMRS symbol | Comb-2 or the type 2 pairs; the other CDM groups may carry data | Every allocated subcarrier. The sequence is single-carrier by construction, so there is no comb and no CDM group free for data |
| Layers | 1 to 4 per codeword | 1. Transform precoding is single-layer only, so there is one DMRS port and CDM does not arise |
| Identity parameter | scramblingID0 / scramblingID1, 0 to 65535 | nPUSCH-Identity, 0 to 1007 -- a smaller space, aligned with the physical cell identity range |
| Sequence hopping | n/a | sequenceGroupHopping and sequenceHopping, which rotate the base sequence per slot to randomise inter-cell collisions |
| Overhead in the DMRS symbol | Partial: 4 to 12 REs of 12 per PRB | Total: 12 of 12 REs per PRB, always |
Table 17. The two uplink waveforms and their DMRS. The last row is the practical consequence: a DFT-s-OFDM PUSCH spends its whole DMRS symbol on pilot, so a 14-symbol single-position grant is 7.1% pilot and there is no cheaper option. The companion 35 Physical Channels document owns the waveform choice itself.
Group hopping is the mechanism that replaces the scrambling identity. Where CP-OFDM DMRS randomises inter-cell interference with a different sequence, low-PAPR DMRS cycles through a family of base sequences and cyclic shifts slot by slot, driven by nPUSCH-Identity. Two cells with the same identity hop identically and collide every slot; two with different identities collide occasionally and at random.
Transform precoding is enabled by msg3-transformPrecoder in RACH-ConfigCommon for MSG3 and by transformPrecoder in PUSCH-Config afterwards, and the two are independent. A UE whose MSG3 uses DFT-s-OFDM and whose subsequent PUSCH uses CP-OFDM changes DMRS structure entirely at that transition -- different sequence family, different subcarrier occupancy, different identity parameter. If uplink works during random access and fails afterwards, check which waveform each phase used before looking at anything else. The companion 03 Random Access document owns the MSG3 grant.
15. DMRS on PDCCH, PBCH and PUCCH
The logic of section 1 applies to every physical channel, not just to the data channels: each is beamformed, so each carries its own pilots. The three control-plane cases each solve the problem slightly differently, and each has a quirk worth knowing.
15.1 PDCCH DMRS
PDCCH DMRS is mapped to every fourth subcarrier of each resource element group, at k = 4n + 1 within the REG TS 38.211 cl. 7.4.1.3. A REG is one PRB in one symbol, so three of its twelve resource elements are DMRS and nine carry control information: PDCCH is permanently 25% reference signal. There is one port, port 2000, because PDCCH is never spatially multiplexed -- it has to be decodable by a UE that knows nothing about the channel yet.
| Parameter | In | Range / values | Effect |
|---|---|---|---|
pdcch-DMRS-ScramblingID | ControlResourceSet | 0 to 65535 | The scrambling identity for the PDCCH DMRS sequence. Absent means N_ID_cell. Same reasoning as §13.1, applied per CORESET |
precoderGranularity | ControlResourceSet | sameAsREG-bundle or allContiguousRBs | Whether the UE may assume the same precoder across the whole contiguous RB span of the CORESET, and therefore whether it may average DMRS across it |
reg-BundleSize | ControlResourceSet | n2, n3, n6 | The unit within which the UE may always average DMRS, even with sameAsREG-bundle |
Table 18. The PDCCH DMRS controls, all of them in ControlResourceSet. The companion 30 CORESET and Search Space document owns these IEs; this table covers only their reference-signal consequence.
precoderGranularity = allContiguousRBs is a promise from the gNB to the UE that it will not change the precoder across the CORESET's contiguous RBs. The UE cashes that promise by averaging DMRS across all of them, which can improve the PDCCH channel estimate by several dB and materially raises blind-decoding success at low aggregation levels. A gNB that signals allContiguousRBs and then applies per-bundle precoding has broken the promise: PDCCH BLER rises, no counter records why, and the symptom is missed grants that look like coverage. The companion 31 PDCCH Blind Decoding document covers what a missed candidate does downstream.
15.2 PBCH DMRS, which is also a signalling channel
PBCH DMRS is the most interesting of the three because it carries information as well as enabling demodulation. It sits at k = 4n + v, one resource element in four, where v = N_ID_cell mod 4 -- so the frequency positions themselves depend on the cell identity. Across the SS/PBCH block there are 144 DMRS resource elements: 60 in each of symbols 1 and 3, and 12 at each edge of symbol 2 where the SSS occupies the centre. Of the 576 PBCH resource elements in the block, 144 are DMRS -- 25% of PBCH is reference signal, which is enormous by any data-channel standard and entirely correct for a channel that has to be decodable by a UE with no channel knowledge at all.
PBCH DMRS sequence initialisation (TS 38.211 cl. 7.4.1.4.1):
c_init = 2^11 * ( i_SSB + 1 ) * ( floor(N_ID_cell / 4) + 1 )
+ 2^6 * ( i_SSB + 1 )
+ ( N_ID_cell mod 4 )
i_SSB depends on the maximum number of candidate SSB positions:
L_max = 4 i_SSB = 2 LSBs of the SSB index, + 4 * n_hf
L_max = 8 or 64 i_SSB = 3 LSBs of the SSB index
-- So the DMRS sequence itself encodes 2 or 3 bits of the SSB index
-- (and, at L_max = 4, the half-frame bit). The UE recovers them by
-- hypothesis testing: it correlates against each candidate sequence
-- and takes the one that fits. For L_max = 64 in FR2 the remaining
-- 3 MSBs of the index are carried in the PBCH payload instead.The PBCH DMRS is doing two jobs at once, and this is genuinely elegant engineering. The UE has to correlate against the DMRS anyway to demodulate PBCH; making the sequence a function of the SSB index means that correlation also identifies which beam the UE found, at zero additional resource cost. Two or three bits of signalling for free, recovered by a computation the receiver was already performing. It is also why a UE can determine the SSB index before decoding the MIB, which is what makes the SSB-to-RACH-occasion association work during initial access -- see the companion 03 Random Access document.
15.3 PUCCH DMRS, format by format
PUCCH DMRS varies more between formats than anywhere else in NR, because the formats themselves are structurally different: some are sequence-based and carry no explicit pilot at all, others are coherently modulated and need one TS 38.211 cl. 6.4.1.3:
| Format | Symbols | Payload | DMRS | Fraction on DMRS |
|---|---|---|---|---|
| 0 | 1 or 2 | 1 or 2 bits | None. The whole transmission is a cyclic shift of a base sequence, detected non-coherently | 0% -- and 100%, depending how you count |
| 1 | 4 to 14 | 1 or 2 bits | Alternate symbols, starting with the first: symbols 0, 2, 4, ... | About 50% |
| 2 | 1 or 2 | More than 2 bits | Subcarriers k with k mod 3 = 1 within each PRB, in the same symbols as the payload -- 4 REs of 12 per PRB | 33% |
| 3 | 4 to 14 | More than 2 bits | 2 dedicated symbols for lengths 4 to 13; at 14 symbols, symbols 3 and 10. With additionalDMRS and length >= 10, 4 symbols | 14% to 50% |
| 4 | 4 to 14 | More than 2 bits | Same symbol positions as format 3; the payload is spread with a frequency-domain OCC so several UEs share the PRB | 14% to 50% |
Table 19. PUCCH DMRS by format, from TS 38.211 cl. 6.4.1.3 and Table 6.4.1.3.3.2-1. The exact symbol indices for formats 3 and 4 depend on the length, on whether frequency hopping is configured, and on additionalDMRS -- consult the table for your case rather than assuming. The companion 35 Physical Channels document owns the formats themselves.
Format 0 is the interesting case. It needs no DMRS: the receiver knows the finite set of sequences the UE might have sent and tests which one arrived. That is non-coherent detection, and it works for one or two bits and not for more. Format 1 pays half its symbols for pilots to get coherent detection of the same one or two bits over a longer transmission, which buys coverage. The trade between them is the clearest example in NR of pilot cost as a real engineering decision.
16. PT-RS: Tracking Phase Noise
DMRS estimates the channel once per position and the receiver interpolates between them. That works for amplitude and for the slow part of the phase, but there is a fast phase impairment it cannot follow: oscillator phase noise, which grows roughly with the square of carrier frequency and is essentially a common phase error rotating the whole constellation from symbol to symbol.
At 3.5 GHz with 64QAM the rotation over a slot is small enough to ignore. At 28 GHz with 256QAM it is not: the constellation points are separated by a few degrees of phase, and a common phase error of that size turns a clean symbol into a neighbouring one. Phase tracking reference signals exist to measure and remove it TS 38.211 cl. 7.4.1.2.
16.1 Density, and how it is chosen
Neither density is signalled per grant. Both are derived from the grant by comparing it against thresholds the network configures TS 38.214 cl. 5.1.6.3, which is an unusual and easily missed piece of design: the same PT-RS configuration produces different PT-RS patterns on different grants to the same UE.
| Density | Derived from | Configured by | Values | Meaning |
|---|---|---|---|---|
| Time, L_PT-RS | The scheduled MCS | timeDensity, three thresholds (each INTEGER (0..29)) | no PT-RS, 4, 2, 1 | MCS below the first threshold: no PT-RS. Then every 4th, every 2nd, every symbol as the MCS climbs -- because phase noise matters more at higher modulation order |
| Frequency, K_PT-RS | The number of scheduled PRBs | frequencyDensity, two thresholds (each INTEGER (1..276)) | no PT-RS, 2, 4 | Narrow allocations: no PT-RS. Then every 2nd PRB, then every 4th -- because a wide allocation already gives plenty of PT-RS samples to average |
Table 20. The two PT-RS densities and their derivation, TS 38.214 Tables 5.1.6.3-1 and 5.1.6.3-2. The frequency density moves the wrong way at first glance -- a wider allocation gets sparser PT-RS -- and the reason is that the receiver averages the PT-RS across PRBs to estimate a single common phase error, so a wide allocation needs fewer per PRB.
16.2 The DMRS association
A PT-RS resource element is not an independent reference signal. It is transmitted on the same antenna port as one of the DMRS ports of the grant, and it uses that DMRS port's channel estimate as its phase reference. Which DMRS port is signalled in the DCI, in a 2-bit PTRS-DMRS association field present when PT-RS is configured TS 38.212 cl. 7.3.1.2.2.
The association exists because the phase error the PT-RS measures is the combination of the transmitter's and receiver's oscillator noise along one spatial path. Different layers can see different common phase errors, so a PT-RS on the wrong port measures the wrong rotation. Up to two PT-RS ports exist for the two-codeword downlink case; a single-codeword transmission has one, associated with one of its DMRS ports.
| Field | In | Range | Absent means | Effect |
|---|---|---|---|---|
frequencyDensity | PTRS-DownlinkConfig | 2 values, each 1 to 276 | K_PT-RS = 2 always | The two PRB-count thresholds selecting no PT-RS, K = 2 or K = 4 |
timeDensity | PTRS-DownlinkConfig | 3 values, each 0 to 29 | L_PT-RS = 1 always | The three MCS thresholds selecting no PT-RS, L = 4, 2 or 1 |
epre-Ratio | PTRS-DownlinkConfig | 0 to 3 | 0 | PT-RS energy per resource element relative to PDSCH. A boost lets a single RE per PRB give a usable phase estimate |
resourceElementOffset | PTRS-DownlinkConfig | offset01, offset10, offset11 | offset00 | Which subcarrier within the PRB carries the PT-RS, so that co-scheduled UEs do not collide |
ptrs-Ports | PTRS-UplinkConfig | n1 or n2 | n/a | Uplink only: how many PT-RS ports the UE may transmit |
maxNrofPorts | PTRS-UplinkConfig (transform precoding) | n1 or n2 | n/a | For DFT-s-OFDM the PT-RS structure is entirely different -- chunks in the pre-DFT domain, controlled by sampleDensity |
Table 21. PT-RS configuration fields. epre-Ratio matters more than it looks: one resource element per PRB is a very small measurement, and boosting its power is what makes the estimate usable without spending more resource elements.
PT-RS is configured and then almost always absent in FR1. The timeDensity thresholds are typically set so that no PT-RS appears below 64QAM, and the frequencyDensity thresholds so that none appears on narrow allocations. A cell can carry phaseTrackingRS in every UE's configuration and transmit PT-RS on a small minority of grants. If you are looking for PT-RS in a log and not finding it, check the scheduled MCS against the thresholds before concluding anything is wrong.
17. DMRS, CSI-RS and SRS: Telling Them Apart
These three are confused constantly, and the confusion is understandable -- all three are known signals sent to let the other end estimate something. They differ in who sends them, what the estimate is for, and whether they exist when nothing is being scheduled.
| DMRS | CSI-RS | SRS | |
|---|---|---|---|
| Sent by | Whoever transmits the channel: gNB for DL, UE for UL | gNB only | UE only |
| Measured by | The receiver of that channel | The UE | The gNB |
| Purpose | Demodulate this transmission. Nothing else | Report channel state so the gNB can choose MCS, rank and precoder for future transmissions | Let the gNB choose an uplink precoder and grant, and measure uplink channel quality |
| Present when nothing is scheduled? | No. It rides inside a transmission and cannot exist without one | Yes -- periodic CSI-RS is transmitted on a configured cadence regardless of traffic | Yes -- periodic SRS likewise |
| UE-specific? | Yes. Its precoder, ports and density are per grant | Configured per UE, but a resource may be shared by many UEs | Yes, per UE |
| Beamformed with the data? | Yes, by definition -- that is the point | No. CSI-RS probes candidate beams, which is a different question | Usually wide-beam or per-panel |
| Used for RSRP? | No | Yes, CSI-RSRP | n/a |
| Ports | Up to 12 (24 in Rel-18) | Up to 32 | Up to 4 (8 in Rel-18) |
| Port numbers | 0-11 UL, 1000-1011 DL | 3000 and up | 1000 to 1003 |
| Spec clause | TS 38.211 cl. 7.4.1 and 6.4.1 | TS 38.211 cl. 7.4.1.5 | TS 38.211 cl. 6.4.1.4 |
Table 22. The three reference signals that people mix up. The "present when nothing is scheduled" row is the fastest discriminator: if a log shows a reference signal on an idle UE, it is not DMRS. The companion 20 Measurements and Events document owns CSI-RS as a measurement resource.
The cleanest way to hold the distinction: CSI-RS and SRS answer "what should I send next?" DMRS answers "what did I just receive?" CSI-RS is measured, reported, and acted on some milliseconds later, by which time the channel has moved. DMRS is measured and used inside the same transmission, so it is never stale in the same way. That is why a CSI report can be wrong without anything failing -- link adaptation absorbs it -- while a DMRS error fails the transport block outright.
18. Overhead, and What It Costs in Throughput
Every DMRS resource element is a resource element the transport block does not get. The accounting is simple enough to do in your head once you have the structure, and it is worth doing because the numbers are larger than most people expect.
Setup. One PRB, a 14-symbol allocation, normal CP.
Total REs = 12 subcarriers x 14 symbols = 168
Type 1, pos0, 1 CDM group without data.
1 DMRS symbol, 6 of its 12 REs reserved
6 / 168 = 3.6%
Type 2, pos0, 1 CDM group without data.
1 DMRS symbol, 4 of its 12 REs reserved
4 / 168 = 2.4% <- the cheapest DMRS in NR
Type 1, pos0, 2 CDM groups without data.
1 DMRS symbol fully reserved: 12 REs
12 / 168 = 7.1%
Type 1, pos2, 2 CDM groups without data.
3 DMRS symbols at {2, 7, 11}, each fully reserved: 36 REs
36 / 168 = 21.4%
Type 1, pos3, 2 CDM groups without data.
4 DMRS symbols at {2, 5, 8, 11}: 48 REs
48 / 168 = 28.6%
Type 1, maxLength len2, pos1, 2 CDM groups without data.
2 positions x 2 symbols = 4 symbols: 48 REs
48 / 168 = 28.6% <- same cost as pos3, half the time samples
len2 with pos1 costs exactly what pos3 costs while sampling the channel in time half as often.18.1 Carried through to a throughput number
Percentages are abstract. Here is the same arithmetic on a full carrier, so the cost has a unit:
Given: 100 MHz TDD carrier, 30 kHz SCS, 273 PRB, 4 layers, 256QAM (8 bits per RE), code rate 0.85, 14-symbol slots, 2000 slots per second. Type 1, 2 CDM groups without data. Ignoring PDCCH, CSI-RS, SSB and TDD downlink duty cycle -- this is a peak-rate comparison, not a cell capacity figure.
Total REs per slot = 273 x 12 x 14 = 45 864
DMRS REs per symbol of pilot = 273 x 12 = 3 276
pos0: 1 pilot symbol -> 42 588 data REs
42 588 x 8 x 0.85 x 4 x 2000 = 2.317 Gbit/s
pos1: 2 pilot symbols -> 39 312 data REs
39 312 x 8 x 0.85 x 4 x 2000 = 2.139 Gbit/s
pos2: 3 pilot symbols -> 36 036 data REs
36 036 x 8 x 0.85 x 4 x 2000 = 1.960 Gbit/s
pos3: 4 pilot symbols -> 32 760 data REs
32 760 x 8 x 0.85 x 4 x 2000 = 1.782 Gbit/s
pos0 to pos3 costs 535 Mbit/s, or 23% of the peak rate. That is the price of the Doppler tolerance in §11, and it is why the parameter is worth getting right rather than setting defensively.
Every real cell has more overhead on top -- PDCCH, CSI-RS, SSB, the TDD pattern -- which the companion 35 Physical Channels document accounts for. What survives all of it is the ratio: whatever the cell achieves, pos0 to pos3 removes about 23% of it and pos1 to pos2 removes about 8%.
A useful sanity check on any throughput anomaly: compute the expected rate from the PRB count, the layer count, the modulation order, the code rate and the DMRS overhead, and compare it with what the cell is delivering. A 20%-ish shortfall with healthy BLER and healthy MCS is very often DMRS overhead that nobody accounted for -- either an over-configured dmrs-AdditionalPosition or a scheduler emitting 2 CDM groups without data on single-layer grants. Both are configuration problems that no counter reports and no alarm raises.
19. Parameter and Range Reference
| Parameter | Where it lives | Range | Typical | Effect if wrong |
|---|---|---|---|---|
dmrs-Type | DMRS-DownlinkConfig, DMRS-UplinkConfig | type2, or absent for type 1 | absent (type 1) | Pilots sought on the wrong subcarriers entirely: 100% BLER on every grant. The antenna port field is also a different width, so the DCI size may mismatch too |
dmrs-AdditionalPosition | same | pos0, pos1, pos3, or absent for pos2 | pos1 for mapping type A, pos0 for mapping type B | Rate matching diverges from the DMRS symbol onward. Long allocations fail, short ones may survive |
maxLength | same | len2, or absent for len1 | absent (len1) | Changes the antenna port field width and therefore the DCI size. Blind decoding fails and no grant is found at all |
scramblingID0 | same | INTEGER (0..65535) | Often set equal to N_ID_cell, or planned per cell | Channel estimate is uncorrelated noise. High BLER with good RSRP (§13.1) |
scramblingID1 | same | INTEGER (0..65535) | A second planned value, or absent | Same, but only where the DCI sets nSCID = 1 -- an intermittent failure correlating with nothing visible |
phaseTrackingRS | same | SetupRelease { PTRS-DownlinkConfig } | absent in FR1, present in FR2 | PT-RS resource elements treated as data or vice versa: raised BLER at high MCS only |
dmrs-TypeA-Position | MIB, and ServingCellConfigCommon | pos2, pos3 | pos2 | Every type A grant fails, type B grants succeed. Also selects which column of the default TDRA table applies (§8.2) |
dmrs-DownlinkForPDSCH-MappingTypeA | PDSCH-Config | SetupRelease { DMRS-DownlinkConfig } | present | Absent means the all-defaults case, not "no DMRS": type 1, pos2, len1 |
dmrs-DownlinkForPDSCH-MappingTypeB | PDSCH-Config | SetupRelease { DMRS-DownlinkConfig } | present when the TDRA list has type B rows | Mini-slot grants fail while slot-based grants succeed |
transformPrecoder | PUSCH-Config | enabled, disabled, or absent | disabled for capacity cells, enabled for coverage | Selects the whole uplink DMRS sequence family (§14); a mismatch means the gNB correlates the wrong sequence type |
pdcch-DMRS-ScramblingID | ControlResourceSet | INTEGER (0..65535) | absent, i.e. N_ID_cell | PDCCH channel estimate fails, so no grants are decoded at all -- much louder than a PDSCH DMRS fault |
Table 23. Every parameter that changes what a DMRS resource element is or where it goes. Typical values are what many vendors ship and are not spec requirements. Note how many of the "effect if wrong" entries are total, binary failures rather than degradations -- that is the character of this whole area.
20. Failure Modes and What Each One Means
DMRS has no acknowledgement, no error indication and no negotiation. Both ends apply a mapping rule from configuration they believe they share, and when they do not share it there is nothing in the protocol that says so. Every failure below therefore presents as a decoding failure, and the diagnostic work is entirely in distinguishing them from each other and from a genuine radio problem.
The discriminator, stated once. A DMRS fault produces high block error rate with good reported RSRP and good reported SINR. The UE's measurements come from SSB and CSI-RS, which have their own resource elements and their own sequence generation, and are entirely unaffected by a DMRS problem. So the radio looks fine and the data does not work. A coverage problem degrades both together. If BLER and RSRP disagree, the fault is in the reference-signal or rate-matching chain, and this section is the list of candidates.
| Failure | Detected by | What the UE does | Log signature and what it points at |
|---|---|---|---|
Scrambling ID mismatch between the gNB's transmitter and its own signalled scramblingID0 | Nobody. No protocol element checks it | Generates the wrong Gold sequence, correlates, and obtains an uncorrelated channel estimate | 100% DL BLER at every MCS and SINR, with healthy RSRP and SINR reports. The outer loop drives MCS to the floor and BLER stays at 100% -- the give-away, since real coverage problems improve as MCS falls |
dmrs-TypeA-Position in dedicated configuration disagreeing with the value broadcast in MIB | Nobody | Looks for the type A DMRS in symbol 2 while the gNB transmits in symbol 3, or the reverse | Type A grants fail, type B grants succeed -- almost diagnostic on its own. Initial access works, because SIB1, the RAR and MSG4 use the MIB value, so the failure appears immediately after RRCReconfiguration |
| Mapping type A allocation whose S excludes the DMRS symbol (S > l0) | In principle the configuration tool; in practice nobody | Attempts reception with no channel estimate at all | 100% failure on every grant using that TDRA row, at any SINR, with the PDCCH decoded correctly. A row-correlated 100% error rate is the fingerprint (companion 32 SLIV, §18) |
| Too few additional positions for the UE's Doppler | Nobody, but the effect is graded rather than binary | Uses a stale channel estimate for the later symbols of the allocation | BLER that rises with allocation length and with UE speed, at good SINR. Short grants succeed, 14-symbol grants fail. Link adaptation responds by cutting MCS, which hides the cause (§11) |
| Antenna port field indicating more CDM groups without data than the UE expects | Nobody | Rate matching diverges at the DMRS symbol; every code block after it is misaligned | CRC failure on the whole transport block with no partial success. Correlates with layer count if the scheduler emits the value only for multi-layer grants (§5.3) |
dmrs-Type mismatch between configuration and what the gNB actually transmits | Sometimes the UE, via a DCI size mismatch | Either finds no DCI at all (if the port field width differs) or looks for pilots on the wrong subcarriers | Two symptoms from one cause. If the port field width happens to match: total DL failure with healthy RSRP. If not: no grants decoded at all, which looks like a PDCCH problem |
| PT-RS configured without the DMRS port association the UE expects | Nobody | Treats PT-RS resource elements as data, or data as PT-RS | A small, MCS-dependent rate mismatch: fine at QPSK and 16QAM, raised BLER at 64QAM and above, because the PT-RS only appears above the timeDensity threshold (§16.1) |
| DMRS colliding with another signal in the same resource elements -- SSB, CSI-RS, a rate-matching pattern or another UE's DMRS | Nobody at the protocol level | Receives a superposition and estimates a channel that is the sum of two | Failures periodic with the colliding signal: SSB every 20 ms, CSI-RS on its cadence. Periodicity is the tell, and it points at resource planning rather than at DMRS |
maxLength len2 combined with pos2 or pos3 | Some UEs at reconfiguration; others not at all | Undefined. Commonly applies pos1 silently | Rate mismatch on long allocations only, and it differs between UE vendors in the same cell -- which is the clue (§10.1) |
Absent DMRS-DownlinkConfig read by a tool as "unconfigured" | Nobody -- it is an analysis error | Nothing. The UE applied type 1, pos2, len1 correctly | Your model disagrees with the PHY trace by exactly two additional DMRS symbols' worth of resource elements. Check the four absent-case defaults in §8 first |
| Uplink waveform mismatch: gNB correlating a Gold sequence against a low-PAPR DMRS or vice versa | Nobody | The UE transmits correctly; the gNB fails to estimate | Uplink works during random access and fails after RRCSetup, or the reverse. Check msg3-transformPrecoder against transformPrecoder (§14) |
Table 24. DMRS failure modes. Nine of the eleven are detected by nobody, which is the defining property of this area: there is no negotiation, no acknowledgement and no error code anywhere in the DMRS chain. The rightmost column is where the diagnostic value is.
20.1 A decision procedure for a high-BLER cell
- Check whether RSRP and SINR are healthy. If not, this is a coverage, interference or beam problem, not a DMRS one.
- Check whether lowering the MCS helps. A radio problem improves as the MCS falls; a DMRS problem does not improve at all, because the channel estimate is wrong however robustly the data is coded. This test separates the two classes of fault in a couple of minutes.
- Check whether mapping type A and mapping type B behave differently. A split points hard at
dmrs-TypeA-Positionor at one of the two mapping-type-specific configurations being absent or wrong. - Check whether the failures correlate with a TDRA row. Row-correlated 100% failure is an (S, L) problem: either S excludes the DMRS symbol, or the ld you get from S + L indexes a position table row the gNB is not using.
- Check whether the failures correlate with layer count. If single-layer grants work and multi-layer grants do not, look at the antenna port field and the CDM-groups-without-data value.
- Check whether the failures are periodic. Periodicity means collision, and the period identifies the colliding signal.
21. Configuration Reference (ASN.1)
Abridged from TS 38.331; ... marks omitted extension markers and unrelated fields. The comments on the OPTIONAL fields are the field descriptions' absent-case behaviour, which as §8 argued is the part that matters most:
DMRS-DownlinkConfig ::= SEQUENCE {
dmrs-Type ENUMERATED {type2} OPTIONAL,
-- Need S; absent = DMRS type 1
dmrs-AdditionalPosition ENUMERATED {pos0, pos1, pos3} OPTIONAL,
-- Need S; absent = pos2
maxLength ENUMERATED {len2} OPTIONAL,
-- Need S; absent = len1, i.e.
-- single-symbol DMRS only
scramblingID0 INTEGER (0..65535) OPTIONAL,
-- Need S; absent = N_ID_cell
scramblingID1 INTEGER (0..65535) OPTIONAL,
-- Need S; absent = N_ID_cell
phaseTrackingRS SetupRelease { PTRS-DownlinkConfig }
OPTIONAL,
-- Need M
...
}
-- and where it hangs:
PDSCH-Config ::= SEQUENCE {
dataScramblingIdentityPDSCH INTEGER (0..1023) OPTIONAL,
dmrs-DownlinkForPDSCH-MappingTypeA
SetupRelease { DMRS-DownlinkConfig } OPTIONAL,
dmrs-DownlinkForPDSCH-MappingTypeB
SetupRelease { DMRS-DownlinkConfig } OPTIONAL,
...
}Listing 1. DMRS-DownlinkConfig and its two homes. Note dataScramblingIdentityPDSCH: a separate identity for the PDSCH data scrambling, unrelated to the DMRS scrambling identities, and a frequent source of confusion when both appear in the same configuration dump.
DMRS-UplinkConfig ::= SEQUENCE {
dmrs-Type ENUMERATED {type2} OPTIONAL,
-- Need S; absent = type 1
dmrs-AdditionalPosition ENUMERATED {pos0, pos1, pos3} OPTIONAL,
-- Need S; absent = pos2
phaseTrackingRS SetupRelease { PTRS-UplinkConfig }
OPTIONAL,
maxLength ENUMERATED {len2} OPTIONAL,
-- Need S; absent = len1
transformPrecodingDisabled SEQUENCE {
scramblingID0 INTEGER (0..65535) OPTIONAL,
scramblingID1 INTEGER (0..65535) OPTIONAL,
...
} OPTIONAL,
-- Need R
transformPrecodingEnabled SEQUENCE {
nPUSCH-Identity INTEGER (0..1007) OPTIONAL,
sequenceGroupHopping ENUMERATED {disabled} OPTIONAL,
sequenceHopping ENUMERATED {enabled} OPTIONAL,
...
} OPTIONAL,
-- Need R
...
}Listing 2. DMRS-UplinkConfig. The two waveform substructures are alternatives, selected by transformPrecoder in PUSCH-Config rather than by which one is present -- so a configuration can legitimately carry both, and reading the wrong one gives a plausible wrong answer. Note that sequenceGroupHopping ENUMERATED {disabled} follows the same absence convention: absent means hopping is enabled.
PTRS-DownlinkConfig ::= SEQUENCE {
frequencyDensity SEQUENCE (SIZE (2)) OF INTEGER (1..276)
OPTIONAL,
-- Need S; absent = K_PT-RS 2 for all
-- scheduled bandwidths
timeDensity SEQUENCE (SIZE (3)) OF INTEGER (0..29)
OPTIONAL,
-- Need S; absent = L_PT-RS 1 for all MCS
epre-Ratio INTEGER (0..3) OPTIONAL,
-- Need S; absent = 0
resourceElementOffset ENUMERATED {offset01, offset10, offset11}
OPTIONAL,
-- Need S; absent = offset00
...
}
-- The two density fields are THRESHOLD LISTS, not densities:
-- frequencyDensity = { N_RB0, N_RB1 } two PRB-count thresholds
-- timeDensity = { MCS1, MCS2, MCS3 } three MCS thresholds
-- The actual K_PT-RS and L_PT-RS are derived per grant by comparing
-- the scheduled bandwidth and MCS against them (TS 38.214 cl. 5.1.6.3).Listing 3. PTRS-DownlinkConfig. The comment at the bottom is the point worth carrying away: these fields do not set the density, they set the thresholds from which the density is derived per grant. A log that prints frequencyDensity as though it were a density is printing a threshold.
22. Three More Worked Calculations
22.1 A DMRS sequence initialisation, both nSCID values
Worth doing once by hand, because it shows how completely the two identities diverge and why a mismatch produces noise rather than degradation:
Given: N_symb_slot = 14, slot n_s = 7, DMRS symbol l = 2, scramblingID0 = 231, scramblingID1 = 872.
The common factor first:
14 x 7 + 2 + 1 = 101
2^17 x 101 = 131 072 x 101 = 13 238 272
nSCID = 0, N_ID = 231:
c_init = ( 13 238 272 x (2 x 231 + 1) + 2 x 231 + 0 ) mod 2^31
= ( 13 238 272 x 463 + 462 ) mod 2^31
= ( 6 129 319 936 + 462 ) mod 2 147 483 648
= 6 129 320 398 - 2 x 2 147 483 648
= 1 834 353 102 = 0x6D5601CE
nSCID = 1, N_ID = 872:
c_init = ( 13 238 272 x (2 x 872 + 1) + 2 x 872 + 1 ) mod 2^31
= ( 13 238 272 x 1745 + 1745 ) mod 2^31
= ( 23 100 784 640 + 1745 ) mod 2 147 483 648
= 23 100 786 385 - 10 x 2 147 483 648
= 1 625 949 905 = 0x60EA06D1
Two initialisations, and the Gold sequence they seed diverges within a few bits. The low bits are 2 * N_ID + n_SCID -- 462 and 1745, visible as 0x1CE and 0x6D1 -- which is a useful check when you are verifying a sequence generator: the bottom 11 bits of c_init should equal 2 x N_ID + n_SCID for any N_ID below 1024.
22.2 Getting resource elements back with one CDM group
The most under-used lever in DMRS configuration is the CDM-groups-without-data value, because it costs nothing and the scheduler controls it per grant:
Given: 100 PRB, 14-symbol allocation, type 1, pos1 (two DMRS symbols), single layer, QPSK (2 bits per RE), code rate 0.5.
Total REs = 100 x 12 x 14 = 16 800
2 CDM groups without data -- the defensive setting:
DMRS REs = 2 symbols x 100 x 12 = 2 400
data REs = 14 400
TB bits = 14 400 x 2 x 0.5 = 14 400 bits
1 CDM group without data -- correct for a single layer with no co-scheduled UE:
DMRS REs = 2 symbols x 100 x 6 = 1 200
data REs = 15 600
TB bits = 15 600 x 2 x 0.5 = 15 600 bits
8.3% more transport block for free, on every single-layer grant, with identical pilot density and identical estimation quality. The only thing given up is the ability to co-schedule another UE in the other CDM group of the same DMRS symbol.
With type 2 the gap is wider still: 1 group of 4 REs against 3 groups of 12 gives 16 000 data REs against 14 400, or 11.1% more.
22.3 PT-RS overhead at two densities
Given: 100 PRB, 12-symbol allocation (S = 2, L = 12), one DMRS symbol at l = 2. Total REs = 100 x 12 x 14 = 16 800 in the slot, of which the allocation holds 100 x 12 x 12 = 14 400.
Worst case, K_PT-RS = 2 and L_PT-RS = 1 -- 256QAM on a mid-width allocation:
PT-RS PRBs = 100 / 2 = 50
PT-RS symbols = 11 (every symbol from l = 3 to l = 13)
PT-RS REs = 50 x 11 x 1 = 550
550 / 14 400 = 3.8%
Cheapest case, K_PT-RS = 4 and L_PT-RS = 4 -- 64QAM on a wide allocation:
PT-RS PRBs = 100 / 4 = 25
PT-RS symbols = 2 (l = 6 and l = 10)
PT-RS REs = 25 x 2 x 1 = 50
50 / 14 400 = 0.35%
So PT-RS ranges from negligible to about half the cost of one additional DMRS position, and is never the dominant overhead -- which is why it is reasonable to configure it generously in FR2 and let the thresholds switch it off where it is not needed.
23. Illustrative Message Traces
Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.
All five traces belong to one scenario: a 100 MHz TDD cell at 30 kHz SCS, N_ID_cell 231, DDDSU with a 2.5 ms period, and one UE with C-RNTI 0x5A2C. The pdsch-TimeDomainAllocationList is the eight-row list of the companion 32 SLIV and Time Domain Allocation document, so TDRA field value 2 resolves to k0 0, mapping type A, SLIV 53, which is S = 2 and L = 12. The first four traces are within a few milliseconds of each other in frame SFN 618; the last is a separate incident, days later, after a configuration change.
23.1 The configuration, as decoded from RRCReconfiguration
RRCReconfiguration
secondaryCellGroup / spCellConfig / spCellConfigDedicated
downlinkBWP-ToAddModList[0] / bwp-Dedicated / pdsch-Config
dmrs-DownlinkForPDSCH-MappingTypeA ..... setup
dmrs-Type ............................ absent -- type 1
dmrs-AdditionalPosition .............. pos1
maxLength ............................ absent -- len1
scramblingID0 ........................ 231
scramblingID1 ........................ 872
phaseTrackingRS ...................... absent -- no PT-RS
dmrs-DownlinkForPDSCH-MappingTypeB ..... setup
dmrs-Type ............................ absent -- type 1
dmrs-AdditionalPosition .............. pos0
maxLength ............................ absent -- len1
scramblingID0 ........................ 231
scramblingID1 ........................ 872
phaseTrackingRS ...................... absent
dataScramblingIdentityPDSCH ............ 231 -- NOT a DMRS field
uplinkBWP-ToAddModList[0] / bwp-Dedicated / pusch-Config
transformPrecoder ...................... absent -- CP-OFDM
dmrs-UplinkForPUSCH-MappingTypeA ....... setup
dmrs-AdditionalPosition .............. pos1
transformPrecodingDisabled
scramblingID0 ...................... 231
scramblingID1 ...................... 872
-- Resolved configuration, both directions:
-- type A: type 1, pos1, len1 -> DMRS at symbols {2, 11} for ld 14
-- type B: type 1, pos0, len1 -> DMRS at symbol S only
-- antenna port field width: type1 + len1 -> 4 bits (Table 7.3.1.2.2-1)Listing 4. One UE's complete DMRS configuration. Note that four fields per structure are absent and every one of them is significant: absent dmrs-Type is type 1, absent maxLength is len1. Note also dataScramblingIdentityPDSCH = 231 sitting next to scramblingID0 = 231 -- two different identities that happen to share a value, which is exactly how they get conflated.
23.2 A DCI antenna port field, decoded to ports and CDM groups
14:07:22.4180 [PHY-DL] PDCCH candidate hit, SFN 618 slot 12
CORESET 1 AL 4 candidate 1 DCI size 41 bits
CRC descrambled with C-RNTI 0x5A2C -> DCI format 1_1
14:07:22.4180 [MAC-DL] DCI 1_1 fields (DMRS-relevant only)
Time domain resource assignment . 2
-> list entry [2]: k0 0, typeA, SLIV 53 -> S=2 L=12
Antenna port(s) ................. 10 -- 4 bits
-> Table 7.3.1.2.2-1, dmrsType1 + maxLength1
-> number of DMRS CDM groups without data = 2
-> DMRS ports = 0, 1, 2, 3
-> absolute ports 1000, 1001, 1002, 1003
-> 4 layers
DMRS sequence initialization .... 0 -- nSCID = 0
-> N_ID = scramblingID0 = 231
Modulation and coding scheme .... 24 -- 256QAM
Antenna port to CDM group map:
port 1000 CDM group 0 k = 0,2,4,6,8,10 wf [+1,+1]
port 1001 CDM group 0 k = 0,2,4,6,8,10 wf [+1,-1]
port 1002 CDM group 1 k = 1,3,5,7,9,11 wf [+1,+1]
port 1003 CDM group 1 k = 1,3,5,7,9,11 wf [+1,-1]
-- 2 CDM groups without data -> all 12 subcarriers of each DMRS symbol
-- are reserved. No PDSCH in symbol 2 or symbol 11 for this UE.Listing 5. The antenna port field is the only place the layer count appears. Value 10 in a 4-bit field is the maximum for type 1 single-symbol: four ports, two CDM groups, the whole DMRS symbol reserved. Compare field value 2, which also gives two layers but keeps them in one CDM group and leaves six subcarriers per PRB for data.
23.3 The DMRS symbol position derivation
14:07:22.4181 [PHY-DL] DMRS position derivation, SFN 618 slot 12
inputs
mappingType ........... typeA
S ..................... 2 (from SLIV 53)
L ..................... 12 (from SLIV 53)
dmrs-TypeA-Position ... pos2 (from MIB)
dmrs-AdditionalPosition pos1 (mapping type A config)
maxLength ............. len1
step 1: l0 = dmrs-TypeA-Position = 2
(slot-referenced, NOT allocation-referenced)
step 2: ld = S + L = 2 + 12 = 14
(type A counts from the first symbol of the SLOT)
step 3: Table 7.4.1.1.2-3, row ld=14, column pos1
-> l-bar = { l0, 11 } = { 2, 11 }
step 4: single-symbol, so l = l-bar
result: DMRS in symbols 2 and 11
12 REs per PRB in each -> 24 REs per PRB total
allocation is 12 x 12 = 144 REs per PRB
overhead = 24 / 144 = 16.7%
14:07:22.4181 [PHY-DL] rate matching: 273 PRB x (144 - 24) = 32 760
data REs, 4 layers, 256QAM, R 0.85
-> TBS 890 880 bits (before quantisation)
14:07:22.4186 [PHY-DL] PDSCH CRC pass, HARQ 6, 4 layers
-- If ld had been read as L = 12 instead of S + L = 14, step 3 would
-- have given { l0, 9 } = { 2, 9 }. The UE would look for the second
-- DMRS in symbol 9 while the gNB transmits it in symbol 11, and both
-- the channel estimate and the rate matching would be wrong.Listing 6. The derivation in full, including the ld = S + L step that §9 flags as the commonest error. The comment at the bottom is the counterfactual: one wrong input, two wrong DMRS symbols, and a transport block that fails CRC with no indication of why.
23.4 An overhead accounting, printed by the scheduler
14:07:22.5000 [SCHED] DL overhead audit, SFN 618, C-RNTI 0x5A2C
allocation ........ 273 PRB, S 2, L 12, typeA
REs in allocation . 273 x 12 x 12 = 39 312
DMRS type 1, pos1, len1, symbols {2, 11}
CDM groups w/o data 2 -> 12 REs per PRB per symbol
REs ............. 273 x 12 x 2 = 6 552 (16.67%)
PT-RS ............. absent, 0 REs (0.00%)
CSI-RS this slot .. 0 REs (0.00%)
data REs .......... 32 760 (83.33%)
4 layers, 256QAM (8 bits/RE), code rate 0.8525
-> TBS ............ 892 928 bits
hypothetical, pos0: DMRS 3 276 REs (8.33%)
data REs 36 036 -> TBS 982 016 bits (+9.98%)
hypothetical, pos3: DMRS 13 104 REs (33.33%)
data REs 26 208 -> TBS 714 240 bits (-20.0%)
-- The three hypotheticals differ only in dmrs-AdditionalPosition and
-- span a 37% range in transport block size. Nothing else changes:
-- same PRBs, same layers, same MCS, same code rate.Listing 7. The same accounting §18 does by hand, as a scheduler might print it. The two hypotheticals at the bottom are the argument for getting the Doppler assessment right: the parameter is worth about a fifth of the cell's downlink capacity in either direction. Note that pos1 here uses a 12-symbol allocation, so the percentages differ from the 14-symbol figures in §18.
23.5 A scrambling identity mismatch
09:41:07.2210 [PHY-DL] PDCCH hit, SFN 204 slot 4, C-RNTI 0x5A2C
DCI 1_1, TDRA 2, antenna port 2, MCS 19, NDI 1, HARQ 0
09:41:07.2214 [PHY-DL] PDSCH CRC **FAIL**, HARQ 0, RV 0
09:41:07.2214 [PHY-DL] DMRS correlation peak .... 0.04
(expected > 0.6 at this SINR)
09:41:07.2214 [PHY-DL] estimated SNR from DMRS .. -2.1 dB
09:41:07.2216 [PHY-UL] PUCCH NACK, HARQ 0
09:41:07.2610 [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 2
09:41:07.3010 [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 3
09:41:07.3410 [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 1 -> TB discarded
09:41:07.4000 [RRC-UL] MeasurementReport, servingCellMeasurements
rsrp ............... 68 -- about -88 dBm. HEALTHY
rsrq ............... 51
sinr ............... 74 -- about +18 dB. HEALTHY
09:41:08.1000 [SCHED] outer loop: BLER 100% over 40 grants
MCS 19 -> 14 -> 9 -> 4 -> 0
09:41:09.4000 [SCHED] BLER still 100% at MCS 0 over 60 grants
-- MCS reduction has produced NO improvement
09:41:10.0000 [PHY-DL] configuration audit
signalled scramblingID0 ......... 231
transmitter DMRS N_ID in use .... 872
-- the transmitter is using the scramblingID1 value
-- while the DCI signals nSCID = 0
-- Signature: 100% BLER, no response to MCS reduction, healthy RSRP and
-- SINR, DMRS correlation peak at the noise floor. SSB-based measurement
-- is unaffected because SSB has its own sequence generation, which is
-- exactly why the radio looks fine and nothing works.Listing 8. The §13.1 failure as it presents. Three things make it identifiable: the correlation peak at the noise floor, the complete non-response to MCS reduction, and the healthy RSRP alongside 100% BLER. Any one of those alone could be something else; together they are diagnostic. Note the outer loop faithfully driving the MCS to zero and achieving nothing -- see the companion 34 Link Adaptation document for why that loop cannot recover from a reference-signal fault.
24. Release Deltas: Rel-15 to Rel-18
| Release | Change | Why it matters when reading DMRS in logs |
|---|---|---|
| Rel-15 | Configuration types 1 and 2; single and double symbol; dmrs-AdditionalPosition pos0 to pos3; up to 8 ports (type 1) and 12 (type 2); scramblingID0 / scramblingID1 and nSCID; front-loaded mapping for both mapping types; PT-RS; low-PAPR DMRS for DFT-s-OFDM | The baseline. §3 through §18 are almost entirely Rel-15, and most deployed cells use nothing beyond it |
| Rel-16 | Separate DMRS configurations for the compact DCI formats: dmrs-DownlinkForPDSCH-MappingTypeA-DCI-1-2-r16 and the type B and uplink equivalents | A UE can have four downlink DMRS configurations at once: two mapping types times two DCI format families. Establish which format a grant used before applying a configuration to it |
| Rel-16 | Multi-TRP transmission with two DMRS port groups and distinct nSCID per TRP | Two channel estimates in one grant, from two physical locations. nSCID switching between grants is normal here rather than suspicious (§13.2) |
| Rel-17 | DMRS bundling for PUSCH and PUCCH repetition -- dmrs-BundlingPUSCH-Config-r17. The UE maintains phase continuity across a bundle of repetitions so the gNB can jointly estimate the channel from all of their DMRS | The largest interpretive change since Rel-15: DMRS from different transmissions are now combinable. Several dB of coverage, at the cost of a UE requirement to hold phase and power constant across the bundle -- which it cannot do across a frequency hop |
| Rel-17 | PT-RS for the 480 and 960 kHz numerologies in the 52.6 to 71 GHz range, and new PT-RS patterns for DFT-s-OFDM | Phase noise dominates at those carriers, so PT-RS density rises sharply and the overhead calculations in §22.3 no longer bound it |
| Rel-17 | Enhancements to dmrs-AdditionalPosition handling for PUSCH repetition and TB processing over multiple slots | The position table applies per actual repetition, so a nominal repetition split at a slot boundary can carry different DMRS counts in its two halves |
| Rel-18 | Increased DMRS port count for MU-MIMO -- up to 24 orthogonal ports, via longer frequency-domain cover codes for type 1 and a doubled type 2 structure | The port-to-CDM-group mapping tables of §6 are extended, and the antenna port field widens again. A Rel-15 decoder reading a Rel-18 grant will mis-resolve the port list |
| Rel-18 | 8-port uplink SRS and the associated PUSCH DMRS for 8Tx UEs | Uplink DMRS port counts above 4 become real, having been theoretical since Rel-15 |
| Rel-18 | Unified TCI framework applying to DMRS as well as to other reference signals | Which beam a DMRS traverses becomes an explicitly indicated property rather than an implicit one -- relevant to §1's argument, and it changes what a beam-related failure looks like |
Table 25. DMRS changes by release. Every one is gated on UE capability -- the companion 26 UE Capability document covers confirming that a feature is available before reading a log as though it were. Note that Rel-15 covers everything most cells actually do; the later entries matter mostly when a specific feature is switched on.
25. Reading DMRS in Logs: A Checklist
- Establish the four absent-case defaults before anything else. Find
dmrs-DownlinkForPDSCH-MappingTypeAand-MappingTypeBin the most recentRRCReconfigurationand write out the resolved configuration, not the signalled one: absentdmrs-Typeis type 1, absentdmrs-AdditionalPositionis pos2, absentmaxLengthis len1, absentscramblingID0is N_ID_cell (§8). Half the analysis errors in this area happen at this step. - Find
dmrs-TypeA-Positionin the MIB, and check it againstServingCellConfigCommon. They must agree. If they do not, every mapping type A grant will fail while type B grants succeed, and the failure starts at the reconfiguration rather than at attach (§8.2). - For each grant, derive ld before touching the position table. For mapping type A, ld = S + L, counted from the first symbol of the slot. For mapping type B, ld = L. Getting this wrong moves the additional positions and is completely silent (§9).
- Read the DMRS symbol positions out of TS 38.211 Table 7.4.1.1.2-3 using ld and the resolved
dmrs-AdditionalPosition, and remember that everything after l0 in the table is an absolute slot symbol index, not an offset (§10). - Decode the antenna port field to a port list and a CDM-groups-without-data value. Use the table selected by
dmrs-TypeandmaxLength-- the field is 4, 5, 5 or 6 bits wide depending on them, so the wrong table gives a plausible wrong answer (§6). The layer count is the length of the port list and appears nowhere else. - Compute the pilot resource elements per PRB and check them against the reported transport block size. Number of DMRS symbols times (6, 4, 8 or 12 REs depending on type and groups without data). If your TBS calculation and the log's disagree, one of the previous four steps is wrong (§18, §23.4).
- When BLER is high, check RSRP and SINR first, then check whether lowering the MCS helps. Healthy RSRP with high BLER means the reference-signal or rate-matching chain, not the radio; and a radio problem improves as the MCS falls while a DMRS problem does not improve at all. Those two comparisons route the whole investigation (§20).
- Split the failures by mapping type, by TDRA row, by layer count and by period. Each split points at a different entry in §20: mapping type at
dmrs-TypeA-Position, TDRA row at an (S, L) or ld problem, layer count at the antenna port field, periodicity at a collision with SSB or CSI-RS. - For uplink, establish the waveform before anything else.
transformPrecoderdecides which sequence family the DMRS comes from, andmsg3-transformPrecodermay differ from it. Uplink that works during random access and fails afterwards is this (§14). - For PT-RS, check the scheduled MCS and PRB count against the thresholds before concluding it is missing.
timeDensityandfrequencyDensityare threshold lists, not densities, and most FR1 grants legitimately carry no PT-RS at all (§16.1).
26. Glossary
| Term | Expansion | Meaning in this document |
|---|---|---|
| DMRS | Demodulation Reference Signal | The pilot carried inside a physical channel, in the same beam and with the same precoder as the data, whose only purpose is to let the receiver estimate the channel it needs in order to demodulate that channel |
| CRS | Cell-specific Reference Signal | The LTE cell-wide pilot that NR does not have, because a cell-wide pilot cannot represent a per-UE beam (§1.1) |
| Front-loaded | -- | The first DMRS symbol placed at the start of the allocation, so decoding can begin before the transmission ends. A latency choice, not an estimation choice (§2) |
| CDM group | Code Division Multiplexing group | A set of resource elements shared by two, and with double-symbol DMRS four, antenna ports, separated by orthogonal cover codes rather than by occupying different resource elements |
| OCC | Orthogonal Cover Code | The length-2 code ([+1,+1] or [+1,−1]) applied across the two resource elements of a CDM group pair in frequency, or across the two symbols of a double-symbol DMRS in time |
| Configuration type 1 | -- | Comb-2 frequency mapping, two CDM groups, 6 REs per group per PRB, up to 4 ports single-symbol and 8 double-symbol (§3) |
| Configuration type 2 | -- | Adjacent-pair frequency mapping, three CDM groups, 4 REs per group per PRB, up to 6 ports single-symbol and 12 double-symbol (§4) |
| l0 | -- | The first DMRS symbol position. dmrs-TypeA-Position for mapping type A, referenced to the slot boundary; 0 for mapping type B, referenced to the start of the allocation |
| ld | -- | The duration used to index the position tables. S + L for mapping type A, L for mapping type B. The commonest source of wrong answers (§9) |
| nSCID | -- | The 1-bit DCI field selecting scramblingID0 or scramblingID1 for the DMRS sequence of this grant (§13.2) |
| CDM groups without data | -- | The DCI-signalled count of CDM groups whose resource elements carry no PDSCH for this UE, and which the UE must therefore exclude from rate matching. 1, 2 or 3 (§5.3) |
| Antenna port | -- | Defined by its reference signal, not by hardware: two signals share a port if the channel of one can be inferred from the channel of the other. In practice a DMRS port is a spatial layer |
| PT-RS | Phase Tracking Reference Signal | One resource element per PRB per symbol, at configured densities, tracking the common phase error caused by oscillator phase noise. Associated with one DMRS port (§16) |
| Coherence time, T_c | -- | The interval over which a channel estimate stays usable. Approximately 0.423 / f_d. The quantity that decides dmrs-AdditionalPosition (§11) |
| Low-PAPR sequence | -- | The Zadoff-Chu-based or computer-generated DMRS sequence used with transform precoding, chosen to preserve the single-carrier waveform's peak-to-average power ratio (§14) |
27. References
- 3GPP TS 38.211 -- Physical channels and modulation. Clause 4.4 (antenna port numbering), clause 5.2.1 (the length-31 Gold sequence), clause 6.4.1.1 (PUSCH DMRS: 6.4.1.1.1 for the CP-OFDM sequence, 6.4.1.1.1.2 for the low-PAPR sequence with transform precoding, 6.4.1.1.2 and 6.4.1.1.3 for the mapping and the position tables), clause 6.4.1.2 (PUSCH PT-RS), clause 6.4.1.3 (PUCCH DMRS, including Table 6.4.1.3.3.2-1 for the format 3 and 4 symbol positions), clause 6.4.1.4 (SRS), clause 7.4.1.1 (PDSCH DMRS: 7.4.1.1.1 for the sequence and the type 1 and type 2 mappings, 7.4.1.1.2 for the symbol positions and Tables 7.4.1.1.2-3 and 7.4.1.1.2-4), clause 7.4.1.2 (PDSCH PT-RS), clause 7.4.1.3 (PDCCH DMRS), clause 7.4.1.4 (PBCH DMRS, including 7.4.1.4.1 for the sequence initialisation and i_SSB), clause 7.4.1.5 (CSI-RS), clause 7.4.2 (the SS/PBCH block).
- 3GPP TS 38.214 -- Physical layer procedures for data. Clause 5.1.6.2 (DMRS reception procedure and the CDM-groups-without-data interpretation), clause 5.1.6.3 (PT-RS reception, and Tables 5.1.6.3-1 and 5.1.6.3-2 for the time and frequency density derivation), clause 5.1.2.1 (the (S, L) validity tables that the DMRS position constrains), clause 6.2.2 and 6.2.3 (uplink DMRS and PT-RS procedures), clause 5.1.3 (modulation and TBS determination, which consumes the DMRS RE count).
- 3GPP TS 38.212 -- Multiplexing and channel coding. Clause 7.3.1.1 (DCI formats 0_0, 0_1, 0_2 -- the uplink antenna port, DMRS sequence initialisation and PTRS-DMRS association fields), clause 7.3.1.2 (DCI formats 1_0, 1_1, 1_2 -- the downlink equivalents, and Tables 7.3.1.2.2-1 to 7.3.1.2.2-4 for the antenna port field code points).
- 3GPP TS 38.331 -- RRC protocol specification.
DMRS-DownlinkConfig,DMRS-UplinkConfig,PTRS-DownlinkConfig,PTRS-UplinkConfig,PDSCH-Config,PUSCH-Config,ControlResourceSet(pdcch-DMRS-ScramblingID,precoderGranularity),PUCCH-FormatConfig(additionalDMRS),MIB(dmrs-TypeA-Position),ServingCellConfigCommon,RACH-ConfigCommon(msg3-transformPrecoder). - 3GPP TS 38.306 -- UE radio access capability parameters, for the capability gating on configuration type 2,
maxLengthlen2, PT-RS, DMRS bundling and the Rel-18 extended port counts. - 3GPP TS 38.300 -- NR overall description, clause 5.1 for the physical-layer context and clause 9.2 for the beam management that §1 argues makes per-channel DMRS unavoidable.
Companion documents in this set
- 02 Radio Frame Structure -- the resource grid every figure in this document is drawn on, the slot and symbol numbering l0 indexes into, the SS/PBCH block whose pilot layer §15.2 dissects, and
dmrs-TypeA-Positionas it arrives in the MIB. - 03 Random Access -- the MSG3 grant, whose DMRS structure depends on
msg3-transformPrecoderand may differ from every subsequent PUSCH (§14), and the SSB-to-RACH-occasion association that PBCH DMRS makes possible (§15.2). - 05 HARQ --
k1and the N1 processing time, which is the latency budget front-loading exists to protect (§2), and the retransmission behaviour every failure in §20 produces. - 06 Channel Mapping -- how a transport block reaches PDSCH, and the rate matching that a wrong DMRS resource-element count destroys (§5.3).
- 08 Scheduling -- the DCI formats field by field, of which this document covers only the antenna port field, the DMRS sequence initialisation bit and the PTRS-DMRS association.
- 18 MIB and SIB1 IEs -- the MIB payload in full, including the single
dmrs-TypeA-Positionbit that §8.2 depends on. - 20 Measurements and Events -- CSI-RS as a measurement resource, and the RSRP and SINR reporting that stays healthy through every DMRS failure in §20.
- 26 UE Capability -- confirming that type 2,
maxLengthlen2, PT-RS, DMRS bundling and the Rel-18 port extensions are actually supported before reading a log as though they were. - 30 CORESET and Search Space --
ControlResourceSet,precoderGranularityandpdcch-DMRS-ScramblingID, whose reference-signal consequences §15.1 covers and whose IEs that document owns. - 31 PDCCH Blind Decoding -- why a change in
dmrs-TypeormaxLengthchanges the DCI size (§6.1), and why a DCI-size mismatch produces total silence rather than a detectable error. - 32 SLIV and Time Domain Allocation -- S, L and the SLIV encoding; mapping type A versus type B from the allocation side; and the S ∈ {0, 1, 2, 3} restriction that exists precisely so that a type A allocation contains its own DMRS symbol (§9.1).
- 34 Link Adaptation -- the outer loop that responds to a reference-signal fault by cutting the MCS, achieves nothing, and thereby converts a DMRS problem into an apparent coverage problem (§11, §23.5).
- 35 Physical Channels -- where PDSCH, PUSCH, PDCCH and PUCCH sit in the resource grid, the PUCCH formats whose DMRS §15.3 tabulates, and the waveform choice that §14 turns into two different uplink DMRS designs.