[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!
> 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