5G NR · Link adaptation & TBS

UL MCS & Transport Block Size

One 5-bit MCS index sets the modulation and code rate; a precise five-step procedure then turns "how many resource elements" into an exact bit count. This is the whole machine, animated — the MCS tables (incl. uplink-only π/2-BPSK), the Ninfo chain, both quantisation branches with the real lookup table, and the LDPC code-block segmentation that follows. TS 38.214 §5.1.3 / §6.1.4 & TS 38.212 §5.2.2.

5TBS steps
π/2-BPSKUL-only
BG1/BG2LDPC graphs
38.214§5.1.3.2
REs × code rate × Qm × layers → quantise → TBS
1 The index

MCS tables — modulation & code rate

The 5-bit MCS index maps to a modulation order Qm and target code rate R (given ×1024). The 256QAM table reaches higher peaks; the transform-precoding table adds π/2-BPSK (Qm=1) at the bottom for deep coverage. Indices 28–31 (64QAM) / 27–31 (256QAM) are reserved for retransmissions — modulation is implied, no new TBS. Pick a row; it feeds the engine below.

MCSModulationQmR×1024RSpec eff

Spectral efficiency curve

Selected
SE = Qm·R
2 The machine

The TBS engine — all five steps

Set the resources, press Compute, and watch the procedure execute one stage at a time — each formula populating with the live numbers exactly as TS 38.214 §5.1.3.2 prescribes.

Transport Block Size
TS 38.214 5.1.3.2
bits
3 The fork

Quantisation — two branches

Step 4 splits on Ninfo. Small blocks (≤ 3824) are snapped to a fixed table (Table 5.1.3.2-1, 93 entries) so the smallest TBS ≥ N′info is chosen. Large blocks use a byte-aligned formula. The current Ninfo lights the branch it takes.

Branch ①   Ninfo ≤ 3824

n = max(3, ⌊log₂ Ninfo⌋ − 6)
N′info = max(24, 2ⁿ·⌊Ninfo/2ⁿ⌋)
TBS = smallest table value ≥ N′info
idxTBSidxTBS

Branch ②   Ninfo > 3824

n = ⌊log₂(Ninfo−24)⌋ − 5
N′info = max(3840, 2ⁿ·round((Ninfo−24)/2ⁿ))
R ≤ 1/4 → C = ⌈(N′+24)/3816⌉, TBS = 8C·⌈(N′+24)/8C⌉ − 24
N′ > 8424 → C = ⌈(N′+24)/8424⌉, same form
else → TBS = 8·⌈(N′+24)/8⌉ − 24
4 After the TBS

LDPC base graph & code-block segmentation

The transport block gets a 24-bit CRC, then — if it is bigger than the LDPC max code-block size — it is segmented into equal code blocks, each with its own 24-bit CRC. Which graph and size depend on the TBS and code rate (TS 38.212 §7.2.2 & §5.2.2).

Base graph
Max CB size Kcb
B = TBS + 24
Code blocks C
Base-graph selection (38.212 7.2.2)BG2 if (TBS ≤ 292) or (TBS ≤ 3824 & R ≤ 0.67) or (R ≤ 0.25); else BG1.
Kcb = 8448 (BG1) / 3840 (BG2). C = ⌈B / (Kcb−L)⌉
5 Put it together

One grant, TBS to code blocks

6 Knowledge check

Test yourself