Modulation — QPSK to 1024QAM — bits per resource element

5G Systems Notes · Concept map · Modulation Route · Hierarchy · Index · All concepts · Hub

Bits into a codeword

Where it sits

Sits atLevel 4 of the hierarchy · Bits into a codeword · explained
The 6 of them
BPSK — 1 bit per symbol — as π/2-BPSK, uplink only, where the peak-to-average ratio matters most
QPSK — 2 bits per symbol
16QAM — 4 bits per symbol
64QAM — 6 bits per symbol
256QAM — 8 bits per symbol
1024QAM — 10 bits per symbol — Release 17, downlink only
Learn firstResource element — 4 concepts in the full chain, see the paths
UnlocksPT-RS · Layer · EVM · MCS
Primary clauseTS 38.211 §5.1, Table 7.3.1.2-1
Used innr-pdsch 84 · ref-modulation 16 · index 5 · nr-frame-structure 3 · nr-srs 3 · ref-mimo 2 · ref-signals 1 · ref-system 1
Scanned from the notes at page load and joined with terms.json; nothing on this card is typed by hand.

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

$$ d(i) = \tfrac{1}{\sqrt{2}}\Bigl[\bigl(1 - 2b(2i)\bigr) + j\bigl(1 - 2b(2i+1)\bigr)\Bigr] \tag{1} $$
Equation 1: The QPSK modulation mapper, TS 38.211 clause 5.1.3, quoted exactly. Each bit chooses the sign of one axis - so the real part carries one bit and the imaginary part the other, independently. The 1 over root 2 is the normalisation of section 3.

For 16QAM, quadruplets (clause 5.1.4):

$$ d(i) = \tfrac{1}{\sqrt{10}}\Bigl[\bigl(1-2b(4i)\bigr)\bigl(2-\bigl(1-2b(4i+2)\bigr)\bigr) + j\bigl(1-2b(4i+1)\bigr)\bigl(2-\bigl(1-2b(4i+3)\bigr)\bigr)\Bigr] \tag{2} $$
Equation 2: The 16QAM mapper, TS 38.211 clause 5.1.4. Read the structure rather than the arithmetic: the first bit of each pair chooses the sign, the second chooses whether the magnitude is 1 or 3. That is the recursive pattern every higher order repeats - each new pair of bits subdivides the axis once more.

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$PointsNormalisationNeighbour spacingExtra SNR vs QPSK
QPSK24$1/\sqrt{2}$1.414—
16QAM416$1/\sqrt{10}$0.6327.0 dB
64QAM664$1/\sqrt{42}$0.30913.2 dB
256QAM8256$1/\sqrt{170}$0.15319.3 dB
1024QAM101024$1/\sqrt{682}$0.07725.3 dB
Table 1: The five PDSCH modulation orders of TS 38.211 clause 5.1 and Table 7.3.1.2-1, with the normalisation from the mapper equations and the resulting spacing between neighbouring points. The last column is the extra signal-to-noise ratio each order needs to keep neighbouring points equally distinguishable, computed as twenty log ten of the spacing ratio against QPSK. It is close to 6 dB per doubling of the order, which is the rule of thumb worth remembering.

Check it yourself.

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")
It prints the normalisations 2, 10, 42, 170, 682 — exactly the divisors in TS 38.211 clause 5.1.

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.

Widget not found: sim_status

Before this concept, the hierarchy says to learn the following — the full chain, in order:

To understand Modulation (level 4) you first need 4 other concepts. Read them in this order — everything on one line can be read in any order, but no line before the one above it:
Immediately before Modulation: Resource element.
Keep going — where this sits on the route
Level 4 → 5 · this unlocks
Layer · PT-RS · EVM · MCS level 10
The route is every concept in the folder ordered by level, so nothing here needs anything after it. Computed at page load from terms.json; the same numbering as the route page.
5G Systems Notes · Concept map · Modulation Top · Concept map · Hub