NR CG (Configured Grant)
This tutorial is to show you how to configure Configured Grant. Configured Grant is a mechanism that enable UL scheduling via RRC message and schedule PUSCH without DCI. Major user case and concept is very similar to SPS (Semi Persistent Scheduling) in LTE. In LTE, we used the same concept both in downlink and uplink, and name it as SPS for both downlink and uplink. But in NR, we call this mechanism as Configured Grant for Uplink and SPS for Downlink.
There are two types of CG defined in 3GPP called Type 1 and Type 2 which can be summarized as follows.
- Type 1 : UE is expected to transmit PUSCH as soon as it complete the processing of RRC message (e.g, RRCReconfiguration) confuring CG
- Type 2 : UE is expected to transmit PUSCH after it complete the processing of the RRC message and DCI trigger (DCI masked with CS-RNTI)
Table of Contents
- NR CG (Configured Grant)
Test Setup
Test setup for this tutorial is as shown below. This is just for low layer testing, you may not need any complicated IP layer setup.
- SIM Card used in this tutorial is the one delivered with the system as it is.
- If you want to change the configuration, The tutorial Configuration Guide would help
If you have a commercial UE that support UE assistance information with Release Preference, you can use the Setup A. If you don't have any commercial UE supporting this feature but have Amarisoft UEsim you can use Setup B. In this Test, Setup B is used.
Setup A
This is the setup where you use a commercial UE as DUT.
Setup B
This is the setup where you use a commercial Amarisoft UEsim as DUT.
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- configured_grant : Under this link, all the parameters listed below are described.
- tf_precoding
- mcs_table
- rbg_size
- ra_type
- dynamic_beta_offsets
- dmrs
- tpmi
- mcs
- n_layer
- l_crb
- periodicity
- configuration_type
- max_retrans
- dtx_snr_threshold
- skip_uplink_tx_snr_threshold
- type2_deact_no_data_threshold
- l_crb_max
- rb_start
- p0_nominal_without_grant
- enhanced_skip_uplink_tx_configured_enabled
Test 1 : Configured Grant - Type 1 with Single BWP
This test is to show how to configure and verify the CG(Configured Grant) type 1. In CG Type 1, UE is expected to send PUSCH after RRCReconfiguration for CG without DCI Triggering.
Configuration
The configuration shown here is common configuration for all the subtests belonging to Test 1
I have used gnb-sa-cg.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg
I am using the default mme-ims.cfg without any modification.
On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (
gnb-sa-cg.cfg is configured as follows.
In gNB configuration, you need to configure the parameter configured_grant. Within the configured_grant object, you need to specify CG type by the parameter configuration_type , assign physical resources by the parameters l_crb,l_crb_max,mcs and specify the PUSCH transmission interval by setting the parameter periodicity.
drb_nr_cg.cfg is configured as follows.
In drb configuration, you need to set need_sps to "ul" for the specific QCI you want to apply CG(configured grant). You can pick any QCI in this configuration to apply configured grant.
ue-nr-sa-cg.cfg is configured as shown below. (
The only configuration that you need to set in UEsim is to set as_release to 16 or higher.
Perform the Test
Run lte service on callbox and check 'cell' and 'cell phy' command to see if the cell is configured as you intended.
Power on UE.
Wait until the DUT complete the initial attach. You can confirm UL traffic scheduled by CG (Configured Grant) here as well. In case of PUSCH by configured grant, traffic is printed but mcs is not printed.
Log Analysis
Following is the log snapshot that are involved in Configured Grant
Make it sure that UE support configured grant as shown in the UE capability Information. UE should notify "configuredUL-GrantType1 supported" for gNB to apply the CG (configured grant).
Once UE notify it support Configured Grant, then gNB configures Configured Grant. You see all the necessary scheduling information (i.e, rrc-ConfiguredUplinkGrant) and DMRS(cg-DMRS-Configuration) and UCI(uci-OnPUSCH Setup) in this setup.
After the RRC Reconfiguration with CG, you would see that PUSCH is transmitted at every 10ms without any DCI grant. This is because the periodicity in rrc is set to sym20x14 which corresponds to 20 slots.
Test 2 : Configured Grant - Type 2 Immediate with Single BWP
This test is to show how to configure and verify the CG(Configured Grant) type 2 Immediate. In CG Type 2 Immediate, UE is expected to send PUSCH after RRCReconfiguration for CG and DCI Triggering.
Configuration
The configuration shown here is common configuration for all the subtests belonging to Test 2
I have used gnb-sa-cg-type2-immediate.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg
I am using the default mme-ims.cfg without any modification.
On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (
gnb-sa-cg-type2-immediate.cfg is configured as follows.
In gNB configuration, you need to configure the parameter configured_grant. Within the configured_grant object, you need to specify CG type by the parameter configuration_type , assign physical resources by the parameters l_crb,l_crb_max,mcs and specify the PUSCH transmission interval by setting the parameter periodicity.
drb_nr_cg.cfg is configured as follows.
In drb configuration, you need to set need_sps to "ul" for the specific QCI you want to apply CG(configured grant). You can pick any QCI in this configuration to apply configured grant.
ue-nr-sa-cg.cfg is configured as shown below. (
Perform the Test
Run lte service on callbox and check 'cell' and 'cell phy' command to see if the cell is configured as you intended.
Power on UE.
Wait until the DUT complete the initial attach. You can confirm UL traffic scheduled by CG (Configured Grant) here as well. In case of PUSCH by configured grant, traffic is printed but mcs is not printed.
Log Analysis
Following is the log snapshot that are involved in Configured Grant
Make it sure that UE support configured grant as shown in the UE capability Information. UE should notify "configuredUL-GrantType2 supported" for gNB to apply the CG (configured grant) with type 2.
Once UE notify it support Configured Grant, then gNB configures Configured Grant. You see all the necessary information DMRS(cg-DMRS-Configuration) and UCI(uci-OnPUSCH Setup) in this setup. In this case, Grant Information (i.e, PUSCH Scheduling) is not configured because the information will be sent via the CG trigger (i.e, DCI).
After the RRC Reconfiguration with CG, first you see a DCI 0_1 (UL Grant) first and then you would see that PUSCH is transmitted at every 10ms without any DCI grant. This is because the periodicity in rrc is set to sym20x14 which corresponds to 20 slots.
RRC / NAS Signaling
RrcReconfiguration (SA)
: This is RrcReconfiguration containing CG configurations
{
message c1: rrcReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions rrcReconfiguration: {
radioBearerConfig {
srb-ToAddModList {
{
srb-Identity 2
}
},
drb-ToAddModList {
{
...
}
}
},
nonCriticalExtension {
masterCellGroup {
...
},
physicalCellGroupConfig {
...
},
spCellConfig {
spCellConfigDedicated {
uplinkConfig {
initialUplinkBWP {
configuredGrantConfig setup: {
cg-DMRS-Configuration {
dmrs-AdditionalPosition pos1,
transformPrecodingDisabled {
}
},
uci-OnPUSCH setup: semiStatic: {
betaOffsetACK-Index1 9,
betaOffsetACK-Index2 9,
betaOffsetACK-Index3 9,
betaOffsetCSI-Part1-Index1 7,
betaOffsetCSI-Part1-Index2 7,
betaOffsetCSI-Part2-Index1 7,
betaOffsetCSI-Part2-Index2 7
},
resourceAllocation resourceAllocationType1,
powerControlLoopToUse n0,
p0-PUSCH-Alpha 0,
nrofHARQ-Processes 2,
repK n1,
periodicity sym20x14,
rrc-ConfiguredUplinkGrant {
timeDomainOffset 8,
timeDomainAllocation 0,
frequencyDomainAllocation '000000000001011101'B,
antennaPort 0,
dmrs-SeqInitialization 0,
precodingAndNumberOfLayers 0,
srs-ResourceIndicator 0,
mcsAndTBS 10,
pathlossReferenceIndex 0
}
}
}
},
tag-Id 0
}
}
},
dedicatedNAS-MessageList {
...
}
}
}
}