What is the noise floor of my SDR?

The SDR that I use next to my transceiver is the airspy/spyverter combination. It should, like any other receiver, have a certain noise floor (NF), but this figure was hard to find on the internet so that I decided to measure it myself. In this blog I will describe how I measured the NF, the end result is 132 dBm for a bandwidth of 500 Hz. That makes the combination equivalent to what you find for several other amateur radios. For this experiment I used: a VNA, a directional coupler, a dummy load and two fixed attenuators of 20dB and 30dB. The used VNA from metropwr has all required options that you need. The idea is that we insert a known signal (S) into the receiver, and that we measure with the SDR# software the signal to noise ratio (SNR) of this signal at a various frequencies in the HF domain. I simply picked them in the middle of each amateur band.

The metrovna has a rfgenerator program and the output level can be measured with the DET port. The rfgenerator signal level is approximately -8,5 dBm which is a bit too high for the SDR. The dynamic range of the SDR is determined by the number of bits of the ADC which is 12, you can count 6dB per bit, so the dynamic range is approximately 72 dB. The inserted signal S should be within the dynamic range relative to the noise floor of the receiver, with the 30 dB attenuation from the directional coupler and 20 dB or 30 dB from the fixed attenuators we can get down to more or less acceptable signals that can be inserted into the SDR as a reference signal. The AGC should be off, and the tracking filter should also be off in the SDR# software.

The inserted signal level is then known in dBm, you measure the peak dBFS (dB full spectrum) and the floor dBFS and the difference results in the measured signal to noise ratio (SNR) by the SDR. Subtract the measured SNR (in db) from the inserted signal and you get the noise floor of the receiver which holds for the bandwidth of the ADC. Actually, this is rather complicated with the airspy/spyverter combination, the full bandwidth is 8 MHz, but you normally decimate the full 8 MHz  64 times so that the effective bandwidth becomes 125kHz. In order to go to a noise floor spectral density you should therefore subtract 10 log10(125000) from Sdb – SNRdb, the units become in the end dBm/Hz.

Next you need to correct the spectral density to a dBm value characteristic for a 500 Hz bandwidth, this is how they are shown in the Sherwood table. To summarize the mathematics:

NFdb = Sdb – SNRdb – 10 log10(125000) + 10 log10(500)

where Sdb is derived from the rfgenerator of the VNA inserted into a 30dB directional coupler connected to a dummy load, the 30 dB directional coupler has a higher loss at low HF frequencies, but this is what you can measure with the DET port on the VNA. The output of the directional coupler is brought down with 20dB and 30dB fixed attenuators. In the end Sdb in the equation is what we insert as a known signal in the SDR, and we represent the noise floor for a 500 Hz wide signal. The outcome is:


The noise floor NFdb is displayed against the frequency in MHz, its average value is 130,5 dBm if we include all measured values, and 131,8 dBm when we leave out the frequencies below 5 MHz. So this means that the noise floor becomes to 132 dBm for a bandwidth of 500 Hz. The excess noise density relative to the room temperature thermal noise of 174dBm/Hz is 16,5 dB/Hz.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s