[time-nuts] Re: Phase coherence with 2x GPSDO

Bob kb8tq kb8tq at n1k.org
Sat Mar 19 14:17:12 UTC 2022


Hi


> On Mar 17, 2022, at 8:57 PM, Krishna Makhija <km5es at virginia.edu> wrote:
> 
> Good day everyone,
> 
> I ran a few additional tests to figure this issue out. The first test
> involved using one GPS antenna for both units. I found that while phase
> coherence was better in general, there was still a fair bit of disagreement
> between them. I then tried to use the 1PPS from one GPSDO as reference to
> the other one, and looked at the 10 MHz from each unit on a scope. There
> was a fixed phase offset between both 10 MHz signals +- 5-8 ns of error.
> Which means that even if I gave an error-free PPS as reference the
> oscillators would *still* not be in enough agreement for my application.
> Which in turn means implementing a PTP system would be pointless as well.
> 
> On a somewhat related note, does anyone know why the F9T modules only give
> 2.5 ns of timing accuracy? RTK GPS has 1 cm RMS of positioning error which
> should theoretically be 33 ps in timing. Where does the 2.5 ns error come
> from?

On the same “one sigma long average compare two to each other only look at 
the noise basis after corrections”, the F9T does a few hundred ps. Just like the 
RTK number, static offsets are not part of that calculation. 

Bob

> 
> On Wed, Mar 9, 2022 at 3:26 PM Mattia Rizzi <mattia.rizzi at gmail.com> wrote:
> 
>> Hi
>> The timestamping in a real implementation should be done in the FPGA or on
>> a SoC integrated in the FPGA. Since you have a SDR you could implement a
>> timestamping core.
>> This timestamping core takes the samples from the ADC and calculates the
>> time of arrival relative to the sampling clock.
>> If you have already a datalink between the drone and the base station, you
>> can use the symbol of the data layer, in that way you can have a lot of
>> freedom in the implementation of the sync algorithm.
>> 
>>> Since there is some
>> non-deterministic computational overhead, you need to take several such
>> measurements and calculate what the mean time of flight would be and
>> correct the offsets accordingly. Is that correct? Please let me know if I
>> am wrong because I really need to fix this issue.
>> 
>> No, in an actual implementation it's deterministic.
>> You're receiving a frame, the timestampjng core gives you a timestamp for
>> each symbol. If you use 802.15.4-CSS, which has 4 MHz chirps as symbol, you
>> can get down to 0.5ns RMS noise *for each symbol* (SNR of around 15 dB),
>> indeed if you make an average with more symbols you can get better results,
>> but there's a limit on how many timestamps you can average (mainly depends
>> on the stability of you sampling clock).
>> 
>> You can run a simple protocol like a stripped down version of PTP, and if
>> you're able to embed it into layer 1 (you've an SDR, you can do it) then
>> it's for free, and you can get a high synchronization rate for free. You
>> can also get two-way ranging for free.
>> 
>> Il Mer 9 Mar 2022, 19:23 Krishna Makhija <km5es at virginia.edu> ha scritto:
>> 
>>> Hello Mattia,
>>> 
>>> Thanks for the paper. Please correct me if I understood wrong, but it
>> seems
>>> like you are calculating the time of flight between timestamped signals
>> to
>>> synchronize two spatially separated clocks. Since there is some
>>> non-deterministic computational overhead, you need to take several such
>>> measurements and calculate what the mean time of flight would be and
>>> correct the offsets accordingly. Is that correct? Please let me know if I
>>> am wrong because I really need to fix this issue.
>>> 
>>> How would it work if one of the units was moving relative to the other? I
>>> am going to have one of these on a drone and flying around. I admit I
>> never
>>> looked too deep into NTP/PTP but I always figured there would be a
>> constant
>>> variability owing to the steady motion. With GPSDOs as others have
>> pointed
>>> out, there are further errors induced due acceleration (vibrations on a
>>> piezoelectric cause sinusoidal frequency errors), and temperature changes
>>> (the drone rover unit will see more airflow as compared to the base
>> unit),
>>> but as of now I am trying to make sure I can get it to work with that
>>> notwithstanding at least.
>>> 
>>> P.S. The Mini-JLT <
>>> https://www.jackson-labs.com/index.php/products/mini_jlt>
>>> is designed for drones. It has a special mode where it updates its
>> position
>>> in real-time. There is also a gyro with a Kalman filter running on a
>>> real-time operating system which is supposed to reduce the effect of
>>> vibrations. It does not eliminate that effect entirely but it does
>> mitigate
>>> it by a factor of 10.
>>> 
>>> On Mon, Mar 7, 2022 at 2:11 PM Mattia Rizzi <mattia.rizzi at gmail.com>
>>> wrote:
>>> 
>>>> Hi,
>>>> You can definitely get sub-ns precision using a 4-8 MHz bandwidth
>>> wireless
>>>> protocol. You are not limited by the sampling period. In my previous
>>> work I
>>>> used 802.15.4-CSS (chirp based modulation), implemented by me in a SDR.
>>> The
>>>> sampling rate was 32 ns but with crosscorrelation and sample
>>> interpolation
>>>> you can get down to half ns precision (1 sigma)
>>>> 
>>>> See:
>>>> 
>>>> 
>>> 
>> https://www.researchgate.net/publication/261329724_Timestamping_and_ranging_performance_for_IEEE_802154_CSS_systems
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Il giorno lun 7 mar 2022 alle 19:39 Krishna Makhija <
>> km5es at virginia.edu>
>>>> ha
>>>> scritto:
>>>> 
>>>>> Thanks Mattia. What did you use for your Layer 1? I need to place one
>>> of
>>>>> the SDRs on a drone and one on the ground so a fiber or LAN cable is
>>>> out. I
>>>>> could use WLAN but can you get sub-nanosecond performance over wi-fi?
>>> My
>>>>> initial guess would be no but I am not certain.
>>>>> 
>>>>> Michael: I've had the same question but I can't see how it could
>>>>> possibly "know" its own frequency error/uncertainty. What would it
>>>>> reference to? I'll try asking the manufacturer anyway.
>>>>> 
>>>>> Regards,
>>>>> Krishna
>>>>> 
>>>>> On Mon, Mar 7, 2022 at 11:46 AM Mattia Rizzi <mattia.rizzi at gmail.com
>>> 
>>>>> wrote:
>>>>> 
>>>>>> Hello Krishna,
>>>>>> what is your end application? How far away are those boards?
>>>>>> If each SDR can communicate to each other, you can run PTP over an
>>>> ad-hoc
>>>>>> Layer 1.
>>>>>> I was able to get timestamps out of a 2.4 GHz chirp-based protocol
>>> with
>>>>>> less than 0.5ns RMS noise and two-way ranging error down to 10-20
>>>>>> centimeters, using two SDR.
>>>>>> 
>>>>>> 
>>>>>> cheers
>>>>>> 
>>>>>> Il giorno dom 6 mar 2022 alle ore 23:48 Krishna Makhija <
>>>>>> km5es at virginia.edu>
>>>>>> ha scritto:
>>>>>> 
>>>>>>> Hello Tom,
>>>>>>> 
>>>>>>> Yes, the GPSDOs are working well. However, when I use each as a
>>>>> reference
>>>>>>> to a separate radio, I find there is a slow phase change over
>> time
>>>>>> between
>>>>>>> said radios. I imagine this is expected since there will always
>> be
>>>> some
>>>>>>> error between two discrete oscillators. However, I am hoping to
>> use
>>>> the
>>>>>> PPS
>>>>>>> and FEE metadata to compute what the phase *should* have been in
>>>>>>> post-processing. So far, it is not working out for me. I am
>>> wondering
>>>>> if
>>>>>>> that is even possible or if my math is just wrong.
>>>>>>> 
>>>>>>> Bob,
>>>>>>> 
>>>>>>> The SDRs have an LO running at 150 MHz (~6.66 ns) so a PPS wander
>>> of
>>>> +-
>>>>>> 10
>>>>>>> ns is >360 deg. With a common-mode reference I see a small phase
>>>> change
>>>>>> (+-
>>>>>>> 3-4 deg) but that is not an option for my application.
>>>>>>> 
>>>>>>> Where does the PPS offset come from? Isn't it from the
>> positioning
>>>>> error?
>>>>>>> Typical GPS receivers have 1-3 m of positioning error which
>> should
>>>> give
>>>>>>> you +- 10 ns. Why is this a "dream" performance? It should be
>>>> expected
>>>>>> from
>>>>>>> any modern GPS receiver.
>>>>>>> 
>>>>>>> Thanks for your inputs so far.
>>>>>>> 
>>>>>>> Krishna
>>>>>>> 
>>>>>>> On Sun, Mar 6, 2022 at 4:30 PM Bob kb8tq <kb8tq at n1k.org> wrote:
>>>>>>> 
>>>>>>>> Hi
>>>>>>>> 
>>>>>>>> They *are* phase coherant to within 360 * 100/ 10 = 36 degrees.
>>> You
>>>>>>>> can get them to *maybe* ten degrees with this and that done
>> here
>>> or
>>>>>>> there.
>>>>>>>> 
>>>>>>>> If you want them within a degree, no you can’t do that directly
>>>> with
>>>>>> GPS.
>>>>>>>> If your definition of phase coherent is zero degrees, a pair of
>>>>> SDR’s
>>>>>>> off
>>>>>>>> the
>>>>>>>> same buffered clock will have issues with that definition in
>> the
>>>> real
>>>>>>>> world
>>>>>>>> of temperature wandering around …..
>>>>>>>> 
>>>>>>>> Bob
>>>>>>>> 
>>>>>>>>> On Mar 6, 2022, at 2:04 PM, Krishna Makhija <
>>> km5es at virginia.edu>
>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Hi Bob,
>>>>>>>>> 
>>>>>>>>> I am currently getting +- 10 ns nominal. The antennas are
>>>> currently
>>>>>>>> almost
>>>>>>>>> next to each other (roughly 1-2 inches apart). Yes, they
>> should
>>>> be
>>>>>>>> outside
>>>>>>>>> of each of their farfield zones. Here is the PPS offset I am
>>>> seeing
>>>>>>>> during
>>>>>>>>> measurement:
>>>>>>>>> [image: image.png]
>>>>>>>>> And this is the frequency error I am seeing:
>>>>>>>>> [image: image.png]
>>>>>>>>> Overall, the GPSDOs seem to work pretty well. But the
>> question
>>>>> still
>>>>>>>>> remains if one can hope to get them to be phase coherent,
>>> either
>>>> in
>>>>>>>>> real-time or in post-processing.
>>>>>>>>> 
>>>>>>>>> Jeremy: I bought these items by writing to them. I chose to
>>>> place a
>>>>>>>>> purchase order (since I did it through my organization), but
>>> you
>>>>>> might
>>>>>>> be
>>>>>>>>> able to order by talking to them directly and paying using a
>>>> credit
>>>>>>> card.
>>>>>>>>> 
>>>>>>>>> On Sun, Mar 6, 2022 at 1:51 PM Bob kb8tq <kb8tq at n1k.org>
>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi
>>>>>>>>>> 
>>>>>>>>>> How close are you trying to get?
>>>>>>>>>> 
>>>>>>>>>> How far apart are the GPSDO’s?
>>>>>>>>>> 
>>>>>>>>>> A “run of the mill” number would be out around 100 ns. A
>>> “pretty
>>>>>> good”
>>>>>>>>>> number is in the 20 ns range. A “crazy good” number would
>> be 2
>>>> ns.
>>>>>> To
>>>>>>>>>> do better than this, you likely would need to go to a more
>>>> exotic
>>>>>>>>>> configuration
>>>>>>>>>> on the GPSDO.
>>>>>>>>>> 
>>>>>>>>>> Bob
>>>>>>>>>> 
>>>>>>>>>>> On Mar 6, 2022, at 12:55 PM, Krishna Makhija <
>>>> km5es at virginia.edu
>>>>>> 
>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Hello,
>>>>>>>>>>> 
>>>>>>>>>>> I am new to the whole precision time-keeping game (and to
>>> this
>>>>>>> mailing
>>>>>>>>>>> list) so I apologize in advance if my question is too naive
>>> or
>>>>> has
>>>>>>> been
>>>>>>>>>>> answered already in your mailing list.
>>>>>>>>>>> 
>>>>>>>>>>> Is it possible to have two separate GPSDOs, each with their
>>> own
>>>>>>>> antennas,
>>>>>>>>>>> be phase coherent to each other? I have a Jackson-Labs Fury
>>>>>>>>>>> <https://www.jackson-labs.com/index.php/products/fury>
>> and a
>>>>>>> Mini-JLT
>>>>>>>>>>> <https://www.jackson-labs.com/index.php/products/fury>. I
>> am
>>>>> using
>>>>>>>> each
>>>>>>>>>> to
>>>>>>>>>>> provide a 10 MHz reference to two separate software-defined
>>>>> radios
>>>>>>>>>> (SDRs).
>>>>>>>>>>> In my tests I find that the phase offset between said SDRs
>>> has
>>>> a
>>>>>> slow
>>>>>>>>>>> time-varying behavior. I know the frequency errors of the
>>>> GPSDOs
>>>>>> are
>>>>>>> of
>>>>>>>>>> the
>>>>>>>>>>> order of parts per trillion which will show up as slow
>>>>> time-varying
>>>>>>>> phase
>>>>>>>>>>> offsets but I was hoping to use the PPS offsets and
>>>> instantaneous
>>>>>>>>>> frequency
>>>>>>>>>>> errors that I get from these modules (using SCPI commands)
>> to
>>>> be
>>>>>> able
>>>>>>>> to
>>>>>>>>>>> "back out" or predict what that time-varying phase offset
>>> would
>>>>> be.
>>>>>>> Is
>>>>>>>>>> such
>>>>>>>>>>> a thing possible? Currently, the time-varying phase change
>>> does
>>>>> not
>>>>>>>> seem
>>>>>>>>>> to
>>>>>>>>>>> follow any discernible pattern and my attempts at backing
>> out
>>>> the
>>>>>>> phase
>>>>>>>>>>> change do not match my measurements.
>>>>>>>>>>> 
>>>>>>>>>>> Here is the math I am using for calculating what I *think
>>> *the
>>>>>> phase
>>>>>>>>>>> *should* be:
>>>>>>>>>>> [image: image.png]
>>>>>>>>>>> [image: image.png]
>>>>>>>>>>> 
>>>>>>>>>>> [image: image.png]
>>>>>>>>>>> Does any of this seem sensible? Any input is appreciated.
>>>>>>>>>>> 
>>>>>>>>>>> TL;DR: Trying to get phase coherence between two separate
>>>> GPSDOs
>>>>>> may
>>>>>>>> not
>>>>>>>>>> be
>>>>>>>>>>> possible but can you use PPS offsets and frequency errors
>>>>> metadata
>>>>>> to
>>>>>>>>>>> correct for it in post?
>>>>>>>>>>> 
>>>>>>>>>>> Regards,
>>>>>>>>>>> Krishna
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> <image.png><image.png><image.png>_______________________________________________
>>>>>>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>>>>>> unsubscribe
>>>>>>>>>> send an email to time-nuts-leave at lists.febo.com
>>>>>>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>>>>>>> _______________________________________________
>>>>>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>>>>>> unsubscribe
>>>>>>>> send
>>>>>>>>>> an email to time-nuts-leave at lists.febo.com
>>>>>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>>>>>> 
>>>>> <image.png><image.png>_______________________________________________
>>>>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>>>>> unsubscribe
>>>>>>>> send an email to time-nuts-leave at lists.febo.com
>>>>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>>>>> _______________________________________________
>>>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>>>> unsubscribe
>>>>>>> send
>>>>>>>> an email to time-nuts-leave at lists.febo.com
>>>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>>>> _______________________________________________
>>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>>> unsubscribe
>>>>>> send
>>>>>>> an email to time-nuts-leave at lists.febo.com
>>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>>> _______________________________________________
>>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To
>> unsubscribe
>>>>> send
>>>>>> an email to time-nuts-leave at lists.febo.com
>>>>>> To unsubscribe, go to and follow the instructions there.
>>>>> _______________________________________________
>>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe
>>>> send
>>>>> an email to time-nuts-leave at lists.febo.com
>>>>> To unsubscribe, go to and follow the instructions there.
>>>> _______________________________________________
>>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe
>>> send
>>>> an email to time-nuts-leave at lists.febo.com
>>>> To unsubscribe, go to and follow the instructions there.
>>> _______________________________________________
>>> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe
>> send
>>> an email to time-nuts-leave at lists.febo.com
>>> To unsubscribe, go to and follow the instructions there.
>> _______________________________________________
>> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe send
>> an email to time-nuts-leave at lists.febo.com
>> To unsubscribe, go to and follow the instructions there.
> _______________________________________________
> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe send an email to time-nuts-leave at lists.febo.com
> To unsubscribe, go to and follow the instructions there.




More information about the Time-nuts_lists.febo.com mailing list