5G NR Physical Layer
TS 38.211 / 38.212 / 38.213 / 38.214 — Intuition + Equations

A deep-dive reference notebook covering the full 5G NR physical layer stack: from basic OFDM numerology through massive MIMO precoding, link adaptation, and O-RAN fronthaul — all grounded in a concrete 100 MHz / 30 kHz / DDDSUUDDD / 32TRX system.

✦ Frame structure & numerology (μ=1)
✦ OFDM generation, CP, windowing
✦ Resource grid, PRB, RE mapping
✦ TDD DDDSUUDDD timing
✦ PDSCH, PDCCH, DCI, DMRS
✦ CSI-RS (32-port), SRS (128 UE)
✦ PUSCH, PUCCH Formats 0–4
✦ SSB, PSS/SSS, PBCH & MIB
✦ Massive MIMO 32TRX, 16-layer
✦ MU-MIMO & PF scheduling (128 UE)
✦ Link adaptation, MCS, HARQ
✦ Type I/II codebook, beamforming
✦ O-RAN FH split 7-2x, eCPRI
✦ End-to-end RACH & data flow
✦ DL/UL throughput calculator (§21)
✦ PDSCH/PUSCH RE calculator (§22)
✦ O-RAN timing params T1a/tAdv (§23)
✦ C/U-plane order of events (§24)
✦ O-RAN channel segregation & eAxC (§25)
⚙ Reference System Parameters (used throughout)
Numerology μ1
SCS30 kHz
Bandwidth100 MHz
N_RB132 PRBs
FFT size4096
Sample rate122.88 Msps
Slot duration0.5 ms
Symbols/slot14
TDD patternDDDSUUDDD
Antenna ports32 TRX
DL layers16
UEs (simultaneous)128
§1
NR Frame Structure & Numerology TS 38.211 §4

5G NR is built on a scalable numerology indexed by \(\mu \in \{0,1,2,3,4\}\). Every time and frequency quantity derives from two atomic time units defined in TS 38.211 §4.1.

Basic time unit \(T_c\) — the smallest period in NR:

\[ T_c = \frac{1}{\Delta f_{\max} \cdot N_{f}} = \frac{1}{480 \times 10^{3}\ \text{Hz} \times 4096} \approx 0.509\ \text{ns} \]

where \(\Delta f_{\max} = 480\) kHz is the maximum SCS and \(N_f = 4096\) is the reference FFT size.

Legacy-compatible time unit \(T_s\) (aligned with LTE 15 kHz reference):

\[ T_s = \frac{1}{\Delta f_{\text{ref}} \cdot N_{f,\text{ref}}} = \frac{1}{15 \times 10^{3}\ \text{Hz} \times 2048} \approx 32.6\ \text{ns} \qquad \Rightarrow \quad T_s = 64\,T_c \]

Numerology Table — all \(\mu\) values TS 38.211 Table 4.3.1-1

\(\mu\) SCS (kHz) Slots / subframe Slots / frame \(T_{\text{slot}}\) (ms) Typical use
0151101.000LTE compat, FR1 data
1302200.500Our system (FR1, 100 MHz)
2604400.250FR1/FR2 data
31208800.125FR2 mmWave data
4240161600.0625FR2 reference signal

Frame Hierarchy (\(\mu = 1\))

\[ \underbrace{10\ \text{ms}}_{\text{1 frame}} \;\supset\; \underbrace{5\ \text{ms}}_{\text{half-frame}} \;\supset\; \underbrace{1\ \text{ms}}_{\text{subframe}} \;\supset\; \underbrace{0.5\ \text{ms}}_{\text{slot (}\mu{=}1\text{)}} \;\supset\; \underbrace{33.33\ \mu\text{s}}_{\text{OFDM symbol}} \]

One frame = 10 subframes = 20 slots = 280 OFDM symbols (at \(\mu=1\)). Each slot carries 14 OFDM symbols (normal cyclic prefix).

Normal CP Lengths at \(f_s = 122.88\) MHz, \(\mu = 1\) TS 38.104 Table 5.3.2-1

The OFDM symbol duration (excluding CP) is \(N_{\text{FFT}} / f_s = 4096 / 122.88\ \text{MHz} = 33.33\ \mu\text{s}\). Two CP lengths apply per slot:

CP type Symbols in slot Samples (at 122.88 MHz) Duration
Normal CP — first symbol of each half-slot (longer variant) symbols 0 and 7 512 \(512 / 122.88\ \text{MHz} \approx 4.167\ \mu\text{s}\)
Normal CP — remaining 12 symbols symbols 1–6, 8–13 288 \(288 / 122.88\ \text{MHz} \approx 2.344\ \mu\text{s}\)

Total slot duration check: \(2 \times (4096+512) + 12 \times (4096+288) = 11216 + 52608 = 63488\) samples \(= 63488 / 122.88 \times 10^6 = 0.5168\ \text{ms} \approx 0.5\ \text{ms}\). ✓

Analogy — The TV commercial slot. A 5G slot is like a TV commercial break: exactly 0.5 ms long, stuffed with 14 OFDM symbols just as a 30-second break is filled wall-to-wall with individual ads. Advertisers (the scheduler) decide which symbols carry data vs reference signals — but the total always adds up to 14.
System insight — our 100 MHz / 30 kHz deployment. \(T_{\text{slot}} = 0.5\ \text{ms}\) gives 2000 slots/second. At peak 16-layer DL operation, the gNB must recompute a \(32 \times 16\) precoding matrix every 0.5 ms. That is \(2000 \times 32 \times 16 = 1{,}024{,}000\) complex multiplications per second for beamforming alone — before data processing.

Fig 1.1 — Slot duration vs numerology \(\mu\). Halves with each step. Our system (\(\mu=1\)) highlighted.

§2
OFDM Signal Generation TS 38.211 §5.3

NR DL uses CP-OFDM. The baseband time-domain signal for OFDM symbol \(l\) is formed by an inverse DFT (IFFT) of the frequency-domain complex coefficients followed by insertion of a cyclic prefix.

Time-Domain Signal Model

\[ s_l(t) = \frac{1}{\sqrt{N_{\text{FFT}}}} \sum_{k=0}^{N_{\text{FFT}}-1} a_{k,l}\; e^{\,j\,2\pi k\,\Delta f\, t}, \qquad 0 \le t < T_u + T_{\text{CP}} \]

where \(a_{k,l}\) is the complex modulation symbol on subcarrier \(k\), symbol \(l\); \(\Delta f = 30\ \text{kHz}\); \(T_u = 1/\Delta f = 33.33\ \mu\text{s}\) is the useful OFDM symbol duration; \(T_{\text{CP}}\) is the cyclic prefix duration.

IFFT Mapping: Active Subcarriers

The 4096-point IFFT is populated as follows:

\[ N_{\text{active}} = N_{\text{RB}} \times 12 = 132 \times 12 = 1584\ \text{subcarriers} \]
\[ \text{Transmission BW} = 1584 \times 30\ \text{kHz} = 47.52\ \text{MHz} \]
\[ \text{Guard per side} \approx \frac{100\ \text{MHz} - 47.52\ \text{MHz}}{2} \approx 26.24\ \text{MHz} \quad \text{(per TS 38.104)} \]

The remaining \(4096 - 1584 = 2512\) FFT bins are set to zero (guard subcarriers + DC null), preventing spectral leakage into adjacent channels. The sampling clock \(f_s = 122.88\ \text{MHz}\) satisfies the Nyquist criterion for the full FFT bandwidth \(N_{\text{FFT}} \times \Delta f = 4096 \times 30\ \text{kHz} = 122.88\ \text{MHz}\).

Cyclic Prefix — Multipath Robustness

The CP is copied from the end of the IFFT output and prepended to the symbol. For the channel to appear as a circular convolution (making one-tap frequency-domain equalization valid), the CP duration must exceed the maximum channel delay spread:

\[ T_{\text{CP}} > \tau_{\max} \]

For typical urban macro (\(\tau_{\max} \approx 1\text{–}2\ \mu\text{s}\)), the normal CP of 2.344 μs provides adequate margin. The longer normal CP of 4.167 μs at the first symbol of each half-slot handles longer delay spreads and absorbs inter-slot timing offsets.

Windowing TS 38.211 §5.4.1

To reduce out-of-band emissions, a raised-cosine (RC) window is applied at symbol boundaries. The window overlaps adjacent CP regions by \(N_W\) samples, tapering transitions smoothly rather than applying a hard rectangular cut-off:

\[ w[n] = \begin{cases} \dfrac{1}{2}\!\left(1 - \cos\!\left(\dfrac{\pi n}{N_W}\right)\right) & 0 \le n < N_W \\[6pt] 1 & N_W \le n \le N_{\text{FFT}} + N_{\text{CP}} - N_W \\[6pt] \dfrac{1}{2}\!\left(1 + \cos\!\left(\dfrac{\pi (n - N_{\text{FFT}} - N_{\text{CP}} + N_W)}{N_W}\right)\right) & \text{otherwise} \end{cases} \]
Analogy — The orchestra IFFT. The IFFT is like an orchestra conductor instructing 1584 musicians (active subcarriers) to play simultaneously, each at a specific frequency and volume (complex coefficient). The RF waveform emitted from the antenna is the superposition of all 1584 tones — the acoustic sound wave of the orchestra. The 2512 silent seats are the guard bands; they keep neighbours from complaining about spectral spill-over.

Fig 2.1 — Schematic OFDM spectrum: 1584 active subcarriers (47.52 MHz) within 100 MHz channel, guard bands ~26 MHz each side. PRB groups shown as alternating shades.

Numbers check. IFFT size = 4096; active = 1584 (≈38.7% of FFT bins loaded). Power spectral density is concentrated in the 47.52 MHz band. The 4096-point FFT at 30 kHz/bin covers exactly \(4096 \times 30\ \text{kHz} = 122.88\ \text{MHz}\) — matching \(f_s\) so no oversampling factor is needed beyond what is already built in.
§3
Resource Grid TS 38.211 §4.4

The NR resource grid is a two-dimensional time–frequency lattice. Every cell in the grid is a Resource Element (RE); groups of 12 adjacent subcarriers form a Physical Resource Block (PRB).

Resource Element & PRB TS 38.211 §4.4.1

\[ \text{RE} = \{(k,\,l)\} \quad k = \text{subcarrier index},\quad l = \text{OFDM symbol index} \]
\[ \text{PRB} = 12\ \text{consecutive subcarriers} \quad \Rightarrow \quad \text{1 PRB} \times \text{1 slot} = 12 \times 14 = 168\ \text{RE} \]

Resource Grid Dimensions — Our System

Parameter Value Note
Numerology \(\mu\)130 kHz SCS
Bandwidth100 MHzFR1 Band n78
\(N_{\text{RB}}\)132per TS 38.104 Table 5.3.2-1
Subcarriers\(132 \times 12 = 1584\)active
Symbols/slot14normal CP
RE/PRB/slot\(12 \times 14 = 168\)
Total RE/slot\(1584 \times 14 = 22{,}176\)
Total RE/frame (μ=1)\(22{,}176 \times 20 = 443{,}520\)
Key numbers — 100 MHz / 30 kHz system: 132 PRBs × 12 SC/PRB = 1,584 active subcarriers · 14 symbols/slot × 1,584 SC = 22,176 RE per slot · At 256QAM rank-16: up to ~4.5 Gbps peak throughput · RBG size P=8 (TS 38.214) → 17 RBGs for Type 0 DCI

RE Mapping: Channel Types

Within each slot, REs are assigned to different physical channels and signals:

Channel / Signal Typical RE locations Purpose
PDSCH (data)Majority of DL REsDL user data transport
DMRSSymbol 2,11 (Type 1 front-loaded) + optional add'lChannel estimation
CSI-RSConfigured RE positions (sparse)CSI feedback, beam management
PDCCH (CORESET)First 1–3 symbols, specific RBsDL control (DCI)
DC subcarrierCentre subcarrier (\(k=0\))Set to zero (LO leakage)
GuardEdge PRBs / unused subcarriersSpectral containment

VRB → PRB Mapping TS 38.211 §4.4.4

The scheduler operates on Virtual Resource Blocks (VRBs) — a contiguous numbered set used for DCI signalling. VRBs are mapped to Physical Resource Blocks (PRBs) via one of two modes:

Fig 3.1 — Resource grid visualisation: 20 PRBs × 14 symbols shown. Colour: Data (PDSCH) = blue, DMRS = orange, CSI-RS = green, PDCCH = purple, DC / guard = light grey.

Scheduling granularity. The minimum scheduling unit is 1 PRB × 1 slot = 168 RE. With 128 active UEs and 132 PRBs, the scheduler has \(132 / 1 = 132\) independent frequency allocations to distribute per slot (ignoring MIMO layers). With 16-layer spatial multiplexing, the effective capacity per RE can reach \(16 \times \log_2(1024) = 160\ \text{bits/RE}\) at 1024-QAM with full rank.
§4
TDD Configuration: DDDSUUDDD TS 38.213 §10 TS 38.211 §4.3.2

Time Division Duplex (TDD) shares a single carrier between DL and UL by time-multiplexing directions across slots. Our deployment uses a 9-slot repeating pattern over \(9 \times 0.5\ \text{ms} = 4.5\ \text{ms}\).

DDDSUUDDD Visual — 9-slot pattern (4.5 ms period at μ=1)

0
DL
1
DL
2
DL
3
S
4
UL
5
UL
6
DL
7
DL
8
DL

Each slot = 0.5 ms. DL full downlink   S special: 10DL+2GP+2UL   UL full uplink   Total period = 9 × 0.5 ms = 4.5 ms

Special Slot (Slot 3) Symbol-Level Breakdown
Slot 3 contains 10 DL symbols (0–9), 2 Guard Period symbols (10–11), 2 UL symbols (12–13). This allows TDD switching and compensates propagation delay up to ~10.7 km.

DDDSUUDDD Slot Map (\(\mu=1\), 9-slot period) TS 38.211 Table 4.3.2-1

Slot index Direction Format Symbol allocation Description
0D014 × DLFull downlink
1D014 × DLFull downlink
2D014 × DLFull downlink
3S34*10 DL + 2 GP + 2 ULSpecial slot — DL→UL switch
4U114 × ULFull uplink
5U114 × ULFull uplink
6D014 × DLFull downlink
7D014 × DLFull downlink
8D014 × DLFull downlink

*Format 34 is one commonly used special-slot definition; exact symbol split is operator-configured via tdd-UL-DL-ConfigurationCommon in SIB1 / RRCSetup.

TDD Slot Timeline (4.5 ms period)

S0
D
S1
D
S2
D
S3
S
S4
U
S5
U
S6
D
S7
D
S8
D

DL = blue, Special = purple, UL = green. Total period = 4.5 ms. Pattern repeats every 9 slots (not aligned to subframe boundary at μ=1).

Special Slot (S3) — Symbol-Level Breakdown

Special slot format 10 DL / 2 GP / 2 UL:

10 × DL (PDSCH/PDCCH)
2 GP
2 × UL

Guard Period (GP) — Propagation Delay Budget

The GP must accommodate the round-trip propagation delay from the furthest cell-edge UE so that UL transmissions do not collide with DL residuals at the gNB receiver:

\[ T_{\text{GP}} \ge \frac{2 \cdot d_{\max}}{c} + T_{\text{switch}} \]

For a cell radius of 15 km:

\[ \frac{2 \times 15 \times 10^3\ \text{m}}{3 \times 10^8\ \text{m/s}} = 100\ \mu\text{s} \]

Two GP symbols provide \(2 \times (33.33 + 2.344)\ \mu\text{s} = 71.35\ \mu\text{s}\) — sufficient for ~10.7 km radius. Larger cells require 4 GP symbols or reduced cell range (TA pre-compensation).

Effective DL/UL Duty Cycle

\[ \eta_{\text{DL}} = \frac{N_{\text{DL,sym}}}{N_{\text{total,sym}}} = \frac{(3 + 3) \times 14 + 10}{9 \times 14} = \frac{84 + 10}{126} = \frac{94}{126} \approx 74.6\% \]
\[ \eta_{\text{UL}} = \frac{2 \times 14 + 2}{126} = \frac{30}{126} \approx 23.8\% \qquad \eta_{\text{GP}} = \frac{2}{126} \approx 1.6\% \]

Fig 4.1 — TDD Gantt chart: 9-slot DDDSUUDDD pattern over 4.5 ms. Bar height proportional to DL/UL symbol count within the slot.

DL duty cycle in our DDDSUUDDD pattern. DL symbols: slots 0,1,2,6,7,8 (6 full DL) + 10 DL symbols in slot 3 = \(6 \times 14 + 10 = 94\) DL symbols out of 126 total ≈ 74.6% DL. PDSCH is scheduled on all DL slots and DL portion of slot 3. PUSCH occupies slots 4, 5 plus the 2 UL symbols at the end of slot 3. This DL-heavy ratio matches a typical eMBB downlink-dominant deployment (streaming, file download) serving 128 UEs with 16-layer DL.
HARQ timing in TDD — UL feedback alignment. DL HARQ ACK/NACK is sent via PUCCH which must land in UL slots only. With DDDSUUDDD, the earliest PUCCH opportunity after DL slot 0 is slot 4 (first full UL slot) — a minimum round-trip of 4 slots × 0.5 ms = 2 ms before ACK/NACK can be received. This drives the HARQ process count: the gNB must maintain at least \(\lceil 8 \times 0.5\ \text{ms} / 0.5\ \text{ms} \rceil = 8\) parallel HARQ processes to keep the pipeline full. UE timing advance must be applied so that UL transmissions arrive at the gNB within the correct UL slot boundary — TA is updated via MAC CE during the UL slots (slots 4 and 5) of the current TDD period.
§5
PDSCH — DL Shared Channel TS 38.211 §7.3 TS 38.214 §5

Purpose

The Physical Downlink Shared Channel (PDSCH) is the primary bearer of user-plane data (IP packets), broadcast system information (SIBs), and paging messages in 5G NR. Every time the base station has downlink data to deliver to a UE, it transmits that data on PDSCH. The UE learns where its PDSCH is located in time and frequency by reading the associated DCI carried on PDCCH (§6).

With our system parameters — 132 PRBs, 16 spatial layers, 32 TRX — PDSCH is the primary consumer of air-interface capacity and drives the design of the DMRS (§7), precoding, and HARQ feedback chain.

Time Domain Resource Assignment (TDRA) TS 38.214 Table 5.1.2.1-1

TDRA defines which OFDM symbols within a slot carry PDSCH. Two mapping types exist:

  • Mapping Type A: The TB always starts at symbol 0 or symbol 2 within the slot. The allocation length spans 3 to 14 symbols. This is the dominant mode in most deployments, including our 16-layer system, because it maximises DMRS placement flexibility and allows full-slot allocations.
  • Mapping Type B: Can start at any OFDM symbol. Supports shorter "mini-slot" allocations of 2, 4, or 7 symbols. Useful for ultra-low latency or for fitting PDSCH after a front-loaded DMRS within a symbol budget.

In our TDD pattern D D D S U U D D D (μ=1, 9-slot period), the downlink slots (D) carry full 14-symbol Type A PDSCH. The Special slot (S) carries fewer symbols for PDSCH; its GP and UL symbols are reserved for the DL-to-UL transition guard and SRS/PUCCH.

Frequency Domain Resource Assignment (FDRA) TS 38.214 §5.1.2.2

Two allocation types cover frequency domain scheduling:

  • Type 0 (RBG bitmap): The bandwidth is divided into Resource Block Groups (RBGs). For \(N_{RB}=132\), TS 38.214 Table 5.1.2.2.1-1 (config type 0, range 73–144 PRBs) gives RBG size \(P=8\), yielding \(\lceil 132/8 \rceil = 17\) RBGs (last RBG has only 4 PRBs: \(132 - 16 \times 8 = 4\)). The DCI carries a 17-bit bitmap selecting which RBGs are allocated. Type 0 supports non-contiguous frequency allocations — important for frequency-selective scheduling and frequency diversity.
  • Type 1 (start + length indicator): Specifies a contiguous set of PRBs by a starting PRB index and a length (up to 132 PRBs). Encoded as a single \(\lceil \log_2\!\binom{N_{RB}+1}{2} \rceil\) -bit RIV field. For 132 PRBs: \(\text{RIV bits} = \lceil\log_2(8778)\rceil = 14\) bits. Type 1 is simpler and sufficient for contiguous wideband allocations.

Transport Block Size (TBS) Computation TS 38.214 §5.1.3.2

The TBS calculation proceeds in three steps:

Step 1 — Count available REs per PRB:

\[ N'_{RE} = 12 \times N_{symb} - N_{DMRS} - N_{oh} \]

where \(N_{symb}\) is the number of PDSCH symbols in the allocation, \(N_{DMRS}\) is the DMRS overhead per PRB (6 REs/PRB for Type 1 single-symbol, or up to 12 REs/PRB for Type 2 double-symbol), and \(N_{oh}\) is configured overhead (typically 0 or 6 for PTRS, CSI-RS, etc.). Total allocated REs: \(N_{RE} = N'_{RE} \times N_{RB,alloc}\).

Step 2 — Compute intermediate TBS:

\[ N_{info} = N_{RE} \times R \times Q_m \times \nu \]

where \(R\) is the code rate (from MCS table), \(Q_m\) is the modulation order (\(Q_m = 2\) QPSK, \(4\) 16-QAM, \(6\) 64-QAM, \(8\) 256-QAM), and \(\nu\) is the number of MIMO layers (up to 16 in our system).

Step 3 — Quantize to standard TBS:

\(N_{info}\) is rounded to the nearest entry in TS 38.214 Table 5.1.3.2-1 for \(N_{info} \leq 3824\) bits, or computed via a closed-form quantization for larger values: find \(n = \max(3, \lfloor\log_2(N_{info}-24)\rfloor - 5)\), then \(\text{TBS} = 2^n \cdot \text{round}((N_{info}-24)/2^n) - 24\).

Peak DL throughput estimate: \(N_{RE} = 132 \times 12 \times 12 = 19{,}008\) RE/slot (12 data symbols, 2 DMRS symbols excluded) × 8 bits/RE (256-QAM) × 16 layers × (948/1024 code rate) ÷ 0.5 ms = \(19008 \times 8 \times 16 \times 0.925 / 0.5\text{ms}\) \(\approx \mathbf{4.5\ \text{Gbps}}\) theoretical maximum. In practice, HARQ retransmissions, guard symbols, control overhead, and imperfect CSI reduce this further. Note: the 16-layer figure assumes MU-MIMO (8 UEs × rank-2) sharing the full 132-PRB bandwidth each slot.

Rate Matching, Layer Mapping, and Scrambling

Rate matching: After LDPC encoding, the coded bits are rate-matched to fit exactly the modulated symbols available in the allocated REs. LDPC base graphs BG1 (for large TBS or high code rates) and BG2 (for small TBS or very low rates) are specified in TS 38.212 §5.3.2. Puncturing and repetition are applied around reserved REs (DMRS, CSI-RS, CORESET).

Layer mapping: For \(\nu=16\) layers, the coded bits from a single codeword (or two codewords for \(\nu \geq 5\)) are demultiplexed across the 16 layers. With two codewords (TS 38.211 §7.3.1.3), each codeword maps to up to 8 layers. The 32 TRX antennas are then precoded from these 16 layers using a \(32 \times 16\) precoding matrix \(\mathbf{W}\).

Scrambling: Each codeword is scrambled with a Gold sequence whose initialisation is: \[ c_{init} = 2^{15} \cdot n_{ID} + 2^{14} \cdot q + \lfloor n_s^{\mu}/2 \rfloor \cdot 2^{10} + \text{RNTI} \] where \(n_s^\mu\) is the slot index and \(q \in \{0,1\}\) is the codeword index. This makes each UE's PDSCH bit stream unique, providing inter-cell interference randomisation.

Common PDSCH Configurations — TBS Comparison

Configuration Layers (ν) MCS (64QAM R≈0.77) N_RB (alloc) Approx TBS Throughput @0.5 ms
Single-layer (rank-1) 1 MCS 16 132 ~95 kbits ~0.191 Gbps
4-layer (rank-4) 4 MCS 16 132 ~381 kbits ~0.763 Gbps
16-layer (rank-16) 16 MCS 16 132 ~1525 kbits ~3.05 Gbps
16-layer peak (256QAM) 16 MCS 27 (256QAM R≈0.93) 132 ~2440 kbits ~4.88 Gbps

Note: Throughput figures above are raw information bit rates before HARQ and MAC overhead. Effective application-layer throughput is typically 70–80% of this under ideal channel conditions.

§6
PDCCH & DCI TS 38.211 §7.3.2 TS 38.213 §10

Purpose

The Physical Downlink Control Channel (PDCCH) carries Downlink Control Information (DCI) — compact commands that tell each UE exactly where its PDSCH or PUSCH data is located in the current slot and how to decode it. Every slot, UEs must perform blind decoding: they do not know which time-frequency resources carry their DCI, so they must test all configured candidate locations until they find a CRC match against their own RNTI.

CORESET — Control Resource Set TS 38.211 §7.3.2.2

A CORESET defines the time-frequency region in which PDCCH can be transmitted. Key parameters:

  • Symbol duration: 1, 2, or 3 consecutive OFDM symbols, always starting at the beginning of a search space occasion (typically symbol 0 of a slot for the common search space).
  • Frequency resources: Configured as a bitmap of 6-PRB groups. Each bit enables 6 contiguous PRBs. For our 132-PRB system, CORESET #0 or configured CORESETs can span the full bandwidth (22 × 6 PRB = 132 PRBs).
  • REG bundle interleaving: A Resource Element Group (REG) spans 12 subcarriers × 1 symbol = one PRB. Bundles of REGs can be interleaved (frequency-diversity gain) or non-interleaved (lower latency, simpler implementation).

For 128 UEs each potentially requiring a DCI per slot, a large CORESET (3 symbols × full BW) maximises the number of simultaneous PDCCH transmissions at the cost of 21.4% of the slot's symbol budget.

Control Channel Element (CCE) and Aggregation Levels

A CCE consists of 6 REGs = 6 PRBs × 12 subcarriers × 1 symbol = 72 resource elements. Of these, PDCCH DMRS occupies every 4th subcarrier (3 out of 12 per PRB), leaving:

\[ N_{RE}^{data} = 6 \times (12 - 3) = 6 \times 9 = 54\ \text{data REs/CCE} \]

Aggregation Levels (AL) control how many CCEs are used for one DCI, providing a coding-gain vs. capacity trade-off:

AL CCEs Data REs DCI bits capacity (approx) Typical use
1154~40 bitsStrong signal, close UE
22108~40 bits, lower rateGood coverage
44216~40 bits, robustMid-range UE
88432~40 bits, very robustCell edge
1616864~40 bits, maximum robustDeep coverage

The DCI payload itself (e.g., DCI 1_1 ≈ 40–60 bits) remains fixed; more CCEs simply lower the effective code rate, providing coverage gain at the expense of CORESET capacity.

DCI Format 1_1 — PDSCH Scheduling TS 38.212 §7.3.1.2.2

DCI Format 1_1 is the primary scheduling message for UE-specific PDSCH. Key fields:

  • Carrier/BWP indicator: selects carrier and bandwidth part
  • FDRA: Type 0 (17-bit RBG bitmap, P=8) or Type 1 (14-bit RIV) for 132 PRBs
  • TDRA index: 4 bits → indexes into the configured TDRA table (§5)
  • MCS: 5 bits → one of 32 entries in TS 38.214 Table 5.1.3.1-2; encodes \(Q_m\) and \(R\)
  • NDI: 1 bit per codeword; toggles to indicate new data vs. HARQ retransmission
  • RV: 2 bits per codeword; redundancy version (0,1,2,3) for HARQ combining
  • HARQ process number: 4 bits → 16 parallel HARQ processes per UE
  • DAI: Downlink Assignment Index for HARQ-ACK bundling
  • TPC: 2 bits transmit power control for PUCCH (carrying the HARQ-ACK)
  • Antenna ports & SRS request: specifies DMRS ports, precoding, and whether SRS should be triggered
  • Precoding/layer indicator: defines the number of layers and the precoding matrix indicator (PMI/TPMI)

Search Spaces and Blind Decoding TS 38.213 §10.1

Search spaces define when within a slot a UE must look for PDCCH. Two types:

  • Common Search Space (CSS): monitored by all UEs (or a group). Carries system-level DCIs: SIB scheduling, paging, RA responses, power headroom.
  • UE-specific Search Space (USS): configured per UE via RRC. Carries DCI 1_1 / 0_1 for individual PDSCH/PUSCH scheduling.

The UE checks each configured search space at every monitoring occasion (may be every slot or periodic). Within each occasion, the UE must try every configured AL. TS 38.213 §10.1 limits the total to:

\[ M_{BD,max} = 44\ \text{blind decodes per slot} \]

Each blind decode involves: computing the candidate CCE start positions (hash function of RNTI), polar-decoding the hypothetical DCI, and checking the 24-bit CRC masked with the RNTI.

Polar coding: DCI is encoded with Polar codes (TS 38.212 §7.3) — the first 3GPP channel to use Polar codes. CRC-aided successive cancellation list (CA-SCL) decoding is used at the UE.

With 128 UEs and up to 44 blind decodes/slot each, PDCCH capacity is a hard scheduling bottleneck. Even at AL=1 (1 CCE each), 128 simultaneous PDCCH transmissions consume 128 CCEs. A 3-symbol CORESET spanning 132 PRBs provides at most \(132 \times 3 / 6 = 66\) CCEs — far fewer than 128. In practice, not all UEs are scheduled every slot; the scheduler must limit simultaneous PDCCH transmissions to the CORESET capacity, and higher-AL UEs consume multiple CCEs each. CORESET dimensioning is a critical system design trade-off.
Analogy — PDCCH as an airport departure board: PDCCH is like an airport departure board that refreshes every 0.5 ms. Each slot, every UE glances at the board looking for its own flight number (RNTI). Once found, the DCI tells it the gate (frequency RBs), departure time (symbols), seat class (MCS/layers), and whether this is a new flight or a rebooking (NDI/RV). UEs with weak signal get a bigger font (higher aggregation level) — easier to read but takes more board space.
§7
DMRS — Demodulation Reference Signals TS 38.211 §7.4.1 TS 38.211 §6.4.1

Purpose

Demodulation Reference Signals (DMRS) allow the receiver to estimate the radio channel on exactly the resource elements used for data, without prior knowledge of the transmitted data symbols. The receiver uses the known DMRS pilot values to estimate the complex channel coefficients \(\hat{H}(f,t)\) at pilot positions, then interpolates across the data REs to coherently equalise each layer's signal.

For multi-layer MIMO (up to 16 layers in our system), the DMRS from each layer must be mutually orthogonal at the receiver — otherwise channel estimates for one layer would be contaminated by interference from other layers, destroying the MIMO gain. Orthogonality is achieved through:

  • FD-CDM: different frequency-domain subcarrier positions (CDM groups)
  • OCC: Orthogonal Cover Codes applied across adjacent subcarriers or symbols
  • Time-domain OCC: when two DMRS symbols are used, OCC sequences span both symbols

DMRS Type 1 TS 38.211 §7.4.1.1.2 Table 7.4.1.1.2-1

Type 1 DMRS uses two interleaved CDM groups that together cover all 12 subcarriers of each PRB in the DMRS symbol — there are no data REs within a Type 1 DMRS symbol (data and DMRS occupy different OFDM symbols of the slot). CDM group 0 occupies subcarriers \(\{0, 2, 4, 6, 8, 10\}\) (even) and CDM group 1 occupies subcarriers \(\{1, 3, 5, 7, 9, 11\}\) (odd) — 6 DMRS REs per CDM group per PRB per DMRS symbol (12 total).

Orthogonality between ports is achieved via two CDM groups and OCC:

  • CDM group 0: subcarriers \(\{0, 2, 4, 6, 8, 10\}\) (all even subcarriers) TS 38.211 Table 7.4.1.1.2-1
  • CDM group 1: subcarriers \(\{1, 3, 5, 7, 9, 11\}\) (all odd subcarriers)
  • Within each CDM group, 2 ports are separated by frequency-domain OCC \([+1,+1]\) vs \([+1,-1]\) across adjacent DMRS subcarrier pairs within the group.
  • With single DMRS symbol: \(2\ \text{CDM groups} \times 2\ \text{OCC}\) = 4 ports maximum.
  • With double DMRS symbols: time-domain OCC doubles the port count to \(2 \times 4 = \)8 ports maximum.

DMRS Type 2 TS 38.211 §7.4.1.1.2 Table 7.4.1.1.2-2

Type 2 DMRS uses three paired adjacent subcarrier groups within each PRB (TS 38.211 Table 7.4.1.1.2-2). Within a 12-subcarrier PRB (indices 0–11), the CDM groups occupy SC pairs \(\{0,1\}\), \(\{4,5\}\), and \(\{8,9\}\), yielding \(3 \times 2 = \)6 DMRS REs per PRB per DMRS symbol in total, with 6 remaining subcarriers (\(\{2,3,6,7,10,11\}\)) available for data even within the DMRS symbol.

Three CDM groups, each carrying 2 ports via OCC on the two adjacent SC:

  • CDM group 0: SC pair \(\{0,1\}\)
  • CDM group 1: SC pair \(\{4,5\}\)
  • CDM group 2: SC pair \(\{8,9\}\)

With single DMRS symbol: \(3\ \text{CDM groups} \times 2\ \text{OCC} = \)6 ports. With double DMRS symbols: time-domain OCC doubles to \(3 \times 4 = \)12 ports.

16-Layer DMRS Configuration

TS 38.214 limits a single PDSCH transmission to a maximum of 8 layers. The "16-layer DL" in this system therefore refers to MU-MIMO: multiple UEs are spatially multiplexed, each receiving its own PDSCH with up to 8 layers. A typical split for our system is 8 UEs × 2 layers each = 16 aggregate layers. Each UE sees at most 8 DMRS ports in its own allocation; the per-UE DMRS configuration is as below.

  • Type 1 + double symbol: 8 ports maximum — sufficient for a rank-8 single-UE PDSCH (2 codewords × 4 layers each).
  • Type 2 + double symbol: 12 ports — supports up to rank-8 (only 8 of the 12 possible ports assigned per TS 38.214 Table 7.3.1.3-2). Preferred for massive MIMO deployments due to the 6 data SC remaining per PRB within the DMRS symbol.
  • MU-MIMO orthogonality: different UEs scheduled on the same PRBs are assigned non-overlapping CDM groups or cyclic shifts so their DMRS sequences remain orthogonal at the gNB receiver.

DMRS overhead for Type 2 double-symbol in a 14-symbol slot with 2 DMRS symbols (e.g., symbols 2 and 12 for PDSCH Mapping Type A):

\[ \text{DMRS overhead} = \frac{2\ \text{sym} \times 6\ \text{RE/PRB/sym}}{14\ \text{sym} \times 12\ \text{RE/PRB}} = \frac{12}{168} \approx 7.1\% \]

The effective data RE count per PRB per full 14-symbol slot with 2 Type 2 DMRS symbols is:

\[ N_{data,RE} = 14 \times 12 - 2 \times 6 = 168 - 12 = 156\ \text{RE/PRB} \]

This corresponds to a \(\approx 7.1\%\) DMRS overhead per PRB per slot.

16-layer aggregate throughput is achieved via MU-MIMO, not 16 DMRS ports for a single UE (which exceeds the TS 38.214 maximum of 8 layers/PDSCH). Type 2 double-symbol imposes 12 DMRS REs/PRB (6 per symbol × 2 symbols), consuming \(12/168 \approx 7.1\%\) of all REs in a 14-symbol slot. When additional DMRS positions are used (e.g., front- loaded + additional at symbol 7 or 11), overhead rises — at 4 DMRS symbols, overhead reaches \(4 \times 6/168 \approx 14.3\%\). Front-loaded DMRS (symbol 2, with optional additional at 7 or 11) is the standard 3GPP approach — balancing early channel estimation against overhead cost.

UL DMRS for PUSCH TS 38.211 §6.4.1.1

The uplink DMRS structure mirrors the DL: Type 1 and Type 2 configurations are defined with the same CDM group and OCC framework, but now the UE transmits the pilots and the gNB receiver performs the channel estimation. For our 128-UE system with MU-MIMO in the UL, the gNB must jointly estimate channels from multiple UEs sharing the same PRBs — each UE's DMRS occupies a different port (CDM group + OCC combination), ensuring orthogonality between co-scheduled UEs.

UL DMRS also supports PTRS (Phase Tracking Reference Signals) for high-order modulation (64-QAM, 256-QAM) to track and correct common phase error from oscillator phase noise — particularly relevant for mmWave deployments, though also configured in sub-6GHz high-MCS scenarios.

DMRS Type 1 vs Type 2 — Comparison

Parameter DMRS Type 1 DMRS Type 2
DMRS RE positions CDM0: {0,2,4,6,8,10}; CDM1: {1,3,5,7,9,11} — all 12 SC 3 SC pairs: {0,1}, {4,5}, {8,9} — 6 SC; data on {2,3,6,7,10,11}
DMRS REs per PRB per DMRS symbol 12 total (6 per CDM group × 2 groups); 0 data SC in DMRS symbol 6 total (2 per CDM group × 3 groups)
Data REs per PRB in DMRS symbol 0 (entire symbol used for DMRS) 6 (non-DMRS subcarriers)
CDM groups 2 3
OCC length (FD) 2 (across adjacent DMRS SC within CDM group) 2 (across the SC pair)
Max ports — single symbol 4 6
Max ports — double symbol 8 12
DMRS overhead (single DMRS sym) 100% of DMRS symbol SC (no data in DMRS symbol) 50% of DMRS symbol SC (6 of 12 SC)
Channel estimation quality Good — denser pilot spacing Similar — slightly larger interpolation span
Typical use case Up to 4-layer MIMO, FDD Up to 8-layer SU-MIMO / MU-MIMO, TDD massive MIMO
Defined in TS 38.211 Table 7.4.1.1.2-1 TS 38.211 Table 7.4.1.1.2-2
§8
CSI-RS TS 38.211 §7.4.1.5

8.1 Purpose & Role in the DL Chain

The Channel State Information Reference Signal (CSI-RS) is a downlink reference signal transmitted by the gNB. Unlike the cell- specific CRS of LTE, NR CSI-RS is UE-specific (or group-specific) and fully configurable. Primary roles:

  • Channel measurement — UE measures CSI-RS to derive CQI (Channel Quality Indicator), RI (Rank Indicator), and PMI (Precoding Matrix Indicator), which are fed back as CSI reports.
  • Beam management — L1-RSRP measurements on SSB or NZP-CSI-RS resources drive the P1/P2/P3 beam management procedures (TS 38.214 §5.2.1).
  • Mobility / RLM — CSI-RS can be used for Radio Link Monitoring and handover triggering as an alternative to SSB.
  • TRS (Tracking RS) — A subset of CSI-RS patterns is reused for UE time/frequency tracking when SSB periodicity is too coarse.

Two logical categories matter for our 32TRX / 128-UE system:

  • NZP-CSI-RS (Non-Zero-Power) — signal with known sequence; used for channel measurement.
  • ZP-CSI-RS / IM-CSI-RS — Zero-Power (punctured) resources used for interference measurement (IMR); UE measures noise plus interference in these "silent" REs.

8.2 Port Counts, CDM Types, and RE Density

CSI-RS can be configured with \(N_p \in \{1, 2, 4, 8, 12, 16, 24, 32\}\) ports. Orthogonality between ports sharing the same RE is achieved via Code Division Multiplexing (CDM).

Table 8.1 — CSI-RS Configuration Options TS 38.211 Table 7.4.1.5.3-1
Ports \(N_p\) CDM type CDM length RE density \(\rho\) Symbols used Typical use case
1 No CDM 1 3, 1, 0.5 1 CRS-like single-port measurement, TRS
2 FD-CDM2 2 (freq) 1, 0.5 1 2-port RSRP, dual-pol beam measurement
4 FD-CDM2 2 (freq) 1 1–2 4-port PMI feedback, small array
8 FD-CDM2 / CDM4 2–4 1 1–2 8-port Type I codebook
12 FD-CDM2 / CDM4 2–4 1 2 12-port hybrid beam
16 CDM4 / CDM8 4–8 1 2–4 16-port Type II / FD-MIMO
24 CDM4 / CDM8 4–8 1 2–4 24-port large array
32 CDM8 8 (time–freq) 1 4 32TRX massive MIMO (our system)

CDM group structure for 32 ports: 32 ports ÷ 8 (CDM-8 length) = 4 CDM groups. CDM-8 spreads 8 ports over 2 adjacent subcarriers (FD-CDM2) and 4 adjacent symbols (TD-CDM4), giving \(2 \times 4 = 8\) orthogonal cover codes per group. The 4 groups are placed on different (subcarrier, symbol) pairs across the resource.

RE Density \(\rho\)

  • \(\rho = 3\): pilot every 3rd subcarrier — lowest overhead, used for coarse measurement or TRS.
  • \(\rho = 1\): pilot every subcarrier — full density; required for high-port-count CSI-RS (our 32-port case).
  • \(\rho = 0.5\): pilot every 2nd subcarrier — used for 1 and 2-port low-overhead configurations.
Insight — 32-port overhead in 100 MHz: With \(\rho = 1\) and 4 symbols, one 32-port NZP-CSI-RS resource occupies \(132 \times 12 \times 4 = 6{,}336\) REs per PRB-set per occasion. Each RE carries only 1 pilot (no data), so the overhead fraction per DL symbol pair is non-trivial. Critical to budget CSI-RS in the TDD DL slots — for DDDSUUDDD with 6 pure DL slots per 5 ms frame (slots 0,1,2, 6,7,8), keeping CSI-RS period ≥ 10 slots keeps overhead below ~3%.

8.3 Periodicity, Triggering, and 128-UE Scheduling

CSI-RS transmission can be:

  • Aperiodic (A-CSI-RS): triggered on-demand via DCI field; used for immediate high-resolution feedback before rank-critical transmissions.
  • Semi-persistent (SP-CSI-RS): activated/deactivated by MAC-CE; runs at fixed period while active.
  • Periodic (P-CSI-RS): always-on; configured by RRC. Allowed periodicities (in slots): \(\{4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 160, 320\}\).

128-UE capacity planning (our system): A 32-port NZP-CSI-RS resource is shared by all UEs in the same beam; with 128 UEs spread over multiple beams, the scheduler can multiplex:

  • Period = 5 slots (2.5 ms) → 1 occasion per DL slot; if 5 UE-groups per occasion → covers 5 × 5 = 25 UE-groups/period — feasible for 128 UEs grouped into ~6–8 spatial clusters.
  • Period = 10 slots → lower overhead; 10 × 5 = 50 UE-groups, easily covers 128 UEs with beam-grouped CSI-RS.

For our TDD pattern DDDSUUDDD (10-slot period), CSI-RS can only be placed in DL slots (0, 1, 2, 6, 7, 8) or the DL portion of the special slot (3). An offset \(l_0\) within the slot selects the starting symbol (symbols 0–3 for 4-symbol CSI-RS, excluding DMRS symbols 2/11).

8.4 CSI-RS Overhead vs Periodicity

The chart below shows how the fraction of DL subcarrier-symbols consumed by a single 32-port NZP-CSI-RS resource (4 symbols, \(\rho=1\), full 132-PRB bandwidth) varies with periodicity. The TDD DL duty cycle for DDDSUUDDD is 6 full DL slots + 1 partial special slot ≈ 6.5 effective DL slots per 10-slot period, giving a DL symbol pool of approximately \(6.5 \times 14 = 91\) symbols per period.

Fig 8.1 — CSI-RS DL symbol overhead for 32-port (4 symbols per occasion) and 16-port (2 symbols) NZP-CSI-RS resources as periodicity increases. The 1% overhead target (dashed red) is met at period ≥ 20 slots for 32-port. System: DDDSUUDDD, μ=1, 132 PRBs.

8.5 Beam Management via CSI-RS

In massive MIMO with 32 ports, the gNB sweeps a codebook of beams using CSI-RS resources. The UE measures L1-RSRP on each beam and reports the best beam index (CRI — CSI-RS Resource Indicator). The beam management framework defines:

  • P1 procedure: gNB Tx beam sweep (wide beams) + UE Rx beam sweep — initial beam pair link establishment.
  • P2 procedure: gNB Tx beam refinement using narrower CSI-RS beams, UE Rx beam fixed.
  • P3 procedure: UE Rx beam refinement (quasi-co- location type D).

QCL (Quasi-Co-Location) type D links CSI-RS to SSB: the UE assumes the same spatial Rx filter used to receive the reference SSB can be reused for the linked CSI-RS resource. This enables UE beamforming without explicit Rx training.

§9
SRS — Sounding Reference Signal TS 38.211 §6.4.1.4

9.1 Purpose

The Sounding Reference Signal (SRS) is a UL reference signal transmitted by the UE. The gNB uses SRS for:

  • UL channel estimation — derive frequency-selective UL channel \(\hat{H}_{\mathrm{UL}}\) across the sounded bandwidth for UL scheduling and MRC/IRC combining weight selection.
  • DL channel estimation via TDD reciprocity — in TDD, since DL and UL share the same carrier frequency, the UL channel measured from SRS approximates the DL channel \(\hat{H}_{\mathrm{DL}} \approx \hat{H}_{\mathrm{UL}}^T\) (within the channel coherence time). gNB uses this to compute DL precoding weights without requiring DL CSI feedback — particularly valuable for 32TRX massive MIMO.
  • UE positioning — multi-cell SRS-RSRP / TDOA / AoA measurements for NR positioning (TS 38.215).

9.2 Zadoff-Chu Sequence Basis

SRS uses sequences derived from Zadoff-Chu (ZC) roots, analogous to PRACH but mapped to OFDM subcarriers. The base sequence is:

\[ r^{(p,b,n_s)}(n) = e^{\,j\,\phi(n)}\, \cdot\, e^{\,j\,2\pi u\,\frac{n(n+1)}{2\,M_{\mathrm{ZC}}}}, \quad n = 0, 1, \ldots, M_{\mathrm{ZC}} - 1 \]

where \(M_{\mathrm{ZC}} = N_{\mathrm{RB}}^{\mathrm{SRS}} \times 12\) is the sequence length in subcarriers, \(u\) is the root index (chosen per- cell to minimise inter-cell cross-correlation), and \(\phi(n)\) is a cyclic shift applied per-port to achieve orthogonality among SRS resources sharing the same RB/symbol. The constant-modulus property of ZC sequences is exploited: \(|r(n)| = 1\), so all subcarriers carry equal power — ideal for channel estimation.

Cyclic shifts provide up to \(\alpha \in \{0, \pi/6, \pi/3, \pi/2, 2\pi/3, 5\pi/6, \pi, 7\pi/6, 4\pi/3, 3\pi/2, 5\pi/3, 11\pi/6\}\) (12 shifts, spacing \(\pi/6\)) for intra-cell SRS multiplexing (FD-CDM equivalent in the ZC domain).

9.3 SRS Resource Structure and Frequency Hopping

Each SRS resource is defined by the tuple: \(\{B_{\mathrm{SRS}},\; b_{\mathrm{hop}},\; n_{\mathrm{RRC}},\; k_{\mathrm{TC}},\; l_{\mathrm{offset}},\; T_{\mathrm{SRS}},\; T_{\mathrm{offset}}\}\)

  • \(B_{\mathrm{SRS}} \in \{0,1,2,3\}\): bandwidth configuration index; maps to an \(N_{\mathrm{RB}}^{\mathrm{SRS}}\) value via Table 6.4.1.4.3-1 (see §9 table below).
  • \(b_{\mathrm{hop}}\): frequency hopping bandwidth index; when \(b_{\mathrm{hop}} < B_{\mathrm{SRS}}\), SRS hops across larger BW each period.
  • \(k_{\mathrm{TC}} \in \{2, 4\}\): comb size — SRS occupies every \(k_{\mathrm{TC}}\)-th subcarrier, allowing \(k_{\mathrm{TC}}\) SRS resources to share the same symbol (comb multiplexing).
  • \(l_{\mathrm{offset}} \in \{0,1,2,3\}\): symbol offset from last symbol of slot; SRS occupies the last 1, 2, or 4 symbols of the UL slot.
  • \(T_{\mathrm{SRS}}\): periodicity (slots); \(T_{\mathrm{offset}}\): slot offset within the period.

Frequency Hopping Across 132 PRBs

For full 100 MHz coverage, SRS must hop across all 132 PRBs. With \(B_{\mathrm{SRS}} = 2\) (e.g., \(N_{\mathrm{RB}}^{\mathrm{SRS}} = 44\) RBs sounded per occasion), three hops are needed:

\[ \text{Hop } h \;:\; \text{starting PRB} = n_{\mathrm{shift}} + \left\lfloor h \cdot \frac{N_{\mathrm{RB}}^{\mathrm{BW}}}{N_{\mathrm{hops}}} \right\rfloor, \quad h = 0, 1, 2 \] \[ 3 \times 44 = 132 \text{ PRBs} = \text{full BW} \]
Table 9.1 — SRS Bandwidth Configuration (partial, μ=1) TS 38.211 Table 6.4.1.4.3-1
\(B_{\mathrm{SRS}}\) index \(N_{\mathrm{RB}}^{\mathrm{SRS}}\) Hops to cover 132 RB Notes
0433Narrow SRS, many hops
0817
11211
1169
2246
2443Coverage–overhead tradeoff sweet spot
2483
3962Wide SRS, fast sounding
31321Full BW, single occasion

9.4 128-UE SRS Configuration Strategy

For our system: 128 UEs, 4 SRS ports per UE, TDD pattern DDDSUUDDD (UL slots: 4, 5 of each 10-slot period; 1 slot = 0.5 ms).

  • UL capacity: 2 UL slots per 5 ms period (slots 4 and 5).
  • With comb-4 (\(k_{\mathrm{TC}}=4\)) and cyclic shifts: up to 4 (comb) × 12 (cyclic shifts) = 48 SRS resources per symbol, but in practice limited by pilot contamination to ~8–12 per symbol.
  • Chosen strategy: \(B_{\mathrm{SRS}} = 2\) (44 RBs per hop), 3 hops, period = 20 slots (10 ms). Each 20-slot period contains 4 UL slots (slots 4,5 of each 10-slot sub-period).
  • Per UL slot: allocate SRS in last 1 symbol, comb-2, 4 cyclic shifts → 2 × 4 = 8 UEs per symbol per hop; across 4 UL slots and 3 hops: 8 × 4 = 32 UEs per hop cycle → 3 hop cycles cover 96 UEs. Remaining 32 UEs: second comb offset or longer period.
  • Alternative: period = 40 slots (20 ms); 8 UL slots; easily covers 128 UEs with 8 UEs/slot × 3 hops × 8 slots = 192 capacity > 128.
\[ N_{\mathrm{UE,max}} = k_{\mathrm{TC}} \times N_{\mathrm{CS}} \times N_{\mathrm{UL,slots}} = 2 \times 4 \times N_{\mathrm{UL,slots}} \]
Warning — Reciprocity timing constraint: SRS must complete before the DL precoding decision for the same coherence interval. In DDDSUUDDD: SRS transmitted in slots 4 and 5 (UL) → gNB estimates DL channel → precoding weights applied in next DL burst (slots 6, 7, 8 of the same 10-slot period, or slots 0, 1, 2 of the next period). If the UE moves or rotates between SRS and the corresponding PDSCH, channel may decorrelate, degrading beamforming gain. For pedestrian UEs at 3 km/h and SCS 30 kHz, the coherence time \(T_c \approx 1/(2\,f_d)\) with \(f_d = v f_c / c \approx 100\) Hz (at 3.5 GHz) gives \(T_c \approx 5\) ms — tighter than the 5 ms DL burst lag at the edge.

9.5 Multi-Port SRS

SRS supports \(N_{\mathrm{SRS}} \in \{1, 2, 4\}\) ports per UE. Multiple SRS ports are distinguished by antenna switching or by non-overlapping cyclic shifts (for simultaneous multi-port):

  • 1-port SRS: single Tx; used for SISO or diversity UEs.
  • 2-port SRS: orthogonal cyclic shifts, spacing \(\Delta\alpha = \pi\); measures dual-pol channel for 2T UEs.
  • 4-port SRS: \(\Delta\alpha = \pi/2\); measures full 4T UE channel matrix — gNB can compute 4-layer DL precoder.

For our 128 UEs × 4 ports: gNB receives \(128 \times 4 = 512\) SRS sequences and constructs a channel matrix \(\mathbf{H} \in \mathbb{C}^{32 \times 512}\) (32 Rx antennas × 512 UE transmit streams) per subcarrier, used to compute zero-forcing or MMSE precoders for the 16-layer DL.

9.6 SRS Frequency Hopping Visualization

The chart illustrates three SRS resources per UE hopping across the 132-PRB bandwidth over three consecutive UL slots (B_SRS=2, 44 RBs/hop). Three representative UEs are shown at different comb/cyclic-shift offsets.

Fig 9.1 — SRS frequency hopping for 3 representative UEs over 3 UL slots, each sounding 44 PRBs (B_SRS=2) to cover the full 132-PRB bandwidth in 3 hops. UEs are offset by comb or cyclic-shift to avoid collision. System: μ=1, 100 MHz, DDDSUUDDD TDD.

§10
PUSCH — Physical Uplink Shared Channel TS 38.211 §6.3 · TS 38.214 §6

10.1 Purpose

PUSCH (Physical Uplink Shared Channel) is the primary UL data-bearing channel in 5G NR. It carries:

  • TB (Transport Block) data from the MAC layer, i.e., actual UL user payload.
  • UCI (Uplink Control Information) multiplexed onto PUSCH when PUCCH capacity is insufficient — HARQ-ACK bits, periodic CSI Part 1/Part 2 (CQI/RI/PMI), and SR (Scheduling Request).

PUSCH is scheduled by the gNB via DCI format 0_1 (or 0_0 for fallback), carried on PDCCH. The UE responds in the scheduled UL slot(s) with the PUSCH transmission, following the K2 timing offset defined by the TDRA table (TS 38.214 Table 6.1.2.1.1-2).

10.2 Two Waveforms: CP-OFDM vs DFT-s-OFDM

NR defines two waveform options for PUSCH — a unique feature not present in NR DL (which uses only CP-OFDM). The choice is configured by higher layers via the IE transform-precoding.

CP-OFDM (transform-precoding disabled)

Identical to the DL waveform. The UE modulates data symbols onto individual OFDM subcarriers, applies IFFT, and prepends a cyclic prefix. The time-domain signal is a superposition of \(N\) independently modulated subcarriers. Signal model per symbol:

\[ s_{\mathrm{CP-OFDM}}(t) = \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} d_k \, e^{\,j\,2\pi k\,\Delta f\,t} \]

where \(d_k\) are the QAM data symbols on subcarrier \(k\), \(\Delta f = 30\) kHz for μ=1, and \(N = 4096\) (for our 100 MHz / μ=1 system). Peak power occurs when all subcarriers add coherently (probability \(\propto 1/N\)), yielding high PAPR ≈ 10–12 dB.

DFT-s-OFDM (transform-precoding enabled)

Also called SC-FDMA (Single Carrier FDMA). A DFT pre-coding stage is inserted before the IFFT:

  1. Modulate \(M\) QAM symbols \(\{d_0, \ldots, d_{M-1}\}\).
  2. Apply DFT of size \(M\): \(\tilde{D}_k = \sum_{n=0}^{M-1} d_n\, e^{-j2\pi nk/M}\)
  3. Map \(\tilde{D}_k\) to \(M\) contiguous subcarriers of the OFDM grid (localized FDMA).
  4. Apply \(N\)-point IFFT and add CP.

The DFT spreading distributes each QAM symbol across all \(M\) subcarriers. The resulting time-domain signal resembles single-carrier transmission, preserving the envelope characteristics of single-carrier modulation and yielding PAPR ≈ 6–8 dB — approximately 3–5 dB lower than CP-OFDM.

Analogy: DFT-s-OFDM is like writing one message on all whiteboards simultaneously (each whiteboard = one subcarrier, all carrying a fragment of the same message) — full frequency diversity, single-carrier-like envelope. CP-OFDM is like writing independent messages on separate whiteboards in parallel — more flexible (MIMO-friendly), but the combined signal fluctuates more wildly when all whiteboards "shout" at once.

10.3 Selection Criteria

Table 10.1 — CP-OFDM vs DFT-s-OFDM PUSCH Comparison
Property CP-OFDM DFT-s-OFDM
PAPR (typical) 10–12 dB 6–8 dB
Power amplifier backoff Higher (~6 dB IBO) Lower (~3 dB IBO)
Coverage (cell-edge) Moderate Better (lower PAPR → more Tx power)
Max UL layers Up to 4 1 only (single layer; multi-layer DFT-s not supported in NR Rel-15)
Frequency allocation Flexible (distributed/localized) Localized only (contiguous PRBs; M must be 2a3b5c)
MU-MIMO suitability Good (multi-layer, arbitrary RB map) Limited (single layer, contiguous RB)
UCI multiplexing Yes (betas) Yes (betas, with transform-domain puncturing)
Recommended for Rank >1, good SNR, indoor/urban eMBB Rank=1, cell-edge, coverage-limited, eMTC/RedCap
IE to enable transform-precoding = disabled transform-precoding = enabled

For our 32TRX / 128-UE system, the vast majority of UEs will use CP-OFDM (rank 2–4) given the expected indoor/pico-cell deployment with good SNR. DFT-s-OFDM is reserved for UEs at the cell boundary with reduced modulation order (QPSK).

10.4 UL Layer Mapping and DMRS

PUSCH supports up to 4 layers (TS 38.214 §6.1.1), even though the gNB has 32 receive antennas. The UL rank is bounded by the UE transmit antenna count — typically 2T (2 Tx) for mid-tier UEs or 4T for high-end devices. The gNB-side receive combining (MRC/MMSE/IRC) gains from 32 Rx but cannot increase rank beyond the UE Tx count.

PUSCH DMRS (TS 38.211 §6.4.1.1.3) follows the same OFDM structure as PDSCH DMRS:

  • Type 1: CDM groups on alternating subcarriers (density 6 RE/RB), up to 4 ports.
  • Type 2: CDM groups on consecutive SC pairs (density 6 RE/RB total, 3 pairs × 2 SC each), up to 6 ports.
  • Single-symbol DMRS: DMRS in symbol 2 (or 3) only — low overhead.
  • Double-symbol DMRS: symbols 2–3 for high-speed channels (added front-loaded pilot density).

PUSCH rate-matching avoids DMRS REs and any configured ZP-CSI-RS (IM-CSI-RS) REs that may overlap in the UL.

10.5 UCI Multiplexing on PUSCH

When a PUCCH would conflict with or have insufficient capacity for UCI, the gNB configures the UE to multiplex UCI onto PUSCH. Three UCI types:

  • HARQ-ACK: highest priority; time-multiplexed into specific OFDM symbols adjacent to the PUSCH DMRS. Beta offset \(\beta_{\mathrm{HARQ}}\) scales the energy ratio UCI/data.
  • CSI Part 1 (RI, CRI, wideband CQI): medium priority; placed in remaining symbols after HARQ-ACK.
  • CSI Part 2 (subband CQI, PMI codebook details): lowest priority; discarded if insufficient REs remain.
\[ N_{\mathrm{RE}}^{\mathrm{UCI}} = \left\lceil \frac{\beta_{\mathrm{UCI}} \cdot Q_m \cdot R_{\mathrm{PUSCH}} \cdot N_{\mathrm{RE}}^{\mathrm{PUSCH}} \cdot O_{\mathrm{UCI}}} {L_{\mathrm{PUSCH}}} \right\rceil \]

where \(O_{\mathrm{UCI}}\) is the UCI payload in bits, \(Q_m\) is the modulation order, and \(L_{\mathrm{PUSCH}}\) is the PUSCH transport block size.

10.6 PAPR Comparison: CP-OFDM vs DFT-s-OFDM

The Complementary CDF (CCDF) of PAPR characterises the probability that instantaneous PAPR exceeds a threshold \(\gamma\). Lower CCDF at a given \(\gamma\) means better PA efficiency. Reference curves below are derived from empirical simulations matching 3GPP test model parameters (QPSK, 100 RB, μ=1).

Fig 10.1 — CCDF of PAPR for CP-OFDM and DFT-s-OFDM PUSCH waveforms. At 0.1% exceedance: CP-OFDM ≈ 10.5 dB, DFT-s-OFDM ≈ 7.5 dB — approximately 3 dB advantage for DFT-s-OFDM, enabling higher PA efficiency and ~3 dB coverage gain for cell-edge UEs. System: μ=1, 100 RBs, QPSK modulation.

10.7 PUSCH Scheduling: DCI Format 0_1

DCI format 0_1 schedules PUSCH and carries the following key fields:

  • Frequency domain resource assignment (FDRA): RIV (Resource Indication Value) encoding start PRB and length in PRBs, or a bitmap for non-contiguous allocation.
  • Time domain resource assignment (TDRA): 4-bit index into TDRA table mapping to (K2, S, L) — where K2 is the scheduling offset in slots, S is the starting symbol, and L is the number of consecutive OFDM symbols (1–14).
  • MCS: 5-bit index into UL MCS table (Table 6.1.4.1 in TS 38.214) — QPSK to 256QAM (or 64QAM for DFT-s-OFDM).
  • NDI/RV: New Data Indicator, Redundancy Version for HARQ.
  • Antenna ports / SRS resource indicator: links PUSCH precoding to the SRS resource used for channel estimation.
  • Precoding information and number of layers: up to 4 layers encoded in the DCI for CP-OFDM PUSCH.

The K2 timing means the UE receives DCI in slot \(n\) and transmits PUSCH in slot \(n + K2\). For our DDDSUUDDD TDD pattern with UL slots at positions 4 and 5, K2 must be set such that DCI in slot 0, 1, or 2 (DL) maps to PUSCH in slot 4 or 5 (UL), requiring K2 = 4, 3, or 2 respectively.

10.8 PAPR Analysis

For CP-OFDM with \(N\) active subcarriers carrying i.i.d. symbols with unit average power, the PAPR upper bound is:

\[ \mathrm{PAPR}_{\max} = N \qquad (\text{all subcarriers phase-coherent at one sample}) \]

The probability that PAPR exceeds a threshold \(\gamma_0\) (CCDF) is approximately (for large N):

\[ \Pr\!\left(\mathrm{PAPR} > \gamma_0\right) \approx 1 - \left(1 - e^{-\gamma_0}\right)^N \xrightarrow{N\gg1} N\, e^{-\gamma_0} \quad (\gamma_0 \text{ in linear}) \]

For DFT-s-OFDM, the DFT spreading introduces correlation between subcarrier symbols. The effective PAPR depends on the constellation — QPSK DFT-s-OFDM approaches single-carrier QPSK PAPR (≈ 3.5 dB linear); higher-order QAM degrades toward CP-OFDM levels.

The power amplifier Input Back-Off (IBO) required to avoid clipping distortion scales with PAPR:

\[ \mathrm{IBO} \approx \mathrm{PAPR}_{0.01\%} \qquad \Rightarrow \qquad P_{\mathrm{Tx}} = P_{\mathrm{PA,sat}} - \mathrm{IBO} \]

A 3 dB PAPR reduction (DFT-s-OFDM vs CP-OFDM) translates directly to a 3 dB increase in average transmit power for the same PA, extending cell-edge coverage by:

\[ \Delta R \approx 10^{\Delta P / (10\,\alpha_{\mathrm{path}})} - 1 \;\approx\; 50\% \text{ range increase} \quad (\alpha_{\mathrm{path}} = 3.5,\; \Delta P = 3\text{ dB}) \]

10.9 Rate Matching and RE Count

PUSCH rate matching ensures coded bits fill exactly the available data REs. The effective RE count \(N_{\mathrm{RE}}\) per PRB per slot is:

\[ N_{\mathrm{RE}}' = N_{\mathrm{sc}}^{\mathrm{RB}} \times N_{\mathrm{symb}}^{\mathrm{sh}} - N_{\mathrm{DMRS}} - N_{\mathrm{oh}} \] \[ N_{\mathrm{RE}} = \min\!\left(156,\; N_{\mathrm{RE}}'\right) \times n_{\mathrm{PRB}} \]

where \(N_{\mathrm{sc}}^{\mathrm{RB}} = 12\), \(N_{\mathrm{symb}}^{\mathrm{sh}}\) is the number of allocated symbols (from TDRA), \(N_{\mathrm{DMRS}}\) is DMRS overhead (12–24 RE/PRB for single/double-symbol DMRS Type 1), and \(N_{\mathrm{oh}}\) accounts for any reserved REs (e.g., CSI-RS overlap). The cap of 156 RE/PRB/slot ensures a minimum pilot density is maintained.

Transport block size (TBS) is then computed from \(N_{\mathrm{RE}}\), the MCS-derived spectral efficiency \(\eta = Q_m \times R\), and a quantisation step per TS 38.214 §5.1.3.2 (same formula as PDSCH TBS).

§11
PUCCH TS 38.211 §6.4.1.3

Purpose

The Physical Uplink Control Channel (PUCCH) carries uplink control information (UCI) from the UE to the gNB. UCI comprises three categories:

  • HARQ-ACK — acknowledgement (ACK/NACK) for received DL PDSCH transmissions.
  • Scheduling Request (SR) — 1-bit flag from UE requesting UL grant for data it has to send.
  • CSI Reports — Channel State Information: CQI, PMI, RI, L1-RSRP; used for link adaptation and beamforming.

PUCCH is never used for user data. It occupies dedicated PRBs configured by RRC, typically at the band edges of the UL carrier to preserve contiguous PUSCH space in the center.

PUCCH Formats — Overview

5G NR defines five PUCCH formats (0–4) covering a range of payload sizes, coverage requirements, and multiplexing capabilities. The choice depends on UCI payload size, coverage target, and UE multiplexing density.

Format Symbols PRBs Max UCI bits Modulation / Spreading Primary Use Case
0 1–2 1 2 CS of ZC sequence (no data modulation) HARQ-ACK (1–2 bits), SR; ultra-short feedback
1 4–14 1 2 BPSK/QPSK + time-domain OCC spreading HARQ-ACK (1–2 bits), SR; coverage-limited scenarios
2 1–2 1–16 >2 (up to ~1706) QPSK; DMRS every 3rd SC CSI reports, multi-bit HARQ-ACK; low-latency large UCI
3 4–14 1–16 >2 (large) QPSK or π/2-BPSK; DFT-s-OFDM in time Large CSI + HARQ bundles; coverage + large payload
4 4–14 1 >2 QPSK or π/2-BPSK + OCC (N_OCC=2 or 4) Multi-UE resource sharing on single PRB

Format Details

Format 0 — Cyclic Shift Signalling

Format 0 encodes UCI purely via the cyclic shift (CS) of a length-12 ZC sequence. With 1 PRB × 12 subcarriers, up to \(N_{CS}=12\) possible shifts exist, but only 2 or 4 are allocated per UE (for 1-bit or 2-bit HARQ). SR is conveyed by presence/absence of transmission. No explicit data modulation — the shift itself is the symbol. DMRS is not needed.

\[ \alpha(n) = \frac{2\pi \cdot m_{0}}{12}, \quad m_0 \in \{0, 2, 3, 4, 6, 8, 9, 10\} \text{ (for 2-bit HARQ)} \]

Format 1 — OCC Spreading for Coverage

Format 1 extends Format 0 by applying a time-domain OCC (Orthogonal Cover Code) over 4–14 symbols. Each symbol carries one BPSK or QPSK modulated UCI bit spread by the OCC. This coherent accumulation yields a processing gain of \(\approx 10\log_{10}(N_{sym})\) dB. With 14 symbols: ~\(11.5\) dB gain. The OCC also enables 7 orthogonal resources per cyclic shift pair, multiplying PUCCH capacity.

Format 2 — Wideband Short PUCCH

For CSI reports and multi-bit HARQ-ACK (more than 2 bits), Format 2 uses QPSK over 1–16 PRBs in 1–2 symbols. DMRS occupies every 3rd subcarrier (\(k = 1, 4, 7, ...\)). Data capacity:

\[ N_{bits} = 2 \times N_{PRB} \times \frac{2}{3} \times 12 \times N_{sym} \quad \text{(2 bits/QAM, 2/3 SC for data)} \]

For 16 PRBs × 2 symbols: \(2 \times 16 \times 8 \times 2 = 512\) coded bits, carrying large CSI reports.

Format 3 — Long PUCCH with DFT-s-OFDM

Format 3 applies DFT-s-OFDM spreading in the time domain (similar to PUSCH) over 4–14 symbols and 1–16 PRBs. Supports π/2-BPSK for lower PAPR. Suited for large UCI payloads requiring coverage extension, combining both wideband capacity and long symbol duration.

Format 4 — Multi-UE OCC Sharing

Like Format 3 but restricted to 1 PRB, with OCC factor \(N_{OCC} \in \{2, 4\}\). Up to 4 UEs share the same PRB via orthogonal codes, enabling dense scheduling.

UCI Multiplexing

When HARQ-ACK, SR, and CSI all occur in the same slot for a UE, they are multiplexed onto a single PUCCH (or PUSCH if the UE also has UL data). Priority order:

  1. HARQ-ACK (highest priority — affects retransmission)
  2. SR
  3. CSI Part 1 (wideband CQI/RI)
  4. CSI Part 2 (per-subband / extended) — may be dropped if resource insufficient

If HARQ-ACK bits and CSI must coexist: they multiplex onto Format 2/3 PUCCH. If only HARQ-ACK ≤ 2 bits: Format 0 or 1 is used and CSI is dropped (HARQ preempts CSI).

HARQ Feedback Timing in TDD (DDDSUUDDD, μ=1)

With our TDD pattern D D D S U U D D D (slots 0–8 repeating every 9 slots = 4.5 ms), DL transmissions in slots 0, 1, 2 must wait for UL opportunities. Slot 4 is the first full UL slot.

\[ K_1 = \text{(PUCCH slot)} - \text{(PDSCH slot)} \]
  • Slot 0 (DL) → PUCCH slot 4: \(K_1 = 4\)
  • Slot 1 (DL) → PUCCH slot 4: \(K_1 = 3\)
  • Slot 2 (DL) → PUCCH slot 4: \(K_1 = 2\)
  • Slot 3 (Special, DL symbols) → PUCCH slot 4: \(K_1 = 1\)
  • Slot 6 (DL) → PUCCH slot 13 (UL in next 9-slot period): \(K_1 = 7\)
  • Slot 7 (DL) → PUCCH slot 13: \(K_1 = 6\)
  • Slot 8 (DL) → PUCCH slot 13: \(K_1 = 5\)

\(K_1\) is signalled in the DCI (field: PDSCH-to-HARQ_feedback timing indicator) using a configured set of values from dl-DataToUL-ACK (RRC). The gNB must track which HARQ process maps to which UL slot to assemble the HARQ-ACK codebook correctly.

HARQ-ACK timing in DDDSUUDDD at a glance:
0
PDSCh
1
2
3
S
4
ACK
5
UL
6
reTX
7
8

PDSCH in slots 0–2 → HARQ-ACK in slot 4 (K1=4,3,2) → earliest retransmission in slot 6 (RTT = 3 ms).

PUCCH Resource Configuration

RRC configures two PUCCH resource sets:

  • Resource Set 0: for UCI payloads of 1–2 bits (Formats 0 and 1); up to 32 resources.
  • Resource Set 1: for UCI payloads >2 bits (Formats 2, 3, 4); up to 8 resources.

Resource index is signalled in DCI. For SR, a dedicated PUCCH resource is semi-statically configured in SchedulingRequestResourceConfig. The UE transmits SR by transmitting on its configured resource (Format 0/1) in the SR occasion slot/symbol.

PUCCH is frequency-multiplexed at band edges. For our system with N_RB=132 (100 MHz, 30 kHz SCS), PUCCH typically occupies PRBs 0–2 and 129–131, leaving 126 PRBs for PUSCH.

System Consideration: With 128 UEs and up to 16 HARQ processes each, the gNB must coordinate up to 128 simultaneous PUCCH transmissions in the UL slots. PUCCH capacity planning is critical for dense MU-MIMO deployments. With DDDSUUDDD pattern, HARQ-ACK from 3 DL slots must all fit into 1–2 UL slots, potentially requiring Format 2/3 PUCCH with HARQ codebook bundling.

PUCCH Format Comparison Chart

Figure 11.1 — PUCCH format comparison. Max UCI bits shown representatively (Format 2/3 can carry hundreds of bits but plotted at 64/128 for scale). DMRS overhead and coverage gain (coherent combining dB) vary significantly across formats.

References: TS 38.211 §6.4.1.3, TS 38.213 §9, TS 38.213 §10
§12
SSB / PSS / SSS TS 38.211 §7.4.2, §7.4.3

SS/PBCH Block (SSB) — Definition

The SS/PBCH Block (SSB) is a 4-symbol, 20-PRB block transmitted by the gNB for initial access, cell search, and beam management. It contains:

  • PSS — Primary Synchronization Signal (symbol 0)
  • PBCH — Physical Broadcast Channel (symbols 1, 2, 3)
  • SSS — Secondary Synchronization Signal (symbol 2, lower SCs of PBCH symbol)

SSB is the first signal a UE detects during cell search. It provides timing synchronization, cell identity, and the minimum system information needed to proceed to random access.

SSB Symbol/Frequency Structure

SSB Symbol Content Subcarriers Notes
0 PSS 56–182 (127 active out of 240) Centered in 20 PRB; guard SCs on either side
1 PBCH 0–239 (with DMRS) Full 240 SCs; PBCH data + DMRS
2 SSS + PBCH SSS: 56–182; PBCH: remaining SSS at center; PBCH fills flanking SCs
3 PBCH 0–239 (with DMRS) Full 240 SCs; PBCH data + DMRS

Total SSB bandwidth: 20 PRBs × 12 SC = 240 subcarriers. With 30 kHz SCS: \(240 \times 30\,\text{kHz} = 7.2\,\text{MHz}\) occupied bandwidth.

PSS — Primary Synchronization Signal

PSS is a length-127 m-sequence (maximal-length sequence based on polynomial \(x^7 + x^4 + 1\)). It carries one of three possible NID2 values:

\[ N_{ID}^{(2)} \in \{0, 1, 2\} \]

The three PSS sequences are the same base sequence cyclically shifted by 0, 43, and 86 positions. They have good auto-correlation and low cross-correlation, enabling the UE to:

  1. Achieve symbol/slot timing synchronization (PSS peak = slot boundary reference)
  2. Determine \(N_{ID}^{(2)}\) (3 hypotheses to test)
  3. Resolve frequency offset up to ±half-SCS

PSS modulation: BPSK (1 bit per SC effectively; values are ±1 mapped from the sequence).

SSS — Secondary Synchronization Signal

SSS is a length-127 Gold code sequence. It encodes \(N_{ID}^{(1)}\):

\[ N_{ID}^{(1)} \in \{0, 1, \ldots, 335\} \quad \Rightarrow \quad 336 \text{ possible values} \]

Combined with PSS, the full Physical Cell ID is:

\[ N_{ID}^{cell} = 3 \cdot N_{ID}^{(1)} + N_{ID}^{(2)} \quad \Rightarrow \quad 3 \times 336 = 1008 \text{ unique cell IDs} \]

SSS is detected after PSS (timing + NID2 known), reducing the search from 1008 to 336 hypotheses. The Gold code is generated from two length-127 M-sequences \(x_0\) and \(x_1\) with scrambling based on \(N_{ID}^{(1)}\) and \(N_{ID}^{(2)}\).

L_max — Maximum SSB Beams per Half-Frame

The gNB transmits up to \(L_{max}\) SSBs per 5 ms half-frame, one per beam direction.

\[ L_{max} = \begin{cases} 4 & f \leq 3\,\text{GHz (FR1)} \\ 8 & 3\,\text{GHz} < f \leq 6\,\text{GHz (FR1)} \\ 64 & f > 24\,\text{GHz (FR2 mmWave)} \end{cases} \]

Each SSB occupies 4 symbols. With 30 kHz SCS and 14 symbols/slot: an SSB occupies \(\frac{4}{14} \approx 0.286\) of a slot = \(0.286 \times \frac{0.5\,\text{ms}}{1} \approx 0.143\,\text{ms}\). Eight SSBs fit within specific symbol windows in the first two slots of a half-frame, defined by the candidate positions in TS 38.213 Table 4.1-2.

For sub-6 GHz (FR1) with μ=1, SSB candidate symbol positions within a half-frame (numbered from symbol 0 of slot 0):

\[ \{2, 8\} + 14n, \quad n = 0, 1, 2, 3 \quad \text{(L\_max = 8)} \]

This gives 8 candidate start symbols: 2, 8, 16, 22, 30, 36, 44, 50.

Beam Sweeping

During each SSB burst set (half-frame), the gNB transmits each SSB through a distinct analog beam direction. The UE measures RSRP on each SSB, identifies the best beam (highest RSRP), and reports the SSB index (= beam index) in the random access procedure (preamble transmission on corresponding PRACH occasion) or via L1-RSRP reporting.

Beam sweeping continues even after initial access — gNB refreshes beam management every SSB period. Link quality per beam is monitored for mobility and handover.

SSB Periodicity

Configured by RRC: \(\{5, 10, 20, 40, 80, 160\}\) ms. Default (before RRC connection): 20 ms. Shorter periods improve beam tracking but increase SSB overhead:

\[ \text{SSB overhead} = \frac{L_{max} \times 4\,\text{sym}}{T_{period} / T_{slot}} = \frac{8 \times 4}{20\,\text{ms} / 0.5\,\text{ms}} = \frac{32}{40} = 80\% \text{ of slot 0 DL symbols} \]

In practice, SSB occupies well under 1% of total resource in most deployments.

SSB in DDDSUUDDD TDD Pattern

SSB must be placed in DL symbols only. With DDDSUUDDD:

  • Slots 0, 1, 2 are full DL → SSB candidates at symbols 2, 8 (slot 0) and 2, 8 (slot 1) are valid.
  • Slot 3 is special (DL symbols + GP + UL symbols) → SSB in DL part of slot 3 valid if symbol offset fits.
  • Slots 4, 5 are UL → no SSB.
  • Slots 6–8 are DL → SSB burst may also occur in second half-frame.

GSCN — Global Synchronization Channel Number

Rather than performing a continuous frequency sweep, the UE searches for SSB only on the GSCN raster, which is a sparse set of candidate center frequencies:

\[ \text{FR1 (sub-3 GHz)}: \Delta f_{GSCN} = 1200\,\text{kHz} \quad \text{(step of 1.2 MHz)} \] \[ \text{FR1 (3–6 GHz)}: \Delta f_{GSCN} = 1200\,\text{kHz} \] \[ \text{FR2}: \Delta f_{GSCN} = 17.28\,\text{MHz} \]

This dramatically reduces cell search time vs. arbitrary frequency placement. For 100 MHz band, a UE scans ~83 GSCN points (100 MHz / 1.2 MHz) vs. 3333 points at 30 kHz resolution.

System Insight: For our 30 kHz SCS deployment, \(L_{max}=8\) (assuming 3–6 GHz sub-6 FR1). With 32TRX and a 32-beam codebook: each SSB burst set covers 8 beams in 5 ms. To sweep all 32 beams with standard L_max=8, the gNB can apply 4 SSBs per beam via spatial multiplexing or use 4 half-frames × 8 beams = full 32-beam coverage per 20 ms period. SSB beam management (analog beamforming for coverage) is independent of the digital PDSCH precoding (16-layer spatial multiplexing). These operate as separate beam management and data transmission layers.

SSB Beam Sweeping Timeline Chart

Figure 12.1 — SSB beam sweeping in a 5 ms half-frame (μ=1). Eight SSBs (SSB0–SSB7) are transmitted at candidate symbol offsets {2, 8, 16, 22, 30, 36, 44, 50}, each directed at a different azimuth angle (−60° to +60°). Slot types: blue=DL, green=UL, orange=Special. All SSBs fall within DL slots 0–3.

References: TS 38.211 §7.4.2, TS 38.211 §7.4.3, TS 38.213 Table 4.1-2, TS 38.101-1 Table 5.4.3.3-1 (GSCN)
§13
PBCH & MIB TS 38.211 §7.3.3 · TS 38.212 §7.1

PBCH — Physical Broadcast Channel

The Physical Broadcast Channel (PBCH) carries the Master Information Block (MIB). It is transmitted on every SSB occurrence (every SSB period, every beam) and is the first channel a UE decodes after PSS/SSS synchronization. PBCH provides the minimal system information required to receive SIB1 and initiate random access.

PBCH occupies symbols 1, 2, and 3 of the SSB, sharing symbol 2 with SSS (which uses the center 127 subcarriers; PBCH uses the flanking SCs on symbol 2).

MIB Content (TS 38.331 ASN.1)

The MIB is a 24-bit information element (23 specified bits + 1 spare) encoded as follows:

Field Bits Purpose
systemFrameNumber 6 MSBs [9:4] of 10-bit SFN; LSBs conveyed via PBCH DMRS
subCarrierSpacingCommon 1 SCS for SIB1 reception: 0=15 kHz, 1=30 kHz (FR1); or 60/120 kHz (FR2)
ssb-SubcarrierOffset (k_SSB) 4 Subcarrier offset between SSB and carrier reference point; enables frequency alignment
dmrs-TypeA-Position 1 PDSCH DMRS position: 0=symbol 2, 1=symbol 3
pdcch-ConfigSIB1 8 CORESET#0 and SearchSpace#0 config; defines where UE looks for SIB1 scheduling DCI
cellBarred 1 If set: UE must not camp on this cell
intraFreqReselection 1 Controls cell reselection when cell is barred
spare 1 Reserved for future use

Total MIB payload in the NR-MIB ASN.1 structure: 23 bits (+ 1 spare = 24 bits information). Combined with additional bits from the PBCH transport block definition (SFN LSBs, half-frame bit, SSB index bits), the total PBCH payload processed by the PHY encoder is 32 bits.

PBCH Payload Bit Composition (TS 38.212 §7.1)

The full 32-bit PBCH payload \(\mathbf{a}\) input to the encoder consists of:

\[ \underbrace{a_0 \ldots a_{23}}_{\text{24 MIB bits (incl. spare)}} \;\|\; \underbrace{a_{24} a_{25} a_{26}}_{\text{SFN bits [2:0]}} \;\|\; \underbrace{a_{27}}_{\text{half-frame bit}} \;\|\; \underbrace{a_{28} a_{29} a_{30} a_{31}}_{\text{MSBs of SSB index (for L\_max=64)}} \]

For \(L_{max} \leq 8\) (our case with 30 kHz SCS, FR1): bits \(a_{28}\ldots a_{31}\) are set to 0 and the SSB index is fully conveyed via PBCH DMRS scrambling. For \(L_{max}=64\) (FR2): \(a_{28} a_{29}\) carry 2 MSBs of the 6-bit SSB index.

SFN Recovery

The 10-bit System Frame Number (SFN) range: 0–1023, period = \(1023 \times 10\,\text{ms} = 10.24\,\text{s}\). Recovery:

  • Bits [9:4] (6 MSBs) → from MIB field systemFrameNumber
  • Bits [3:1] (3 bits) → from PBCH payload bits \(a_{24} a_{25} a_{26}\)
  • Bit [0] (1 LSB) → from PBCH DMRS scrambling (changes every SSB)
\[ \text{SFN} = \text{MIB[5:0]} \times 16 + a_{26} \times 8 + a_{25} \times 4 + a_{24} \times 2 + b_{DMRS} \]

SSB Index Recovery (Beam Identification)

The SSB index (0 to \(L_{max}-1\)) identifies which beam the UE received. It is embedded in the PBCH DMRS scrambling sequence initialisation:

\[ c_{init} = 2^{11}(i_{SSB} + 1)(N_{ID}^{cell}/4 + 1) + 2^6(i_{SSB} + 1) + (N_{ID}^{cell} \bmod 4) \]

where \(i_{SSB} = i_{SSB,low} + 4 \cdot i_{SSB,high}\). For \(L_{max} \leq 8\): \(i_{SSB,low}\) (3 bits) is recovered from DMRS, giving the full SSB index. This allows the UE to know which beam it received without explicit signalling in the MIB payload.

PBCH Encoding Chain

The PBCH PHY processing follows TS 38.212 §7.1:

  1. CRC attachment: 32-bit PBCH payload + 24-bit CRC = 56 bits; CRC polynomial \(g_{CRC24C}\); CRC scrambled with 8 LSBs of cell ID \((N_{ID}^{cell} \bmod 256)\).
  2. Polar encoding: Mother Polar code size \(N=512\); encoded block = 512 bits. The 56 info bits are placed on the most-reliable bit channels (code rate ≈ 56/512 ≈ 0.109 before rate matching).
  3. Rate matching: Output 864 bits (sub-block interleaving + circular-buffer puncturing/repetition to match PBCH RE capacity of 432 QPSK symbols).
  4. Scrambling: XOR with scrambling sequence \(c(n)\) initialized by \(c_{init} = N_{ID}^{cell}\).
  5. QPSK modulation: 864 bits → 432 QPSK symbols (2 bits/symbol).
  6. RE mapping: 432 QPSK symbols mapped to PBCH REs in SSB symbols 1, 2, 3 (excluding DMRS positions).

PBCH DMRS

DMRS (Demodulation Reference Signal) for PBCH is interleaved with data REs: 3 reference subcarriers per 4 (positions \(k = 0+v, 4+v, 8+v, \ldots\) with offset \(v = N_{ID}^{cell} \bmod 4\)). PBCH DMRS serves two roles:

  • Channel estimation for coherent QPSK demodulation of PBCH data.
  • Implicit timing information: scrambling initialization includes SSB index bits → UE extracts SSB index during DMRS estimation.

k_SSB — Subcarrier Offset

\(k_{SSB}\) (0–23, 4 bits in MIB) is the subcarrier offset between the lowest SSB subcarrier and the nearest carrier resource block boundary. It enables the UE to derive the absolute frequency reference (Point A) from the known SSB center frequency (SS-RACH).

\[ f_{PointA} = f_{SSB,center} - \frac{240 \cdot \Delta f_{SSB}}{2} - k_{SSB} \cdot \Delta f_{SCS} \]

From Point A, the UE derives the carrier grid, PRB numbering, and the location of CORESET#0 (for SIB1 reception).

CORESET#0 and SIB1

The 8-bit pdcch-ConfigSIB1 field in the MIB indexes into TS 38.213 Table 13-1 through Table 13-11, giving:

  • CORESET#0: number of PRBs, number of symbols, subcarrier offset from SSB
  • SearchSpace#0: monitoring period, offset, duration (for Type0-PDCCH)

After PBCH decode, the UE monitors CORESET#0 for DCI format 1_0 (SI-RNTI scrambled) to receive the PDSCH carrying SIB1.

Study Note — PBCH Decode Procedure: After PSS/SSS detection, the UE has: slot/symbol timing, carrier frequency offset estimate, and cell ID \(N_{ID}^{cell}\). Decoding PBCH then provides: (1) SFN — exact 10-bit frame number for absolute timing reference; (2) SSB index — which beam was received, used to select the corresponding PRACH occasion during random access; (3) k_SSB — subcarrier offset allowing the UE to compute Point A and hence the full carrier frequency grid; (4) CORESET#0 config — tells the UE where to search for the PDCCH scheduling SIB1. These four pieces of information are prerequisites for any further system access.

PBCH Processing Chain Chart

Figure 13.1 — PBCH processing chain. MIB (24 bits) is assembled with SFN LSBs, half-frame bit, and SSB index bits to form 32-bit payload. After CRC-24C attachment (56 bits), Polar encoding (512 bits), rate matching to 864 bits, scrambling, and QPSK modulation (432 symbols), the PBCH data is RE-mapped alongside PBCH DMRS into SSB symbols 1, 2, and 3 across 240 subcarriers (20 PRBs). Final OFDM modulation uses 4096-point IFFT at 122.88 MHz sample rate.

PBCH Repetition and Combining

Within an SSB burst set (half-frame), all \(L_{max}\) SSBs carry the same MIB content but with different SSB index embedded in DMRS scrambling. A UE receiving multiple SSBs (multiple beams with good RSRP) cannot simply combine them since the DMRS scrambling differs. Instead the UE decodes PBCH from the best-RSRP SSB.

Across different half-frames (SSB periods), the MIB content changes only when SFN changes. The UE may attempt PBCH decode on successive SSB periods and combine soft bits (log-likelihood ratios) before the Polar decoder, improving decode success in weak coverage.

Timing Hierarchy Summary

After successfully decoding PBCH, the UE has established:

\[ \underbrace{T_{sym}}_{\approx 35.7\,\mu s} \subset \underbrace{T_{slot} = 0.5\,\text{ms}}_{14\,\text{sym}} \subset \underbrace{T_{subframe} = 1\,\text{ms}}_{2\,\text{slots}} \subset \underbrace{T_{frame} = 10\,\text{ms}}_{10\,\text{subframes}} \subset \underbrace{T_{HF} = 5\,\text{ms}}_{5\,\text{subframes}} \]

With SFN known (0–1023) and half-frame bit known, the UE has an absolute timing reference with 10.24-second periodicity, sufficient to align PRACH transmissions, SI scheduling windows, and measurement reporting timers.

References: TS 38.211 §7.3.3, TS 38.212 §7.1, TS 38.213 §13, TS 38.331 §6.3.2 (MIB ASN.1)
§14
Massive MIMO & Precoding TS 38.214 §5.2

14.1 — 32-TRX Antenna Array

The system has 32 TRX — 32 independent RF chains at the gNB, each comprising a PA, LNA, and ADC/DAC pair. Each TRX maps to one logical antenna port in the PDSCH precoder. Two dominant physical layouts are used in practice:

Physical layout options for 32-port array
LayoutColumns N1Rows N2Polarizations Total portsArray typeTypical use
UPA cross-pol (preferred)822 (±45°) 8×2×2 = 32Uniform Planar Array Macro cell, 3D beamforming
ULA dual-pol1612 (H+V) 16×1×2 = 32Uniform Linear Array Sectored cell, 2D horizontal steering
4-row UPA442 4×4×2 = 32Uniform Planar Array High-elevation coverage, stadium

The O-RAN split 7-2x interface carries the 32 antenna port I/Q streams between the DU and RU. Per O-RAN WG4 spec, the DU computes the precoding weights and passes pre-beamformed I/Q (Category B) or raw per-port I/Q (Category A) — 32 TRX Category A = 32 separate streams over the fronthaul.

14.2 — DL MIMO Channel Model

The received signal model for a single UE with \(N_r\) receive antennas:

\[ \mathbf{y} = \mathbf{H}\,\mathbf{W}\,\mathbf{x} + \mathbf{n} \]

The effective channel seen after precoding is \(\mathbf{H}\mathbf{W} \in \mathbb{C}^{N_r \times \nu}\). SVD decomposition gives \(\mathbf{H} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^H\), and the optimal precoder for SU-MIMO is \(\mathbf{W}^* = \mathbf{V}_{:,1:\nu}\) (first \(\nu\) right singular vectors), matched to the strongest channel eigenmodes.

14.3 — Type I Single-Panel Codebook (TS 38.214 §5.2.2.2)

The 5G NR codebook uses a two-stage structure:

\[ \mathbf{W} = \mathbf{W}_1\,\mathbf{W}_2 \]

For our N1=8, N2=2, O1=4, O2=4 UPA (8 columns, 2 rows, 4× oversampling each):

Practical 32-port codebook parameters (TS 38.214 Table 5.2.2.2.1-1)
N1N2O1O2 Total ports (dual-pol)Max layers ν Beam grid
22442×2×2=848×8=64 pairs
42444×2×2=16816×8=128 pairs
44444×4×2=32816×16=256 pairs
8244 8×2×2=32832×8=256 pairs
84448×4×2=64832×16=512 pairs

14.4 — Type II Enhanced Codebook (TS 38.214 §5.2.2.3)

Type I codebook is single-beam selection per polarization. Type II provides a linear combination of multiple beams:

\[ \mathbf{W} = \mathbf{B}\,\mathbf{C} \]

where \(\mathbf{B}\) is a matrix of \(L=2\) or \(L=4\) DFT beam vectors per polarization, and \(\mathbf{C}\) contains amplitude + phase coefficients for each beam–layer combination. The UE reports these coefficients in the PMI — significantly higher feedback overhead but captures the true channel subspace far better than a single beam.

Codebook type comparison for 5G NR PDSCH precoding
Codebook TypeMax LayersFeedback overhead PMI granularityTypical deployment
Type I Single-Panel (SP)8 i1: ~6–14 bits (WB), i2: 4–6 bits/SB Wideband W1 + subband W2 General macro, moderate mobility
Type I Multi-Panel (MP)4 Per-panel i1/i2 + inter-panel co-phase Wideband + subband Multi-panel RU (horizontal panels)
Type II SP2 i1: ~20 bits (WB), i2: 8 bits × N_SB Wideband + fine subband High-capacity indoor/dense urban
Type II Port Selection2 Port subset selection + coefficients Wideband + subband CSI-RS port reduction scenarios
Enhanced Type II (eType II)4 Frequency-domain compression: fewer bits via DFT of W2 Frequency-domain coefficients Rel-16/17 high-rank, up to ν=4 per UE

Note on Type II max layers: Type II SP and Port Selection codebooks (TS 38.214 §5.2.2.3.1) support at most 2 layers per UE (ν ∈ {1, 2}). Enhanced Type II (Rel-16) extends this to ν ≤ 4. None of the Type II variants support 16 layers for a single UE — "16 layers" in this system is a MU-MIMO sum rank achieved by scheduling 8 UEs × rank-2 each.

14.5 — Achieving 16-Layer DL with 32 TRX

3GPP layer limit per PDSCH: TS 38.212 Table 7.3.1.3-1 limits a single PDSCH to at most 8 layers (max rank = 8). "16-layer DL" therefore requires one of two interpretations — both are valid in real deployments.

Interpretation 1 — SU-MIMO up to 8 layers:

Interpretation 2 — MU-MIMO sum rank 16 (most practical):

14.6 — MU-MIMO Precoding Design

For MU-MIMO with \(K\) simultaneously served UEs, the aggregate channel matrix is:

\[ \mathbf{H}_{agg} = \begin{bmatrix} \mathbf{H}_1 \\ \mathbf{H}_2 \\ \vdots \\ \mathbf{H}_K \end{bmatrix} \in \mathbb{C}^{\left(\sum_k N_{r,k}\right) \times 32} \]

The received signal at UE \(k\) with MU precoding:

\[ \mathbf{y}_k = \mathbf{H}_k \mathbf{W}_k \mathbf{x}_k + \underbrace{\sum_{j \neq k} \mathbf{H}_k \mathbf{W}_j \mathbf{x}_j}_{\text{inter-user interference}} + \mathbf{n}_k \]

Zero-Forcing (ZF) precoder — eliminates IUI exactly (requires perfect CSI):

\[ \mathbf{W}_{ZF} = \mathbf{H}_{agg}^H \!\left(\mathbf{H}_{agg}\,\mathbf{H}_{agg}^H\right)^{-1} \]

MMSE precoder — balances IUI suppression vs. noise amplification:

\[ \mathbf{W}_{MMSE} = \mathbf{H}_{agg}^H \!\left(\mathbf{H}_{agg}\,\mathbf{H}_{agg}^H + \frac{1}{\text{SNR}}\mathbf{I}\right)^{-1} \]

At high SNR, MMSE → ZF. At low SNR, MMSE → matched filter (maximum ratio transmission). The per-UE columns of \(\mathbf{W}\) are then normalized to satisfy total transmit power \(P_T\).

14.7 — Channel Estimation via SRS (TDD Reciprocity)

In TDD mode, the UL and DL channels are reciprocally related: \(\mathbf{H}_{DL} \approx \mathbf{H}_{UL}^T\) (after RF calibration). UEs transmit Sounding Reference Signals (SRS) in UL slots; the gNB estimates \(\mathbf{H}_{UL}\) from all 32 receive ports simultaneously and uses \(\mathbf{H}_{DL} = \mathbf{H}_{UL}^T\) to compute the precoder.

At \(v = 60\) km/h = 16.7 m/s and \(f_c = 3.5\) GHz:

\[ f_D = \frac{16.7 \times 3.5 \times 10^9}{3 \times 10^8} \approx 195\;\text{Hz} \quad\Rightarrow\quad T_{coh} \approx \frac{0.423}{195} \approx 2.2\;\text{ms} \]

At 2.2 ms coherence time, the precoder computed from SRS in slot \(n\) remains valid for approximately 4–5 slots (each slot = 0.5 ms with μ=1). The gNB must refresh the precoder at least every 4 slots for pedestrian/vehicular UEs.

14.8 — Beamforming Gain with 32 TRX

For a uniform linear array of \(N_t = 32\) elements, the array factor in direction \(\theta\) is:

\[ A(\theta) = \sum_{n=0}^{N_t-1} w_n\, e^{j n k d \sin\theta} \]

With matched-filter (MRT) weights \(w_n = e^{-j n k d \sin\theta_0}\) steered to \(\theta_0\):

\[ |A(\theta)|^2 = N_t^2 \cdot \left|\frac{\sin\!\left(\frac{N_t \pi d}{\lambda}\left(\sin\theta - \sin\theta_0\right)\right)}{N_t \sin\!\left(\frac{\pi d}{\lambda}\left(\sin\theta - \sin\theta_0\right)\right)}\right|^2 \]

14.9 — SU-MIMO Capacity (Waterfilling)

With SVD decomposition \(\mathbf{H} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^H\), the MIMO channel decomposes into \(\nu\) parallel scalar channels with gains \(\sigma_i^2\). Waterfilling power allocation maximizes capacity:

\[ C_{SU} = \sum_{i=1}^{\nu} \log_2\!\left(1 + \frac{P_i \sigma_i^2}{N_0}\right) \quad\text{where}\quad P_i = \left(\mu - \frac{N_0}{\sigma_i^2}\right)^+ \]

\(\mu\) is the water level chosen to satisfy \(\sum_i P_i = P_T\). In practice, 5G NR uses equal power per layer (no waterfilling in standardized operation), with MCS adaptation per layer via separate CQI/RI feedback.

Beamforming + spatial multiplexing gain: 32 TRX enables up to 15 dB beamforming gain (\(G_{bf} = 10\log_{10}(32)\)) in radiated power per served UE. With 16-layer MU-MIMO, the array simultaneously serves 8 UEs in 8 different spatial directions — spatial reuse multiplies system capacity 8× over a single-beam system. Total spatial processing gain: 15 dB SNR boost per UE + 8× sum-rate multiplier.
Type II codebook feedback overhead: With 132 PRBs and PRG size 8, there are \(\lceil 132/8 \rceil = 17\) subbands. Per UE: wideband i1 ≈ 20 bits + 17 subbands × 8 bits/subband ≈ 156 bits/UE. For 128 UEs reporting CSI: 128 × 156 = 19,968 bits per CSI reporting period. This consumes significant PUCCH and UCI overhead — CSI reporting periodicity must be carefully configured to balance freshness vs. UL capacity.
Analogy — stadium spotlight operator: A single antenna is like one floodlight illuminating the entire arena. Massive MIMO with 32 TRX is like having 32 individually aimed spotlights — each beam precisely follows its assigned performer while barely spilling onto others. MU-MIMO then runs 8 shows simultaneously in the same arena, each spotlight set tracking a different performer without blinding the audience of others.

14.10 — Beam Pattern: 32-Element ULA Steering (Plot)

Normalized array factor \(|A(\theta)|^2\) (dB) for a 32-element ULA (\(d=\lambda/2\)) steered to five angles: 0°, ±15°, ±30°. Main lobe HPBW ≈ 3.2°; first sidelobe ≈ −13 dB.

14.11 — Capacity vs MU-MIMO Rank (Plot)

Sum spectral efficiency (bps/Hz) vs. number of simultaneously served UEs for 32-TRX MU-MIMO at three SNR operating points. Capacity plateaus at high rank due to inter-user interference with imperfect ZF precoding (10% residual IUI assumed at high rank).

14.12 — PMI Feedback Structure for 32-Port Array

The CSI feedback chain for a UE with 32-port CSI-RS:

  1. gNB transmits CSI-RS on up to 32 ports (NZP-CSI-RS, periodically or aperiodically)
  2. UE measures CSI-RS, estimates the effective channel \(\hat{\mathbf{H}}\)
  3. UE selects optimal RI (rank indicator), PMI (W1 beam group + W2 co-phasing), CQI (MCS index)
  4. UE reports RI/PMI/CQI via PUCCH (periodic) or PUSCH (aperiodic, higher precision)
  5. gNB scheduler uses reported PMI to select precoding matrix W for next PDSCH transmission

With PRG (Physical Resource Group) size \(P = 8\) PRBs, the 132-PRB band is split into \(\lceil 132/8 \rceil = 17\) subbands. The UE reports one wideband W1 + 17 subband W2 values per CSI report — capturing frequency-selective precoding with fine granularity.

Key insight — oversampled DFT codebook geometry: The Type I single-panel codebook uses oversampled DFT vectors to create a fine angular grid. With O1=4 oversampling and N1=8 horizontal elements, the horizontal beam spacing is \(\Delta\theta_{beam} = \arcsin(1/(N_1 O_1)) = \arcsin(1/32) \approx 1.8°\). The 3.2° HPBW with 1.8° beam spacing means adjacent beams overlap at roughly −3 dB — ensuring no angular blind spots across the full 120° cell sector.
Specification references: TS 38.214 §5.2.2 (PDSCH precoding), §5.2.2.2 (Type I codebook), §5.2.2.3 (Type II codebook), Table 5.2.2.2.1-1 (codebook parameters); TS 38.212 §7.3.1.3 (max PDSCH layers); TS 38.211 §7.3.2 (CSI-RS); O-RAN WG4 (split 7-2x fronthaul)
§15
MU-MIMO & Scheduling TS 38.213 §5, TS 38.214 §6.3

15.1 — Scheduler Architecture (128 UEs, 16 Spatial Layers)

The MAC scheduler in the gNB DU runs every slot (0.5 ms for μ=1), deciding:

Scheduling complexity summary — 128 UEs, μ=1, DDDSUUDDD
ParameterValueNotes
Connected UEs128All in RRC_CONNECTED, buffered data
Slots per second2,0001/0.5ms, μ=1
DL slots per second2,000 × 6/9 ≈ 1,3336 DL slots per DDDSUUDDD pattern
Max simultaneous UEs (rank-1)16Limited by 32-TRX spatial layers
Max simultaneous UEs (rank-2)88 UEs × 2 layers = 16 sum rank
HARQ processes per UE164-bit HARQ process ID in DCI
Total HARQ contexts128 × 16 = 2,048All must be tracked simultaneously
DCI per DL slot (max)8–16One DCI 1_1 per scheduled UE per slot
Scheduler decisions/sec2,000Full optimize every slot

15.2 — Proportional Fair (PF) Scheduling

The Proportional Fair criterion balances throughput maximization with long-term fairness. For UE \(k\) at slot \(t\):

\[ k^* = \arg\max_k \frac{R_k(t)}{\bar{R}_k(t)} \]

where:

\[ \bar{R}_k(t+1) = \left(1 - \frac{1}{T_c}\right)\bar{R}_k(t) + \frac{1}{T_c} R_k(t) \cdot \mathbf{1}[\text{UE k scheduled}] \]

Typical window \(T_c = 100\) slots (50 ms). The PF metric \(R_k / \bar{R}_k\) is:

15.3 — Spatial Compatibility Check for MU-MIMO Pairing

For MU-MIMO to work, the selected UEs must have sufficiently orthogonal channels — otherwise the ZF precoder will noise-amplify rather than interference-cancel. The pairing criterion:

\[ \left|\hat{\mathbf{h}}_i^H \hat{\mathbf{h}}_j\right|^2 \leq \gamma_{th} \quad \forall\; i \neq j \;\text{in the scheduled group} \]

where \(\hat{\mathbf{h}}_k = \mathbf{h}_k / \|\mathbf{h}_k\|\) is the normalized channel direction. Typical threshold \(\gamma_{th} = 0.1\) (−10 dB channel orthogonality).

In Urban Macro (UMa) at 3.5 GHz, UEs separated by > 20° angular spread typically achieve \(|\hat{\mathbf{h}}_i^H \hat{\mathbf{h}}_j|^2 \leq -15\;\text{dB}\) — sufficient for MU pairing with 8 layers and ZF precoding. The gNB groups UEs by SRS-estimated spatial direction and selects the highest-PF-metric subset with pairwise orthogonality \(\leq \gamma_{th}\).

15.4 — Resource Allocation: VRB → PRB Mapping

The scheduler assigns Virtual Resource Blocks (VRBs); the lower layer maps them to Physical Resource Blocks (PRBs):

DCI format 1_1 resource allocation types:

15.5 — Per-Slot Scheduling Pipeline

Full scheduling pipeline for our 128-UE DDDSUUDDD system (runs every DL slot = 0.5 ms):

1
CSI collection & validity check
Read latest CQI/RI/PMI reported by each UE (via PUCCH in UL slots 4, 5). Mark CSI as stale if age > T_coh (2–6 ms depending on UE speed). For TDD: also update precoder from SRS measurements (reciprocity).
2
HARQ retransmission priority
Check all 2,048 HARQ contexts. Any HARQ process with NACK and RTT expired gets scheduled first (retransmissions take priority over new data). Same RBs and MCS as original transmission (no adaptive retransmission in standard chase combining).
3
PF metric computation
Compute \(R_k(t)/\bar{R}_k(t)\) for all 128 UEs using current CQI and EWMA history. Rank UEs by descending PF metric.
4
MU-MIMO user selection
Greedily select UEs in PF-rank order; add each UE to group if spatial compatibility \(|\hat{\mathbf{h}}_i^H \hat{\mathbf{h}}_j|^2 \leq \gamma_{th}\) is met with all existing group members. Stop when sum rank = 16 (e.g., 8 UEs × rank-2 each) or no more compatible UEs.
5
RB assignment & MCS selection
Assign 132 PRBs among selected UEs (equal share or PF-weighted). Select MCS per UE from CQI → TS 38.214 Table 5.1.3.1-1/2, targeting BLER = 10%. Account for PDCCH overhead (1–3 symbols for CORESET) and DMRS overhead (1–2 symbols).
6
Precoding computation
Compute joint MU precoder \(\mathbf{W}_{MU} = \mathbf{H}_{agg}^H(\mathbf{H}_{agg}\mathbf{H}_{agg}^H + \alpha\mathbf{I})^{-1}\) from SRS estimates. Normalize columns to unit power. Apply per-PRG subband precoding if Type II.
7
DCI generation & PDCCH scheduling
Generate one DCI format 1_1 per scheduled UE. Pack into PDCCH CORESET symbols. DCI carries: RB allocation, MCS, NDI, HARQ process ID, HARQ-ACK timing indicator (K1), antenna port indicator, precoding info if applicable.
8
HARQ context update
Mark HARQ processes as in-flight. Start ACK/NACK timer (expect HARQ-ACK in slot n + K1). Update EWMA throughput \(\bar{R}_k\) for scheduled UEs.

15.6 — Peak Throughput Calculation

Single UE peak (SU-MIMO, rank-2, full BW, MCS 27):

From TS 38.214 Table 5.1.3.1-2 (256-QAM): MCS 27 → \(Q_m = 8\) bits/symbol, \(R = 948/1024\). Available symbols after overhead: 14 symb/slot − 2 DMRS − 1 PDCCH = 11 data symbols. Available subcarriers: 132 PRBs × 12 SC = 1,584 SC/symbol.

\[ \text{TBS} \approx \underbrace{1584}_{\text{SC/sym}} \times \underbrace{11}_{\text{data sym}} \times \underbrace{8}_{\text{bits/sym}} \times \underbrace{2}_{\text{layers}} \times \underbrace{\frac{948}{1024}}_{\text{code rate}} \approx 258{,}930 \;\text{bits/slot} \] \[ \text{Throughput} = \frac{258{,}930}{0.5 \times 10^{-3}} \approx \mathbf{518\;\text{Mbps per UE (rank-2)}} \]

System sum throughput (MU-MIMO, 8 UEs × rank-2, full BW, MCS 27):

\[ \text{Sum rate} \approx 8 \times 518\;\text{Mbps} \approx \mathbf{4.1\;\text{Gbps peak}} \]

With spatial multiplexing of 8 UEs sharing the same 132 PRBs, the gNB delivers 4.1 Gbps aggregate in a single 100 MHz carrier — 8× over single-UE SU-MIMO. (Note: real deployments derate by ~15–25% for overhead, channel estimation error, and non-ideal precoding, giving ~3–3.5 Gbps practical peak.)

15.7 — HARQ Timing in DDDSUUDDD TDD Pattern

TDD pattern: D D D S U U D D D — slots 0,1,2,6,7,8 are DL; slot 3 is Special (DL+Guard+UL); slots 4,5 are UL. The HARQ-ACK feedback must arrive in a UL slot after the DL PDSCH. The timing indicator K1 in DCI specifies how many slots after PDSCH the UE transmits HARQ-ACK on PUCCH.

HARQ-ACK timing in DDDSUUDDD (μ=1, slot duration = 0.5 ms)
DL PDSCH slot (n) Slot type Earliest UL for HARQ-ACK K1 value (slots) HARQ-ACK slot time RTT (PDSCH → re-tx)
0 (D)DL4 (U)42.0 ms6 ms (slot 6 earliest re-tx, next D)
1 (D)DL4 (U)32.0 ms6 ms
2 (D)DL4 (U)22.0 ms6 ms
3 (S)Special4 (U)12.0 ms6 ms
6 (D)DL13 (U in next frame)7 or wrap6.5 ms~9 ms
7 (D)DL13 (U)66.5 ms~9 ms
8 (D)DL13 (U)56.5 ms~9 ms

PDSCH in slots 0–2 benefits from quick HARQ-ACK (only 2 ms to UL slot 4), giving a short RTT of ~6 ms. PDSCH in DL slots 6–8 must wait for UL slot 13 (next 9-slot cycle), adding latency. With 128 UEs × 16 HARQ processes = 2,048 simultaneous HARQ contexts, the gNB must maintain the full HARQ state machine for all contexts at all times.

15.8 — PF Scheduler Snapshot (Plot)

Proportional Fair metric \(R_k(t)/\bar{R}_k(t)\) for 20 representative UEs in a single slot. Green bars: top-8 UEs selected for MU-MIMO scheduling. Grey bars: unselected UEs. The selection is driven by combined PF metric and spatial orthogonality.

15.9 — System Throughput vs MU-MIMO Layers (Plot)

Aggregate system throughput (Gbps) vs. number of simultaneously active spatial layers in MU-MIMO mode. Ideal linear scaling (blue dashed) assumes no IUI and perfect precoding. Practical curves (solid) account for: quantized PMI feedback loss, SRS estimation error, IUI residual with imperfect ZF, and PDCCH/DMRS overhead scaling. At 16 layers the gain vs ideal is ~60% due to feedback and interference effects.

15.10 — DCI Format 1_1 Field Structure

Each scheduled UE receives one DCI format 1_1 in the PDCCH, carrying all scheduling information for the PDSCH in that slot. Key fields:

DCI format 1_1 fields for N_RB=132 carrier (selected key fields)
FieldBitsValue / meaning
Identifier for DCI format11 = DL assignment
Bandwidth part indicator0–2Active BWP selection
Frequency domain resource assignment (Type 1)⌈log₂(N_RB(N_RB+1)/2)⌉ = 14RIV for 132 PRBs: 14 bits
Frequency domain resource assignment (Type 0)17RBG bitmap: 17 bits (P=8, ⌈132/8⌉=17 RBGs)
Time domain resource assignment4Row in PDSCH-TimeDomainAllocationList
Modulation and coding scheme5MCS index 0–28
New data indicator1NDI toggle: new tx vs retx
Redundancy version2RV0/1/2/3 for HARQ combining
HARQ process number40–15 (16 processes)
Downlink assignment index2–4DAI for HARQ-ACK codebook
PDSCH-to-HARQ timing (K1)3Slots until HARQ-ACK
Antenna port(s)4–6DMRS port selection for MIMO
Transmission configuration indicator3Precoding/layer config
Precoding information and number of layers2–6Codebook index + rank
Scheduling compute intensity: With PF scheduling across 128 UEs and 16 available spatial layers, the scheduler executes a combinatorial user selection every 0.5 ms (2,000 times/second). Exact exhaustive search across 128 UEs for 8-user MU groups requires evaluating \(\binom{128}{8} \approx 10^{12}\) combinations — computationally infeasible. Real implementations use greedy algorithms (O(K log K) sort + O(K²) pairwise check), running in < 50 μs on dedicated scheduling ASICs or GPU offload.
MU-MIMO orthogonality insight: Spatial multiplexing gain requires channel orthogonality. In UMa at 3.5 GHz, two UEs separated by ≥ 30° angular spread typically achieve \(|\hat{\mathbf{h}}_1^H \hat{\mathbf{h}}_2|^2 \leq -15\;\text{dB}\) — well below the pairing threshold. However, at 2.5 GHz with larger wavelength, angular resolution is coarser and more UEs share similar spatial directions, reducing the effective MU-MIMO group size. The 32-TRX array at 3.5 GHz provides just enough angular resolution (~3.2° HPBW) to support 8-UE MU-MIMO grouping in typical macro deployments.
Inter-user interference at high rank: IUI is the dominant impairment in MU-MIMO at high sum rank. With imperfect CSI (quantized PMI, aged SRS estimates, RF calibration errors), the ZF null is never perfect — residual IUI of −20 to −25 dB is typical. At 16 layers with 8 UEs, each UE experiences 7 interferers: even −25 dB residual per interferer accumulates to −16 dB aggregate IUI, potentially exceeding thermal noise in low-interference environments. Limit sum rank to ≤ 8 in high-mobility scenarios (T_coh < 2 ms) and to ≤ 12 when Type I codebook PMI quantization is the bottleneck.

15.11 — HARQ Combining and Redundancy Versions

5G NR uses HARQ-IR (Incremental Redundancy) via LDPC rate matching. The codeword is systematically punctured across four redundancy versions (RV0–RV3), each starting at a different point in the circular buffer. Combining at the UE:

\[ \text{LLR}_{combined} = \text{LLR}_{RV0} + \text{LLR}_{RV1} + \ldots \]

Each redundancy version adds new parity information — IR combining provides approximately 1.5–3 dB per retransmission at low SNR (vs. chase combining 3 dB for identical retransmit). With 16 HARQ processes per UE, the gNB can have up to 16 in-flight PDSCH transmissions per UE simultaneously, maximizing pipeline utilization.

Specification references: TS 38.213 §5 (PDCCH and DCI), §9 (HARQ-ACK timing); TS 38.214 §5.1 (MCS/TBS), §5.2 (PDSCH precoding), §6.3 (CSI feedback); TS 38.212 §7.3 (DCI formats, HARQ), §7.3.1.3 (PDSCH layer limit); TS 38.211 §7.4.1.1 (PDSCH DMRS); TS 38.321 (MAC HARQ operation)
§16
Link Adaptation TS 38.214 §5.1
Closed-Loop Link Adaptation

Link adaptation continuously matches the transmitted waveform to the instantaneous channel quality. The loop operates as follows:

  1. UE measures SINR on PDSCH DMRS or CSI-RS reference signals.
  2. UE maps measured SINR to a CQI index and encodes it in a CSI report.
  3. CSI report is carried on PUCCH (periodic) or PUSCH (aperiodic/semi-persistent).
  4. gNB scheduler selects an MCS index based on reported CQI ± OLLA offset.
  5. gNB signals MCS + RB allocation in DCI (PDCCH) for the next PDSCH transmission.

The inner loop operates every slot (0.5 ms at μ=1, SCS=30 kHz). The outer loop (OLLA) operates over hundreds of slots to track slow estimation biases.

CQI — Channel Quality Indicator TS 38.214 §5.2.2.1

A 4-bit field (values 0–15) that conveys the highest MCS a UE can support while achieving a hypothetical BLER ≤ 10%.

  • CQI 0: out-of-range / no recommendation.
  • CQI table 1 (default, up to 64QAM): CQI 7 → 16QAM, R=370/1024, SE≈1.445; CQI 15 → 64QAM, R=948/1024, SE≈5.554.
  • CQI table 2 (256QAM capable): CQI 15 → 256QAM, R=948/1024; enables higher peak rates when channel supports it.
  • UE reports either wideband CQI (single value over entire bandwidth) or subband CQI (per sub-band of N PRBs) depending on CSI report configuration.
MCS — Modulation and Coding Scheme TS 38.214 Table 5.1.3.1-1

A 5-bit index (0–31) carried in DCI field. Indices 29–31 are reserved for HARQ retransmissions (same modulation order, no new rate change).

  • MCS 0: QPSK, R = 120/1024 — most robust, used in coverage-limited edge cells.
  • MCS 9: QPSK, R = 602/1024.
  • MCS 10: 16QAM, R = 340/1024 — modulation order jump.
  • MCS 16: 64QAM, R = 466/1024.
  • MCS 27: 64QAM, R = 948/1024 — highest 64QAM rate.
  • MCS 28: 256QAM, R = 772/1024 — only when UE and gNB both support 256QAM.

Target BLER: 10% on the first transmission (BLER₁); after two HARQ rounds the residual BLER target is 1%. The MCS selection point is calibrated so that the long-run average initial BLER ≈ 10%.

RI and PMI

RI (Rank Indicator): the number of spatial layers the UE recommends based on the effective channel rank. Computed from the SVD of the estimated channel matrix \(\mathbf{H}\): the number of singular values above a threshold determines the recommended rank. For a 32-TRX gNB with up to 16 DL layers, each UE can report RI ∈ {1 … min(N_t, N_r)}.

PMI (Precoding Matrix Indicator): selects the codebook entry \(\mathbf{W}(\text{PMI})\) whose columns best align with the dominant right singular vectors of \(\mathbf{H}\). For Type I single-panel with (N1=8, N2=2), the codebook has two components: a wideband beam-group selector W₁ and a subband co-phasing/selection W₂.

Outer-Loop Link Adaptation (OLLA)

OLLA corrects systematic biases between the CQI-predicted SINR and the actual post-equaliser SINR. It maintains a running offset ΔOLLA:

\[ \text{SINR}_{\text{eff}} = \text{SINR}_{\text{measured}} + \Delta_{\text{OLLA}} \]

Update rule per HARQ feedback event:

\[ \Delta_{\text{OLLA}} \leftarrow \begin{cases} \Delta_{\text{OLLA}} + \alpha & \text{if ACK} \\ \Delta_{\text{OLLA}} - \beta & \text{if NACK} \end{cases} \]

where \(\beta / \alpha = p_{\text{target}} / (1 - p_{\text{target}})\) so that in steady state the ACK/NACK ratio drives Δ toward the operating point where BLER = ptarget = 10%. Typical step sizes: α = 0.1 dB, β = 0.9 dB.

TBS Computation Pipeline TS 38.214 §5.1.3.2
  1. Compute effective RE count per PRB: \( N'_{RE} = 12 \cdot N_{symb} - N_{DMRS} - N_{oh} \) where Noh is the configured overhead (typically 0 or 6).
  2. Total information bits (pre-quantisation): \( N_{\text{info}} = N'_{RE} \cdot N_{PRB} \cdot R \cdot Q_m \cdot \nu \) where R = code rate, Qm = modulation bits/symbol (2/4/6/8), ν = layer count.
  3. If \(N_{\text{info}} \leq 3824\): look up TBS from TS 38.214 Table 5.1.3.2-1 (quantised to standard block sizes).
  4. If \(N_{\text{info}} > 3824\): \[ \text{TBS} = 8 \cdot \left\lceil \frac{N_{\text{info}} + 24}{8} \right\rceil - 24 \]
System Insight — 16-Layer Peak Throughput

For our 16-layer, 132-RB, 100 MHz system: assume 8 UEs scheduled simultaneously each with rank-2 and CQI 12 (64QAM, R = 616/1024, Qm = 6). Effective symbols per slot per RB (14 sym − 2 DMRS = 12):

\[ \text{TP} = \frac{8 \;\text{UEs} \times 2 \;\text{layers} \times 132 \;\text{RBs} \times 12 \;\text{sym} \times 6 \;\text{bits/sym} \times \frac{616}{1024}} {0.5 \;\text{ms}} \approx 11 \;\text{Gbps} \]

This approaches the theoretical air-interface limit for this configuration.

MCS Table Excerpt TS 38.214 Table 5.1.3.1-1
MCS Index Modulation Code Rate (×1024) Spectral Eff. (bits/sym) Notes
0QPSK1200.234Edge, coverage-limited
5QPSK3780.740
9QPSK6021.176Last QPSK entry
1016QAM3401.32816QAM start
1664QAM4662.73064QAM mid-range
2764QAM9485.555Highest 64QAM
28256QAM7726.031Requires 256QAM table
MCS vs SINR — Throughput and BLER (100 PRBs, 1 layer)

Throughput (left axis) and BLER (right axis) vs. SINR per subcarrier for MCS 9, 16, and 27 over an AWGN channel with 100 PRBs allocated, 14 symbols/slot, μ=1.

Spectral Efficiency vs SNR — Shannon Bound + Practical MCS
Shannon capacity C = log₂(1+SNR) compared to practical 5G NR MCS points. Each MCS operates within ~1–2 dB of the Shannon limit. System target BLER 10% corresponds to the knee of the BLER vs SNR curve.
§17
HARQ TS 38.212 §7.3 · TS 38.213 §9
HARQ — Hybrid Automatic Repeat reQuest

HARQ combines two reliability mechanisms: FEC (forward error correction via LDPC coding) and ARQ (retransmission on failure). It is called "hybrid" because the receiver does not discard failed packets — it soft-combines them with future retransmissions before re-decoding, accumulating mutual information across attempts.

  1. gNB transmits PDSCH (code block group or full TB).
  2. UE attempts LDPC decode. On success → ACK; on failure → NACK.
  3. ACK/NACK is fed back via PUCCH resource (UCI).
  4. On ACK: gNB marks process as idle, schedules new TB. On NACK: gNB retransmits.
NDI, Chase Combining, and Incremental Redundancy

The NDI (New Data Indicator) is a 1-bit field in DCI:

  • Toggled: new transport block — UE flushes HARQ buffer for this process and starts fresh decoding.
  • Same value: retransmission — UE soft-combines with stored LLRs.

Redundancy Versions determine what bits are transmitted:

  • Chase Combining: RV=0 on every transmission. Identical systematic + parity bits. Effective code rate halves on second attempt → +3 dB combining gain.
  • Incremental Redundancy (IR): RV sequence 0 → 2 → 3 → 1. Each retransmission carries different parity bits (different puncturing pattern from the rate-1/3 mother code). The combined code rate after k transmissions: \[ R_{\text{combined}}^{(k)} = \frac{R_0}{k} \quad\text{(approximately, for equal-size transmissions)} \] IR outperforms Chase Combining when the channel is not AWGN (frequency-selective fading).
HARQ Processes and Pipelining

NR supports up to 16 parallel HARQ processes per UE (4-bit process ID in DCI). Parallel processes allow full pipelining: while process 0 awaits the ACK/NACK feedback, processes 1–N can be actively transmitting new data. Without pipelining the gNB would stall for the entire round-trip time between transmission and feedback.

Soft buffer (TS 38.212): each process stores LLRs up to the maximum TBS × 8 bits (one codeword). For large TBS (e.g., 500 kbits at peak rate) this requires significant UE memory; UE capability parameter Nsoft limits maximum soft buffer allocation.

HARQ Timing in TDD Pattern DDDSUUDDD TS 38.213 Table 9.2.3-1

With μ=1, Tslot = 0.5 ms. The 9-slot TDD pattern DDDSUUDDD repeats every 4.5 ms (9 slots). HARQ feedback timing K1 is signalled via DCI or RRC configuration:

  • PDSCH in DL slot 0 (t = 0 ms): K1 = 4 → PUCCH in slot 4 (t = 2.0 ms).
  • PDSCH in DL slot 1 (t = 0.5 ms): K1 = 3 → PUCCH in slot 4 (t = 2.0 ms).
  • PDSCH in DL slot 2 (t = 1.0 ms): K1 = 2 → PUCCH in slot 4 (t = 2.0 ms).
  • Earliest retransmission after NACK in slot 4: DL slot 6 (t = 3.0 ms).

Round-trip latency PDSCH → ACK ≈ 2 ms. Total retransmission turnaround ≈ 3 ms. This constrains scheduler pipeline depth: for the NACK in slot 4 to trigger a retransmission in slot 6, the scheduler and encoder must complete in 1 slot.

HARQ Timing for DDDSUUDDD, μ=1
PDSCH Slot Slot Type t (ms) K1 PUCCH Slot Earliest Retx Slot Retx t (ms)
0D0.044 (U)6 (D)3.0
1D0.534 (U)6 (D)3.0
2D1.024 (U)6 (D)3.0
6D3.0713/4 (U)15/6 (D)7.5
7D3.5613/4 (U)15/6 (D)7.5

Slot types: D=Downlink, S=Special (DL+GP+UL), U=Uplink. PUCCH carried on S or U slots. Slot notation A/B: A = absolute slot index (period 1), B = slot index within 9-slot pattern. For PDSCH in DL slots 6–8, the next UL slot is slot 13 (= pattern slot 4 of next period). K1 values are indicative; actual values from DCI field or RRC harq-ACK-codebook config.

MU-MIMO HARQ Interaction Warning

In a MU-MIMO system with 128 active UEs: if even one UE NACKs, the retransmission must reuse a DL slot spatial resource (possibly an entire layer or set of PRBs). The scheduler must balance new transmissions vs retransmissions. High per-UE BLER (e.g., 20%) can cause retransmission flooding: at 16 simultaneous layers, 16 × 20% = 3.2 processes per slot on average will need retransmission, consuming over 3 out of 16 available spatial degrees of freedom. Throughput degradation is thus disproportionately larger than the raw BLER percentage suggests.

HARQ Process Timeline — 16 Processes over 20 Slots

Gantt-style timeline for 16 HARQ processes over 20 slots (10 ms). TX=initial transmission, WAIT=awaiting ACK/NACK, ACK/NACK events at slot 4, and retransmission where applicable (process 2 and 5 shown with NACK → retransmission in slot 6). TDD pattern DDDSUUDDD shown as background shading.

HARQ State Machine: Each of the 16 HARQ processes is independently in state: IDLE → TX (gNB sends PDSCH) → WAIT_ACK (2 ms for PUCCH in DDDSUUDDD) → if ACK: back to IDLE; if NACK: → RETRANSMIT (send next RV, 1 ms later) → WAIT_ACK again. After max retransmissions (typically 4): → IDLE (RLC handles with ARQ). NDI toggle: flipped on new TB (indicates IDLE→TX), same for retransmission (RETRANSMIT→TX).
§18
Beamforming & Codebook TS 38.214 §5.2.2
Beamforming Architectures
Architecture RF Chains Feedback Overhead Performance Use Case
Analog BF 1 per panel Beam index (L1) Very low 1 beam direction, high gain mmWave single-user
Digital BF 1 per antenna PMI / SRS High (full MIMO) Optimal MU-MIMO capacity Sub-6 GHz massive MIMO
Hybrid BF M < N antennas PMI (per subband) Medium ~1 dB below digital mmWave MU-MIMO
Codebook (Type I) N (digital) PMI from table Low-medium Good for sparse channels FDD or TDD Type I UEs
Non-codebook N (digital) SRS → gNB computes W SRS overhead Best; exploits reciprocity TDD, good cal. 32TRX

Our 32TRX system uses fully digital beamforming: 32 independent RF chains drive 32 antenna elements, providing 32 degrees of freedom for spatial multiplexing. This enables up to 16 simultaneous spatial layers (2 polarisations × 8 beams) with arbitrary digital precoding — no phase-shifter constraints.

Type I Single-Panel Codebook TS 38.214 §5.2.2.2

Codebook for Nt = 32 antennas arranged as N1 × N2 = 8 × 2 dual-polarisation array (total physical ports = 2 × N1 × N2 = 32):

\[ \mathbf{W} = \mathbf{W}_1 \cdot \mathbf{W}_2 \]
  • W₁: wideband beam-group selector. Selects one beam from an 8×2 oversampled DFT grid. For O1=4 oversampling, grid size = O1·N1 × O2·N2 = 32×8 beams. W₁ picks a contiguous group of 4 beams in elevation × azimuth.
  • W₂ (subband): selects one beam from the group (rank-1) and applies co-phasing ∈ {+1, −1, +j, −j} between the two polarisations.
  • Rank 2: \(\mathbf{W} = \frac{1}{\sqrt{2}} \begin{bmatrix} \tilde{w}_1 & \tilde{w}_1 \\ \tilde{w}_1\phi_1 & -\tilde{w}_1\phi_1 \end{bmatrix}\) where φ₁ selects co-phasing for each column (layer).
  • Ranks 3–8: extend with multiple beam selections from W₁, maintaining dual-polarisation structure to maximise orthogonality between layers.
Type II Codebook TS 38.214 §5.2.2.3

Type II provides a richer spatial representation by combining L = 2 or 4 beams from an oversampled DFT grid with complex weighting coefficients:

\[ \mathbf{W}_2 = \sum_{l=1}^{L} c_{l} \cdot \mathbf{b}_l \]

where \(\mathbf{b}_l\) are DFT beam vectors and \(c_l \in \mathbb{C}\) are complex amplitude+phase coefficients fed back per subband per layer per polarisation.

  • Supports up to L=4 beams per polarisation per layer.
  • Rank support: basic Type II (TS 38.214 §5.2.2.3.1) supports ranks 1–2 only. Enhanced Type II (§5.2.2.3.2, Rel-16) extends to higher ranks with port selection; standard Type II does not support rank 4 or 8.
  • Gain over Type I at ranks 1–2: 3–5 dB in rich multipath channels (many significant spatial paths) at the cost of ~4× higher feedback payload.
  • Higher feedback overhead: O(L × Nsubbands × Nlayers) complex coefficients vs O(1) per layer for Type I.
  • Type II is particularly beneficial in indoor environments or dense urban macrocell with many reflectors, where the dominant-path structure enables efficient beam combination. For rank > 2, use Type I SP (up to rank 8 for Nt=32) or enhanced Type II.
Beam Management (P1/P2/P3) TS 38.213 §13
  • P1 — TX beam selection: UE measures L1-RSRP on SSB burst set (multiple beams swept in different directions). Reports best SSB index → gNB selects coarse TX beam. Beam sweeping period: 20 ms (half frame).
  • P2 — TX beam refinement: gNB transmits CSI-RS on multiple narrow beams around the P1-selected direction. UE reports best CSI-RS resource → narrows TX beam. Period: 5–80 ms depending on mobility.
  • P3 — RX beam refinement: gNB transmits a single CSI-RS beam; UE sweeps its own RX beams to find best RX direction. Relevant at mmWave with UE-side analog BF.
  • Beam Failure Detection (BFD): UE monitors reference signal RSRP. If RSRP falls below threshold for a configured number of consecutive slots → beam failure event. UE initiates Beam Failure Recovery (BFR): random access (PRACH) on best candidate beam → gNB re-establishes beam link.
Array Factor and HPBW for 32-Element ULA

For a uniform linear array (ULA) of M elements with inter-element spacing d and complex weights \(w_m\):

\[ AF(\theta) = \sum_{m=0}^{M-1} w_m \cdot e^{\,j2\pi m \frac{d}{\lambda} \sin\theta} \]

For uniform weights \(w_m = 1/\sqrt{M}\) and half-wavelength spacing d = λ/2, the half-power beamwidth (HPBW) is approximately:

\[ \text{HPBW} \approx \frac{0.886\lambda}{M \cdot d} = \frac{0.886}{M \cdot 0.5} \;\text{rad} = \frac{0.886 \times 180°}{M \cdot 0.5 \times \pi} \approx \frac{102°}{M} \]

For M = 32 elements: HPBW ≈ 102°/32 ≈ 3.2°. This narrow beamwidth enables precise spatial selectivity across a 120° sector cell, supporting ~37 resolvable beam directions in azimuth for 32 TRX.

Array gain relative to isotropic (in dB):

\[ G_{\text{array}} = 10\log_{10}(M) = 10\log_{10}(32) \approx 15.1 \;\text{dBi} \]
Codebook Performance — Spectral Efficiency vs Rank TS 38.214 §5.2.2

Spectral efficiency (bits/s/Hz) at 10 dB per-layer SNR and 32-path rich scattering channel (L=32 spatial paths). Type I vs Type II codebook, for ranks 1, 2, 4, and 8. Non-codebook (SRS-based, TDD reciprocity) shown as reference at each rank. Note: basic Type II (TS 38.214 §5.2.2.3.1) supports ranks 1–2 only; Type II rank 4/8 bars represent Enhanced Type II (Rel-16, §5.2.2.3.2) behaviour.

Beam Management Procedure Timeline TS 38.213 §13

Gantt-style timeline illustrating the P1 (SSB sweep), P2 (CSI-RS refinement), PDSCH data phase, beam failure event, BFR RACH, and beam recovery phases. Time axis in milliseconds; not to exact 3GPP scale but proportionally representative.

§19
O-RAN Fronthaul O-RAN WG4 TS 38.401

Functional Split Overview

3GPP TS 38.401 §6 defines eight functional split options for the NG-RAN architecture, ranging from Split 1 (between PDCP and RRC, leaving almost everything at the DU) to Split 8 (pure RF IQ sample transport — the full baseband stack sits centrally). The industry has converged on O-RAN Split 7-2x as the sweet-spot between centralisation gain and fronthaul burden.

O-RAN split comparison — key options
SplitO-RU functionsO-DU functions FH bandwidth (32 TRX, 100 MHz)FH latency requirement
6 (MAC/PHY) Full PHY + RF MAC, RLC, PDCP ~1–2 Gbps Relaxed, ~10 ms
7-1 (High/Low PHY) FFT/IFFT, CP, beamforming, RF Encoding/decoding, precoding, HARQ, MAC ~8–12 Gbps (uncompressed FD IQ) < 1 ms
7-2x (O-RAN) BF weight apply, IFFT/FFT, CP, RF, DPD Layer mapping, precoding, MCS, encode/decode, HARQ, MAC/RLC/PDCP ~25.5 Gbps peak (BFP-9, 32TRX) → 100GbE; ~6.4 Gbps with 8TRX → 25GbE < 200 μs U-plane
8 (IQ samples) RF only (DAC/ADC) Everything above RF ~126 Gbps at 122.88 Msps × 16b × 2 × 32 < 100 μs

Why 7-2x? Split 8 demands \(f_s \times 16\,\text{bit} \times 2\,(I{+}Q) \times 32\,\text{TRX} = 122.88 \times 10^6 \times 32 \times 32 \approx 125.8\,\text{Gbps}\) of raw fronthaul — infeasible over standard Ethernet. Split 7-2x moves the IFFT into the O-RU so only frequency-domain IQ (compressed) crosses the interface, and centralised baseband pooling becomes practical.

Fronthaul Bandwidth Calculation

Split 7-2x uncompressed (frequency domain IQ)

Per DL slot, the O-DU sends one frequency-domain IQ sample per subcarrier, per OFDM symbol, per antenna port:

\[ R_\text{FH,raw} = \frac{N_{RB} \times 12 \times N_{sym} \times N_{TRX} \times 2 \times 16\,\text{bit}}{T_{slot}} \] \[ = \frac{132 \times 12 \times 14 \times 32 \times 32\,\text{bit}}{0.5 \times 10^{-3}\,\text{s}} = \frac{22{,}708{,}224\,\text{bit}}{0.5\,\text{ms}} \approx 45.4\,\text{Gbps} \]

With BFP-9 compression

Block Floating Point (BFP) groups 12 IQ samples per PRB under a shared 4-bit exponent; the mantissas are reduced to 9 bits effective. Compression ratio ≈ 16/9 ≈ 1.78×:

\[ R_\text{FH,BFP} \approx \frac{45.4\,\text{Gbps}}{1.78} \approx 25.5\,\text{Gbps} \]

A 100GbE fronthaul link (after 64B/66B overhead ≈ 98.5 Gbps usable) comfortably accommodates this for a full 32-TRX configuration. In practice, many deployments use two bonded 25GbE links (totalling 50 Gbps raw) or a single 25GbE link with reduced antenna count (e.g., 8 TRX), since TDD asymmetry means DL and UL are not simultaneously at peak. For 8 TRX: \(45.4 / 4 \approx 11.4\,\text{Gbps}\) uncompressed, BFP-9 compressed ≈ 6.4 Gbps — fitting a 25GbE link with margin.

O-RAN CUS-Plane: Control, User, Synchronization

Fronthaul Latency Budget (O-RAN WG4 CUS §4)

Deep Dive: For complete T1a/tAdv/Ta3/Ta4 parameter definitions with worked examples, see §23 O-RAN Timing Parameters. For the full C-plane/U-plane order of events with Gantt chart, see §24 C/U-plane Order of Events. For channel-by-channel section type mapping (PDSCH→Type1, PRACH→Type3, etc.), see §25 O-RAN Channel Segregation.

The O-RAN WG4 CUS specification defines timing windows that bound when the O-DU must send data relative to the O-RU's scheduled transmission/reception time. All values below are for the category B low-latency profile.

O-RAN timing parameters — category B profile
ParameterValueMeaningConsequence if violated
T1a_max_cp_dl 1250 μs Latest DL C-plane may arrive before scheduled TX time O-RU ignores late C-plane; slot not scheduled → silent drop
T1a_min_cp_dl 285 μs Earliest DL C-plane arrival (before TX time); O-RU needs processing headroom C-plane too early is buffered; no harm but wastes buffer
T1a_max_up 196 μs Latest DL U-plane (IQ data) arrival before O-RU IFFT start O-RU cannot IFFT in time → FH_LATE_DROP visible in logsA
T1a_min_up 50 μs Earliest DL U-plane arrival; min buffer fill before IFFT IQ stored in O-RU buffer; acceptable
Ta3_max 1100 μs O-RU sends UL U-plane within this time after UL symbol end O-DU misses UL decode window; PUSCH dropped
Ta4_max 2200 μs O-DU must receive UL U-plane by this time after UL symbol end HARQ timeline broken; excessive retransmissions
Transport one-way budget < 75–100 μs Physical network latency O-DU ↔ O-RU Violating this forces T1a window collapse; loss of timing margin

The effective one-way transport latency budget follows from the U-plane window width: \[ \Delta t_\text{transport} < \frac{T_{2a,\max} - T_{2a,\min}}{2} = \frac{196 - 50}{2} \approx 73\,\mu\text{s} \] For a co-located O-DU/O-RU on the same rack this is trivial; for a remote O-RU at a cell tower it mandates a dark-fibre or dedicated Ethernet path with \(\leq 15\,\text{km}\) optical reach (round-trip light delay ≈ 100 μs per 10 km of fibre).

Block Floating Point (BFP) Compression

BFP exploits the fact that adjacent subcarriers in one PRB have similar magnitude (correlated channel energy). Per PRB (12 subcarriers):

  1. Find the maximum magnitude across the 24 I/Q values in the PRB.
  2. Express the common scale as a 4-bit exponent (shared header).
  3. Store each sample as a reduced-width mantissa (9 or 10 bits).

Effective bit rate per sample with 9-bit mantissa + 4-bit exponent per 24 values:

\[ b_\text{eff} = 9 + \frac{4}{24} \approx 9.17\,\text{bit/sample} \quad\text{vs.}\quad 16\,\text{bit/sample (uncompressed)} \]

O-RAN supports multiple compression modes: no compression, BFP (most common), μ-law, and beam-space compression (compresses in beam domain for massive-MIMO RUs). Compression type and exponent width are negotiated in the M-plane at O-RU startup.

eCPRI Protocol Basics

Insight

For 32 TRX at 100 MHz with BFP-9: fronthaul bandwidth ≈ 25.5 Gbps peak (full slot, all 32 TRX). In DDDSUUDDD the DL duty cycle is ≈ 74% (6 full DL slots + 10/14 of special slot out of 9 slots), so average DL fronthaul ≈ 18.9 Gbps. A 100GbE interface handles this for full 32-TRX. With 8 TRX (typical macro RU): ≈ 6.4 Gbps BFP-9, fitting a 25GbE link with margin for C-plane and S-plane overhead.

Warning

Fronthaul latency is critical: if U-plane IQ arrives at the O-RU less than 50 μs before the scheduled IFFT start (violating T1a_min_up), the RU must hold the packet in a shallow buffer — or if the buffer overflows, the subframe is silently dropped. This appears in logsA as FH_LATE_DROP count=N slot=K. Always monitor O-RU fronthaul statistics via the M-plane (NETCONF/YANG) performance-measurement container to catch transport jitter before it becomes a throughput issue.

Analogy

The O-RAN split is like a conductor (O-DU) sending sheet music (C-plane) and individual pre-recorded instrument tracks (U-plane IQ) to remote orchestra sections (O-RUs). The conductor must dispatch both early enough — sheet music well before the performance (T1a_max_cp_dl = 1250 μs ahead), tracks just in time for the musicians to cue up (T1a_max_up = 196 μs ahead). If the tracks arrive too late, the musicians play silence; if the sheet music never arrives, they improvise — neither is acceptable in a 5G slot.

Specifications: O-RAN.WG4.CUS §4 TS 38.401 §6 eCPRI spec v2.0

§20
End-to-End Flow: Cell Search → RACH → Data TS 38.213 §8 TS 38.321

Phase 1 — Initial Cell Search

A UE (nodeB) powering on in a 5G NR cell knows nothing about the network. Cell search proceeds through a fixed sequence governed by the SSB (SS/PBCH Block):

  1. GSCN scan: UE sweeps the Global Synchronization Channel Number grid (spaced 1.44 MHz on FR1) looking for the Primary Synchronization Signal (PSS). PSS is a length-127 m-sequence in the centre 132 subcarriers of the SSB. PSS correlation gives N_ID2 ∈ {0,1,2} and coarse time/frequency sync.
  2. SSS detection: Secondary Synchronization Signal (Gold sequence) encodes N_ID1 ∈ {0..335}. \[N_{\text{cell\_ID}} = 3 \cdot N_{ID1} + N_{ID2} \in \{0\ldots 1007\}\]
  3. PBCH decode: Physical Broadcast Channel delivers the MIB (Master Information Block): SFN[9:4], \(k_{SSB}\) (SSB subcarrier offset), CORESET#0 configuration, and \(\mu\) of common control.
  4. SIB1 receive: gNB (nodeA) schedules SIB1 in CORESET#0 every 160 ms. UE decodes Type0-PDCCH to find SIB1 PDSCH → gets PLMN list, RACH configuration (preamble root, occasion times), TAC, cell barring status.

Phase 2 — RACH Procedure (4-message Handshake)

In DDDSUUDDD (slots 0–8 per 4.5 ms pattern), PRACH can only occupy the UL slots: slot 4 (first UL) and slot 5 (second UL), or UL symbols within the special slot (slot 3). With SCS 30 kHz, each slot = 0.5 ms, so slot 4 starts at \(t = 2.0\,\text{ms}\) in the pattern.

Msg1 — PRACH (slot 4, t = 2.0 ms)

The UE randomly selects a preamble index (0–63) from a root ZC sequence set configured in SIB1. The Zadoff-Chu root index \(u\) and cyclic shift \(N_{cs}\) determine the preamble set size. UE transmits PRACH format 0 (or short format C0/C2 for μ=1) in the configured PRACH occasion. logsA at nodeA:

logsA [slot= 4]: RACH_DET prn=37 ta=128 rsrp=-82dBm rnti_tmp=0xC3A1 slot=4

The detected timing advance ta=128 corresponds to a one-way propagation delay of: \[\tau = \frac{TA \times T_s}{2} = \frac{128}{2 \times 122.88 \times 10^6} \approx 0.52\,\mu\text{s} \quad(\approx 156\,\text{m})\]

Msg2 — RAR, Random Access Response (slot 6, t = 3.0 ms)

The gNB must transmit the RAR within the RA-Response window (configured 1–10 slots after Msg1). In DDDSUUDDD, the first DL slot after slot 4 is slot 6 (the next DL burst starts at slot 6 of the same pattern, t = 3.0 ms). The RAR PDSCH carries:

logsA [slot= 6]: RAR_TX rnti=0xC3A1 ta_cmd=128 ul_grant=prb12..43 t_crnti=0xC3A1

Msg3 — RRC Setup Request (slot 13, t = 6.5 ms)

UE transmits Msg3 on PUSCH using the UL grant from RAR, after applying the TA command. Msg3 contains RRC Setup Request with UE identity (S-TMSI or random value for contention resolution).

Important TDD constraint: in DDDSUUDDD, slots 7 and 8 are Downlink slots — the UE cannot transmit PUSCH on them. The RAR is received in slot 6 (DL, t=3.0 ms); the next available UL slots are slot 13 and 14 of the next 9-slot period (t = 6.5 ms and 7.0 ms). The gNB UL grant in the RAR points to slot 13 (K2 = 7 relative to slot 6).

logsA [slot=13]: PUSCH_DEC rnti=0xC3A1 prb=12..43 mcs=4 rv=0 crc=PASS
logsA [slot=13]: MSG3_RX  ue_id=0x3F2A09C1 (random)

Msg4 — RRC Setup / Contention Resolution (slot 15, t = 7.5 ms)

gNB sends Msg4 on PDSCH addressed by the temporary C-RNTI. Msg4 echoes the UE identity from Msg3 for contention resolution — only the UE that sees its own identity transitions to RRC Connected; others reset and retry with random backoff. The earliest DL slot after gNB decodes Msg3 (slot 13) is slot 15 (= pattern slot 6 of the second period, t = 7.5 ms).

logsA [slot=15]: PDSCH_TX rnti=0xC3A1 msg4 ue_id=0x3F2A09C1 → CONTENTION_RESOLVED

Phase 3 — Data Flow: 128-UE Scenario

Downlink pipeline

  1. IP packet arrives at gNB → SDAP header → PDCP (ciphering/integrity) → RLC (segmentation into SDUs) → MAC PDU assembly with BSR/PHR subheaders.
  2. MAC scheduler evaluates all 128 connected UEs using Proportional Fair (PF) metric: \[M_k = \frac{R_k(t)}{\bar{R}_k(t)}\] where \(R_k(t)\) is the instantaneous achievable rate and \(\bar{R}_k(t)\) is the exponential moving average throughput. Up to 8 UEs are co-scheduled in MU-MIMO per slot.
  3. DCI format 1_1 (for DL) generated per scheduled UE → mapped to CORESET → PDCCH DMRS + CCE aggregation → transmitted in first 1–3 symbols.
  4. PDSCH on allocated RBs with beamforming weight \(\mathbf{W}\) from latest SRS: \[\mathbf{y} = \mathbf{W}\,\mathbf{x} + \mathbf{n}\] Up to 16 spatial layers (rank-16 DL) across 8 co-scheduled UEs × up to 2 layers each.
  5. UE ACK/NACK on PUCCH format 0 in next UL slot (slot 4 or 5).
logsA [slot= 0]: PDCCH rnti=1001 dci=1_1 prb=0..131 mcs=22 layers=2 bw_idx=3
logsA [slot= 0]: PDSCH rnti=1001 tb=45056bytes rv=0 harq_id=2
logsA [slot= 4]: PUCCH rnti=1001 fmt=0 harq=ACK

Uplink pipeline

  1. UE has data in buffer → sends SR (Scheduling Request) on PUCCH format 0 in PUCCH resource configured by RRC.
  2. gNB receives SR → allocates PUSCH via DCI format 0_1 in next DL slot.
  3. UE transmits PUSCH in UL slot using allocated PRBs, MCS, and number of layers (up to 4 UL layers with SRS-based precoding).
  4. O-RU performs FFT, CP removal, frequency-domain IQ → sent via U-plane to O-DU.
  5. O-DU: channel estimation (DMRS) → equalization → LDPC decode → CRC check → HARQ combine if needed.
logsA [slot= 4]: SRS   ue=42 bw=44 hop=0 rsrp=-75dBm rank_est=2
logsA [slot= 5]: PUSCH ue=42 prb=12..43 mcs=15 rv=0 crc=PASS layers=2
logsB [slot= 4]: PUCCH tx harq=ACK
logsB [slot= 5]: PUSCH tx prb=12..43 mcs=15

Beamforming Update Cycle in DDDSUUDDD

With a 9-slot TDD pattern (period = 4.5 ms), the BF weight update cycle is:

Full logsA / logsB Trace Example (steady-state, MU-MIMO)

logsA [slot=  0]: PDCCH rnti=1001 dci=1_1 prb=0..131  mcs=22 layers=2 bw_idx=3
logsA [slot=  0]: PDCCH rnti=1002 dci=1_1 prb=0..63   mcs=18 layers=2 bw_idx=1
logsA [slot=  0]: PDSCH rnti=1001 tb=45056bytes rv=0 harq_id=2
logsA [slot=  0]: PDSCH rnti=1002 tb=20480bytes rv=0 harq_id=0
logsA [slot=  0]: MU_MIMO paired=[1001,1002,1003,1004] rank_total=8

logsA [slot=  3]: PDCCH rnti=1001 dci=0_1 prb=12..43  mcs=15  ← UL grant in special
logsA [slot=  4]: PUCCH rnti=1001 fmt=0  harq=ACK
logsA [slot=  4]: PUCCH rnti=1002 fmt=0  harq=NACK     ← retransmit triggered
logsA [slot=  4]: SRS   ue=42  bw=44 hop=0 rsrp=-75dBm rank_est=2
logsA [slot=  4]: PRACH prn=37 ta=128 rsrp=-82dBm      ← new UE attaching
logsA [slot=  5]: PUSCH rnti=1001 prb=12..43 mcs=15 rv=0 crc=PASS
logsA [slot=  5]: PUSCH rnti=1003 prb=44..75 mcs=12 rv=0 crc=PASS

logsA [slot=  6]: PDCCH rnti=1001 dci=1_1 prb=0..131  mcs=23 layers=2 ← updated BF
logsA [slot=  6]: PDCCH rnti=1002 dci=1_1 prb=0..63   mcs=18 layers=2 rv=1  ← NACK retx
logsA [slot=  6]: RAR_TX rnti=0xC3A1 ta_cmd=128 ul_grant=prb12..43

logsB [slot=  0]: PDCCH decoded DCI 1_1 prb=0..131
logsB [slot=  0]: PDSCH decode OK  crc=PASS layers=2
logsB [slot=  4]: PUCCH tx harq=ACK
logsB [slot=  5]: PUSCH tx prb=12..43 mcs=15
  

Full PHY Pipeline Latency Breakdown

DL/UL round-trip latency budget — μ=1 SCS 30kHz (T_slot = 0.5ms)
StageTypical latencyNotes
gNB: MAC scheduling decision 50–100 μs PF metric, DCI formatting, beamformer selection for 128 UEs
gNB: LDPC encoding + rate matching 20–50 μs Hardware LDPC accelerator; 5Gbps throughput engines
gNB: Precoding + OFDM modulation (IFFT) 10–30 μs 4096-pt IFFT × 14 sym; GPU or FPGA pipeline
Fronthaul O-DU → O-RU (U-plane) 50–100 μs Must satisfy T1a window; fibre + switching latency
O-RU: IFFT (if split 7-2x, RU-side) 10–20 μs FPGA IFFT, CP insertion
Over the Air propagation (example 100m) 0.33 μs \(d/c\)
UE: OFDM demodulation + channel estimation 100–200 μs MMSE channel estimation across 132 PRBs
UE: LDPC decode (PDSCH) 200–500 μs Iterative decoding, 8–50 iter; UE hardware limited
UE: HARQ-ACK preparation + PUCCH TX ~3ms HARQ timing (N1) 3GPP mandates 3-slot (N1) minimum UE processing time at SCS 30kHz
DCI → PDSCH → ACK round trip ~3.5 ms Slot 0 DL → slot 4 ACK = 4 slots × 0.5ms + UE processing
HARQ retransmission (if NACK) +4–8 ms Additional round-trip; 8 HARQ processes allow parallel tx

RACH Configuration Parameters

RACH parameters — μ=1, DDDSUUDDD, 128-UE scenario
ParameterValue / RangeSignificance
Preamble format Format 0 (long, 839) or C0/C2 (short, 139) Long format: better range; short: lower latency; μ=1 supports C-formats
Preamble count per occasion 64 (configurable) 64 = full set from one ZC root; more roots → more preambles, less collision
Root ZC sequences 1–838 (configurable set) Multiple roots needed if cell radius requires large N_cs (≤2 preambles/root)
PRACH occasion slots Slots 4, 5 (UL slots in pattern) DDDSUUDDD: 2 UL slots per 4.5ms; PRACH occasion in both or alternate
RA-ResponseWindow 10 slots (5 ms) UE monitors PDCCH RA-RNTI for RAR; window starts slot after PRACH
Msg3 retransmissions up to 4 Each retry needs new UL grant from gNB
Contention resolution timer 64 ms (configurable) UE waits this long for Msg4 before declaring RA failure
End-to-end RACH latency (Msg1→Connected) ~5.5–6.0 ms Msg1 slot 4 → RAR slot 6 → Msg3 slot 13 (next UL) → Msg4 slot 15 (next DL)
Collision probability (128 UEs, 64 preambles) P(collision) ≈ 1 − e^{−128/64} ≈ 86% Simultaneous random access storm; stagger access or expand preamble pool

The collision probability with \(N_{UE}=128\) UEs each choosing uniformly from 64 preambles is approximately:

\[ P(\text{at least one collision}) = 1 - \prod_{k=0}^{N_{UE}-1}\frac{64-k}{64} \approx 1 - e^{-N_{UE}/64} = 1 - e^{-2} \approx 86\% \]

In practice, access attempts are staggered by the UE stack (IDLE → RACH trigger is spread over random back-off windows) so the effective simultaneous load is far lower than 128. The gNB also supports 2-step RACH (Msg1 + Msg3 combined in msgA) standardised in 3GPP Rel-16 to reduce latency and collision impact for large UE populations.

Study

RACH→data pipeline in DDDSUUDDD timing (slot = 0.5 ms): Msg1 at slot 4 (t = 2.0 ms) → RAR at slot 6 (t = 3.0 ms, first DL slot after Msg1) → Msg3 at slot 13 (t = 6.5 ms, next period's first UL slot; slots 7–8 are DL) → Msg4 at slot 15 (t = 7.5 ms, first DL slot after gNB decodes Msg3). Total RA latency ≈ 5.5 ms from PRACH start to contention resolved. Note: in TDD DDDSUUDDD the large gap between RAR (slot 6, DL) and Msg3 (slot 13, UL next period) is an inherent overhead of the TDD pattern — there are no UL slots between slot 6 and slot 13.

Insight

With 128 UEs in RRC_CONNECTED and the DDDSUUDDD pattern: the MAC scheduler runs at 2000 slot decisions/sec (1/0.5ms). At peak MU-MIMO with 8 UEs co-scheduled per slot, logsA logs 8 DCIs in CORESET + 8 PDSCH allocations per DL slot + 8 HARQ-ACK entries three slots later. Full pipeline latency: DCI (slot n) → PDSCH (slot n) → PUCCH ACK (slot n+4, i.e. 2.0 ms) → retransmit if needed (earliest slot n+6, t=3.0 ms). Sustaining this for 128 UEs requires a MAC/scheduler running in < 50 μs per slot cycle.

Warning

RACH contention storm: if 128 UEs all attach simultaneously (e.g., power outage recovery), preamble collision rate is very high. Both colliding UEs receive a RAR (the gNB cannot distinguish them yet), both send Msg3 — the gNB detects the collision in Msg4 contention resolution because only one UE identity matches. The losing UE backs off (random delay, typically 0–20 ms) and retries. Monitor logsA for RA_CONTENTION_FAIL count=N — a spike here indicates RACH configuration (N_roots, occasion density) needs tuning for your UE load profile.

Specifications: TS 38.213 §8 TS 38.321 §5.1 TS 38.300 §8 (RRC states) TS 38.211 §7.4 (PRACH)

§21
DL Throughput Calculator TS 38.214 §5.1
Pre-configured for our reference system: DL at full 132 PRBs, rank-4, MCS 22 (256QAM), 4 MU-MIMO UEs = system throughput ~2.26 Gbps (12 data symbols). Peak single-user: MCS 28, 16 layers, 156 RE/PRB ≈ 4.85 Gbps. Adjust sliders to explore trade-offs. (μ=1, SCS=30 kHz, BW=100 MHz, Tslot=0.5 ms, DDDSUUDDD pattern.)
DL Calculator
UL Calculator
Max 132 for 100 MHz / μ=1
14 total − 2 DMRS symbols = 12 typical
Per-UE rank; MU-MIMO = layers × UEs ≤ 16
MCS 22 → 256QAM, R≈0.505
Type1 single-sym 2CDG = 12 RE/PRB; Type1 single-sym 1CDG = 6
PTRS, reserved RE; 0 if none
Each UE scheduled independently; system sum = TBS × UEs

DL Results (per slot, Tslot=0.5 ms)

Data RE per PRB (N_RE′)
Total active data RE (N_RE)
Modulation order Qm
Code rate R
N_info (pre-quantization, bits)
TBS per UE
PDSCH layers per UE
MU-MIMO UEs scheduled
System Throughput
MU-MIMO note: For MU-MIMO (multi-user) DL at 16 layers: this is 8 UEs × rank-2 each. Set N_layers=2 to see per-UE throughput, then multiply by 8 for system total.
Default 66 — ~half BW for UL in TDD
Full slot = 14 sym
Max 4 UL layers (UE TX capability)
MCS 16 → 64QAM, R≈0.540
DFT-s-OFDM: contiguous PRBs only, Qm capped at 4 (16QAM)
Type1 single-sym UL = 6 RE/PRB typical
PTRS, reserved RE
UL limited to 4 layers (UE TX capability per TS 38.214 §6.1.4.2). DFT-s-OFDM restricts modulation order to Qm ≤ 4 (QPSK / 16QAM) and requires contiguous PRB allocation. DFT-s-OFDM is intended for coverage-limited single-stream UEs; CP-OFDM must be used for PUSCH with more than 1 spatial layer (TS 38.214 §6.1.3).

UL Results (per slot, Tslot=0.5 ms)

Data RE per PRB (N_RE′)
Total active data RE (N_RE)
Waveform
Modulation order Qm
Code rate R
N_info (pre-quantization, bits)
TBS (PUSCH)
UL Spatial layers
UL Throughput
AWGN SINR Thresholds for 10% BLER (Reference)
MCS Modulation Code Rate SINR Threshold (approx)
0 QPSK 0.117−3.0 dB
4 QPSK 0.3011.5 dB
7 16QAM 0.3815.0 dB
1116QAM 0.6637.0 dB
1664QAM 0.54012.5 dB
22256QAM 0.50518.5 dB
26256QAM 0.70222.0 dB
28256QAM 0.92626.0 dB
§22
PDSCH / PUSCH RE Allocation Calculator TS 38.211 §7.4.1 TS 38.214 §5.1.3

After DMRS, PT-RS and other reference signals are placed, the remaining resource elements (REs) carry data. The number of net data REs directly bounds the Transport Block Size (TBS). This calculator lets you sweep DMRS configurations and instantly see the impact on available capacity.

Calculator 1 — DMRS Configuration & RE Overhead
4
For 16-layer DL (Type 1 double-symbol): 2 CDM groups × 4 ports/CDG × 2 OCC = 8 ports per symbol pair, requires 2 DMRS symbols.
+1 RE/PRB per data symbol for phase tracking
132
Live Results
Total slot REs / PRB
DMRS symbol count (including additional)
DMRS RE removed / PRB
PT-RS RE / PRB (if enabled)
CDM SC used per DMRS symbol:
Net data RE / PRB / slot
DMRS overhead %
Total data RE / slot (NPRB × NRE)
N_RE = 12 × (N_symb − N_DMRS_sym) − N_PTRS
RE breakdown per PRB per slot
Data
DMRS
PTRS
DMRS SC Assignment Reference (per PRB per DMRS symbol)
TypeCDM GroupsDMRS SC / PRB / symbol Free SC in DMRS symbolPort capacityNotes
Type 116 (SC 0,2,4,6,8,10)62 portsOdd SC free for data (rare)
Type 1212 (all SC)04 portsEntire symbol used by DMRS
Type 214 (SC 0,1,6,7)82 portsType 2 advantage: 8 data SC even in DMRS symbol
Type 228 (SC 0,1,2,3,6,7,8,9)44 ports
Type 2312 (all SC)06 ports (12 with 2 sym)MU-MIMO: orthogonal CDM groups per UE
PRB Symbol Grid (12 SC × Nsymb symbols)

One PRB, one slot. Columns = OFDM symbols (0–13), rows = subcarriers (SC 0–11 within PRB). Hover a cell for details. Grid updates live with controls above.

Data RE
DMRS RE
PT-RS RE
Unused (guard)
Calculator 2 — Quick TBS Estimator TS 38.214 §5.1.3.2

Uses net data RE count from Calculator 1. MCS table 2 (256QAM, TS 38.214 Table 5.1.3.1-2).

16
— (from Calculator 1)
— (from Calculator 1)
TBS Estimate
Modulation order (Qm)
Code rate (R)
Effective bits / RE
Ninfo (raw info bits)
TBS (quantized)
Throughput @ 1 slot/ms (μ=0)
N_info = N_RE × R × Q_m × ν
32TRX / 16-layer system insight: For Type 2 double-symbol DMRS with 3 CDM groups, all 12 SC in both DMRS symbols are occupied — 24 RE/PRB removed, giving 144 net data RE/PRB out of 168 (≈14.3% DMRS overhead). With fewer CDM groups (e.g. 1 CDM group, Type 2), only 8 SC/PRB are occupied in each DMRS symbol — the raw count would be 160 data RE, but TS 38.214 §5.1.3.2 caps N_RE at 156 RE/PRB (≈6.5% overhead at cap). This supports only 2 ports per DMRS symbol, requiring careful MU-MIMO scheduling.
§23
O-RAN Fronthaul Timing Parameters O-RAN.WG4.CUS §4 O-RAN.WG4.CUS §7

Timing Reference Model

Every O-RAN fronthaul timing parameter is defined relative to a single anchor point: T_ref, the moment of Over-The-Air (OTA) symbol transmission. T_ref is the "heartbeat" of the system — it is the instant at which the O-RU begins radiating the first sample of a scheduled OFDM symbol. All timing windows express how far in advance (negative offset) or how far after (positive offset) a message must arrive relative to T_ref.

Both O-DU and O-RU are independently synchronized to a common absolute time reference via the S-plane (IEEE 1588v2 PTP). Because both ends share the same T_ref, the O-DU can compute exactly when to dispatch C-plane or U-plane messages so that they arrive at the O-RU within the required timing windows, accounting for the one-way fronthaul transit delay τFH.

Timing reference model — roles and constraints
Entity Role Timing reference Constraint
O-DU Generates C-plane (scheduling) and U-plane (IQ data); sends ahead of T_ref PTP-synchronized local clock; applies tAdv offset Must dispatch messages so arrival at O-RU is within T1a/Ta windows
O-RU Receives C-plane + U-plane; executes IFFT; transmits OTA at T_ref PTP-synchronized local clock; T_ref = OTA symbol start Discards messages arriving outside the configured timing window
S-plane Distributes phase and frequency reference to O-DU and O-RU IEEE 1588v2 grandmaster (GNSS-disciplined) Max time error ±130 ns at O-RU (O-RAN category B)

DL Timing Parameters — T1a Family

Downlink fronthaul uses two separate delivery windows: one for the C-plane (scheduling commands and beamforming weight indices) and one for the U-plane (compressed IQ data for the IFFT). These windows do not overlap — C-plane must arrive significantly earlier to give the O-RU time to configure its processing pipeline before the IQ data arrives.

T1a_max_cp_dl — Maximum advance for DL C-plane

The C-plane message for a DL symbol must arrive at the O-RU no earlier than T1a_max_cp_dl before the scheduled OTA transmission. If the message arrives before this deadline, the O-RU may discard it as stale. The O-DU therefore has a window defined by [−T1a_max_cp_dl, −T1a_min_cp_dl] relative to T_ref to deliver each C-plane section.

The wider Category B window (1250 μs = 2.5 T_slot) reflects that low-latency deployments have predictable, stable fronthaul and can afford to send C-plane much earlier, keeping the O-RU's internal scheduling queue full.

T1a_min_cp_dl — Minimum advance for DL C-plane

The O-RU requires a minimum processing time after receiving the C-plane message before it can execute the corresponding symbol — this includes parsing the section headers, loading beamforming weight indices, and configuring the digital front-end. C-plane arriving later than −T1a_min_cp_dl is too late and will be discarded.

T1a_max_up — Maximum advance for DL U-plane

U-plane IQ data must arrive at the O-RU inside its IFFT scheduling buffer, but not so early that the buffer overflows (the O-RU drops data arriving before −T1a_max_up). The U-plane window is substantially tighter than the C-plane window because IQ data volumes are much larger and the O-RU buffer is shallow.

T1a_min_up — Minimum advance for DL U-plane

After receiving U-plane IQ, the O-RU needs at minimum T1a_min_up to perform the IFFT, add the cyclic prefix, apply digital pre-distortion (DPD), and ramp the PA. IQ arriving within −T1a_min_up of T_ref cannot be processed in time and is dropped — a missed symbol.

Insight

For our 30 kHz SCS system: T_slot = 500 μs. The DL C-plane window [−1250 μs, −285 μs] spans exactly 2.5 slots. This means the O-DU L2 scheduler must finalize allocation decisions — including MCS selection, PRB assignment, and beamforming weight lookup for all 32 TRX — at least 2.5 slots before the corresponding DL symbol reaches the air. This is the fundamental driver of the O-RAN FH pipeline scheduling deadline: the MAC/PHY stack must run in <285 μs end-to-end to avoid C-plane late delivery.

tAdv — O-DU Timing Advance Compensation

In a distributed system, the O-DU and O-RU share the same T_ref clock (via PTP), but the O-DU's messages must traverse a physical fronthaul path with one-way latency τFH. Without compensation, the O-DU would need to subtract τFH mentally from every timing calculation. Instead, O-RAN introduces tAdv: the O-DU shifts its entire transmission schedule forward by tAdv so that messages arrive at the O-RU at the correct time relative to T_ref.

Derivation

Let t = 0 be T_ref (OTA symbol start). The O-RU's IFFT window opens at t = −T1a_max_up = −196 μs (Category B). For IQ data to arrive exactly at that moment:

\[ t_\text{send} + \tau_{FH} = -T1a\_max\_up \] \[ t_\text{send} = -T1a\_max\_up - \tau_{FH} \]

With τFH = 50 μs (10 km fiber at 2×105 km/s):

\[ t_\text{send} = -196 - 50 = -246\;\mu s \quad \text{(before T\_ref)} \]

More generally, tAdv is the additional pre-advance the O-DU applies relative to a nominal reference offset, configured via OAM (M-plane NETCONF) or measured via PTP delay requests:

\[ \text{tAdv} \approx \tau_{FH,\text{measured}} \]

The O-DU adjusts its local slot counter to start all FH transmissions tAdv earlier. If τFH changes (fiber rerouting, temperature- induced delay drift), tAdv must be updated — a mismatch creates a systematic timing offset that manifests as U-plane arriving consistently early or late at the O-RU.

Study

tAdv = fronthaul delay compensation. The O-DU measures τFH via the PTP two-step delay measurement (Delay_Req / Delay_Resp) or by OAM-configured static value. If τFH changes due to temperature (fiber delay coefficient ≈ 3.8 ns/km/°C for SMF), a 10 km fiber over a 40°C swing shifts by ≈1.5 μs — well within the T1a windows, but worth monitoring. Mismatched tAdv by >50 μs causes systematic U-plane late arrival → IFFT window missed → coverage hole that is invisible in RF measurements but visible as elevated FH_UPLANE_LATE counters in the O-RU M-plane performance report.

UL Timing Parameters — Ta3 and Ta4

Uplink fronthaul timing measures the delay between the end of a received UL OFDM symbol at the O-RU antenna and the delivery of the corresponding compressed IQ U-plane packet to the O-DU. Two parameters bound this delay.

Ta3 — O-RU UL Turnaround Time

After the last sample of a UL symbol is received at the O-RU ADC, the O-RU must: apply AGC/BFP compression, packetize into eCPRI U-plane frames, and begin transmission on the fronthaul. Ta3 is the time between end of UL symbol and start of O-RU U-plane transmission on the fronthaul interface.

Ta4 — O-DU UL Receive Deadline

Ta4 is the time from end of UL symbol to completion of O-DU U-plane reception. It adds the fronthaul transit delay to Ta3:

\[ Ta4 = Ta3 + \tau_{FH} \]

In our DDDSUUDDD pattern (T_slot = 500 μs), UL slots are slots 4 and 5 (t = 2.0 ms and t = 2.5 ms from subframe start). The earliest DL retransmit opportunity after slot 5 is slot 6 (t = 3.0 ms) — only 500 μs after slot 5 ends. For the O-DU to decode PUSCH and generate a HARQ-NACK within that window, the practical Ta4 must be well below 300 μs. Ta4_max = 2200 μs applies only to non-real-time delivery paths (e.g., UL for higher-layer logging); HARQ requires Ta4 < 500 μs in the DDDSUUDDD TDD configuration.

Warning

The T1a U-plane window is strict in both directions. If U-plane IQ arrives before −T1a_max_up (too early), the O-RU shallow buffer overflows and the packet is discarded as premature. If it arrives after −T1a_min_up (too late), the O-RU has already committed the IFFT — the symbol is transmitted as zeros. Both failure modes are silent at the RF level but surface in logsA as FH_UPLANE_LATE and FH_UPLANE_EARLY counters on the O-RU M-plane interface. Monitor these counters per slot for all 32 TRX ports before declaring a fronthaul link healthy.

Complete Timing Parameter Table

O-RAN WG4 CUS fronthaul timing parameters — Category A and B
Parameter Category A Category B Definition
T1a_max_cp_dl 500 μs 1250 μs Latest time O-DU may send DL C-plane (relative to T_ref); O-RU discards earlier arrivals
T1a_min_cp_dl 250 μs 285 μs Earliest deadline for DL C-plane at O-RU; O-RU cannot process later arrivals
T1a_max_up 200 μs 196 μs Latest arrival for DL U-plane IQ at O-RU before IFFT window opens
T1a_min_up 50 μs 50 μs Minimum time O-RU needs after IQ receipt to execute IFFT + CP + DPD
T1a_max_cp_ul 500 μs 1250 μs Latest time O-DU may send UL C-plane (grant for PUSCH reception)
T1a_min_cp_ul 250 μs 285 μs Minimum advance for UL C-plane at O-RU; O-RU needs time to configure UL FFT
Ta3_max 1100 μs Max time from end of UL symbol to O-RU starting fronthaul U-plane transmission
Ta3_min 25 μs Min O-RU UL processing time before forwarding IQ (AGC + BFP + eCPRI pack)
Ta4_max 2200 μs Max time from end of UL symbol to O-DU completing U-plane reception (Ta3 + τ_FH)
Ta4_min 0 μs No lower bound — O-DU must accept IQ immediately once it arrives
tAdv site-dependent ≈ τFH O-DU pre-advance offset; compensates for one-way fronthaul transit delay

Worked Example — 30 kHz / DDDSUUDDD / 10 km Fiber

Assumptions

DL Transmission Timeline

The O-DU must send C-plane no later than t = −T1a_min_cp_dl = −285 μs, and no earlier than t = −T1a_max_cp_dl − τFH = −1250 − 50 = −1300 μs relative to T_ref (accounting for transit so that arrival at O-RU is within window). For U-plane: send at t = −T1a_max_up − τFH = −196 − 50 = −246 μs so arrival at O-RU is at t = −196 μs (exactly at IFFT window open).

Worked timeline — DL slot 0, UL slot 4, HARQ retransmit window (τ_FH = 50 μs, Cat B)
Time (μs)EventDetail
−1300O-DU sends DL C-planeSection Type 1: PRB alloc, BF weight indices for 32 TRX, MCS, slot type. Arrives O-RU at −1250 μs ✓ (within [−1250,−285] μs window)
−1250C-plane arrives at O-RUO-RU parses BF weights; configures IFFT engine for slot 0
−246O-DU sends DL U-plane132 PRBs × 32 TRX × 14 symbols of BFP-9 compressed IQ. Arrives O-RU at −196 μs ✓ (T1a_max_up boundary)
−196U-plane arrives at O-RU; IFFT window opensO-RU loads IQ into IFFT input buffer; starts OFDM modulation pipeline
−50O-RU completes IFFT + CP + DPD14 symbol outputs ready; PA ramp begins (T1a_min_up satisfied)
0T_ref: OTA symbol 0 begins32 TRX radiate DL slot 0 symbol 0 simultaneously
+33Symbol 0 ends; symbol 1 OTAEach symbol ≈ 33.33 μs + CP (2.34 μs normal CP at SCS=30 kHz)
+500DL slot 0 ends14 symbols × 35.68 μs avg (with CP) = 500 μs ✓
+2000UL slot 4 begins (DDDSUUDDD)Slots 0–2 = DL, slot 3 = Special, slots 4–5 = UL
+2500UL slot 4 ends; O-RU ADC complete32 RX chains have received PUSCH IQ; AGC + FFT complete
+2525O-RU begins UL U-plane TXTa3_min = 25 μs elapsed; BFP-9 compressed UL IQ sent on fronthaul
+2575O-DU receives UL U-planeτ_FH = 50 μs transit; logsA shows UL IQ available for PUSCH decoder
+2575 → +3000HARQ decode windowO-DU has ≈ 425 μs: channel estimation → LDPC decode → HARQ decision → DL retransmit DCI scheduling
+3000DL slot 6 begins — HARQ retransmit opportunityEarliest DL slot after UL slot 5; O-DU must have HARQ-NACK/ACK ready <285 μs before this (C-plane deadline)
Warning — HARQ Pre-Allocation Paradox

The C-plane for a DL retransmission must be sent at least T1a_max_cp_dl = 1250 μs before OTA. In the DDDSUUDDD pattern (T_slot = 500 μs), the HARQ-ACK/NACK for DL slot 0 arrives at the O-DU via UL slot 4 (t ≈ +2575 μs in this example). The C-plane for the retransmit in DL slot 6 (t = +3000 μs) must be dispatched at t ≈ +3000 − 1300 = +1700 μs — i.e., 875 μs before the HARQ-ACK even arrives. This is the HARQ pre-allocation paradox: the O-DU must speculatively send the retransmit C-plane (resource reservation) before it knows whether the original transmission succeeded. If the HARQ-ACK turns out to be positive (ACK), the pre-allocated retransmit slot is simply left empty (flushed). This is why O-RAN FH systems require persistent C-plane scheduling with conditional flush — not on-demand C-plane generation after HARQ decision.

S-Plane: PTP Synchronization

The S-plane carries IEEE 1588v2 PTP (Precision Time Protocol) with the ITU-T G.8275.1 telecom profile. Its sole purpose is to align the absolute time reference across the O-DU and all connected O-RUs so that T_ref means the same instant at every node.

Sync Hierarchy

  1. Grandmaster clock: GNSS-disciplined (GPS/GLONASS/ BeiDou) oscillator, typically at a primary reference time clock (PRTC) at the network core. Accuracy: ±100 ns to UTC.
  2. Boundary clock: aggregation switch or telecom router in the midhaul/backhaul network; forwards PTP with <100 ns additional holdover error.
  3. O-DU: receives PTP; maintains a local phase-locked oscillator disciplined by PTP; exports timing to the fronthaul Ethernet switch.
  4. O-RU: receives PTP via the fronthaul switch; phase-locks its internal SyncE and PTP slave clock. This is the direct source of T_ref.

Maximum Time Error Budget

3GPP TS 38.104 requires that TDD cells align their OTA slot boundaries to within ±1.5 μs inter-site (to prevent UL reception from one cell colliding with DL transmission from an adjacent cell in the guard period). O-RAN category B tightens this to ±130 ns at the O-RU to support CoMP, null-steering, and accurate timing advance estimation.

PTP time error budget — siteA deployment
Segment Max time error contribution Notes
GNSS grandmaster → PRTC output ±30 ns GPS 1PPS disciplined oscillator
Boundary clock chain (2 hops) ±50 ns ITU-T G.8273.2 class B boundary clock
O-DU PTP slave lock ±20 ns OCXO-backed PLL; holdover <100 ns / 24 h
Fronthaul switch asymmetry ±20 ns Measured per link; corrected in PTP delay compensation
O-RU PTP slave lock ±10 ns Integrated TCXO with PTP discipline
Total (RSS) ±63 ns Well within ±130 ns O-RAN Cat B budget ✓

If T_error exceeds ±130 ns at the O-RU, the resulting inter-site timing misalignment degrades CoMP gain, increases inter-cell interference in TDD guard periods, and causes HARQ failures on UEs near cell edges (their PUSCH arrives at the wrong O-RU receive window). In logsA this appears as elevated TA_ERROR_EXCEED events and unexplained PUSCH CRC failure spikes on specific O-RU ports.

Insight

For our 32-TRX system: all 32 antenna ports share one O-RU clock. A PTP sync loss at the O-RU causes all 32 TRX to drift together — the effect is a system-wide timing fault, not a single-port fault. This is distinguishable from a fronthaul transport fault (which affects specific eCPRI flows) by checking the O-RU M-plane sync-status YANG container. If sync-status = HOLDOVER, the O-RU is operating on its local oscillator and drifting; if sync-status = LOCKED but T1a violations are occurring, the problem is tAdv misconfiguration or τ_FH measurement error.

Specifications: O-RAN.WG4.CUS §4 O-RAN.WG4.CUS §7 ITU-T G.8275.1 TS 38.104 §6.5 IEEE 1588v2

See §24 — O-RAN FH Complete Event Sequence for the full slot-by-slot timeline integrating C-plane scheduling, U-plane delivery, UL reception, HARQ decode, and retransmit windows across all DDDSUUDDD slot types.

For channel-by-channel CUS-plane section type mapping, see §25 O-RAN Channel Segregation.

§24
C-plane & U-plane: Complete Order of Events O-RAN.WG4.CUS §7 TS 38.213 §10

This section traces every event from MAC scheduler output through over-the-air (OTA) transmission and back through uplink reception and HARQ feedback, using a concrete DL slot under the μ=1 · 30 kHz SCS · DDDSUUDDD TDD pattern. The system is 32 TRX / 16-layer MU-MIMO (8 UEs × rank-2) / 128 UEs total; fronthaul latency τFH = 50 μs (Category B, 10 km fiber).

All times are measured from Tref = t = 0, defined as the start of PDSCH symbol 0 OTA transmission for slot 0 (the first DL slot in the pattern). Slot 0 spans t = [0, 500 μs]. OFDM symbol duration (30 kHz SCS, 122.88 MHz clock) = 33.33 μs; normal CP = 2.344 μs; extended CP = 4.167 μs; full symbol period including CP ≈ 35.68 μs.

Key timing parameters — 30 kHz SCS, DDDSUUDDD
ParameterValueNotes
Tslot500 μs14 symbols per slot
Tsymbol (no CP)33.33 μs1/SCS
Tcp,normal2.344 μsat 122.88 MHz clock
Tcp,extended4.167 μsfirst symbol of slot
Tsymbol+CP (nominal)≈ 35.68 μsnormal CP symbols
τFH50 μsone-way O-DU → O-RU (10 km)
T1a_max_cp_dl1250 μsC-plane DL advance (Cat. B)
T1a_min_up_dl50 μsU-plane DL min advance
T1a_max_up_dl196 μsU-plane DL max advance (Cat. B spec)
Ta3_max_ul1100 μsUL U-plane O-RU max latency (Cat. B spec)
HARQ round-trip (slot 0 → slot 4)2000 μsper DDDSUUDDD UL at slot 4
TDD pattern slots D/S/UD D D S U U D D Dslots 0-2 DL, 3 special, 4-5 UL

Scenario: DL Slot 0 — 8 MU-MIMO UEs, Full Slot PDCCH + PDSCH

Step 0
Scheduler Preparation — t = −3500 to −1500 μs (2–3 slots ahead)
  • O-DU MAC scheduler wakes at t ≈ −3500 μs, approximately 7 half-ms slots ahead of OTA to accommodate the full processing pipeline.
  • Reads latest CSI/SRS reports from previous UL slots; builds MU-MIMO precoder matrix W (32 TRX × 16 layers) via SVD or codebook selection.
  • Spatial compatibility check: selects 8 UEs whose channel vectors are near-orthogonal; assigns 2 layers per UE (rank-2).
  • Computes PRB allocation, MCS (per UE CQI), DMRS port mapping, and DCI format 1_1 parameters (RNTI, NDI, RV, HARQid, DAI).
  • Runs PDSCH encoding chain per UE: CRC attach → LDPC encode → rate-match → layer map → precoding with W → frequency-domain IQ ready for fronthaul.
  • Generates 8 × DCI format 1_1 messages; assembles PDCCH CORESET aggregation levels and CCE positions.
Step 1
O-DU → O-RU: DL C-plane for Slot 0 — t = −1250 μs
  • C-plane message: Section Type 1, addressed to all 32 eAxC IDs (one per TRX antenna port).
  • Contains: slot number = 0, symbol bitmap = symbols 0–13 (full slot), startPrbu = 0, numPrbu = 132 (full 100 MHz BW at 30 kHz), beamforming weights for each eAxC (split 7-2x: precoded IQ, so BF weights embedded in the IQ rather than a separate BF section; or explicit beamId per Section Extension 11 if beam-domain compression is used).
  • Timing constraint: must arrive at O-RU by T1a_max_cp_dl = 1250 μs before the start of the first affected symbol.
  • After τFH = 50 μs transit: arrives at O-RU at t = −1200 μs.
  • In practice PDCCH C-plane and PDSCH C-plane for the same slot are combined into a single C-plane burst to minimize fronthaul overhead.
Step 2
O-DU → O-RU: DL U-plane for PDCCH IQ — t = −246 μs (symbol 0 window)
  • U-plane packet: eCPRI + O-RAN U-plane header, carrying precoded frequency-domain IQ for PDCCH CORESET symbols (split 7-2x lower-layer split: O-DU delivers post-precoding IQ; O-RU performs IFFT, CP insertion, PA drive).
  • CORESET occupying symbols 0–1 (2-symbol CORESET): IQ size = CORESET_PRBs × 12 SC × 2 sym × 32 TRX × 4 bytes = variable by CORESET size.
  • T1a_max_up = 196 μs (Cat. B spec): O-DU sends U-plane at most T1a_max_up + τ_FH = 196 + 50 = 246 μs before symbol 0 OTA; no later than T1a_min_up + τ_FH = 50 + 50 = 100 μs before symbol 0.
  • Arrival at O-RU: t = −246 + 50 = −196 μs, well within O-RU processing window of ~30–50 μs (IFFT + CP + RF settling).
  • logsA confirms: t=-246μs U-plane slot_0 sym=0 nprb=132 iq_size=45056B
Step 3
O-RU: PDCCH Processing and OTA Transmission — t = −196 to +71 μs
  • O-RU receives IQ, applies any per-port gain/phase correction from C-plane section extensions; runs 4096-point IFFT (for 100 MHz, 30 kHz SCS).
  • Inserts CP (extended CP on symbol 0 = 4.167 μs; normal CP on subsequent symbols = 2.344 μs).
  • Drives PA chain on all 32 TRX ports simultaneously.
  • Symbol 0 OTA begins at t = 0 (by definition of Tref).
  • Symbol 0 OTA ends at t = 33.33 + 4.167 ≈ 37.5 μs (extended CP first symbol).
  • Symbol 1 OTA: t = 37.5 to 37.5 + 35.68 ≈ 73.2 μs.
  • logsA: t=0μs OTA_TX slot=0 sym=0
Step 4
UE: PDCCH Reception and DCI Decode — t = 0 to +150 μs (approx)
  • UE ADC captures the received signal after propagation delay (e.g., 3.3 μs for 1 km cell radius).
  • UE runs: CP removal → 4096-pt FFT → extract CORESET REs → PDCCH DMRS channel estimation (pilot on every 4th subcarrier in the CORESET, ports 2000–2011) → PDCCH equalization → LLR computation.
  • Polar decoder: rate-dematching → Successive Cancellation List (SCL) decode → CRC-24 check → if pass, extract DCI payload.
  • DCI format 1_1 parsed: RNTI confirm, frequency-domain resource assignment, time-domain RA (startSym + nrOfSym for PDSCH), MCS, NDI, RV, HARQ PID, DAI, PDSCH-to-HARQ timing indicator (k1).
  • Processing latency: ~1–2 symbol durations (UE implementation; typically <100 μs on modern UE baseband).
  • logsB: [slot=0 sym=2] PDCCH decoded DCI 1_1 rnti=0xABCD mcs=22 prb=0..131 harqid=3 k1=4
Step 5
O-DU → O-RU: DL U-plane for PDSCH IQ — t = −246 to 0 μs (pipelined per symbol)
  • PDSCH occupies symbols 2–13 (12 symbols, after 2-symbol CORESET). O-DU pipelines U-plane delivery: can send all 12 symbols in one burst starting at t = −246 μs, or symbol-by-symbol with per-symbol U-plane packets.
  • Per-symbol IQ size at 32 TRX, 132 PRBs, 16-bit IQ (BFP compressed to ~9 bits effective): 132 × 12 × 32 × 2 bytes ≈ 101 kB per symbol; 12 symbols ≈ 1.21 MB per slot. At 100GbE: ~81 μs to serialize — must be pipelined to meet per-symbol deadlines.
  • O-DU sends symbol 2 U-plane at t = −246 + 2×35.68 μs offset ≈ t = −175 μs; each subsequent symbol offset by one symbol period, so the O-RU always has at least 50–100 μs of buffer ahead of OTA.
  • C-plane for PDSCH was already sent at Step 1 (combined with PDCCH C-plane). No additional C-plane required for PDSCH unless beam changes occur mid-slot.
Step 6
O-RU: PDSCH OTA Transmission — t = +71 to +500 μs
  • Symbol 2 OTA start: t = 37.5 + 35.68 ≈ 73.2 μs (after symbols 0 and 1).
  • O-RU applies per-PRB beamforming weights embedded in U-plane IQ (split 7-2x: weights already folded into IQ by O-DU precoder); runs IFFT per symbol; appends CP; drives all 32 TRX simultaneously.
  • Symbols 2–13: each ~35.68 μs. 12 symbols × 35.68 μs = 428 μs. Symbol 13 ends at ≈ 73.2 + 428 = 501 μs ≈ 500 μs (slot boundary).
  • All 8 MU-MIMO spatial streams transmitted concurrently via the 32 TRX precoded beamforming matrix W.
  • logsA: t=500μs OTA_TX slot=0 DONE (14 symbols complete)
Step 7
UE: PDSCH Reception and TB Decode — t = +73 to +600 μs (approx)
  • UE accumulates all 12 PDSCH symbols (symbols 2–13) across the 500 μs slot.
  • After slot end: CP removal → FFT → DMRS channel estimation (Type A mapping: DMRS on symbols 2 and 3, additional positions optional) → PDSCH MMSE equalization (per-layer) → layer demapping → LDPC rate-dematching → LDPC decode → CRC-24A check → TB assembly.
  • TB size (MCS=22, 132 PRBs, 2 layers, 12 symbols): approximately 45 kB (implementation-defined; exact value from TS 38.214 tables).
  • Decoding latency: ~100–300 μs UE-implementation-dependent.
  • logsB: [slot=0] PDSCH decode OK rnti=0xABCD crc=PASS tb=45056bytes layers=2
  • UE sets HARQ-ACK bit = 1 (ACK); queues for PUCCH in slot 4 (k1=4 per DCI).
Step 8
HARQ Wait Window — t = +500 to +2000 μs (slots 1–3: D, D, S)
  • Slots 1 and 2 are DL (D); slot 3 is special (S). No UL transmission possible. O-DU holds HARQ process 3 as "pending ACK" — buffer is retained, no new data scheduled on this process until ACK/NACK arrives.
  • O-DU concurrently sends C-plane and U-plane for slots 1 and 2 (other UEs, other HARQ processes) following the same timing protocol.
  • The HARQ wait is an inherent cost of TDD: the ACK slot is fixed by the TDD pattern, not by the UE's decode latency.
Step 9
UE: PUCCH Transmission — t = +2000 μs (slot 4, UL)
  • Slot 4 is the first UL slot in the DDDSUUDDD pattern, t = [2000, 2500 μs].
  • UE transmits PUCCH Format 0 (or Format 1 for multiple bits) carrying HARQ-ACK bit for PDSCH in slot 0. PUCCH symbol positions: typically symbols 12–13 of slot 4 (configured by higher layers).
  • PUCCH Format 0: length-1 or length-2 sequence based on Zadoff-Chu root with cyclic shift encoding the ACK/NACK bit. No DM-RS needed for Format 0.
  • Multiple UEs transmit PUCCH in the same slot on different cyclic shifts (orthogonal covering codes for Format 1) or different resource sets.
  • UE OTA starts at t ≈ 2000 μs + symbol offset for PUCCH position.
  • logsB: t=2000μs PUCCH_TX slot=4 harq_ack=1 (ACK sent)
Step 10
O-RU: UL PUCCH Receive and Forward — t = +2033 to +2083 μs
  • O-RU receives UL signal at t ≈ 2000 + τprop ≈ 2003–2033 μs (propagation delay 3–33 μs for 1–10 km cell radius).
  • O-RU: ADC → CP removal → FFT → UL U-plane IQ sent to O-DU. No decoding at O-RU (split 7-2x: O-RU is "dumb" in UL; all signal processing at O-DU).
  • UL U-plane: eCPRI carrying raw frequency-domain IQ per eAxC, slot/symbol tagged, forwarded within Ta3_max_ul = 1100 μs of receiving the symbol (actual latency ≈ τ_FH = 50 μs, well within spec).
  • IQ arrives at O-DU: t ≈ 2033 + 50 = 2083 μs.
  • logsA: t=2083μs PUCCH_RX rnti=0xABCD harq_ack=1 (ACK received at O-DU)
Step 11
O-DU: HARQ-ACK Decode and Decision — t = +2083 to +2200 μs
  • O-DU correlates received PUCCH IQ against all candidate ZC cyclic shifts for each configured UE RNTI; peak correlation determines ACK (shift match) vs NACK (no peak) vs DTX (no energy).
  • For PUCCH Format 1: despreads over 2 OFDM symbols using Orthogonal Cover Code, then correlates.
  • Decision at t ≈ 2150 μs: ACK → mark HARQ process 3 complete, release buffer, inform MAC scheduler of freed process.
  • NACK → schedule retransmission; HARQ process 3 retains TB in buffer, RV increments (0→2→3→1 per LDPC Chase Combining).
  • logsA: [slot=4] PUCCH rnti=0xABCD fmt=0 harq=ACK
Step 12
O-DU: Retransmit Scheduling (if NACK) — t = +2200 to +2700 μs
  • Next available DL slot after slot 4 (UL) and slot 5 (UL) is slot 6 (DL), starting at t = 3000 μs.
  • C-plane for slot 6 must be sent by O-DU at t = 3000 − 1250 = 1750 μs.
  • But HARQ-ACK only arrives at O-DU at t ≈ 2083 μs — 333 μs after the C-plane deadline for slot 6. This is the TDD timing paradox (see nb-insight below).
  • Resolution: O-DU pre-schedules the retransmit C-plane speculatively at t = 1750 μs; if ACK later arrives at 2150 μs, the O-DU sends a cancellation or simply does not send U-plane IQ for slot 6 (O-RU transmits nothing without U-plane data in the window).
  • If NACK: O-DU sends U-plane for slot 6 PDSCH starting at t ≈ 2754 μs (246 μs = T1a_max_up + τ_FH = 196+50 μs before slot 6 OTA at t = 3000 μs).
  • New DCI for HARQ retransmit: same RNTI, same HARQ PID 3, NDI unchanged (toggle = new TB, same = retransmit), RV = 2.
Step 13
UL PUSCH Flow (parallel thread, slot 5) — t = +2500 to +2700 μs
  • Slot 5 is UL, t = [2500, 3000 μs]. O-DU sent C-plane for slot 5 at t = 2500 − 1250 = 1250 μs (during the DL-HARQ wait window).
  • UE transmits PUSCH in slot 5 per prior DCI format 0_1 scheduling grant.
  • O-RU receives UL signal, runs FFT, forwards UL U-plane IQ to O-DU within Ta3 = 50 μs per symbol.
  • O-DU accumulates all PUSCH symbols, runs UL processing: DMRS channel estimation → PUSCH MMSE equalization → layer demapping → LDPC decode → CRC check → deliver TB to higher layers.
  • logsA: [slot=5] PUSCH rnti=1042 prb=0..65 mcs=16 rv=0 decode=OK
  • O-DU sends PHICH or HARQ indication (via DCI format 1_0 in next DL slot) to UE to confirm UL reception.

Complete Trace Log — logsA (O-DU/O-RU) and logsB (UE)

logsA t=-3500μs: SCHED_START slot=0 ues=8 mu_mimo=on layers=16 prb=132
logsA t=-3200μs: PRECODER_DONE W=32x16 svd_iter=14 spatial_compat_check=PASS
logsA t=-1250μs: CPLANE_TX slot=0 section_type=1 nsymbs=14 nprb=132 nports=32
logsA t=-1200μs: [O-RU RECV] CPLANE slot=0 stored
logsA t= -246μs: UPLANE_TX slot=0 sym=0 nprb=132 iq_size=45056B (PDCCH IQ)
logsA t= -196μs: [O-RU RECV] UPLANE slot=0 sym=0 ready
logsA t= -175μs: UPLANE_TX slot=0 sym=2 nprb=132 iq_size=101376B (PDSCH sym2 IQ)
logsA t=    0μs: OTA_TX slot=0 sym=0 (symbol 0 begins, T_ref)
logsA t=   37μs: OTA_TX slot=0 sym=1
logsA t=   73μs: OTA_TX slot=0 sym=2 (PDSCH begins)
logsA t=  500μs: OTA_TX slot=0 DONE (all 14 symbols complete)
logsA t= 1250μs: CPLANE_TX slot=5 section_type=1 nsymbs=14 nprb=66 nports=32 (UL slot 5)
logsA t= 1750μs: CPLANE_TX slot=6 section_type=1 nsymbs=14 nprb=132 nports=32 (HARQ retx speculative)
logsA t= 2000μs: OTA_RX slot=4 UL sym=0 (slot 4 UL starts at O-RU)
logsA t= 2033μs: UPLANE_RX slot=4 sym=12 nprb=6 (PUCCH IQ arriving at O-DU)
logsA t= 2083μs: PUCCH_RX rnti=0xABCD harq_ack=1 (ACK received at O-DU)
logsA t= 2150μs: HARQ_DEC pid=3 rnti=0xABCD result=ACK buf=free
logsA t= 2500μs: OTA_RX slot=5 UL sym=0 (slot 5 PUSCH at O-RU)
logsA t= 2550μs: UPLANE_RX slot=5 sym=0..13 nprb=66 (PUSCH IQ at O-DU)
logsA t= 2700μs: PUSCH_DECODE slot=5 rnti=1042 prb=0..65 mcs=16 rv=0 crc=PASS

logsB t=    0μs: PDCCH_DET slot=0 sym=0 (UE begins CORESET capture)
logsB t=   73μs: PDCCH_DECODE slot=0 dci_fmt=1_1 rnti=0xABCD mcs=22 prb=0..131 harqid=3 k1=4
logsB t=   73μs: PDSCH_RX_START slot=0 sym=2 (UE begins PDSCH symbol capture)
logsB t=  500μs: PDSCH_RX_DONE slot=0 (all 12 PDSCH symbols captured)
logsB t=  620μs: PDSCH_DECODE slot=0 rnti=0xABCD crc=PASS tb=45056bytes layers=2
logsB t= 2000μs: PUCCH_TX slot=4 sym=12 harq_ack=1 (ACK transmitted by UE)
logsB t= 3000μs: PDCCH_DET slot=6 (if NACK: retx DCI received, else idle)
  
💡
The DL-HARQ Timing Paradox. The complete DL → HARQ-retransmit loop: C-plane sent at t = −1250 μs → OTA at t = 0 → UE ACK at t = 2000 μs → O-DU decode at t = 2083 μs → retransmit C-plane needed at t = 1750 μs (for slot 6 at 3000 μs). The O-DU must send the retransmit C-plane 333 μs before it receives the HARQ-ACK. This is not a bug — it is a fundamental TDD timing property. The O-DU must pre-reserve retransmit resources speculatively and cancel them upon receiving an ACK.
Pre-allocation of HARQ Retransmit Resources. Because T1a_max_cp_dl (1250 μs) + slot 6 start (3000 μs) requires the O-DU to send the slot 6 C-plane at t = 1750 μs, but HARQ-ACK only arrives at t ≈ 2083 μs — 333 μs after the C-plane deadline — the O-DU must pre-reserve slot 6 retransmit resources speculatively. Strategy: (1) Send C-plane with full resource grant; (2) On ACK, suppress U-plane — O-RU will not transmit without U-plane data inside T1a window; (3) On NACK, send U-plane at t = 2729 μs, meeting T1a_min_up_dl = 50 μs before slot 6 OTA at t = 3000 μs. No wasted OTA slot; only potential wasted C-plane overhead.
📚
How O-DU Resolves the Timing Paradox — Three Approaches.
  1. Speculative C-plane + U-plane suppress (preferred): Always send C-plane early; on ACK, simply do not send U-plane within T1a window. O-RU transmits nothing. Zero wasted OTA resource.
  2. Conditional Section Extension flag: Use O-RAN Section Extension to embed a "conditional transmit" bit; O-RU holds transmission pending a control word from O-DU. Requires O-RU support; reduces signalling but adds O-RU complexity.
  3. Always retransmit (wasteful): Send C-plane + U-plane for all HARQ processes unconditionally; on ACK, the retransmit is received and decoded by UE as an incremental redundancy version — not harmful but wastes PRBs and power. Used in low-complexity or debug configurations.
This paradox appears in all TDD systems with asymmetric D/U ratios and is a core design constraint for O-DU MAC schedulers.

Event Timeline — Full Sequence (t = −1300 μs to +3500 μs)

UL Timing Detail — PUCCH → HARQ Decision → Retransmit Window (t = +2000 to +3200 μs)

Key Timing Summary: C-plane DL at −1250 μs → U-plane DL at −246 μs → OTA slot 0 at t=0 → UE PUCCH slot 4 at t=2000 μs → O-DU HARQ decode at t=2083 μs → Retransmit (if NACK) in slot 6 at t=3000 μs. Total DL→HARQ round trip: 2083 μs ≈ 4.2 slots.
§25
O-RAN Channel Segregation O-RAN.WG4.CUS §7 O-RAN.WG4.MP §3
For T1a/tAdv/Ta3/Ta4 parameter definitions, see §23. For the complete C/U-plane OTA event sequence, see §24.

§25.1 — CUS-Plane Section Types Overview

The O-RAN fronthaul CUS-plane defines discrete Section Types that allow the O-DU to communicate per-symbol, per-PRB scheduling intent to the O-RU. Each physical channel in 5G NR is mapped to one specific Section Type based on its timing, bandwidth, and precoding characteristics. Understanding which Section Type carries which channel is the first step toward diagnosing fronthaul issues in logsA / logsB traces.

Section Type Name NR Channels Carried Key Fields
Type 0 Unused RE Guard bands, unused RBs, DC subcarrier beamId (optional); indicates no data transmitted on these REs
Type 1 Most DL/UL channels PDSCH, PDCCH, CSI-RS, SSB/PSS/SSS/PBCH, PUSCH, PUCCH Fmt 0–4, SRS beamId, numSymbol, startPrbc, numPrbc, udCompHdr
Type 3 PRACH PRACH preamble detection (UL only) timeOffset, freqOffset, nPRBs=6 (LRA=839) or 12 (LRA=139), re_mask
Type 5 UE scheduling info Per-UE scheduling descriptor for MU-MIMO (TDD/FDD) — primarily used in TDD systems for scheduling information feedback; carries per-UE layer mapping and beam assignment ueId, layerMapping, numLayers, startSymbol
Type 6 Channel info / precoding DL precoding coefficients for Category B (Type II beamforming) beamWeights[], numTRX, compressionMethod
Type 7 LAA (unlicensed) Not used for FR1 licensed spectrum (inapplicable to 100 MHz NR cell) N/A
Key insight: In split 7-2x, Section Type 1 is the workhorse — it carries precoded IQ samples for every DL transmission and raw IQ for every UL reception. Section Type 3 is mandatory for PRACH detection because PRACH has unique timing and bandwidth requirements: the preamble start time is expressed as a fractional symbol offset (timeOffset), and the PRACH bandwidth (1.08 MHz for LRA=839) does not align with normal PRB scheduling. Mixing PRACH into a Type 1 message would corrupt the timing contract.

§25.2 — Per-Channel CUS-Plane Mapping Table

The table below maps every 5G NR physical channel to its O-RAN Section Type, the eAxC streams used, relevant symbol range, and operational notes specific to the μ=1 (30 kHz SCS), 100 MHz BW, 32TRX, 128-UE system reference.

NR Channel Direction Section Type eAxC Streams Symbol Range Notes
PDSCH DL Type 1 eAxC 0–31 (32 streams) sym 2–13 (after CORESET) Precoded IQ, up to 132 PRBs; 16-layer MU-MIMO encoded before FH
PDCCH / CORESET DL Type 1 eAxC 0–31 (32 streams) sym 0–1 or 0–2 Subset of PRBs matching CORESET bandwidth; separate C-plane message from PDSCH
DMRS (DL) DL Type 1 32 streams (embedded) Same symbol(s) as PDSCH DMRS REs are embedded within the PDSCH IQ data payload; not a separate FH message
CSI-RS DL Type 1 eAxC 0–31 (32 streams) Configured symbol (slot-periodic) Separate C-plane Type 1 message per CSI-RS resource; periodic per higher-layer config
SSB / PSS / SSS / PBCH DL Type 1 eAxC 0–31 (32 streams) SSB burst symbols (μ=1: varies by L_max) SSB spans 4 consecutive symbols; burst set scheduled by O-DU; beamId per SSB candidate
PUSCH UL Type 1 eAxC 0–31 (UL streams) Scheduled UL symbols O-RU sends unprocessed (compressed) IQ back to O-DU; O-DU performs MIMO combining
PUCCH Fmt 0 / 1 UL Type 1 eAxC 0–31 1–2 symbols Short PUCCH; low RE count (1–2 RBs); still full 32-stream eAxC capture
PUCCH Fmt 2 / 3 / 4 UL Type 1 eAxC 0–31 1–2 symbols Higher-payload PUCCH; up to 11 bits (SR+HARQ+CSI); same FH treatment as Fmt 0/1
PRACH UL Type 3 Special PRACH eAxC PRACH occasion symbols Unique section type. timeOffset field mandatory; nPRBs=6 (LRA=839) or 12 (LRA=139)
SRS UL Type 1 eAxC 0–31 Configured symbols (last slot symbols) Periodic or aperiodic; O-RU sends full IQ; O-DU extracts channel estimates for beamforming
Warning — PRACH Type 3 + timeOffset: PRACH uses Section Type 3 specifically because the PRACH preamble timing is not slot-aligned in the normal sense. The preamble can start at a fractional symbol offset expressed in units of T_s/2 (for numerology μ=1). The timeOffset field in Type 3 carries this sub-symbol timing. Additionally, the PRACH bandwidth (LRA=839 → ~1.08 MHz; LRA=139 → ~4.17 MHz at μ=1) occupies only 6 or 12 PRBs within the 132-PRB carrier, requiring a separate scheduling notification. If an O-DU incorrectly sends PRACH via a Type 1 message, the O-RU will misinterpret the timing and the preamble detection will fail silently — a common logsA debug scenario.

§25.3 — eAxC ID Structure

An eAxC (extended Antenna-Carrier) ID is the O-RAN identifier that tags every fronthaul packet with its originating or destination antenna port and carrier. For a 32TRX single-cell system, the eAxC ID bitfield is constructed as follows:

eAxC_ID [16-bit] = duPortId[4b] | bandSectorId[2b] | ccId[2b] | ruPortId[8b]

Field breakdown for reference system:

  • bandSectorId = 0b00 — single cell, single sector
  • ccId = 0b00 — single component carrier (100 MHz)
  • ruPortId = 0x00 to 0x1F — one per antenna port (0..31)

This yields 32 DL eAxC IDs (ruPortId 0–31, DL direction flag) and 32 UL eAxC IDs (ruPortId 0–31, UL direction flag) = 64 active eAxC streams in total across the fronthaul link.

The PRACH stream uses a dedicated PRACH eAxC negotiated during M-plane bring-up; it does not share a ruPortId with normal UL streams. O-DU signals PRACH eAxC mapping via M-plane (NETCONF/YANG) before the cell goes live.

eAxC_ID computation (O-RAN CUS §7.3.2):
eAxC_ID = (du_port_id << 12) | (band_sector_id << 10) | (cc_id << 8) | (ru_port_id & 0xFF)
Fields: du_port_id[15:12] (4b), band_sector_id[11:10] (2b), cc_id[9:8] (2b), ru_port_id[7:0] (8b).
The O-DU must signal all active eAxC IDs to the O-RU during M-plane bring-up (NETCONF user-plane-configuration container). For Category B timing, each eAxC carries an independent timing-advance context — the O-RU applies T_offset corrections per-eAxC, not per-carrier.
eAxC stream count formula: Total active eAxC = (N_TRX_DL + N_TRX_UL + N_PRACH_ports) × N_CC × N_sectors. For our system: (32 + 32 + 2) × 1 × 1 = 66 eAxC streams (32 DL + 32 UL + 2 PRACH antenna ports). Each stream requires independent C-plane scheduling and U-plane IQ delivery every slot (0.5 ms).

§25.4 — DL vs UL Fronthaul Streams (C/U Separation)

C-plane vs U-plane decoupling: The O-RAN CUS architecture deliberately separates the control plane (C-plane — what to transmit, where, when, with which beam) from the user plane (U-plane — the actual IQ samples). A C-plane message must arrive at the O-RU within the T_advance window (τ_FH = 50 μs for Category B) before the first symbol of the corresponding U-plane data. This decoupling means the O-DU can pre-schedule beams and PRB allocations without waiting for IQ generation to complete, enabling pipelined fronthaul transmission.

C-plane messages per DL slot (typical):

  • PDCCH: 1 × Section Type 1 (sym 0–1, CORESET PRBs)
  • PDSCH: 1 × Section Type 1 (sym 2–13, 132 PRBs)
  • CSI-RS: 1 × Section Type 1 (if this slot is CSI-RS slot)
  • SSB: 1 × Section Type 1 (if within SSB burst period)

Typical DL slot C-plane load: 2–3 Section Type 1 messages, each a few hundred bytes. C-plane overhead is negligible relative to U-plane.

U-plane throughput calculation (DL, uncompressed):

BW = N_TRX × N_PRB × N_SC × N_sym × IQ_bits / T_slot
= 32 × 132 × 12 × 14 × 32 / 0.5×10⁻³
45.4 Gbps

With BFP-9 compression (9-bit mantissa per sample + shared 4-bit block exponent):

BW_compressed ≈ 45.4 × (9/16) ≈ 25.5 Gbps

DDDSUUDDD slot FH profile (9-slot period = 4.5 ms):

  • Slots 0,1,2 — DL (full load)
  • Slot 3 — Special (10 DL sym + 2 GP sym + 2 UL sym = 14 sym)
  • Slots 4,5 — UL (PUSCH + PUCCH + PRACH)
  • Slots 6,7,8 — DL (full load)

DL FH load: 6 full DL slots + 1 partial special slot (10 DL sym) per 9-slot period = 6.71 slot-equivalents.
UL FH load: 2 full UL slots + 2 UL symbols from special slot per 9-slot period = 2.14 slot-equivalents (lighter; 128 UEs but fewer active simultaneously).

DDDSUUDDD FH loading summary: DL slots = {0,1,2,6,7,8} (6 full) + slot 3 partial DL (10 sym) = 6.71 slot-equivalents. UL slots = {4,5} (2 full UL) + slot 3 partial UL (2 sym) = 2.14 slot-equivalents. FH is DL-heavy: ~6.71/9 slot-equivalents carry peak DL traffic. Peak FH during DL slots = 45.4 Gbps uncompressed. A 25 GbE link (insufficient) would be saturated before even serving all 32 TRX. 100 GbE is mandatory for 32TRX 100 MHz DL without compression; BFP-9 compressed ~25.5 Gbps fits within a 25 GbE link but leaves no headroom for overhead. Practical minimum: 25 GbE with BFP-9 compression enabled.
Study note — FH compression necessity at 32TRX: At 32 TRX, fronthaul compression is not optional — it is architecturally required. BFP-9 (Block Floating Point, 9-bit mantissa) is the O-RAN standard compression method negotiated via M-plane. The compression ratio is ~1.78× (32b → 18b per sample including exponent overhead), bringing 45.4 Gbps to ~25.5 Gbps. Without compression, a 32TRX system would require >100 GbE per cell sector, making fiber plant costs prohibitive. Note: BFP compression introduces a small (~0.1–0.3 dB) EVM floor from quantisation noise — this must be budgeted in link-level receiver design (PDSCH MCS selection, PUSCH combining). At 64TRX the same math yields ~90.8 Gbps compressed — requiring dual 100 GbE or 400 GbE.

§25.5 — PRACH Special Handling (Type 3 Deep Dive)

PRACH occupies a unique position in the CUS-plane architecture. Because the preamble sequence (Zadoff-Chu root index, format, cyclic shift) is determined by the O-DU, but the reception window is a precise time-frequency resource within the uplink frame, the O-DU must send a dedicated Section Type 3 C-plane message to the O-RU ahead of every PRACH occasion.

PRACH occasion in DDDSUUDDD pattern:

  • First full UL slot = slot 4 (subframe 2, slot index 4 within 5 ms frame half)
  • PRACH occasions occur in UL slots (slots 4 and 5) and possibly the UL portion of the special slot (slot 3, last 2 UL symbols)
  • PRACH config index determines which slot/symbol carries the occasion
  • For PRACH Format 0 (LRA=839): 1 ms preamble, 1-symbol guard, starts at sym 0 of UL slot
  • C-plane Type 3 must arrive at O-RU at least τ_FH = 50 μs before symbol 0 of slot 4

Section Type 3 critical fields:

  • timeOffset — sub-symbol start time (units: Ts/2 for μ=1); mandatory
  • freqOffset — PRACH centre frequency offset from carrier centre
  • nPRBs — number of PRBS: 6 for LRA=839 (Format 0), 12 for LRA=139
  • re_mask — 12-bit RE mask for PRACH subcarriers within PRBs
  • startPrbc — first PRB of PRACH bandwidth within carrier
  • guardband — RB offset from carrier edge to PRACH BW start

logsA trace example — PRACH Type 3:

[slot=4 sym=0] PRACH_IQ
  section_type=3
  eAxC=0x0040   (PRACH port 0)
  timeOffset=0
  freqOffset=-528  (kHz from CC centre)
  nRb=6
  format=0       (LRA=839)
  startPrbc=63   (centre of 132 PRB grid)
  guardband=2
  compMethod=NONE (PRACH uncompressed)

[slot=4 sym=0..13] PUSCH_IQ
  section_type=1
  eAxC=0x0000..0x001F  (ports 0-31)
  startPrbc=0 numPrbc=132
  numSymbol=14
  compMethod=BFP udIqWidth=9
      

Note: PRACH and PUSCH coexist in slot 4. PRACH uses its dedicated eAxC (0x0040) with Type 3; PUSCH uses eAxC 0x0000–0x001F with Type 1. The O-RU handles both simultaneously in the same slot.

Warning — timeOffset criticality: The timeOffset field in Section Type 3 is not optional. If the O-DU sends timeOffset=0 when the actual PRACH preamble starts mid-symbol (e.g., for Format 1 with a CP length spanning into the preceding symbol), the O-RU will start capturing IQ too late, truncating the cyclic prefix. This causes degraded preamble detection probability — typically seen as elevated missed detection rate in logsA RACH statistics without a clear hardware fault. Always verify timeOffset matches the PRACH numerology and format configuration during nodeA bring-up.
PRACH Format LRA BW (μ=1) nPRBs (Type 3) Duration timeOffset range
Format 0 839 ~1.08 MHz 6 1 ms (2 slots) 0 (starts at symbol boundary)
Format 1 839 ~1.08 MHz 6 2 ms (4 slots) 0
Format 2 839 ~1.08 MHz 6 3 ms (6 slots) 0
Format A1 139 ~4.17 MHz 12 2 symbols 0..2047 (Ts/2 units)
Format B4 139 ~4.17 MHz 12 12 symbols 0..2047 (Ts/2 units)

FH Bandwidth Distribution chart:

PRACH compression policy: Unlike PUSCH/PDSCH which use BFP-9, PRACH IQ is typically transmitted uncompressed (compMethod=NONE) from O-RU to O-DU. This is because the PRACH receiver in the O-DU relies on precise magnitude relationships in the Zadoff-Chu correlation peak — BFP quantisation noise can reduce the peak-to-noise floor separation, degrading preamble detection at low SNR. The bandwidth penalty is acceptable: PRACH occupies only 6 PRBs (4.5% of 132 PRBs) × 2 antenna ports, so uncompressed PRACH adds <1 Gbps to the FH link.