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.
Table of Contents
- NR SA DL MIMO
- Test Setup
- Key Configuration Parameters
- Test 1 : 8x8 MIMO - 2 CW, 8 Layers
- Test 2 : 8x8 MIMO - 2 CW, 8 Layers with PDSCH Precoding
- Test 3 : 8x8 MIMO - 2 CW, 8 Layers with channel Matrix
- Test 4 : Channel Matrix Analysis : 8x8 MIMO - 2 CW, 8 Layers with PDSCH Precoding
- Test 5 : Channel Matrix Analysis : 8x8 MIMO - 2 CW, 8 Layers with channel matrix
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
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).
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.
Configure any bandwidth and frequency.(
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.
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
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. (
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
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).
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.
Configure any bandwidth and frequency.(
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.
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.
(
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.
Configuration
I used the gnb-nr-8layers-chansim-precoding-20mhz.cfg on gNB
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).
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.
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.(
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.
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.
(
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. (
In the same way, you can check out magnitue and phase of each channel(
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 (
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 (
In the same way, you may check out PDSCH Channel Impulse Response. (
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 (