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.
Thanks,
Sidd
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
is used
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",
unless you
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.
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com