Thanks a lot Marcus Dor
בתאריך יום ד׳, 5 ביולי 2023, 7:33 אחה״צ, מאת Marcus D. Leech < patchvonbr...@gmail.com>: > On 05/07/2023 01:18, Dor Ratz wrote: > > Hey Marcus > > In my case I want to calibrate usrp with gnuradio as spectrum analyzer for > the received signals. > > By measuring the correction factor between power(dBFS) in GRC to > power(dBm) in a laboratory spectrum analyzer of the received signal. > > I used signal generator and in addition I've used my unique transmitting > DUT. > > Do you think a noise source can be useful for my purpose? > > Thanks a lot > > Dor > > I guess if your spectrum analyser is calibrated, then a calibrated noise > source is redundant. > > > בתאריך יום ב׳, 3 ביולי 2023, 8:20 אחה״צ, מאת Marcus D. Leech < > patchvonbr...@gmail.com>: > >> On 03/07/2023 12:24, Dor Ratz wrote: >> >> How are you Marcus? >> >> First, thanks a lot. >> >> I've done measurements for a specific Gain, frequency, temperature. >> I've transmitted from a signal generator CW signal -> power splitter 1:2 >> to( spectrum analyzer and the USRP X310). >> I first transmitted a CW, and then I transmitted another my system unique >> signal. >> >> Can you please elaborate why you have suggested to use noise source? I'm >> familiar with using it for Noise Figure measurements of DUT by using Y >> Factor method, but I want to calibrate the power of signal between >> Power[dBFS] in GRC to Power[dBm] presented in spectrum analyzer. >> >> Because a noise source is often better-calibrated than a narrowband >> signal generator, and it kind of depends on what level >> of spectral detail you want calibrated. If you want calibration steps >> every few kHz, then a siggen may be a better fit. >> >> >> I used RMS for [linear voltage] and after that 20*log(linear voltage) to >> get Power[dBFS]. >> I understand that in the GNURadio flow graph everything is float-point >> values in the range {-1.0,+1.0} and so I calculated power[dBFS] according >> to 20*log10(1)=0[dBFS] >> >> I think the calibration was OK and I've found the correction factor >> between Power[dBFS] in GNURadio to the Power[dBm] received in RX ANT >> connector as was displayed in the spectrum analyzer at the same time by >> using power splitter. >> >> As for saving complex\short to File Sink I'll update. >> >> Thanks >> Dor >> >> [image: image.png] >> >> בתאריך יום ד׳, 28 ביוני 2023 ב-23:43 מאת Marcus D. Leech < >> patchvonbr...@gmail.com>: >> >>> On 28/06/2023 16:35, Dor Ratz wrote: >>> >>> Hey Marcus, >>> >>> Thanks. >>> >>> Let me see if I get it right. >>> >>> Please see the attached gnuradio setup below . >>> >>> 1. Does the USRP pass with Wire Format=Automatic the int16 samples to >>> the host computer? The ADC of X310 is 14 bits represented by 16 bits >>> samples, so the maximal possible value in time domain for a strong >>> enough signal is 2^(14-1)= (+-8192 ) ? >>> >>> NO! I've already said, the samples from the ADC are *scaled* before >>> they hit the wire, into the wire format, which in this case >>> is sc16. Further, the samples that "hit the wire" are *after* any >>> manipulations by the DDC. The values on the wire >>> can go from +/- 32767, although they rarely actually do. >>> >>> >>> 2. So if I open the file sink (which was saved as short = int16) with >>> python as int16 and look in python in the time domain: >>> >>> - In the time domain the maximal possible value is still (+-8192 ) ? >>> >>> Once the samples hit the GR flow-graph they are typically in >>> {-1.0,+1.0}, and then you can specify scaling coefficients when >>> you save them as complex int16. >>> >>> >>> - In FFT, can I calculate Power[dBFS] according to >>> 20*log10(8192)=0[dBFS]? >>> >>> I strongly suspect that you're trying to do power estimation based on an >>> empirical model, rather than by actual measurement >>> with actual calibration equipment present. I have already said this >>> is a bad approach, as have many others on this list. >>> >>> >>> >>> 3. If I want to open samples in QT GUI Sink as in the setup below, then >>> can I do it as below with IShort to Complex block with scale factor = 8192, >>> and then in the time domain in QT GUI Sink I will see : >>> >>> - In time domain - a float value with maximal possible value of >>> (-+1) ? because it was normalized by 8192. >>> - In FFT , can I calculate Power[dBFS] according to >>> 20*log10(1)=0[dBFS]? >>> >>> >>> Thanks you, >>> >>> Dor >>> >>> >>> [image: image.png]hugh >>> >>> [image: image.png] >>> >>> >>> [image: image.png] >>> >>> >>> [image: image.png] >>> >>> >>> בתאריך יום ב׳, 26 ביוני 2023 ב-21:46 מאת Marcus D. Leech < >>> patchvonbr...@gmail.com>: >>> >>>> On 26/06/2023 14:43, Dor Ratz wrote: >>>> >>>> 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. >>>> >>>> Int16 conversion in GR will use a conversion constant. Something like >>>> +/- 32767 >>>> >>>> >>>> Am I missing something? >>>> >>>> Thanks >>>> Dor >>>> >>>> >>>> >>>> בתאריך יום ב׳, 26 ביוני 2023 ב-21:02 מאת Marcus D. Leech < >>>> patchvonbr...@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 < >>>>> stevezsuz...@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 >>>>>> <https://lists.gnu.org/archive/html/discuss-gnuradio/2017-06/msg00214.html> >>>>>> and >>>>>> the GNURadio FAQ <https://wiki.gnuradio.org/index.php/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: 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: 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 >>>>>> <https://files.ettus.com/manual/page_power.html> of USRPX310 with >>>>>> UBX-160? >>>>>> If I understand correctly, it is supporting the power API: >>>>>> >>>>>> >>>>>> [image: image.png] >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Thanks >>>>>> Dor >>>>>> >>>>>> >>>>> >>>> >>> >> >