discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] How good can USRPs with internal GPSDOs being synchro


From: Chi
Subject: [Discuss-gnuradio] How good can USRPs with internal GPSDOs being synchronized?
Date: Wed, 4 Sep 2013 19:56:58 +0800

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:
http://files.ettus.com/uhd_docs/manual/html/sync.html

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?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]