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

Reply via email to