|
From: | Marcus Müller |
Subject: | Re: [Discuss-gnuradio] Dropped data when changing frequency dynamically using an Ettus B200 |
Date: | Tue, 20 Dec 2016 16:37:34 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
Dear Tom, the underlying problem is that everything in this world takes time – and so does the tuning process of the B200; if you change the frequency of the oscillator that is used to convert your signal from baseband to RF passband, or in the other direction, that process simply isn't instantaneous, and the control loops that make the LO stable will need some time to settle. Additionally, for large tunes, the B200 needs to do an autocalibration after tuning – leading to a rather long time until proper signal is available again. However, not all is lost! Assuming your Doppler bandwidth isn't really enormous and also assuming you're not doing full 56 MHz handwidth at once, you can instruct the USRP sink/source to only tune digitally: The USRP has a two-step tuning process: On one hand, the physical LO is used to set the "RF" center frequency, and on the other, there's digital frequency shifting that works on the signal as it comes from the ADC (or goes to the DAC) before it hits the decimation (interpolation) step that reduces (expands) the sampling rate by an integer factor between your user-selected sampling rate and the master clock rate (at which ADC/DAC physically sample).
That f_offset can hence be chosen arbitrarily, as long f_offset +
1/2 f_sample <= 1/2 f_masterclockrate . You can use a uhd.tune_request(f_target, f_offset) with your
variable, for example, if the variable was called f_doppler and
you used "f_center + f_doppler" in the RF Frequency field before, you could now do uhd.tune_request(f_center + f_doppler, f_doppler) to keep the RF LO frequency constant (in fact, there's more to the whole tune_request_t business). I'd also recommend looking into message passing, which would allow you to *directly* modify the offset frequency [1]. Also, personally, that sounds like the "cleaner" way of doing things – having one of the (in GRC, grey) connections instead of just sharing variable names somewhere.Best regards, Marcus [1] http://gnuradio.org/doc/doxygen/page_uhd.html#uhd_command_syntax On 20.12.2016 16:14, Tom Golden wrote:
|
[Prev in Thread] | Current Thread | [Next in Thread] |