1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-26 01:39:05 -05:00
sdrangel/plugins/channelrx/noisefigure
Jon Beniston e987deb8e0 Add support for linear interpolation, which can be more accurate if
there's a sharp knee in the curve.
Add support for displaying noise floor in results table.
2021-06-10 20:10:19 +01:00
..
CMakeLists.txt Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigure.cpp Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefigure.h Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefigurebaseband.cpp Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigurebaseband.h Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigurecontroldialog.cpp Report to GUI if failed to open VISA device 2021-06-09 17:23:37 +01:00
noisefigurecontroldialog.h Fix gcc warnings 2021-06-09 17:14:56 +01:00
noisefigurecontroldialog.ui Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigureenrdialog.cpp Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefigureenrdialog.h Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefigureenrdialog.ui Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefiguregui.cpp Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefiguregui.h Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefiguregui.ui Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefigureplugin.cpp Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigureplugin.h Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefiguresettings.cpp Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefiguresettings.h Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00
noisefiguresink.cpp Fix gcc warnings 2021-06-09 17:14:56 +01:00
noisefiguresink.h Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigurewebapiadapter.cpp Add noise figure plugin 2021-06-09 16:17:59 +01:00
noisefigurewebapiadapter.h Add noise figure plugin 2021-06-09 16:17:59 +01:00
readme.md Add support for linear interpolation, which can be more accurate if 2021-06-10 20:10:19 +01:00

Noise Figure plugin

Introduction

This plugin can be used to calculate the noise figure (NF) of a receiver (SDR as well as optionally one or more LNAs). It uses the Y-factor method and requires a calibrated noise source.

The noise figure of a receiver is important, as it determines the noise floor: Noise floor (dBm) = 10log10(1000kT)+NF+10log10(BW)

The noise figure will vary with frequency and gain settings. Typically, the noise figure will increase with frequency and decrease with gain. When measuring noise figure, AGC should be disabled.

Interface

Noise figure plugin GUI

1: Measurement frequency shift from center

Use the wheels to adjust the measurement frequency in Hz from the center frequency of reception. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arrows. Pressing shift simultaneously moves digit by 5 and pressing control moves it by 2.

Many SDRs have a large DC offset, which can significantly interfere with the NF measurement, so this setting should be used to move the measurement frequency away from the radio's center frequency or any other spurs.

2: Channel power

Average total power in dB relative to a +/- 1.0 amplitude signal received in the measurement band.

3: Level meter in dB

  • top bar (green): average value
  • bottom bar (blue green): instantaneous peak value
  • tip vertical bar (bright green): peak hold value

4: FFT size

Determines the size (number of points) of the FFT used to measure noise power. Only a single output bin of the FFT is used, which is selected by (1).

5: BW

Displays the measurement bandwidth in Hz as determined by the FFT size (4) and the sample rate.

6: FFTs to average

Determines the number of FFTs that are used to measure the average noise power. Using more FFTs can improve accuracy, at the expense of increased measurement time.

7: Frequency range

Specifies the frequencies to measure the noise figure at. This can be specified as a:

  • Range - Specify start frequency in MHz, stop frequency in MHz and the number of steps. 100, 200, 5, would measure at 100MHz, 125MHz, 150MHz, 175MHz and 200MHz.
  • Step - Specify start frequency in MHz, stop frequency in MHz and the step frequency in MHz. 100, 200, 25, would measure at 100MHz, 125MHz, 150MHz, 175MHz and 200MHz.
  • List - Specify a space or comma separated list of frequencies in MHz. "100 125 150 175 200", would measure at 100MHz, 125MHz, 150MHz, 175MHz and 200MHz.

8: Start/stop noise figure measurement

Starts or stops the noise figure measurement. When starting a new measurement, existing results are cleared.

9: Save results

Saves the results in the table to a .csv file.

10: Clear results

Clears the current results from the table and chart.

11: Open ENR dialog

Opens the ENR dialog to allow entering the Excess Noise Ratios (ENRs) for noise source. ENR specifies the difference in noise source power output in dB from when the source is powered off compared to when it is powered on. This typically varies with frequency, so values should be entered for each calibrated frequency. When a measurement is attempted at a frequency for which a value is not specified, an interpolated value will be used. You can choose between linear and barycentric rational interpolation, and the difference between the two is shown in the chart.

Noise figure ENR dialog

12: Open Noise Source Control dialog

Opens the noise source control dialog, to allow setting how the plugin turns the power to the noise source off and on. Two control methods are supported: A program or script can be run to turn the power on or off, or the VISA library (if installed) can be used to send SCPI commands to a programmable power supply or other test equipment. If a VISA library is not found, the VISA and SCPI fields will be disabled.

The delay setting determines how long after the noise source's power is turned on or off, before the noise figure measurement starts. This should be long enough to allow the noise source output to settle, but not too long so that tests over a large number of frequencies take a long time to run. The ideal value will vary with the noise source and power supply.

Noise source control dialog

13: Results Table

Displays measurement results.

  • Frequency - Frequency of the measurement in MHz.
  • NF - Calculated noise figure in dB.
  • T - Calculated noise temperature in Kelvin with a reference temperature of 290K.
  • Y - Measured Y factor in dB (difference in measured power when the noise source is on and off).
  • ENR - Excess noise factor of the noise source in dB.
  • Floor - Noise floor in dBm assuming 1Hz bandwidth at 290K.

Noise figure results table

14: Results Chart

Plots the results (NF, T or Y) vs frequency as a line chart.

15: Open reference data

A set of reference data in .csv format can be loaded for comparisons with the measurement results. The first column of the .csv file should contain frequency and the second the noise figure in dB. The first row should contain a header (E.g. "Frequency,NF" allthough the exact text is ignored).

SDRPlay Duo Noise figure comparison

16: Clear reference data

Clears the reference data, so the chart only plots the measured data.

Usage

A typical h/w setup for measuring the noise figure of a receiver is shown below:

H/W setup

A DC blocking capacitor at the output of the noise source for SDRs with a bias tee is recommended.

The noise source may be a device from the 346 family (E.g. Keysight 346B or NoiseCom NC346), but also can be a lower cost device that is supplied with accurate ENR calibration data. (Inaccurate ENR values can significantly impact the calculated NF). The ENR calibration data indicates the difference in power output when the noise source is powered off compared with when it is powered on. As the first setup step, this calibration data should be entered in to the ENR dialog (11).

Next, we need to setup how the SDRangel powers on and off the noise source. This is set in the Noise Source Control Dialog (12). For a 346 device, a programmable power supply outputting 28V would be used. Providing the VISA libraries are installed (see below), we can send SCPI commands to enable and disable the PSU's output. As an example, for a Rigol DP832, we can set the channel 1 output to be 28V and enable it, with:

:SOURCE1:VOLTage 28
:OUTPut:STATe CH1,ON

And then disable it with:

:OUTPut:STATe CH1,OFF

The final settings needed are the frequencies to measure the NF at. This can be set with (7), to step through a range or a list of specific point frequencies.

To start the measurement, press (8).

Examples

Here is a plot comparing the measured noise figure for tuner 1 of a SDRplay Duo, compared to the datasheet values.

SDRPlay Duo NF comparison

Here is a plot comparing measured values for a USRP B210 for the RF A RX2 port to measured values for the TX/RX port. As we can see, there is lower noise on the RX2 port:

B210 input NF comparison

Here is a plot comparing measured values for a Nooelec SMArTee XTR on its own, with a Nooelec Sawbird GOES LNA and with a Sawbird+ GOES LNA. As can be seen, a LNA makes a massive difference (12dB+) to the overall NF, and allows low cost SDRs to get similar NFs to more expensive devices, as the total NF is primarily determined by the LNA, if it has a decent amount of gain:

LNA comparison

VISA libraries

VISA libraries are available for Windows, Linux and MacOS from: