Control Channels

CORESET#0 —
Finding where PDCCH lives

The MIB gave us 8 bits — controlResourceSetZero and searchSpaceZero. From those 8 bits alone, the UE must derive the exact frequency position and time structure of CORESET#0, the control resource set where SIB1 scheduling information will appear. This section walks through the full derivation with exact numbers.

TS 38.213 §13 TS 38.211 §7.3.2 TS 38.331 §6.3.2
Foundations · 5G NR This is the established 5G NR basis that 6G builds on. 6G is this site's primary focus — here is how the idea evolves: control channels in 6G. How this evolves in 6G →

What is a CORESET?

A Control Resource Set (CORESET) is a defined region of time and frequency where the UE looks for PDCCH — the Physical Downlink Control Channel that carries scheduling assignments. Think of it as a designated noticeboard: the network tells the UE exactly which RBs and which symbols to watch, and the UE only searches for control information there.

CORESET#0 is special — it is the only CORESET configured via MIB (before RRC connection). All other CORESETs (1–11) are configured later via RRC signalling. CORESET#0 must exist so the UE can find SIB1, which provides the full cell configuration needed to connect.

CORESET#0 is configured by pdcch-ConfigSIB1 in MIB. A UE shall find the first PDCCH monitoring occasion for Type0-PDCCH CSS set in the first active downlink slot of the radio frame associated with the SS/PBCH block.
3GPP TS 38.213, Section 13
8 bits
from MIB
controlResourceSetZero (4) + searchSpaceZero (4)
10 tables
in TS 38.213 §13
One selected by SSB SCS + PDCCH SCS pair
24 RBs
CORESET#0 width
Our example: index 3 → 24 RBs, 2 symbols
Point A
frequency anchor
CORESET#0 offset is relative to Point A

Step 1 — Select the correct table

TS 38.213 Section 13 provides Tables 13-1 through 13-10. The correct table depends on the SSB subcarrier spacing and the PDCCH subcarrier spacing (from subCarrierSpacingCommon in MIB).

Table selection — SSB SCS vs PDCCH SCS TS 38.213 §13
SSB SCSPDCCH SCSFRTable
15 kHz15 kHzFR1Table 13-1
15 kHz30 kHzFR1Table 13-2
30 kHz30 kHzFR1Table 13-4 ← our case
120 kHz60 kHzFR2Table 13-7
120 kHz120 kHzFR2Table 13-8
Our cell: SSB SCS = 30 kHz (from PSS detection) and PDCCH SCS = 30 kHz (subCarrierSpacingCommon = 1 in MIB). Therefore we use Table 13-4.

Step 2 — Table 13-4 lookup

Our controlResourceSetZero index = 3 (from MIB bits [12:15] = 0011). Looking up row 3 in Table 13-4:

TS 38.213 Table 13-4 — SSB SCS 30 kHz, PDCCH SCS 30 kHz TS 38.213 §13, Table 13-4
IndexNumber of RBsNumber of symbolsOffset (RBs)
02420
12422
22424
3 ← ours2422
42430
52432
64810
74814
84820
94824
Index 3 → 24 RBs wide, 2 symbols tall, offset = 2 RBs above Point A

Step 3 — Calculate Point A

The offset in the table is relative to Point A — the absolute frequency reference derived from the MIB field ssb-SubcarrierOffset (k_SSB = 2). This was derived from the MIB — see MIB fields:

Point A and CORESET#0 frequency calculationTS 38.211 §4.4.4.1 + TS 38.213 §13
// Point A (from Module 3 MIB parsing):
f_SSB_center = 3498.24 MHz
f_SSB_low    = 3498.24 − 60 × 0.030 = 3496.44 MHz
Point_A      = 3496.44 − k_SSB × SCS
             = 3496.442 × 0.030
             = 3496.38 MHz

// CORESET#0 frequency position:
// Offset = 2 RBs = 2 × 12 subcarriers × 30 kHz = 720 kHz
CORESET0_start = Point_A + offset × 12 × SCS
               = 3496.38 + 2 × 12 × 0.030
               = 3496.38 + 0.720
               = 3497.10 MHz

// Width:
CORESET0_width = 24 RBs × 12 SC × 30 kHz = 8.64 MHz
CORESET0_end   = 3497.10 + 8.64         = 3505.74 MHz

// Time domain:
CORESET0_symbols = 2  (symbols 0 and 1 of each monitoring slot)

Step 4 — Visualise the position

Let's place CORESET#0 in context against the SSB and the 100 MHz channel:

CORESET#0 frequency position — relative to SSB and Point A TS 38.213 §13, Table 13-4

CORESET internal structure — CCEs and REGs

Inside CORESET#0, the UE needs to know how control channel elements are organised in order to perform blind decoding. The building blocks are:

A Resource Element Group (REG) = 1 RB × 1 OFDM symbol = 12 REs. A Control Channel Element (CCE) = 6 REGs. The PDCCH uses 1, 2, 4, 8, or 16 CCEs — this is the aggregation level (AL). Higher aggregation = more robust coding = used for weak signal UEs.

CORESET#0 CCE structure — our exampleTS 38.211 §7.3.2
// CORESET#0 dimensions:
Width   = 24 RBs
Duration = 2 symbols

// REG count:
Total REGs = 24 RBs × 2 symbols = 48 REGs

// CCE count:
Total CCEs = 48 REGs / 6 REGs per CCE = 8 CCEs
(CCEs numbered 0–7)

// Aggregation levels available:
AL=1:  1 CCE  → can fit 8 candidates → typically not used for SIB1
AL=2:  2 CCEs → can fit 4 candidates
AL=4:  4 CCEs → can fit 2 candidates → used for SIB1
AL=8:  8 CCEs → can fit 1 candidate  → used for SIB1
AL=16: exceeds CORESET#0 size → not applicable here
CORESET#0 — REG and CCE layout TS 38.211 §7.3.2

CCE-to-REG mapping — interleaved vs non-interleaved

The mapping of CCEs to REGs can be either non-interleaved (CCEs map to contiguous REGs — good for beamforming) or interleaved (CCEs spread across the CORESET — provides frequency diversity). For CORESET#0, the mapping type is determined by the table and is typically non-interleaved.

CORESET#0 — complete derivation result
Frequency start  → 3497.10 MHz
Frequency end    → 3505.74 MHz
Width            → 24 RBs = 8.64 MHz
Duration         → 2 symbols (symbols 0 and 1)
Total CCEs       → 8 CCEs (0–7)
Next step        → Search Space#0 tells the UE when to monitor