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.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.pnghugh

        image.png


        image.png


        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.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
                        <https://files.ettus.com/manual/page_power.html> of
                        USRPX310 with UBX-160?
                        If I understand correctly, it is
                        supporting the power API:


                    image.png





                    Thanks
                    Dor





Reply via email to