discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to convert dB to dBm and dBFS in GNURadio with USRP X310 and UBX


From: Dor Ratz
Subject: Re: How to convert dB to dBm and dBFS in GNURadio with USRP X310 and UBX-160
Date: Mon, 26 Jun 2023 21:43:21 +0300

Thanks Marcus.

If so, then I can calibrate USRP -> GNURadio by writing down the :

- Power of the signal in FFT in [dB] -> convert to [dBm] by comparing power when connected to a spectrum analyzer and changing Gain, frequency and so on and comparing both [dB] in FFT on GNURadio and power[dBm] in laboratory spectrum analyzer.
- Power of signal  [dBFS] by calculating from the time domain on QT GUI Sink as we said.

If I save the samples as int16 to File Sink, then when I open it with Python I should still see float values {-1,+1} and calculate power[dBFS] according to 20*log10(1)=0[dBFS]? Correct me if I'm wrong.

Am I missing something?

Thanks
Dor



‫בתאריך יום ב׳, 26 ביוני 2023 ב-21:02 מאת ‪Marcus D. Leech‬‏ <‪patchvonbraun@gmail.com‬‏>:‬
On 26/06/2023 13:58, Dor Ratz wrote:
Hey Steve and Marcus,

Thanks a lot. 

I'll try to do it.

Questions regarding dBFS, if you maybe have a clue 

  1. Does the GNURadio amplitude axis in QT GUI TIME DOMAIN are always float-point values in the range {-1.0,+1.0} for a received signal from USRP Source block?
There's a STRONG convention in Gnu Radio that signals are always in the range {-1.0,+1.0}, and drivers for SDR devices
  are generally designed to comply with this.

  1. If the answer to 1 is yes, then if I see amplitude = 0.5 , does it mean 20*log10(0.5)=(-6dBFS) ? is that correct?
Yes.

I've assumed it because:

The ADC of X310 has 14 bits. so the MSB values are 2^(14-1)=2^13 = + - 8192 (signed values).

Power[dBFS] = 20*log10(voltage_value_measured/8192)

The problem is that Output Type and Wire Format in USRP Source block are complex int16, so I'm not sure if the samples that are streaming from USRP into the host computer are 14 bits represented by 16 bits. And if yes, so do I need to change the above calculation?


ADC values are scaled into the wire-format.  But IN ADDITION, "raw" ADC values will almost never actually be seen in the
  signal flow once it gets to Gnu Radio, because they've been filtered by the DDC mechanism in the radio--this is true not
  just of USRPs, but most SDRs that have a bit of DSP between the ADC and the host interface.


Thanks
Dor


‫בתאריך יום א׳, 25 ביוני 2023 ב-4:11 מאת ‪Steve Hubbard‬‏ <‪stevezsuzska@iinet.net.au‬‏>:‬

Hi Dor,

I don't follow all your email but in general you can add the powers (magnitudes squared) of the FFT bins to give you the equivalent of power in the time domain (Parceval's theorem). Strictly speaking I recall there is a slight tweak to the DC bin value but I don't remember the detail. It goes without saying that baseband signals and FFT bin values are complex (IQ).

Keep in mind that when you feed a single frequency into an FFT, it may fall between 2 bins. In this case the peak will be lowered (scalloping loss). You might want to consider the use of a suitable window to compensate for this. The window will lower the total power, which you also need to allow for.

I think -15 dBm is the point beyond which saturation, distortion or worse might occur. The point at which you reach full scale on the ADC will depend on the front end gain setting. I don't know what this might be for your set up. At some gain settings compression might occur in the analogue front end before you reach full scale. Gain will also be frequency and temperature dependent to some degree. The UBX-160 datasheet lacks detail.

I have experience calibrating the X310 but with a different front end, using GNU radio to capture the baseband signal but Matlab to process it.

Regards,

Steve

On 24/6/23 21:45, Dor Ratz wrote:
Hello,

I wish to use USRPX310 with UBX-160 daughterboard as a calibrated spectrum analyzer to show the received signal power in units of [dBm] and [dBFS] for my setup.

I've read discussion and the GNURadio FAQ before so I know I must calibrate my setup because the values in GNURadio don't mean a thing.

So I wanted to ask if this procedure seems to make sense for you. I will  be glad to receive any suggestions.


I'm gonna connect my signal generator to spectrum analyzer to measure the cable loss.
After that, gonna connect it to the USRP to measure the power[dB] in order to understand what is the power[dBm] in GNURadio.
image.png
Is this table correct to calibrate and calculate the Power[dBm] on GNURadio in FFT?

Signal generator Power[dBm] Power [dBm] on spectrum anlayzer Power[dB] on GNURadio in FFT Power[dBm] on GNURadio in FFT
-60 -61 -66 -61
-65 -66 -71 -66
-70 -71 -76 -71
-75 -76 -81 -76
-80 -81 -86 -81
-85 -86 -91 -86
-90 -91 -96 -91

Procedure for wideband signal (not CW)
Right now the power[dB] must be calculated with the occupied FFT bins, let's assume this is the signal and the NFFT=128, so we can see that the signal occupies only 2/10 grids in the FFT so:

Power_of_signal[dB] = Peak_power[dB]+ 10*log(FFT_bins_with_signal) = (-15dB) + 10*log10((2/10)*(128)) = (-15dB) + (14) = (-1dB)

image.png

Convert to dBFS for the USRP X310

How do you propose to do it? 

The ADC of X310 has 14 bits. so the MSB values are 2^13 = + - 8192 (signed values).

Power[dBFS] = 20*log10(voltage_value_measured/8192)

Some questions:

  1. Does the gnuradio amplitude axis in QT GUI TIME DOMAIN are always float-point values in the range {-1.0,+1.0} for a received signal from USRP? 
  2. If the answer to 1 is yes, then if I see amplitude = 0.5 , does it mean 20*log10(0.5)=(-6dBFS) ? is that correct?
  3. I know that the maximum input power for the UBX is (-15 dBm), but what does it mean that (-15dBm) input power is 0[dBFS]? 
  4. Has anyone had experience with RX power calibration of USRPX310 with UBX-160?
    If I understand correctly, it is supporting the power API:

image.png





Thanks
Dor



reply via email to

[Prev in Thread] Current Thread [Next in Thread]