Quantcast

How good can USRPs with internal GPSDOs being synchronized?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

How good can USRPs with internal GPSDOs being synchronized?

Ching
Hi all,

I am trying to synchronise two USRP N210 with the goal of receiving time-aligned samples. 
I've modified the rx_samples_to_file.cpp code according to this page:

It seems that the signals at the USRPs have between +0.2 and -0.2 us time difference. 
This time difference seems to be random, as it changes every time I run a new experiment.

Does anyone know why the samples receive at these two USRPs are still not aligned?
I thought the time difference should be less than 100ns. 
What's the right way to minimize the time difference??

Best regards,
Cheng Chi

------------------------------------------------------------------------------------------------
Here is the setup and the code snippet that I've add to the example rx_samples_to_file.cpp.

- USRP N210 with internal GPSDO module, daughtherboard is DBSRX2
- Signal generator outputs a common signal and connects to the two USRPs through equal length cables

Transmitter part: Common signal is FM signal with 1MHz bandwidth, carrier frequency is 1.6GHz. 
Receiver part: Sampling rate is 5Msps


1. For Common Reference Signals
{{{
usrp->set_clock_source("gpsdo");
usrp->set_time_source("gpsdo");
}}} 

2. For synchronising the Device Time
Because each N210 has an internal GPDSO module, the device times are automatically synchronised

3. For Synchronising Channel Phase

To align CORDIC:
{{{
    uhd::stream_cmd_t stream_cmd((num_requested_samples == 0)?
        uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS:
        uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE
    );
    stream_cmd.num_samps = num_requested_samples;
    stream_cmd.stream_now = false;
    stream_cmd.time_spec = uhd::time_spec_t(time_to_receive);
    usrp->issue_stream_cmd(stream_cmd);
}}}

To align LOs in the frontend:
{{{
    uhd::time_spec_t cmd_time = usrp->get_time_now() + uhd::time_spec_t(0.1);
    usrp->set_command_time(cmd_time);
    usrp->set_rx_freq(1.6e9);
    usrp->clear_command_time();

}}}
For DBSRX2, does this method for aligning LO work?

_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Loading...