Amarisoft

NR SA DL MIMO

The purpose of this tutorial is to show you how to configure and test  8x8 DL MIMO which requires 2 CW(Code words) and 8 Layers.

NOTE : Since DL MIMO upto 4x4 for FR1 and upto 2x2 MIMO for FR2 is supported by default in NR, I haven't created any tutorial for these default capability. Most of existing NR tutorials are already configured with one of the default DL MIMO (e.g, 2x2, 4x4). I am writing the MIMO tutorial mainly for 8x8 which are added recently.

 

Table of Contents

 

Test Setup

Since this test requires huge amount of computing resources, you need to use one of the high end Amarisoft product for it.

 

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 : 8x8 MIMO - 2 CW, 8 Layers

This test is to show how to configure and test 8x8 MIMO. The major configuration is about enabling 2 code words and setting proper PDSCH DMRS configuration to match the 8 DMRS ports.

 

Configuration

I used the gnb-nr-8layers.cfg on gNB

NR SA ULMIMO Test 1 Configuration 01

In gnb-nr-8layers.cfg , the number of DL antenna is set to 8 (N_ANTENNA_DL = 8) and 2 Code Word flag is enabled (ENABLE_2CW = 1).

NR SA ULMIMO Test 1 Configuration 02

Make it sure that you have enough number of SDR cards that can support 8 antenna and all of those necessary SDR cards are enabled.

NR SA ULMIMO Test 1 Configuration 03

Configure any bandwidth and frequency.(NOTE : Make it sure to check the band that you selected supports the bandwidth that you configured and make it sure that your DUT support the band and bandwidth that you configured)

Followings are main configuration for 8x8 MIMO. First 2 codewords are enabled (two_codewords: true), number of layer is set to 8 (n_layer : N_NR_ANTENNA_DL which is set to 8). In order to set 8 DMRS ports for PDSCH, n_dmrs_cdm_groups is set to 2, dmrs_ports is set to [0,1,2,3,4,5,6,7] and dmrs_len is set to 2.

NR SA ULMIMO Test 1 Configuration 04

 

Perform the Test

Check if the cell is configured as intended. The important thing in this test is Downlink configuration. Check out the number of DL ANT and NL(number of layers) with cell phy command.

Power on UE and establish call. Make it sure that you see ri = 8 which indicates that UE is expecting 8 layer PDSCH. gNB is supposed to transmit 8 layered PDSCH in response to this ri report.

 

Log Analysis

Sample Log

Now let's look into the log and see how the configuration is reflected in signaling message.

The first thing you may check is the maxLength of pdsch dmrs in RRC Setup. This is important because it is one of the key parameter to determine the type of dmrs antenna port table. (NOTE : You may refer to this note on how this parameter is related to the antenna port determination)

Next check if DUT (UE) has the capability of 8 layers( 8 x 8 MIMO) in UE capability Information message.

Now let's checkout if 2 cw(codeword) and corresponding antenna port is used. First check point for this is the informations in DCI. You see the two sents of mcs, ndi, rv_idx which indicates that two transport block (2 codewords) are scheduled. With antenna_ports field in the DCI, you can confirm on the number of antenna ports that are used for each layer.

The second check point for 8x8 MIMO is from the log print for PDSCH. You see nl=8 which indicates that number of layer (nl) is 8. And you see there are two sets of tb_len(transport block size in bytes , mod (modulation scheme), rv_idx(Redundancy Version), cr(Code Rate) for two codewords (CW0, CW1)

 

 

Test 2 : 8x8 MIMO - 2 CW, 8 Layers with PDSCH Precoding

This test is to show how to configure and test 8x8 MIMO with PDSCH Precoding. The basic configuration to setup 8x8 MIMO is same as in Test 1 (except the channel bandwidth) which is about enabling 2 code words and setting proper PDSCH DMRS configuration to match the 8 DMRS ports. The key differnece from Test 1 is that we will apply precoding for PDSCH in this test. The purpose of this precoding is to simulate MIMO channel environment. Since the test setup for this test is over RF cable connection with one to one mapping between TX and RX antenna (e.g, TX1 --> RX1, TX2 --> RX2 and so on), it can test for 8 layers but it will not accurately simulate MIMO radio channel where all TX antenna interfact with all RX antenna.

 

Configuration

I used the gnb-nr-8layers-precoding-20mhz.cfg on gNB

NR SA ULMIMO Test 1 Configuration 01

In gnb-nr-8layers-precoding-20mhz.cfg, the number of DL antenna is set to 8 (N_ANTENNA_DL = 8) and 2 Code Word flag is enabled (ENABLE_2CW = 1). In this test, I set the bandwidth to a narrow band (20 Mhz) in order not to introduce any other factors that may interfere the test (e.g, CPU overload).

NR SA ULMIMO Test 1 Configuration 02

Make it sure that you have enough number of SDR cards that can support 8 antenna and all of those necessary SDR cards are enabled.

NR SA ULMIMO Test 1 Configuration 03

Configure any bandwidth and frequency.(NOTE : Make it sure to check the band that you selected supports the bandwidth that you configured and make it sure that your DUT support the band and bandwidth that you configured).

Followings are main configuration for 8x8 MIMO. First 2 codewords are enabled (two_codewords: true), number of layer is set to 8 (n_layer : N_NR_ANTENNA_DL which is set to 8). In order to set 8 DMRS ports for PDSCH, n_dmrs_cdm_groups is set to 2, dmrs_ports is set to [0,1,2,3,4,5,6,7] and dmrs_len is set to 2.

The important configuration for this specific test is precoding_matrix part. I configured the precoding_matrix based on the basic 8x8 MIMO channel defined in 3GPP TS 36.101 annex B.1.

NR SA ULMIMO Test 1 Configuration 04

 

Perform the Test

Check if the cell is configured as intended. The important thing in this test is Downlink configuration. Check out the number of DL ANT and NL(number of layers) with cell phy command.

Power on UE and establish call. Make it sure that you see ri = 8 which indicates that UE is expecting 8 layer PDSCH. gNB is supposed to transmit 8 layered PDSCH in response to this ri report.

(NOTE : In previous test without precoding (i.e, without MIMO channel), we got almost no BLER at MCS around 27, but you would notice that we start having BLER at MCS 18 with MIMO channel. This result would vary depending on the DUT's decoding performance. Depending on the performance of your DUT, you may start having BLER at lower MCS or at higher MCS than this)

 

 

Test 3 : 8x8 MIMO - 2 CW, 8 Layers with channel Matrix

This test is to show how to configure and test 8x8 MIMO with channel matrix. The basic configuration to setup 8x8 MIMO is same as in Test 1 (except the channel bandwidth) which is about enabling 2 code words and setting proper PDSCH DMRS configuration to match the 8 DMRS ports. The key differnece from Test 1 is that we will apply precoding for PDSCH in this test. The purpose of this precoding is to simulate MIMO channel environment. Since the test setup for this test is over RF cable connection with one to one mapping between TX and RX antenna (e.g, TX1 --> RX1, TX2 --> RX2 and so on), it can test for 8 layers but it will not accurately simulate MIMO radio channel where all TX antenna interfact with all RX antenna.

NOTE : The purpose of this test is same as previous test (Test 2). The method of implementation is different. In previous test, I simulated the channel matrix using PDSCH precoding which applies only to PDSCH. In this test, I used channel simulator to apply channel matrix which applies to all the signals coming out of gNB (i.e, not only PDSCH but also other channels like PDCCH, SSB etc)

 

Configuration

I used the gnb-nr-8layers-chansim-precoding-20mhz.cfg on gNB

NR SA ULMIMO Test 1 Configuration 01

In gnb-nr-8layers-chansim-precoding-20mhz.cfg, the number of DL antenna is set to 8 (N_ANTENNA_DL = 8) and 2 Code Word flag is enabled (ENABLE_2CW = 1). In this test, I set the bandwidth to a narrow band (20 Mhz) in order not to introduce any other factors that may interfere the test (e.g, CPU overload).  Here I enabled channel sim flag (CHANNEL_SIM  = 1) and create/disable PDSCH precoding flag (PDSCH_PRECODE = 0).

NR SA ULMIMO Test 1 Configuration 02

Make it sure that you have enough number of SDR cards that can support 8 antenna and all of those necessary SDR cards are enabled.

NR SA ULMIMO Test 1 Configuration 03

The key setting in this test is the following. channel_dl (Downlink Channel Simulation) is enabled and channel_matrix is configured with a MIMO channel matrix as specified by TS 36.101 annex B.1

Configure any bandwidth and frequency.(NOTE : Make it sure to check the band that you selected supports the bandwidth that you configured and make it sure that your DUT support the band and bandwidth that you configured).

Followings are main configuration for 8x8 MIMO. First 2 codewords are enabled (two_codewords: true), number of layer is set to 8 (n_layer : N_NR_ANTENNA_DL which is set to 8). In order to set 8 DMRS ports for PDSCH, n_dmrs_cdm_groups is set to 2, dmrs_ports is set to [0,1,2,3,4,5,6,7] and dmrs_len is set to 2.

The important configuration for this specific test is precoding_matrix part. I configured the precoding_matrix based on the basic 8x8 MIMO channel defined in 3GPP TS 36.101 annex B.1.

NOTE : In this test, the precoding_matrix is not enabled. I configured this part to let you switch between channel sim and pdsch precoding as you like.

NR SA ULMIMO Test 1 Configuration 04

 

Perform the Test

Check if the cell is configured as intended. The important thing in this test is Downlink configuration. Check out the number of DL ANT and NL(number of layers) with cell phy command.

Power on UE and establish call. Make it sure that you see ri = 8 which indicates that UE is expecting 8 layer PDSCH. gNB is supposed to transmit 8 layered PDSCH in response to this ri report.

(NOTE : In Test 1 without precoding (i.e, without MIMO channel), we got almost no BLER at MCS around 27, but you would notice that we start having BLER at MCS 18 with MIMO channel. This result would vary depending on the DUT's decoding performance. Depending on the performance of your DUT, you may start having BLER at lower MCS or at higher MCS than this). This result is similar to the result of PDSCH Precoding (Test 2)

 

 

Test 4 : Channel Matrix Analysis :  8x8 MIMO - 2 CW, 8 Layers with PDSCH Precoding

This test is not really any new test. It is more of analysis for a previous test (Test 2). It is about the analysis of radio channel from each & every TX antenna to each & every RX antenna. I separated this analysis from the previous test since this is too lengthy and would look too complicated.

This is based on the log of Test 2 , captured by UEsim with the log option phy.signal = 1 which is to capture IQ data for every PDSCH..  

First pick an any PDSCH and check out overall constellation.

Then you may check out PDSCH Channel Impulse Response. (NOTE : Refer to this tutorial if you want to know how this plot is obtained ). The plot may look a little bit ambiguous since too many plots (128 plots in this case) are plotted alltogether. You can check only one of them and uncheck all the others if you want to check each plot one by one.

In the same way, you can check out magnitue and phase of each channel(NOTE : Refer to this tutorial if you want to know how this plot is obtained ). The plot may look a little bit ambiguous since too many plots (128 plots in this case) are plotted alltogether. You can check only one of them and uncheck all the others if you want to check each plot one by one.

What I am intended to show in this test is this plot. This shows the channel coefficent for each & every DMRS RE (Resource Element) of the PDSCH between every TX antenna and every RX antenna. From this plot, it is not clear on how a specific channel from a specific Tx to a specific Rx antenna look like.

To check out the channel coefficient from a specific TX antenna to a specific RX antenna, I checked(enabled) only one specific radio channel and disabled all the others. The DMRS symbol, the selected radio channel path and corresponding MIMO channel coeffient are shown as a diagram above the channel constellation (NOTE : this diagram is manually illustrated. It is not done by WebGUI).

 

 

Test 5 : Channel Matrix Analysis :  8x8 MIMO - 2 CW, 8 Layers with channel matrix

Like previous test, this is not really any new test. It is more of analysis for a previous test (Test 3). It is about the analysis of radio channel from each & every TX antenna to each & every RX antenna. I separated this analysis from the previous test since this is too lengthy and would look too complicated.

This is based on the log of Test 3 , captured by UEsim with the log option phy.signal = 1 which is to capture IQ data for every PDSCH..  

First pick an any PDSCH and check out overall constellation.

You can check out magnitue and phase of each channel (NOTE: Refer to this tutorial if you want to know how this plot is obtained ).. The plot may look a little bit ambiguous since too many plots (128 plots in this case) are plotted alltogether. You can check only one of them and uncheck all the others if you want to check each plot one by one.

In the same way, you may check out PDSCH Channel Impulse Response. (NOTE: Refer to this tutorial if you want to know how this plot is obtained ). The plot may look a little bit ambiguous since too many plots (128 plots in this case) are plotted alltogether. You can check only one of them and uncheck all the others if you want to check each plot one by one.

What I am intended to show in this test is this plot. This shows the channel coefficent for each & every DMRS RE (Resource Element) of the PDSCH between every TX antenna and every RX antenna. From this plot, it is not clear on how a specific channel from a specific Tx to a specific Rx antenna look like.

To check out the channel coefficient from a specific TX antenna to a specific RX antenna, I checked(enabled) only one specific radio channel and disabled all the others. The DMRS symbol, the selected radio channel path and corresponding MIMO channel coeffient are shown as a diagram above the channel constellation (NOTE : this diagram is manually illustrated. It is not done by WebGUI).