Resource Allocation (Type 0/1/2 & RIV) in LTE 4G
How LTE DCI points to PRBs — resource allocation Type 0/1 (RBG bitmaps) and Type 2 localized/distributed with the RIV start/length code.
When the eNB schedules you in LTE, the DCI on PDCCH has to answer one blunt question in the frequency domain: which Physical Resource Blocks are yours? LTE answers it three different ways — a coarse group bitmap (Type 0), a fine bitmap within one strand of groups (Type 1), or a compact start-and-length code called the RIV (Type 2). Which of the three is in force is fixed by the DCI format itself. This page is grounded in TS 36.213 (physical-layer procedures) and TS 36.212 (DCI coding).
Introduction
Frequency-domain resource allocation is the part of an LTE scheduling grant that names which resource blocks a UE should receive on (PDSCH) or transmit on (PUSCH). It is one field inside the DCI the eNB sends on the PDCCH, and its interpretation is defined in TS 36.213 (procedures) and TS 36.212 (DCI coding).
This field is read on every single grant. Each time the scheduler picks a UE for a subframe, the UE must decode this field to know exactly which PRBs are its own — anything it misreads it either fails to receive or transmits in the wrong place. Because the PDCCH is blind-decoded dozens of times per subframe, the field also has to be small, which is the tension the whole design resolves.
It matters because the choice of allocation type is where the scheduler expresses its strategy: pack a UE onto the specific PRBs where its channel is best, or spread it across the band so no single fade can kill the transport block, all while spending as few DCI bits as possible. Understanding the three types tells you both what the eNB is trying to do and how the UE recovers its PRBs from a handful of bits.
On this page
Why three allocation types exist
In plain words: imagine booking seats in a huge theatre. You could name every single seat one by one (perfectly precise, but the message is enormous), or say "block off rows 10–12" (cheap, but only if your group sits together), or say "give me the whole balcony section, spread us out for the view." LTE offers all three styles of booking because sometimes you want exact seats on the good side of the room, and sometimes you just want a cheap, contiguous block — and the ticket (the DCI) only has room for so many words.
Concretely, a plain per-PRB bitmap would cost 100 bits at 20 MHz — far too much for a control channel that must be blind-decoded dozens of times per subframe. So 3GPP defines three resource allocation types that trade granularity against signalling bits. The deeper reason non-contiguous types exist at all is frequency-selective scheduling and diversity: a fading channel is good in some parts of the band and poor in others, so the scheduler wants either to place a UE on the scattered good PRBs (Type 0/1) or, when it does not know the channel, to spread the UE across the whole band so no single fade kills the transport block (Type 2 distributed).
The Job: Point the UE at its PRBs
An LTE carrier is a grid of Physical Resource Blocks (PRB) across frequency — 6 PRBs at 1.4 MHz up to 100 PRBs at 20 MHz. A downlink assignment must tell the UE exactly which of those PRBs carry its PDSCH, and an uplink grant must tell it which carry its PUSCH. The obvious idea — a plain bitmap with one bit per PRB — costs 100 bits at 20 MHz, far too much for a control channel that must be blind-decoded dozens of times per subframe. So 3GPP defines three resource allocation types that trade granularity against signalling bits, and the DCI format the eNB transmits decides which type is in play.
A frequency-domain Resource Allocation field inside the DCI. Depending on the DCI format it is interpreted as Type 0 (RBG bitmap), Type 1 (subset bitmap) or Type 2 (a RIV giving start + length).
A per-PRB bitmap would be huge and would grow linearly with bandwidth. The three types compress the assignment: Type 0/1 group PRBs so fewer bits are needed; Type 2 assumes one contiguous run and packs it into a single number.
The UE reads the DCI format (implied by the search space it was found in and the payload size), applies the matching decode rule from TS 36.213, and recovers the exact set of PRBs to receive or transmit on.
Core idea: Type 0 and Type 1 can allocate non-contiguous PRBs (good for frequency diversity); Type 2 (localized) allocates one contiguous run described by a start and a length, while Type 2 (distributed) scatters that run across the band by an interleaver. Uplink is always contiguous.
There is a fourth idea worth naming up front, because it explains why non-contiguous types even exist: frequency-selective scheduling and diversity. A fading channel is good in some parts of the band and poor in others. If the scheduler knows the channel (from a CQI report), it wants to place a UE on the good PRBs, which may be scattered — that is Type 0/1. If it does not know the channel, it wants to spread the UE across the whole band so no single fade can kill the whole transport block — that is Type 2 distributed. The rest of this page works through each mechanism in detail.
Type 0 — Resource Block Group Bitmap
Type 0 chops the whole band into Resource Block Groups (RBG), each a fixed run of P consecutive PRBs, and hands the UE a bitmap with one bit per RBG. A 1 means “this RBG is yours.” The group size P grows with the bandwidth so the bitmap never gets too long — the same trick a filesystem uses when it grows cluster size on a bigger disk to keep the allocation table small.
System BW (N_DL_RB) | Typical channel BW | RBG size P | Number of RBGs N_RBG | Type 0 bitmap bits |
|---|---|---|---|---|
| ≤ 10 | 1.4 MHz (6 RB) | 1 | 6 | 6 |
| 11 – 26 | 3 / 5 MHz (15 / 25 RB) | 2 | 8 / 13 | 8 / 13 |
| 27 – 63 | 10 MHz (50 RB) | 3 | 17 | 17 |
| 64 – 110 | 15 / 20 MHz (75 / 100 RB) | 4 | 19 / 25 | 19 / 25 |
This is TS 36.213 Table 7.1.6.1-1. The number of groups is N_RBG = ⌈N_DL_RB / P⌉. At 20 MHz, P = 4, so 100 PRBs become 25 RBGs and the bitmap is only 25 bits instead of 100. At 10 MHz, P = 3 gives 50 PRBs → ⌈50/3⌉ = 17 RBGs. The MSB of the bitmap addresses the lowest-frequency RBG (RBG 0); the LSB addresses the highest.
The cost of the compression is granularity: you can only be assigned in chunks of P PRBs, and if N_DL_RB is not a multiple of P the last RBG is smaller than P. At 10 MHz, 50 is not a multiple of 3, so the final RBG (RBG 16) holds only 50 − 16×3 = 2 PRBs rather than 3. The UE handles this edge case from the same table; it never guesses.
When Type 0 shines: the scheduler wants scattered, non-contiguous PRBs — for example, to place a UE on the specific RBGs where its reported CQI is highest, or to interleave several UEs across the band. The RBG bitmap makes any subset of groups addressable in one field.
Type 1 — Bitmap Within an RBG Subset
Type 1 is the fine-grained cousin of Type 0. Instead of selecting whole RBGs, it works inside one RBG subset and lets the UE pick individual PRBs. The RBGs of the band are partitioned into P subsets, where subset p (for p = 0…P−1) contains every P-th RBG starting from RBG p. So with P = 4 there are 4 subsets, and subset 0 holds RBGs 0, 4, 8, 12…, subset 1 holds RBGs 1, 5, 9…, and so on.
The Type 1 field is the same total width as the Type 0 bitmap — that is deliberate, so both interpretations fit one shared DCI field and a single header bit chooses between them. Type 1 spends that width on three things:
| Sub-field | Width | Purpose |
|---|---|---|
| Subset indicator | ⌈log₂P⌉ bits | Selects which one of the P RBG subsets is active (e.g. 2 bits when P = 4). |
| Shift flag | 1 bit | Slides the addressable window within the subset up or down, so the bitmap can reach PRBs beyond its own length. |
| PRB bitmap | remaining bits | Each bit selects one individual PRB inside the chosen (and possibly shifted) subset. |
The result is still non-contiguous, but now at single-PRB resolution rather than P-PRB resolution. The trade-off is reach: because only one subset is addressable per DCI, a single Type 1 assignment cannot touch PRBs spread across all subsets at once — it sees only every P-th RBG. The shift flag exists precisely to soften that limit: when the bitmap is shorter than the subset it addresses, the shift bit chooses whether the bitmap covers the low end or the high end of the subset's PRBs.
Mental model: Type 0 = “pick which coarse blocks.” Type 1 = “zoom into one strand of blocks and pick exact PRBs, then optionally slide the window.” Same number of bits, finer resolution, narrower reach.
In practice Type 1 is used when the scheduler needs precise, single-PRB placement for a small allocation — for instance to fit a UE into a gap left between larger allocations — and does not need to reach across the whole band in one grant. Type 0 remains the workhorse for larger, coarser downlink allocations.
Type 2 — Localized / Distributed VRBs and the RIV
Type 2 assumes the allocation is one contiguous run of Virtual Resource Blocks (VRB) — a start block RB_start and a length L_CRBs. Rather than send those two numbers separately (which would waste codepoints on impossible combinations, like a run that starts near the top of the band yet claims to be very long), TS 36.213 packs them into a single Resource Indication Value (RIV).
Crucially, Type 2 works on VRBs, not directly on PRBs, and a 1-bit localized/distributed flag in the DCI decides how those VRBs map to physical resource:
- Localized VRB (LVRB): VRB n maps straight to PRB n. The contiguous run in VRB space is a contiguous run in the actual spectrum. This is the simple, low-overhead case.
- Distributed VRB (DVRB): the contiguous VRB run is spread across the band by a two-step interleaver plus a frequency hop at the slot boundary, governed by a distributed gap
N_gap. The transport block therefore samples many parts of the band, buying frequency diversity even though the DCI still only encodes a start and a length. For larger bandwidths (N_DL_RB≥ 50) two gap values (N_gap,1andN_gap,2) are defined; a bit selects which.
RIV = N_DL_RB × (L_CRBs − 1) + RB_startelse:
RIV = N_DL_RB × (N_DL_RB − L_CRBs + 1) + (N_DL_RB − 1 − RB_start)
The clever part is that this single formula packs every valid (start, length) pair into a unique RIV without wasting codepoints — the two branches fold the “large length” half of the space back on itself, so RIV fits in exactly ⌈log₂(N_DL_RB × (N_DL_RB+1)/2)⌉ bits. That is 13 bits at 20 MHz, versus the 25 a Type 0 bitmap needs and the 100 a raw per-PRB bitmap would need.
Encode example, 20 MHz (N_DL_RB = 100). Say RB_start = 10 and L_CRBs = 5. Here L_CRBs−1 = 4 ≤ ⌊100/2⌋ = 50, so the first branch applies: RIV = 100 × 4 + 10 = 410.
Decode. To reverse a RIV, compute a trial length L′ = ⌊RIV / N_DL_RB⌋ + 1 and a trial start S′ = RIV mod N_DL_RB. If L′ + S′ ≤ N_DL_RB the first branch was used, so L_CRBs = L′ and RB_start = S′. Otherwise the second branch was used: L_CRBs = N_DL_RB − L′ + 2 and RB_start = N_DL_RB − 1 − S′.
RIV | L′ = ⌊RIV/N⌋+1 | S′ = RIV mod N | L′+S′ ≤ 100? | Branch | RB_start | L_CRBs |
|---|---|---|---|---|---|---|
| 410 | 5 | 10 | Yes (15) | 1 | 10 | 5 |
| 27 | 1 | 27 | Yes (28) | 1 | 27 | 1 |
| 3189 | 32 | 89 | No (121) | 2 | 100−1−89 = 10 | 100−32+2 = 70 |
So RIV = 410 decodes to “start at PRB 10, 5 PRBs long,” RIV = 27 decodes to a minimal single-PRB run at PRB 27, and RIV = 3189 decodes to “start at PRB 10, 70 PRBs long” — the second branch handling the long allocation the first branch has no room for. The whole 20 MHz allocation is described by one small number.
Why the fold works: a run of length L and a run of length N−L+2 can never both be valid from the same start, so the two branches never collide. The mapping is a bijection onto {0 … N(N+1)/2 − 1}, which is exactly why no codepoint is wasted.
Two Types, One Band
Below is a 50-PRB (10 MHz) band shown two ways: Type 0 selecting scattered RBGs by bitmap (P = 3), and Type 2 localized selecting one contiguous run by RIV. The same band, two very different allocation philosophies.
Which DCI Format Uses Which Type
The allocation type is not free-standing — it is fixed by the DCI format the eNB chose. The heavier, MIMO-capable downlink formats carry Type 0/1; the compact and common-search-space formats use Type 2; and the uplink grant is always Type 2 contiguous. The UE knows the format from the search space and payload size, so it always knows which decode rule to apply.
| DCI format | Direction | Allocation type | Notes |
|---|---|---|---|
DCI 1, DCI 2, DCI 2A, 2B/2C/2D | Downlink | Type 0 or Type 1 | A header bit in the field selects Type 0 vs Type 1; used for scheduled PDSCH, including single-antenna, transmit-diversity and the full range of MIMO transmission modes. |
DCI 1A, 1B, 1D | Downlink | Type 2 (localized / distributed) | Compact. 1A is the fallback format present in both common and UE-specific search spaces; the RIV carries the run and a 1-bit flag picks localized vs distributed. |
DCI 1C | Downlink | Type 2 (very compact) | Smallest DCI. Used for SI, paging and RACH-response scheduling. Uses a coarser step (a “N_step_RB” granularity) and distributed VRBs so a tiny field still spreads across the band. |
DCI 0 | Uplink | Type 2 contiguous only | PUSCH grant. SC-FDMA needs a single contiguous PRB block for low PAPR, so distributed/bitmap types are not allowed — only a localized RIV run. |
Why uplink is different: LTE uplink uses SC-FDMA, whose low peak-to-average power ratio depends on transmitting over contiguous subcarriers. That is exactly why DCI 0 only ever grants a contiguous Type 2 run — never the scattered Type 0/1 bitmaps or distributed VRBs allowed on the downlink OFDMA. (Later releases add UL clustered allocation via DCI 0 variants, but the baseline grant is a single contiguous run.)
DCI 1C, precisely: because it schedules broadcast-style traffic that every UE in the cell must decode robustly, it drops resolution to save bits — it allocates in steps of several PRBs rather than one — and always uses distributed VRBs so even a broadcast transport block gets frequency diversity across the whole band.
How the Scheduler Chooses
Given three downlink types plus the localized/distributed choice, how does the eNB decide? It is a three-way trade among overhead, granularity, and diversity, driven by what the scheduler knows about the channel and how big the allocation is.
| Situation | Best fit | Reasoning |
|---|---|---|
| Large allocation, channel-aware, scattered good PRBs | Type 0 | Coarse RBG bitmap addresses any subset of groups cheaply; P-PRB granularity is fine for a big grant. |
| Small allocation needing exact PRB placement | Type 1 | Single-PRB resolution to slot the UE into a specific gap, within one subset. |
| Contiguous run, channel known | Type 2 localized | One RIV, minimal overhead, run sits on the chosen good band segment. |
| Channel unknown / robustness wanted | Type 2 distributed | Interleaver + N_gap hop spreads the run across the band for frequency diversity. |
| Broadcast / paging / RAR | Type 2 via DCI 1C | Tiny field, distributed VRBs, must be decodable by every UE. |
| Any uplink grant | Type 2 contiguous (DCI 0) | SC-FDMA PAPR constraint forbids non-contiguous. |
A useful way to hold it all in your head: bitmap types (0/1) buy you shape — the freedom to pick an arbitrary set of PRBs — at the price of more DCI bits. The RIV (Type 2) buys you cheapness — a contiguous run in a handful of bits — and recovers diversity through the distributed-VRB mapping when needed. The eNB reaches for whichever matches the traffic and its knowledge of the channel at that instant.
One-line summary: Type 0 = coarse groups, any subset. Type 1 = fine PRBs, one subset. Type 2 = one contiguous run as a RIV, localized or spread. DCI format decides; uplink is always contiguous.
⚠ Common pitfalls / gotchas
- Assuming a fixed field width. The Type 0/1 bitmap width and the Type 2
RIVwidth both scale withN_DL_RB, so a decoder hard-coded for one bandwidth silently misreads the allocation on another — always size the field from the actual system bandwidth. - Forgetting the short last RBG. When
N_DL_RBis not a multiple of P, the highest-index RBG holds fewer than P PRBs (e.g. 2 PRBs at 10 MHz). Counting it as a full P over-claims PRBs off the top of the band. - Missing the RIV branch test. Decoding a
RIVwithout checking L′+S′ againstN_DL_RBmishandles every long allocation — the second (folded) branch is where large runs live. - Treating VRBs as PRBs under distributed mapping. With DVRB the contiguous VRB run is not contiguous in spectrum; ignoring the interleaver and
N_gaphop points the UE at the wrong physical RBs. - Expecting scattered uplink grants.
DCI 0is Type 2 contiguous only; there is no Type 0/1 or distributed option for a baseline PUSCH grant because SC-FDMA needs contiguous subcarriers.
LTE ↔ NR: NR keeps the same two philosophies but renames and simplifies them. LTE's Type 0 (RBG bitmap) survives as NR Type 0, and LTE's Type 2 RIV (contiguous start + length) survives as NR Type 1 — but NR drops LTE's Type 1 subset bitmap and drops the localized/distributed VRB distinction entirely, because NR gets frequency diversity from bandwidth parts, PRB bundling and its own interleaved VRB-to-PRB option instead. Allocation is scoped to the active bandwidth part (BWP) rather than the whole carrier, and NR's uplink can use either type since CP-OFDM uplink removes LTE's strict SC-FDMA contiguity constraint (DFT-s-OFDM uplink still prefers contiguous). The RIV formula itself carries over almost unchanged.
Summary
LTE frequency-domain allocation is one DCI field that names a UE's PRBs while spending as few bits as possible. Type 0 hands out whole Resource Block Groups by bitmap (coarse, any subset, P-PRB granularity that grows with bandwidth). Type 1 spends the same bit budget on single-PRB resolution inside one RBG subset, softened by a shift flag. Type 2 assumes a single contiguous run and folds its start and length into one RIV, with a 1-bit flag choosing localized mapping or a distributed, interleaved spread for frequency diversity.
The DCI format fixes which type is in force, so the UE always knows the decode rule from where and how it found the grant. Bitmap types buy shape at the cost of bits; the RIV buys cheapness and recovers diversity through distributed VRBs. And because LTE uplink is SC-FDMA, DCI 0 is always a single contiguous Type 2 run — the one hard constraint that never bends in the baseline design.
Quick Q&A
Q. At 20 MHz, how many bits is the Type 0 bitmap, and why?
A. 25 bits. N_DL_RB = 100 and the RBG size P = 4 (TS 36.213 Table 7.1.6.1-1), so there are ⌈100/4⌉ = 25 RBGs, one bitmap bit each.
Q. At 10 MHz (50 PRB), why is the last RBG only 2 PRBs?
A. P = 3 there, and 50 is not a multiple of 3. There are ⌈50/3⌉ = 17 RBGs; the first 16 cover 48 PRBs, so the last (RBG 16) holds the remaining 50 − 48 = 2 PRBs.
Q. What three sub-fields make up a Type 1 allocation?
A. A subset indicator (⌈log₂P⌉ bits) choosing one of P RBG subsets, a 1-bit shift flag sliding the window within that subset, and a bitmap whose remaining bits each select one individual PRB in the chosen subset.
Q. Decode RIV = 410 at N_DL_RB = 100.
A. L′ = ⌊410/100⌋+1 = 5, S′ = 410 mod 100 = 10. Since 5+10 = 15 ≤ 100, first branch applies: RB_start = 10, L_CRBs = 5 — PRBs 10 to 14.
Q. What is the difference between localized and distributed VRBs?
A. Localized VRBs map directly to the same-numbered PRBs, so a contiguous VRB run is contiguous in spectrum. Distributed VRBs are spread across the band by an interleaver plus a slot-boundary hop of size N_gap, giving frequency diversity while the DCI still encodes only a start and length.
Q. Why must an uplink grant (DCI 0) be contiguous?
A. LTE uplink is SC-FDMA; keeping the transmission on contiguous subcarriers preserves the low PAPR that makes the UE power amplifier efficient. Scattered allocations would break that, so only Type 2 contiguous is permitted.
Where allocation connects
Frequency-domain allocation is one field of the DCI; it rides on the control channel, feeds the scheduler's decisions, and lands on the resource grid the UE decodes. To go deeper, follow the thread from how the assignment is carried, to when it applies, to the grid it points at.