5G NR · Uplink Shared Channel

PUSCH Resource Mapping

This is the complete story of how your uplink data finds its place on the air — told from first principles. We start with what a resource element even is, walk the whole transmit chain, place the transmission in time and frequency, choose a waveform, dodge the reference signals, hop for diversity, and finish by sizing the transport block with a fully worked example. Nothing skipped. TS 38.211 §6.3 & TS 38.214 §6.

12×14REs per RB·slot
2waveforms
≤4UL layers
38.214§6
uplink grid hopping across the band · DM-RS & data
1 First principles

What is a resource element?

Before any "mapping", you need the canvas. 5G's air interface is a grid. The smallest cell is a resource element (RE) = one subcarrier × one OFDM symbol. Stack 12 subcarriers = one resource block (RB) in frequency. Lay 14 symbols side by side = one slot in time. So one RB across one slot is a 12 × 14 = 168-RE tile — and the whole job of "resource mapping" is deciding which of those REs carry your data.

Subcarrier spacing
Slot length
Slots / subframe
RB bandwidth
Numerology (TS 38.211 §4.2)Δf = 2μ · 15 kHz ·   1 RB = 12 subcarriers ·   1 slot = 14 OFDM symbols ·   slots per subframe = 2μ
2 The journey

From transport block to antenna

Your data doesn't jump straight onto the grid. It walks a precise chain — each block doing one job. Hover the idea: the transport block gets a CRC, is split into LDPC code blocks, rate-matched to fit the available REs, scrambled, turned into QAM symbols, optionally transform-precoded (the uplink-only DFT spread), mapped to layers, precoded onto antenna ports, and finally — the subject of this lab — mapped to resource elements.

TB + CRC

24-bit CRC

LDPC + CB

segmentation

Rate match

fit the REs

Scramble

+ QAM map

Transform precode

optional DFT

Layer + precode

1–4 layers

RE mapping

this lab

3 Time domain

Placing it in the slot — mapping type & SLIV

First decision: which OFDM symbols? The DCI gives a start symbol S and a length L, packed into one number — the SLIV. Type A is slot-based (DM-RS anchored early); Type B is a mini-slot that starts anywhere for low latency. Drag the sliders and read the live SLIV; the formula below is exactly what the gNB computes.

SLIV
Symbols
DM-RS symbol(s)
Branch used
SLIV (38.214 6.1.2.1)if (L−1) ≤ 7 : SLIV = 14·(L−1) + S   else : SLIV = 14·(14−L+1) + (13−S)
4 Frequency domain

Which resource blocks — Type 0 & Type 1

Second decision: which RBs? Type 1 is one contiguous run, compressed into a single RIV (the only option under transform precoding). Type 0 is an RBG bitmap for non-contiguous CP-OFDM grants. Both shown live.

Type 1 — contiguous (RIV)

RIV
Branch
RIV (N=52)L−1 ≤ ⌊N/2⌋ : N·(L−1)+RBstart · else : N·(N−L+1)+(N−1−RBstart)

Type 0 — RBG bitmap

BWP 52 RB, P=4 → 13 RBGs. Click to toggle (CP-OFDM only).

RBGs on
Allocated RBs
5 The uplink choice

CP-OFDM or DFT-s-OFDM?

The uplink alone can swap waveform. CP-OFDM = flexible, MIMO, higher peak. DFT-s-OFDM = a DFT pre-spread that lowers PAPR for coverage, but single-layer and contiguous only. This choice changes the DM-RS pattern in the grid below, so set it here.

PAPR (≈)
Max layers
Allocation
DM-RS style
Full deep-dive on the waveforms: DFT-s-OFDM vs CP-OFDM and Transform Precoding.
6 The grid

Live RE mapping — data, DM-RS, PT-RS

Now it all lands. PUSCH fills its time-frequency allocation except the REs taken by DM-RS (channel estimation pilots) and PT-RS (phase tracking). Under DFT-s-OFDM the DM-RS takes whole symbols; under CP-OFDM it shares symbols comb-style. The available-RE count feeds the TBS below.

PUSCH data 0
DM-RS 0
PT-RS 0
N′RE/PRB
Avail RE
7 Diversity

Frequency hopping

A narrowband grant stuck in a fade fails. Hopping splits the transmission across the band so no single dip is fatal. Intra-slot moves the second half by an offset; inter-slot alternates by slot number.

8 Capacity

Sizing the transport block

Available REs × code rate × modulation order × layers → quantise → the transport block size, exactly per TS 38.214 §5.1.3.2 (shared UL/DL). Pick an MCS row and resources; every step is shown.

MCS

MCSModQmR×1024SE
Transport Block Size
TS 38.214 5.1.3.2
bits
9 Put it together

One grant, end to end

Let's schedule a real PUSCH and trace every number, so the whole chapter clicks into one picture.

10 Knowledge check

Test yourself