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.
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:
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):
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 |
|---|---|---|---|---|---|
| 0 | 15 | 1 | 10 | 1.000 | LTE compat, FR1 data |
| 1 | 30 | 2 | 20 | 0.500 | Our system (FR1, 100 MHz) |
| 2 | 60 | 4 | 40 | 0.250 | FR1/FR2 data |
| 3 | 120 | 8 | 80 | 0.125 | FR2 mmWave data |
| 4 | 240 | 16 | 160 | 0.0625 | FR2 reference signal |
Frame Hierarchy (\(\mu = 1\))
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}\). ✓
Fig 1.1 — Slot duration vs numerology \(\mu\). Halves with each step. Our system (\(\mu=1\)) highlighted.
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
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:
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:
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:
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.
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
Resource Grid Dimensions — Our System
| Parameter | Value | Note |
|---|---|---|
| Numerology \(\mu\) | 1 | 30 kHz SCS |
| Bandwidth | 100 MHz | FR1 Band n78 |
| \(N_{\text{RB}}\) | 132 | per TS 38.104 Table 5.3.2-1 |
| Subcarriers | \(132 \times 12 = 1584\) | active |
| Symbols/slot | 14 | normal 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\) |
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 REs | DL user data transport |
| DMRS | Symbol 2,11 (Type 1 front-loaded) + optional add'l | Channel estimation |
| CSI-RS | Configured RE positions (sparse) | CSI feedback, beam management |
| PDCCH (CORESET) | First 1–3 symbols, specific RBs | DL control (DCI) |
| DC subcarrier | Centre subcarrier (\(k=0\)) | Set to zero (LO leakage) |
| Guard | Edge PRBs / unused subcarriers | Spectral 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:
- Non-interleaved: VRB \(n\) maps directly to PRB \(n + N_{\text{start}}\). Simple; frequency-selective scheduling; no frequency diversity.
- Interleaved: VRBs permuted across the bandwidth using a block interleaver (bundle size 2 or 4 PRBs). Provides frequency diversity at the cost of reduced frequency-selective gain — useful for URLLC or cell-edge UEs.
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.
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)
DL
DL
DL
S
UL
UL
DL
DL
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
DDDSUUDDD Slot Map (\(\mu=1\), 9-slot period) TS 38.211 Table 4.3.2-1
| Slot index | Direction | Format | Symbol allocation | Description |
|---|---|---|---|---|
| 0 | D | 0 | 14 × DL | Full downlink |
| 1 | D | 0 | 14 × DL | Full downlink |
| 2 | D | 0 | 14 × DL | Full downlink |
| 3 | S | 34* | 10 DL + 2 GP + 2 UL | Special slot — DL→UL switch |
| 4 | U | 1 | 14 × UL | Full uplink |
| 5 | U | 1 | 14 × UL | Full uplink |
| 6 | D | 0 | 14 × DL | Full downlink |
| 7 | D | 0 | 14 × DL | Full downlink |
| 8 | D | 0 | 14 × DL | Full 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)
D
D
D
S
U
U
D
D
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:
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:
For a cell radius of 15 km:
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
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.
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\).
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.
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 |
|---|---|---|---|---|
| 1 | 1 | 54 | ~40 bits | Strong signal, close UE |
| 2 | 2 | 108 | ~40 bits, lower rate | Good coverage |
| 4 | 4 | 216 | ~40 bits, robust | Mid-range UE |
| 8 | 8 | 432 | ~40 bits, very robust | Cell edge |
| 16 | 16 | 864 | ~40 bits, maximum robust | Deep 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.
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.
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.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).
| 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.
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.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} \]| \(B_{\mathrm{SRS}}\) index | \(N_{\mathrm{RB}}^{\mathrm{SRS}}\) | Hops to cover 132 RB | Notes |
|---|---|---|---|
| 0 | 4 | 33 | Narrow SRS, many hops |
| 0 | 8 | 17 | – |
| 1 | 12 | 11 | – |
| 1 | 16 | 9 | – |
| 2 | 24 | 6 | – |
| 2 | 44 | 3 | Coverage–overhead tradeoff sweet spot |
| 2 | 48 | 3 | – |
| 3 | 96 | 2 | Wide SRS, fast sounding |
| 3 | 132 | 1 | Full 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.
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.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:
- Modulate \(M\) QAM symbols \(\{d_0, \ldots, d_{M-1}\}\).
- Apply DFT of size \(M\): \(\tilde{D}_k = \sum_{n=0}^{M-1} d_n\, e^{-j2\pi nk/M}\)
- Map \(\tilde{D}_k\) to \(M\) contiguous subcarriers of the OFDM grid (localized FDMA).
- 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.
10.3 Selection Criteria
| 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.
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).
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:
- HARQ-ACK (highest priority — affects retransmission)
- SR
- CSI Part 1 (wideband CQI/RI)
- 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.
- 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.
PDSCh
S
ACK
UL
reTX
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.
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.
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:
- Achieve symbol/slot timing synchronization (PSS peak = slot boundary reference)
- Determine \(N_{ID}^{(2)}\) (3 hypotheses to test)
- 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.
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.
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)
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:
- 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)\).
- 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).
- Rate matching: Output 864 bits (sub-block interleaving + circular-buffer puncturing/repetition to match PBCH RE capacity of 432 QPSK symbols).
- Scrambling: XOR with scrambling sequence \(c(n)\) initialized by \(c_{init} = N_{ID}^{cell}\).
- QPSK modulation: 864 bits → 432 QPSK symbols (2 bits/symbol).
- 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.
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.
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:
| Layout | Columns N1 | Rows N2 | Polarizations | Total ports | Array type | Typical use |
|---|---|---|---|---|---|---|
| UPA cross-pol (preferred) | 8 | 2 | 2 (±45°) | 8×2×2 = 32 | Uniform Planar Array | Macro cell, 3D beamforming |
| ULA dual-pol | 16 | 1 | 2 (H+V) | 16×1×2 = 32 | Uniform Linear Array | Sectored cell, 2D horizontal steering |
| 4-row UPA | 4 | 4 | 2 | 4×4×2 = 32 | Uniform 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} \]- \(\mathbf{H} \in \mathbb{C}^{N_r \times 32}\) — channel matrix (UE receive × gNB transmit ports)
- \(\mathbf{W} \in \mathbb{C}^{32 \times \nu}\) — precoding matrix (\(\nu\) = transmission rank)
- \(\mathbf{x} \in \mathbb{C}^{\nu \times 1}\) — transmitted data vector across \(\nu\) layers
- \(\mathbf{n} \in \mathbb{C}^{N_r \times 1}\) — AWGN noise: \(\mathbf{n} \sim \mathcal{CN}(0, N_0 \mathbf{I})\)
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 \]- W₁ — wideband beam group selection: selects a group of oversampled DFT beam vectors. One W₁ per PMI reporting instance (wideband, changes slowly with large-scale channel). \(\mathbf{W}_1 \in \mathbb{C}^{N_t \times 2L}\), where \(L\) is the number of candidate beams (typically \(L=2\) or \(L=4\)).
- W₂ — subband co-phasing and beam selection: selects beam(s) within the group and applies inter-polarization co-phasing. One W₂ per PRG (Physical Resource Group, subband granularity). \(\mathbf{W}_2 \in \mathbb{C}^{2L \times \nu}\).
For our N1=8, N2=2, O1=4, O2=4 UPA (8 columns, 2 rows, 4× oversampling each):
- Horizontal DFT beams: \(N_1 \times O_1 = 8 \times 4 = 32\) beams
- Vertical DFT beams: \(N_2 \times O_2 = 2 \times 4 = 8\) beams
- Total beam pairs (one polarization): \(32 \times 8 = 256\)
- Dual-polarization ports: total codebook spans \(256\) dual-pol beam directions
| N1 | N2 | O1 | O2 | Total ports (dual-pol) | Max layers ν | Beam grid |
|---|---|---|---|---|---|---|
| 2 | 2 | 4 | 4 | 2×2×2=8 | 4 | 8×8=64 pairs |
| 4 | 2 | 4 | 4 | 4×2×2=16 | 8 | 16×8=128 pairs |
| 4 | 4 | 4 | 4 | 4×4×2=32 | 8 | 16×16=256 pairs |
| 8 | 2 | 4 | 4 | 8×2×2=32 | 8 | 32×8=256 pairs |
| 8 | 4 | 4 | 4 | 8×4×2=64 | 8 | 32×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 | Max Layers | Feedback overhead | PMI granularity | Typical 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 SP | 2 | i1: ~20 bits (WB), i2: 8 bits × N_SB | Wideband + fine subband | High-capacity indoor/dense urban |
| Type II Port Selection | 2 | 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
Interpretation 1 — SU-MIMO up to 8 layers:
- Single UE receives 8 independent PDSCH layers simultaneously
- Requires UE with 8 receive antennas (uncommon for handsets; used in fixed wireless access)
- Uses Type I SP or Type II codebook with ν = 8
- Peak UE throughput ≈ 8 × (single-layer rate) under good channel conditions
Interpretation 2 — MU-MIMO sum rank 16 (most practical):
- 8 UEs scheduled simultaneously on the same time-frequency resources
- Each UE receives rank-2 PDSCH → 2 layers/UE
- Total sum rank = 8 × 2 = 16 spatial streams
- gNB computes joint precoder W such that inter-user interference is suppressed
- This is the dominant mode in commercial massive MIMO deployments
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.
- SRS bandwidth: configurable from 4 PRBs to full 132 PRBs
- SRS comb: COMB-2 (every other subcarrier) or COMB-4 for UE multiplexing
- With DDDSUUDDD: UL slots at positions 4,5 → SRS available every 0.5–1 ms
- Channel coherence time: \(T_{coh} \approx \frac{0.423}{f_D}\), where \(f_D = \frac{v \cdot f_c}{c}\)
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 \]- Peak beamforming gain: \(G_{bf} = 10\log_{10}(32) \approx 15.1\) dB over isotropic transmit
- HPBW (half-power beamwidth) for \(d=\lambda/2\): \(\text{HPBW} \approx 0.886 \times \frac{2}{N_t} \times \frac{180°}{\pi} \approx \frac{102°}{32} \approx 3.2°\)
- First sidelobe: −13.3 dB below main lobe (Sinc-pattern for uniform weights)
- With tapering (Chebyshev/Taylor window): sidelobe → −30 dB at cost of 20–30% HPBW widening
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.
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:
- gNB transmits CSI-RS on up to 32 ports (NZP-CSI-RS, periodically or aperiodically)
- UE measures CSI-RS, estimates the effective channel \(\hat{\mathbf{H}}\)
- UE selects optimal RI (rank indicator), PMI (W1 beam group + W2 co-phasing), CQI (MCS index)
- UE reports RI/PMI/CQI via PUCCH (periodic) or PUSCH (aperiodic, higher precision)
- 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.
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:
- Which subset of the 128 connected UEs to schedule in the current slot
- How many PRBs and which frequency resources to assign each UE
- Which MCS (modulation + code rate) to use per UE (target BLER = 10%)
- What MIMO rank and precoding to apply (up to 16 sum spatial layers across all UEs)
- Which HARQ process to use and whether this is initial transmission or retransmission
| Parameter | Value | Notes |
|---|---|---|
| Connected UEs | 128 | All in RRC_CONNECTED, buffered data |
| Slots per second | 2,000 | 1/0.5ms, μ=1 |
| DL slots per second | 2,000 × 6/9 ≈ 1,333 | 6 DL slots per DDDSUUDDD pattern |
| Max simultaneous UEs (rank-1) | 16 | Limited by 32-TRX spatial layers |
| Max simultaneous UEs (rank-2) | 8 | 8 UEs × 2 layers = 16 sum rank |
| HARQ processes per UE | 16 | 4-bit HARQ process ID in DCI |
| Total HARQ contexts | 128 × 16 = 2,048 | All must be tracked simultaneously |
| DCI per DL slot (max) | 8–16 | One DCI 1_1 per scheduled UE per slot |
| Scheduler decisions/sec | 2,000 | Full 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:
- \(R_k(t)\) = instantaneous achievable rate (from CQI → MCS lookup) in current slot
- \(\bar{R}_k(t)\) = exponentially weighted moving average (EWMA) of past throughput:
Typical window \(T_c = 100\) slots (50 ms). The PF metric \(R_k / \bar{R}_k\) is:
- > 1: UE \(k\) is experiencing better-than-average channel → prefer scheduling now
- < 1: UE \(k\) has been receiving good throughput → deprioritize, give others a chance
- = 1: UE at its average → neutral
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):
- Non-interleaved mapping (default): VRB \(n\) → PRB \(n\). Simple, predictable, used for most scheduled PDSCH (DCI format 1_0 and 1_1).
- Interleaved mapping: VRBs permuted across the bandwidth via a block interleaver → frequency diversity. Used for SIB1, RA-RNTI, paging transmissions.
DCI format 1_1 resource allocation types:
- Type 0: RBG (Resource Block Group) bitmap. For N_RB=132, P=8 (TS 38.214 Table 5.1.2.1.1-1: N_RB 73–144 → P=8): \(\lceil 132/8 \rceil = 17\) RBGs → 17-bit bitmap. Flexible non-contiguous allocation.
- Type 1: RIV (Resource Indication Value) — compact encoding of start RB + length for contiguous allocations. \(\text{RIV} = N_{RB}(L_{RBs}-1) + RB_{start}\) if \(L_{RBs}-1 \leq \lfloor N_{RB}/2 \rfloor\).
15.5 — Per-Slot Scheduling Pipeline
Full scheduling pipeline for our 128-UE DDDSUUDDD system (runs every DL slot = 0.5 ms):
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).
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).
Compute \(R_k(t)/\bar{R}_k(t)\) for all 128 UEs using current CQI and EWMA history. Rank UEs by descending PF metric.
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.
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).
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.
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.
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.
| DL PDSCH slot (n) | Slot type | Earliest UL for HARQ-ACK | K1 value (slots) | HARQ-ACK slot time | RTT (PDSCH → re-tx) |
|---|---|---|---|---|---|
| 0 (D) | DL | 4 (U) | 4 | 2.0 ms | 6 ms (slot 6 earliest re-tx, next D) |
| 1 (D) | DL | 4 (U) | 3 | 2.0 ms | 6 ms |
| 2 (D) | DL | 4 (U) | 2 | 2.0 ms | 6 ms |
| 3 (S) | Special | 4 (U) | 1 | 2.0 ms | 6 ms |
| 6 (D) | DL | 13 (U in next frame) | 7 or wrap | 6.5 ms | ~9 ms |
| 7 (D) | DL | 13 (U) | 6 | 6.5 ms | ~9 ms |
| 8 (D) | DL | 13 (U) | 5 | 6.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:
| Field | Bits | Value / meaning |
|---|---|---|
| Identifier for DCI format | 1 | 1 = DL assignment |
| Bandwidth part indicator | 0–2 | Active BWP selection |
| Frequency domain resource assignment (Type 1) | ⌈log₂(N_RB(N_RB+1)/2)⌉ = 14 | RIV for 132 PRBs: 14 bits |
| Frequency domain resource assignment (Type 0) | 17 | RBG bitmap: 17 bits (P=8, ⌈132/8⌉=17 RBGs) |
| Time domain resource assignment | 4 | Row in PDSCH-TimeDomainAllocationList |
| Modulation and coding scheme | 5 | MCS index 0–28 |
| New data indicator | 1 | NDI toggle: new tx vs retx |
| Redundancy version | 2 | RV0/1/2/3 for HARQ combining |
| HARQ process number | 4 | 0–15 (16 processes) |
| Downlink assignment index | 2–4 | DAI for HARQ-ACK codebook |
| PDSCH-to-HARQ timing (K1) | 3 | Slots until HARQ-ACK |
| Antenna port(s) | 4–6 | DMRS port selection for MIMO |
| Transmission configuration indicator | 3 | Precoding/layer config |
| Precoding information and number of layers | 2–6 | Codebook index + rank |
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.
Link adaptation continuously matches the transmitted waveform to the instantaneous channel quality. The loop operates as follows:
- UE measures SINR on PDSCH DMRS or CSI-RS reference signals.
- UE maps measured SINR to a CQI index and encodes it in a CSI report.
- CSI report is carried on PUCCH (periodic) or PUSCH (aperiodic/semi-persistent).
- gNB scheduler selects an MCS index based on reported CQI ± OLLA offset.
- 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.
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.
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 (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₂.
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.
- 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).
- 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.
- If \(N_{\text{info}} \leq 3824\): look up TBS from TS 38.214 Table 5.1.3.2-1 (quantised to standard block sizes).
- If \(N_{\text{info}} > 3824\): \[ \text{TBS} = 8 \cdot \left\lceil \frac{N_{\text{info}} + 24}{8} \right\rceil - 24 \]
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 Index | Modulation | Code Rate (×1024) | Spectral Eff. (bits/sym) | Notes |
|---|---|---|---|---|
| 0 | QPSK | 120 | 0.234 | Edge, coverage-limited |
| 5 | QPSK | 378 | 0.740 | — |
| 9 | QPSK | 602 | 1.176 | Last QPSK entry |
| 10 | 16QAM | 340 | 1.328 | 16QAM start |
| 16 | 64QAM | 466 | 2.730 | 64QAM mid-range |
| 27 | 64QAM | 948 | 5.555 | Highest 64QAM |
| 28 | 256QAM | 772 | 6.031 | Requires 256QAM table |
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.
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.
- gNB transmits PDSCH (code block group or full TB).
- UE attempts LDPC decode. On success → ACK; on failure → NACK.
- ACK/NACK is fed back via PUCCH resource (UCI).
- On ACK: gNB marks process as idle, schedules new TB. On NACK: gNB retransmits.
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).
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.
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.
| PDSCH Slot | Slot Type | t (ms) | K1 | PUCCH Slot | Earliest Retx Slot | Retx t (ms) |
|---|---|---|---|---|---|---|
| 0 | D | 0.0 | 4 | 4 (U) | 6 (D) | 3.0 |
| 1 | D | 0.5 | 3 | 4 (U) | 6 (D) | 3.0 |
| 2 | D | 1.0 | 2 | 4 (U) | 6 (D) | 3.0 |
| 6 | D | 3.0 | 7 | 13/4 (U) | 15/6 (D) | 7.5 |
| 7 | D | 3.5 | 6 | 13/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.
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.
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.
| 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.
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 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.
- 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.
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} \]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.
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.
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.
| Split | O-RU functions | O-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
- C-plane (Control): O-DU → O-RU scheduling commands — which PRBs to use, beamforming weight indices, symbol timing, numerology. Must arrive at O-RU before the T1a_min deadline relative to the scheduled transmission time. C-plane travels via eCPRI message type 0 encapsulation.
- U-plane (User): frequency-domain IQ samples — DL: O-DU → O-RU (to be IFFT'd and transmitted); UL: O-RU → O-DU (FFT output from received PUSCH/PRACH). Compressed with BFP. Latency-critical: U-plane must arrive within the \([T_{2a,\min},\;T_{2a,\max}]\) window.
- S-plane (Sync): IEEE 1588v2 PTP (Precision Time Protocol) and/or SyncE (Synchronous Ethernet) distribute frequency and phase references. Target: \(\pm 130\,\text{ns}\) gNB-to-gNB phase alignment (O-RAN category B), enabling CoMP, TDD guard alignment, and accurate UL timing advance.
Fronthaul Latency Budget (O-RAN WG4 CUS §4)
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.
| Parameter | Value | Meaning | Consequence 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):
- Find the maximum magnitude across the 24 I/Q values in the PRB.
- Express the common scale as a 4-bit exponent (shared header).
- 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
- Runs over Ethernet (IEEE 802.3); uses 64B/66B line coding.
- eCPRI header: 4 bytes — message type (8b), payload size (16b), PC_ID / sequence number.
- Message type 0: IQ data (U-plane), type 2: real-time control (C-plane).
- Minimum encapsulation overhead: Ethernet (18B) + eCPRI (4B) = 22B per frame; for typical 1-PRB U-plane payload ≈ 28 bytes, overhead fraction is notable — hence grouping multiple PRBs per eCPRI packet is standard practice (frequency-domain IQ grouped per symbol, per eAxC).
- eAxC (extended Antenna Carrier): identifies a specific (RU port, carrier, direction) stream; for 32 TRX → 32 DL eAxC IDs + 32 UL eAxC IDs = 64 streams.
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.
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.
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
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):
- 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.
- 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\}\]
- 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.
- 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:
- TA command (11 bits): applied by UE to advance UL timing.
- UL grant: resource allocation for Msg3 PUSCH (frequency hopping may apply).
- Temporary C-RNTI: assigned for contention resolution.
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
- IP packet arrives at gNB → SDAP header → PDCP (ciphering/integrity) → RLC (segmentation into SDUs) → MAC PDU assembly with BSR/PHR subheaders.
- 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.
- DCI format 1_1 (for DL) generated per scheduled UE → mapped to CORESET → PDCCH DMRS + CCE aggregation → transmitted in first 1–3 symbols.
- 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.
- 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
- UE has data in buffer → sends SR (Scheduling Request) on PUCCH format 0 in PUCCH resource configured by RRC.
- gNB receives SR → allocates PUSCH via DCI format 0_1 in next DL slot.
- UE transmits PUSCH in UL slot using allocated PRBs, MCS, and number of layers (up to 4 UL layers with SRS-based precoding).
- O-RU performs FFT, CP removal, frequency-domain IQ → sent via U-plane to O-DU.
- 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:
- Slots 4–5 (UL): UEs transmit SRS on configured resources. gNB estimates uplink channel matrix \(\mathbf{H}_{UL}\).
- UL↔DL reciprocity: With calibrated TRX chains, \(\mathbf{H}_{DL} \approx \mathbf{H}_{UL}^T\). gNB computes SVD or Zero-Forcing precoder \(\mathbf{W} = \mathbf{H}^\dagger\).
- Slots 6–8 + 0–2 (DL): Updated precoder applied to PDSCH. Beamforming tracks channel at 222 Hz update rate (1/4.5 ms).
- Doppler tolerance: At pedestrian speeds (3 km/h, 2.6 GHz), \(f_d \approx 7\,\text{Hz}\) — well below 222 Hz update rate. At vehicular (120 km/h), \(f_d \approx 290\,\text{Hz}\) — marginal; additional Doppler compensation needed.
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
| Stage | Typical latency | Notes |
|---|---|---|
| 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
| Parameter | Value / Range | Significance |
|---|---|---|
| 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.
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.
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.
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)
DL Results (per slot, Tslot=0.5 ms)
UL Results (per slot, Tslot=0.5 ms)
| MCS | Modulation | Code Rate | SINR Threshold (approx) |
|---|---|---|---|
| 0 | QPSK | 0.117 | −3.0 dB |
| 4 | QPSK | 0.301 | 1.5 dB |
| 7 | 16QAM | 0.381 | 5.0 dB |
| 11 | 16QAM | 0.663 | 7.0 dB |
| 16 | 64QAM | 0.540 | 12.5 dB |
| 22 | 256QAM | 0.505 | 18.5 dB |
| 26 | 256QAM | 0.702 | 22.0 dB |
| 28 | 256QAM | 0.926 | 26.0 dB |
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.
| 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) | — |
| Type | CDM Groups | DMRS SC / PRB / symbol | Free SC in DMRS symbol | Port capacity | Notes |
|---|---|---|---|---|---|
| Type 1 | 1 | 6 (SC 0,2,4,6,8,10) | 6 | 2 ports | Odd SC free for data (rare) |
| Type 1 | 2 | 12 (all SC) | 0 | 4 ports | Entire symbol used by DMRS |
| Type 2 | 1 | 4 (SC 0,1,6,7) | 8 | 2 ports | Type 2 advantage: 8 data SC even in DMRS symbol |
| Type 2 | 2 | 8 (SC 0,1,2,3,6,7,8,9) | 4 | 4 ports | |
| Type 2 | 3 | 12 (all SC) | 0 | 6 ports (12 with 2 sym) | MU-MIMO: orthogonal CDM groups per UE |
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.
Uses net data RE count from Calculator 1. MCS table 2 (256QAM, TS 38.214 Table 5.1.3.1-2).
| Modulation order (Qm) | — |
| Code rate (R) | — |
| Effective bits / RE | — |
| Ninfo (raw info bits) | — |
| TBS (quantized) | — |
| Throughput @ 1 slot/ms (μ=0) | — |
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.
| 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.
- Category A (high latency / relaxed fronthaul): T1a_max_cp_dl = 500 μs
- Category B (low latency / tight fronthaul): T1a_max_cp_dl = 1250 μs
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.
- Category A: T1a_min_cp_dl = 250 μs
- Category B: T1a_min_cp_dl = 285 μs
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.
- Category A: T1a_max_up = 200 μs
- Category B: T1a_max_up = 196 μs
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.
- Category A: T1a_min_up = 50 μs
- Category B: T1a_min_up = 50 μs
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.
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.
- Category B: Ta3_min = 25 μs (O-RU starts sending almost immediately)
- Category B: Ta3_max = 1100 μs (O-RU may buffer up to 1.1 ms before forwarding)
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} \]- Category B: Ta4_min = 0 μs (no lower bound — O-DU must be ready immediately)
- Category B: Ta4_max = 2200 μs (O-DU must have all UL IQ within 2.2 ms of UL symbol end)
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.
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
| 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
- Fronthaul fiber: 10 km single-mode fiber (siteA deployment)
- τFH = 10 km ÷ (2×105 km/s) = 50 μs one-way
- Profile: Category B
- T_slot = 500 μs (μ=1, SCS=30 kHz), T_symbol ≈ 33.33 μs, 32 TRX
- T_ref = 0 = start of OTA transmission for DL slot 0, symbol 0
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).
| Time (μs) | Event | Detail |
|---|---|---|
| −1300 | O-DU sends DL C-plane | Section Type 1: PRB alloc, BF weight indices for 32 TRX, MCS, slot type. Arrives O-RU at −1250 μs ✓ (within [−1250,−285] μs window) |
| −1250 | C-plane arrives at O-RU | O-RU parses BF weights; configures IFFT engine for slot 0 |
| −246 | O-DU sends DL U-plane | 132 PRBs × 32 TRX × 14 symbols of BFP-9 compressed IQ. Arrives O-RU at −196 μs ✓ (T1a_max_up boundary) |
| −196 | U-plane arrives at O-RU; IFFT window opens | O-RU loads IQ into IFFT input buffer; starts OFDM modulation pipeline |
| −50 | O-RU completes IFFT + CP + DPD | 14 symbol outputs ready; PA ramp begins (T1a_min_up satisfied) |
| 0 | T_ref: OTA symbol 0 begins | 32 TRX radiate DL slot 0 symbol 0 simultaneously |
| +33 | Symbol 0 ends; symbol 1 OTA | Each symbol ≈ 33.33 μs + CP (2.34 μs normal CP at SCS=30 kHz) |
| +500 | DL slot 0 ends | 14 symbols × 35.68 μs avg (with CP) = 500 μs ✓ |
| +2000 | UL slot 4 begins (DDDSUUDDD) | Slots 0–2 = DL, slot 3 = Special, slots 4–5 = UL |
| +2500 | UL slot 4 ends; O-RU ADC complete | 32 RX chains have received PUSCH IQ; AGC + FFT complete |
| +2525 | O-RU begins UL U-plane TX | Ta3_min = 25 μs elapsed; BFP-9 compressed UL IQ sent on fronthaul |
| +2575 | O-DU receives UL U-plane | τ_FH = 50 μs transit; logsA shows UL IQ available for PUSCH decoder |
| +2575 → +3000 | HARQ decode window | O-DU has ≈ 425 μs: channel estimation → LDPC decode → HARQ decision → DL retransmit DCI scheduling |
| +3000 | DL slot 6 begins — HARQ retransmit opportunity | Earliest DL slot after UL slot 5; O-DU must have HARQ-NACK/ACK ready <285 μs before this (C-plane deadline) |
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
- 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.
- Boundary clock: aggregation switch or telecom router in the midhaul/backhaul network; forwards PTP with <100 ns additional holdover error.
- O-DU: receives PTP; maintains a local phase-locked oscillator disciplined by PTP; exports timing to the fronthaul Ethernet switch.
- 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.
| 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.
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.
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.
| Parameter | Value | Notes |
|---|---|---|
| Tslot | 500 μs | 14 symbols per slot |
| Tsymbol (no CP) | 33.33 μs | 1/SCS |
| Tcp,normal | 2.344 μs | at 122.88 MHz clock |
| Tcp,extended | 4.167 μs | first symbol of slot |
| Tsymbol+CP (nominal) | ≈ 35.68 μs | normal CP symbols |
| τFH | 50 μs | one-way O-DU → O-RU (10 km) |
| T1a_max_cp_dl | 1250 μs | C-plane DL advance (Cat. B) |
| T1a_min_up_dl | 50 μs | U-plane DL min advance |
| T1a_max_up_dl | 196 μs | U-plane DL max advance (Cat. B spec) |
| Ta3_max_ul | 1100 μs | UL U-plane O-RU max latency (Cat. B spec) |
| HARQ round-trip (slot 0 → slot 4) | 2000 μs | per DDDSUUDDD UL at slot 4 |
| TDD pattern slots D/S/U | D D D S U U D D D | slots 0-2 DL, 3 special, 4-5 UL |
Scenario: DL Slot 0 — 8 MU-MIMO UEs, Full Slot PDCCH + PDSCH
- 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.
- 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.
- 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
- 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
- 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
- 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.
- 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)
- 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).
- 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.
- 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)
- 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)
- 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
- 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.
- 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)
- 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.
- 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.
- 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.
Event Timeline — Full Sequence (t = −1300 μs to +3500 μs)
UL Timing Detail — PUCCH → HARQ Decision → Retransmit Window (t = +2000 to +3200 μs)
§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 |
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 |
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:
Field breakdown for reference system:
bandSectorId= 0b00 — single cell, single sectorccId= 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 = (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.
§25.4 — DL vs UL Fronthaul Streams (C/U Separation)
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):
= 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):
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).
§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); mandatoryfreqOffset— PRACH centre frequency offset from carrier centrenPRBs— number of PRBS: 6 for LRA=839 (Format 0), 12 for LRA=139re_mask— 12-bit RE mask for PRACH subcarriers within PRBsstartPrbc— first PRB of PRACH bandwidth within carrierguardband— 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.
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: