Modulation — QPSK to 1024QAM — bits per resource element
Bits into a codeword
Where it sits
What it is
What it is. Modulation is the step that turns bits into the complex numbers actually placed on resource elements. In 3GPP it is not a concept but a function: TS 38.211 clause 5.1, the modulation mapper, is a set of closed-form equations from bit tuples to points in the complex plane, and every physical channel refers to it rather than defining its own.
For QPSK, pairs of bits become one symbol (clause 5.1.3):
For 16QAM, quadruplets (clause 5.1.4):
The pattern generalises. 64QAM takes hextuplets, 256QAM octuplets, 1024QAM ten at a time (clauses 5.1.5 to 5.1.7). In every case the bits split evenly between the two axes, and within an axis each successive bit halves the remaining interval. The constellation is square, and it is built by bisection.
This is why $Q_m$ is always even for QAM. Half the bits go to the real axis and half to the imaginary one, so an odd order would need an asymmetric constellation. NR never uses one on PDSCH; the only odd case in the standard is π/2-BPSK, an uplink-only option for coverage (clause 5.1.1).
Where the notes use it. PDSCH §6.2 lists the five orders and their $Q_m$; PDSCH §9 multiplies $Q_m$ into the transport block size; PDSCH §10.2 is where a device reports which one it can carry.
Gray mapping — why the bit order is not arbitrary
The assignment of bit patterns to constellation points such that adjacent points differ in exactly one bit. Look at the 16QAM equation: the magnitude bit is $b(4i+2)$ and the sign bit is $b(4i)$, in that arrangement, so the four levels on one axis carry 00, 01, 11, 10 — not 00, 01, 10, 11.
Why it matters. A receiver that mistakes a point almost always mistakes it for a neighbour — noise moves a point a little, not across the constellation. With Gray mapping a neighbour error corrupts one bit; with natural binary ordering it could corrupt several at once. And it matters more because of the LDPC decoder, which works on per-bit log-likelihood ratios: a symbol error that spoils one bit's likelihood is repairable, one that spoils four correlated bits in the same code block much less so.
3GPP never uses the words "Gray mapping". It writes the equations, and the ordering falls out of them — worth knowing, because searching the specification for the term returns nothing.
Normalisation — why every constellation has a strange divisor
The factor in front of each mapper equation — $1/\sqrt{2}$, $1/\sqrt{10}$, $1/\sqrt{42}$, $1/\sqrt{170}$, $1/\sqrt{682}$ — makes the average symbol energy equal to one, whatever the order.
Why it exists. Without it a 256QAM symbol would carry more average power than a QPSK one simply because its outer points sit further out, and changing modulation would change transmitted power. Normalising means the scheduler can change $Q_m$ without touching power control.
The divisors are not arbitrary: for a square $M$-QAM on the odd integers, the mean square distance from the origin is $2(M-1)/3$ — giving 2, 10, 42, 170, 682. Each is the previous times four, plus two.
| Modulation | $Q_m$ | Points | Normalisation | Neighbour spacing | Extra SNR vs QPSK |
|---|---|---|---|---|---|
| QPSK | 2 | 4 | $1/\sqrt{2}$ | 1.414 | — |
| 16QAM | 4 | 16 | $1/\sqrt{10}$ | 0.632 | 7.0 dB |
| 64QAM | 6 | 64 | $1/\sqrt{42}$ | 0.309 | 13.2 dB |
| 256QAM | 8 | 256 | $1/\sqrt{170}$ | 0.153 | 19.3 dB |
| 1024QAM | 10 | 1024 | $1/\sqrt{682}$ | 0.077 | 25.3 dB |
Check it yourself.
It prints the normalisations 2, 10, 42, 170, 682 — exactly the divisors in TS 38.211 clause 5.1.import math for name, M in [("QPSK",4),("16QAM",16),("64QAM",64),("256QAM",256),("1024QAM",1024)]: norm = 2*(M-1)/3 # mean square radius of the odd-integer grid d = 2/math.sqrt(norm) # spacing after normalising to unit mean energy print(f"{name:8} 1/sqrt({norm:5.0f}) d={d:.4f} {20*math.log10(d/(2/math.sqrt(2))):+6.1f} dB")
What each order costs
The rule of thumb is six decibels per doubling of $Q_m$, and the table above is where it comes from: each extra pair of bits halves the spacing on both axes, and halving an amplitude is 6 dB.
Going from QPSK to 256QAM quadruples the rate and costs about 19 dB — a factor of eighty in received power for four times the bits. That is why high orders belong to short links, and why the CQI tables offer a ladder rather than always using the highest.
The cost is not only noise. Everything that blurs a point scales the same way: phase noise rotates the constellation, which is why PT-RS exists; amplifier non-linearity compresses the outer points, exactly where the high orders put their information; and channel estimation error displaces every point, so a denser constellation needs denser DM-RS.
This is the sense in which 1024QAM is a hardware requirement wearing a modulation order's name — and EVM is where that requirement is written down.
Read on
This concept was first written up in ref-modulation, which reads the whole group as one argument.
Before this concept, the hierarchy says to learn the following — the full chain, in order: