NR SA TimeDomainAllocationList
This tutorial is about configuration for PDSCH/PUSCH-TimeDomainAlloationList in RRC message. With default configuration, this IE is automatically configured by the callbox based on the TDD pattern specified in the configuration file. Even though it is possible to configure k1, k2 manually, it is not strongly recommended since it is challenging to configure it without colliding with internal auto-configuration algorithm. However, I will show you how to configure it manually anyway in Test2 for your reference
This tutorial is based on 2021-11-19 release. The autoconfiguration algorithm may evolve (change) in a future release. The tutorial will be updated if the algorithm changes
In this tutorial, it is assumed that you are faimiliar with basic operations of Amari Callbox operation. So in this tutorial, I will explain only about the configuration and analyzing the test result in the WebGUI log.
TimeDomainAllocationList are the list of parameters that configures k0, k1, k2. The simplified definition of k0, k1, k2 are as follows :
- k0 : The gap (in number of slots) between DCI and corresponding PDSCH transmission. k0 = 0 or omit indicates that PDSCH is transmitted in the same slot as DCI. (details)
- k1 : The gap (in number of slots) between PDSCH and the corresponding PUCCH (Ack/Nack) (details)
- k2 : The gap (in number of slots) between DCI(UL Grant) and corresponding PUSCH transmission (details)
- SLIV : Start and Length Indicator Value representing the starting symbol and number of symbols for PDSCH and PUSCH (details)
Table of Contents
- NR SA TimeDomainAllocationList
- Test Setup
- Key Configuration Parameters
- Configuration
- Perform the Test
- Test 1 : Using default configuration
- Test 2 : Manual configuration of k1,k2,msg3_k2
- Test 3 : Changing PDSCH mapping type(TypeB, n_symb)
- Test 4 : Changing PDSCH mapping type(TypeB) and SLIV
- Test 5 : Changing PUSCH mapping type(TypeB) and SLIV
- RRC / NAS Signaling
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
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- k1
- k2
- mapping_type
- start_symb
- n_symb
- msg3_k2
- tdd_ul_dl_config : In this link, you can get the descriptions for all the parameters listed below
- ref_subcarrier_spacing
- pattern1
- period
- dl_slots
- ul_slots
- dl_symbols
- ul_symbols
- pattern2
- period
- dl_slots
- ul_slots
- dl_symbols
- ul_symbols
Configuration
I have used gnb-sa-tdla.cfg which is copied and modified from gnb-sa.cfg. The details of specific parameters to be tested will be shown under each test.
I am using the default mme (mme-ims.cfg), ims (ims.default.cfg) config as shown below.
Perform the Test
Testing process is simple. You only have to do NR SA attach (See NR SA Attach tutorial if you are not familiar with the process). The important part is to check the log and verify if you get the SRS as configured.
Test 1 : Using default configuration
Set the configuration in gnb-sa-tdla.cfg as follows. This test uses the contents of gnb-sa.cfg as it is (without changing any contents in it).
In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration.
k1 in pdsch configuration is not set in this test meaning that k1 is automatically determined by gNB software.
Make it sure that you don't see any errors in enb screen. If your configuration has any problem, you may get pretty useful error message which may be helpful for troubleshooting.
You can confirm how TimeDomainAllocationList is configured in RRC from the log as shown below. Number of elements and SLIV is automatically determined and set by the gNB(Callbox). It is not advisable to change it manually. Usually two elements are configured, one with full slots and the other one with partial slot. MappingType can be changed by configuration file if want.
c
Since automatic configuration of k1 and k2 is affected by tdd-UL-DL-ConfigurationCommon, it would be good to check on this configuration as well. In this test, dl-UL-TransmissionPeriodicity is set to 5ms which correponds to 10 slots in case of subcarrier spacing 30Khz. The number of downlink slot(nrofDownlinkSlots) are set to 7, Number of Downlink Symbols(nrofDownlinkSymbols) are set to 6 and the number of uplink slot(nrofUplinkSlots) are set to 2, Number of Uplink Symbols(nrofUplinkSymbols) are set to 4
Now let's confirm on k1 configuration in RRC. you can check it with dl-DataToUL-ACK IE. The number of elements and each k1 values is automatically determined by Callbox(gNB) based on TDD UL/DL pattern. It is possible to manually configure it but manual configuration is not recommended because it is difficult to configure manually without violating the internal rules.
Test 2 : Manual configuration of k1,k2,msg3_k2
In this test, I will show you how configure k1,k2,msg3_k2 value manually. This is just for demonstation/tutorial purpose, it is not recommended to change these variables manually since it is tricky to set the proper values without violating the callbox's internal rule
Set the configuration in gnb-sa-tdla.cfg as follows.
In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration.
k1 in pdsch configuration is set manually, but this is just for information purpose. I do not enourage users to do this unless it is really required and user completes understand what to do. If you configure the k1 manually, you should configure k2, msg3_k2 accordingly as well.
Since you configured k1 manually, you should set k2 and msg3_k2 according to the k1 settings.
In this test, one of the default configuration (NR_TDD_CONFIG 2) is used. With this tdd pattern, the period is 5 ms which is 10 slots for the case of Subcarrier Spacing 30Khz, number of downlink slot is 7 and the number of downlink symbol is 6 and number of uplink slot is 2 and the number of uplink symbol is 4.
The configuration shown above can be illustrated as follows. It would be a good practice to convert the configuration into illustration.
Make it sure that you don't see any errors in enb screen. If your configuration has any problem, you may get pretty useful error message which may be helpful for troubleshooting.
You can confirm the configuration in SIB1 as below. You can confirm how TimeDomainAllocationList is configured in RRC from the log as shown below. Number of elements and SLIV is automatically determined and set by the gNB(Callbox). It is not advisable to change it manually. Usually two elements are configured, one with full slots and the other one with partial slot. MappingType can be changed by configuration file if want.
In this test, one of the default configuration (NR_TDD_CONFIG 2) is used. With this tdd pattern, the period is 5 ms which is 10 slots for the case of Subcarrier Spacing 30Khz, number of downlink slot is 7 and the number of downlink symbol is 6 and number of uplink slot is 2 and the number of uplink symbol is 4.
Now let's confirm on k1 configuration in RRC. you can check it with dl-DataToUL-ACK IE. The number of elements and each k1 values is automatically determined by Callbox(gNB) based on TDD UL/DL pattern. It is possible to manually configure it but manual configuration is not recommended because it is difficult to configure manually without violating the internal rules.
Then check on pusch-TimeDomainAllocationList. In this specific test case, three elements are configured. The first two are for the regular PUSCH and the last one is for msg3 PUSCH. You may notice that k2 value set in this RRC message is a little bit different from msg3_k2 you set in the configuration file. The reason is that the msg3 k2 set in the RRC message is not the same as msg3_k2 you set in the configuration file. The k2 value in the RRC is determined by msg3_k2 value and Delta value predefined in 3GPP in the formula rrc_k2 = msg3_k2 - Delta.
Test 3 : Changing PDSCH mapping type(TypeB, n_symb)
In this test, I will show you how to configure PDSCH mapping typeB. With the mapping type B, you can configure mini-slot (with the number of symbos 2,4,7).
Set the configuration in gnb-sa-tdla.cfg as follows.
In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration.
In this case, the SLIV value (derived from mapping type and the number of symbols) is configured manually in pdsch configuration parameter. You can change SLIV value by setting mapping_type,start_symb and n_symb in pdsch.
Make it sure that you don't see any errors in enb screen. If your configuration has any problem, you may get pretty useful error message which may be helpful for troubleshooting.
You can confirm the configuration in SIB1 as below. You can confirm how TimeDomainAllocationList is configured in RRC from the log as shown below. In this case, the number of SLIV(startSymbolAndLength), mappingType is configured as you set in the configuration file.
Test 4 : Changing PDSCH mapping type(TypeB) and SLIV
In this test, I will show you how to configure PDSCH mapping typeB. With the mapping type B and SLIV by setting the start symbol and length of the symbols.
Set the configuration in gnb-sa-tdla.cfg as follows.
In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration.
In this case, the SLIV value (derived from mapping type and the number of symbols) is configured manually in pdsch configuration parameter. You can change SLIV value by setting mapping_type,start_symb and n_symb in pdsch.
Make it sure that you don't see any errors in enb screen. If your configuration has any problem, you may get pretty useful error message which may be helpful for troubleshooting.
You can confirm the configuration in SIB1 as below. You can confirm how TimeDomainAllocationList is configured in RRC from the log as shown below. In this case, the number of SLIV(startSymbolAndLength), mappingType is configured as you set in the configuration file.
Test 5 : Changing PUSCH mapping type(TypeB) and SLIV
In this test, I will show you how to configure PUSCH mapping typeB. With the mapping type B and SLIV by setting the start symbol and length of the symbols.
Set the configuration in gnb-sa-tdla.cfg as follows.
In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration.
In this case, the SLIV value (derived from mapping type and the number of symbols) is configured manually in pusch configuration parameter. You can change SLIV value by setting mapping_type,start_symb and n_symb in pusch.
Make it sure that you don't see any errors in enb screen. If your configuration has any problem, you may get pretty useful error message which may be helpful for troubleshooting.
You can confirm the configuration in SIB1 as below. You can confirm how TimeDomainAllocationList is configured in RRC from the log as shown below. In this case, the number of TDAL elements are configured automatically by gNB, mappingType and SLIV(startSymbolAndLength) value is configured as you set in the configuration file.
RRC / NAS Signaling
SIB1 (SA)
: This is the SIB1 message sent by gNB to configure NR SA. (
{
message c1: systemInformationBlockType1: {
cellSelectionInfo {
...
},
cellAccessRelatedInfo {
...
connEstFailureControl {
...
},
servingCellConfigCommon {
downlinkConfigCommon {
frequencyInfoDL {
...
},
initialDownlinkBWP {
genericParameters {
locationAndBandwidth 13750,
subcarrierSpacing kHz30
},
pdcch-ConfigCommon setup: {
...
},
pdsch-ConfigCommon setup: {
pdsch-TimeDomainAllocationList {
{
mappingType typeA,
startSymbolAndLength 40
},
{
mappingType typeA,
startSymbolAndLength 57
}
}
}
},
bcch-Config {
...
},
pcch-Config {
...
}
},
uplinkConfigCommon {
frequencyInfoUL {
...
},
initialUplinkBWP {
genericParameters {
...
},
rach-ConfigCommon setup: {
...
},
pusch-ConfigCommon setup: {
pusch-TimeDomainAllocationList {
{
k2 7,
mappingType typeA,
startSymbolAndLength 27
},
{
k2 4,
mappingType typeA,
startSymbolAndLength 27
},
{
k2 5,
mappingType typeA,
startSymbolAndLength 27
}
},
p0-NominalWithGrant -76
},
pucch-ConfigCommon setup: {
...
}
},
timeAlignmentTimerCommon infinity
},
ssb-PositionsInBurst {
inOneGroup '80'H
},
ssb-PeriodicityServingCell ms20,
tdd-UL-DL-ConfigurationCommon {
referenceSubcarrierSpacing kHz30,
pattern1 {
dl-UL-TransmissionPeriodicity ms5,
nrofDownlinkSlots 7,
nrofDownlinkSymbols 6,
nrofUplinkSlots 2,
nrofUplinkSymbols 4
}
},
ss-PBCH-BlockPower -28
},
ue-TimersAndConstants {
...
}
}
}