Patent ID: 8615032

Claim:
A method of sub-microsecond time transfer in a GPS/GNSS receiver using a weak GPS/GNSS signal from a satellite, the method comprising: receiving a digitized complex baseband signal of the GPS/GNSS signal, the baseband signal carrying a received PN code having a code period and a navigation message having data bits, each data bit corresponding to twenty code periods; generating a generated PN code for the satellite and keeping the generated PN code time-aligned with the received PN code; generating a timing signal indicating code epochs of the generated PN code, each code epoch marking a beginning of each period and being tagged with a modulo- 20 number; cross-correlating the baseband signal and the generated PN code for each code period controlled by the timing signal, so as to output a complex correlation value at each code epoch, a sequence of the complex correlation values forming a navigation data stream representing the navigation message; locating data bit boundaries of the navigation data stream and generating bit sync pulses at the bit boundaries, locating data bit boundaries including: (a1) receiving the navigation data stream and placing the complex correlation values in a 20-stage complex shift register at a timing of the corresponding code epochs, the shift register holding a sequence of most recent 20 complex correlation values; (b1) summing the 20 complex correlation values held in the shift register at each code epoch and obtaining a magnitude value of the sum of the 20 complex correlation values; (c1) storing the magnitude value in one of 20 accumulators which is associated with the modulo- 20 number corresponding to that of the code epoch at which the latest complex correlation value of the summed 20 complex correlation values was placed into the shift register; (d1) iterating steps (a1) through (c1) until each of the 20 accumulators has a respective magnitude value placed therein; (e1) repeating step (d1) for a plurality of times such that each of the 20 accumulators accumulates a certain number of the magnitude values; (f1) determining which one of the 20 accumulators contains a largest accumulated value of the magnitude values and the specific modulo- 20 number associated therewith; (g1) identifying the code epoch having the specific modulo 20 number as a data bit boundary of the navigation data stream; and (h1) outputting the bit sync pulses at a timing of the code epochs tagged with the specific modulo 20 number, each bit sync pulse being tagged with a modulo-M number; detecting a target segment in the navigation message and determining a data bit location of the target segment in the navigation message; determining transmission time of the target segment from the satellite based on the determined data bit location, wherein the transmission time has a certain time ambiguity; solving the certain time ambiguity using approximate time obtained from a source external to the GPS/GNSS receiver; and correcting the transmission time for a propagation delay so as to obtain sub-microsecond time transfer.