>
Home5G NRPHY — Physical LayerFrame / Slot / Symbol
📶 PHY — Physical LayerBeginner

Radio Frame, Subframe, Slot & Symbol in 5G NR

The 10 ms frame down to the OFDM symbol — subcarrier spacing, numerology μ, slots per subframe, and how it all scales.

📚 3GPP-basedTS 38.211

LTE fixed one subcarrier spacing at 15 kHz and built everything on top of it. NR had to cover a 600 MHz IoT carrier and a 400 MHz millimetre-wave carrier with the same physical layer, and those two have irreconcilable requirements: the low band needs long symbols to survive multipath, the high band needs short symbols to survive phase noise and Doppler. The resolution was to make subcarrier spacing a parameter — a single exponent µ — and then to hold two things constant so that the parameter does not tear the system apart.

Contents
  1. 01Why the Frame Structure Is Built This Way
  2. 02Time Units: T_c, T_s and the Constant κ
  3. 03Frames, Subframes, Half-Frames and the SFN
  4. 04Numerology µ: the One Exponent That Scales Everything
  5. 05Symbols and Cyclic Prefix: Where the Extra 16κ Goes
  6. 06Resource Elements and Resource Blocks: CRB, PRB, VRB
  7. 07Point A, offsetToCarrier and the Common Resource Block Grid
  8. 08Carrier Bandwidth in PRBs: FR1 and FR2
  9. 09Bandwidth Parts
  10. 10The SS/PBCH Block Inside the Grid
  11. 11SSB Burst Sets, Candidate Positions and Periodicity
  12. 12GSCN and the Synchronisation Raster
  13. 13TDD DL/UL Patterns and the Guard Period
  14. 14Slot Format Indication: Who Wins
  15. 15Mini-Slots and Non-Slot-Based Scheduling
  16. 16Parameter Reference: ASN.1 and Ranges
  17. 17Failure Modes and Misconfigurations
  18. 18Illustrative Traces
  19. 19Release Deltas: Rel-15 to Rel-18
  20. 20Reading Frame Structure in Logs: A Checklist
  21. 21Glossary
  22. 22References

1. Why the Frame Structure Is Built This Way

LTE fixed one subcarrier spacing at 15 kHz and built everything on top of it. NR had to cover a 600 MHz IoT carrier and a 400 MHz millimetre-wave carrier with the same physical layer, and those two have irreconcilable requirements: the low band needs long symbols to survive multipath, the high band needs short symbols to survive phase noise and Doppler. The resolution was to make subcarrier spacing a parameter — a single exponent µ — and then to hold two things constant so that the parameter does not tear the system apart.

  • The 10 ms radio frame and the 1 ms subframe never change. Whatever µ is, a subframe is 1 ms and a frame is ten of them. Numerology subdivides the subframe; it never touches the frame.
  • A resource block is always 12 subcarriers. Its width in Hz scales with µ, but its width in subcarriers does not, so every allocation formula, every DCI field and every bitmap in the specification can be written in RBs without knowing µ.

Everything else — slot duration, symbol duration, cyclic prefix length, how many RBs fit in a carrier, how many slots exist per frame — follows mechanically from µ. That is why the first question to ask of any timestamp, slot number or PRB index in a log is which numerology it was counted in. A "slot 17" means 8.5 ms into the frame at 30 kHz and 2.125 ms at 120 kHz, and nothing in the number itself tells you which.

The 1 ms Invariant: Numerology Subdivides the SubframeThe 1 ms Invariant: Numerology Subdivides the SubframeSlot durations 1 / 0.5 / 0.25 / 0.125 / 0.0625 ms; every boundary of a coarser numerology is also a boundary of a finer oneSubframeone subframe = 1 ms, alwaysμ=0 15 kHz1 slot0μ=1 30 kHz2 slots01μ=2 60 kHz4 slots0123μ=3 120 kHz8 slots01234567μ=4 240 kHz16 slots012345678910111213141501252503755006257508751000Time within one subframe (µs)Slot numbers restart at 0 in every subframe for this drawing; in the specification slots are numbered both withinthe subframe (n_s) and within the frame (n_s,f). The nesting is exact, which is what lets different numerologiesshare a carrier without a scheduler having to reconcile two independent time bases.
Figure 1. The invariant that makes scalable numerology safe. Because the subdivision is by powers of two, every slot boundary at a coarse numerology is also a slot boundary at every finer one — so two BWPs with different SCS on one carrier never need their time bases reconciled.
Structure elementWhat it indexesWhere you meet it in a logCompanion document
SFNThe 10 ms radio frame, 0..1023Every PRACH occasion, paging occasion, SI window and SSB burst is anchored to it17 System Information, 19 Paging
Slot1 / 2 / 4 / 8 / 16 per subframe by µScheduling decisions, HARQ timing (k0, k1, k2), DRX on-durations08 Scheduling, 05 HARQ, 11 DRX
Symbol0..13 within a slot (normal CP)PRACH start symbol s_id, CORESET first symbol, SSB first symbol, TDD pattern boundaries03 Random Access, 18 MIB and SIB1 IEs
PRB / CRB12 subcarriers each, on a per-SCS gridFrequency-domain resource allocation, msg1-FrequencyStart, CORESET frequency bitmaps08 Scheduling
BWPUp to four configured, one active per directionbwp-Id in every dedicated PDSCH/PUSCH configuration; BWP indicator in DCI 0_1 / 1_113 RRC Overview, 08 Scheduling
SSB index0..3, 0..7 or 0..63 within a half-frameEvery beam-level measurement, every RACH resource selection, every handover report12 Beam Failure Recovery, 20 Measurements
T_cThe 0.509 ns base time unitTiming advance N_TA, cyclic prefix lengths, all PHY-level offsets04 Timing Advance

Table 1. The frame structure is not a topic in itself so much as the coordinate system every other topic is written in.

💡
Key Point

The single most common reading error in NR logs is applying the wrong numerology to a slot or symbol index. Symbol 4 of slot 19 is a different instant at 15 kHz and at 30 kHz, and the referenceSubcarrierSpacing used to describe a TDD pattern need not equal the SCS of the BWP the UE is actually transmitting in. Establish µ before you interpret any index.

2. Time Units: T_c, T_s and the Constant κ

The specification does not define durations in seconds. It defines two time units and expresses everything as an integer multiple of one of them TS 38.211 cl. 4.1. This matters because it is why cyclic prefix lengths are the odd-looking integers they are, and why the timing advance granularity is what it is.

TS 38.211 cl. 4.1 -- basic time units
T_c = 1 / (Df_max * N_f)          Df_max = 480 000 Hz,  N_f = 4096
    = 1 / 1 966 080 000 s
    ~ 0.509 ns                    the NR basic time unit

T_s = 1 / (Df_ref * N_f,ref)      Df_ref = 15 000 Hz,  N_f,ref = 2048
    = 1 / 30 720 000 s
    ~ 32.552 ns                   the LTE basic time unit, kept for reference

kappa = T_s / T_c = 64            the constant that appears in every CP formula
QuantityIn T_cIn secondsWhy the number matters
T_c10.509 nsThe sampling grid of the widest numerology (480 kHz × 4096-point FFT). Every PHY offset is an integer number of these.
T_s6432.552 nsThe LTE unit. Retained so that LTE-derived quantities — notably the 16·T_s timing-advance step — carry over unchanged.
κ64 (dimensionless)--Appears as 144·κ·2^-µ and 16·κ in the CP formulas and as 16·64 in the timing-advance conversion. It is only a unit conversion factor.
Subframe1 966 0801 ms= Δf_max·N_f/1000 · T_c. Fixed for all µ — the anchor of the whole structure.
Radio frame19 660 80010 ms= Δf_max·N_f/100 · T_c. Ten subframes, always.

Table 2. The four numbers behind every duration in NR. Note that T_c is defined from the largest numerology, so it is fine enough to express any symbol boundary at any µ as an integer.

The clearest place these units surface in practice is the timing advance command, converted with N_TA = T_A · 16 · 64 / 2^µ in units of T_c — where the 16 · 64 is 16 · κ, i.e. sixteen LTE samples. The step size therefore halves every time µ increments: 0.52 µs at 15 kHz, 0.26 µs at 30 kHz, 0.13 µs at 60 kHz. See the companion 04 Timing Advance document.

3. Frames, Subframes, Half-Frames and the SFN

A radio frame is 10 ms and contains ten 1 ms subframes, numbered 0 to 9. Frames are numbered by the System Frame Number, a 10-bit counter that runs 0..1023 and then wraps. Each frame is also divided into two half-frames of five subframes: half-frame 0 is subframes 0–4, half-frame 1 is subframes 5–9. The half-frame is not decoration — SSB burst sets are defined to fit inside one, and which one a given burst occupies is signalled by a single bit in the PBCH payload.

ElementDurationCountHow its number reaches the UE
Radio frame10 msSFN 0..1023, then wraps6 most-significant bits in the MIB field systemFrameNumber, 4 least-significant bits in the PBCH transport payload outside the MIB
Half-frame5 ms2 per frameOne bit (n_hf) in the PBCH transport payload. 0 = first half-frame
Subframe1 ms10 per frameDerived — not signalled. Subframe = floor(slot / 2^µ)
Slot1 ms / 2^µ10·2^µ per frameDerived from the frame timing plus µ. Numbered both within the subframe (n_s^µ) and within the frame (n_s,f^µ)
Symbolsee §514 per slot (12 with extended CP)Derived. Symbol 0 of slot 0 of a frame is the frame boundary
Hyper-frame10.24 sH-SFN 0..1023 (Rel-17 eDRX)Broadcast in system information where extended idle-mode DRX is supported; absent otherwise

Table 3. The time hierarchy and where each level's index actually comes from. Only the frame and half-frame numbers are transmitted; everything finer is counted.

🧮
Worked Calculation

SFN 0..1023 at 10 ms per frame wraps every 10.24 s.

1024 × 10 ms = 10 240 ms = 10.24 s

Any periodicity that does not divide 10.24 s evenly will drift relative to the SFN across a wrap. This is why every broadcast periodicity in NR — SSB (5/10/20/40/80/160 ms), SI windows, paging cycles (32..256 frames), DRX cycles — is a power-of-two multiple of 10 ms or a divisor of it. It is also why an idle-mode DRX cycle longer than 10.24 s needs a hyper-frame counter: 1024 hyper-frames × 10.24 s = 10 485.76 s, about 2.9 hours.

⚠️
Common Pitfall

A gNB restart resets the SFN, and the SFN of two cells on the same site is usually but not necessarily aligned. If a paging occasion, an SMTC window or an SSB measurement seems to be landing in the wrong place after a node restart, check whether the SFN reference you are comparing against came from before the wrap or from a different cell.

4. Numerology µ: the One Exponent That Scales Everything

The subcarrier spacing is SCS = 15 · 2^µ kHz. Everything else in the time domain scales as 2^-µ and everything in the frequency domain as 2^µ. There is no independent parameter: pick µ and the rest is determined TS 38.211 Table 4.2-1.

µSCSSlotSlots per subframeSlots per frameSymbols per slotCPWhere it is used
015 kHz1 ms11014NormalFR1 low band, wide-area coverage, 5–50 MHz carriers, NB/IoT-adjacent deployments. SSB Case A.
130 kHz0.5 ms22014NormalThe FR1 default. Data and SSB on n41/n77/n78/n79. SSB Case B or C.
260 kHz0.25 ms44014 or 12Normal or extendedThe only numerology with extended CP. FR1 high-throughput, FR2 data, URLLC. Never used for SSB.
3120 kHz0.125 ms88014NormalFR2 default for data and control. SSB Case D.
4240 kHz62.5 µs1616014NormalSS/PBCH block only — not used for PDSCH or PUSCH. SSB Case E.
5480 kHz31.25 µs3232014NormalRel-17, FR2-2 (52.6–71 GHz) only.
6960 kHz15.625 µs6464014NormalRel-17, FR2-2 only.

Table 4. The full numerology table. µ = 5 and 6 were added in Rel-17 for the 52.6–71 GHz range; µ = 4 has always been SSB-only. Extended CP exists at 60 kHz and nowhere else.

The trade being made is the classic OFDM one. Doubling the SCS halves the useful symbol duration T_u = 1/Δf, which halves the delay spread the cyclic prefix can absorb, and doubles the tolerance to Doppler shift and oscillator phase noise. At 3.5 GHz with a few microseconds of delay spread, 30 kHz is comfortable. At 28 GHz the phase noise makes 15 kHz unusable and the short propagation paths make the shorter CP harmless, so 120 kHz is the natural choice.

µ = 4 deserves a note of its own. It appears in the numerology table but is not a data numerology — it exists so that an FR2 cell can pack 64 SSB candidate positions into a 5 ms half-frame while its PDSCH runs at 120 kHz. A UE will therefore legitimately report a 240 kHz SSB measurement on a carrier whose active BWP is 120 kHz, and that is not an inconsistency in the log.

5. Symbols and Cyclic Prefix: Where the Extra 16κ Goes

Each OFDM symbol consists of a useful part of duration T_u = 1/Δf preceded by a cyclic prefix — a copy of the end of the useful part, prepended to the front. The CP absorbs the multipath echoes of the previous symbol, so as long as the delay spread is shorter than the CP there is no inter-symbol interference and the channel stays diagonal in the frequency domain. The CP length is TS 38.211 cl. 5.3.1:

Cyclic prefix length
Normal CP:      N_CP,l = 144 * kappa * 2^-mu  +  16 * kappa   if l = 0 or l = 7*2^mu
                N_CP,l = 144 * kappa * 2^-mu                  otherwise

Extended CP:    N_CP,l = 512 * kappa * 2^-mu                  for every l

  l       is the symbol index within the SUBFRAME, 0 .. 14*2^mu - 1
  kappa   = 64
  lengths are in units of T_c

The two index values that get the extra 16·κl = 0 and l = 7·2^µ — are exactly the symbols that start the two 0.5 ms halves of the subframe. So every 1 ms subframe contains exactly two long-CP symbols, at 0 ms and 0.5 ms, whatever µ is. At 30 kHz that is the first symbol of every slot; at 60 kHz the first symbol of every second slot; at 120 kHz of every fourth.

Cyclic Prefix at 30 kHz: Why the First Symbol Is DifferentCyclic Prefix at 30 kHz: Why the First Symbol Is DifferentTS 38.211 cl. 5.3.1 -- the extra 16κ T_c on l = 0 makes the 0.5 ms boundary land on an exact sample countSymbol l = 0useful symbol T_u = 1/Δf = 33.333 µsSymbol l = 1useful symbol T_u = 1/Δf = 33.333 µsSymbol l = 2useful symbol T_u = 1/Δf = 33.333 µs0102030405060708090100110Time from the start of the slot (µs)CP(l=0) = 144·κ/2 + 16κ = 5632 T_c = 2.865 µs CP(l≠0) = 144·κ/2 = 4608 T_c = 2.344 µsPer 0.5 ms the CP budget is fixed at 1024κ T_c however you slice it: 7·2^μ symbols each carrying144·κ/2^μ, plus one 16κ top-up. That is why the long CP recurs at every 0.5 ms boundary and nowhere else.
Figure 2. The first three symbols of a slot at 30 kHz. The long CP is not a special robustness feature — it is arithmetic padding, and it applies only to slots that begin a 0.5 ms boundary.
🧮
Worked Calculation

Why 16κ, and why there? Half a subframe is 15 360 T_s = 983 040 T_c. In that time you must fit 7·2^µ symbols.

Useful parts: 7·2^µ × 2048·κ·2^-µ = 7 × 2048 × 64 = 917 504 T_c

Ordinary CPs: 7·2^µ × 144·κ·2^-µ = 7 × 144 × 64 = 64 512 T_c

Sum so far: 917 504 + 64 512 = 982 016 T_c

Shortfall: 983 040 − 982 016 = 1 024 T_c = 16κ

The 16·κ is precisely the leftover, and because both terms above are independent of µ, the leftover is too. One top-up per 0.5 ms, forever.

µT_u = 1/ΔfOrdinary CPLong CP (l = 0, 7·2^µ)Symbol + ordinary CP
0 (15 kHz)66.667 µs9 216 T_c = 4.688 µs10 240 T_c = 5.208 µs71.354 µs
1 (30 kHz)33.333 µs4 608 T_c = 2.344 µs5 632 T_c = 2.865 µs35.677 µs
2 (60 kHz), normal16.667 µs2 304 T_c = 1.172 µs3 328 T_c = 1.693 µs17.839 µs
2 (60 kHz), extended16.667 µs8 192 T_c = 4.167 µsnot applicable — no top-up20.833 µs
3 (120 kHz)8.333 µs1 152 T_c = 0.586 µs2 176 T_c = 1.107 µs8.919 µs
4 (240 kHz)4.167 µs576 T_c = 0.293 µs1 600 T_c = 0.814 µs4.460 µs

Table 5. Symbol and CP durations, computed from the clause 5.3.1 formulas. Extended CP needs no top-up because 12 symbols × (2048+512)·κ·2^-µ already fills the subframe exactly.

⚠️
Common Pitfall

Extended CP at 60 kHz gives 4.167 µs of guard — roughly what 15 kHz normal CP gives — at the cost of two symbols per slot, i.e. about 14 % of the payload. It is the right answer for a large cell that needs 60 kHz for some other reason (bandwidth, or coexistence with an FR2 numerology), and the wrong answer almost everywhere else. Configuring it costs throughput silently: nothing fails, the slot just has 12 symbols instead of 14, and the peak rate drops.

The CP length is also the cell-size limit for anything that is not timing-advanced. PRACH gets its own, much longer CP precisely because the preamble is sent before any timing advance exists — see the companion 03 Random Access document, §6.1, where the preamble format's CP is what sets the maximum cell radius.

6. Resource Elements and Resource Blocks: CRB, PRB, VRB

A resource element is one subcarrier in one OFDM symbol, identified by the pair (k, l). It is the smallest addressable unit and carries one modulation symbol. A resource block is 12 consecutive subcarriers in the frequency domain TS 38.211 cl. 4.4.4 — note that the definition says nothing about time. An RB is a frequency-domain object; when people say "an RB" and mean 12 subcarriers across 14 symbols they mean an RB for the duration of a slot, which is 168 resource elements.

One Slot, One Resource Block: the Smallest Complete PictureOne Slot, One Resource Block: the Smallest Complete PictureNormal CP, 14 symbols. The block is 12 subcarriers wide because N_sc^RB = 12 for every numerologyl = 0CP is16κ T_clonger1 RBin 1symbol= 12 RERE12 subcarriers = 1 RB180 kHz at 15 kHz SCS360 kHz at 30 kHz SCS1.44 MHz at 120 kHz SCS168 REs in this picture.A 273-PRB carrier holds45 864 of them per slot.11109876543210012345678910111213OFDM symbol index l within the slot (14 symbols = one slot)Subcarrier index k within the resource blockFirst symbol of a 0.5 ms boundaryOne RB within one symbolOne resource element (k=5, l=8)
Figure 3. One resource block across one slot. The l = 0 shading applies to slots that start a 0.5 ms boundary — every slot at 30 kHz, every second slot at 60 kHz. See §5.

NR then defines three numbering schemes over resource blocks, and mixing them up is a genuine source of misread logs:

FlavourNumbered fromRangeWho uses it
CRB — common resource blockPoint A, upward, on a per-SCS grid. CRB 0 subcarrier 0 is point A0 upward; a carrier may start at any CRBThe absolute frequency reference. CORESET frequency-domain bitmaps, offsetToCarrier, SSB placement, and anything that has to be unambiguous before a BWP exists
PRB — physical resource blockThe first RB of a bandwidth part0 .. N_BWP^size − 1, at most 0..274Everything inside an active BWP. n_PRB = n_CRB − N_BWP^start. This is what a scheduling grant's frequency allocation counts in
VRB — virtual resource blockThe same origin as PRB, but mapped to PRBs either directly or through an interleaver0 .. N_BWP^size − 1Only in DL resource allocation type 1. Non-interleaved mapping means VRB n = PRB n; interleaved mapping spreads a contiguous VRB allocation across the band for frequency diversity TS 38.211 cl. 7.3.1.6

Table 6. The three RB numberings. A PRB index in a log is meaningless without the BWP it belongs to, and a CRB index is meaningless without the SCS its grid was drawn at.

💡
Key Point

There is one CRB grid per subcarrier spacing, all sharing point A as their origin. CRB 10 at 15 kHz and CRB 10 at 30 kHz are different pieces of spectrum — the second is twice as far above point A. When a log prints a CRB number, the SCS is part of the value.

The ceiling on all three is maxNrofPhysicalResourceBlocks = 275 per numerology, so a BWP is at most 275 PRBs and PRB indices never exceed 274. A "PRB" index above that in a log is a CRB index, a subcarrier index, or a decoder bug.

7. Point A, offsetToCarrier and the Common Resource Block Grid

Point A is the frequency-domain origin of the whole cell. It is not required to be inside the carrier, it is not the carrier centre, and it is not where anything is transmitted. It is simply the agreed zero from which every CRB grid is counted, so that the network and the UE can talk about absolute frequency positions without either of them having to know the other's bandwidth configuration.

IEWhere it appearsUnitsRangeWhat it fixes
absoluteFrequencyPointA
FrequencyInfoDL in dedicated configurationARFCN (NR-ARFCN, 5 kHz or 15 kHz raster by band)0 .. 3 279 165Point A directly, as an absolute frequency
offsetToPointA
FrequencyInfoDL-SIB in SIB1RBs — 15 kHz RBs for FR1, 60 kHz RBs for FR20 .. 2199Point A indirectly: the offset from the lowest subcarrier of the lowest RB of the SSB the UE used for initial access, down to point A. A UE that has only decoded the SSB can therefore compute point A
offsetToCarrier
SCS-SpecificCarrier
RBs of that SCS0 .. 2199How far above point A this SCS's usable carrier starts
carrierBandwidth
SCS-SpecificCarrier
PRBs of that SCS1 .. 275How wide the usable carrier is at that SCS
k_SSB / ssb-SubcarrierOffsetMIB (4 bits) plus one bit from the PBCH payload for FR1Subcarriers — 15 kHz units for FR1, SSB SCS units for FR20 .. 23 (FR1), 0 .. 11 (FR2)The residual offset between the CRB grid and the SSB's lowest subcarrier, because the SSB sits on the synchronisation raster and the CRB grid does not

Table 7. Everything that positions the grid. offsetToPointA and k_SSB together are what let a UE bootstrap the entire frequency coordinate system from an SSB alone.

The two-step definition of point A is deliberate. Before SIB1, a UE knows only where the SSB is, because it found it by searching the synchronisation raster. offsetToPointA in SIB1 and k_SSB in the MIB let it work downward from the SSB to point A, and from there it can build the CRB grid and interpret every frequency-domain field in every subsequent message. Get either value wrong in configuration and the symptom is characteristic: the MIB decodes, CORESET#0 is found — it is defined relative to the SSB, not to point A — and then SIB1 or the initial BWP is in the wrong place. See the companion 18 MIB and SIB1 IEs document.

Point A, the Common Resource Block Grid, and the Active BWPPoint A, the Common Resource Block Grid, and the Active BWP20 MHz at 30 kHz SCS: offsetToCarrier = 6, carrierBandwidth = 51. The active DL BWP changes twice across these ten slotsInitial DL BWPbwp-Id 024 PRB from CRB 6BWP 1 bwp-Id 151 PRB from CRB 6locationAndBandwidth = 13750BWP 2 bwp-Id 211 PRB from CRB 30DCI 1_1 BWP indicator -> BWP 1bwp-InactivityTimer expiry -> BWP 2point A = CRB 0, subcarrier 0offsetToCarrier = 6 RB -- the carrier need not start at point ACRB 0CRB 6 = point A + offsetToCarrierCRB 30CRB 41CRB 57nn+1n+2n+3n+4n+5n+6n+7n+8n+9SlotCommon resource block index (CRB) on the 30 kHz gridConfigured carrierOutside the carrierActive DL BWPA UE only ever has one active DL BWP and one active UL BWP per cell. Everything outside it is invisible to that UE,even though the CRB grid it is measured against covers the whole carrier.
Figure 4. A 20 MHz carrier at 30 kHz. Point A is below the carrier by offsetToCarrier RBs; three BWPs are configured and the active one changes twice across ten slots. The initial BWP here is narrower than the carrier because it is sized to CORESET#0.

8. Carrier Bandwidth in PRBs: FR1 and FR2

How many RBs fit into a channel bandwidth is not calculated by the UE — it is tabulated per bandwidth and per SCS as the transmission bandwidth configuration N_RB TS 38.101-1 Table 5.3.2-1 and TS 38.101-2 Table 5.3.2-1, with the leftover spectrum becoming guard band. The numbers are what they are because the guard band has to satisfy the spectrum emission mask, not because of any clean formula.

Channel BW15 kHz30 kHz60 kHz
5 MHz2511--
10 MHz522411
15 MHz793818
20 MHz1065124
25 MHz1336531
30 MHz1607838
35 MHz1889244
40 MHz21610651
45 MHz24211958
50 MHz27013365
60 MHz--16279
70 MHz--18993
80 MHz--217107
90 MHz--245121
100 MHz--273135

Table 8. FR1 transmission bandwidth configuration N_RB. A dash means the combination is not defined — notably 15 kHz stops at 50 MHz, which is why a 100 MHz FR1 carrier is always 30 kHz or above.

Channel BW60 kHz120 kHz
50 MHz6632
100 MHz13266
200 MHz264132
400 MHz--264

Table 9. FR2-1 transmission bandwidth configuration N_RB. Rel-17 FR2-2 (52.6–71 GHz) adds 480 kHz and 960 kHz columns and channel bandwidths up to 2000 MHz.

🧮
Worked Calculation

How 100 MHz becomes 273 PRBs at 30 kHz.

Occupied bandwidth = 273 RB × 12 subcarriers × 30 kHz = 98 280 kHz = 98.28 MHz

Total guard = 100 000 − 98 280 = 1 720 kHz, i.e. 860 kHz each side

Minimum guard band per TS 38.101-1 cl. 5.3.3 = (BW×1000 − N_RB·SCS·12)/2 − SCS/2 = 860 − 15 = 845 kHz

Spectral utilisation = 98.28 / 100 = 98.3 %

The − SCS/2 term is there because the carrier is offset by half a subcarrier from the channel centre. The same arithmetic at 20 MHz / 30 kHz gives 51 RB, 18.36 MHz occupied, 805 kHz minimum guard band — and at 100 MHz / 120 kHz in FR2, 66 RB, 95.04 MHz occupied, 2 420 kHz guard.

Turned into a resource count, a 273-PRB carrier at 30 kHz carries 273 × 12 × 14 = 45 864 resource elements per slot, and there are 2 000 slots per second, so the raw grid is 91.7 million REs per second. Reference signals, control, synchronisation and guard consume a substantial fraction of that — commonly 15–25 % depending on DM-RS and CSI-RS density — before any user data is placed. When a throughput figure looks impossible, recompute the RE budget before suspecting the scheduler.

9. Bandwidth Parts

A bandwidth part is a contiguous set of PRBs on a carrier, with its own subcarrier spacing and cyclic prefix, within which a UE operates. It exists for two reasons that pull in the same direction: a UE that only has to receive 20 MHz of a 100 MHz carrier spends far less power in its RF and baseband, and a network that can give different UEs different BWPs can run several numerologies on one carrier without partitioning it statically.

9.1 What is configured, and what is active

  • Up to four dedicated BWPs may be configured per serving cell per direction (maxNrofBWPs = 4), plus the initial BWP which always exists and carries bwp-Id 0. So bwp-Id ranges 0..4.
  • Exactly one DL BWP and one UL BWP is active at any instant on a serving cell. In TDD they must have the same centre frequency and the same SCS; in FDD they are independent.
  • The initial DL BWP is what a UE uses before it has dedicated configuration. Before SIB1 it is effectively CORESET#0's bandwidth and position; SIB1's initialDownlinkBWP then defines it explicitly for Msg2/Msg4 and SI reception.
  • firstActiveDownlinkBWP-Id says which BWP to activate on applying a reconfiguration; defaultDownlinkBWP-Id says which to fall back to when bwp-InactivityTimer expires. If defaultDownlinkBWP-Id is absent, the fallback is the initial BWP.

9.2 locationAndBandwidth is a RIV, not a pair

locationAndBandwidth is a single INTEGER (0..37949) that encodes both the start RB and the length, using the resource indicator value formula from TS 38.214 cl. 5.1.2.2.2 evaluated with a fixed N_BWP^size = 275 regardless of the actual carrier width. This is why the numbers look arbitrary in a decoded configuration.

TS 38.214 cl. 5.1.2.2.2 -- RIV encoding
if (L_RBs - 1) <= floor(N / 2):
    RIV = N * (L_RBs - 1) + RB_start
else:
    RIV = N * (N - L_RBs + 1) + (N - 1 - RB_start)

  N        = 275 always, for locationAndBandwidth
  RB_start = start of the BWP, counted from the lowest usable PRB of the
             carrier at this BWP's SCS (i.e. from offsetToCarrier)
  L_RBs    = number of PRBs, 1 .. 275
🧮
Worked Calculation

Decoding three BWPs from the figure in §7.

Initial DL BWP, 24 PRB at carrier PRB 0:

L−1 = 23 ≤ 137 → RIV = 275 × 23 + 0 = 6 325

BWP 1, the whole 51-PRB carrier at carrier PRB 0:

L−1 = 50 ≤ 137 → RIV = 275 × 50 + 0 = 13 750

BWP 2, 11 PRB starting at carrier PRB 24 (= CRB 30 with offsetToCarrier 6):

L−1 = 10 ≤ 137 → RIV = 275 × 10 + 24 = 2 774

Going the other way, from RIV 13 750: L−1 = floor(13750/275) = 50 so L = 51, RB_start = 13750 − 275×50 = 0. The second branch of the formula only engages for L > 138, which is why most real values divide cleanly.

9.3 Switching the active BWP

TriggerMechanismLatencyWhen it is used
DCIBandwidth part indicator field in DCI format 0_1 (UL) or 1_1 (DL); 0, 1 or 2 bits depending on how many BWPs are configuredOne BWP switch delay (see below) before the UE can be scheduled on the new BWPThe normal case. Widen for a burst, narrow again afterwards, without any RRC signalling
RRCRRCReconfiguration carrying firstActiveDownlinkBWP-Id / firstActiveUplinkBWP-IdRRC processing delay, tens of msAdding, removing or re-parameterising BWPs; initial activation on connection setup or handover
bwp-InactivityTimer
Expires after no PDCCH/PDSCH activity on the active BWP; the UE switches to defaultDownlinkBWP-Id, or to the initial BWP if that is not configuredImmediate on expiryPower saving. Interacts with DRX — see the companion 11 DRX document
Random accessInitiating RA switches the UE to the initial BWP if the active BWP has no PRACH resourcesImmediateAny RACH trigger. This is why a RACH attempt can silently change which BWP subsequent grants refer to

Table 10. The four ways an active BWP changes. Only the first is fast enough to be used per-burst; only the third happens without the network sending anything.

µType 1 delay (slots)Type 2 delay (slots)Wall clock
0 (15 kHz)131 ms / 3 ms
1 (30 kHz)251 ms / 2.5 ms
2 (60 kHz)390.75 ms / 2.25 ms
3 (120 kHz)6180.75 ms / 2.25 ms

Table 11. BWP switch delay TS 38.133 Table 8.6.2-1. Which type applies is a UE capability. The UE is not required to transmit or receive anything during the delay, so a grant issued inside it is simply lost.

⚠️
Common Pitfall

Two BWP misconfigurations that both present as coverage problems.

Scheduling inside the switch delay. A scheduler that issues a DCI with a BWP indicator and then schedules on the new BWP too early gets no HARQ feedback at all — the UE was retuning. In a log this is a clean gap: DCI sent, no ACK, no NACK, DTX. The tell is that the gap length matches the BWP switch delay for the UE's numerology and reported capability, and that it happens only immediately after switches.

`bwp-InactivityTimer` with no `defaultDownlinkBWP-Id`. On expiry the UE goes to the initial BWP, which is typically narrow, sized to CORESET#0, and may not carry the UE's dedicated PUCCH or CSI-RS resources. Symptom: throughput collapses to a fraction of nominal after every idle gap of exactly the timer value, and recovers on the next DCI-triggered switch.

10. The SS/PBCH Block Inside the Grid

The SS/PBCH block is the only thing in NR whose position in the grid a UE must be able to find with no prior information at all. It therefore has a rigid, fully specified shape: four consecutive OFDM symbols by 240 contiguous subcarriers — 20 PRBs — with PSS, SSS and PBCH at fixed positions inside that rectangle TS 38.211 cl. 7.4.3.1.

SS/PBCH Block: 4 Symbols x 20 PRB, Exact MappingSS/PBCH Block: 4 Symbols x 20 PRB, Exact MappingTS 38.211 cl. 7.4.3.1, Table 7.4.3.1-1. Subcarrier k is counted from the lowest subcarrier of the blockset to 0k = 183..239PSS127 subcarriersk = 56 .. 182set to 0k = 0..55PBCH + PBCH DM-RSall 240 subcarriers(60 DM-RS REs)PBCH k = 192..239(12 DM-RS REs)0SSS127 subcarriersk = 56 .. 1820PBCH k = 0..47(12 DM-RS REs)PBCH + PBCH DM-RSall 240 subcarriers(60 DM-RS REs)k = 239k = 183k = 56k = 0l = 0l = 1l = 2l = 3OFDM symbol l, relative to the first symbol of the SS/PBCH blockPRB within the SS/PBCH block (12 subcarriers each)PSSSSSPBCH + its DM-RSUnused (set to zero)
Figure 5. The exact resource-element mapping. The 8- and 9-subcarrier gaps either side of the SSS in symbol 2 exist to protect the SSS correlation from the adjacent PBCH, and they are the reason the PBCH RE count is 576 rather than 720.
Symbol lSubcarriers k = 0..47k = 48..55k = 56..182k = 183..191k = 192..239
0unused (0)unused (0)PSS, 127 subcarriersunused (0)unused (0)
1PBCHPBCHPBCHPBCHPBCH
2PBCHunused (0)SSS, 127 subcarriersunused (0)PBCH
3PBCHPBCHPBCHPBCHPBCH

Table 12. TS 38.211 Table 7.4.3.1-1, laid out by subcarrier range. In symbol 0 everything outside the PSS is set to zero; in symbol 2 only the two narrow guard regions are.

The PBCH DM-RS is interleaved with the PBCH data at a density of one RE in four, on subcarriers k = 4n + ν where ν = N_ID^cell mod 4. The cell identity therefore shifts the DM-RS comb, which is what lets a UE separate two overlapping SSBs from different cells. The DM-RS sequence itself is initialised from the three least-significant bits of the SSB index, so the beam identity is carried by the reference signal rather than by the payload.

🧮
Worked Calculation

From resource elements to the PBCH code rate.

PBCH REs = 240 (symbol 1) + 96 (symbol 2) + 240 (symbol 3) = 576

DM-RS = 576 / 4 = 144 REs

Data REs = 576 − 144 = 432

QPSK → 2 bits per RE → 864 coded bits

The payload going in is 24 bits of MIB + 8 additional timing bits = 32, plus a 24-bit CRC = 56 bits, Polar-encoded and rate-matched to 864. Effective code rate ≈ 56/864 ≈ 0.065 — extraordinarily low, which is the whole point: the MIB has to decode at the cell edge with no prior channel knowledge and no HARQ. See the companion 06 Channel Mapping document for where BCH's fixed coding sits in the channel hierarchy.

PBCH payload fieldBitsSourceWhat it is for
systemFrameNumber
6MIBSFN bits 9..4 (most significant)
SFN least-significant bits4PBCH transport payload, added by L1SFN bits 3..0 — kept out of the MIB so that four consecutive PBCH transmissions can share one encoded MIB and differ only in scrambling
Half-frame bit n_hf1PBCH transport payloadWhich 5 ms half of the frame this SSB burst is in
ssb-SubcarrierOffset / k_SSB4 in MIB (+1 in payload for FR1)MIB plus payloadOffset from the CRB grid to the SSB, in 15 kHz subcarriers for FR1
SSB index, 3 most-significant bits3PBCH transport payload, FR2 only (L_max = 64)Together with the 3 bits carried in the DM-RS sequence, identifies which of 64 beams this is

Table 13. The 32-bit PBCH payload. For L_max = 4 or 8 the SSB index fits entirely in the DM-RS sequence, so the three payload bits are used differently — one carries the k_SSB most-significant bit and the rest are reserved.

🔍
What You See In Logs

An ssb-SubcarrierOffset value outside the valid k_SSB range (above 23 in FR1) is not an error — it is the encoding that says this SSB has no associated CORESET#0, so there is no SIB1 to be had here and the UE must look elsewhere. A cell search log that shows repeated MIB decodes with no SIB1 attempt is usually reading exactly that. See the companion 18 MIB and SIB1 IEs document.

11. SSB Burst Sets, Candidate Positions and Periodicity

A cell transmits its SSBs as a burst set confined to the first or second 5 ms half-frame of a frame. Within that half-frame the specification defines a set of candidate positions — fixed first-symbol indices at which an SSB may start — and the cell transmits on some subset of them, one per beam. The candidate pattern depends on the SSB subcarrier spacing and the frequency range, and the five patterns are named Case A through Case E TS 38.213 cl. 4.1.

CaseSSB SCSCandidate first symbolsn valuesL_maxWhere it applies
A15 kHz{2, 8} + 14n0, 1 (≤ 3 GHz)

0, 1, 2, 3 (3–7.125 GHz)

4

8

FR1 low bands with 15 kHz SSB, e.g. n1, n3
B30 kHz{4, 8, 16, 20} + 28n0 (≤ 3 GHz)

0, 1 (3–7.125 GHz)

4

8

FR1 bands where the SSB is 30 kHz and packed two per slot pair
C30 kHz{2, 8} + 14n0, 1 (≤ 3 GHz paired / ≤ 2.4 GHz unpaired)

0, 1, 2, 3 (above that, to 7.125 GHz)

4

8

The common FR1 mid-band case — n41, n77, n78, n79
D120 kHz{4, 8, 16, 20} + 28n0–3, 5–8, 10–13, 15–18 (16 values)64FR2 above 6 GHz, e.g. n257, n258, n260, n261
E240 kHz{8, 12, 16, 20, 32, 36, 40, 44} + 56n0–3, 5–8 (8 values)64FR2 above 6 GHz, where 240 kHz SSB is supported

Table 14. SSB candidate position patterns. L_max — the maximum number of candidate positions in a half-frame — is 4 below 3 GHz, 8 from 3 to 7.125 GHz and 64 above 6 GHz, and it determines the length of the ssb-PositionsInBurst bitmap. Which case a band uses is fixed in TS 38.104 cl. 5.4.3.3.

The gaps in the Case D and Case E n sequences (no 4, 9, 14, 19 in Case D) are not arbitrary: they leave every fifth slot free so that the burst set does not consume the whole half-frame, and so that there is room for control and for the DL/UL switch in a TDD FR2 carrier.

SSB Candidate Positions in a Half-Frame -- Case C, 30 kHzSSB Candidate Positions in a Half-Frame -- Case C, 30 kHzCandidate first symbols {2, 8} + 14n, n = 0,1,2,3 (TS 38.213 cl. 4.1); ssb-PositionsInBurst mediumBitmap 1010 1010SSB #0SSB #1(not sent)SSB #2SSB #3(not sent)SSB #4SSB #5(not sent)SSB #6SSB #7(not sent)The whole burst set is confined to the first 5 ms of the frame.In Case C, slots 4..9 hold no candidate positions at all.Symbols 0..1 and 12..13 of each SSB slot stay freefor CORESET#0 and for the DL/UL switch.slot 0slot 1slot 2slot 3slot 4slot 5slot 6slot 7slot 8slot 9012345678910111213OFDM symbol index within the slotSlot within the half-frame (30 kHz)Candidate position, transmittedCandidate position, not transmittedNo candidate position
Figure 6. Case C in a half-frame with ssb-PositionsInBurst = 1010 1010. Four of the eight candidates carry an SSB, which is what a cell with four beams looks like when it is configured for eight.
ParameterValuesTypicalEffect
ssb-periodicityServingCell
ms5, ms10, ms20, ms40, ms80, ms160ms20How often the burst set repeats. A UE performing initial access assumes 20 ms whatever this says, so anything longer slows cell search and anything shorter wastes resources on UEs that are not looking
ssb-PositionsInBurst
shortBitmap 4 bits, mediumBitmap 8 bits, longBitmap 64 bitsmatches L_maxWhich candidate positions actually carry an SSB. In SIB1 the L_max = 64 form is split into groupPresence (8 bits, which groups of 8) and inOneGroup (8 bits, which positions within each present group)
Half-frame bit0 or 10Which half-frame the burst set occupies. Carried in the PBCH payload, not in RRC
ssb-SubcarrierSpacing
kHz15, kHz30, kHz120, kHz240kHz30 (FR1)Selects the Case, together with the band. Note there is no 60 kHz option — SSB is never 60 kHz

Table 15. SSB burst set configuration. ssb-PositionsInBurst is the field to check first when a UE reports fewer beams than the cell is believed to have.

⚠️
Common Pitfall

The 20 ms assumption is a real constraint, not a convention. TS 38.213 cl. 4.1 says a UE may assume a 20 ms SS/PBCH periodicity for the purpose of initial cell selection. Configuring ms40 or ms80 on a cell is legal and saves overhead, but a UE arriving from RRC_IDLE will search on a 20 ms assumption and simply take longer — and the resulting slow, variable initial access looks like coverage trouble in aggregate statistics.

12. GSCN and the Synchronisation Raster

A UE searching for a cell cannot try every frequency. NR therefore defines a coarse synchronisation raster of permitted SSB centre positions, each identified by a Global Synchronisation Channel Number TS 38.104 cl. 5.4.3. The raster is much sparser than the channel raster used for carrier centres, which is the whole point: fewer hypotheses to test.

Frequency rangeSSB reference frequencyN rangeGSCNRaster step
0 – 3 000 MHzN × 1200 kHz + M × 50 kHz, M ∈ {1, 3, 5}N = 1 .. 24993N + (M−3)/2, i.e. 2 .. 74981.2 MHz, with ±50 kHz sub-positions from M
3 000 – 24 250 MHz3 000 MHz + N × 1.44 MHzN = 0 .. 147567499 + N, i.e. 7499 .. 222551.44 MHz — exactly 4 PRBs at 30 kHz, or 2 PRBs at 60 kHz
24 250 – 100 000 MHz24 250.08 MHz + N × 17.28 MHzN = 0 .. 438322256 + N, i.e. 22256 .. 2663917.28 MHz — exactly 12 PRBs at 120 kHz

Table 16. The three synchronisation raster regions. The M parameter exists only below 3 GHz, to give LTE-refarmed bands enough placement freedom; above 3 GHz the raster steps are chosen to be whole numbers of PRBs.

🧮
Worked Calculation

Reading a GSCN. A cell reports its SSB at GSCN 7947.

GSCN is above 7499, so we are in the 3–24.25 GHz region:

N = 7947 − 7499 = 448

SS_ref = 3000 MHz + 448 × 1.44 MHz = 3000 + 645.12 = 3 645.12 MHz

That is the centre of the 20-PRB SSB, so the SSB spans 3645.12 ± (120 × 30 kHz) = 3641.52 .. 3648.72 MHz at 30 kHz SCS. On a 100 MHz carrier centred at 3650 MHz, the SSB sits 4.88 MHz below carrier centre — roughly 13.5 PRBs of 30 kHz — which is exactly the kind of offset that offsetToPointA and k_SSB exist to express.

The raster step above 3 GHz being a whole number of PRBs is what keeps k_SSB small. Because 1.44 MHz = 4 × 360 kHz, an SSB placed on the raster is already nearly aligned to the 30 kHz CRB grid, so the residual misalignment k_SSB has to express is at most a few subcarriers. Below 3 GHz, where the 50 kHz M-offsets exist, the residual can be larger — which is why k_SSB is measured in 15 kHz units there and needs five bits rather than four.

13. TDD DL/UL Patterns and the Guard Period

Most NR deployments are TDD, so downlink and uplink share the frequency and are separated in time. Every OFDM symbol is therefore designated downlink (D), uplink (U) or flexible (F). The semi-static cell-wide designation comes from tdd-UL-DL-ConfigurationCommon in SIB1, which is where the phrase "TDD pattern" almost always refers to.

TDD-UL-DL-ConfigCommon ::= SEQUENCE {
    referenceSubcarrierSpacing   SubcarrierSpacing,
    pattern1                     TDD-UL-DL-Pattern,
    pattern2                     TDD-UL-DL-Pattern     OPTIONAL,
    ...
}

TDD-UL-DL-Pattern ::= SEQUENCE {
    dl-UL-TransmissionPeriodicity  ENUMERATED {ms0p5, ms0p625, ms1,
                                               ms1p25, ms2, ms2p5, ms5,
                                               ms10},
    nrofDownlinkSlots              INTEGER (0..maxNrofSlots),      -- 0..320
    nrofDownlinkSymbols            INTEGER (0..maxNrofSymbols-1),  -- 0..13
    nrofUplinkSlots                INTEGER (0..maxNrofSlots),
    nrofUplinkSymbols              INTEGER (0..maxNrofSymbols-1),
    ...,
    [[ dl-UL-TransmissionPeriodicity-v1530  ENUMERATED {ms3, ms4} OPTIONAL ]]
}

Listing 1. Abridged from TS 38.331. ... marks extension markers. ms3 and ms4 were added in Rel-15 late-drop as an extension, which is why they sit outside the original enumeration.

13.1 How the four counters divide a period

The encoding is positional and there is no bitmap. Within each period, counting in slots of referenceSubcarrierSpacing:

1. The first nrofDownlinkSlots slots are entirely downlink.

2. In the slot immediately after those, the first nrofDownlinkSymbols symbols are downlink.

3. The last nrofUplinkSlots slots are entirely uplink.

4. In the slot immediately before those, the last nrofUplinkSymbols symbols are uplink.

5. Everything left over — necessarily in the middle, and necessarily contiguous — is flexible. That leftover is the guard period.

One TDD Period Decoded Symbol by Symbol: the DDDSU PatternOne TDD Period Decoded Symbol by Symbol: the DDDSU Patterndl-UL-TransmissionPeriodicity ms2p5, nrofDownlinkSlots 3, nrofDownlinkSymbols 10, nrofUplinkSlots 1, nrofUplinkSymbols 214 downlink symbols14 downlink symbols14 downlink symbolsnrofDownlinkSymbols = 10flexible(guard)UL= 214 uplink symbols↑ the only flexible symbolsin the whole periodslot 0 Dslot 1 Dslot 2 Dslot 3 Sslot 4 U012345678910111213OFDM symbol index within the slotSlot in the 2.5 ms periodDownlinkFlexibleUplink
Figure 7. DDDSU decoded symbol by symbol. The 'S' slot is not a special slot type in NR the way it was in LTE — it is simply the slot in which the four counters happen to meet.
The Same DDDSU Pattern on a Wall Clock: Two Periods in 5 msThe Same DDDSU Pattern on a Wall Clock: Two Periods in 5 msSlot numbers are within the frame; the pattern repeats four times per 10 ms frameSlot number(30 kHz)0123456789Directiondownlink 1.857 msuplink 0.571 msdownlink 1.857 msuplink 0.571 msGuard periodGP = 2 symbols = 71.4 µs-> ~10.7 km round-trip budgetperiod 2 starts0.00.51.01.52.02.53.03.54.04.55.0Time within the radio frame (ms)A 2.5 ms periodicity divides 10 ms exactly, so the pattern is frame-aligned. Periodicities that do not divide10 ms must be paired with a pattern2 so that the two together sum to 5 ms or 10 ms.
Figure 8. The same pattern on a wall clock. The guard period is 2 symbols wide and everything else about the cell's uplink coverage follows from that number.
🧮
Worked Calculation

Decoding DDDSU at 30 kHz, and what the guard period buys.

dl-UL-TransmissionPeriodicity = ms2p5 → 2.5 ms → 5 slots at 30 kHz

nrofDownlinkSlots = 3 → slots 0, 1, 2 all D (42 symbols)

nrofDownlinkSymbols = 10 → slot 3 symbols 0..9 are D

nrofUplinkSlots = 1 → slot 4 all U (14 symbols)

nrofUplinkSymbols = 2 → slot 3 symbols 12, 13 are U

leftover → slot 3 symbols 10, 11 are F

Symbol budget: 52 D, 2 F, 16 U out of 70 → 74.3 % DL, 22.9 % UL, 2.9 % guard

Guard period = 2 × 35.677 µs = 71.4 µs. That has to cover the round-trip propagation delay of the furthest UE plus its Tx/Rx switching time, so the geometric limit is roughly

c × 71.4 µs / 2 = 3×10^8 × 71.4×10^-6 / 2 ≈ 10.7 km

and rather less once switching time and any repeater delay is subtracted.

PatternPeriodicityCounters (DL slots / DL sym / UL sym / UL slots)DL : F : UL symbolsWhere it fits
DDDSU
ms2p5 at 30 kHz (5 slots)3 / 10 / 2 / 152 : 2 : 16The FR1 mid-band workhorse. Four periods per frame, so it is frame-aligned
DDDDDDDSUU
ms5 at 30 kHz (10 slots)7 / 6 / 4 / 2104 : 4 : 32DL-heavy eMBB with a slightly larger guard; two periods per frame
DSUUU
ms2p5 at 30 kHz (5 slots)1 / 4 / 6 / 318 : 4 : 48Uplink-heavy: fixed wireless access, video upload, uplink-limited coverage
DDDSU + DDSUUms2p5 + ms2p5 = 5 mspattern1 3/10/2/1, pattern2 2/10/2/2combined 5 mspattern2 exists so two unequal halves can add to a period that divides 10 ms
DDDSU
ms0p625 at 120 kHz (5 slots)3 / 10 / 2 / 152 : 2 : 16The FR2 equivalent. Same shape, one eighth the wall-clock duration, so the guard is 8.9 µs and the cell is small

Table 17. Common patterns. The counters are the same numbers at FR1 and FR2 — what changes is what a slot is worth in microseconds, and therefore the cell radius the guard period allows.

⚠️
Common Pitfall

Two traps sit in this configuration, one loud and one silent.

Loud. The pattern must tile 20 ms without a remainder, which is why pattern2 exists: ms0p625, ms1p25 and ms2p5 do not on their own divide the frame into a whole number of pattern pairs in every configuration, and the two patterns together must sum to 5 ms or 10 ms. A configuration that violates this is rejected, and it surfaces as an RRC reconfiguration failure with no obvious cause rather than as a scheduling problem.

Silent. Neighbouring TDD cells on the same frequency must use compatible patterns and be time-synchronised, or one cell's downlink transmits into the other's uplink reception. The symptom is asymmetric: uplink SINR that degrades in step with the neighbour's downlink activity, worst at cell edge, and completely absent from downlink statistics. Cross-link interference of this kind cannot be fixed from the victim cell.

14. Slot Format Indication: Who Wins

On top of the cell-wide semi-static pattern there are two further layers that can pin down flexible symbols: a UE-specific semi-static override, and a dynamic group-common indication. The precedence rules TS 38.213 cl. 11.1 are strict and asymmetric, and getting them the wrong way round is a standard source of confusion.

How a Symbol's Direction Is Actually DecidedHow a Symbol's Direction Is Actually DecidedTS 38.213 cl. 11.1 -- semi-static configuration always wins over dynamic indicationOne symbol in slot nyesFixed --SFI cannot overrideCommon configmakes it D or U?no -- flexibleyesDirection fromtdd-UL-DL-ConfigDedicatedDedicated configoverrides it?noyesDirection fromthe slot formatSFI in DCI 2_0for this slot?noyesUsed asscheduledScheduled, or aconfigured grant?noSymbol left unusedThe asymmetry in the first branch is the one worth remembering: a symbol the commonconfiguration calls D or U is immovable, so an SFI that appears to contradict SIB1 isbeing ignored, not obeyed.
Figure 9. The precedence chain. Note that the first branch is one-way: semi-static D or U cannot be softened into flexible by anything, so an SFI that appears to contradict SIB1 is being discarded.

14.1 The three layers

LayerSignallingScopeWhat it may change
Cell-wide semi-statictdd-UL-DL-ConfigurationCommon in SIB1Every UE in the cellSets D / U / F for every symbol in the period. D and U set here are immovable
UE-specific semi-statictdd-UL-DL-ConfigurationDedicated in ServingCellConfigOne UEMay turn flexible symbols into D or U, per slot, via slotSpecificConfigurationsToAddModList with allDownlink, allUplink or an explicit symbol split. May not touch symbols the common configuration fixed
DynamicSlot Format Indicator in DCI format 2_0, CRC scrambled by SFI-RNTIA group of UEs monitoring the same search spaceMay designate flexible symbols as D, U or unused for the indicated slots, by pointing at a slotFormatCombinationId. May not override either semi-static layer

Table 18. Precedence runs top to bottom and each layer may only act on what the layer above left flexible.

A slot format is an index into TS 38.213 Table 11.1.1-1, which enumerates the useful D/F/U arrangements of 14 symbols. Format 0 is all downlink, format 1 all uplink, format 2 all flexible; the remaining defined formats are the practical mixtures — leading downlink with a trailing gap, leading gap with trailing uplink, and so on. DCI 2_0 does not carry a format directly: it carries an index into a configured list of slotFormatCombinations, each of which is a sequence of formats covering the SFI monitoring periodicity, so one DCI can describe several slots at once.

Flexible symbols left flexible are not wasted — they are simply available. A UE will use a flexible symbol for whatever it is scheduled to do there: receive a PDSCH if a DCI says so, transmit a PUSCH if a grant says so, or nothing at all. The value of leaving symbols flexible is that the scheduler keeps the choice; the cost is that the UE must monitor for both possibilities and cannot micro-sleep through them.

⚠️
Common Pitfall

Symbols the common configuration marked D or U are not merely prioritised over SFI — they are outside SFI's reach entirely. A common misconfiguration is to write a cell-wide pattern with very few flexible symbols and then attempt to run dynamic TDD on top; the DCI 2_0 is transmitted, the UE receives it, and nothing changes. In a log this looks like the SFI being ignored, and it is — correctly.

15. Mini-Slots and Non-Slot-Based Scheduling

A transmission does not have to occupy a slot. NR defines two PDSCH time-domain mapping types, and the second one is what "mini-slot" informally means:

Mapping type A (slot-based)Mapping type B (non-slot-based)
Start symbol S0, 1, 2 or 3 only — the DM-RS is at a fixed position near the slot startAny symbol 0..13
Length L3..14 symbols, and S + L must not exceed the slot2, 4 or 7 symbols for PDSCH in Rel-15; extended in later releases
DM-RS positionFixed relative to the slot boundaryFixed relative to the allocation start, so the estimate is available immediately
Latency behaviourA packet arriving mid-slot waits for the next slot boundaryA packet can be scheduled in the next available symbol
Where it is usedThe default for eMBB — larger transport blocks, better DM-RS overhead ratioURLLC, and any case where a slot's worth of delay matters. Also how PDSCH squeezes around an SSB or a CORESET

Table 19. PDSCH mapping types TS 38.214 cl. 5.1.2.1. PUSCH has the analogous split, with type B allowing lengths 1..14.

The cost of mini-slots is DM-RS overhead: a 2-symbol allocation still needs at least one DM-RS symbol, so half the allocation is reference signal. That is an acceptable price for a 4-symbol URLLC transmission and an unacceptable one for bulk data, which is exactly why both mapping types exist rather than one replacing the other. See the companion 08 Scheduling document for how the time-domain resource allocation tables encode (S, L) pairs.

16. Parameter Reference: ASN.1 and Ranges

ServingCellConfigCommonSIB ::= SEQUENCE {
    downlinkConfigCommon        DownlinkConfigCommonSIB,
    uplinkConfigCommon          UplinkConfigCommonSIB      OPTIONAL,
    ssb-PositionsInBurst SEQUENCE {
        inOneGroup                  BIT STRING (SIZE (8)),
        groupPresence               BIT STRING (SIZE (8))  OPTIONAL
    },
    ssb-PeriodicityServingCell  ENUMERATED {ms5, ms10, ms20, ms40,
                                            ms80, ms160},
    tdd-UL-DL-ConfigurationCommon  TDD-UL-DL-ConfigCommon  OPTIONAL,
    ss-PBCH-BlockPower          INTEGER (-60..50),
    ...
}

FrequencyInfoDL-SIB ::= SEQUENCE {
    frequencyBandList           MultiFrequencyBandListNR-SIB,
    offsetToPointA              INTEGER (0..2199),
    scs-SpecificCarrierList     SEQUENCE (SIZE (1..maxSCSs)) OF
                                    SCS-SpecificCarrier,
    ...
}

SCS-SpecificCarrier ::= SEQUENCE {
    offsetToCarrier             INTEGER (0..2199),
    subcarrierSpacing           SubcarrierSpacing,
    carrierBandwidth            INTEGER (1..maxNrofPhysicalResourceBlocks),
    ...                                       -- maxNrofPhysicalResourceBlocks = 275
}

BWP ::= SEQUENCE {
    locationAndBandwidth        INTEGER (0..37949),
    subcarrierSpacing           SubcarrierSpacing,
    cyclicPrefix                ENUMERATED {extended}      OPTIONAL
}

BWP-DownlinkDedicated ::= SEQUENCE {
    pdcch-Config                SetupRelease {PDCCH-Config}  OPTIONAL,
    pdsch-Config                SetupRelease {PDSCH-Config}  OPTIONAL,
    ...
}

-- inside ServingCellConfig:
--   downlinkBWP-ToAddModList  SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Downlink
--   firstActiveDownlinkBWP-Id BWP-Id                   -- BWP-Id ::= INTEGER (0..4)
--   defaultDownlinkBWP-Id     BWP-Id
--   bwp-InactivityTimer       ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8,
--                                         ms10, ms20, ms30, ms40, ms50,
--                                         ms60, ms80, ms100, ms200, ms300,
--                                         ms500, ms750, ms1280, ms1920,
--                                         ms2560, spare10 ... spare1}

Listing 2. Abridged from TS 38.331. Enumerations are quoted in full where they matter for reading a log and marked with ... where they are cut.

ParameterRange or valuesTypicalEffect if changed
subcarrierSpacing
kHz15, kHz30, kHz60, kHz120, kHz240 (kHz480, kHz960 in Rel-17)kHz30 in FR1, kHz120 in FR2Rescales slot and symbol duration, CP length and RB width. Changes the meaning of every slot and symbol index
cyclicPrefix
absent (normal) or extendedabsentextended is only legal at 60 kHz; it drops the slot to 12 symbols and costs about 14 % of the payload
offsetToPointA
0 .. 2199 RBs (15 kHz for FR1, 60 kHz for FR2)band and carrier dependentShifts the whole CRB grid relative to the SSB. Wrong value: MIB decodes, SIB1 or the initial BWP is not found
offsetToCarrier
0 .. 2199 RBs of that SCS0Moves the usable carrier up from point A. Interacts with carrierBandwidth — the two together must stay inside the licensed block
carrierBandwidth
1 .. 275 PRBs273 for 100 MHz at 30 kHzThe count from the TS 38.101 table. A larger value than the table allows fails the emission mask
locationAndBandwidth
0 .. 37949 (RIV with N = 275)carrier dependentStart and width of a BWP in one integer. A BWP that runs past the carrier makes the configuration invalid
bwp-Id
0 .. 4 (0 = initial)0, 1Selects which BWP a dedicated configuration belongs to. Referenced by the DCI BWP indicator
bwp-InactivityTimer
ms2 .. ms2560ms20 – ms100Power saving against responsiveness. Without defaultDownlinkBWP-Id the fallback is the narrow initial BWP
referenceSubcarrierSpacing
kHz15 .. kHz120matches the data SCSThe SCS the TDD pattern counters are expressed in. Must be no larger than the SCS of any configured BWP
dl-UL-TransmissionPeriodicity
ms0p5, ms0p625, ms1, ms1p25, ms2, ms2p5, ms5, ms10 (+ ms3, ms4)ms2p5 (FR1), ms0p625 (FR2)Sets how often the D/F/U pattern repeats and therefore the maximum uplink latency
nrofDownlinkSymbols / nrofUplinkSymbols0 .. 13 each10 / 2Together with the slot counters, determines the guard period and therefore the cell radius
ss-PBCH-BlockPower
−60 .. 50 dBmtypically 10 – 20 dBm per REThe EPRE the UE assumes for the SSB when converting RSRP to pathloss. Wrong value biases every open-loop power calculation in the cell

Table 20. Frame-structure parameters, their ranges, and what breaks when they are wrong. Typical values are what many vendors ship, not specification requirements.

QuantityValuesExpressed inWhat it interacts with
SFN wrap10.24 s1024 framesEvery periodicity that is anchored to the SFN; hyper-frames extend it for Rel-17 eDRX
ssb-periodicityServingCell
5 .. 160 msmillisecondsSMTC windows, measurement periods, initial access time. See the companion 21 Measurement Gaps and SMTC document
dl-UL-TransmissionPeriodicity
0.5 .. 10 msmillisecondsScheduling request latency, HARQ round-trip time, PRACH occasion placement
BWP switch delay1 .. 18 slotsslots of the target numerologyScheduler blackout after a DCI-triggered switch
bwp-InactivityTimer
2 .. 2560 msmillisecondsDRX cycles — the two timers should not be set so that the BWP collapses inside an on-duration
ra-ResponseWindow
sl1 .. sl80slots of the PRACH SCSWall-clock RAR window length changes with µ. sl10 is 10 ms at 15 kHz and 1.25 ms at 120 kHz

Table 21. Periodicities and delays whose wall-clock value depends on the numerology. Every one of these is a slot count or a frame count somewhere in the specification, not a duration.

17. Failure Modes and Misconfigurations

FailureDetected byImmediate effectDiagnostic pointer
referenceSubcarrierSpacing larger than a configured BWP's SCSUE RRC, at configurationConfiguration treated as invalid; RRCReconfigurationFailure or reversion to the old configurationThe reference SCS must be no larger than every BWP SCS, because the pattern has to be expressible in that BWP's slots. Check the combination, not either value alone
Guard period shorter than the round-trip delay of the cell edgegNB PHY (uplink) and the UE indirectlyFar UEs' uplink transmissions overlap the following downlink; their PUSCH fails while near UEs are unaffectedCorrelate uplink BLER against reported timing advance. A cell where only high-N_TA UEs fail on uplink is a guard-period problem, not a coverage one. See §13 arithmetic and the companion 04 Timing Advance document
offsetToPointA or k_SSB wrongUE, silently — it simply looks in the wrong placeMIB decodes (it is found from the SSB), CORESET#0 is found (it is defined relative to the SSB), SIB1 and the initial BWP are notThe signature is MIB-yes / SIB1-no with good RSRP. Recompute point A from the SSB position and compare against the configured value
Active BWP contains no SSBUE, at measurement timeThe UE cannot measure its own serving cell for RLM or beam management while that BWP is activeCheck that every dedicated BWP either contains the SSB or that measurement is arranged some other way. Symptom: RLM out-of-sync indications that track BWP activity
bwp-InactivityTimer with no defaultDownlinkBWP-IdNeither side — the network keeps scheduling on the old BWPUE falls back to the narrow initial BWP; grants on the wide BWP are not receivedThroughput collapse at exactly the timer interval after activity stops, recovering on the next DCI switch
Scheduling inside the BWP switch delaygNB, as missing HARQ feedbackGrant lost; DTX rather than NACKGap length equals the switch delay for the UE's µ and capability, and occurs only after switches
Dynamic SFI attempting to override semi-static D or UNobody — the UE discards it correctlyNo change in behaviour; the DCI 2_0 has no effectCount flexible symbols in the common pattern. If there are none, dynamic TDD cannot do anything
ssb-periodicityServingCell longer than 20 msAggregate statistics onlyInitial access and cell reselection slow down, variablyA UE assumes 20 ms for initial selection TS 38.213 cl. 4.1. Look for long, high-variance initial access times with normal RSRP
Extended CP configured outside 60 kHzUE RRC, at configurationInvalid configurationExtended CP exists only at µ = 2. Anywhere else this is a template error
Neighbour TDD pattern or timing mismatchOnly from uplink statistics in the victim cellCross-link interference: neighbour downlink lands in this cell's uplinkUplink SINR degradation correlated with neighbour downlink load, worst at cell edge, invisible in downlink metrics. Not fixable in the victim cell

Table 22. Frame-structure failures. Note how many of them are silent on the side that causes them — the frame structure is agreed by configuration, not negotiated, so a mismatch shows up as absence rather than as an error.

💡
Key Point

Three of these — a short guard period, a wrong offsetToPointA, and a missing defaultDownlinkBWP-Id — produce symptoms that look like radio problems and are not. All three are cheap to rule out arithmetically before you go looking at coverage, and all three would otherwise cost days.

18. Illustrative Traces

🔍
About These Traces

Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.

18.1 Cell search: from SSB detection to a frame number

[PHY] SSB and MIB acquisition
09:41:22.104  [PHY] SSB search, GSCN 7947 (3645.12 MHz), SCS 30 kHz, Case C
              PSS correlation peak    N_ID2 = 1     RSRP -88.4 dBm
              SSS decode              N_ID1 = 143
              -> N_ID_cell = 3 * 143 + 1 = 430
              DM-RS sequence -> i_SSB = 2           -- 3 LSBs of SSB index
              L_max = 8 (3-7.125 GHz) -> SSB index = i_SSB = 2
              first symbol of block   = 2 + 14*1 = 16  -> slot 1, symbol 2

09:41:22.107  [PHY] PBCH decode OK, 56 bits, Polar, E = 864
              payload (non-MIB bits)
                SFN LSBs (4) ......... 0b0110  = 6
                half-frame bit n_hf .. 0            -- first half-frame
                k_SSB MSB ............ 0
              MIB
                systemFrameNumber .... 0b010011 = 19    -- SFN MSBs
                subCarrierSpacingCommon  scs30or120
                ssb-SubcarrierOffset . 6
                dmrs-TypeA-Position .. pos2
                pdcch-ConfigSIB1
                  controlResourceSetZero  9
                  searchSpaceZero ....... 0
                cellBarred ........... notBarred
                intraFreqReselection . allowed

09:41:22.107  [PHY] SFN assembled = (19 << 4) | 6 = 310
              k_SSB = (0 << 4) | 6 = 6  -> 6 * 15 kHz = 90 kHz above the CRB grid
              frame boundary located; slot and symbol counting can begin

Listing 3. The SFN is assembled from two places and the SSB index from two places. Both splits exist so that PBCH can be re-encoded rarely and still carry fine timing.

18.2 The frame structure as SIB1 describes it

[RRC-DL-BCCH] SIB1 -- frame structure fields
SIB1
 servingCellConfigCommon
  downlinkConfigCommon
   frequencyInfoDL
    offsetToPointA ................. 86         -- in 15 kHz RBs, FR1
    scs-SpecificCarrierList[0]
     offsetToCarrier ............... 0
     subcarrierSpacing ............. kHz30
     carrierBandwidth .............. 273        -- 100 MHz at 30 kHz
   initialDownlinkBWP
    genericParameters
     locationAndBandwidth .......... 12952      -- RIV: L=48, RB_start=27
     subcarrierSpacing ............. kHz30
    pdcch-ConfigCommon ............. (CORESET#0 + searchSpaceZero)
  uplinkConfigCommon
   frequencyInfoUL
    scs-SpecificCarrierList[0]
     offsetToCarrier ............... 0
     subcarrierSpacing ............. kHz30
     carrierBandwidth .............. 273
  ssb-PositionsInBurst
   inOneGroup .................... 0b10101010  -- 4 of 8 candidates used
  ssb-PeriodicityServingCell ...... ms20
  ss-PBCH-BlockPower .............. 18          -- dBm per RE
  tdd-UL-DL-ConfigurationCommon
   referenceSubcarrierSpacing ..... kHz30
   pattern1
    dl-UL-TransmissionPeriodicity . ms2p5
    nrofDownlinkSlots ............. 3
    nrofDownlinkSymbols ........... 10
    nrofUplinkSlots ............... 1
    nrofUplinkSymbols ............. 2

-- derived by the UE:
--   5 slots per period, 4 periods per frame, 20 slots per frame
--   slots 0,1,2 D | slot 3 = 10D + 2F + 2U | slot 4 U   (repeat x4)
--   SSB lowest RB = 86 / 2 = CRB 43 on the 30 kHz grid, so CRB 43..62
--   CORESET#0 (controlResourceSetZero 9) = 48 RB, offset 16 -> CRB 27..74
--   initial DL BWP = CRB 27 .. 74, i.e. the same 48 RB as CORESET#0
--   RIV check: 275 * (48-1) + 27 = 12925 + 27  ->  12952

Listing 4. Everything a UE needs in order to start counting slots and to know which of them it may transmit in. offsetToPointA is in 15 kHz RBs even though the carrier is 30 kHz — a standing source of off-by-two errors.

18.3 A BWP switch, done correctly

[MAC/PHY] BWP switching
10:02:17.4405  [MAC] C-RNTI 0x4A11  active DL BWP = 1 (273 PRB)
10:02:17.4405  [MAC] no PDCCH for this UE since 10:02:17.3405
10:02:17.4405  [MAC] bwp-InactivityTimer (ms100) expired
               -> switch to defaultDownlinkBWP-Id = 2 (51 PRB from CRB 100)
               -> UE unavailable for 2 slots (type 1 delay, mu=1) = 1.0 ms

10:02:19.1200  [MAC] DL data arrival, 1.4 MB buffered
10:02:19.1205  [PHY-DL] DCI 1_1, C-RNTI 0x4A11, on BWP 2
                 bandwidthPartIndicator ...... 1        -- switch to BWP 1
                 freqDomainResourceAssignment  (interpreted on BWP 1)
                 timeDomainResourceAssignment  k0 = 2
10:02:19.1205  [MAC] BWP switch 2 -> 1 requested
               -> UE retunes; no Tx/Rx expected for 2 slots
10:02:19.1215  [PHY-DL] first PDSCH on BWP 1, 264 PRB, MCS 22
10:02:19.1225  [PHY-UL] HARQ-ACK received  -- switch completed cleanly

-- note: the DCI at .1205 both commanded the switch AND scheduled data.
-- k0 = 2 places the PDSCH exactly one switch delay after the DCI, which
-- is the minimum legal value here. k0 = 1 would have been lost.

Listing 5. A correct DCI-triggered switch. The scheduler's k0 has to be at least the BWP switch delay, and here it is exactly that.

18.4 A failure: uplink grant on a downlink symbol

[RRC/MAC] TDD pattern faults
11:37:02.0000  [RRC] tdd-UL-DL-ConfigurationCommon applied
                 referenceSubcarrierSpacing .. kHz15      -- (!) cell is 30 kHz
                 pattern1  ms2p5 / 3 DL slots / 10 DL sym / 2 UL sym / 1 UL slot

11:37:02.0000  [UE-MAC] reference SCS kHz15, active UL BWP SCS kHz30
                 period ms2p5 at 15 kHz = 2.5 slots -> non-integer
                 -> pattern cannot be expressed; configuration rejected
11:37:02.0010  [UE-RRC] RRCReconfigurationFailure, no cause IE
               -> UE reverts to the previous configuration

-- second, subtler variant of the same class of fault --

11:44:18.2500  [gNB-MAC] UL grant issued, C-RNTI 0x4A11
                 slot 3, symbols 8..13, 6 PRB
11:44:18.2500  [UE-MAC] slot 3 symbols 0..9 are semi-static DOWNLINK
                 grant overlaps 8 and 9 -> UL transmission not permitted
                 (TS 38.213 cl. 11.1: UE does not transmit in a symbol
                  configured as downlink)
11:44:18.2500  [UE-MAC] grant dropped, nothing transmitted
11:44:18.2600  [gNB-MAC] PUSCH decode failed, no energy detected
11:44:18.2600  [gNB-MAC] -> HARQ retransmission scheduled, same symbols
11:44:18.2700  [gNB-MAC] PUSCH decode failed, no energy detected
               ... repeats to maxHARQ-Tx ...

-- the gNB sees 'no energy', which reads as coverage. It is arithmetic:
-- nrofDownlinkSymbols = 10 means symbols 0..9 of slot 3 are DL, and the
-- earliest legal UL symbol in that slot is 12.

Listing 6. Two frame-structure faults with completely different signatures: one fails loudly at configuration time, the other silently as uplink that never arrives.

🔍
What You See In Logs

The second half of that trace is worth internalising. A gNB reporting "no energy detected" on a PUSCH it granted is not evidence about the radio link — a UE that is forbidden to transmit produces exactly the same observation as a UE that is out of coverage. Check the symbol allocation against the TDD pattern before you check anything else.

19. Release Deltas: Rel-15 to Rel-18

ReleaseChangeWhy it matters when reading frame structure
Rel-15µ = 0..4, normal and extended CP, CRB/PRB/VRB, point A, bandwidth parts, SSB Cases A–E, semi-static and dynamic TDDThe baseline. Everything in §2 to §15 except where noted is Rel-15.
Rel-15 late dropms3 and ms4 TDD periodicities as an ASN.1 extensionThey appear outside the original enumeration, so an older decoder shows them as an unknown extension rather than a value.
Rel-16NR-U: 20 MHz LBT sub-bands, RB sets, and DCI 2_0 extended to carry available-RB-set and channel-occupancy-time indicationsA symbol can now be unusable because the channel was busy, not because of the TDD pattern. Two different reasons for an empty symbol.
Rel-16Cross-link interference and remote interference management framework; DCI 2_4 uplink cancellationUplink can be pre-empted mid-slot by a higher-priority UE, so an absent PUSCH is not necessarily a failure.
Rel-17µ = 5 (480 kHz) and µ = 6 (960 kHz) for FR2-2 (52.6–71 GHz), with new SSB cases and channel bandwidths up to 2000 MHzSlot durations down to 15.6 µs. Any tool that assumes µ ≤ 4 or 275 PRBs at 120 kHz needs checking.
Rel-17RedCap: reduced UE bandwidth, separate initialDownlinkBWP-RedCap / initialUplinkBWP-RedCapTwo UE classes can have different initial BWPs in the same cell, so "the initial BWP" is no longer a single object.
Rel-17Extended idle-mode DRX with a hyper-frame counterTiming beyond the 10.24 s SFN wrap becomes visible in signalling for the first time.
Rel-17NTN: long propagation delays, common timing advance, UE-specific K_offset applied to all uplink timing relationshipsUplink timing relationships that were fixed offsets in slots now carry an additional configured offset.
Rel-18Network-controlled repeaters with side-control information including a beam and an on/off pattern aligned to the TDD patternThe effective guard-period requirement now includes repeater switching, so the §13 radius arithmetic is optimistic where repeaters are deployed.
Rel-18Further FR2-2 refinement, subband non-overlapping full duplex study and specification workThe assumption that a symbol has one direction cell-wide is being relaxed in specific configurations.

Table 23. Frame-structure changes by release. Feature presence should always be confirmed against the UE capability exchange — see the companion 26 UE Capability document.

20. Reading Frame Structure in Logs: A Checklist

1. Establish µ first, for each direction and each BWP. Every slot and symbol index in the log is relative to it. If the log prints a timestamp and a slot number, check that they agree: slot n starts at n × 1/(2^µ) ms into the frame.

2. Convert the SFN to a wall clock and check for a wrap. SFN wraps every 10.24 s. If you are comparing events across more than ten seconds, or across a node restart, the SFN alone is ambiguous.

3. Reconstruct the TDD pattern symbol by symbol from the four counters (§13). Write out the D/F/U string for one period. Almost every "unexplained uplink failure" resolves here.

4. Check `referenceSubcarrierSpacing` against every BWP's SCS. It must be no larger. A mismatch either fails at configuration time or silently shifts every boundary by a factor of two.

5. Compute the guard period in microseconds and convert it to kilometres. Compare against the largest timing advance you see in the cell. If UEs exist beyond the guard-period radius, their uplink cannot work and no amount of power will fix it.

6. Verify point A independently. From the SSB's GSCN, offsetToPointA and k_SSB, compute where CRB 0 must be, and check that CORESET#0 and the initial BWP land where the configuration says. MIB-decodes-but-SIB1-fails is the signature of getting this wrong.

7. Track the active BWP as a state variable over time. Note every DCI with a BWP indicator, every bwp-InactivityTimer expiry and every RACH trigger. A PRB index means nothing until you know which BWP was active when it was printed.

8. After any BWP switch, allow for the switch delay (§9.3) before expecting the UE to respond. A DTX gap exactly one switch delay long is not a radio event.

9. Cross-check the SSB burst. ssb-PositionsInBurst says how many beams the cell claims; the UE's measurement reports say how many it found. A persistent shortfall is either a beam that is not being transmitted or a measurement window that does not cover it — see the companion 21 Measurement Gaps and SMTC document.

10. When a symbol appears unused, enumerate the reasons in order: semi-static flexible and unscheduled; SFI marked it unused; a Rel-16 LBT failure on an unlicensed carrier; uplink cancellation by DCI 2_4; or the BWP switch delay. They look identical and have nothing in common.

21. Glossary

TermExpansionMeaning in this document
µNumerology indexThe exponent in SCS = 15·2^µ kHz, 0..4 in Rel-15 and 0..6 from Rel-17. Determines slot duration, CP length and RB width.
T_cNR basic time unit1/(480 000 × 4096) s ≈ 0.509 ns. Every CP length and timing offset is an integer number of these.
T_sLTE basic time unit1/(15 000 × 2048) s ≈ 32.552 ns. Retained only so that κ = T_s/T_c = 64 can appear in the formulas.
κ (kappa)--The constant 64. A pure unit conversion between T_s and T_c; it carries no physical meaning of its own.
REResource elementOne subcarrier in one OFDM symbol, (k, l). Carries one modulation symbol.
RBResource block12 consecutive subcarriers. A frequency-domain object only — the definition says nothing about time.
CRBCommon resource blockAn RB numbered from point A on a per-SCS grid. The absolute frequency reference (§6).
PRBPhysical resource blockAn RB numbered from the start of a bandwidth part. What a grant's frequency allocation counts in.
VRBVirtual resource blockAn RB index that is mapped to a PRB either directly or through an interleaver, for frequency diversity.
Point A--The frequency-domain origin of every CRB grid on a carrier. Not necessarily inside the carrier, and never transmitted on.
BWPBandwidth partA contiguous PRB range with its own SCS and CP within which a UE operates. Up to four configured, one active per direction (§9).
RIVResource indicator valueThe single-integer encoding of (start, length) used by locationAndBandwidth with N = 275.
CPCyclic prefixA copy of the end of a symbol prepended to its start, absorbing multipath delay spread. Normal everywhere; extended only at 60 kHz.
SFNSystem Frame NumberThe 10-bit radio frame counter, 0..1023, wrapping every 10.24 s. Six bits from the MIB, four from the PBCH payload.
SSBSS/PBCH block4 symbols × 20 PRB carrying PSS, SSS and PBCH. The only structure a UE can find with no prior information (§10).
L_max--The maximum number of SSB candidate positions in a half-frame: 4, 8 or 64 depending on frequency. Sets the ssb-PositionsInBurst bitmap length.
GSCNGlobal Synchronisation Channel NumberAn index into the coarse synchronisation raster of permitted SSB positions (§12).
k_SSB--The residual subcarrier offset between the CRB grid and the SSB's lowest subcarrier. 0..23 in FR1, in 15 kHz units.
SFISlot Format IndicatorThe field in DCI format 2_0 that dynamically designates flexible symbols. Cannot override semi-static D or U (§14).
Guard period--The flexible symbols between downlink and uplink in a TDD period. Its length is the cell's round-trip delay budget.
FR1 / FR2Frequency Range 1 / 2410 MHz – 7.125 GHz and 24.25 – 52.6 GHz. Rel-17 adds FR2-2, 52.6 – 71 GHz.

22. References

  • 3GPP TS 38.211Physical channels and modulation. Clause 4.1 (basic time units T_c, T_s, κ), 4.2 (numerologies, Table 4.2-1), 4.3 (frames, subframes, slots, Tables 4.3.2-1 and 4.3.2-2), 4.4 (resource grid, CRB/PRB/VRB, point A), 5.3.1 (OFDM baseband generation and cyclic prefix lengths), 7.3.1.6 (VRB-to-PRB mapping), 7.4.3.1 (SS/PBCH block resource mapping, Table 7.4.3.1-1).
  • 3GPP TS 38.213Physical layer procedures for control. Clause 4.1 (SSB candidate positions, Cases A–E, the 20 ms initial-access assumption), 11.1 (slot configuration, D/F/U determination, slot formats, Table 11.1.1-1), 12 (bandwidth part operation), 13 (CORESET#0 and searchSpaceZero, and the k_SSB no-SIB1 encoding).
  • 3GPP TS 38.214Physical layer procedures for data. Clause 5.1.2.1 (PDSCH mapping types A and B), 5.1.2.2 (resource allocation, including the RIV formula used by locationAndBandwidth), 6.1.2 (the PUSCH equivalents).
  • 3GPP TS 38.104Base station radio transmission and reception. Clause 5.4.2 (NR-ARFCN and the channel raster), 5.4.3 (the synchronisation raster and GSCN), 5.4.3.3 (which SSB case applies per band).
  • 3GPP TS 38.101-1 / TS 38.101-2UE radio transmission and reception, Range 1 / Range 2. Clause 5.3.2 (transmission bandwidth configuration N_RB), 5.3.3 (minimum guard band).
  • 3GPP TS 38.133Requirements for support of radio resource management. Clause 8.6.2 (bandwidth part switch delay, Table 8.6.2-1).
  • 3GPP TS 38.331RRC protocol specification. ServingCellConfigCommon and ServingCellConfigCommonSIB, FrequencyInfoDL and FrequencyInfoDL-SIB, SCS-SpecificCarrier, BWP / BWP-Downlink / BWP-Uplink, BWP-Id, TDD-UL-DL-ConfigCommon and TDD-UL-DL-ConfigDedicated, MIB.
  • 3GPP TS 38.300NR overall description. Clause 5.1 (physical layer overview), 5.3 (bandwidth parts), 6 (channel structure).

Companion documents in this set

  • 03 Random Access — PRACH occasions are (s_id, t_id, f_id) triples indexed into this structure; the preamble format's CP is the same cell-radius argument as §5 and §13.
  • 04 Timing Advance — N_TA is expressed in T_c and its step size scales with 2^-µ (§2).
  • 05 HARQ / 08 Scheduling — k0, k1 and k2 are slot offsets in the numerology of the relevant BWP.
  • 06 Channel Mapping — where PBCH, PDSCH, PDCCH, PUSCH and PUCCH sit in the grid this document defines.
  • 11 DRX — on-durations and cycles interact with bwp-InactivityTimer (§9.3).
  • 17 System Information / 18 MIB and SIB1 IEs — the source of offsetToPointA, k_SSB, CORESET#0 and tdd-UL-DL-ConfigurationCommon; §7, §10 and §13 all depend on them.
  • 19 Paging — paging frames and occasions are SFN arithmetic (§3).
  • 20 Measurements and Events / 21 Measurement Gaps and SMTC — SMTC windows are placed against the SSB burst set of §11.
  • 22–25 Handover documents — target-cell SSB indices and SFN offsets are what makes a handover land in the right slot.
  • 26 UE Capability — which numerologies, bandwidths, BWP switch delay type and SSB cases a given UE actually supports.