usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

How good can USRPs with internal GPSDOs being synchronized?

ML
Marcus Leech
Mon, Sep 9, 2013 5:01 PM

I have observed, in the lab, two GPSDOs (from different manufacturers) experiencing relative phase-hits on their 10MHz outputs, even when connected to a common antenna with an unobstructed view of the sky.

It's a bit like the old adage--if you have one watch, you know what time it is. If you have two, you have no idea.

on Sep 09, 2013, Matt Ettus <matt@ettus.com> wrote:

Cheng,

This is what I expected. Separate GPSDOs will drift relative to each other, by on the order of 100ns. When used in close proximity, that 100ns is significant, and so it is better to use a shared reference. When used very far apart (hundreds of meters or more), it is harder to use a shared reference, but the 100ns error from drifting GPSDOs is less significant, and so separate GPSDOs become useful.

So in short -- if you can use a shared reference, do that. Only use separate GPSDOs if it is impractical to use a shared reference because the systems are too far apart.

Also keep in mind that GPSDOs take hours to settle down to a consistent rate, so if you are using them, try to leave them on and with their GPS antennas connected all the time.

Matt

On Sun, Sep 8, 2013 at 5:51 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg> wrote:

Hi Matt,

Thanks for your advice. We've taken several measurements accordingly, here is the result:

  1. Shared GPSDO:
    From the results, it seems that two signals aligned quite well with TDOA equals 0, but the FDOA is about 5.9Hz. We are trying to figure out why there's this small FDOA. We expected that the FDOA would also be 0.

  2. Separate GPSDOs:
    We displayed two 10MHz signals from the two GPSDOs in an oscilloscope, and found that the two reference
    signals drift with respect to each other.

Then we tried increasing the sampling rate to 25Msps, the TDOA results decreased. The TDOAs are [-88, -80, -64, -56, -48, -40, -32] in nanoseconds. It varied in a roughly periodic pattern. Is it caused by the drifting of the two reference signals we observed on the oscilloscope?

Best regards,
Cheng Chi

On Fri, Sep 6, 2013 at 2:49 PM, Matt Ettus <matt@ettus.com> wrote:

Cheng,

How far apart are the two USRPs? If they are close by, then you would be better off sharing a reference rather than giving them separate GPSDOs. Can you have them share a reference?

Matt

On Thu, Sep 5, 2013 at 12:10 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg> wrote:

Hi Matt,

The time difference is the TDOA we estimated by cross-correlating the two signals. For our setup, we expected that the TDOA would be less than 100ns, but constantly got a TDOA between +0.2 and -0.2 us.

So the code to align LOs in the frontend would have no effect for DBSRX2. Do you have any suggestions on how to deal with this phase difference? We use single tone signal to measure the phase difference between the two signals, it seems that the phase difference is not constant.

Best regards,

Cheng Chi

On Thu, Sep 5, 2013 at 12:47 PM, Matt Ettus <matt@ettus.com> wrote:

Chi,

Are you measuring time difference by measuring the phase difference between the two signals? That is different than time alignment. You can check for time alignment by comparing the outputs of the two GPSDOs on an oscilloscope. They should be closer than 100ns RMS.

The DBSRX2 will have an arbitrary phase difference between 2 boards because they have fractional-N synthesizers without phase alignment circuitry. The SBX includes phase alignment capability which works with the code you have there for alignment.

Matt

On Wed, Sep 4, 2013 at 4:50 AM, Chi <chengchibt@gmail.com> wrote:

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");

}}}

  1. For synchronising the Device Time

Because each N210 has an internal GPDSO module, the device times are automatically synchronised

  1. 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?


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

MM
Marcus Müller
Mon, Sep 9, 2013 8:56 PM

I can confirm this, two GPSDOs will, sometimes, lose lock independently of each other, although antennas are less than \lambda/2 apart.

On 09/09/2013 07:01 PM, Marcus Leech wrote:

I have observed, in the lab, two GPSDOs (from different manufacturers) experiencing relative phase-hits on their 10MHz outputs, even when connected to a common antenna with an unobstructed view of the sky.
It's a bit like the old adage--if you have one watch, you know what time it is.  If you have two, you have no idea.
on Sep 09, 2013, Matt Ettus matt@ettus.com wrote:

 Cheng,
 This is what I expected.  Separate GPSDOs will drift relative to each other, by on the order of 100ns.  When used in close proximity, that 100ns is significant, and so it is better to use a shared reference.  When used very far apart (hundreds of meters or more), it is harder to use a shared reference, but the 100ns error from drifting GPSDOs is less significant, and so separate GPSDOs become useful.
 So in short -- if you can use a shared reference, do that.  Only use separate GPSDOs if it is impractical to use a shared reference because the systems are too far apart.
 Also keep in mind that GPSDOs take hours to settle down to a consistent rate, so if you are using them, try to leave them on and with their GPS antennas connected all the time.
 Matt


 On Sun, Sep 8, 2013 at 5:51 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg <mailto:ch0004hi@e.ntu.edu.sg>> wrote:

     Hi Matt,

     Thanks for your advice. We've taken several measurements accordingly, here is the result:

     1. Shared GPSDO:
     From the results, it seems that two signals aligned quite well with TDOA equals 0, but the FDOA is about 5.9Hz. We are trying to figure out why there's this small FDOA. We expected that the FDOA would also be 0.

     2. Separate GPSDOs:
     We displayed two 10MHz signals from the two GPSDOs in an oscilloscope, and found that the two reference
     signals drift with respect to each other.

     Then we tried increasing the sampling rate to 25Msps, the TDOA results decreased. The TDOAs are [-88, -80, -64, -56, -48, -40, -32] in nanoseconds. It varied in a roughly periodic pattern. Is it caused by the drifting of the two reference signals we observed on the oscilloscope?


     Best regards,
     Cheng Chi



     On Fri, Sep 6, 2013 at 2:49 PM, Matt Ettus <matt@ettus.com <mailto:matt@ettus.com>> wrote:


         Cheng,
         How far apart are the two USRPs?  If they are close by, then you would be better off sharing a reference rather than giving them separate GPSDOs.  Can you have them share a reference?
         Matt


         On Thu, Sep 5, 2013 at 12:10 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg <mailto:ch0004hi@e.ntu.edu.sg>> wrote:

             Hi Matt,
             The time difference is the TDOA we estimated by cross-correlating the two signals. For our setup, we expected that the TDOA would be less than 100ns, but constantly got a TDOA between +0.2 and -0.2 us.
             So the code to align LOs in the frontend would have no effect for DBSRX2. Do you have any suggestions on how to deal with this phase difference? We use single tone signal to measure the phase difference between the two signals, it seems that the phase difference is not constant.
             Best regards,
             Cheng Chi


             On Thu, Sep 5, 2013 at 12:47 PM, Matt Ettus <matt@ettus.com <mailto:matt@ettus.com>> wrote:


                 Chi,
                 Are you measuring time difference by measuring the phase difference between the two signals?  That is different than time alignment.  You can check for time alignment by comparing the outputs of the two GPSDOs on an oscilloscope.  They should be closer than 100ns RMS.
                 The DBSRX2 will have an arbitrary phase difference between 2 boards because they have fractional-N synthesizers without phase alignment circuitry.  The SBX includes phase alignment capability which works with the code you have there for alignment.
                 Matt


                 On Wed, Sep 4, 2013 at 4:50 AM, Chi <chengchibt@gmail.com <mailto:chengchibt@gmail.com>> wrote:

                     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?
                     _______________________________________________
                     USRP-users mailing list
                     USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
                     http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


         _______________________________________________
         USRP-users mailing list
         USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
         http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 _______________________________________________
 USRP-users mailing list
 USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
 http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

I can confirm this, two GPSDOs will, sometimes, lose lock independently of each other, although antennas are less than \lambda/2 apart. On 09/09/2013 07:01 PM, Marcus Leech wrote: > I have observed, in the lab, two GPSDOs (from different manufacturers) experiencing relative phase-hits on their 10MHz outputs, even when connected to a common antenna with an unobstructed view of the sky. > It's a bit like the old adage--if you have one watch, you know what time it is. If you have two, you have no idea. > on Sep 09, 2013, *Matt Ettus* <matt@ettus.com> wrote: > > > Cheng, > This is what I expected. Separate GPSDOs will drift relative to each other, by on the order of 100ns. When used in close proximity, that 100ns is significant, and so it is better to use a shared reference. When used very far apart (hundreds of meters or more), it is harder to use a shared reference, but the 100ns error from drifting GPSDOs is less significant, and so separate GPSDOs become useful. > So in short -- if you can use a shared reference, do that. Only use separate GPSDOs if it is impractical to use a shared reference because the systems are too far apart. > Also keep in mind that GPSDOs take hours to settle down to a consistent rate, so if you are using them, try to leave them on and with their GPS antennas connected all the time. > Matt > > > On Sun, Sep 8, 2013 at 5:51 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg <mailto:ch0004hi@e.ntu.edu.sg>> wrote: > > Hi Matt, > > Thanks for your advice. We've taken several measurements accordingly, here is the result: > > 1. Shared GPSDO: > From the results, it seems that two signals aligned quite well with TDOA equals 0, but the FDOA is about 5.9Hz. We are trying to figure out why there's this small FDOA. We expected that the FDOA would also be 0. > > 2. Separate GPSDOs: > We displayed two 10MHz signals from the two GPSDOs in an oscilloscope, and found that the two reference > signals drift with respect to each other. > > Then we tried increasing the sampling rate to 25Msps, the TDOA results decreased. The TDOAs are [-88, -80, -64, -56, -48, -40, -32] in nanoseconds. It varied in a roughly periodic pattern. Is it caused by the drifting of the two reference signals we observed on the oscilloscope? > > > Best regards, > Cheng Chi > > > > On Fri, Sep 6, 2013 at 2:49 PM, Matt Ettus <matt@ettus.com <mailto:matt@ettus.com>> wrote: > > > Cheng, > How far apart are the two USRPs? If they are close by, then you would be better off sharing a reference rather than giving them separate GPSDOs. Can you have them share a reference? > Matt > > > On Thu, Sep 5, 2013 at 12:10 AM, Cheng Chi <ch0004hi@e.ntu.edu.sg <mailto:ch0004hi@e.ntu.edu.sg>> wrote: > > Hi Matt, > The time difference is the TDOA we estimated by cross-correlating the two signals. For our setup, we expected that the TDOA would be less than 100ns, but constantly got a TDOA between +0.2 and -0.2 us. > So the code to align LOs in the frontend would have no effect for DBSRX2. Do you have any suggestions on how to deal with this phase difference? We use single tone signal to measure the phase difference between the two signals, it seems that the phase difference is not constant. > Best regards, > Cheng Chi > > > On Thu, Sep 5, 2013 at 12:47 PM, Matt Ettus <matt@ettus.com <mailto:matt@ettus.com>> wrote: > > > Chi, > Are you measuring time difference by measuring the phase difference between the two signals? That is different than time alignment. You can check for time alignment by comparing the outputs of the two GPSDOs on an oscilloscope. They should be closer than 100ns RMS. > The DBSRX2 will have an arbitrary phase difference between 2 boards because they have fractional-N synthesizers without phase alignment circuitry. The SBX includes phase alignment capability which works with the code you have there for alignment. > Matt > > > On Wed, Sep 4, 2013 at 4:50 AM, Chi <chengchibt@gmail.com <mailto:chengchibt@gmail.com>> wrote: > > 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? > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com