Amarisoft

NR SA PTRS - PDSCH

The purpose of this tutorial is to show you how to configure PTRS for PDSCH . PTRS stands for Phase Tracking Reference Signal is a kind of reference signal that is used for adjusting Phase Shift in harsh channel condition.

Table of Contents

Introduction

Phase Tracking Reference Signal (PTRS) is a crucial feature in 5G NR (New Radio) systems, specifically designed to enhance the robustness and reliability of downlink data transmission over the Physical Downlink Shared Channel (PDSCH) under challenging radio conditions. PTRS provides the means for user equipment (UE) to accurately track and compensate for phase noise and other impairments caused by high-frequency oscillators, Doppler effects, or rapid signal fading. Architecturally, PTRS is embedded within the PDSCH resource grid, with its configuration governed via RRC (Radio Resource Control) parameters, particularly within the DMRS-DownlinkConfig structure. By optimizing the time and frequency placement of these reference signals, PTRS enables the receiver to perform precise phase correction, which is essential for maintaining low error rates and ensuring high throughput in environments susceptible to phase instability. The configuration and efficient use of PTRS are significant for operators and engineers aiming to deliver high-capacity, low-latency services in scenarios such as massive MIMO deployments or mmWave communications, where phase noise and interference are more pronounced. As a result, understanding how to configure PTRS within the PDSCH framework is vital for maximizing system performance, interoperability, and user experience in advanced 5G networks.

Summary of the Tutorial

This tutorial outlines the setup and execution of a low-layer test focusing on the configuration and verification of PTRS (Phase Tracking Reference Signal) for SISO in a 5G NR Standalone (SA) environment. The procedure emphasizes configuration steps, test execution, and log analysis without reliance on advanced IP layer settings.

The methodology focuses on a step-by-step workflow: preparing configurations, aligning parameters between gNB and UE, running the test, and analyzing logs for correct PTRS operation. The entire process is designed for straightforward validation of PTRS in a SISO scenario, with key configuration parameters highlighted for clarity.

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.

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 : Basic Configuration

The purpose of this test is to provide an example of how to configure a basic PTRS configuration for SISO. I used SISO just because it is the default configuration of gnb-sa.cfg. MIMO configuration does not directly affect the operation of PTRS.

Configuration

I have used gnb-sa-pdsch-ptrs.cfg which is copied and modified from gnb-sa.cfg

NR SA DMRS PDSCH Config 01

I am using the default mme, ims config as shown below.

NR BWP Test1 Configuration 02

On UEsim side, I am using the default configuration ue-nr-sa.cfg without any modification (NOTE : If you are using a commercial UE as DUT, you can skip this part)

In gnb-sa-pdsch-ptrs.cfg , it is configured as follows. I set N_ANTENNA_DL to 1 meaning that I want to use SISO. You can use any kind of configuration as you like.

NR SA DMRS PDSCH Config 02

I am testing this in n78, but it doesn't matter whatever band you use. The special configuration that I did in nr_cell_list is force_dl_schedule : true. This is not mandatory configuration, it is only for easy verification. Since Downlink PTRS is transmitted in association with PDSCH, which mean that we need to schedule PDSCH to check out the downlink PTRS.  force_dl_schedule : true is to schedule PDSCH at every possible opportunities.

Following is the main configuration for this test which are to configure ptrs. As shown here, the parameter is ptrs object. Within the ptrs object, you can configure the detailed property of the ptrs. For the details for the meaning of frequency_density (Frequency Density), time_density (Time Density) and resource_element_offset (Resource Element Offset), you may refer to this note.

NR SA DMRS PDSCH Config 03

For UEsim configuration, the default configuration file ue-nr-sa.cfg is used without any modification (NOTE : If you are using your own DUT, not Amarisoft UEsim. You can skip this part)

Configure TDD and CELL_BANDWIDTH to match the configuration of gNB.

Configure the band, frequency (dl_nr_arfcn, ssb_nr_arfcn) and subcarrier spacing (subcarrier_spacing) to match the configuration of gNB (Callbox)

I just used ue_list parameter without any modification.

Perform the Test

First run the test and check on the number of physical antenna using cell phy command.

NR SA DMRS PDSCH Run 01

Then setup a call and make it sure that call connection is OK using t command.  

NR SA DMRS PDSCH Run 02

Log Analysis

Sample Log (UEsim)

Sample Log (OnePLUS)

First check RRC log and see if the configuration is done as you intended.

PTRS is configured by phaseTrackingRS IE in RRC Reconfiguration. You can compare the settings in the configuration file and phaseTrackingRS IE as shown below.

NR SA DMRS PDSCH Log 01

PTRS transmission gets enabled or disabled depending in MCS and the state of PTRS activation is printed in PDSCH log. If the PTRS is activated/transmitted, ptrs=1 is transmitted.

RRC / NAS Signaling

RrcReconfiguration(SA)

: This is the RrcSetup message sent by gNB  to configure PDSCH PTRS. (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: rrcReconfiguration: {

    rrc-TransactionIdentifier 0,

    criticalExtensions rrcReconfiguration: {

      nonCriticalExtension {

        masterCellGroup {

          cellGroupId 0,

          spCellConfig {

            spCellConfigDedicated {

              initialDownlinkBWP {

                pdsch-Config setup: {

                  dmrs-DownlinkForPDSCH-MappingTypeA setup: {

                    dmrs-AdditionalPosition pos0,

                    phaseTrackingRS setup: {

                      frequencyDensity {

                        10,

                        20

                      },

                      timeDensity {

                        5,

                        15,

                        20

                      },

                      resourceElementOffset offset10

                    }

                  },

                  resourceAllocation resourceAllocationType1,

                  rbg-Size config1,

                  mcs-Table qam256,

                  prb-BundlingType staticBundling: {

                    bundleSize wideband

                  }

                }

              },

              uplinkConfig {

                initialUplinkBWP {

                  pusch-Config setup: {

                    txConfig codebook,

                    resourceAllocation resourceAllocationType1,

                    mcs-Table qam256,

                    mcs-TableTransformPrecoder qam256,

                    codebookSubset nonCoherent,

                    maxRank 1

                  }

                }

              },

              pdsch-ServingCellConfig setup: {

                nrofHARQ-ProcessesForPDSCH n16,

                maxMIMO-Layers 1

              },

              tag-Id 0

            }

          }

        },

        dedicatedNAS-MessageList {

          '7E024E13893B017E0042010977000BF200F110800101D5916D6554070000F1100000641502010131020101210203005E01BE3408031F19F1031F11F2'H

        }

      }

    }

  }

}