Amarisoft

SDR Check Up

The purpose of this tutorial is to show how to shift the unwanted DC-offset spike away from the important part of the spectrum (typically the signal band). Because the Analog Devices chipset used in the Amarisoft SDR card is based on a direct-conversion architecture, it inevitably produces a DC-offset spike that cannot be fully eliminated. Although you cannot completely remove this spike, the Amarisoft software (eNB/gNB/UEsim) allows you to move it to a non-critical frequency region so it does not interfere with the main signal.

Table of Contents

Introduction

Direct-conversion radio architectures, commonly employed in modern software-defined radio (SDR) systems such as those powered by Analog Devices chipsets, are renowned for their simplicity and high integration. However, a well-known limitation of this architecture is the presence of a DC-offset spike—an artifact caused by imperfections in the mixer and analog front-end circuitry. This spurious component appears at the center frequency (DC) and can significantly degrade the quality of received or transmitted signals, particularly in applications like LTE or 5G base stations and user equipment emulators where spectral purity is critical. To address this, the Amarisoft SDR platform—including eNB, gNB, and UE simulation software—incorporates configurable mechanisms that allow users to shift the DC-offset spike away from the signal band of interest. By leveraging these features, engineers and researchers can ensure that critical signal regions remain unaffected by hardware-induced artifacts, thus maintaining compliance with spectral emission requirements and improving overall system performance. Understanding the underlying causes, mitigation strategies, and practical configuration steps for managing DC-offset in SDR environments is essential for optimizing wireless system deployments and achieving reliable, high-quality communication links.

Summary of the Tutorial

This tutorial provides step-by-step procedures to shift DC Offset spikes for SDR 50 and SDR 100 devices. The tests demonstrate how to utilize configuration parameters, specifically dl_freq in the rf_ports block, to move DC offset artifacts outside of critical channel regions. The methodology is similar for both SDR 50 and SDR 100, but differences in hardware may result in variations in spike behavior.

The key command relevant to both tests is rf_ports and specifically its dl_freq parameter, which must be set with careful regard to the center frequency and in multiples of 15 kHz for proper operation. The procedures demonstrate practical strategies for minimizing the impact of DC offset artifacts in SDR-based test environments by configuration adjustments and spectrum visualization.

Test Setup

Test setup for this tutorial is as shown below.  I would suggest you to connect antenna (or RF cables) to as many sdr cards as possible as per your needs.

Key Command Line

Followings are the list of the important command used in this tutorial.

Test1 : Moving away DC Offset Spikes - SDR 50

This test will show you how to shift DC Offset spikes on SDR50. Both SDR 50 and SDR 100 use TRX chipset from Analog Device, but the chipset model on SDR 100 is more advanced than the one on SDR50. In addition, the board design of SDR 50 and SDR 100 differs. So the characteristics of the DC offset spikes and other parasitic spikes would be a little different between SDR 50 and SDR 100.

Configuration

In this tutorial, I used enb-tm-pdsch-dcoffset.cfg which is copied and modified from enb-tm-pdsch.cfg

In enb-tm-pdsch-dcoffset.cfg , select a specific test mode. It doesn't matter much which test mode you choose, so I just picket the default test mode as it is

The parameter involved in shifting the DC offset spike is dl_freq in rf_ports block. It specifies the absolute frequency in Mhz (not arfcn) which is the frequency of LO (Local Oscillator) of Analog Device TRX chip. If you set this frequency same as the cell frequency, you will see the dc offset spikes at the center of the channel band of the cell. If this is set differently from the cell frequency, you will see the dc offset shifted.

NOTE : The difference between dl_freq and the cell frequency(i.e, center frequency of the cell frequeny) should be multiples of 15 Khz (i.e, (dl_freq - Cell Frequency) should be N * 0.015 Mhz, where N is an integer)

Perform the test

Run the configuration file on Callbox and check the output of TX1 port to a spectrum analyzer. You can use any spectrum analyzer. In this tutorial, I used a sdr card and sdr_spectrum program on UEsim as a spectrum analyzer (NOTE : If you are not familiar with using Amarisoft SDR card as a spectrum analyzer, check out this tutorial ).

As shown below, usually you wouldn't see any dc offset spikes or any other artifact when tx_gain is high.

If you decrease tx_gain and set the tx power very low, you would see the DC Offset Spikes labeled as (A).

NOTE : You may see some other peaks (labeled as (B) and (C) as below) depending on situations. The size and position of these artifacts may vary depending on the specific SDR cards installed on your system.

By setting dl_freq in rf_ports, you would notice  the DC offset spike gets shifted. ( NOTE : dl_freq shift DC offset spike only, it does not affect other artifict spikes)

More practical use case of dl_freq is to set it to large enough so that the dc offset spike gets out side of critical region (i.e, channel band region).

Test2 : Moving away DC Offset Spikes - SDR 100

This test will show you how to shift DC Offset spikes on SDR100. Both SDR 50 and SDR 100 use TRX chipset from Analog Device, but the chipset model on SDR 100 is more advanced than the one on SDR50. In addition, the board design of SDR 50 and SDR 100 differs. So the characteristics of the DC offset spikes and other parasitic spikes would be a little different between SDR 50 and SDR 100.

Configuration

In this tutorial, I used enb-tm-pdsch-dcoffset.cfg which is copied and modified from enb-tm-pdsch.cfg

In enb-tm-pdsch-dcoffset.cfg , select a specific test mode. It doesn't matter much which test mode you choose, so I just picket the default test mode as it is

The parameter involved in shifting the DC offset spike is dl_freq in rf_ports block. It specifies the absolute frequency in Mhz (not arfcn) which is the frequency of LO (Local Oscillator) of Analog Device TRX chip. If you set this frequency same as the cell frequency, you will see the dc offset spikes at the center of the channel band of the cell. If this is set differently from the cell frequency, you will see the dc offset shifted.

NOTE : The difference between dl_freq and the cell frequency(i.e, center frequency of the cell frequeny) should be multiples of 15 Khz (i.e, (dl_freq - Cell Frequency) should be N * 0.015 Mhz, where N is an integer)

Perform the test

Run the configuration file on Callbox and check the output of TX1 port to a spectrum analyzer. You can use any spectrum analyzer. In this tutorial, I used a sdr card and sdr_spectrum program on UEsim as a spectrum analyzer (NOTE : If you are not familiar with using Amarisoft SDR card as a spectrum analyzer, check out this tutorial ).

If you decrease tx_gain without setting dl_freq, you would see the DC Offset Spikes labeled as (A) from a certain tx_gain value..

By setting dl_freq in rf_ports, you would notice  the DC offset spike gets shifted. A  practical use case of dl_freq is to set it to large enough so that the dc offset spike gets out side of critical region (i.e, channel band region). . (NOTE : dl_freq shift DC offset spike only, it does not affect other artifict spikes)

Now let's try the samething as above but with higher baseband sampling rate.

As shown below, the position and amplitue of the spike does not get affected by the sample rate. But if you increase the sample rate, you can visualize the spike farther away from the center frequency.

If you decrease tx_gain without setting dl_freq, you would see the DC Offset Spikes labeled as (A) from a certain tx_gain value..

By setting dl_freq in rf_ports, you would notice  the DC offset spike gets shifted. A  practical use case of dl_freq is to set it to large enough so that the dc offset spike gets out side of critical region (i.e, channel band region). . (NOTE : dl_freq shift DC offset spike only, it does not affect other artifict spikes)