Amarisoft

TDD Pattern

 

The purpose of this tutorial is to show you how to select a specific TDD UL/DL pattern from the predefined configuration and add your own configuration.  In this tutorial, I assume that you are familiar with basic operations of callbox and I would not explain the very basic operational procedure. I will just explain about the important configurations and how you can confirm on those configuration from the log.

Main point in this tutorial is about how to configure following configuration (i.e, tdd-UL-DL-configurationCommon parameters in 3GPP). The label in black is 3GPP terminology for each configuration and the one in red is corresponding Amarisoft parameters.

NR TDD Pattern 01

image source : tdd-UL-DL-configurationCommon in sharetechnote

 

NOTE :  For every tdd pattern test, I would suggest you to use later release of the gNB software (recommending the release that came out later than Jan 2022) and try not to manually specify k1,k2 value yourself. Let gNB scheduler automatically chose those values. If you want to know how to figure out how k1,k2 values and SLIV is applied by Amarisoft gNB scheduler, refer to this tutorial.

 

 

Table of Contents

 

 

Test Setup

Test setup for this tutorial is as shown below. (NOTE : Since TDD UL/DL configuration gets configured into SIB1 message and you may not need to get UE connected to the callbox if you just want to check the SIB1 as in this tutorial)

TestSetup Callbox UE 1sdr 01

 

 

Key Configuration Parameters

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

 

 

Test 1 :  Single Pattern from the default configuration

This is an example of a very simple and standard TDD pattern that is made up of single pattern. Around 70% allocated for downlink and around 20% allocated for uplink and a little bit less than 10% is configured for flexible slots (special slots).

 

Configuration

I used the configuration gnb-sa-tdd-pattern.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Config 01

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 1 which is one of default sample configuration provided by Amarisoft sample configuration.

NR TDD Test 1 Pattern Config 01

For example, if you select TDD_CONFIG == 1 as in this test,  the pattern as shown below is applied.  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 7 slots and 2 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 2 slots and 2 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Test 1 Pattern Config 02

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 1 RunAndCheck 02

 

 

Test 2 :  Dual Pattern from the default configuration

This is a little bit complicated configuration than the case of previous test. It is made up of two patterns. The first pattern takes up 60 % of the overall cycle and the second pattern takes up 40% of the overall cycle.

 

Configuration

I used the configuration gnb-sa-tdd-pattern.cfg  which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Config 01

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 4 which is one of default sample configuration provided by Amarisoft sample configuration.

NR TDD Test 2 Pattern Config 01

For example, if you select TDD_CONFIG == 4 as in this test,  the pattern as shown below is applied.  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 5 ms(10 slots), pattern1 takes up 3ms(6 slots) and pattern2 takes up 2ms(4 slots). For pattern 1, 3 slots and 6 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 2 slots and 4 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively. For pattern 2, 4 slots  symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. No slots and symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Test 2 Pattern Config 02

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 and pattern 2 (meaning dual pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 2 RunAndCheck 02

 

 

Test 3 :  Define your own configuration

This test is just to show you how to define your own TDD DL/UL ConfigCommon. There are roughly two different ways to do it.

I am using the method ii) in this section

 

Configuration

I used the configuration gnb-sa-tdd-pattern.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Test 3 Pattern Config 01

Define your own configuration as follows (this is not the one in the default configuration).  In this configuration, the cycle length is 2.5ms which is 5 slots in case of Subcarrier spacing 30Khz. Out of the 5 slots, 3 slots  are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 1 slots and 10 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Test 3 Pattern Config 02

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 3 RunAndCheck 02

 

 

Test 4 :  High UL throughput with Default CSI Configuration

This test is just to show you how to define your own TDD DL/UL ConfigCommon. There are roughly two different ways to do it.

I am using the method ii) in this section

 

Configuration

I used the configuration gnb-sa-ul-highTp-defCSI.cfg which is copied from gnb-sa.cfg  and modified for this tutorial.

NR TDD Pattern Test 4 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Test 3 Pattern Config 01

Define your own configuration as follows (this is not the one in the default configuration).  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 3 slots and 2 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 6 slots and 10 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Test 4 Pattern Config 02

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below. (NOTE : I have tried this configuration with a commercial UE (OnePLUS 8T) and it successfully attached to gNB and Internet Speedtest was running OK.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 4 RunAndCheck 02

 

 

Test 5 :  High UL throughput with Modified CSI Configuration

This test is just to show you how to define your own TDD DL/UL ConfigCommon. There are roughly two different ways to do it.

I am using the method ii) in this section

 

NOTE : : In this test, I am just showing how to change CSI RS position so that it does not cause any collision error between NZP CSI and UL slot.. I haven't checked on any other side effect by the changed CSI RS (e.g, causing poorer dl performance like reporting lower RI).

 

Configuration

I used the configuration gnb-sa-ul-highTp-modCSI.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Test 5 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Test 3 Pattern Config 01

Define your own configuration as follows (this is not the one in the default configuration).  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 1 slots and 10 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 8 slots and 2 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

I configured as many as slots for UL that does not require CSI-RS configuration in the default sample scenario gnb-sa.cfg. In gnb-sa.cfg, slot 0 is reserved for DL to transmit SSB and CSI-RS are configured to be transmitted in slot 1 and 2 which requires 3DL slots in total. So in the configuration for this test, I will change CSI-RS configuration in such a way that they are transmitted with the first 20 symbols without overlapping with SSB.

NR TDD Pattern Test 5 Config 03

 

I changed slot and symbol position of CSI-RS so that they are all positioned with 20 symbols.  

The parameters to be noted in this example are as follows : (NOTE : the detailed meaning of each of these parameter in terms of 3GPP, check out this note)

NR TDD Pattern Test 5 Config 04

NR TDD Pattern Test 5 Config 05

NR TDD Pattern Test 5 Config 06

NR TDD Pattern Test 5 Config 07

NR TDD Pattern Test 5 Config 08

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below. (NOTE : I have tried this configuration with a commercial UE (OnePLUS 8T) but somehow the attach failed. UE does not send SR to get UL grant to send RrcConnectionSetupComplete. But this configuration worked OK with Amari UEsim and it completed the attach without any problem).

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Pattern Test 5 Run 02

 

 

Test 6 :  Low Latency (TDD Pattern = 1.0 ms)

This is not a new configuration. It is default configuration in the installation package. I am just trying to show you the logics behind this low latency configuration. It would help you with applying the logic to create your own configuration when you need.

Some important points to pay attention to this configuration are as follows.

NOTE : In addition, refer to general guidelines for low latency configuration mentioned in this tip

 

Configuration

I used the configuration gnb-sa-tdd-low-latency.cfg which is included in the installation package. (NOTE : In late releases, gnb-sa-tdd-low-latency.cfg is provided as a default example in installation package. so you may use the sample file as it is)

NR TDD Pattern Test 6 Config 01

In the configuration file, disable SRS.

NR TDD Pattern Test 6 Config 02

Since the whole perioid is only 1 ms which is 2 slots in case of 30Khz SCS and 1 full slot is allocated for downlink, Uplink is max 1 slot. But in order to allow some gap between downlink to uplink, I set less than 1 slot is assigned for UL.

NR TDD Pattern Test 6 Config 03

Reduce sr_period.  This is to let UE not wait too long to get UL grant. If UL grant gets delayed, overall latency would get longer.

NR TDD Pattern Test 6 Config 04

PRACH Configuration is chosen in such a way that RO(RACH Occassion) is only on UL symbols. (NOTE : Theoretically UE may try RACH on flexible symbol in TDD UL/DL config, but I noticed that some UE does not try RACHing at the flexible symbols. So I changed RACH config index so that the allowed RO gets aligned with UL symbols configured in TDD Pattern)

NR TDD Pattern Test 6 Config 05

Reduce k_min value. This setting reduce the min value for k1 and k2 so that gNB can get UE response more quickly and grant ul more quicaly. This would required high CPU performance and you'd better check 't cpu' and real time condition maintains on your setup.

NR TDD Pattern Test 6 Config 06

Put CSI RS for CSI Report at the first slot (slotoffset = 0) of each periods. SSB bitmap is '10000000' which occupies the symbol [2,3,4,5]. So the CSI RS is placed at symbol 6 so that it does not overlap SSB symbols. (NOTE : If you use the sample configuration gnb-sa-tdd-low-latency.cfg provided  in installation package in late release, you don't have to worry about this since resource_auto is used)

The parameters to be noted in this example are as follows : (NOTE : the detailed meaning of each of these parameter in terms of 3GPP, check out this note)

NR TDD Pattern Test 6 Config 07

NR TDD Pattern Test 6 Config 08

In the same logic, place the csi_im_resource and zp_csi_rs_resource at the slot 0 (slotoffset 0) of the period and the symbol should not overap with SSB symbol and nzp_csi_rs_resource.

NR TDD Pattern Test 6 Config 09

Allocate PUSCH to fill up all the symbols assigned in TDD pattern. If you reduce the number of UL symbols in TDD pattern or enable SRS, you need to change start_symb and n_symb accordinly.

NR TDD Pattern Test 6 Config 10

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below. (NOTE : I have tried this with both Amari UEsim and a Commercial UE(OnePLUS). Both worked OK.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Pattern Test 6 Run 02

 

 

Test 7 :  Max DL Allocation

This test is just to show you how to allocate time domain resources for DL as much as possible.

NOTE : Theoretically it should lead to the increased DL throughput. However in practice it may not necessarily lead to the increased throughput. Depending on UE implementation, you may experience poorer throughput if the UE cannot handle the increased DL resources properly. I tried the same configuration with one commercial UE and Amari UEsim. I see the increased throughput with Amari UEsim but the throughput got worse with the commercial UE that I used.

NOTE :: You should use Callbox software that is released after 2022-04-06 for this configuration to work properly.

 

Configuration

I used the configuration gnb-sa-tdd-pattern-maxDL.cfg which is copied from gnb-sa.cfg  and modified for this tutorial.

NR TDD Pattern Test 7 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Pattern Test 7 Config 02

Define your own configuration as follows (this is not the one in the default configuration).  In this configuration, the cycle length is 2.5ms which is 5 slots in case of Subcarrier spacing 30Khz. Out of the 5 slots, 4 slots and 6 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. Only 6 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Pattern Test 7 Config 03

NR TDD Pattern Test 7 Config 04

Use pucch0 instead of pucch1 because it would reduce the difficulties associated with resource allocation for PUCCH.

NR TDD Pattern Test 7 Config 05

Since I assigned only 6 symbols at the end of the slot for PUSCH, I explicitely allocated all the 6 symbols for PUSCH. If you change UL slot/symbols in TDD pattern, change this part accordingly. I also removed the additional dmrs symbols to reduce the overhead. This removal would be OK since PUSCH is not so long (only 6 symbols). (NOTE : When PUSCH is symbol length is long (like full slot), removing dmrs_add_pos is not recommended since it may increase the chance of PUSCH BLER)

NR TDD Pattern Test 7 Config 06

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below. (NOTE : I have tried this with both Amari UEsim and a Commercial UE. Both worked OK, but throughput performance was better with UEsim).

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 7 RunAndCheck 02

 

 

Test 8 :  Single Pattern with Auto CSI Configuration

From 2022-06-17, Auto CSI configuration is supported to simplify the CSI configuration. With this feature, you may just change tdd pattern without modifying CSI configuration manually. gNB software configures CSI automatically to be compatible with the tdd configuration you configured. (For further details of Auto CSI configuration itself, please refer to Reference Configuration : Auto CSI Configuration )

NOTE : In many of the typical TDD pattern, the default auto csi configuration would properly configure the CSI RS, but sometimes you may need to add some additional configurations to avoid any possible limitation (for example, in case when the number of DL slots is not enough to configure the necessary TRS).

 

Configuration

I used the configuration gnb-sa-autoCSI.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Test 8 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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.

NR TDD Pattern Test 8 Config 02

For example, if you select TDD_CONFIG == 2 as in this test,  the pattern as shown below is applied.  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 7 slots and 6 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 2 slots and 4 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Pattern Test 8 Config 03

In auto CSI configuration, the whole csi-rs configuration is as simple as shown below. All the remaining details are configured automatically by gNB software.

NR TDD Pattern Test 8 Config 04

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 8 RunAndCheck 02

 

 

Test 9 :  High UL throughput with "Auto CSI without TRS"

From 2022-06-17, Auto CSI configuration is supported to simplify the CSI configuration. With this feature, you may just change tdd pattern without modifying CSI configuration manually. gNB software configures CSI automatically to be compatible with the tdd configuration you configured. (For further details of Auto CSI configuration itself, please refer to Reference Configuration : Auto CSI Configuration )

In many of the typical TDD pattern, the default auto csi configuration would properly configure the CSI RS, but sometimes you may need to add some additional configurations to avoid any possible limitation (for example, in case when the number of DL slots is not enough to configure the necessary TRS).

This test is an example where you need to add some additional configuration to the default auto csi configuration. If you apply the tdd pattern in this example with the default auto csi configuration, you would get an error about TRS configuration setup. To remove the error, I disabled TRS transmission.

 

Configuration

I used the configuration gnb-sa-ul-highTp-autoCSI-noTRS.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Test 9 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Pattern Test 9 Config 02

For example, if you select TDD_CONFIG == 5 as in this test,  the pattern as shown below is applied.  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 1 slots and 10 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 8 slots and 2 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Pattern Test 9 Config 03

In this test, I set trs_presence: false which disables trs transmission (i.e, gNB does not configure CSI-RS for TRS) as shown below.

NR TDD Pattern Test 9 Config 04

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 9 RunAndCheck 02

 

 

Test 10 :  High UL throughput with "Auto CSI with TRS"

From 2022-06-17, Auto CSI configuration is supported to simplify the CSI configuration. With this feature, you may just change tdd pattern without modifying CSI configuration manually. gNB software configures CSI automatically to be compatible with the tdd configuration you configured. (For further details of Auto CSI configuration itself, please refer to Reference Configuration : Auto CSI Configuration )

In many of the typical TDD pattern, the default auto csi configuration would properly configure the CSI RS, but sometimes you may need to add some additional configurations to avoid any possible limitation (for example, in case when the number of DL slots is not enough to configure the necessary TRS).

This test is an example where you need to add some additional configuration to the default auto csi configuration. If you apply the tdd pattern in this example with the default auto csi configuration, you would get an error about TRS configuration setup. To remove the error, I added the additional configurations.

 

Configuration

I used the configuration gnb-sa-ul-highTp-autoCSI-TRSonSSB.cfg which is copied from gnb-sa.cfg and modified for this tutorial.

NR TDD Pattern Test 10 Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG. In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  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 5 which is not in the list of default sample configuration provided by Amarisoft sample configuration.

(NOTE : The number of default list of NR_TDD_CONFIG in Amarisoft sample configuration may vary depending on the lte software version. You may use whatever number is not in the default list if you want to create a new pattern without modifying existing configuration)

NR TDD Pattern Test 9 Config 02

For example, if you select TDD_CONFIG == 5 as in this test,  the pattern as shown below is applied.  In this configuration, the cycle length is 5ms which is 10 slots in case of Subcarrier spacing 30Khz. Out of the 10 slots, 1 slots and 10 OFDM symbols are allocated for downlink by the parameter dl_slots and dl_symbols respectively. 8 slots and 2 OFDM symbols are allocated for uplink by the parameter ul_slots and ul_symbols respectively.

NR TDD Pattern Test 9 Config 03

In this test, I set the following two parameters which enable trs transmission even on ssb and sib1 slots to secure the two consecutive slots which is required for TRS transmission in FR1.

NR TDD Pattern Test 10 Config 04

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

NR TDD Test 9 RunAndCheck 02

 

 

Test 11 :  Low Latency (TDD Pattern = 0.5 ms)

This is not a new configuration. It is default configuration in the installation package. I am just trying to show you the logics behind this low latency configuration. It would help you with applying the logic to create your own configuration when you need.

Some important points to pay attention to this configuration are as follows.

NOTE : In addition, refer to general guidelines for low latency configuration mentioned in this tip

 

Configuration

I used the configuration gnb-sa-tdd-low-latency_0_5.cfg which is copied and modified from gnb-sa-tdd-low-latency.cfg

NR TDD Pattern Test 6 Config 01

In the configuration file, disable SRS.

NR TDD Pattern Test 6 Config 02

Since the whole perioid is only 1 ms which is 2 slots in case of 30Khz SCS and a partial slot(9 symbols) is allocated for downlink, Uplink is also partial slot which is 4 symbols in this case.

NR TDD Pattern Test 6 Config 03

Reduce sr_period.  This is to let UE not wait too long to get UL grant. If UL grant gets delayed, overall latency would get longer.

NR TDD Pattern Test 6 Config 04

PRACH Configuration is chosen in such a way that RO(RACH Occassion) is only on UL symbols. (NOTE : Theoretically UE may try RACH on flexible symbol in TDD UL/DL config, but I noticed that some UE does not try RACHing at the flexible symbols. So I changed RACH config index so that the allowed RO gets aligned with UL symbols configured in TDD Pattern)

NR TDD Pattern Test 6 Config 05

Reduce k_min value. This setting reduce the min value for k1 and k2 so that gNB can get UE response more quickly and grant ul more quicaly. This would required high CPU performance and you'd better check 't cpu' and real time condition maintains on your setup.

NR TDD Pattern Test 6 Config 06

Put CSI RS for CSI Report at the first slot (slotoffset = 0) of each periods. SSB bitmap is '10000000' which occupies the symbol [2,3,4,5]. So the CSI RS is placed at symbol 6 so that it does not overlap SSB symbols. (NOTE : If you use the sample configuration gnb-sa-tdd-low-latency.cfg provided  in installation package in late release, you don't have to worry about this since resource_auto is used)

The parameters to be noted in this example are as follows : (NOTE : the detailed meaning of each of these parameter in terms of 3GPP, check out this note)

NR TDD Pattern Test 6 Config 07

NR TDD Pattern Test 6 Config 08

In the same logic, place the csi_im_resource and zp_csi_rs_resource at the slot 0 (slotoffset 0) of the period and the symbol should not overap with SSB symbol and nzp_csi_rs_resource.

NR TDD Pattern Test 6 Config 09

Allocate PUSCH to fill up all the symbols assigned in TDD pattern. If you reduce the number of UL symbols in TDD pattern or enable SRS, you need to change start_symb and n_symb accordinly.

NR TDD Pattern Test 6 Config 10

 

Run and Check

Restart the lte service and launch the screen. Switch to (enb) and make it sure that you don't get any error message. If you use the configuration predefined in the configuration file, you may not get any error since they are already tested but if you modify it or define a new configuration, you may see some errors described in Common Errors section.

NR TDD Test 1 RunAndCheck 01

Collect the log with bcch and check the contents of SIB1. See if your configuration is properly relected into SIB1 as shown below. (NOTE : I have tried this with both Amari UEsim and a Commercial UE(OnePLUS). Both worked OK.

See if your configuration is properly relected into SIB1 as shown below. You see tdd-UL-DL-ConfigurationCommon carries pattern1 only (meaning single pattern). dl-UL-TransmissionPeriodicity corresponds to the parameter period, nrofDownlinkSlots corresponds to dl_slots. nrofDownlinksymbols corresponds to dl_symbols. nrofUplinkSlots and nrofUplinkSymbols corresponds to ul_slots and ul_symbols respectively.

SampleLog

NR TDD Pattern Test 6 Run 02

 

 

RRC / NAS Signaling

 

SIB1 (SA)

: This is the SIB1 message sent by gNB  to configure NR SA. (NOTE : You would see some IEs that has a specific assigned vale here, but consider it as just an example value. Those values should vary depending on test requirement)

{

  message c1: systemInformationBlockType1: {

    ...

    servingCellConfigCommon {

      ...

      tdd-UL-DL-ConfigurationCommon {

        referenceSubcarrierSpacing kHz30,

        pattern1 {

          dl-UL-TransmissionPeriodicity ms5,

          nrofDownlinkSlots 7,

          nrofDownlinkSymbols 6,

          nrofUplinkSlots 2,

          nrofUplinkSymbols 4

        }

      },

 

}

 

 

Common Errors

 

Case 1 : Collision between Uplink CSI-RS and NZP CSI-RS

This would be one of the most common error you may get when you try to apply your own configuration. NZP CSI-RS is a type of downlink reference signal. It cannot be transmitted in uplink slot. It mean your TDD UL/DL Config assigns some UL slot which is same as the slot where CSI-RS is transmitted.

NR TDD Pattern Error Case 01 01

 

You can fix this problem in a few different ways.

Method 1 : The simplest way would be to comment out following lines. With this, CSI-RS configuration would be omitted. So it would not collide with any UL slot in your configuration. This is the recommended way for most of the cases

NR TDD Pattern Error Case 01 02

NOTE :  This method just disables CSI RS for TRS only, it does not disable CSI RS for measurement report which is transmitted in the second slot.  With the current setting in most of default gnb configuration, you may need at least 24 symbols (1 slot and 10 symbols) for DL even when you disables TRS.  If you want to reduce DL slots/symbols more and assign more UL slot/symbols, you need to change CSI RS location as in Method 2.

Method 2 : If you want to transmit TRS CSI-RS with your own configuration, change following parameter for all the csi_rs configuration in such a way that those reference signal is transmitted via DL slots in your configuration

NR TDD Pattern Error Case 01 03

 

 

Tips

 

Guide line for Low Latency

We configure Low Latency mainly adjusting TDD UL/DL Configuration Common (TDD Pattern) to achieve the low latency (NOTE : If you want to achieve extremly low latency (e.g, for URLLC use cas), you may need to use miniSlot / Self Contained Slot which implement short DL/UL SLIV, k1 = 0. k2=0, k1=0 are not supported now). So the guidline described here is mainly related to achieving low latency with TDD Pattern. (NOTE : You would need to consider all of these factors. Just setting the TDD Pattern for low latency, you may come across various errors. )

 

PUSCH Scheduling in special slot

In default configuration, PUSCH is not scheduled in special slot (i.e, the slot in which both DL and UL symbols are configured). The symbols in this slot is reserved for special uplink signal like SRS.

If you want to schedule PUSCH even for those special slots, you need to configure the parameter : partial_slots