[time-nuts] Thunderbolt code phase measurement

D. Jeff Dionne Jeff at SE-Instruments.co.jp
Wed May 16 01:48:41 EDT 2018

On May 16, 2018, at 13:58, Peter Monta <pmonta at gmail.com> wrote:
> "Code phase" represents where you are along the 1023-bit C/A code (each bit or "chip" of this code lasts ~1 microsecond or ~300 meters).  The scaled-by-16 code phase will thus range from 0 to 16*1023.  To get the full pseudorange, though, suitable for placing into a RINEX file for example, you need to also add in the integer number of code periods from the satellite to you.
> If you know your position to within 150 kilometers (0.5 ms), you can dispense with the pseudorange-assembly arithmetic

To put that in code, the assembly of collected Observations might look like this:

    raw_time = nav_ms_of_frame(sv);
    raw_time += ((double)(1023<<PHASE_BITS)-(double)nd[c].phase)/(double)(1023<<PHASE_BITS);
    raw_time += nav_subframe_of_week(sv)*6000.0;
    raw_time /= 1000.0;

That pulls all the Observation pieces together to give you a (still uncorrected) transmit time in seconds (taken from working code).

> and just use the code phase directly, after adding in the appropriate integer number of milliseconds, only one of which will put you within your known 300-kilometer-diameter (1 ms) sphere.

Oh... that is a very useful simplification when in Over Determined Clock.  So long as your time is already accurate to better than 0.5ms, which is no big trick.  Seems obvious now, but I hadn't thought of calculating or validating psudoranges that way before, thanks!


> Cheers,
> Peter
> _______________________________________________
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.

More information about the time-nuts mailing list