5G NR: PUSCH Resource Allocation in Frequency-Domain

1.            Introduction
Time Domain Resource Allocation is thoroughly discussed in the post: ‘PUSCH Resource Allocation in Time-Domain’.
Signalling of frequency-domain resources means, informing the UE about resource blocks (RBs) and the corresponding bandwidth part (BWP) on which the intended data to be transmitted/received. Using the allocated frequency resources, the UE transmits/receives the data on PUSCH/PDSCH.
The post, Bandwidth Parts thoroughly discusses about BWP allocation and this post discusses PUSCH resource allocation in frequency domain in detail. For downlink resource allocation, refer to the post: PDSCH Resource Allocation in Frequency-Domain.
Frequency-domain resource allocation concept in NR is almost similar to that of LTE, except for the fact that NR frequency resources are allocated per BWP whereas in LTE, the resource allocation is done over entire carrier bandwidth.
The network informs the UE about the frequency resources to be used for the transmission of PUSCH using DCI Formats 0_0, 0_1 or 0_2. Within these DCI Formats, the field ‘Frequency domain resource assignment carries the required resource allocation information.
2                       PUSCH Frequency-domain Resource Allocation Types
Refer to 6.1.2.2 from 38.214 for more information.
NR supports three types of uplink resource allocation schemes; type 0, type 1 and type 2.
The uplink resource allocation scheme type 0 is supported for PUSCH only when transform precoding is disabled. Uplink resource allocation scheme type 1 and type 2 are supported for PUSCH for both cases when transform precoding is enabled or disabled.
The network informs the UE about which resource allocation scheme to be used via RRC signalling. PUSCH-Config IE is used for dynamic resource allocations and ConfiguredGrantConfig IE is used for configured grant (semi-persistent) resource allocations. For example, PUSCH-Config IE is shown below;
PUSCH-Config
. . .

resourceAllocation ENUMERATED  {resourceAllocationType0, resourceAllocationType1, dynamicSwitch}
resourceAllocationForDCI-Format0-2-r16 ENUMERATED  {resourceAllocationType0, resourceAllocationType1, dynamicSwitch}
. . .


The field resourceAllocation refers to resource allocation using DCI format 0_1 and the field resourceAllocationForDCI-Format0-2 refers to DCI format 0_2. The value of these two fields should be interpreted as below;
-    resourceAllocationType0 -> resource allocation type 0 should be used.
-    resourceAllocationType1 -> resource allocation type 1 should be used.
-    dynamicSwitch -> resource allocation type is left flexible, meaning that either type 0 or type 1 shall be used as indicated by DCI. The MSB bit of the field ‘Frequency domain resource assignment’ within the DCI 0_1/0_2 is used to indicate resource allocation type 0 or type 1 (bit value = 0 -> type 0 and bit value = 1 -> type 1).
In addition, resource allocation type 2 should be used for DCI format 0_1 if the RRC parameter useInterlacePUCCH-PUSCH is set to 'enabled'.
So far, the discussion has been about the resource allocation using DCI formats 0_1 and 0_2. When using DCI format 0_0, uplink resource allocation type 1 is used, except when the RRC parameter useInterlacePUCCH-PUSCH is set to 'enabled' in which case uplink resource allocation type 2 is used.

Below table provides summary of DCI format vs resource allocation type.

DCI Format
Uplink Resource Allocation Type
DCI Format 0_0
Type 1, Type 2
DCI Format 0_1
Type 0, Type 1, Type 2
DCI Format 0_2
Type 0, Type 1
3                       Uplink Resource Allocation Type 0
As discussed in section 2, the network can ask the UE to use type 0 either via RRC signalling (resourceAllocationType0) or via DCI format 0_1/0_2 (dynamicSwitch).
Uplink resource allocation type 0 is a bitmap-based resource allocation scheme. The RB assignment information includes a bitmap indicating the Resource Block Groups (RBGs) that are allocated to the scheduled UE.
An RBG is a set of consecutive Virtual Resource Blocks (VRB). In type 0, non-interleaved VRB-to-PRB mapping is performed, meaning that VRBn is directly mapped to PRBn.
The number of RBs within an RBG are derived based on the RRC parameter rbg-size configured by PUSCH-Config and the size of the bandwidth part.
The parameter rbg-Size controls the selection between configuration 1 and configuration 2 for RBG size for PUSCH. If this IE is present, then configuration 2 should be used, otherwise, configuration 1 should be used. This filed is only applicable for uplink resource allocation type 0.
PUSCH-Config
  . . .

rbg-Size ENUMERATED  {config2}
  . . .


The following table summarizes the relationship between rbg-size configuration and bandwidth part size.
Bandwidth Part Size
RGB Size (P)
Configuration 1
Configuration 2
1 – 36
2
4
37 - 72
4
8
73 - 144
8
16
145 - 275
16
16

The bitmap is of size NRBG bits with each bit within the bitmap represents an RBG such that each RBG within the bandwidth part is addressable.
RBG bitmap is such that RBG#0 to RBG#NRBG−1 are mapped from MSB to LSB of the bitmap.
As explained with the below equations, the bitmap is of size NRBG and varies depending upon the size of the bandwidth part and the position of the bandwidth part within the CRB grid, and RBG size (P).


Example1 below illustrates the distribution of RBGs and RBG bitmap when position of bandwidth part within CRB grid starts at an RB value that is an integer multiple of RBG size.


Example2 below illustrates the distribution of RBGs and RBG bitmap when position of bandwidth part within CRB grid starts at an RB value that is not an integer multiple of RBG size.

Finally, let’s look at how RBG allocation is done to individual UEs. As discussed already, the field Frequency domain resource assignment (bitmap) within DCI 0_1/0_2 is used to indicate which RBGs are allocated to the UE.
An RBG is allocated to the UE if the corresponding bit value in the bitmap is 1, the RBG is not allocated to the UE if the bit value is 0.
Consider an example with two UEs and UE1’s resource allocation bitmap = 10011001 and UE2’s bitmap = 01100110, the following figure illustrates which RBs are allocated to UE1 and UE2.


















4                       Uplink Resource Allocation Type 1
As discussed in Section 3, type 0 relies on RBG bitmap-based allocation scheme whereas in type 1 the network provides the UE with an encoded value of starting resource block number and length of RBs.
Type 1 supports contiguous allocation of resource blocks only. With type 1, the number of bits required to represent a set of RBs is less than that of type 0.
As type 1 takes less bits as compared to type 0, fallback DCI format 0_0 uses type 1. For fallback DCI formats, reduced overhead is desirable as compared to scheduling flexibility as a result of non-contiguous RB allocation.
The network can allocate resources for type 1 via ‘Frequency domain resource assignment’ field within DCI formats 0_0, 0_1 and 0_2.
In general, an uplink type 1 resource allocation field consists of a resource indication value (RIV) corresponding to a starting virtual resource block (RBstart) and a length in terms of contiguously allocated RBs (LRBs).
The RIV value is defined by the following equation;

Let’s consider a couple of examples and derive RIV value;

Uplink Resource Allocation Type 1 when received via DCI format 0_2:
When the scheduling grant is received with DCI format 0_2, the RIV corresponds to starting RBG and length in terms of RBGs. Note RB group here instead of individual RB assignment (DCI format 0_0/0_1).
With this scheme, the total number of bits required to represent all RBs within the bandwidth part are less than that of type 1 RIV scheme used in DCI formats 0_0 and 0_1.
The size of RBG is provided by RRC parameter ResourceAllocationType1-granularity-ForDCIFormat0_2 within PUSCH-Config IE. If this field is not configured, then RBG size should be set to 1. This field configures the scheduling granularity applicable for both the starting point and length indication. The granularity can be 2, 4, 8 or 16 RBs.
PUSCH-Config
  . . .

resourceAllocationType1GranularityForDCI-Format0-2-r16 ENUMERATED  {n2, n4, n8, n16}
  . . .


The resource allocation field consists of a resource indication value (RIV) corresponding to a starting resource block group RBGstart (= 0, 1, …, NRBG-1) and length in terms of virtually contiguously allocated resource block groups LRBGs (1, 2, …, NRBG).
In the RIV equation, instead of starting RB and total RBs, starting RBG and total RGBs are used. The RIV value is defined by the following equation;

Let’s consider a couple of examples and derive RIV value;





5                       Uplink Resource Allocation Type 2
5.1             Introduction to Interlaced Resource Blocks:
See section 4.4.4.6 from 38.211. Multiple interlaces of RBs are defined where an interlace m {0, 1, ..., M−1} consists of common RBs {m, M+m, 2M+m, 3M+m,...}, with M being the number of interlaces given by the following table;
µ
Number of RB interlaces (M)
0
10
1
5

The relation between Interlaced Resource Block (IRB) number (nIRB) and Common Resource Block (CRB) number (nCRB) is given by the following equation;
The following example illustrates the mapping of nIRB and nCRB;












5.2             Details of Uplink Resource Allocation Type 2:
The interpretation of the field ‘Frequency domain resource assignment within DCI format 0_1 depends upon whether or not useInterlacePUCCH-PUSCH-r16 is configured within BWP-UplinkDedicated.
If the field useInterlacePUCCH-PUSCH is configured, the UE uses uplink frequency domain resource allocation Type 2 for PUSCH.
In type 2 resource allocation, the total number of bits for Frequency domain resource assignment field depends upon subcarrier spacing of the active UL BWP.
SCS = 30 kHz:
-    5+Y bits provide the frequency domain resource allocation
-    The 5 MSBs of the resource block assignment information comprise a bitmap indicating the interlaces that are allocated to the scheduled UE.
·     As there are a total of 5 (=M) RB interlaces for µ = 1, 5 bits are good enough to indicate allocated interlaces.
·     The order of interlace bitmap is such that interlace 0 to interlace 4 are mapped from MSB to LSB of the bitmap.
·     An interlace is allocated to the UE if the corresponding bit value in the bitmap is 1; otherwise the interlace is not allocated to the UE
-    Y LSBs provide the RB set allocation
SCS = 15 kHz:
-    6+Y bits provide the frequency domain resource allocation
-    The 6 MSBs provide the interlace allocation. As there are a total of 10 (=M) RB interlaces for µ = 0, the set of allocated interlaces are indicated using RIV => RIV indicates the starting interlace index and the number of contiguous interlace indices.
-    Y LSBs provide the RB set allocation
For both 15 kHz and 30 kHz SCS, the value of Y is determined by Ceil (log2(N(N+1)/2)), where N the number of RB sets contained in the BWP.

These Y bits indicate to the UE a set of contiguously allocated RB sets for PUSCH i.e., the resource allocation field (Y-LSB bits) consists of a resource index value (RIV). The RIV indicates starting RB set and a number of contiguous RB sets as usual.

Reference: Version 16.1.0 of 3GPP TS 38.211, 38.212, 38.213, 38.214, and 38.331