Scheduling & Data

DCI Formats —
The scheduler's instruction set

Every data transmission in 5G NR is preceded by a DCI — Downlink Control Information. DCI is the scheduler's per-slot instruction to the UE: here is your frequency allocation, here is your MCS, here is your time offset. This section covers all DCI formats, their fields, and how the UE decodes them.

TS 38.212 §7.3.1 TS 38.213 §10.1 TS 38.214 §5.1

What DCI is and how it arrives

DCI is carried on the PDCCH in a CORESET, addressed to the UE's C-RNTI (or other RNTI). The UE decodes it using blind decoding — exactly the same process as finding the SIB1 scheduling DCI, but now using its dedicated C-RNTI instead of SI-RNTI.

Each DCI format serves a specific purpose. Some schedule downlink data, some grant uplink resources, some configure power control. The format is not explicitly signalled — the UE infers it from the decoded bit count and the RNTI used.

A PDCCH carries DCI. DCI includes downlink assignments, uplink scheduling grants, and power control commands for PUCCH and PUSCH. The UE monitors PDCCH in one or more CORESETs.
3GPP TS 38.212, Section 7.3.1
DCI format overview — all formats and their uses TS 38.212 §7.3.1
FormatDirectionPurposeKey RNTI
0_0UL ↑PUSCH scheduling — fallback (compact)C-RNTI, TC-RNTI
0_1UL ↑PUSCH scheduling — normal (full features)C-RNTI
0_2UL ↑PUSCH scheduling — compact for URLLCC-RNTI
1_0DL ↓PDSCH scheduling — fallback (SI, paging, RAR)C-RNTI, SI-RNTI, P-RNTI, RA-RNTI
1_1DL ↓PDSCH scheduling — normal (full features)C-RNTI ← most common for data
1_2DL ↓PDSCH scheduling — compact for URLLCC-RNTI
2_0Slot format indicator (SFI) for TDDSFI-RNTI
2_1PRE-emption indicatorINT-RNTI
2_3UL transmit power controlTPC-PUSCH-RNTI

DCI Format 1_1 — downlink data scheduling

This is the most important DCI format for connected UEs receiving data. It tells the UE exactly which time-frequency resources carry its PDSCH, what MCS to use for decoding, and which HARQ process to use.

DCI Format 1_1 field breakdown — our example TS 38.212 §7.3.1.2.2
FieldBitsOur valueMeaning
Identifier for DCI11Downlink DCI
Freq domain resourcevaries0b001111100RBs 16–52 (37 RBs allocated)
Time domain resource40b0010 = 2Slot offset K0=0, symbols 2–13 (12 symbols)
VRB-to-PRB mapping10Non-interleaved
MCS (PDSCH)50b10100 = 20256-QAM, code rate 0.75
NDI11New data indicator (new TB)
Redundancy version200RV=0 (first transmission)
HARQ process number40b0011 = 3HARQ process 3
Antenna ports40b00001 layer, port 1000
TPC for PUCCH2000 dB power adjustment
PUCCH resource indicator3000HARQ-ACK on PUCCH resource 0
PDSCH-to-HARQ timing30b010 = 2ACK/NACK 2 slots after PDSCH

Frequency domain resource assignment

The frequency resource field uses Resource Indicator Value (RIV) encoding to compactly represent a contiguous allocation of RBs within the active BWP. For our allocation of RBs 16–52 (37 RBs starting at RB 16):

RIV encoding — RBs 16–52, 37 contiguous RBsTS 38.214 §5.1.2.2.2
// RIV formula:
// If (L_RBs - 1) ≤ floor(N_BWP_size / 2):
RIV = N_BWP_size × (L_RBs - 1) + RB_start
    = 52 × (37 - 1) + 16
    = 52 × 36 + 16
    = 1872 + 16
    = 1888

// In binary: 1888 = 11101100000 (11 bits for 52-RB BWP)
// → fits in the freq domain resource field

// Reverse: given RIV=1888, recover allocation:
L_RBs   = ⌊RIV / N_BWP_size⌋ + 1 = ⌊1888/52⌋ + 1 = 36 + 1 = 37
RB_start = RIV mod N_BWP_size     = 1888 mod 52     = 16

Time domain resource assignment

The 4-bit time domain field is an index into a table defined in TS 38.214 Table 5.1.2.1-1. Each row defines a slot offset K0 (how many slots after the DCI to start PDSCH) and the symbol allocation (start symbol S and number of symbols L).

Time domain assignment — row index 2TS 38.214 Table 5.1.2.1-1
// Table 5.1.2.1-1, row 2 (0-indexed):
K0     = 0    ← PDSCH in same slot as DCI
S      = 2    ← start symbol 2 (after DMRS)
L      = 12   ← 12 symbols
SLIV   = S×(14−L+1) + (L−1) if (L−1) ≤ 7 → SLIV = 2×3 + 11 = 17

// Summary: PDSCH occupies symbols 2–13 of the current slot
// 12 symbols × 37 RBs × 12 SC = 5,328 resource elements
// After removing DMRS (every 4th SC in symbol 2):
// Net data REs ≈ 4,884 (after DMRS overhead)

MCS table — modulation and code rate

The 5-bit MCS field indexes into one of three MCS tables (64-QAM, 256-QAM, or low-spectral efficiency). Which table to use is configured by RRC. For our UE in good signal conditions, Table 2 (256-QAM) is used.

MCS Table 2 (256-QAM) — selected rows TS 38.214 Table 5.1.3.1-2
MCS indexModulationCode rate (×1024)Spectral eff.
0QPSK1200.23 bps/Hz
5QPSK3780.74 bps/Hz
1016-QAM3301.29 bps/Hz
1564-QAM3783.70 bps/Hz
20 ← ours256-QAM7665.99 bps/Hz
25256-QAM9487.41 bps/Hz
27256-QAM9487.41 bps/Hz
Throughput estimate — MCS 20, 37 RBs, 12 symbols
// Data REs per slot:
REs = 37 RBs × 12 SC × 12 symbols − DMRS overhead ≈ 4,884

// Bits per slot:
bits = REs × modulation_order × code_rate
     = 4,884 × 8 (256-QAM) × 0.748 (rate 766/1024)
     = 29,222 bits/slot

// Throughput (2 slots per ms, 30 kHz SCS):
Mbps = 29,222 × 2000 slots/s / 1,000,000 = ~58 Mbps DL
DCI 1_1 decoded — PDSCH assignment
Frequency     → RBs 16–52 (37 RBs, RIV=1888)
Time          → same slot, symbols 2–13 (12 symbols)
MCS           → 20 (256-QAM, rate 0.748)
HARQ process  → 3, NDI=1 (new transmission)
Throughput    → approximately 58 Mbps DL
HARQ-ACK      → send on PUCCH 2 slots after this slot