5G NR Resource Blocks and Bandwidth Parts: CRB, BWP, PRB and VRB Finally Untangled
Four kinds of resource block, one coordinate system: how Point A, common resource blocks, bandwidth parts, physical and virtual resource blocks fit together, and why NR needed all four.
Why there are four names for "a block of 12 subcarriers"
Every resource block is 12 consecutive subcarriers. What differs is the coordinate system in which it is numbered:
| Name | Numbered relative to | Who uses the number |
|---|---|---|
| Common RB (CRB) | Point A, the absolute reference of the carrier | RRC configuration (where things are on the carrier) |
| Physical RB (PRB) | the start of the active bandwidth part | the UE's receiver (what it actually processes) |
| Virtual RB (VRB) | a logical index inside the allocation | the DCI (what the scheduler says) |
| Resource block group / PRG | groupings of PRBs | allocation bitmaps and precoding |
Think of a very long strip of graph paper (the carrier). CRBs are the squares printed on it with absolute numbers. A bandwidth part is a picture frame you lay over part of the strip; PRBs are the squares counted from the frame's left edge. VRBs are stickers the scheduler writes numbers on and then places into the frame — either in order (localised) or shuffled (interleaved).
Point A and common resource blocks
Point A is the anchor of the entire frequency grid for a carrier. It is defined as the centre of subcarrier 0 of CRB 0 — and this holds for every numerology: CRB 0 at 15 kHz, CRB 0 at 30 kHz and CRB 0 at 60 kHz all start at Point A. Above Point A the grids diverge (a 30 kHz CRB is twice as wide as a 15 kHz one), so CRB n at one SCS does not generally align with CRB n at another, except at n = 0.
How the UE learns where Point A is:
- During initial access: SIB1 carries
offsetToPointA— the number of RBs (at 15 kHz in FR1, 60 kHz in FR2) from Point A up to the lowest RB overlapping the SSB. Together withk_SSBfrom the MIB, that pins the SSB onto the CRB grid. - Once connected:
absoluteFrequencyPointA(an ARFCN) gives Point A directly.
Point A does not have to be inside the carrier; it is just a coordinate origin (it usually sits at the carrier's lowest edge). The carrier itself is then described per SCS by SCS-SpecificCarrier: offsetToCarrier (CRBs from Point A to the first usable RB) and carrierBandwidth (number of RBs). A carrier can have at most 275 RBs (3300 subcarriers) at any SCS.
Bandwidth parts: why NR needed them
An LTE UE always received the whole carrier bandwidth. That was fine at 20 MHz. At 100 MHz (or 400 MHz in FR2), three things go wrong:
- Power: a phone that only needs to receive a paging message or a keep-alive should not run its RF front end and FFT at 100 MHz.
- Cheap devices: an IoT or RedCap device may not support 100 MHz at all, but it should still be able to live on a 100 MHz carrier.
- Mixed services: eMBB might want 30 kHz; a URLLC slice on the same carrier might want 60 kHz. One carrier, two numerologies.
A bandwidth part (BWP) solves all three: it is a contiguous set of CRBs, with one numerology, within which the UE actually operates. The carrier stays wide; the UE looks at a window.
The rules
- A UE can be configured with up to 4 downlink and 4 uplink BWPs per serving cell (IDs 0–3), but only one DL and one UL BWP is active at a time (paired together in TDD).
- Each BWP has its own SCS, CP, location and size (
locationAndBandwidth, a RIV encoding of start CRB and length), and its own PDCCH/PDSCH/PUCCH/PUSCH configuration. - BWPs may overlap in frequency and may have different numerologies.
- The UE only monitors PDCCH, receives PDSCH and measures CSI-RS inside the active BWP.
The three roles a BWP can play
| Role | How defined | Purpose |
|---|---|---|
| Initial BWP (BWP 0) | From CORESET#0 (MIB) during initial access; refined by SIB1 (initialDownlinkBWP) | Where the UE camps, reads SI, does random access and paging |
| Default BWP | defaultDownlinkBWP-Id (if absent, the initial BWP is the default) | Where the UE falls back when bwp-InactivityTimer expires — typically narrow, to save power |
| Dedicated / active BWP | firstActiveDownlinkBWP-Id and the BWP list in dedicated RRC | The wide BWP for high-throughput operation |
How the active BWP changes
- DCI: the bandwidth part indicator field (up to 2 bits) in DCI 1_1 / 0_1 both schedules data and switches BWP in one message. Switching takes a UE-capability-dependent delay (a few slots) during which the UE is not expected to receive or transmit.
- Timer:
bwp-InactivityTimer(2 ms to 2.56 s). No scheduling for that long → UE returns to the default BWP. - RRC reconfiguration: slower, used when the BWP set itself changes.
- Random access: falls back to the initial BWP if the current one has no RACH resources.
This DCI-plus-timer design mirrors how a phone screen dims: expand on demand, shrink automatically.
Physical resource blocks: the UE's view
Within the active BWP, RBs are numbered PRB 0 … N_BWP,size − 1. The relationship to the common grid is simply
n_CRB = n_PRB + N_BWP,start
where N_BWP,start is the BWP's first CRB. Almost everything the UE does day to day — decoding a DCI's frequency allocation, mapping DM-RS, measuring CSI-RS — is in PRBs. Two consequences:
- PRB 0 is almost never CRB 0. When someone quotes an RB index, ask "in which coordinate system?".
- When the active BWP changes, the meaning of every PRB index changes with it, which is why the UE needs the switching delay.
A frequent implementation bug: the RB_start decoded from locationAndBandwidth is measured from the first CRB of the carrier for that SCS (i.e. offsetToCarrier), not from Point A.
Virtual resource blocks: the scheduler's view
A DCI describes an allocation in VRBs. For resource allocation type 0 (RBG bitmap) VRB and PRB are identical. For type 1 (contiguous RIV), the DCI's 1-bit VRB-to-PRB mapping field chooses:
- Non-interleaved (localised): VRB n → PRB n. The allocation is where the DCI says. Best when the gNB has good CSI and deliberately picks strong RBs.
- Interleaved (distributed): VRBs are grouped into bundles of L = 2 or 4 RBs (
vrb-ToPRB-Interleaver) and passed through a 2-row block interleaver across the BWP, so consecutive VRBs land on non-adjacent PRBs. Best when the gNB has no reliable CSI (fallback scheduling, mobile UEs, SIB1) and wants frequency diversity rather than frequency selectivity.
The interleaving is confined to the BWP; it never spreads an allocation outside the active window.
Putting the four together
Point A
│ CRB 0 CRB 1 … CRB 100 … CRB 200 … CRB 272
│ ├──────────────── carrier (offsetToCarrier, carrierBandwidth) ───────┤
│ ┌──── active BWP (start = CRB 100, size = 100) ────┐
│ PRB 0 PRB 99
│ DCI says: VRB 10–19 (RIV) interleaved → PRB 10,11,58,59,…
Read any NR frequency configuration by walking down this ladder: Point A → carrier → BWP → PRB → (via VRB) what the DCI meant.
Common confusions
- "Point A is the carrier centre." It is the lowest reference of the CRB grid, normally at or below the carrier's lower edge.
- "A UE has one BWP." Up to four per direction configured; one active.
- "The SSB must be inside the active BWP." It need not be — but if it is not, the UE cannot measure it without measurement gaps, so operators usually keep the SSB inside the initial and default BWPs.
- "BWP switching is only for power saving." It is also how NR handles numerology changes and narrow-band devices on wide carriers.
- "Interleaved VRB mapping spreads across the carrier." Only within the BWP.
- "PRB index in a log = CRB index." Only if the BWP starts at CRB 0.
Spec pointers
- TS 38.211 §4.4.2 — Point A, CRBs; §4.4.3 — PRBs; §4.4.4 — VRBs and BWP definition
- TS 38.211 §7.3.1.6 — VRB-to-PRB mapping (interleaver)
- TS 38.213 §12 — BWP operation and switching; TS 38.133 §8.6 — switching delay
- TS 38.214 §5.1.2.2 — resource allocation types 0/1
- TS 38.331 — BWP, BWP-Downlink, SCS-SpecificCarrier, offsetToPointA, absoluteFrequencyPointA, bwp-InactivityTimer
Recap
One physical thing (12 subcarriers), four coordinate systems. CRBs are absolute, anchored at Point A for every numerology. A BWP is the window the UE works in — up to four configured, one active, switched by DCI, timer, RRC or RACH — giving power saving, narrow-band device support and mixed numerologies. PRBs are counted from the BWP start; VRBs are what the DCI names, mapped to PRBs either directly or interleaved for diversity.
Interview questions
The questions below are drawn from this topic and phrased the way they tend to come up. Try each one out loud before revealing the answer.
19 questions
- Twelve consecutive subcarriers in the frequency domain. Unlike LTE it has no time dimension in its definition.
- Because slot length varies with numerology. Defining the RB purely in frequency keeps it meaningful across all numerologies.
- The common reference point for the resource block grid — the position of subcarrier 0 of common resource block 0. Everything in the frequency domain is expressed relative to it.
- A resource block numbered from Point A across the whole carrier for a given numerology. CRB numbering is absolute and independent of what any UE is configured with.
- A resource block numbered from the start of a bandwidth part. PRB numbering is relative to the active BWP, so PRB 0 means different frequencies depending on which BWP is active.
- The scheduler's numbering, mapped to PRBs either directly or through interleaving. Interleaved mapping spreads a small allocation across the band to gain frequency diversity.
- A contiguous set of common resource blocks with its own numerology and cyclic prefix, configured for a UE on a carrier.
- NR carriers can be up to 400 MHz, far wider than many UEs need or can afford to monitor. A BWP lets a device operate in a narrow slice of a wide carrier and save power.
- Up to four per direction per carrier, with one active at a time for a given UE.
- The one the UE uses for initial access, derived from the CORESET#0 configuration in the MIB before dedicated configuration exists.
- The BWP the UE falls back to when the bwp-InactivityTimer expires. It is typically narrow, so an idle-ish UE stops monitoring a wide band.
- RRC reconfiguration, a bandwidth part indicator field in DCI, or expiry of the inactivity timer. Timer-based and DCI-based switching are the fast paths.
- The switch takes time — on the order of a slot or two — during which the UE cannot receive. Frequent switching to save power trades against that interruption.
- Yes, which is one of the main reasons they exist: a URLLC BWP at 60 kHz can sit alongside an eMBB BWP at 30 kHz on the same carrier.
- Which bandwidth part is active, where that BWP starts in CRB terms, and where Point A is. PRB numbering alone is meaningless without that chain.
- The carrier is what the cell transmits; the BWP is the window a given UE is configured to operate in. The BWP is always a subset.
- For the UE to measure it in connected mode it must be within the active BWP, which is a real constraint when configuring narrow BWPs and a common source of measurement gaps.
- A small allocation placed contiguously might land entirely in a fade. Interleaving spreads it across the band so the coding can recover from a notch.
- CRB is absolute numbering from Point A; BWP is a window on that grid; PRB is numbering relative to the window; VRB is the scheduler's numbering that maps onto PRBs.
Related Articles
5G NR Waveforms: CP-OFDM and DFT-s-OFDM, and When the Uplink Should Use Which
Why NR uses CP-OFDM everywhere but keeps DFT-s-OFDM as an uplink option, what PAPR really costs, and how the network chooses per UE.
5G NR Transmitter and Receiver Chain: Following the Bits From MAC to Antenna and Back
A block-by-block walk through the NR physical-layer transmit chain and its mirror-image receiver, explaining what each stage does and why it sits where it does.
5G NR Synchronisation Signals (PSS and SSS): How a Phone Finds a Cell From Nothing
PSS and SSS explained from the UE's point of view: what each signal gives the receiver, how the PCI is built from them, and why NR has 1008 cell identities.