When a 5G NR UE switches on, the very first thing it finds is the SSB (Synchronization Signal Block) on the synchronization raster. From the SSB alone — plus a handful of numbers carried in MIB and SIB1 — the UE reconstructs the entire frequency-domain anatomy of the carrier: where Point A is, where CORESET#0 sits, and how wide the initial DL BWP and the carrier itself are.
This tutorial visualizes that chain. You set the MIB / SIB1 parameters in the global configuration panel, and the simulator draws the resulting frequency layout (SSB, CORESET#0, BWP, carrier, Point A) and shows the exact 3GPP tables — TS 38.213 Table 13-x, the GSCN raster, and the ARFCN raster — that were used to place every box on the plot.
Sections
Mathematical Foundation
1. Channel Raster (ARFCN)
Every absolute frequency in NR signalling (e.g. absoluteFrequencyPointA, absoluteFrequencySSB) is an NR-ARFCN number NREF on a global raster defined in TS 38.104 Table 5.4.2.1-1:
For 0–3000 MHz the granularity ΔFGlobal is 5 kHz; for 3000–24250 MHz it is 15 kHz with offsets 3000 MHz / 600000.
2. Synchronization Raster (GSCN)
The UE cannot afford to blind-search every ARFCN, so SSBs may only be placed on a much sparser synchronization raster (TS 38.104 Table 5.4.3.1-1). Each allowed centre frequency SSREF has a Global Synchronization Channel Number:
The SSB occupies exactly 20 RB at the SSB subcarrier spacing, centred on SSREF:
3. From SSB down to Point A
Point A is the common reference for every resource grid of the carrier: subcarrier 0 of common resource block 0 for every numerology. The UE walks down from the detected SSB to Point A in two steps signalled in MIB and SIB1 (FR1 units shown):
k_SSB(MIBssb-SubcarrierOffset): subcarrier offset from the common RB grid to the first SSB subcarrier, counted in 15 kHz subcarriers for FR1 regardless of the SSB SCS.offsetToPointA(SIB1frequencyInfoDL): RB offset from Point A to the lowest common RB (atsubCarrierSpacingCommon) that overlaps the first RB of the SSB, counted in 15 kHz RBs for FR1. Note it points at the common-grid RB boundary, not at SSB_Low itself — the two coincide only when kSSB = 0. With 30 kHz common SCS that boundary lies on the 30 kHz grid, sooffsetToPointAis always even and the residue (up to 23 subcarriers) is carried entirely by kSSB — which is exactly why kSSB ranges 0–23 instead of 0–11.
offsetToPointA and k_SSB are always in 15 kHz units even when the SSB and the carrier use 30 kHz SCS. The CORESET#0 table offset, in contrast, is counted in RBs of the PDCCH (common) SCS. Mixing these units up is the single most common mistake when computing Point A by hand.In practice (and in this simulator) the carrier is planned first: the operator picks the carrier centre frequency (an ARFCN, e.g. from the network configuration) and the carrier width, which fixes Point A from the other direction:
Both derivations must land on the same Point A. The simulator anchors Point A from the centre ARFCN and treats the signalled offsetToPointA as a consistency cross-check against the SSB position: if the entered value does not match the geometry, a warning reports the value that would.
4. CORESET#0 Placement
MIB carries pdcch-ConfigSIB1, whose 4 MSBs (controlResourceSetZero, index 0–15) select one row of a table in TS 38.213 clause 13. Which table applies is decided by the pair {SSB SCS, PDCCH SCS} and the minimum channel bandwidth of the band — Tables 13-1 to 13-6 for FR1. The chosen row gives the CORESET#0 size (24 / 48 / 96 RB), its duration (1–3 symbols) and a frequency offset:
where CRBSSBLow is the lowest common RB (at PDCCH SCS) that overlaps the first RB of the SSB. The simulator shows the entire applicable table below the plot with the selected row highlighted.
5. Initial DL BWP (RIV Encoding)
SIB1 describes the initial DL BWP with a single integer locationAndBandwidth, a Resource Indicator Value evaluated with NsizeBWP = 275:
else RIV = 275 (275 − L + 1) + (274 − S)
where S is the starting RB and L the length in RBs of the BWP. In this simulator locationAndBandwidth is not typed in — it is derived, following the usual deployment where the initial DL BWP spans the whole carrier: S = offsetToCarrier and L = carrierBandwidth (both from scs-SpecificCarrierList). The derived RIV is displayed read-only in the SIB1 panel.
6. searchSpaceZero & Type0-PDCCH Monitoring Occasions
pdcch-ConfigSIB1 is one octet carrying two independent 4-bit indices (TS 38.331: PDCCH-ConfigSIB1 ::= SEQUENCE { controlResourceSetZero, searchSpaceZero }): the 4 MSB place CORESET#0 in frequency (Tables 13-1..13-10, section 4 above); the 4 LSB — searchSpaceZero — tell the UE when to monitor it. Which monitoring-occasion table applies is again decided by the multiplexing pattern and SCS pair; TS 38.213 defines five such tables: 13-11 (pattern 1, FR1), 13-12 (pattern 1, FR2), 13-13 (pattern 2, {120, 60}), 13-14 (pattern 2, {240, 120}) and 13-15 (pattern 3, {120, 120}). FR1 always uses pattern 1 → Table 13-11, whose row gives an offset O, the number of search-space sets per slot, a slot-stride factor M and the first PDCCH symbol. For SSB beam index i, the first monitored slot in a frame is:
and the UE monitors two consecutive slots starting at n0. The second tab of the simulator visualizes the octet split, the five-table selection, the full Table 13-11 with the selected row highlighted, and the resulting monitoring slots for every SSB beam (L = 4 beams ≤ 3 GHz, L = 8 beams in 3–6 GHz) over two radio frames.
Worked Example (default preset)
Step | Computation | Result |
|---|---|---|
SSB centre | GSCN 7838 → 3000 + (7838 − 7499) × 1.44 | 3488.16 MHz (ARFCN 632544) |
SSB_Low | 3488.16 − 10 × 12 × 0.030 | 3484.56 MHz |
Carrier | 51 RB × 12 × 30 kHz | 18.36 MHz (out of the 20 MHz channel) |
Point A | Centre ARFCN 632628 = 3489.42 MHz → 3489.42 − 18.36/2 − 0 (offsetToCarrier) | 3480.24 MHz (ARFCN 632016) |
offsetToPointA check | (3484.56 − 0 (kSSB) − 3480.24) / 0.18 | 24 ✔ matches SIB1 |
CORESET#0 | Table 13-4 index 13 → 48 RB, 2 sym, offset 12 → 3484.56 − 12 × 0.36 | 3480.24 MHz = Point A, span 17.28 MHz |
locationAndBandwidth | derived: BWP = full carrier → RIV = 275 × (51 − 1) + 0 | 13750 |
controlResourceSetZero from 13 to 10, 11 or 12 — same 48 RB CORESET#0, but the offset changes to 12 / 14 / 16 RB and the red bar slides relative to the SSB. Then pick a Reserved index and watch the warning.How the SSB Auto Config Works
With SSB Auto Config on (the default), you only steer the carrier — the simulator solves for a valid SSB placement, exactly the problem a network planning tool solves when you give it a band, a centre frequency and a bandwidth.
You set | Auto derives |
|---|---|
|
GSCN, SSB SCS, |
Selection algorithm
- Snap the centre ARFCN onto the band channel raster (the internal band table holds first <step> last per band, e.g. n1: 422000 <20> 434000, n41 @30 kHz: 499200 <6> 537999).
- Fix the SCS family:
subCarrierSpacingCommon= carrier SCS; SSB SCS = carrier SCS if the band's sync raster supports it, otherwise the band's only option; minimum channel BW from the band (only n79 selects the 40 MHz tables 13-5/13-6). - Compute the carrier geometry: CBW = NRB × 12 × SCS, carrier low = Fcentre − CBW/2, Point A = carrier low − offsetToCarrier × RB.
- Scan every GSCN of the band sync raster (first <step> last). A candidate is valid if both conditions hold:
SSB_Low ≥ carrier_low and SSB_High ≤ carrier_high
SSB_Low − PointA = k × 15 kHz, k integer ≥ 0
Condition (2) is what makes offsetToPointA / kSSB exist at all: if the residue is not a whole number of 15 kHz subcarriers, MIB/SIB1 simply cannot signal that SSB position on this carrier.
- Pick one candidate per the policy: close to center minimises |SSREF − Fcentre|; close to low limit takes the smallest SSREF; close to high limit the largest.
- Derive
offsetToPointAand kSSB from k. Neither is a free choice: picking the GSCN in step 5 already fixed the total offset k via condition (2), and the pair is simply k re-expressed against the common-SCS CRB grid —offsetToPointAis the quotient (whole CRBs), kSSB the remainder (subcarriers). With 30 kHz common SCS one CRB = 24 fifteen-kHz subcarriers:offsetToPointA= 2 × ⌊k/24⌋ (always even), kSSB = k mod 24. With 15 kHz common SCS:offsetToPointA= ⌊k/12⌋, kSSB = k mod 12. - Re-validate CORESET#0: the current
controlResourceSetZerorow is kept if it is not Reserved and the CORESET#0 stays inside the carrier; otherwise the first fitting index of the applicable Table 13-x is selected.
Example 1 — n78, ARFCN 632640, 51 RB @ 30 kHz, policy = close to center
Step | What happens |
|---|---|
1. Snap ARFCN | 632640 is already on the n78 raster (620000 <1> 653333) → kept. Fcentre = 3489.60 MHz. |
2. Fix SCS family |
|
3. Carrier geometry | CBW = 51 × 12 × 30 kHz = 18.36 MHz → carrier 3480.42 – 3498.78 MHz; offsetToCarrier = 0 → Point A = 3480.42 MHz. |
4. GSCN scan | SSREF must lie in [3484.02, 3495.18] MHz (carrier edges ± half SSB) → 7 candidates: GSCN 7836–7842, 1.44 MHz apart. All pass condition (2) since 1.44 MHz = 96 × 15 kHz. |
5. Policy pick | close to center → GSCN 7839 (SSREF = 3489.60 MHz = the centre exactly, Δ = 0). |
6. offsetToPointA / kSSB | SSB_Low = 3486.00 → k = (3486.00 − 3480.42)/0.015 = 372 → ⌊372/24⌋ = 15 CRBs @ 30 kHz → |
7. CORESET#0 check | Index #13 (48 RB, offset 12) spans 3481.50 – 3498.78 MHz — ends exactly on the carrier edge, still inside → kept. |
Step 5 is the only step where the three policies differ; steps 1–4 produce the same 7 candidates and step 6/7 just process whichever GSCN was picked:
Policy (step 5) | GSCN | SSREF | k | offsetToPointA | kSSB | CORESET#0 (step 7) |
|---|---|---|---|---|---|---|
close to center | 7839 | 3489.60 MHz (= centre, Δ = 0) | 372 | 30 | 12 | #13 kept (48 RB ends exactly at the carrier edge) |
close to low limit | 7836 | 3485.28 MHz | 84 | 6 | 12 | #13 would underflow Point A → falls back to #0 (24 RB) |
close to high limit | 7842 | 3493.92 MHz | 660 | 54 | 12 | #0 |
Example 2 — switching the band to n41 (raster snap + kSSB residue)
Starting from Example 1 and selecting band n41 in the dropdown:
Step | What happens |
|---|---|
1. Snap ARFCN | 632640 is outside n41 → snapped to the closest point of the 30 kHz raster 499200 <6> 537999 → 537996 = 2689.98 MHz, near the top of the band. |
2. Fix SCS family | Common SCS = 30 kHz; n41 supports both 15 and 30 kHz SSB → the carrier SCS is preferred → SSB SCS = 30 kHz (GSCN raster 6252 <3> 6714); min channel BW 5/10 MHz → Table 13-4. |
3. Carrier geometry | CBW = 18.36 MHz → carrier 2680.80 – 2699.16 MHz; Point A = 2680.80 MHz. |
4. GSCN scan | SSREF window = [2684.40, 2695.56] MHz. Sub-3 GHz raster points are 1.2 MHz apart, but the n41 30 kHz raster ends at GSCN 6714 (band top) → only 2 candidates fall inside: 6711 (2684.55) and 6714 (2685.75). |
5. Policy pick | close to center: |2685.75 − 2689.98| = 4.23 < |2684.55 − 2689.98| = 5.43 → GSCN 6714. |
6. offsetToPointA / kSSB | SSB_Low = 2682.15 → k = (2682.15 − 2680.80)/0.015 = 90 → ⌊90/24⌋ = 3 CRBs @ 30 kHz → |
7. CORESET#0 check | CRBSSBLow = 2681.88 MHz; #13 needs 12 RB below it → 2677.56 MHz < Point A ✘ → first fitting index = #0 (24 RB, offset 0): 2681.88 – 2690.52 MHz ✔. |
Example 3 — when Auto cannot find a valid GSCN (n79, ARFCN 693333, 51 RB @ 30 kHz)
Step | What happens |
|---|---|
1. Snap ARFCN | 693333 is the first n79 raster point → kept. Fcentre = 4399.995 MHz. |
2. Fix SCS family | Common SCS = 30 kHz; n79 SSB = 30 kHz (GSCN 8480 <16> 8880); min channel BW 40 MHz → Table 13-6 family. |
3. Carrier geometry | CBW = 18.36 MHz → carrier 4390.815 – 4409.175 MHz; Point A = 4390.815 MHz. |
4. GSCN scan | SSREF window = [4394.415, 4405.575] MHz (11.16 MHz wide), but n79 raster points are 16 × 1.44 = 23.04 MHz apart; the nearest one (GSCN 8480 = 4412.64 MHz) lies above the window → 0 candidates. |
5.–7. | Not reached. Auto raises “no valid GSCN of band n79 places a full SSB inside this carrier” and leaves the SSB fields untouched; the stale values then trip the normal consistency warnings. |
The fix is exactly what the message says: widen the carrier (e.g. 106 RB → 38.16 MHz spans at least one raster point) or move the centre ARFCN so that a GSCN falls inside the window.
offsetToPointA, kSSB and the highlighted Table 13-4 row follow — all three configurations stay warning-free.Simulation
The interactive simulator is below. Set the MIB / SIB1 parameters in the global configuration panel (or pick a preset); the Frequency View tab redraws the placement plot, the derived-value table, and the applicable 3GPP tables on every change.
Usage
- Pick a preset. The default reproduces the worked example above (n78, 20 MHz, SSB 30 kHz, Table 13-4 index 13, CORESET#0 lowest RB landing exactly on Point A). Presets apply a complete, self-consistent configuration as-is.
- SSB Auto Config (default On): with Auto on, you only steer the band, centre ARFCN, bandwidth and carrier SCS — the simulator picks a valid GSCN on the band synchronization raster (per the selected policy: SSB close to the centre frequency, the low edge, or the high edge of the carrier), then derives
k_SSB,offsetToPointA, the SSB / common SCS, the band minimum channel BW, and fixescontrolResourceSetZeroif the current row does not fit. The derived fields are greyed out. Select Auto Off (Manual) to edit everything yourself. - Raster-valid stepping: the up/down buttons of the Center Freq ARFCN and GSCN inputs step only through values that are valid for the selected band (channel raster step and per-band GSCN range from the internal band table, e.g. step 20 for 100 kHz-raster bands, step 6 for n41 at 30 kHz, step 16 for n79 GSCN). Changing the band snaps both numbers onto its raster.
- Read the plot bottom-up: Point A (yellow) →
offsetToPointA→ (+k_SSB) → SSB_Low → SSB (blue). The red CORESET#0 bar hangs below the SSB by the tableoffset. The width of each bar encodes its duration in OFDM symbols (CORESET#0: 1–3 symbols per the table row; SSB: always 4), with thin separators marking the symbol boundaries — but the horizontal placement carries no timing information (this is a frequency plot). The actual time relation between each SSB beam and its search space #0 occasion is per-beam and shown in the second tab; the classic “CORESET#0 immediately before the SSB in the same slot” picture holds only for specific cases such as SSB#0 with O = 0. - Change
controlResourceSetZeroand watch both the red bar and the highlighted row of the TS 38.213 table move together. - Switch SSB SCS / common SCS / min channel BW to change which Table 13-x applies; the full table shown below the plot is swapped accordingly.
- Edit the Center Freq ARFCN,
carrierBandwidthoroffsetToCarrierto move the carrier — Point A follows, and the derivedlocationAndBandwidthin the SIB1 panel updates. - Edit
offsetToPointA,k_SSB, GSCN to move the SSB relative to Point A. Inconsistent settings (e.g. anoffsetToPointAthat does not match the SSB/carrier geometry, or CORESET#0 falling below the carrier edge) produce a warning instead of a silently wrong plot. - Second tab (Type0-PDCCH): change
searchSpaceZeroin the MIB panel and watch the highlighted Table 13-11 row, thepdcch-ConfigSIB1octet, and the green monitoring slots move across the two-frame timeline. Rows 1/3/5/7 (M = 1/2) pack two beams into one slot at different symbols; rows 8/9 (M = 2) spread the beams over twice as many slots; rows 10–15 start PDCCH at symbol 1 or 2.
Parameters
Control | 3GPP origin | Effect on the plot |
|---|---|---|
| band-dependent (TS 38.101, SSB case A–C) | SSB height (20 RB × SCS) and which Table 13-x applies |
| TS 38.104 Table 5.4.3.1-1 | Absolute SSB centre frequency SSREF; everything else is derived downward from it |
| MIB | SCS of CORESET#0, the carrier and the initial BWP; RB size of the table offset |
| MIB | Sub-RB shift between the SSB and the common RB grid (15 kHz subcarriers, FR1) |
| MIB | Row of TS 38.213 Table 13-x → CORESET#0 size, symbols, offset |
| MIB | Row of TS 38.213 Table 13-11 → O, M, first symbol; drives the monitoring-occasion timeline in the second tab |
| TS 38.101-1, per band | Selects Tables 13-1..13-4 (5/10 MHz) vs 13-5/13-6 (40 MHz) for 30 kHz SSB |
| simulator control | On: derives GSCN / kSSB / offsetToPointA / SCS / min-BW / CORESET#0 index from band + ARFCN + bandwidth, placing the SSB near the centre, low edge or high edge per the selected policy |
| SIB1 | Selects the band row of the internal All-in-One table: DL ARFCN range/step, GSCN range/step, supported SSB SCS, minimum channel BW |
| network planning / carrier config | Anchors the whole plot: Point A = centre − CBW/2 − offsetToCarrier; spinner steps on the band channel raster |
| SIB1 | Cross-checked against the SSB position; a mismatch produces a warning with the consistent value |
| SIB1 | Gap (in carrier-SCS RBs) between Point A and the first usable carrier RB |
| SIB1 | RB size of the carrier / BWP spans and of |
| SIB1 | Carrier span (CBW arrow on the right), centred on the centre ARFCN |
| SIB1 | Derived, read-only: RIV(start = offsetToCarrier, length = carrierBandwidth) |
Key Insights
- Everything hangs off the SSB. The UE only ever measures one absolute frequency (the GSCN hit); Point A, CORESET#0, the BWP and the carrier are all reconstructed from relative offsets signalled in MIB / SIB1.
- Three different RB units coexist:
offsetToPointAin 15 kHz RBs, the Table 13-x offset in PDCCH-SCS RBs, andk_SSBin 15 kHz subcarriers. The plot annotates each value with its own SCS to keep them apart. - CORESET#0 is always multiplexing pattern 1 in FR1: same-slot, frequency-offset placement — which is why a single
offsetcolumn in the table fully describes its frequency position.
Limitations
- FR1 only. FR2 tables (TS 38.213 Tables 13-7..13-10, multiplexing patterns 2/3), 120/240 kHz SSB, and the FR2 60 kHz units for
k_SSB/offsetToPointAare not modeled. - The initial DL BWP is assumed to span the full carrier (start =
offsetToCarrier, length =carrierBandwidth) for the derivedlocationAndBandwidth; a narrower initial BWP (e.g. CORESET#0-sized) is not configurable. The BWPsubcarrierSpacingis assumed equal to the carrier SCS. - Time domain is pattern 1 / FR1 only. The second tab evaluates Table 13-11 (O, M, first symbol, two consecutive slots, SFN parity); Tables 13-12..13-15 (FR2 / patterns 2 and 3) are shown in the selection table but not evaluated. SSB burst positions within the slot (case A–C first-symbol patterns) and SIB1 PDSCH scheduling are not drawn.
- Band subset. The internal band table (from the ShareTechnote All in One Table, based on TS 38.101-1 Tables 5.2-1 / 5.4.2.3-1 and TS 38.104 Table 5.4.3.3-1) covers the common FR1 DL bands listed there; newer Release additions are not included. Only n79 is treated as a 40 MHz-minimum-bandwidth band, and per-band channel-bandwidth limits (which BW values a band actually supports) are not enforced.
- Typed values bypass the raster. The ARFCN / GSCN spinners step through valid raster values only, but a manually typed off-raster number is accepted and merely flagged through the consistency warnings.