USRP Software Radio

cancel
Showing results for 
Search instead for 
Did you mean: 

Time Synchronization with Host

Hi,

I am using an x310 to transmit a signal of about one minute at ~180 MHz.

The device is attached to a host over a 10 Gig network card and I am instrumenting it using the host part of the UHD library.

 

I am looking for a way to get a timestamp on the host, with sub milliseconds accuracy, that tells me precisely when the

USRP is starting to transmit my signal. I reckon since I communicate with the device over ethernet, there are network

as well as potentially buffering delays which I can currently not account for.

 

I thought of using the timed commands, something along the lines of:

auto usrp_time = usrp->get_time_now();
auto host_time = std::chrono::system_clock::now()
usrp->set_command_time(usrp_time + uhd::time_spec_t(1));  // usrp starts transmitting at approximately host_time + 1s
// ... start transmit


This way, I would potentially avoid some of the buffering delays. However, get_time_now() seems itself to be a network request,

and thus incurs a delay that I don't know how to assess. I can't find any mention about network delays being accounted for or not in

the documentation. I also don't know whether that will actually get rid of any delay or just block for a second on the host side.

 

I also thought it would be nice to simply synchronize the USRP's time via e.g. NTP/PTP with the host. However, I could only find info on

using WhiteRabbit, and it's honestly a bit over my head and seems to require special hardware for which I don't have a budget. I am also

not experienced with FPGA programming, so I would prefer solutions that don't require that.

 

Thanks in advance

0 Kudos
Message 1 of 1
(133 Views)