[USRP-users] B210 Timed Commands, Samples over time
Marcus D. Leech
patchvonbraun at gmail.com
Thu Jul 2 21:11:17 EDT 2020
On 07/02/2020 08:29 PM, Sidd Subramanyam via USRP-users wrote:
> I am running a B210 USRP with the built in GPSDO. My goal is to collect a fixed number of samples (4 Million) at the start of every minute over the course of about an hour. I am setting up the script to make use of the STREAM_MODE_NUM_SAMPS_AND_MORE collection mode. For my application It is important that the collection starts precisely every minute, hence why I am synchronizing with the GPSDO. Because of this, I am attempting to tune the LO with the GPSDO every minute before the collection starts in order to keep the LO from drifting. Furthermore, right before starting the collection, I query the GPSDO for the location and log it as well. This seems to have a blocking effect on the whole USRP. How can I use timed commands to ensure that I synchronize time with GPS Time, tune the LO with the GPS 10 MHz, and start collection of my fixed number of samples, with a known time spacing between each of these so that I can minimize any LO drift by the time I start collecting my samples.
Re-tuning will have *zero* effect on "LO drift". The PLL synthesizer
will be locked to your GPSDO output, which, once it has achieved lock-on to
GPS will be very very small--roughly 1 part in 10^12. Re-tuning
will have zero effect on drift--the whole point of a PLL synthesizer (as
in ALL modern radios) is that the frequency is set with digital
registers that control the dynamics of a phase-comparator and charge-pump
loop. The "drift" of the LO is *ENTIRELY* dependent on the reference,
which in your case is the GPSDO output.
You only need to "synchronize to GPS time" *ONCE* at the start of your
session, after that, the time-of-day clock will count updwards at whatever
the master-clock rate is, and with whatever precision is being
delivered by your GPSDO. There is NO reason to continually "re-synch",
lose GPS lock for an extended period--the "holdover" of the GPSDO
on-board is quite good--a few PPB.
How are you querying the location information? I think that's stored in
a "sensor" register, and you should be able to asynchronously query it
while samples are being streamed. Now, if you have everything
happening in a single *THREAD*, and you are making "sensor" queries, they
are blocking calls, as far as I know. But that's just a "how do I
structure my threads" problem.
More information about the USRP-users