On 06/14/2016 09:39 PM, Richard Bell wrote:
I think I have a misunderstanding about the DSP tune, because it's not behaving the way I expect it to. Let me describe my experiment. Suppose I want to hop between two frequencies, 900e6 and 901e6, using a sample rate of 500e3 and a usrp as a sink (transmitter).

1) If I use set_center_freq(900e6) and set_center_freq(901e6) in a loop to hop between the two frequencies, it works just as you would expect. I verified this by using a second USRP as a spectrum analyzer.

2) Now, If I use the following to make the same hop, I see a strong static tone coming out at 900e6, and a small baby tone popping up and down at 901e6. The baby tones are about 40 dB down from the static tone. There are also even smaller image tones popping up and down at the hop rate around 901e6.

tr = uhd.tune_request(900e6, 1e6)
successful_hop = tb.usrp.set_center_freq(tr)

and then on the next iteration

tr = uhd.tune_request(900e6, 0)
successful_hop = tb.usrp.set_center_freq(tr)

I'm expecting to see the exact same behavior as I did when using set_center_freq in the first approach above, but I'm not. Am I understanding the dsp_tune incorrectly?

Rich

You should spend some time looking through this:

http://files.ettus.com/manual/structuhd_1_1tune__request__t.html

In the example, you gave the Fc is still 900Mhz, but with the FPGA providing an offset tuning. That's not what you want.

What you want is to set the target frequency to 901MHz, use POLICY_NONE on the RF side, and provide a 1e6 DSP_FREQ, with POLICY_MANUAL.

POLICY_NONE means that it won't touch the already-tuned analog RF frequency.



On Tue, Jun 14, 2016 at 1:20 PM, Marcus D. Leech <[email protected] <mailto:[email protected]>> wrote:

    On 06/14/2016 03:13 PM, Richard Bell wrote:
    Martin,

    If I create a USRP object

    self.usrp = uhd.usrp_sink(device_addr=options.args,
    stream_args=uhd.stream_args('fc32'))

    and initialize the USRP center frequency to 900e6

    self.usrp.set_center_freq(900e6)

    and then do

    tr = uhd.tune_request(901e6, 1e3)

    followed by

    uhd.usrp_sink.get_center_freq()

    it returns the original center freq of 900e6. My question is what
    is the tune_request doing?

    Rich
    uhd.tune_request() is just a constructor for a tune_request_t
    object, it doesn't actually touch the hardware at all.  So, you
    take that tr, and
      hand it to a uhd.usrp_sink.set_center_freq(tr).




    On Mon, Jun 13, 2016 at 4:47 PM, Richard Bell
    <[email protected] <mailto:[email protected]>> wrote:

        I can call the C++ functions from Python? Why is there a
        separate python API, I'm confused.

        Lets say I set an initial center frequency of 900 MHz to
        start the script off. You're saying that if the next
        frequency I want to hop to is within the ADC sampling rate,
        which in my case for the N210 is 100 MHz, I should manually
        tell the USRP to set the DSP_FREQ and leave the RF_FREQ alone
        for the fastest hop, and that the USRP automatic settings are
        not smart enough to figure this out?

        If the above is true, it seems I should do something like this:
        1) Ask the USRP what the current RF_FREQ is
        2) Find the difference between RF_FREQ and the new center freq
        3) If the difference is greater then 100 MHz, change the RF
        Freq, otherwise change the DSP freq

        Is this correct?

        On Mon, Jun 13, 2016 at 4:03 PM, Martin Braun
        <[email protected] <mailto:[email protected]>> wrote:

            Richard,

            "use DSP tuning when possible" is not a valid policy.

            In Python:

            from gnuradio import uhd

            rf_freq = 900e6
            dsp_freq = 1e3
            TR = uhd.tune_request(rf_freq, dsp_freq)
            # Oh look it worked:
            print TR.rf_freq_policy == uhd.tune_request.POLICY_MANUAL


            So, in a nutshell, rf_freq and dsp_freq are used
            depending on the
            respective policies, but there's no 'figure out smart
            tunes based on
            state' policy.

            -- M


            On 06/13/2016 03:49 PM, Richard Bell wrote:
            > Derek,
            >
            > that manual is the C++ API. How would I format the tune
            policy
            > information in python? It's not clear to me looking at
            the C++ API and
            > the Python API for the set_center_freq python function.
            Could you give
            > an example of how you would call
            >
            > C++:
            http://files.ettus.com/manual/structuhd_1_1tune__request__t.html
            > Python:
            >
            
http://www.gnuradio.org/doc/sphinx/uhd_blocks.html#gnuradio.uhd.usrp_sink
            >
            > set_center_freq(center_freq,
            <USE_DSP_TUNING_WHEN_POSSIBLE>)
            >
            > What goes in place of the careted argument?
            >
            > Rich
            >
            > On Mon, Jun 13, 2016 at 3:31 PM, Derek Kozel
            <[email protected] <mailto:[email protected]>
            > <mailto:[email protected] <mailto:[email protected]>>> 
wrote:
            >
            >     Hi Rich,
            >
            >     You can create and pass a tune_request_t into the
            set frequency call
            >     of a USRP object. This gives you control of how it
            tunes. By default
            >     it does not optimize for speed to my knowledge.
            >
            http://files.ettus.com/manual/structuhd_1_1tune__request__t.html
            >
            >     Depending on what USRP you are using there are self
            calibration
            >     thresholds which will cause a retune to incur a
            delay when tuning
            >     outside of a certain range. On the B200 for
            instance this range is
            >     100MHz.
            >
            >     Regards,
            >     Derek
            >
            >     On Mon, Jun 13, 2016 at 3:05 PM, Richard Bell
            >     <[email protected] <mailto:[email protected]>
            <mailto:[email protected]
            <mailto:[email protected]>>> wrote:
            >
            >         I am using set_center_freq(center_freq) in my
            python script to
            >         retune my USRP to various center frequencies.
            Does this command
            >         use the smartest retune technique to get to the
            new frequency?
            >
            >         For example, if I want to retune from 900.000
            MHz to 900.001 MHz
            >         ( a 1 kHz change), will it use DSP tuning
            instead of RF tuning
            >         for speed? Is there a way to control this
            through python?
            >
            >         In my testing, it seems the retune time is
            constant whether I
            >         make a 1 GHz hop, a 3 MHz hop or a 1 kHz hop,
            which makes me
            >         think I'm overlooking something.
            >
            >         Thanks,
            >         Rich
            >
            >  _______________________________________________
            >         Discuss-gnuradio mailing list
            > [email protected]
            <mailto:[email protected]>
            <mailto:[email protected]
            <mailto:[email protected]>>
            > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
            >
            >
            >
            >
            >
            > _______________________________________________
            > Discuss-gnuradio mailing list
            > [email protected] <mailto:[email protected]>
            > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
            >


            _______________________________________________
            Discuss-gnuradio mailing list
            [email protected] <mailto:[email protected]>
            https://lists.gnu.org/mailman/listinfo/discuss-gnuradio





    _______________________________________________
    Discuss-gnuradio mailing list
    [email protected]  <mailto:[email protected]>
    https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


    _______________________________________________
    Discuss-gnuradio mailing list
    [email protected] <mailto:[email protected]>
    https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to