5G NR · Uplink reference signals

PUSCH DM-RS

Demodulation reference signals are the known pilots that let the gNB see the channel and undo what it did to your data. This is the full picture — from what channel estimation even means, through the clever code tricks that pack up to 12 orthogonal pilots into the same resource elements, to a fully worked configuration. TS 38.211 §6.4.1.1.

1 / 2config types
≤12orthogonal ports
CDM+OCCmultiplexing
38.211§6.4.1.1
known pilots · channel estimate · clean data
1 The job, from scratch

What "channel estimation" actually means

Radio waves bounce, fade and rotate. By the time your signal reaches the gNB, every subcarrier has been multiplied by a different complex number H(f) — some attenuated, some phase-shifted. The receiver can't undo that unless it knows H. So the UE inserts known symbols (DM-RS) at fixed places; the gNB compares received vs known to measure H at those points, then interpolates across the gaps. Add pilots and watch the estimate track the true channel.

Estimate error
Pilot spacing
Verdict
2 Putting it to work

Equalisation: undoing the channel

Once the gNB knows H on a subcarrier, recovering the data is one division: d̂ = y / H. Without the DM-RS estimate the constellation is a smeared, rotated mess; with it, the points snap back onto the grid. Toggle the estimate.

3 RE pattern

Type 1 comb vs Type 2 pairs

Type 1 is a comb-2 (every other subcarrier) → 2 CDM groups, up to 4 ports single-symbol. Type 2 uses adjacent subcarrier pairs → 3 CDM groups, up to 6 ports. Double-symbol doubles both. Colours are CDM groups within one RB.

Max ports
CDM groups
DM-RS RE/PRB
Data RE lost
4 The clever bit

How two ports share the same REs

Here's the trick that makes MIMO pilots affordable. Two antenna ports transmit on the identical resource elements — but one uses the cover code [+1, +1] and the other [+1, −1] across a subcarrier pair. To separate them the receiver just correlates: multiply-and-add with one code recovers that port while the other cancels to zero. Watch it happen.

Two ports sit on the same 2 REs. Press Correlate to apply the chosen port's code — the other port's contribution cancels.
5 Doubling up

Single vs double symbol & TD-OCC

Run the same idea across time. A second DM-RS symbol lets a ±1 cover code span the two symbols (TD-OCC), doubling the orthogonal-port budget — Type 1 goes 4 → 8 ports, Type 2 goes 6 → 12. The price is a second symbol of pilot overhead.

6 Putting ports on the grid

Each port = CDM group + FD-OCC + TD-OCC

Every DM-RS antenna port is a unique recipe: which subcarriers (CDM group), which frequency code (FD-OCC), and — for double symbol — which time code (TD-OCC). Pick a port to light up exactly its REs and codes.

7 Time domain

Front-loaded + additional positions

DM-RS is front-loaded so the gNB can start estimating before the whole slot arrives. But a single early estimate goes stale if the channel changes fast (high Doppler) — so extra positions are added deeper into the slot. More positions = better tracking, more overhead.

8 The sequence

Gold vs low-PAPR

With CP-OFDM, DM-RS uses a QPSK pseudo-random Gold sequence (scrambled by nSCID + IDs). With DFT-s-OFDM, it switches to a low-PAPR Zadoff-Chu sequence to keep the single-carrier property the whole point of transform precoding.

Sequence
PAPR
Scrambling
9 Put it together

A full DM-RS configuration

Let's read one real config end to end and count every resource element it costs.

10 Knowledge check

Test yourself