Modernized consumer grade GNSS secondary code acquisition and signal tracking

AU2021283884B2Pending Publication Date: 2026-09-17ONENAV INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
AU2021283884
Authority / Receiving Office
AU · AU
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-05-28
Filing Date
2021-06-01
Publication Date
2026-09-17
Estimated Expiration
2041-06-01

Smart Images

  • Figure 00000001_0000
    Figure 00000001_0000
  • Figure 00000219_0000
    Figure 00000219_0000
  • Figure 00000220_0000
    Figure 00000220_0000
Patent Text Reader

Abstract

Global navigation satellite systems and methods use L5 GNSS signals to acquire secondary code phases of those signals without using L1 GNSS signals to aid in the acquisition of secondary code phases. Various embodiments are described to perform this acquisition.
Need to check novelty before this filing date? Find Prior Art

Description

This application claims the benefit of U.S. Provisional Patent Application No. 62 / 704,882, filed on June 1, 2020 and U.S. Provisional Patent Application No. 62 / 704,884 filed on June 1, 2020 and U.S. Non-Provisional Application No. 17 / 334,477 filed on May 28, 2021, all of which are incorporated herein by reference. BACKGROUND This disclosure relates to the field of Global Navigation Satellite Systems (GNSS) and in particular, this disclosure in one embodiment relates to GNSS receivers that use a modem L5 signal in the L5 frequency band. There are numerous GNSS systems that are available, including the United States’ GPS (Global Positioning System), GLONASS, Galileo, Beidou, and regional systems that exist or may be deployed in the future. The United States’ GPS system was initially available in only the LI frequency band. Now, the United States’ GPS system includes GNSS signals in the L5 band, and the Galileo system includes modernized GNSS signals (such as E5A and E5B) in the L5 band centered at 1191.79 MHz. The modernized GNSS signals in the L5 band provide certain advantages relative to GNSS signals in the LI band, and some of the advantages are described below. However, the acquisition in a GNSS receiver of L5 band GNSS signals directly without the prior acquisition of LI GNSS signals in the GNSS receiver has been considered difficult and thus conventional GNSS receivers employ a technique in which the LI GNSS signals are acquired first. This initial acquisition provides information, such as time information and Doppler estimates, that is used to acquire GNSS signals in the L5 band. Thus, conventional GNSS receivers that support GNSS L5 signals use a radiofrequency front end that receives both L5 and LI signals; this means there is a duplication of radiofrequency components in these GNSS receivers. Moreover, the conventional receivers must store and use pseudorandom noise (PRN) code sequences for both LI and L5 GNSS signals. Modem GNSS signals, such as the GNSS signals from the European Galileo constellation of satellites (SVs), include both primary code sequences and secondary code sequences. Secondary code sequences are overlayed upon primary code sequences, typically by modulo-2 addition. The inclusion of secondary code sequences provide the modem GNSS signals with some advantages relative to older GPS signals that do not include such secondary code sequences. For example, the secondary code sequences can reduce cross correlation between signals received from different satellites;! this improves the reliability of the receiving system by reducing false tracking. The secondary code sequences produce a sequence of zero or 180 degree phase shifts that are synchronized to the epochs of the primary code. The secondary code sequence may be long, such as 100 msec as in the case of certain of the Galileo L5 signals. The epochs of the primary code typically occur every 1 msec. This means that a GNSS receiver cannot use coherent integration longer than 1 millisecond (ms or msec) unless the secondary code phase is first determined in the GNSS receiver. If the secondary code is determined, coherent integration may be extended well beyond 1 msec and hence allow the receiver to achieve high sensitivity. However, without such a determination tracking an acquired primary code GNSS signal is difficult. Existing GNSS receivers avoid this problem by acquiring the LI signals first before attempting to acquire the L5 signals. Such acquisition effectively allows the determination of the 2021283884   05 Aug 2026 phasing of the secondary code associated with the L5 signals, hence circumventing the requirement to determine such phasing by independent means. Reference to any prior art in the specification is not an acknowledgement or suggestion that this prior art forms part of the common general knowledge in any jurisdiction or that this prior art could reasonably be expected to be combined with any other piece of prior art by a skilled person in the art. By way of clarification and for avoidance of doubt, as used herein and except where the context requires otherwise, the term "comprise" and variations of the term, such as "comprising", "comprises" and "comprised", are not intended to exclude further additions, components, integers or steps. SUMMARY OF THE DESCRIPTION This disclosure includes various aspects and embodiments that provide systems, GNSS receivers, methods and techniques to acquire secondary code phase of GNSS signals, including for example, GNSS receivers that acquire secondary code phase of L5 GNSS signals without using LI GNSS signals to acquire the secondary code phase of L5 GNSS signals. In one embodiment, such a GNSS receiver comprises: an analog to digital converter (ADC) to generate a digital representation of received GNSS signals in an L5 wideband GNSS frequency band; a baseband sample memory to store the digital representation of the received GNSS signals, the baseband sample memory coupled to the ADC; a GNSS processing system coupled to the baseband sample memory to process the digital representation of the received GNSS signals, the GNSS processing system configured to acquire code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals without using LI GNSS signals to acquire the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals. In one embodiment, the system includes only a single GNSS antenna tuned to a frequency in the L5 wideband frequency band and the GNSS receiver does not receive and does not acquire LI GNSS signals. In one embodiment, the GNSS receiver acquires the code phases of the one or more secondary codes after acquiring one or more primary codes of the GNSS signal components but before narrowband tracking of the GNSS signal components. In one embodiment, a code phase of a first secondary code in the one or more secondary codes is acquired by using multiple GNSS signal components in L5 wideband GNSS signals from a single GNSS satellite (e.g., a GNSS sideband A signal and a GNSS sideband B signal from the same GNSS satellite such as the E5a and E5b signals from the same Galileo GNSS SV). In one embodiment, the GNSS receiver detects phase changes between successive primary code epochs, wherein the phase changes are detected from in-phase and quadrature results of correlation outputs in a GNSS processing system in the GNSS receiver; the GNSS processing system averages the phase changes detected from the in-phase and quadrature results of correlation outputs to produce an estimated frequency error. The GNSS processing system provides a compensated frequency, based on the estimated frequency error, to one or more discriminators of a frequency lock loop (FLL), the FLL configured to reduce error in estimations of frequency of received L5 GNSS signals based on the estimated frequency error. In one embodiment, the FLL comprises a first discriminator for a first sideband of L5 GNSS signals and a second discriminator for a second sideband of L5 GNSS signals, and the estimated frequency error is a filtered estimate based on the averages of the phase changes detected from the in-phase and quadrature results of correlation outputs. In one embodiment, the averages can be over two, three, or four GNSS signal components from a single GNSS SV. Several different methods, described below, allow a GNSS receiver to acquire secondary code phase of L5 GNSS signals without using LI GNSS signals. According to one embodiment, a method to acquire secondary code phase of GNSS signals can include the following operations: acquiring one or more primary codes of received L5 GNSS signals; determining, for each transition between received primary code epochs in each of the one or more primary codes of the received L5 GNSS signals, a phase change value for each L5 GNSS signal, wherein a set of phase change values in a sequence over time is determined; storing the set of phase change values in a data structure (e.g., a histogram); comparing the set of phase change values in the data structure to a set of expected phase change values derived from one or more secondary codes associated with the one or more primary codes from one or more GNSS satellites, wherein these primary and secondary codes are further associated with a uniquely identified GNSS satellite and its signal transmissions; and determining, from the comparison, one or more code phases of the one or more secondary codes. In one embodiment, the method can further include the operations of: performing, after a primary code phase and an associated secondary code phase have been determined for components of one of the received L5 GNSS signals, narrowband tracking operations on at least one of the components of the received L5 GNSS signals; determining, based on one or more outputs from the tracking operations, one or more position solutions. Each phase change value represents an indication of a change in phase of the secondary code associated with the primary code from the GNSS satellite that transmitted the primary code, and the operation of determining the phase change values comprises computing a cosine of a value at each transition between two consecutive primary code epochs. The set of expected phase change values are derived from a secondary code by transforming the secondary code into a sequence of phase change values, across epochs in the secondary code, over a set of index values in the data structure. The acquisition of the primary code comprises determining a code phase of the primary code. In one embodiment, the method can further include the operation of: cross checking determined secondary code phases from different channels of L5 GNSS signals from the same GNSS satellite, and the comparing uses the phase change values from the different channels of the same GNSS SV to derive a comparison output that is used to determine one or more secondary code phases. According to another embodiment, another method to acquire secondary code phase of GNSS signals can include the following operations: receiving GNSS signals from a GNSS satellite containing a first set of secondary codes and a first set of primary codes, the first set of secondary codes including at least a first secondary code having a first length in bits and a second secondary code having a second length in bits, the first length being greater than the second length; correlating coherently, in a first correlation operation, a first set of the received GNSS signals (e.g., from a first Galileo GNSS SV) with locally generated secondary codes corresponding to the first set of secondary codes, the first correlation operation extending over the first length of the first set of received GNSS signals, and the first correlation operation correlating coherently for each value of a set of possible code phase hypotheses and a set of frequencies; correlating coherently, in a second correlation operation that follows the first correlation in time, a second set of the received GNSS signals (e.g., from the first Galileo GNSS SV that were received after the first set of received GNSS signals) with the locally generated secondary codes corresponding to the first set of secondary codes, the second correlation operation extending over the first length of the second set of received GNSS signals, and the second correlation operation correlating coherently for each value of a set of possible code phase hypotheses and over the set of frequencies; combining results from the first correlation operation with results from the second correlation operation; and determining from the combined results one or more secondary code phases for the first set of secondary codes. The first correlation operation and the second correlation operation can be performed using discrete Fourier transforms or hardware correlators. The first set of secondary codes can comprise four secondary codes for four components of GNSS signals from the same GNSS satellite, and the first correlation operation is coherent over the first length for the first set of secondary codes and the second correlation operation is coherent over the first length for the first set of secondary codes. In one embodiment, the combining integrates non-coherently the results from the first correlation operation with results from the second correlation operation. In one embodiment, the first correlation operation includes correlating the first set of the received GNSS signals from a GNSS satellite with locally generated primary codes corresponding to the first set of secondary codes, and wherein the second correlation operation includes correlating the second set of the received GNSS signals (from the GNSS satellite) with the locally generated primary codes corresponding to the first set of secondary codes; the second set of received GNSS signals are received after reception of the first set of received GNSS signals. According to another embodiment, another method to acquire secondary code phase of GNSS signals can include the following operations: acquiring, over multiple primary code epochs, primary code phases of a plurality of GNSS signals from a plurality of GNSS satellites of at least one GNSS constellation, the acquisition producing a set of correlation values over a set of time intervals of the multiple primary code epochs for the plurality of GNSS satellites, such that for each time interval there are a plurality of correlation values specifying the acquired primary code phases from the plurality of GNSS satellites; evaluating, within each time interval in the set of time intervals, the plurality of correlation values in one of the time intervals to determine a pattern of values, derived from the plurality of correlation values in the time interval, that maximizes a sum of the plurality of correlation values; determining, based on the plurality of GNSS satellites for which primary code phases have been acquired, an expected sequence of phase reversals for secondary codes associated with the primary code phases that have been acquired, the expected sequence determined over the set of time intervals; comparing each determined pattern of values for one of the time intervals with the expected sequence of phase reversals for the secondary codes; and determining, from the comparison, one or more code phases for the secondary codes. A set of discrete Fourier transform operations can be used to acquire the primary code phases. In one embodiment, the plurality of GNSS satellites are from only one GNSS constellation while in another embodiment, the plurality of GNSS SVs are from a plurality of different constellations. In one embodiment, the comparison determines a plurality of code phases for the secondary codes by considering relative delay information across the received GNSS signals from different GNSS satellites and the comparison concurrently determines, at once for all of the different GNSS satellites, the plurality of code phases for the secondary codes. The method can also determine whether the set of intervals is sufficiently large to provide reliable determination of the one or more code phases for the secondary codes. According to another embodiment, another method to acquire secondary code phase of GNSS signals can include the following operations: determining a secondary code phase of a received GNSS signal from a first GNSS satellite; determining a difference between the determined secondary code phase of the received GNSS signal from the first GNSS satellite and a predicted secondary code phase of a received GNSS signal from a second GNSS satellite which is different than the first GNSS satellite; and correcting the predicted secondary code phase based on the determined difference. The correcting can include: (1) comparing the determined difference to a fraction of a code length in time of an epoch of the secondary code and (2) (a) adding the code length in time to the determined difference if the determined difference is less than the fraction and wrapping a result of the addition within a range of possible values in milliseconds of the code length or (b) subtracting the code length in time from the determined difference if the determined difference is more than the fraction and wrapping a result of the subtraction within a range of possible values in milliseconds of the code length. In one embodiment, the method can further include the operations of: determining additional secondary code phases of other received GNSS signals from other GNSS satellites; determining additional differences between the determined additional secondary code phases and the predicted secondary code phase; and wherein the correcting is based on the determined difference and the additional differences. In one embodiment, the correcting can be based on the highest likelihood difference among the determined difference and the additional differences. According to another embodiment, another method to acquire secondary code phase of GNSS signals can include the following operations: receiving GNSS signals containing one or more primary codes and one or more secondary codes from a GNSS satellite; generating, from the received GNSS signals, first correlation outputs from an acquisition correlation process that operates on the received GNSS signals, the first correlation outputs including secondary code correlation cycles, over time, of the one or more secondary codes; determining a set of one or more expected secondary code sequences, over time, of the one or more secondary codes; computing a differential secondary code sequence based on the determined set of one or more expected secondary code sequences; computing a set of differential correlation samples based on the first correlation outputs and a complex conjugate of each of the first correlation outputs; correlating the set of differential correlation samples against the differential secondary code sequence to provide a set of second correlation outputs; and determining, from the set of second correlation outputs one or more secondary code phases of the one or more secondary codes. The differential secondary code sequence can be computed based on a product of an expected secondary code sequence and a delayed version of the expected secondary code sequence. The delayed version can be delayed by a fraction of one or more primary code epochs or by a duration of one bit in the secondary code. In one embodiment, the first correlation outputs provide complex data that comprises real part data and imaginary part data, and the complex conjugate operates on the imaginary part data. The correlating can be performed over a plurality of secondary code epochs and can be performed with one or more discrete Fourier transform operations. In one embodiment, the set of second correlation outputs includes a value of a real part of a peak, and the secondary code phase is determined from an absolute value of the real part. In one embodiment, the correlating includes: circularly cross correlating the set of differential correlation samples against the differential secondary code. In one embodiment the correlating can include the following operations: computing a discrete Fourier transform of the set of differential correlation samples to produce a first set of results; computing a discrete Fourier transform of the differential secondary code sequence to produce a second set of results; multiplying the first set of results by a complex conjugate of the second set of results to produce a first product; and computing an inverse discrete Fourier transform of the first product. In one embodiment, the method can further include the operation of: correlating a set of differential correlation outputs against a further delayed differential secondary code, based on the determined set of one or more expected secondary code sequences, to provide a set of third set of correlation outputs that is used to check the set of second correlation outputs. Another aspect relates to the synthesis of a set of punctual correlation outputs. These synthesized punctual correlation outputs can be used, in one embodiment, to determine an error signal for a discriminator to adjust a carrier phase lock loop to lock to a carrier phase of a GNSS signal that is being tracked during tracking mode of a GNSS receiver. An embodiment according to this aspect can include the following operations: generating a sample clock having a sample clock frequency; determining a set of correlation outputs that include a set of early correlation outputs at the sample clock frequency and a set of late correlation outputs at the sample clock frequency; and synthesizing a set of punctual correlation outputs from at least one of: (a) the set of early correlation outputs or (b) the set of late correlation outputs. The set of punctual correlation outputs can be synthesized in the GNSS receiver during a tracking mode of operation in which a GNSS signal is tracked after having been successfully acquired (by having determined the primary code phase and the secondary code phase of the GNSS signal). In one embodiment, no local punctual code is generated in the GNSS receiver during the tracking mode and no set of punctual correlation outputs is created in a correlator in the GNSS receiver. In one embodiment, the synthesized set of punctual correlation outputs can be used to estimate signal power to normalize a discriminator of a delay lock loop. In one embodiment, a spacing in time between samples for successive early and late correlation outputs for a GNSS signal is a single sample clock separation that is less than a chip in the GNSS signal, and the sample clock frequency can be less than a factor of 3 times an L5 chipping rate of 10.23 MHz. In one embodiment, the spacing is a narrowed code delay that reduces multipath error while maintaining the sample frequency clock frequency at less than a factor of 4 times an L5 chipping rate of 10.23 MHz. In one embodiment, the set of early correlation outputs are a set of very early correlation outputs, and wherein, if a GNSS signal is strong, the synthesized set of punctual correlation outputs is synthesized by multiplying the set of very early correlation outputs by a factor greater than 1. In one embodiment, the synthesizing comprises computing a product of a scale factor and a sum of early and late correlation outputs; the scale factor can be computed to produce, for each synthesized punctual correlation output, a synthesized punctual correlation output that has the same amplitude as a true punctual correlation output when early and late correlation outputs are balanced. In one embodiment, the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and the set of late correlation outputs comprises a set of very late correlation outputs and late correlation outputs, and wherein the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output, an early correlation output, a late correlation output, and a very late correlation output. In one embodiment, the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output and an early correlation output. In one embodiment, the set of punctual correlation outputs is synthesized for an Altboc formatted signal in a C channel of GNSS signals, and the set of punctual correlation outputs uses known predetermined phase offsets between correlations that are beyond a main peak of an Altoboc correlation. There can be one or more secondary peaks beyond the main peak that have a different phase than the main peak. In one embodiment, the synthesized set of punctual correlation outputs can be used to adjust a carrier phase lock loop, and a carrier phase for the carrier phase lock loop is generated with a synthesized punctual correlation that averages multiple correlations so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. This averaging tends to favor the earlier correlations so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. The aspects and embodiments described herein can include non-transitory machine readable media that can store executable computer program instructions that when executed cause one or more data processing systems (e.g., a GNSS processing system in a GNSS receiver) to perform the methods described herein when the computer program instructions are executed. The instructions can be stored in non-transitory machine readable media such as in dynamic random access memory (DRAM) which is volatile memory or in nonvolatile memory, such as flash memory or other forms of memory. The aspects and embodiments described herein can also be in the form of GNSS receivers or data processing systems that are built or programmed to perform these methods. For example, a data processing system can be built with hardware logic to perform these methods or can be programmed with a computer program to perform these methods and such a data processing system can be considered a system that processes GNSS signals or a GNSS receiver. The above summary does not include an exhaustive list of all embodiments and aspects in this disclosure. All systems, media, and methods can be practiced from all suitable combinations of the various aspects and embodiments summarized above and also those disclosed in the detailed description below. BRIEF DESCRIPTION OF THE DRAWINGS The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawings will be provided by the Office upon request and payment of the necessary fee. The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements. Figure 1 shows an example of a device (e.g., a smart phone) containing a GNSS receiver according to one or more embodiments described herein. Figure 2 is a flowchart that shows a method, according to one embodiment, to acquire secondary code phases of GNSS signals. Figure 3 is a flowchart that shows another method, according to another embodiment, to acquire secondary code phases of GNSS signals. Figure 4 is a flowchart that shows another method, according to another embodiment, to acquire secondary code phases of GNSS signals. Figure 5 is a flowchart that shows another method, according to another embodiment, to acquire secondary code phases of GNSS signals. Figure 6 is a flowchart that shows another method, according to another embodiment, to acquire secondary code phases of GNSS signals. Figure 7 is flowchart that shows a method, according to one embodiment, for synthesizing a set of punctual correlation outputs in a GNSS receiver (e.g., during tracking mode). Figures 8A through 8BBB are figures that are referred to in the appendix. Figure 9 is a flowchart that shows a more detailed method of the embodiment shown in figure 6. Figure 10A is a flowchart that shows a general example of a method to acquire secondary code phases using a combination of the methods described herein. Figure 1 OB is a flowchart that shows a more detailed method to acquire secondary code phases using a combination of the methods described herein. DETAILED DESCRIPTION Various embodiments and aspects will be described with reference to details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of various embodiments. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments. Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in conjunction with the embodiment can be included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment. The processes depicted in the figures that follow are performed by processing logic that comprises hardware (e.g. circuitry, dedicated logic, etc.), software, or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described may be performed in a different order. Moreover, some operations may be performed in parallel rather than sequentially. This disclosure describes various embodiments of GNSS (Global Navigation Satellite System) methods, apparatuses, systems, and non-transitory machine readable media, such as methods used in GNSS receivers, GNSS receivers, components within such receivers and non-transitory machine readable media that store executable computer program instructions which when executed in one or more processing systems in a GNSS receiver can perform one or more of the methods described in this disclosure. This description provides examples of various embodiments that can be combined in various ways as noted below; for example, one method of acquiring secondary codes of GNSS signals can be combined with another method of acquiring secondary codes of GNSS signals. For example, one such method can be used for strong GNSS signals and another such method can be used for weak GNSS signals. Thus, the embodiments are not mutually exclusive and can be combined. This description provides non-limiting examples and should not be construed as requiring, in all instances of possible implementations, all features described. All systems and methods can be practiced from all suitable combinations of the various aspects and embodiments disclosed in the description below. It will be evident that various modifications may be made to those aspects and embodiments without departing from the broader spirit and scope set forth in the following claims and the enumerated exemplary embodiments that precede the claims. This description is, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. The embodiments described herein can use one or more GNSS receiver architectures (or components, methods or portions of such architectures) described in US provisional patent application No. 62 / 915,510, filed October 15, 2019 by Paul Conflitti, et. al., (Attorney Docket No. 107505.P001Z) and this provisional patent application is hereby incorporated herein by reference. Further, the embodiments described herein can use one or more GNSS receiver architectures (or components, methods or portions of such architectures) described in US patent application No. 17 / 068,659, filed October 12, 2020 by Paul Conflitti, et. al., (Attorney Docket No. 107505.P001) and this patent application is hereby incorporated herein by reference. Figure 1 shows a general example of a device 51 that includes a GNSS receiver that can use or implement one or more embodiments described herein. These embodiments can also be used or implemented in devices that include fewer components (e.g., no cellular transceiver, no other transceiver, etc.). In one embodiment, the device 51 is a smart phone or tablet computer or laptop computer or is part of a vehicle (e.g., automobile) or is part of a wearable device or accessory (e.g., a fitness watch or smart watch or head mounted display, etc.). In an alternative embodiment, the device 51 is a simple GNSS receiver that does not include the transceivers 75. The GNSS receiving elements in the device 51 includes a GNSS antenna 53, an L5 GNSS radio frequency (RF) front end 55, an analog - to - digital (A / D) converter 57, baseband digital memory 59, a frequency lock loop (FLL which may be implemented as a phase lock loop), and a GNSS processing system 63. The GNSS antenna 53 can be a conventional GNSS antenna or a GNSS antenna that is tuned to the L5 GNSS band. Received GNSS signals from the antenna 53 can be amplified and filtered in the L5 GNSS RF front end 55 which can include at least a first RF filter that is tuned to only a frequency in the L5 wideband frequency band and a low noise amplifier. In another embodiment, the RF front end can be conventional GNSS RF front end. The US patent application No. 17 / 068,659, filed October 12, 2020, provides examples of RF front ends that can be used as the RF front end 55. The processed RF GNSS signals are output by the RF front end 55 and provided as an input to the A / D converter 57 (which can be a conventional A / D converter used for GNSS signals). The A / D converter 57 digitizes the received GNSS signals and causes them to be stored in the baseband digital memory 59; the digitized GNSS signals in the memory 59 are then processed by the GNSS processing system 63. The digitized GNSS signals are, in one embodiment, only L5 GNSS signals (no LI GPS signals and no LI GNSS signals). In one embodiment, the GNSS receiver in device 51 does not receive and does not acquire LI GNSS signals. In one embodiment, the GNSS receiver in device 51 does not use LI GNSS signals to aid in the acquisition of secondary codes in L5 GNSS signals. The GNSS processing system 63 in figure 1 can include an acquisition engine (AE) 65, a secondary code processing system 67, a tracking engine 69, and a position solution engine 71. The acquisition engine 65 can be the same as one of the acquisition engines described in US application No. 17 / 068,659, filed October 12, 2020. This acquisition engine 65 can acquire the primary codes in GNSS signals from a plurality of L5 GNSS SVs (such as SVs from: a Galileo E5 constellation of GNSS satellites; or an L5 GPS constellation of GNSS satellites; or a Glonass K2 constellation of GNSS satellites; or a QZSS constellation of GNSS satellites; or a Beidou B2 constellation of GNSS satellites). The acquisition engine 65 and the tracking engine 69 can use the frequency lock loop (FLL) 61 to maintain a lock to the carrier phase of the GNSS signals as is known in the art. The methods described herein also include methods that use the FLL with synthesized punctual correlation outputs. The tracking engine 69 can use techniques known in the art to track acquired GNSS signals, and the position solution engine 69 can be a conventional position solution engine that uses techniques known in the art to compute position solutions based on pseudoranges and GNSS SV ephemeris data from the tracking engine 69 and other data available to the position solution engine 69. The secondary code acquisition processing system 67 can use one or more of the methods (see, e.g., figures 2 -6) described herein to acquire secondary code phase from L5 GNSS signals (normally done after the primary code phases have been acquired by the AE 65 but before narrowband tracking of the GNSS signal components in the tracking engine 69). The secondary code acquisition processing system 67 can be implemented in hardware logic and circuitry or can be implemented in programmable logic such as a digital processing system that executes one or more computer programs or can be implemented in a combination of hardware logic and circuitry and programmable logic. The secondary code acquisition processing system 67, in one embodiment, acquires the secondary code phases of L5 GNSS signals without using LI GNSS signals to acquire those secondary code phases. The device 51 in figure 1 also includes a device processing system 73 that can include most or all of the components found in a smartphone including an application processing system with DRAM and flash memory and a set of sensors, such as accelerometers, compass, gyros, cameras, proximity sensors, etc. The device processing system 73 can also include a baseband processing system for controlling the cellular transceiver 75, and the device processing system is coupled to the cellular transceiver 75. The cellular transceiver 75 is coupled to one or more antennas, such as antenna 77, to provide wireless voice and data communication with a cellular telephone network. The cellular transceiver 75 can also include other wireless transceivers, such as transceivers for WiFi networks, Bluetooth, etc. The transceiver 75 can be used to provide assistance data or position aiding data 79 (e.g., estimated Doppler data for GNSS SVs in view of the GNSS receiver based on an approximate location of the GNSS receiver, SV ephemeris data, etc.) to the GNSS receiver; the use of such position aiding data is known in the art, including many US patents issued to SnapTrack, Inc. of California. In the methods described below, the secondary code acquisition processing system 67 in figure 1 can acquire code phases of secondary codes of L5 GNSS signals while a time uncertainty exceeds 0.5 milliseconds; for example, the estimated error for current time can exceed 1 millisecond, in one embodiment, prior to acquiring the code phases of one or more secondary codes of L5 GNSS signals. When a set of acquired code phases from the different methods described below provide consistent, similar values (e.g., their code phase measurements are essentially the same), this verifies that the uncertainty or estimated error for current time is less than 0.5 msec. The secondary code acquisition processing system 67 in one embodiment as described below can acquire a code phase of a secondary code by using multiple GNSS signal components in L5 wideband GNSS signals from a single GNSS satellite (e.g., E5a GNSS signal and E5b signal from the same SV). The secondary code acquisition processing system 67, in one embodiment described below, can acquire a code phase of a secondary code using multiple GNSS signals from multiple GNSS SVs. The GNSS receiver in device 51 can use detected phase changes between successive primary code epochs to generate a compensated frequency used in the FLL 61 to reduce errors in estimating frequency of received L5 GNSS signals. For example, the GNSS processing system 63 can detect phase changes between successive primary code epochs, the phase changes detected from in-phase and quadrature results of correlation outputs in the GNSS processing system; the GNSS processing system 63 can average the phase changes detected from the in-phase and quadrature results of correlation outputs to produce an estimated frequency error. The GNSS processing system 63 can provide a compensated frequency, based on the estimated frequency error, to one or more discriminators of the FLL 61, and the FLL 61 can be configured to reduce error in estimations of frequency of received L5 GNSS signals based on the estimated frequency error. In one embodiment, the FLL 61 can include a first discriminator for a first sideband of L5 GNSS signals (e.g., an E5a signal) and a second discriminator for a second sideband of L5 GNSS signals (e.g., an E5b signal), and wherein the estimated frequency error is a filtered estimate based on the averages of the phase changes detected from the in-phase and quadrature results of correlation outputs. In one embodiment, the averaging comprises averaging phase changes detected over two, three, or four GNSS signal components from a single GNSS satellite, and the FLL 61 detects phase changes between successive primary code epochs. The use of multiple signal components from the same GNSS SV can improve the accuracy and reliability of the FLL 61. A method for acquiring secondary code phases of secondary codes in L5 GNSS signals will now be described while referring to figure 2. The method shown in figure 2 can create a data structure, such as a histogram, that can be used to determine secondary code phases of secondary codes in L5 GNSS signals that are received by a GNSS receiver, such as the GNSS receiver shown in figure 1. In operation 101 in figure 2, a GNSS receiver can acquire one or more primary codes of received L5 GNSS signals; for example, in the case of the GNSS receiver shown in figure 1, the AE 65 can acquire these primary codes; the acquisition of a primary code includes identifying the GNSS SV that transmitted the primary code and determining the code phase of the received primary code. Then in operation 103 the GNSS receiver can determine, for each transition between received primary code epochs, a phase change value for each acquired GNSS signal and generate a set of phase change values in a sequence over time represented by a sequence of time bins (with at least one phase change value in each time bin that represents a portion of time in the sequence over time). Each phase change value (e.g., a 1 or a zero) represents a decision about whether a change in angular phase (e.g., a quantized change from 0 degrees to 180 degrees or a quantized change from 180 degrees to 0 degrees) occurred in a particular time bin for the secondary code associated with the primary code from the GNSS satellite that transmitted the primary code. This decision can be represented by a binary value that represents whether a 180 degree angular phase change occurred within each of the time bins, and each phase change value can be expressed as one of the binary values. This set of phase change values can then be stored in operation 105 in a data structure, such as a histogram (which can be visualized with time bins along the x axis and counts of 180 degree angular phase change events in the y axis). The set of phase change values stored in the data structure can then be compared, in operation 107, to a set of expected phase change values derived from secondary codes associated with the acquired primary code (from operation 101) in the GNSS signals from the GNSS SV. Each primary code from an identified GNSS SV (identified by acquiring its primary code phase) will have an associated secondary code with known angular phase changes relative to the primary code. The comparison in operation 107 allows the GNSS receiver to determine, in operation 109, a secondary code phase for each GNSS signal that was processed using operations 101, 103, 105, and 107. For example, the method shown in figure 2 can be used on the E5a and E5b signals from the same GNSS SV to determine the secondary code phase of the E5a GNSS signal and the secondary code phase of the E5b GNSS signal from the same GNSS SV. In one embodiment, the method can cross check the results of the secondary code phase from these different channels of L5 GNSS signals from the same GNSS SV. After operation 109, the GNSS receiver has acquired the primary and secondary code phases for a GNSS signal and can proceed to track, using narrowband tracking in operation 111, the GNSS signals to derive pseudoranges using techniques known in the art. Then in operation 113, the GNSS receiver can determine one or more position solutions based on the tracked GNSS signals. In one embodiment of the method shown in figure 2, the set of expected phase change values are derived from a secondary code by transforming the secondary code into a sequence of phase change values, across epochs in the secondary code, over a set of index values in the data structure. In one embodiment of the method shown in figure 2, the determining of the phase change values comprises computing a cosine of a value at each transition between two consecutive primary code epochs. In one embodiment of the method shown in figure 2, the data structure is a set of histograms, with at least one histogram per channel of L5 GNSS signals from a particular GNSS satellite, and the stored set of phase change values comprise phase change values for the two orthogonal data and pilot signal components in the same band of the same satellite, and wherein the comparing uses the phase change values from these data and pilot components to derive a comparison output that is used to determine one or more secondary code phases. In one embodiment of the method in figure 2, the GNSS receiver can determine if the phase change values are faulty due to frequency error and reset the data structure if the phase change values are faulty. In one embodiment of the method shown in figure 2, the method can estimate one or more frequencies of the one or more primary codes of the received L5 GNSS signals, and the method can detect a frequency error across a bank of correlators using a code phase trajectory across the bank of correlators and can, in response to the detected frequency error, reset data in the data structure. In one embodiment of the method shown in figure 2, the GNSS receiver can predict code Doppler slope from a discriminator trajectory over time, the discriminatory trajectory being an output from a discriminator in a code tracking loop; the GNSS receiver can then estimate a frequency error based on the predicted code Doppler slope and then detect secondary code phase from phase change values associated with primary codes at a frequency offset determined by the estimated frequency error. In one embodiment of the method in figure 2, the GNSS receiver can end the method if a time uncertainty value is less than 0.5 millisecond. In one embodiment, if the secondary code phase results from a plurality (e.g., 2 or 3) of the secondary code phase methods (described herein) are substantially consistent and agree, then it can be concluded that time uncertainty is less than 0.5 millisecond (so that current time is known within less than 0.5 millisecond error). In one embodiment of the method in figure 2, the GNSS receiver can perform two sets of correlation operations on a primary code (at different frequency offsets) to determine two sets of phase change values at the different frequency offsets. For example, the GNSS receiver can perform a first set of correlation operations on primary codes at a first frequency offset from a center frequency to determine phase change values at the first frequency offset and also perform a second set of correlation operations on primary codes at a secondary frequency offset from the center frequency to determine phase change values at the second frequency offset. This can allow the GNSS receiver to determine the effect of variations in frequency due to frequency error. The GNSS receiver can also apply confidence values to the phase change values and store these confidence values in the data structure; for example, the GNSS receiver can determine, for each phase change value in at least a subset of the phase change values in the data structure, a confidence value based on a signal to noise ratio associated with each phase change value and storing the confidence values in the data structure. Decreasing confidence values over time can indicate increasing frequency errors (or other problems), which can indicate that the GNSS receiver should reset the data structure (e.g., wiping out or erasing all the data in the data structure to begin collecting new phase change values). Further details regarding the embodiments that can use a method in figure 2 are provided in the appendix (e.g., see the section under the heading that includes the phrase: “differential histogram method”). Another method for acquiring secondary code phases of secondary codes in L5 GNSS signals will now be described while referring to figure 3. The method shown in figure 3 can use several coherent correlation operations using the longest secondary code length as the period of time for the coherent correlation operations over all of the secondary codes (or a subset of the secondary codes). Different secondary codes from the same GNSS SV have different lengths in certain L5 GNSS systems; for example, in the Galileo E5 constellation, the secondary codes associated with different primary codes from the same GNSS SV have different lengths, and this property is used in the method in figure 3. In operation 151 in figure 3, a GNSS receiver receives a first set of GNSS signals and a second set of GNSS signals that include a first secondary code that has a first length (e.g., the first secondary code has the longest length of all codes from the same GNSS SV) and a second secondary code that has a second length that is smaller than the first length. In operation 153, the GNSS receiver performs a first coherent correlation operation on the first set of received GNSS signals (e.g., from a first Galileo GNSS SV), over a set of possible code phase hypotheses and a set of frequencies for the first secondary code and the second secondary code, over the period of time of the first length; in one embodiment, the GNSS receiver in operation 153 locally generates the first and the second secondary codes at each value of the possible code phase hypotheses and set of frequencies when coherently correlating against the received first set of GNSS signals. In one embodiment, the first coherent correlation operation (in operation 153) can be performed for all four secondary code components in GNSS signals from a GNSS SV such as a Galileo GNSS SV (so all four secondary code components are correlated in the first coherent correlation operation). In operation 155, the GNSS receiver performs a second coherent correlation operation (that follows, in time, the first correlation operation) on the second set of received GNSS signals (e.g., from the first Galileo GNSS SV), over a set of possible code phase hypotheses and a set of frequencies for the first secondary code and the second secondary code, again over the period of time of the first length; in one embodiment, the GNSS receiver in operation 155 locally generates the first and the second secondary codes at each of the possible code phase hypotheses and each of the set of frequencies when coherently correlating against the received second set of GNSS signals. The second set of received GNSS signals, in one embodiment, are received after the first set of GNSS signals are received. In one embodiment, the second coherent correlation operation (in operation 155) can be performed for all four secondary code components in GNSS signals from a GNSS SV such as a Galileo GNSS SV (so all four secondary code components are correlated in the second coherent correlation operation). Then in operation 157, the GNSS receiver can combine the results from the first and second coherent correlation operations and determine, in operation 159, one or more secondary code phases for one or more secondary codes based on the combined results; for example, the code phase of the longest secondary code is determined in operation 159. The combining in operation 157 can be a non-coherent integration in one embodiment, and the integrated results are sorted within each frequency to select the highest magnitude value in the combined results. In one embodiment, the first and the second correlation operations can be performed in the GNSS receiver using discrete Fourier transforms; in another embodiment, the first and the second correlation operations can be performed in the GNSS receiver using hardware correlators. In one embodiment, the first correlation operation is coherent over the first length for all four secondary codes in the first set of received GNSS signals, and the second correlation operation is coherent over the first length for all four secondary codes in the second set of received GNS signals, and in both of these correlation operations all four secondary codes are correlated. In one embodiment, the first correlation operation includes correlating the first set of the received GNSS signals with locally generated primary codes corresponding to the first set of secondary codes, and the second correlation operation includes correlating the second set of the received GNSS signals with the locally generated primary codes corresponding to the first set of secondary codes. In the context of this method in figure 3, it will be understood that a correlation is a comparison of a sequence of received data samples with a stored set of reference samples, typically performed by multiplying each received data sample by a corresponding reference sample and summing the result. In one embodiment, the set of frequencies are separated by a minimum step size, and an improved frequency estimate for one or more channels is further determined. Further details about the method in figure 3 are provided, among other locations, in the appendix under the heading that includes the phrase “Coherent secondary code methods”. Another method for acquiring secondary code phases of secondary codes in L5 GNSS signals will now be described while referring to figure 4. The method shown in figure 4 can use multiple signals from several GNSS SVs from the same GNSS constellation or different GNSS constellations to derive one or more secondary code phases. In operation 201 in figure 4, a GNSS receiver can acquire, over multiple primary code epochs, primary code phases of a plurality of GNSS signals from a plurality of GNSS satellites of at least one GNSS constellation, the acquisition producing a set of correlation values over a set of time intervals of the multiple primary code epochs for the plurality of GNSS satellites, such that for each time interval there are a plurality of correlation values specifying the acquired primary code phases from the plurality of GNSS satellites. In the context of this description, code phase means a difference, in time, between a detected beginning of a code sequence (e.g., a detected beginning of an epoch of the code sequence in a received GNSS signal) and an expected (or local reference) beginning of the code sequence (e.g., a beginning of an epoch of a locally generated code sequence). Then in operation 203, the GNSS receiver can evaluate, within each time interval in the set of time intervals, the plurality of correlation values in one of the time intervals to determine a pattern of values, derived from the plurality of correlation values in the time interval, that maximizes a sum of the plurality of correlation values. In operation 205, the GNSS receiver can determine, based on the plurality of GNSS satellites for which primary code phases have been acquired, an expected sequence of phase reversals for secondary codes associated with the primary code phases that have been acquired, the expected sequence determined over the set of time intervals. In operation 207, the GNSS receiver can compare each determined pattern of values for one of the time intervals with the expected sequence of phase reversals for the secondary codes. This comparison in operation 207 can allow the GNSS receiver to determine, in operation 209, one or more code phases for the secondary codes. In one embodiment, the comparison determines a plurality of code phases for the secondary codes by considering relative delay information across the received GNSS signals from different GNSS satellites, and the comparison concurrently determines, at once for all of the different GNSS satellites, the plurality of code phases for the secondary codes. In one embodiment, the method in figure 4 can determine whether the set of intervals is sufficiently large to provide reliable determination of the one or more code phases for the secondary codes. In one embodiment, the primary code phases are acquired either with discrete Fourier transforms or hardware correlators. Following the method shown in figure 4, A GNSS receiver can also perform, after a primary code phase and an associated secondary code phase have been determined for components of one of the received GNSS signals, tracking operations on at least one of the components of the received GNSS signals and determine, based on one or more outputs from the tracking operations, one or more position solutions. Further details about the method in figure 4 are provided, among other locations, in the appendix under the heading that includes the phrase “Cross-SV ensemble correlation integration method”. Another method for acquiring secondary code phases of secondary codes in L5 GNSS signals will now be described while referring to figure 5. The method shown in figure 5 can use data about secondary code phase measurements for a first secondary code to adjust correlations for a secondary code acquisition process for a second secondary code that is different than the first secondary code. This method can be referred to as a “transfer” method, and it can provide fast results (often faster than the other secondary code phase acquisition methods described herein). In operation 251 in figure 5, a GNSS receiver determines a secondary code phase of a received GNSS signal from a first GNSS SV. Then in operation 253, the GNSS receiver determines a difference between the determined secondary code phase of the received GNSS signal from the first GNSS satellite and a predicted secondary code phase of a received GNSS signal from a second GNSS satellite which is different than the first GNSS satellite. The GNSS receiver can then, in operation 255, correct the predicted secondary code phase based on the difference determined in operation 253. For example, if the difference indicates that the predicted secondary code phase is early in time, the correction can adjust the predicted secondary code phase by making less early in time. This allows the GNSS receiver to use strong signals from some GNSS SVs (e.g., unobstructed signals) to correct predicted secondary code phases for other (e.g., weaker) GNSS signals from other GNSS SVs. The method in one embodiment can further include the operations of: determining additional secondary code phases of other received GNSS signals from other GNSS satellites; determining additional differences between the determined additional secondary code phases and the predicted secondary code phase; and correcting the predicted secondary code phase based on the determined difference and the additional differences. In one embodiment, the correcting is based on the highest likelihood difference among the determined difference and the additional differences. In one embodiment, the correcting can include: (1) comparing the determined difference to a fraction of a code length in time of an epoch of the secondary code and (2) (a) adding the code length in time to the determined difference if the determined difference is less than the fraction and wrapping a result of the addition within a range of possible values in milliseconds of the code length or (b) subtracting the code length in time from the determined difference if the determined difference is more than the fraction and wrapping a result of the subtraction within a range of possible values in milliseconds of the code length. In one embodiment, the method can further include the operation of: using the corrected secondary code phase for the second GNSS satellite to wipe the secondary code from the received GNSS signal from the second GNSS satellite to allow coherent integration of a primary code from the second GNSS satellite. A GNSS receiver using the method in figure 5 can determine a position solution for the GNSS receiver from a plurality of GNSS satellites including the first GNSS satellite but not the second GNSS satellite prior to correcting the predicted secondary code phase. Further details about the method in figure 5 are provided, among other locations, in the appendix under the heading that includes the phrase “Transfer method to Predict Secondary Code Phase”. Another method for acquiring secondary code phases of secondary codes in L5 GNSS signals will now be described while referring to figure 6. The method shown in figure 6 can use what may be referred to as a coherent differential method to determine secondary code phases; this method is further described in the appendix (e.g., see the section under the heading that includes the phrase: “Coherent Differential Method”). This method has the merit that it largely circumvents the requirement to search for carrier frequency in acquiring the secondary code phase. In operation 301 in figure 301, a GNSS receiver receives GNSS signals containing one or more primary codes and one or more secondary codes from a GNSS SV. Then in operation 303, the GNSS receiver, using the received GNSS signals, acquires the primary pseudorandom code by determining the code phase between the received signal and a reference code and generates a first set of correlation outputs that includes a set of one or more secondary code correlation cycles of the one or more secondary codes. This first set of correlation outputs typically are a sequence of data with each element produced once per cycle of the primary pseudorandom code; in particular for L5 bands the rate is once per millisecond. Each such output is typically further modulated by the secondary code. To avoid confusion, in the following discussion, additional correlation outputs sets refer to that produced by cross-correlation operations between samples of data and locally generated secondary code data, where an output set contains correlation values for a set of different hypothesized sample delays (samples being increments of 1 msec in the L5 example). Hence, in an exemplary embodiment the set of second or third correlation outputs discussed in the following may be of size 100 if the secondary code length is 100. The second or third correlation outputs are sometimes referred to as cross-correlation “functions” or “correlation functions”. In operation 305, the GNSS receiver locally generates a set of one or more expected secondary code sequences, over time, based on the SVs in view of the GNSS receiver. This set of expected secondary code sequences is used by the GNSS receiver in operation 307 to compute a differential secondary code sequence based on the set of one or more expected secondary code sequences. In operation 309, the GNSS receiver computes a set of differential correlation samples based on the first correlation outputs and a complex conjugate of each of the first correlation outputs. Then in operation 311, the GNSS receiver computes a correlation function from the set of differential correlation samples and the differential secondary code sequence to provide a set of second correlation outputs. Using the set of second correlation outputs, the GNSS receiver in operation 313 determines one or more code phases of the one or more secondary codes. In one embodiment, the differential secondary code sequence is computed based on a product of an expected secondary code sequence (e.g., the expected sequence of phase changes in an expected secondary code from a GNSS in view of the GNSS receiver at the current time) and a delayed version of the expected secondary code sequence; the delayed version can be delayed by a fraction of one or more primary code epochs or by a duration of one or more bits in the secondary code. In one embodiment the differential correlation samples are computed based on a product of the first correlation outputs and a delayed version of the complex conjugate of the first correlation outputs. In one embodiment the delay is set to that corresponding to a delay used in the differential secondary code sequence. For example, a delay of one sample of the differential correlation sample set corresponds (e.g. a delay of 1 msec) to a delay of one sample of the secondary code sequence. In this manner the new sample set and code sequences so constructed differentially will have the same code phase sequences, when aligned properly in phase. This alignment is performed by the subsequent correlation process formed upon the differential correlation samples and the differential code phase sequence. In one embodiment, the first correlation outputs provide complex data that comprises real part data and imaginary part data, and the complex conjugate operates on the imaginary part data. In one embodiment, the correlation in operation 311 is performed over a plurality of secondary code epochs and can be performed with one or more discrete Fourier transforms. In one embodiment, the set of second correlation outputs includes a value of a real part of a peak, and the secondary code phase is determined from an absolute value of the real part. In one embodiment the secondary code phase is determined from the magnitude of the second correlation outputs. In one embodiment, the correlation in operation 311 is a circular cross correlation of the set of differential correlation samples against the differential secondary code sequence. In one embodiment, the correlation in operation 311 can include the following operations: computing a discrete Fourier transform of the set of differential correlation samples to produce a first set of results; computing a discrete Fourier transform of the differential secondary code sequence to produce a second set of results; multiplying the first set of results by a complex conjugate of the second set of results to produce a first product; and computing an inverse discrete Fourier transform of the first product. In one embodiment, the method according to figure 6 can include a further correlation in which a different set differential correlation samples is correlated against a further delayed differential secondary code, based on the determined locally generated set of one or more expected secondary code sequences, to provide a set of third set of correlation outputs that may be used to check the set of second correlation outputs. This different set of samples may be formed, for example, by utilizing a different delay in forming a product of the first correlation outputs and a delayed version of it. In another embodiment the second set of correlation outputs is added to the third set of correlation outputs to provide a correlation output function with improved fidelity. In one embodiment second and third correlation outputs are added coherently and either the individual real and imaginary components are examined to determine secondary code phase or the magnitude or squared magnitude of the third correlation outputs is examined to determine the secondary code phase. An example of this operation (for Galileo SV code 1 secondary code 1) is shown in the middle portion of Figure 8AAA . In another embodiment the magnitudes of the second and third correlation outputs are added. An example of this operation is shown in the middle portion of Figure 8BBB. In yet another embodiment the squares of the magnitudes of the second and third correlation outputs are added. The rightmost portion of these plots also show results when including fourth and fifth correlation outputs. One notes the improved output SNR with the combining of a multiplicity of outputs. The addition of magnitudes or magnitudes squared (incoherent addition), rather than coherent addition of components, reduces losses present when large carrier frequency errors exist. The plots 8AAA assume zero frequency error, in order to show improvement when performing coherent combining under small frequency error conditions. With larger errors, coherent combining may provide less improvement or even reduction in performance. This is contrast to noncoherent combining which is little affected by frequency errors. However, the coherent combining produces better performance when frequency errors are small. In these embodiment utilizing a combination of the second and third correlation outputs, the third correlation output calculation uses a delay for the differential secondary code and for the differential correlation samples corresponding to one another and different than that used to form the second set of correlation outputs. For example, the second set of correlation outputs may have used delay of one sample time to construct the differential samples and differential secondary code and the third set of correlation outputs may have used delay 2 sample times. Figure 10B shows an example of the use of different delays using a method based on the method shown in figure 6. In other embodiments additional delays may be employed to form additional sets of correlation outputs which may be added together coherently or noncoherently in a manner similar to that described above. By constructing these additional sets the fidelity of the combined correlation outputs is improved both from a signal-to-noise standpoint as well as reducing so-called correlation sidelobes that may mask the position of the maximum correlation peak and hence provide incorrect secondary phase determination. The choice of a specific delay set may be done to minimize the resulting correlation sidelobes, whereas the choice of the number of delays in the set principally determines the improvement in signal-to-noise ratio. For example, simulation has indicated that for Galileo SV number 1, if 4 delays are to be used with each delay in the range of 1 to 8 secondary code samples, the optimal choice of delays to minimize the maximum sidelobe are 4,5,7, and 8 yielding a peak to maximum sidelobe of 8 1 / 3 (18.4 dB) whereas if one used 1,2,3, and 4 the peak to maximum sidelobe would be 7.14 (17 dB), Figures 8AAA and 8BBB, for the Galileo SV code 1 example, show cross correlation functions that appear periodic every 100 code symbols. This is due to the repetition of the reference code five times, in this example. Hence, one need only to look at the first 100 outputs of such functions to determine the synchronization of the secondary code sequence. In practice (in this example) instead of performing a crosscorrelation of the 5 frames against a repeated reference, one can do successive cross correlations of blocks of 100 differentially constructed data samples against a single period of the reference, and then add the results of these blocks coherently to gain the same result that of the first 100 outputs of the functions of Figures 8AAA and 8BBB. This minimizes calculations without incurring any losses. This simplification obviously applies to processing any number of blocks of samples. For additional clarity we provide here a simple example of an exemplary processing procedure with the above method using a delay of 1 msec appropriate to an L5 secondary code signal. We also assume that the boundaries of the primary correlation output coincides with that of the secondary code (in practice it may be off by a fraction of a chip). Assume the primary code correlation output is denoted c(t), t=O,d,..,(N-l) X d where N is any number desired for sensitivity, and where d is 1 msec. Each output sample is phase inverted by the secondary code, say s(m-p), m=0, 1,2, ... where p represents an unknown timing of the secondary code to be determined. The differential correlation samples are then constructed as b(t)=c(t) X c*(t-l) where the asterisk means complex conjugate. This contains a modified secondary sequence, which we call the differential secondary code, s(m-p) X s(m-l-p) multiplied by a constant phase angle exp(j27tfed), where fe is a frequency error and d is 1 msec and where p represents the unknown code phase. This is at baseband with no additional carrier. The procedure is then to construct a cross-correlation function, or more precisely circularly cross-correlation function, from the differential correlation samples b and differential secondary code c(t) x c(t-l). This is best done if the length of dataN is chosen to be equal to or a multiple of the sequence length c. This cross-correlation at all offsets can be done most expeditiously, and nearly instantaneously, using an FFT (Fast Fourier Transform). A peak found in the correlation process is indicative of the phasing of the secondary code within the primary code. As discussed above, the delay d can be chosen to be different values, e.g. 1, 2, 3, 4, ..., thus producing different, nearly independent, output sequences, which may be combined in a variety of ways for sensitivity improvement (e.g. coherently, incoherently, false alarm checking, etc.). By combining a multiplicity of such output sequences with different delays such sensitivity improvement may overcome signal-to-noise ratio losses associated with the nonlinear construction of the differential correlation samples. It should be noted that differential correlation samples are at baseband without a carrier presence and hence this approach obviates the need to first determine carrier frequency, a difficult process if large carrier frequency uncertainty is present and high sensitivity is desired. Another aspect of this disclosure involves the generation of synthetic punctual correlation outputs which can be used to generate an error signal for a discriminator in a phase lock loop used in the GNSS receiver to track and lock to a carrier phase of GNSS signals received at the receiver. In one embodiment, no local punctual code is generated for a correlation in the GNSS receiver during the tracking mode and no set of punctual correlation outputs is created or used in a correlator in the GNSS receiver; rather, according to this aspect, the GNSS receiver synthesizes the synthetic punctual correlation outputs from early or late (or early and late) correlation outputs from hardware correlators or discrete Fourier transforms. Figure 7 shows an example of a method according to this embodiment, and the appendix (e.g., in the section with the heading “Tracking”) also provides examples of this aspect. In operation 351 in figure 7, a GNSS receiver generates a sample clock that has a sample clock frequency. In operation 353, the GNSS receiver generates a set of correlation outputs that include a set of early correlation outputs at the sample clock frequency and / or a set of late correlation outputs at the sample clock frequency. Then, in operation 355, the GNSS receiver can synthesize a set of punctual correlation outputs from at least one of: (a) the set of early correlation outputs or (b) the set of late correlation outputs. The synthesized set of punctual correlation outputs can then be used, during tracking mode in the GNSS receiver, to control or adjust control loops in the GNSS receiver, such as a phase lock loop that attempts to lock to the carrier phase of a GNSS signal. For example, as shown in operation 357, the synthesized punctual correlation outputs can be used to generate an error signal for a discriminator to adjust a carrier phase lock loop to lock to a carrier phase of a GNSS signal. The discriminator, as is known in the art, is a component in the phase lock loop (PLL) that adjusts the output of the PLL so that it stays locked to a determined phase of a received signal, and the discriminator uses an error signal to make the adjustments of the output of the PLL. In one embodiment, the synthesized set of punctual correlation outputs can be used to estimate signal power to normalize a discriminator of a delay lock loop. In one embodiment, a spacing in time between samples for successive early and late correlation outputs for a GNSS signal is a single sample clock separation that is less than a chip in the GNSS signal, and the sample clock frequency can be less than a factor of 3 times an L5 chipping rate of 10.23 MHz. In one embodiment, the spacing is a narrowed code delay that reduces multipath error while maintaining the sample frequency clock frequency at less than a factor of 4 times an L5 chipping rate of 10.23 MHz. In one embodiment, the set of early correlation outputs are a set of very early correlation outputs, and wherein, if a GNSS signal is strong, the synthesized set of punctual correlation outputs is synthesized by multiplying the set of very early correlation outputs by a factor greater than 1. In one embodiment, the synthesizing comprises computing a product of a scale factor and a sum of early and late correlation outputs; the scale factor can be computed to produce, for each synthesized punctual correlation output, a synthesized punctual correlation output that has the same amplitude as a true punctual correlation output when early and late correlation outputs are balanced. In one embodiment, the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and the set of late correlation outputs comprises a set of very late correlation outputs and late correlation outputs, and wherein the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output, an early correlation output, a late correlation output, and a very late correlation output. In one embodiment, the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output and an early correlation output. In one embodiment, the set of punctual correlation outputs is synthesized for an Altboc format in a C channel of GNSS signals, and the set of punctual correlation outputs uses known predetermined phase offsets between correlations that are beyond a main peak of an Altoboc correlation. There can be one or more secondary peaks beyond the main peak that have a different phase than the main peak. In one embodiment, the synthesized set of punctual correlation outputs can be used to adjust a carrier phase lock loop, and a carrier phase for the carrier phase lock loop is generated with an error signal from a synthesized punctual correlation that averages multiple correlations so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. This averaging tends to favor the earlier correlations so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. Further aspects of secondary codephase determination As noted above, the different methods of secondary code phase determination can be used concurrently or in a sequence. This aspect will now be further described. Two groups of methods of secondary codephase determination have been presented. The first group, called the single SV methods are the histogram method (see, e.g., Figure 2) and the coherent FFT method (see, e.g., figure 3) and the differential coherent method (see, e.g., figure 6). Each SV is processed independently in the methods of the first group. The coherent FFT can be generalized as offset N with N=0,1,2,3,4 up to M-l where M is the number of points in the secondary code sequence. The second group of methods are the transfer method (see, e.g., figure 5) and cross SV method (see, e.g., figure 4). These methods mix information across satellites (use multiple SVs are used) as well rely, in one embodiment, on additional information relating to receiver position and time. The labels for these methods (e.g., “histogram” for the method in figure 2) are used as a shorthand way of referring to a method described herein and are not intended to limit how the method is used or how claims are interpreted (e.g., a claim directed to the method of figure 2 does not require a histogram unless the claim explicitly includes the word “histogram”). The advantage of the first group is that the secondary codephase of each satellite is obtained independently from the other satellites, based solely on its input correlation sequence. The resulting atomic combination of the codephase, Doppler, secondary code and time tag provides fine-time information so that the secondary codephase can be propagated forward in time according to the expected change in codephase based on the carrier Doppler, which provides a codephase slope through the scale factor that relates carrier cycles to chips. This propagation can be used in embodiments in which secondary code phase measurements are discontinued after an initial secondary code phase acquisition. This measurement can be propagated forward in time until the uncertainty of the propagated codephase grows to more than ½ a millisecond, the length of one epoch in the secondary code sequence. Also, tracking of the satellite means the secondary code can be continuously re-anchored, even as the codephase wraps through the millisecond boundary, and either one millisecond higher or lower, depending on the direction of codephase. A decreasing codephase through 0 means the secondary codephase decreased by one, an increasing codephase through the end of the millisecond means the secondary codephase increased by one. The single SV determined secondary codephase data (e.g., from one of the methods in figures 2, 3, or 6) also provides sub and super-millisecond timing information: the codephase provides fine time information less than a millisecond, and the secondary codephase provides course time information of more than millisecond up to the length of the pilot secondary sequence length. The multiple SV group of secondary codephase determination methods are the cross-SV method (see, e.g., figure 4) and the transfer method (see, e.g., figure 5). These methods combine the correlation time series information of multiple satellites and they also rely on additional information: the receiver position and time estimates as well as satellite locations estimates at the estimated receiver time. The transfer method uses the single SV determined secondary codephase from one or more satellites through the receiver position and time estimates to the predict the secondary codephase for satellites who’s timing information has not yet been determined. It can do this even when the receiver time uncertainty is much larger than the time information gained from the single SV methods. This is because it only needs to identify the modulo pilot length portion of the receiver time error. The time error larger that the pilot length has only a second order impact on the predicted secondary codephase. The cross-SV method starts with the same position and timing information similar to the transfer method but without requiring a first single SV estimate. The purpose of the cross-SV method is to combine the correlation time series of multiple satellites to improve the overall detection probability with respect to the single SV probability. It does this by correlating the expected secondary codephase of a group of satellites based on a receiver time and position estimate against the correlation time series in a way that produces a higher SNR than would be achieved with a single SV. The predicted secondary codephase (scStart) for each satellite based on a given receiver time of week (tow) and position is the integer portion of the remainder of the satellite time of week at transmission time in milliseconds divided by the length of the pilot secondary code sequence (“length” in the equations below). The formula is summarized below: Note: based on the duality of solving at transmit or receive time, the problem could also be posed equivalently at receive time. Here, we choose transmission time. The time of week at transmission (towT) is the receiver time of week minus the propagation from the satellite to the receiver: towT (seconds) = receiver time of week at reception - pseudorange in seconds where pseudorange in seconds = pseudorange in meters / speed of light The satellite time of week in milliseconds is: towTInt = integer(towT * 1000) The predicted secondary code phase is remainder of the division by the pilot length: scPhase = remainder (towTInt / pilot secondary code length) This represents the phase of the secondary code at the receiver time of week at reception. The phase at the next epoch will increment by one secondary code chip. The next start of when the sequence occurs, scStart, occurs in modulo time as: scStart = length - (scPhase + 1) Define towTRemainder as sub-millisecond part of the millisecond time of week at transmission (towT): towTRemainder = (towT * 1000) - towTInt where towTRemainder is a fraction of msec from 0 to 1msec The pseudorange in meters based on receiver time and position is: pseudorange = geometric range + satellite clock bias - receiver clock bias + errors in space Define the pseudorange estimate with a receiver clock bias of zero as: pseudorangeO = geometric range + satellite clock bias + errors in space When performing the transfer method, all the satellites that have a single SV secondary codephase estimate also have a primary codephase estimate. Assuming that receiver position error is less than + / - 'A of a millisecond, or about 150km, the receiver clock can be estimated as the residual of the measured codephase minus the submillisecond portion of the pseudorange where the receiver clock is zero. Receiver clock bias(i) = measured codephase(i) -remainder(pseudorange0(i) / 299792.458m) Each bias(i) estimate is wrapped to be within + / - 0.5 *speed of light*0.001 meters. If more than one satellite is available, then the bias is the average of all the biases. Now that the receiver bias estimate is available, the measured and predicted secondary codephases can be compared to learn the receiver millisecond time error. Define offset(i) as the portion of the receiver time error that is modulo of the pilot secondary code sequence length. Offset(i) = measured secondary codephase(i) - scStart(i) The best offset(i) is identified from the largest group of satellites that have most consistent offset(i) The corrected scStart without time error is found by correcting the predicted scStart with the offset. scStartCorr(i) = scStart(i) - offset(i) Note that if single SV secondary codephase estimates are only available from GPS satellites, which have a 20msec pilot, then the secondary codephase scStart(i) can only be predicted for GPS satellites and not for the Galileo and BDS satellites that have longer pilot sequences. The remainder term (towTRemainder) must be considered when assigning a confidence to the predicted secondary codephase scStart(i). If the remainder is very close to zero or very close to one, then the confidence is lower. The error of the position estimate impacts the accuracy of the scStart: as the position error grows, then the error of the predicted pseudorange grows, which impacts the time of transmission estimate, which impacts the predicted secondary codephase estimate. The position uncertainty, also referred to as the position error standard deviation, or position sigma (sigmaPos), is translated into a millisecond time uncertainty threshold by converting from meters to milliseconds as follows: sigmaMsec = sigmaPos / speed of light / 1000 The confidence of the scStart is then assigned as follows; if (towTRemainder < sigmaMsec) secondary code scStart is low confidence. Form two estimates: scStartO and scStartl = scStartl + 1 Else if (towTRemainder > (1-sigmaMsec)) secondary code scStart is low confidence. Form two estimates: scStartO and scStartl = scStartO - 1 Else Secondary code scStart is high confidence Maintaining the predicted secondary code phase (scStart) to enable continuous transfer method The transfer method (see, e.g., figure 5 and the description associated with figure 5) takes the measured scStart from one or more satellites and predicts the scStart for the remaining satellites. It is applicable at the time of measured secondary codephase. These measurements can also be propagated forward in time as long as the satellites are tracked periodically. A codephase, doppler and time tag are associated with the measured secondary codephase. The codephase is propagated forward in time according to the standard formula Codephase (ti) = codephase (tO) + Doppler * (-1 / wavelength) * (t2 - ti) If the propagated codephase becomes larger than 1msec of range, then this is a roll-over case and the scStart is incremented by 1 msec and 1msec of range is removed from the codephase. Conversely, if the propagated codephase becomes less than zero, then this is a roll-under case and the scStart is decremented by 1 msec., and 1msec of range is added to the codephase. In this way, the codephase can be maintained recursively where the new time ti becomes the previous time to. Propagating the secondary codephase is a way to reduce power consumption, as generally once the secondary codephase is achieved, the predicted secondary code bits are applied to the correlation process and the correlation stream that still contains the secondary code modulation is not observable. Thus, continuing to measure secondary codephase requires an additional set of correlators, or maintaining partial sums of correlations before and after the primary epoch where the secondary code bits are changes, that additional registers to save the partial sums. Thus, the propagation enables an alternative method to maintain the secondary codephase without remeasuring (and hence the additional set of correlators may not be needed for secondary code phase measurements). Note that these propagated secondary codephase measurements can be used even after fixing to predict the remaining satellite’s secondary codephase. Transfer method when fine time is available Once tracking is started, it is possible to decode the navigation data stream on the data channel that is in phase quadrature with the pilot channel. The data channel symbols are synchronous with the pilot channel secondary codephase sequence. The data channel also has its own secondary codephase sequency inside each data symbol. This sequence must be removed to produce the data symbol. Fortunately, the data channel secondary code sequence start can be easily determined from the pilot secondary code sequence. A block phase estimator time aligned to the data symbol is employed to estimate the pilot carrier phase, which is removed from the data channel carrier phase to produce a data symbol. These decoded data symbols are processed according to the interface control documents to produce the navigation message with include a time stamp at transmission time of the first bit of a data frame. The time of reception is obtained by propagating the time stamp by the time of transmission which can be associated with the receiver time at which the first bit was received. This process is well known. Such a process allows the super-millisecond time error in the receiver to be estimated and corrected. At this point, the transfer method is no longer needed as the estimated scPhase and scStart can be directly estimated without the need to be corrected with the measured secondary codephase. However, even with nearly perfect time and position estimates, there can still be an ambiguity in the predicted secondary codephase. The occurrence of the ambiguity is rare as the position and timer error is reduced. The occurrence increases as the position and time error increases. Note that when the super millisecond time error is reduced to zero, that is, when fine time is achieved, the offset computed using the transfer method should be zero, providing confidence that the time has been set properly. Observation about an ambiguity An ambiguity (in predicted secondary code phase) has been observed to occur when the remainder term is close to zero or to one. In general this occurs when the predicted pseudorange is close to being an integer number of milliseconds. Here is an example of a set of satellites where the system time error is one msec. Three GNSS systems are shown. The predicted scStart is shown in column scStartO. The measured is in column “meas”. The offset is one for all SVs except BDS 29 which is off by 2 due to the ambiguity near zero. The receiver position error is small. Analysis showed that the ambiguity was due to the nearly identical clock bias between the satellite and receiver for this satellite. sysiem pm scStartO rneas offset towTRemainder svCSockBSas RcwCScckBsas diff deters; diff^sec ; GPS 1 5 & 1 0.12861 -7911.5 19076.5 -26583.0 -0.09032 ; GPS ■ 8 14 15 1 8.53729 -43514.4 19076,5 -62590.9 -0.20878 S GPS io 14 15 1 0,47645 10234.4 19076.5 -8342.1 GPS 14 9 10 1 0.82025 -23583.6 19376.5 -42666.1 -0.14232 ; GPS 13 18 19 1 0.76160 17363.0 19076.5 -2013.4 -0.60672 : GPS 27 13 14 1 0.79253 -42703.9 19076.5 -61735.4 ; -0.20610 ' GPS • 36 10 11 1 8.36389 -33745.8 19876.5 -52S21.5 -0.17619 ; GPS 32 5 6 1 0,58492 -23732.4 29076.5 -39303.8 -8,13275 ; GAL 30 9 10 1 0.42385 1450397.3 15076.5 1431320.3 4.77437 ; GAI 9 5 6 1 0.43516 1926715,5 13076,5 1987639.1 6.36320 : GAL 3 15 15 1 0,04884 -51194.1 19076.5 -78278.5 -0.23440 ' GAL 5 S 9 1 8.88123 -143984.2 19076.5 -153060.7 -0 54391 GAL 21 18 IS 1 0.52626 -160710.5 19376.5 -179787.0 -0.59970 ; GAL • 27 11 12 1 0.59557 1383<36.2 19076.5 11922.9.7 0.3S771 . GAL 36 11 12 1 0.16569 211964.4 19076,5 192887.9 0.64340 ; GAL IS 7 3 1 0,61541 2725'00.4 19376.5 253423.9 0.845'33 ; SOS 16 55 56 1 0.39870 -251372.8 19076.5 -270449.3 -0.90212 BBS • 35 14 15 1 0.30654 15479.3 19376,5 -3597.2 -0.61280 : BOS 20 3 4 1 0.36043 61631.4 19076.5 42554.9 3.14195 ; SOS 27 10 11 1 0.545'06 37314.3 19876.5 18237.8 0.06383 ; BBS 25 99 1 2 0.00579 20813.5 19376,5 1737.2 5.00579 BOS • 30 37 38 1 0.15835 33138.6 19076.5 20062.2 0.06-692 S BBS 32 <3 1 1 0.02810 -272294.S 19376,5 -291571.3 -057191 ; BBS ; 25 12 13 1 0.33474 76990.9 19376.5 57914.4 3.19318 : The first outcome of the confidence is that a measured single SV with low confidence cannot be used as a measurement for the offset determination unless it is corroborated by another higher confidence measurements. The second outcome is that the scStart has an ambiguity and the satellite is forced to either determine the secondary codephase with one of the single SV methods, or to use the estimate but with an additional two stage initialization. The baseline estimate is labelled as scStartO and a second estimate, scStartl, is formed based on the remainder. If the remainder is close to zero, then the second secondary codephase estimate is taken as the scStartO minus 1 (and is wrapped to N-one, where N is the secondary code length if the computed estimate is zero). If the remainder is close to one, then the second secondary codephase estimate is taken as the scStartO plus one (and is wrapped to 0 is the estimated secondary codephase is N-l, where N is the secondary code length). The two candidates can be tested on a time series of correlations of between 20 and 100msec. The correct one should have significantly higher coherent integration than the incorrect one. As another information gain from the single SV method, if the single SV method passed using the DFT methods and produced a confident frequency error estimate, then the clock drift can be estimated with the corrected Doppler candidates from the primary code determination. Define drift as the time rate of change of the receiver clock bias in meters per second. Range Rate = d / dt geometric range + satellite drift - receiver drift Predicted range rateO = d / dt geometric range + satellite drift DriftEstimate(i) = measured Doppler(i) in Hz*(-wavelength(m)) - Predicted range rateO If more than one satellite is available, then the drift is the average of all DriftEstimate(i) into a final global drift estimate driftEstimate: Doppler(i) = d / dt geometric range + satellite drift + driftEstimate This predicted Doppler is adopted immediately for satellites that are in the secondary code determination state, that is, satellites that did not complete the single SV methods, generally because they have a weak signal strength. The search candidate Doppler is overtaken by the estimated Doppler(i) and the satellite moves the to tracking state. Irrespective of how the Doppler candidate was corrected by the single SV frequency error estimate, the steady state tracking methods will remove the secondary codephase by applying the estimated secondary code sequency to the correlation time series. Before commencing convential closed or open loop tracking, a conventional DFT methods can be applied to the correlation time series with the secondary codephase removed to remove any remaining Doppler error in the estimated Doppler. For example, a DFT can be applied to a sequence of 20 one-millisecond correlations to perform a frequency error estimate with a range of + / - 500hz. The resolution will be 1000Hz / 20 = 50Hz, with a max or of 25hz. Interpolation can reduce the frequency error below 25Hz which is required for initializing a 50-Hz PLL or AFC carrier tracking loop. Alternatively, zero-padding a 64 point FFT can reduce the frequency resolution to 1000 / 64 = 28Hz and a max error of 14Hz. Example of combined secondary code methods Figure 10A shows an example of a general method that uses a combination of the secondary code phase determination methods described herein (e.g., a combination of two or more of the methods shown in figures 2, 3, 4, 5 and 6). The method in figure 10A can use a specific, predetermined sequence of such methods (e.g., a method according to figure 2 or figure 6 followed by a method according to figure 5 followed by another method according to figure 5 based upon decoded time from a GNSS SV’s signal(s)). In an initial operation in figure 10A, a GNSS receiver can measure secondary code phase with a single SV (e.g., using a method based upon one of the methods shown in figures 2, 3 or 6) or multiple SVs (e.g., using a method based upon one of the methods shown in figures 4 or 5). Next in the method shown in figure 10A, the GNSS receiver can use a method based on figure 5 using the available coarse time and estimated position of the GNSS receiver to obtain predicted secondary code phase for a set of remaining SVs (for which secondary code phase has not yet been acquired). Next in the method in figure 10A, the GNSS receiver can decode a satellite time message (indicating satellite time) that is received from an GNSS SV and then estimate fine time at the GNSS receiver (using techniques known in the art); the fine time has a desired uncertainty in one embodiment of less than 0.5 msec. At this point, with an estimated fine time, the GNSS receiver can transition to a transfer method based upon a method in figure 5 with an offset = 0 to predict secondary code phases for satellites for which secondary code phases have not been successfully acquired. The transition to an offset = 0 can allow the GNSS receiver to set its time estimate to a high confidence level and tracking can begin using all primary codes that have had their secondary code phases successfully acquired. Acquisition (ACQ) The following description includes a method that is performed by a GNSS receiver and shown in figure 10B. The method shown in figure 10B can use a single SV method (e.g., a histogram method or a differential coherent method shown in figure 6) in conjunction with a transfer method (see, e.g., figure 5). For example, the single SV method can use a method based on figure 6 followed by a transfer method, and the differential coherent method can be repeated over time with different offsets before using the transfer method to complete the acquisition of secondary code phases. In another embodiment, the method can begin with a histogram method followed by a method based on figure 6 (and the method based on figure 6 can be repeated with different delays, such as an offset of 1 delay followed by an offset of 2 delays) and then a histogram method can be used to finish the secondary phase acquisition process for any SVs that do not have acquired secondary code phases from the prior methods. Acquisition starts with the primary code search using frequency domain correlation (FDC). This method searches the full PN code range (1msec) efficiently with frequency steps as large as, in one embodiment, 500Hz for short non-coherent integrations such as 20msec, and frequency step sizes down to 200Hz for longer noncoherent integrations such as Isecond. Typically, a range of + / -1PPM is searched. At L5, 1PPM is about 1192 Hz, so the number of search bins is reasonable for each SV: 5 for the 500Hz steps, and 13 for the 200Hz steps. The complete range of the frequency uncertainty is searched quickly with a short integration time to identify the main lobe of the sinX / X frequency response for strong signals. The non-coherent amplitude sum with the best SNR = 10*logl0((peakAmplitude2 -noiseAmplitudeAvg2) / noiseAmplitudeVariance) across all codes and frequencies search is compared to the detection threshold of 16dB to test for signal found. If the signal is not found, then the integration time is increased to improve sensitivity. A detection yields a primary code phase and a Doppler candidate referenced to the start of the search that is propagated coherently during the acquisition. With enough HW search capability, the short searches can be operated in parallel with the longer searches to avoid cases where the more sensitive longer integration finds declare signal found on a sidelobe of the sinX / X frequency response. The sidelobes are at least 13dB higher and should be found quickly with the faster search. In cases when the true signal is blocked, and when the frequency search is larger than coherent search bandwidth it is possible that even with full frequency scans, the strongest observed signal candidate can be off the main lobe of the sinX / X frequency response. The sidelobes of the sinX / X function for the 1msec coherent integration time of the FDC are at + / -N kHz, where N = 1,2,3. Thus, if the frequency search is larger than 1kHz or if the center of the frequency window is in error by more than 1kHz, the frequency search will contain sidelobes. The observed peak of the frequency search may not occur at the true frequency due to the interaction of the two conditions: first that the secondary code bi-phase modulation can occur at each epoch of the primary code and second that the primary codephase for all SVs is uniformly distributed across the range of millisecond sample data used in the FDC. For a codephase epoch at % offset from the start of the millisecond, half the power is lost at the secondary code transition leading a modulation in correlation amplitude. But a frequency error provides a degree of freedom to change the sign of the correlation over the millisecond correlation, effectively unflipping the rotation caused by the secondary code change so that the resulting correlation energy is higher with a frequency error. Frequency offsets of + / -250Hz, and + / -5 00Hz are common depending on the distance of the primary code epoch and millisecond, depending on the number of components used in the FDC and how often there are transitions. Frequency refinement These frequency offsets complicate the secondary codephase acquisition. Better alignment of the codephase and the millisecond will reduce the energy lost at the secondary code change. Thus, the time domain correlation method (TDC) has the ability to select a from one of four millisecond sample stream, each one at an increasing offset, quantized in quarters, from the start of the millisecond time base used in the FDC. The system firmware of a GNSS receiver in one embodiment can select the offset to minimize the time offset between primary codephase epoch and ends of the chosen millisecond. Using this improved phasing, a secondary frequency is performed using a small set of TDC correlators centered around the codephase and Doppler candidate from the primary code search. The time domain correlation method (TDC) is well suited for this purpose: a bank of 20 codephases separated by ½ chip is used to integrate a period similar to the integration used to obtain the candidate. A similar non-coherent one millisecond amplitude sum is formed at each code tap. The frequency is searched around the candidate Doppler in steps of + / -25 0Hz and + / -500Hz. Such a frequency search will further reduce the frequency error associated with the Doppler candidate. Interpolation of the frequency information can also be used to further minimize the frequency error prior to starting the secondary codephase determination. This process reduces frequency error but does not eliminate the need for handling frequency error in the secondary codephase determination process. As a sidelobe search, which is a search for a signal at least 13dB higher, then a similar method is used, for example searching + / -750Hz, + / -1000Hz but with an integration duration that smaller by the factor that would produce 13dB of processing gain. If the signal was found at 200msec of integration, then the side lobe search would be the integration time T that solves this equation, assuming worst case of 1.5dB processing gain for each doubling of the integration time 13dB = 1.5db*log2(200msec / T). T = 200 / 2(13 / 1A (msec) = 0.0049msec. Even a 1msec integration would be sufficient to find the main lobe for a 200msec detected signal. For one second, less than 3msec are required. Secondary code acquisition state Secondary codephase commences with a primary code phase and a Doppler candidate having been determined. For weaker signals, it is necessary, in one embodiment, to observe multiple repetitions of the pilot secondary code sequence. In this case, it is necessary to be able to track the codephase during this period to avoid losing the signal and provide the secondary codephase determination process with correlation data that contains the signal. Tracking is necessary to avoid propagation error associated with the Doppler error of the signal candidate. For example, with 500Hz error, the code doppler will cause the signal candidate to move 1 ½ chip sample in a time found by solving (29.3 / 2m = 500Hz / l 15cycles / chip*29.3m / chip * dt), dt = 0.115 seconds. This means the signal will be lost propagating with the wrong doppler in about 100msec. One solution is a delay lock loop formed using 2 or 3 correlators centered around the codephase estimate to track the signals. As the correlators are changing sign to the due to the secondary code with unknown phase, longer coherent correlations require more care and are problematic. A non-coherent sum of early minus late correlators with one chip separation allows acceptable tracking around punctual correlator used to provide the one millisecond correlations to the secondary codephase estimation. Another solution is a band of correlators. In bank of 20 codephase taps with 'A chip spacing, with the candidate codephase in the center, has a range of about 150m and can contain the signal with propagation with a frequency error of 500Hz for about 10 times higher than the single correlator case described above: 1.15 seconds. In this case, the strongest code tap must be identified and used to provide the one millisecond correlations to the secondary code determination. Secondary code determination methods As a summary of secondary codephase determination, the methods presented fall into two groups: the first group contains the single SV methods, the second group contains the multiple SV methods. The single SV methods can be used jointly in a manner that is optimized to find the strongest signals with lower frequency error quickly with the least computation, while handling the weaker signals and the maximum possible frequency error. Histogram The histogram method (see, e.g., the method in figure 2) works quickly for shorter secondary code length, such as for GPS L5, with medium frequency error range of + / -250Hz. This histogram method is implemented with mainly integer computation after forming the cosine of the phase change of a complex correlators (real,imag) from millisecond to millisecond as real(k)*real(k-l) + imag(k)*imag(k-l). The sensitivity of this histogram method is not as good as the DFT based method in figure 6, but has the advantage of allowing continuous integration into the histogram to improve sensitivity progressively at the expense of increasing the computation complexity or memory usage. If this histogram method passes (successfully acquires secondary code phases), it is assumed that the frequency error is small enough to be determined in a step before starting to track with the secondary code removed. The secondary code phase acquisition process is then terminated. Offset-1 using differential coherent method The DFT based offset-1 method (using a differential coherent method such as a method based on figure 6) provides a sensitivity improvement for the longer codes and is insensitive to frequency error up to + / -500Hz. It requires 3 DFTs, one for the input single-epoch correlation time-series, one for the secondary code sequence, and one inverse DFT (which is the circular correlation of the input and secondary code sequence) for the complex product of the two spectrums. Define the magnitude as the envelope of each term of the inverse DFT results, i.e. the square root of sum of squares of real and imaginary part at each point. If this offset-1 method passes, meaning peak SNR passes a threshold, the estimated secondary codephase is applied to the input epoch correlation time series and the DFT with post detection interpolation is to identify the frequency error of the input series. The secondary code phase acquisition process is then terminated. Offset -2 If the offset-1 method does not pass (e.g., the offset-1 method does not successfully acquire secondary code phases), then the DFT offset method (e.g., a method based on figure 6) is repeated with but with offset-2 as this has a different noise floor than offset-1. If this method passes, the estimated secondary codephase is applied to the input epoch correlation time series and the DFT with post detection interpolation is used to identify the frequency error of the input series. The process is then terminated. Offset 1-2 same peak If both offset-1 and offset-2 methods fail, but if the strongest candidate of both methods is the same, and the sum of their SNRs is above a threshold, then this is declared a pass, the estimated secondary codephase is applied to the input epoch correlation time series and the DFT with post detection interpolation is used to identify the frequency error of the input series. The secondary code phase acquisition process is then terminated. Offset 1-2 magnitude sum If the offsetl-and offset-2 methods fail, then their inverse DFT magnitudes are averaged, and the peak SNR is compared to a threshold. This method takes advantage of the fact that the auto correlations are different and can yield a non-coherent processing gain. If this method passes, meaning peak SNR passes a threshold, the estimated secondary codephase is applied to the input epoch correlation time series and the DFT with post detection interpolation is used to identify the frequency error of the input series. The secondary code phase acquisition process is then terminated. Offset 1-N, magnitude sum If the average of the offset-1 and offset-2 inverse DFT magnitudes fails, the more offsets, such as offset-3 and offset-4 can be computed and the inverse DFT magnitudes are averaged with the previous average of the offset-1 and offset-2. If this method passes, meaning peak SNR passes a threshold, the estimated secondary codephase is applied to the input epoch correlation time series and the DFT with post detection interpolation is used to identify the frequency error of the input series. The process is then terminated. Offset 0, all frequencies If the average for the four offsets fails, then final the offset 0 method is performed over all frequencies covered by the DFT. Note that the frequencies are obtained as shift of the DFT of secondary code spectrum followed by a complex product of the input spectrum and the shifted secondary code spectrum. In this way, each frequency requires only one additional DFT. The frequency step is the sample frequency of the input sequency divided by the number of bins of the DFT = 1000Hz / 100 = 10Hz, so the range of frequency is + / -500Hz in 10Hz steps. Interpolation or a zero padded FFT with more bins yields a finder step. If this method passes, meaning peak SNR passes a threshold, then the frequency is with the interpolated with the adjacent frequencies at best secondary code phase. The process is then terminated. All fail, save memory for next batch If the offset 0 method fails, then memory is saved until a new set of input complex correlation for the pilot range are available. For the offset methods (1,2,3,4) the memories saved are the complex delay multiply sequences as these represent cosine and the sine of the phase change across the millisecond. This allows coherent averaging prior to forming the input sequency spectrum that provides the best processing gain. For the offset-0 frequencies, the inverse DFT magnitudes are saved and provide a non-coherent processing gain. For the offset-1,2,3,4 magnitude sums, the memories saved are the magnitudes sums, and are included in the subsequent magnitude averages, yielding a non-coherent processing gain. Special case with GPS Note that offsets greater than 0 can have a higher noise floor than offset 0. For the longer pilot codes of GAL and BDS, the resulting noise floor is improved with respect to the offset 0 case by averaging magnitudes of enough offsets > 0 since the auto-correlation sequence at each phase away from the peak is different for each offset, enabling averaging. For the short pilot codes like GPS, there is one peak offset at half the length that is common to all offset that is not reduced by averaging. The result is a higher noise floor than the offset-0 noise floor. While this cannot be minimized, it was found that judicious selection of offsets can lead to reduction of the noise floor at all offsets except the half length offset. In some cases, then the 2nd peak is detected at exactly half the length from the peak, it may be possible to lower the noise floor by removing this peak when the 1st peak and 2nd have the expected ratio, effectively allowing a lower SNR to pass. Another solution is simple declare that there is an ambiguity and require the tracking to test both candidates and detect which has the best coherent SNR when applying the secondary codephase. Generalizing the offsets Some offset combinations are better than others. Thus, the best offset combinations can be precomputed and stored in a table for each secondary code for each system. While this description has focused on GNSS SVs and GNSS signals from GNSS SVs, the embodiments described herein can also be used with GNSS-like signals from terrestrial (e.g., ground based) transmitters of GNSS-like signals, such as pseudolites (“pseudo-satellite”). Thus, the embodiments described herein can be used in systems that use such terrestrial transmitters and receivers designed to receive and process GNSS-like signals from such terrestrial transmitters. The phrase “GNSS signals” will be understood to include such GNSS-like signals, and the phrase “GNSS SVs” will be understood to include such terrestrial transmitters. Exemplary Embodiments The following text presents numbered embodiments in claim like format, and it will be understood that these embodiments may be presented as claims in one or more future filings, such as one or more continuation or divisional applications. Although separate embodiments are described in detail below, however, it is appreciated that these embodiments may be combined or modified, in part or in whole. At least some of these numbered embodiments were presented as claims in a prior provisional application. For some of the embodiments listed below, only method embodiments / claims are presented below, but it will be understood that these embodiments / claims can also be in the form of apparatuses such as GNSS receivers, components of GNSS receivers, and non-transitory machine readable media that store executable program instructions which when executed by one or more processing systems cause the one or more processing systems to perform one or more of these methods presented in this list of embodiments and elsewhere in this disclosure. Embodiment 1. A system for processing L5 wideband frequency GNSS signals, the system comprising: an analog to digital converter (ADC) to generate a digital representation of received GNSS signals in an L5 wideband GNSS frequency band; a baseband sample memory to store the digital representation of the received GNSS signals, the baseband sample memory coupled to the ADC; a GNSS processing system coupled to the baseband sample memory to process the digital representation of the received GNSS signals, the GNSS processing system configured to acquire code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals without using LI GNSS signals to acquire the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals. Embodiment 2. The system as in embodiment 1, wherein the system includes only a single GNSS antenna tuned to a frequency in the L5 wideband frequency band and wherein the system does not receive and does not acquire LI GNSS signals. Embodiment 3. The system as in embodiment 1, wherein the GNSS processing system acquires the code phases of the one or more secondary codes after acquiring one or more primary codes of the GNSS signal components but before narrowband tracking of the GNSS signal components. Embodiment 4. The system as in embodiment 3, wherein the GNSS processing system acquires the code phases of the one or more secondary codes while a time uncertainty exceeds 0.5 milliseconds. Embodiment 5. The system as in embodiment 4, wherein an estimated error for current time exceeds 1 millisecond prior to acquiring the code phases of the one or more secondary codes. Embodiment 6. The system as in embodiment 3, wherein a code phase of a first secondary code in the one or more secondary codes is acquired by using multiple GNSS signal components in L5 wideband GNSS signals from a single GNSS satellite. Embodiment 7. The system as in embodiment 6, wherein the multiple GNSS signal components comprise a GNSS sideband A signal and a GNSS sideband B signal. Embodiment 8. The system as in embodiment 3, wherein a code phase of a first secondary code in the one or more secondary codes is acquired by using multiple GNSS signals from multiple GNSS satellites. Embodiment 9. The system as in embodiment 8, wherein the multiple GNSS satellites comprise at least two satellites from at least one of: a Galileo E5 constellation of GNSS satellites; or an L5 GPS constellation of GNSS satellites; or a Glonass K2 constellation of GNSS satellites; or a QZSS constellation of GNSS satellites; or a Beidou B2 constellation of GNSS satellites. Embodiment 10. The system as in embodiment 4, the system further comprising: a radio frequency (RF) receiver that comprises at least a first RF filter that is tuned to only a frequency in the L5 wideband frequency band to receive L5 wideband GNSS signals, and the first RF filter is coupled to the single GNSS antenna, and wherein the system does not use LI GNSS signals to determine time information or frequency information and wherein the system does not track LI GNSS signals. Embodiment 11. The system as in embodiment 1, wherein the GNSS processing system detects angular phase changes between successive primary code epochs, the GNSS processing system comprising a frequency lock loop (FLL), the phase changes detected from in-phase and quadrature results of correlation outputs in the GNSS processing system; and wherein the GNSS processing system averages the phase changes detected from the in-phase and quadrature results of correlation outputs to produce an estimated frequency error; and wherein the GNSS processing system provides a compensated frequency, based on the estimated frequency error, to one or more discriminators of the FLL, the FLL configured to reduce error in estimations of frequency of received L5 GNSS signals based on the estimated frequency error. Embodiment 12. The system as in embodiment 11 wherein the FLL comprises a first discriminator for a first sideband of L5 GNSS signals and a second discriminator for a second sideband of L5 GNSS signals, and wherein the estimated frequency error is a filtered estimate based on the averages of the phase changes detected from the inphase and quadrature results of correlation outputs. Embodiment 13. The system as in embodiment 12 the averaging comprises averaging phase changes detected over two, three, or four GNSS signal components from a single GNSS satellite. Embodiment 14. The system as in embodiment 13 wherein the FLL detects the phase changes between successive primary code epochs. Embodiment 15. A method of operating a GNSS receiver, the method comprising: acquiring one or more primary codes of received L5 GNSS signals; determining, for each transition between received primary code epochs in each of the one or more primary codes of the received L5 GNSS signals, a phase change value for each L5 GNSS signal, wherein a set of phase change values in a sequence over time is determined; storing the set of phase change values in a data structure; comparing the set of phase change values in the data structure to a set of expected phase change values derived from one or more secondary codes associated with the one or more primary codes from one or more GNSS satellites, wherein these primary and secondary codes are further associated with a uniquely identified GNSS satellite and its signal transmissions; determining, from the comparison, one or more code phases of the one or more secondary codes. Embodiment 16. The method as in embodiment 15, wherein the method further comprises: performing, after a primary code phase and an associated secondary code phase have been determined for components of one of the received L5 GNSS signals, narrowband tracking operations on at least one of the components of the received L5 GNSS signals; determining, based on one or more outputs from the tracking operations, one or more position solutions. Embodiment 17. The method as in embodiment 16, wherein each phase change value represents an indication of a change in phase of the secondary code associated with the primary code from the GNSS satellite that transmitted the primary code, and wherein the acquisition of the primary code comprises determining a code phase of the primary code. Embodiment 18. The method as in embodiment 17 wherein the method further comprises: cross checking determined secondary code phases from different channels of L5 GNSS signals from the same GNSS satellite. Embodiment 19. The method as in embodiment 17, wherein the stored set of phase change values comprise phase change values for different primary codes from different channels of L5 GNSS signals from the same GNSS satellite, and wherein the different channels comprise an A channel on an A sideband and a B channel on a B sideband and wherein the comparing uses the phase change values from the different channels to derive a comparison output that is used to determine one or more secondary code phases. Embodiment 20. The method as in embodiment 17, wherein the set of expected phase change values are derived from a secondary code by transforming the secondary code into a sequence of phase change values, across epochs in the secondary code, over a set of index values in the data structure. Embodiment 21. The method as in embodiment 17, wherein the determining of the phase change values comprises computing a cosine of a value at each transition between two consecutive primary code epochs. Embodiment 22. The method as in embodiment 17, wherein the method further comprises: estimating one or more frequencies of the one or more primary codes of the received L5 GNSS signals. Embodiment 23. The method as in embodiment 22, wherein the method further comprises detecting a frequency error across a bank of correlators using a code phase trajectory across the bank of correlators, and resetting data in the data structure. Embodiment 24. The method as in embodiment 22, wherein the method further comprises: predicting code Doppler slope from a discriminator trajectory over time, the discriminatory trajectory being an output from a discriminator in a code tracking loop; estimating a frequency error based on the predicted code Doppler slope; detecting secondary code phase from phase change values associated with primary codes at a frequency offset determined by the estimated frequency error. Embodiment 25. The method as in embodiment 22, wherein the method further comprises: performing a first set of correlation operations on primary codes at a first frequency offset from a center frequency to determine phase change values at the first frequency offset; performing a second set of correlation operations on primary codes at a secondary frequency offset from the center frequency to determine phase change values at the second frequency offset. Embodiment 26. The method as in embodiment 17, wherein the method further comprises: determining a time uncertainty value, wherein if the time uncertainty value is less than 0.5 milliseconds, then ending the method. Embodiment 27. The method as in embodiment 17, wherein the method further comprises: determining if the phase change values are faulty due to frequency error and resetting the data structure if the phase change values are faulty. Embodiment 28. The method as in embodiment 17, wherein the method further comprises: determining, for each phase change value in at least a subset of the phase change values in the data structure, a confidence value based on a signal to noise ratio associated with each phase change value and storing the confidence values in the data structure. Embodiment 29. The method as in embodiment 17, wherein the data structure is a set of histograms, with at least one histogram per channel of L5 GNSS signals from a particular GNSS satellite, wherein the stored set of phase change values comprise phase change values for the two orthogonal data and pilot signal components on the same band of the same satellite and wherein the comparing uses the phase change values from these data and pilot components to derive a comparison output that is used to determine one or more secondary code phases. Embodiment 30. A method of operating a GNSS receiver, the method comprising: receiving GNSS signals from a GNSS satellite containing a first set of secondary codes and a first set of primary codes, the first set of secondary codes including at least a first secondary code having a first length in bits and a second secondary code having a second length in bits, the first length being greater than the second length; correlating coherently, in a first correlation operation, a first set of the received GNSS signals with locally generated secondary codes corresponding to the first set of secondary codes, the first correlation operation extending over the first length of the first set of received GNSS signals, and the first correlation operation correlating coherently over a set of possible code phase hypotheses and over a set of frequencies; correlating coherently, in a second correlation operation, a second set of the received GNSS signals with the locally generated secondary codes corresponding to the first set of secondary codes, the second correlation operation extending over the first length of the second set of received GNSS signals, and the second correlation operation correlating coherently over the set of possible code phase hypotheses and over the set of frequencies; combining results from the first correlation operation with results from the second correlation operation; determining from the combined results one or more secondary code phases for the first set of secondary codes. Embodiment 31. The method as in embodiment 30, wherein the first correlation operation and the second correlation operation are performed using discrete Fourier transforms. Embodiment 32. The method as in embodiment 30 wherein the first correlation operation and the second correlation operation are performed using hardware correlators. Embodiment 33. The method as in embodiment 30 wherein the first set of secondary codes comprise four secondary codes for four components of GNSS signals from the GNSS satellite. Embodiment 34. The method as in embodiment 30 wherein the first correlation operation is coherent over the first length for the first set of secondary codes and wherein the second correlation operation is coherent over the first length for the second set of the received GNSS signals which are received from the GNSS satellite after receiving the first set of received GNSS signals from the GNSS satellite. Embodiment 35. The method as in embodiment 30 wherein the combining integrates non-coherently the results from the first correlation operation with results from the second correlation operation. Embodiment 36. The method as in embodiment 31, wherein the method further comprises: sorting integrated results within each frequency to select highest magnitude value in the results. Embodiment 37. The method as in embodiment 30, wherein the first correlation operation includes correlating the first set of the received GNSS signals with locally generated primary codes corresponding to the first set of secondary codes, and wherein the second correlation operation includes correlating the second set of the received GNSS signals with the locally generated primary codes corresponding to the first set of secondary codes. Embodiment 38. The method as in embodiment 35, wherein the combining integrates the magnitude of the results and wherein the code phase of the longest secondary code is determined from the integrated results. Embodiment 39. The method as in embodiment 30, wherein the set of frequencies are separated by a minimum step size and wherein an improved frequency estimate for one or more channels is further determined. Embodiment 40. A method of operating a GNSS receiver, the method comprising: acquiring, over multiple primary code epochs, primary code phases of a plurality of GNSS signals from a plurality of GNSS satellites of at least one GNSS constellation, the acquisition producing a set of correlation values over a set of time intervals of the multiple primary code epochs for the plurality of GNSS satellites, such that for each time interval there are a plurality of correlation values specifying the acquired primary code phases from the plurality of GNSS satellites; evaluating, within each time interval in the set of time intervals, the plurality of correlation values in one of the time intervals to determine a pattern of values, derived from the plurality of correlation values in the time interval, that maximizes a sum of the plurality of correlation values; determining, based on the plurality of GNSS satellites for which primary code phases have been acquired, an expected sequence of phase reversals for secondary codes associated with the primary code phases that have been acquired, the expected sequence determined over the set of time intervals; comparing each determined pattern of values for one of the time intervals with the expected sequence of phase reversals for the secondary codes; determining, from the comparison, one or more code phases for the secondary codes. Embodiment 41. The method as in embodiment 40, wherein a set of discrete Fourier transforms are used to acquire the primary code phases. Embodiment 42. The method as in embodiment 40, wherein the plurality of GNSS satellites are from only one GNSS constellation. Embodiment 43. The method as in embodiment 40, wherein the plurality of GNSS satellites are from a plurality of GNSS constellations. Embodiment 44. The method as in embodiment 40, wherein the comparison determines a plurality of code phases for the secondary codes by considering relative delay information across the received GNSS signals from different GNSS satellites and wherein the comparison concurrently determines, at once for all of the different GNSS satellites, the plurality of code phases for the secondary codes. Embodiment 45. The method as in embodiment 40, wherein the method further comprises: determining whether the set of intervals is sufficiently large to provide reliable determination of the one or more code phases for the secondary codes. Embodiment 46. The method as in embodiment 40, wherein the method further comprises: verifying for a next interval after the set of intervals the one or more secondary codes. Embodiment 47. The method as in embodiment 40, wherein the method further comprises: performing, after a primary code phase and an associated secondary code phase have been determined for components of one of the received GNSS signals, tracking operations on at least one of the components of the received GNSS signals; determining, based on one or more outputs from the tracking operations, one or more position solutions. Embodiment 48. A method for operating a modernized GNSS receiver during a tracking mode of operation, the method comprising: generating a sample clock having a sample clock frequency; generating a set of correlation outputs that include a set of early correlation outputs at the sample clock frequency and a set of late correlation outputs at the sample clock frequency; synthesizing a set of punctual correlation outputs from at least one of: (a) the set of early correlation outputs or (b) the set of late correlation outputs. Embodiment 49. The method as in embodiment 48, wherein the set of punctual correlation outputs is synthesized during the tracking mode of operation. Embodiment 50. The method as in embodiment 49, wherein the synthesized set of punctual correlation outputs is used as an error signal for a discriminator to adjust a carrier phase lock loop to lock to a carrier phase of a GNSS signal. Embodiment 51. The method as in embodiment 49, wherein no local punctual code is generated in the GNSS receiver during the tracking mode and no set of punctual correlation outputs is created in a correlator in the GNSS receiver. Embodiment 52. The method as in embodiment 49, wherein the synthesized set of punctual correlation outputs is used to estimate signal power to normalize a discriminator of a delay lock loop. Embodiment 53. The method as in embodiment 49, wherein a spacing in time between samples for successive early and late correlation outputs for a GNSS signal is a single sample clock separation that is less than a chip in the GNSS signal. Embodiment 54. The method as in embodiment 53, wherein the sample clock frequency is less than a factor of 3 times an L5 chipping rate of 10.23 MHz. Embodiment 55. The method as in embodiment 53, wherein the spacing is a narrowed code delay that reduces multipath error while maintaining a frequency of the sample frequency clock at less than a factor of 4 times an L5 chipping rate of 10.23 MHz. Embodiment 56. The method as in embodiment 49, wherein the set of early correlation outputs are a set of very early correlation outputs, and wherein, if a GNSS signal is strong, the synthesized set of punctual correlation outputs is synthesized by multiplying the set of very early correlation outputs by a factor greater than 1. Embodiment 57. The method as in embodiment 49, wherein the synthesizing comprises computing a product of a scale factor and a sum of early and late correlation outputs. Embodiment 58. The method as in embodiment 57, wherein the scale factor is computed to produce, for each synthesized punctual correlation output, a synthesized punctual correlation output that has the same amplitude as a true punctual correlation output when early and late correlation outputs are balanced. Embodiment 59. The method as in embodiment 49, wherein the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and the set of late correlation outputs comprises a set of very late correlation outputs and late correlation outputs, and wherein the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output, an early correlation output, a late correlation output, and a very late correlation output. Embodiment 60. The method as in embodiment 49, wherein the set of early correlation outputs comprises a set of very early correlation outputs and early correlation outputs, and wherein the synthesizing comprises averaging, for each synthesized punctual correlation output, a very early correlation output and an early correlation output. Embodiment 61. The method as in embodiment 49, wherein the set of punctual correlation outputs is synthesized for an Altboc formatted signal in a C channel, of GNSS signals. Embodiment 62. The method as in embodiment 61 wherein the set of punctual correlation outputs uses known predetermined phase offsets between correlators that are beyond a main peak of an Altoboc correlation. Embodiment 63. The method as in embodiment 62, wherein one or more secondary peaks beyond the main peak have a different phase than the main peak. Embodiment 64. The method as in embodiment 49, wherein the synthesized set of punctual correlation outputs is used to adjust a carrier phase lock loop and a carrier phase for the carrier phase lock loop is generated with a synthesized punctual correlation that averages multiple correlators so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. Embodiment 65. The method as in embodiment 49, wherein the synthesized set of punctual correlation outputs is used to adjust a carrier phase lock loop and a carrier phase for the carrier phase lock loop is generated with a synthesized punctual correlation that averages multiple correlators that favor the earlier correlators so as to produce a carrier phase estimate with reduced carrier multipath than the multipath at a correlator between the early and late correlators. Embodiment 66. A method of operating a GNSS receiver, the method comprising: determining a secondary code phase of a received GNSS signal from a first GNSS satellite; determining a difference between the determined secondary code phase of the received GNSS signal from the first GNSS satellite and a predicted secondary code phase of a received GNSS signal from a second GNSS satellite which is different than the first GNSS satellite; correcting the predicted secondary code phase based on the determined difference. Embodiment 67. The method as in embodiment 66, wherein the method further comprises: determining additional secondary code phases of other received GNSS signals from other GNSS satellites; determining additional differences between the determined additional secondary code phases and the predicted secondary code phase; and wherein the correcting is based on the determined difference and the additional differences. Embodiment 68. The method as in embodiment 66, wherein the correcting comprises (1) comparing the determined difference to a fraction of a code length in time of an epoch of the secondary code and (2) (a) adding the code length in time to the determined difference if the determined difference is less than the fraction and wrapping a result of the addition within a range of possible values in milliseconds of the code length or (b) subtracting the code length in time from the determined difference if the determined difference is more than the fraction and wrapping a result of the subtraction within a range of possible values in milliseconds of the code length. Embodiment 69. The method as in embodiment 67, wherein the correcting is based on the highest likelihood difference among the determined difference and the additional differences. Embodiment 70. The method as in embodiment 66, wherein the method further comprises: using the corrected secondary code phase for the second GNSS satellite to wipe the secondary code from the received GNSS signal from the second GNSS satellite to allow coherent integration of a primary code from the second GNSS satellite. Embodiment 71. The method as in embodiment 66, wherein the method further comprises: determining a position solution for the GNSS receiver from a plurality of GNSS satellites including the first GNSS satellite but not the second GNSS satellite prior to correcting the predicted secondary code phase. Embodiment 72. A method of operating a GNSS receiver, the method comprising: receiving GNSS signals containing one or more primary codes and one or more secondary codes from a GNSS satellite; generating, from the received GNSS signals, a set of first correlation outputs from an acquisition correlation process that operates on the received GNSS signals, the first correlation outputs including secondary code correlation cycles, over time, of the one or more secondary codes; locally generating a set of one or more expected secondary code sequences, over time, of the one or more secondary codes; computing a differential secondary code sequence based on the locally generated set of one or more expected secondary code sequences; computing a set of differential correlation samples based on the first correlation outputs and a complex conjugate of each of the first correlation outputs; correlating the set of differential correlation samples against the differential secondary sequence code to provide a set of second correlation outputs; determining, from the set of second correlation outputs one or more secondary code phases of the one or more secondary codes. Embodiment 73. The method as in embodiment 72, wherein the differential secondary code sequence is computed based on a product of an expected secondary code sequence and a delayed version of the expected secondary code sequence and wherein the differential correlation samples are based on a product of the set of first correlation outputs and a delayed version of the first set of correlation outputs. Embodiment 74. The method as in embodiment 73, wherein the delayed version is delayed by a fraction of one or more primary code epochs. Embodiment 75. The method as in embodiment 73, wherein the delayed version is delayed by a nonzero integer multiple of one bit in the secondary code. Embodiment 76. The method as in embodiment 73, wherein the first correlation outputs provide complex data that comprises real part data and imaginary part data, and the complex conjugation operates on the imaginary part data. Embodiment 77. The method as in embodiment 73, wherein the correlating is performed over a plurality of secondary code epochs. Embodiment 78. The method as in embodiment 73, wherein the set of second correlation outputs includes a value of a real part of a peak, and the secondary code phase is determined from one of an absolute value of the real part, a magnitude of the correlation output, and a squared-magnitude of the correlation output. Embodiment 79. The method as in embodiment 73, wherein the correlating is performed with one or more discrete Fourier transforms. Embodiment 80. The method as in embodiment 79, wherein the correlating comprises: circularly cross correlating the set of differential correlation samples against the differential secondary code sequence. Embodiment 81. The method as in embodiment 79, wherein the correlating comprises: computing a discrete Fourier transform of the set of differential correlation samples to produce a first set of results; computing a discrete Fourier transform of the differential secondary code sequence to produce a second set of results; multiplying the first set of results by a complex conjugate of the second set of results to produce a first product; computing an inverse discrete Fourier transform of the first product. Embodiment 82. The method as in embodiment 73, wherein the method further comprises: correlating a set of differential correlation samples against a further delayed differential secondary code, based on the determined set of one or more expected secondary code sequences, to provide a set of third set of correlation outputs that is used to check the set of second correlation outputs. Embodiment 83. The method as in embodiment 82 wherein the set of differential correlation samples used to construct the third set of correlation outputs uses a different delay than that used to construct the second set of correlation outputs. Embodiment 84. The method as in embodiment 30 wherein the combining integrates coherently the results from the first correlation operation with results from the second correlation operation, wherein an optimal phase offset is determined and applied for the coherent duration before said coherent combining. Embodiment 85. The method as in embodiment 82 in which the second set of correlation outputs and the third set of correlation outputs are combined to produce a correlation output with higher fidelity. Embodiment 86. The method of embodiment 85 in which the combining is one of (A) coherent combining by addition or (B) incoherent combining by addition with the latter done by either adding the magnitudes or squared magnitudes of the second and third sets of correlation outputs. Embodiment 87. The method of embodiment 86 in which additional sets of correlation outputs are formed in the same manner as that producing the second and third sets and in which the delays used in forming each of the sets are different from one another. Embodiment 88. The method of embodiment 74 in which the differential secondary code and the differential correlation samples used the same delays in their construction. Embodiment 89. The method of embodiment 72, wherein if the determining of the one or more secondary code phases is unsuccessful or otherwise inadequate, then: computing at least one additional differential secondary code sequence based on the locally generated set of one or more expected secondary code sequences; computing at least one additional set of differential correlation samples based on the first correlation outputs and a complex conjugate of each of the first correlation outputs; correlating the at least one additional set of differential correlation samples against the at least one additional differential secondary sequence codes to provide additional sets of correlation outputs; determining, from the set of second correlation outputs and the additional sets of correlation outputs one or more secondary code phases of the one or more secondary codes. Embodiment 90. The method of embodiment 89, wherein the differential correlation samples and the differential secondary code sequences used to form different sets of correlation outputs, employ delays in their construction, and wherein the delays for the different sets of correlation outputs differ from one another. Embodiment 91. The method of embodiment 90, wherein the second correlation outputs and additional sets of correlation outputs are combined by addition of one of their magnitudes and their squared magnitudes, and wherein the combination is examined to determine the secondary code phases. Embodiment 92. The method of embodiment 89, wherein the differential correlation samples and the differential secondary code sequences are computed using a first delay, and the wherein the additional differential correlation samples and the additional differential secondary code sequences are computed using a second delay that is different than the first delay. Embodiment 93. The method of embodiment 89, wherein the differential secondary code sequence is computed based on a product of an expected secondary code sequence and a first delayed version of the expected secondary code sequence and wherein the differential correlation samples are based on a product of the set of first correlation outputs and a first delayed version of the first set of correlation outputs, and the additional differential secondary code sequence is computed based on a product of an expected secondary code sequence and a second delayed version of the expected secondary code sequence and wherein the additional differential correlation samples are based on a product of the set of first correlation outputs and a second delayed version of the first set of correlation outputs, and the first delayed version has a first delay and the second delayed version has a second delay that is different than the first delay. Embodiment 94. A method of operating a GNSS receiver, the method comprising: receiving GNSS signals containing one or more primary codes and one or more secondary codes from a plurality of GNSS satellites; acquiring one or more primary codes in the received GNSS signals to identify at least some of the plurality of GNSS satellites; determining a secondary code phase of at least a first set of the received one or more secondary codes using a first method after acquiring the one or more primary codes; determining a secondary code phase of at least a second set of the received one or more secondary codes using a second method after the first method is used to determine the secondary code phase of at least the first set, the second method being different than the first method. Embodiment 95. The method as in embodiment 94, wherein the first method is a method according to embodiment 15 and the second method is a method according to one of: (a) a method according to embodiment 30 or (b) a method according to embodiment 66. Embodiment 96. The method as in embodiment 94, wherein the method further comprises: determining a secondary code phase of at least a third set of the received one or more secondary codes using a third method. Embodiment 97. The method as in embodiment 96, wherein the first method is a method according to embodiment 15, and the second method is a method according to embodiment 30 or embodiment 72, and the third method is a method according to embodiment 66. Embodiment 98. The method as in embodiment 94 wherein the first method operates on GNSS signals from a single GNSS satellite and the second method operates on GNSS signals from multiple GNSS satellites. Embodiment 99. The method as in embodiment 98 wherein the first method is one of: (a) a method according to embodiment 15 or (b) a method according to embodiment 30 or (c) a method according to embodiment 72; and the second method is one of: (a) a method according to embodiment 66 or (b) a method according to embodiment 40. Embodiment 100. The method as in embodiment 98, wherein the method further comprises: propagating a determined secondary code phase from the first method for use after secondary code phase measurements are not available in the GNSS receiver for the first set. Embodiment 101. The method as in embodiment 99, wherein the second method initially uses coarse time and position to predict secondary code phase; and after satellite time is decoded from a GNSS signal and the GNSS receiver generates a fine time estimate at the GNSS receiver the second method is used again to predict secondary code phase for one or more secondary codes that have not been acquired. In the foregoing specification, specific exemplary embodiments have been described. It will be evident that various modifications may be made to those embodiments without departing from the broader spirit and scope set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. 2021283884  07 Dec 2022 Appendix - Modernized Consumer Grade GNSS Secondary Code Acquisition and Signal Tracking oneNav, Inc 2021283884  07 Dec 2022 Abstract In the following disclosure, we describe all steps necessary to acquiring time, frequency and secondary code phase in a modernized consumer grade L5-only GNSS receiver and subsequently tracking the signals. In our preferred embodiment, the signals are tracked using traditional “closed loop” techniques. In an alternative embodiment, they are tracked with open loop techniques. The process of pulling these signals into a tracking mode is as complex as the signals involved, and so we use a mix of both open and closed-loop strategies. Further related embodiments related to power reduction, multipath mitigation, sensitivity enhancement and fading immunity are also described. 2021283884  07 Dec 2022 Contents Appendix - Modernized Consumer Grade GNSS Secondary Code Acquisition and Signal Tracking 89 Abstract....................................................................................................................................................... 90 Purpose ....................................................................................................................................................... 97 Modernized enhancements ........................................................................................................................ 97 Modernized advantages .........................................................................................................................97 Prior Art....................................................................................................................................................... 98 Why Modernized is Difficult .......................................................................................................................98 How the Incumbents Do It ...................................................................................................................... 99 L5 Only is Viable ......................................................................................................................................99 Present the L5 , or modernized only, approach......................................................................................99 A further advantage of modernized only................................................................................................ 99 The new closed loop system ................................................................................................................. 100 Secondary codephase estimation before the fix rather than after the fix ........................................... 100 Use the early secondary code phase estimation to aid the fix and subsequent acquisitions .............. 100 Using wideband all the way ..................................................................................................................100 Using the sidebands to aid the center channel .................................................................................... 100 Re-using the vector processor .............................................................................................................. 101 Advance multipath mitigation: moving the punctual channel out ....................................................... 101 A synthetic punctual that works with ground bounce in cell phones ..................................................101 Other advance tracking; phase detector combining for AFC and PLL .................................................. 101 Secondary correlation for integrity and ML.......................................................................................... 102 Equalization for group delay across a wideband front end .................................................................. 102 CW interference with Notch filtering ................................................................................................... 102 Block 1: Initial Search Parameters ........................................................................................................ 103 Block 2: Primary Codephase Acquisition .............................................................................................. 105 Block 3: Secondary Codephase Acquisition .......................................................................................... 106 The first independent method: Independent differential histogram method 1.............................. 107 Signal model......................................................................................................................................108 How to differentially detect secondary code chip changes.............................................................. 109 Code tracking during secondary codephase estimation...................................................................112 Frequency tracking during secondary codephase estimation ..........................................................113 Deterministic Relationship between A,B,C Dopplers and Range-Rate ............................................. 113 2021283884  07 Dec 2022 Aggregating the differential secondary codephase bit estimates .................................................... 115 When to analyze the histograms ...................................................................................................... 116 How to compare the histogram to the true secondary code ........................................................... 117 Example for a pilot channel .............................................................................................................. 119 Example with a data channel ............................................................................................................121 Improving detection time and accuracy by aggregating components .............................................125 Galileo Combined secondary code method......................................................................................126 Generating a detection threshold from the differential bit probability ........................................... 127 Improvement for Merging change and no change histograms with probability.............................. 127 Corner case: frequency error larger than 250Hz .............................................................................. 130 Example of 400Hz error ....................................................................................................................132 Figure 8K Example Secondary Code Acquisition Flow ..........................................................................134 Another method to aggregate component to improve secondary code acquisition ...........................134 What is unique in this histogram-based secondary code estimation method ................................. 137 The second independent method: Coherent secondary code methods .............................................. 138 Remarks about the coherent test .....................................................................................................141 Improvement for coherent integration on data components .......................................................... 142 Correlation of DataA component......................................................................................................144 Figure 8N Correlation of DataB component .....................................................................................144 Correlation of PilotA component ...................................................................................................... 145 Improving the calculation efficiency of the coherent method ......................................................... 145 Frequency domain coherent method ...............................................................................................146 Figure 8T Coherent Method Example Flow Chart.............................................................................149 Computation considerations for the coherent method ................................................................... 149 Results of Differential and Coherent method................................................................................... 149 The Third independent method: Cross-SV ensemble correlation integration method ........................ 152 Block 4 (code and carrier pull in) ..............................................................................................................162 Tracking correlator options in hardware: parallel dedicated or series re-usuable ......................... 163 Correlation Option1: msec to msec ..................................................................................................165 Correlation Option2: epoch to epoch ....................................................................................................... 166 Block 5 and Block 13: Pull-in states...........................................................................................................166 Block 6: Tracking ....................................................................................................................................... 167 Narrow mode on the A / B channels ...................................................................................................... 170 2021283884  07 Dec 2022 Baseline sample clock with ½ chip spacing centered at punctual .................................................... 171 Double sample clock with ¼ chip chip spacing centered at punctual...............................................171 Narrow Mode: Sample clock with ½ chip without punctual centered ½ sample clock early ...........172 Narrow mode on the C-channel............................................................................................................175 WideMode with two cells between early and late ........................................................................... 176 Narrow mode with one cell between early and late ........................................................................ 177 Analysis of the DLL discriminator range and slope for wide and narrow modes ............................. 178 C-channel Centering Methods Using A+B, A or B and an additional alignment ............................... 179 Secondary correlation measure for amplitude for integrity monitoring and correction ................. 181 Correlator configurations...................................................................................................................... 182 Block 7: Produce Valid Measurements ..................................................................................................... 184 Block 8: Position fix ................................................................................................................................... 184 Fine time case .......................................................................................................................................187 Coarse time case ...................................................................................................................................187 Block 9: Transfer Method to Predict Secondary Codephase .................................................................... 188 Recipe to predict start of secondary code sequence in hardware timer units.....................................189 Fine time case: ..................................................................................................................................189 Coarse time case with a z-count and position error less than 1 / 4msec........................................... 189 Coarse time case without z-count or with position error more than ¼ msec .................................. 190 Transfer method recipe to correct the predicted secondary codephase with a measured secondary codephase ......................................................................................................................................... 190 Block 10: Preposition (prePos)..................................................................................................................190 Blocks 11, 12, 13 and 14: Deciding where to send the prePos ................................................................. 191 Blocks 15 and 16: Decoding symbols ........................................................................................................191 Data decode inside a secondary code sequence ..............................................................................191 Multi-system symbol decode............................................................................................................193 Block 17, 18, and 19: Loss of Lock.............................................................................................................193 A higher level system summary of L5 Only Receiver ................................................................................ 194 Innovations: .............................................................................................................................................. 195 Method to generate A,B,C channels ......................................................................................................... 197 A, B correlators .....................................................................................................................................198 Carrier generation.............................................................................................................................198 Code generation (each msec) ............................................................................................................... 198 2021283884  07 Dec 2022 Codephase Measurement:....................................................................................................................199 Average Doppler ...................................................................................................................................200 Carrier Phase ......................................................................................................................................... 200 Correlation Math model for A-B channels ................................................................................................ 200 Step 1: Wipe carrier ..............................................................................................................................200 Step 2: Wipe Code.................................................................................................................................200 C-channel: ALTBOC ...................................................................................................................................202 Higher level summary ........................................................................................................................... 202 AltBoc NCO:...........................................................................................................................................202 Correlation ............................................................................................................................................ 203 Wipe carrier ..........................................................................................................................................203 Wipe BOC ..............................................................................................................................................203 Wipe Code.............................................................................................................................................203 Flow charts of A,B, and C channel processing of input samples with local code and carrier replicas.. 205 An Approach to Secondary Code Acquisition: Coherent Differential Method .........................................208 Introduction ..........................................................................................................................................208 General Idea..........................................................................................................................................208 Advantages and Limitations..................................................................................................................209 Other Variations.................................................................................................................................... 210 Precision Carrier Determination ...........................................................................................................210 Summary of the Coherent Differential Method ...............................................................................212 General Advantages .......................................................................................................................... 212 Example claim ...................................................................................................................................212 2021283884  07 Dec 2022 List of Figures Figure 8A High Level Block Diagram of L5 Signal Direct Acquisition and Tracking ................................... 103 Figure 8B A Sideband Data Channel Decoding.........................................................................................106 Figure 8C Four component AFC Discriminator values without compensation......................................... 115 Figure 8D AFC 4 Component Discriminator values with compensation ................................................... 115 Figure 8E 20msec Secondary Codephase Length Differential detector phase and agreement count at 25db-Hz .....................................................................................................................................................121 Figure 8F Long Term Four Individual Components of Differential Detector ............................................ 126 Figure 8G Image of Galileo Secondary Codephase Lengths On All Four Components ............................. 126 Figure 8H FLL frequency detector 400Hz Error Example .......................................................................... 133 Figure 8I DLL Example with 400 Hz Error ..................................................................................................133 Figure 8J FLL Detector Example with 395Hz Removed ............................................................................. 133 Figure 8K Code without frequency modulation........................................................................................ 139 Figure 8L Code with 10Hz frequency error ............................................................................................... 139 Figure 8M Data A Example........................................................................................................................144 Figure 8N Correlation of DataB component .............................................................................................144 Figure 8O Data B Example.........................................................................................................................144 Figure 8P Data B Secondary Code Correlation Example ........................................................................... 145 Figure 8Q Pilot A Example at 0Hz..............................................................................................................145 Figure 8R Pilot A Max Example .................................................................................................................145 Figure 8S Coherent Method Example Secondary Correlation .................................................................. 152 Figure 8T Secondary code alignment across SVs at the time of transmission (ideal) .............................. 152 Figure 8U Secondary code phases at the receiver - an illustration .......................................................... 152 Figure 8V Secondary Correlation Example over 100ms Pilot Secondary Code ........................................159 Figure 8W Example 8-Component Secondary Correlation .......................................................................159 Figure 8X 10ms Example ...........................................................................................................................159 Figure 8Y Example Excluding Noisy Inputs................................................................................................159 Figure 8Z Cross-SV Coherent, Time Non-Coherent Example .................................................................... 160 Figure CC Correlation Option 1 .................................................................................................................165 Figure 8EE Basic Correlator Positions .......................................................................................................170 Figure 8FF Multipath Return.....................................................................................................................171 Figure 8DD A-B channel BPSK Discriminator............................................................................................ 175 Figure 8EE AltBOC CorrVec (Theoreatical) ................................................................................................ 175 Figure 8FF C-channel corrVec in wide and narrow modes .......................................................................177 Figure 8GG Directional movement of E,P,L w.r.t. their placement on the AltBOC CorrVec..................... 177 Figure 8HH AltBOC DLL Discriminator Curves...........................................................................................178 Figure 8II AltBOC CorrVec and PhaseVec..................................................................................................180 Figure 8JJ DLL Discriminator showing the regions of different slope signs .............................................. 180 Figure 8KK PRN3 Primary peak tracking ...................................................................................................182 Figure 8LL PRN5 primary peak tracking ....................................................................................................182 Figure 8MM PRN 3 tracking sidepeak.......................................................................................................182 Figure 8NN PRN 5 tracking sidepeak.........................................................................................................182 Figure 8OO Image of 20 Correlator Code Window (corrVec) ...................................................................184 2021283884  07 Dec 2022 Figure 8PP Data Channel Bits and Secondary Code Length and Relationship Between Millisecond and Epoch Correlations .................................................................................................................................... 192 Figure 8TT Sideband Shift ......................................................................................................................... 197 Figure 8RR Example Phase Accumulation Mechanism ............................................................................. 198 Figure 8VV Flowchart for Generating A, B and C Correlators ................................................................... 207 2021283884  07 Dec 2022 Purpose High level description: in one embodiment, an implementation can use a closed loop system to acquire, fix, and track with only wideband high accuracy signals L5 with only L5 wideband signals (that is, without dependency on legacy narrowband signals, such as L1 GPS signals). Modernized enhancements Modernized GNSS signals have several enhancements relative to the original GPS L1 CA single that enhance its accuracy and reliability. Firstly, whereas GPS L1 CA has a single component with data bits every 20 millisecond, the modernized signals have two quadrature components: a data channel with the data symbols and a pilot channel without data symbols. The European Galileo and the Chinese BDS versions have two more quadrature components enabling a second data and pilot channel. Secondly, whereas there are no phase rotations between the 20msec data bits on GPS L1 CA, the modernized signals have a secondary code that produces phase rotations at the end of each primary code inside each data bit. The code sequence is different sequence on both the data and pilot channel. The pilot channel has a longer separate secondary coding. Thirdly, whereas GPS L1 has a chipping rate of 1.023Mhz, the modernized signals in the L5 band have a ten times higher chipping rate of 10.23Mhz. Fourthly, whereas the GPS L1 CA signal has a BPSK modulation and a correlation vector that is centered around the carrier, the European and Chinese modernized signals have an additional multilevel modulation at 1.5 times the chipping rate of the primary code that produces sidebands offset from the carrier. This is referred to as the ALTBOC on the European Galileo system, and ACEBOC on the Chinese Beidou or BDS system. This modulation enables the additional data and pilot channels. A fifth difference, whereas GPS L1 CA has an 8-bit parity-word for each 24 bits data, the modernized signals have convolution coding and more error correction bits. A sixth difference of the modernized signals is that they have stronger transmit power relative to L1 CA: each component can be at least 0.5dB stronger, and the combination of all four components can be 6 dB stronger. A seventh difference of the modernized signals is that all countries deploying satellites in the L5 band have chosen to implement nearly identical signals structure with only minor differences in the data channel bit rate, pilot channel secondary code lengths, and multilevel inter-chip modulation. Modernized advantages The advantage of the data and pilot channel is to allow tracking of weaker signals with the pilot channel. The advantage of the secondary coding is the reduction in the cross correlation between different satellites which improves the reliability of the signal by reducing false tracking. Such cross correlation occurs when searching for a weaker satellite that has a carrier frequency that is modulo the primary code repetition frequency of a stronger visible satellite. The cross correlation can be as strong as 13dB below the stronger satellite. The secondary code and higher chipping rate reduce cross correlation by a 2021283884  07 Dec 2022 similar 13dB. Cross correlation leads to not finding the correct signal and tracking a spur of the strong satellite which can cause collection of wrong satellite data and produce wrong observed phase and induce large position errors. Secondary code has another major advantage that it enables a finer observation of the super-millisecond phase, that is, the portion of the signal travel time that is longer than a millisecond. The advantage of the higher chipping rate compared to a slower chipping rate is higher precision in the determination of the received phase and a reduced multipath effect. For example, the correlation vector with GPS L1 CA is roughly + / - 293 meters, whereas the correlation vector for modernized signals at L5 is roughly + / -29.3meters. A reflection of length 50 meters will distort the L1 CA correlation vector but will not impact L5 correlation vector as it falls outside of its range. The advantage of the ALTBOC or ACEBOC additional sub-chip modulation is to produce a finer correlation vector compared to a BPSK correlation vector with the same chipping rate. The finer vector further improves precision and reduces the impact of reflections inside range of the correlation vector. The advantage of the improved coding of the modernized signals is a reduced bit error rate meaning it is possible to reliably decode satellite data at weaker signals levels. Decoding satellite time is a critical event for each assisted GNSS receivers. The reliability of this process is improved with modernized signals. The advantage of the stronger signals is the ability to use weaker signals. The advantage of a unified signal structure is a simplified HW and SW design. The legacy GNSS systems like GPS L1 CA, GLONASS, early BDS and Galileo near L1 have significantly different signal structures leading to a complex HW and SW design. Prior Art The prior art includes the narrow correlator techniques described in U.S. Patent #5495499. Modernized signal tracking is also well-described in a NovAtel patent, U.S. Patent #6922167B2. Modernized signal composite tracking is described in U.S. Patent # 7885317. Secondary code acquisition is described in a technical paper at https: / / www.researchgate.net / publication / 317225851 Efficient GNSS secondary code correlations f or high sensitivity acquisition. High sensitivity secondary code acquisition is described here: https: / / www.researchgate.net / publication / 320514396. Rapid secondary code acquisition is described in http: / / citeseerx.ist.psu.edu / viewdoc / download?doi=10.1.1.161.5205&rep=rep1&type=pdf. Why Modernized is Difficult One disadvantage of the modernized signals is that these signals are more that 350MHz from the GPS L1 CA signal, which generally requires a separate antenna and RF signal path. A further disadvantage of the modernized signals is the complexity of the initial acquisition of the signals. Because the chipping rate is 10 times higher than GPS L1 CA, and the codes are 10 times longer, the complexity increases by a factor of 100. 2021283884  07 Dec 2022 How the Incumbents Do It Adding L5 to a conventional receiver adds cost. However, the reason to add L5 is to increase the accuracy of the receiver. As of the time of this writing, all GNSS receiver manufacturers who support L5 perform the acquisition and first fix with the signals at L1 and then subsequently track L5 signals. If the L5 signal is lost, the L1 signals are used to re-acquire and then hand off to the L5 tracking. Because the visibility of each satellite is independent, the L1 receiver cannot be shut off. However, because of the precision of the modernized L5 signals, the L1 signals are often significantly de-weighted in the position calculation filter. Such a methodology does not take advantage of the intrinsic improved reliability of the modernized signals. In one sense, a less reliable (weaker and less redundant) system is used to acquire a higher reliability signal. One advantage of the dual frequency receiver is the capability to estimate the ionospheric delay that is proportional to the density of the free electrons in the area of the atmosphere through which the signals travel and inversely proportional to the signal carrier frequency. For GNSS receivers in devices that have internet connectivity, like cell phones, it is possible to access a server and download the ionospheric estimates that have been produces by a world-wide reference network of GNSS receivers. The accuracy of these models is now sub-meter, making the cost and power associated with a dual frequency mobile consumer grade receiver unnecessary. L5 Only is Viable The number of L5 signals is growing rapidly. The European Galileo system is nearly complete with 22 Satellites and a final number of 24 by 2021 containing the E5 signal with the ALTBOC modulation and four components, two at the lower sideband E5A and two at the upper sideband E5B. The United States will have a constellation of 24 Satellite with L5 with two components by 2024, and has already 13 in 2019. The Chinese will have a full constellation of 24 satellites containing the signal B2 with lower sidebands B2A and upper sidebands B2B. Present the L5 , or modernized only, approach It is the objective of this disclosure to present embodiments of a modernized only GNSS receiver that can take full advantage of the enhancements in the modernized signals. Mainly, in one embodiment it uses only the modernized wideband signals for the purposes of accuracy and reliability. Whereas the L1 CA signal has been the Gold standard signal enabling rapid acquisition and high sensitivity, the modernized signals enhancements offer the promise of even higher performance at lower cost. For example, the number of RF paths is cut from 2 to 1, the number of signal structures that need to be tracked is cut from over 4 to 1, the SW complexity to handle cross correlations is reduced. A further advantage of modernized only Our approach is, in one embodiment, to only use higher bandwidth signals to improve accuracy in all functions of the receiver. Transitioning from the first fix with higher multipath means the receiver has to handle case of lower accuracy and lower integrity while trying to find higher accuracy and more reliable signals. 2021283884  07 Dec 2022 The new closed loop system The full process of primary codephase and frequency acquisition, secondary codephase acquisition, code and frequency pull-in, tracking, fixing and reacquisition is different for a modernized only receiver, offering the opportunity for innovation in many operations. The acquisition process was described in the OneNav US provisional patent application No 62 / 915510, filed October 15, 2019. Secondary codephase estimation before the fix rather than after the fix The secondary codephase acquisition requirements for modernized only is different from the L1-L5 approach in that the process must operate after acquisition rather than after the first fix. The method after acquisition must tolerate higher frequency error as acquisition uses mainly non-coherent integration of the primary codephase with a bandwidth of 1kHz where the frequency step can be as high as 200-500Hz. The L1-L5 receiver will generally only attempt secondary codephase after it has its first fix where the frequency uncertainty is significantly lower. Use the early secondary code phase estimation to aid the fix and subsequent acquisitions The one millisecond phase rotations of the secondary code and longer secondary code lengths on the pilot channels provide significantly more range information than the L1 CA signal with its 20msec data bit. These features are exploited in the first modernized only fix in the typical case of assisted GNSS in a cell phone when only approximate initial time and position information are available. Whereas the L1 CA data bit provides + / -10msec of range ambiguity, the E5 and B2 pilot secondary codes provide + / 50msec of range ambiguity. The predicted secondary code phase forms a coarse time fix (to be described below) which can be corrected with the earlier secondary code measurements. Whereas the L5 secondary code acquisition for L1-CA requires an L1-based position and time fix, the L5 time determination can happen before the first fix. Thus, secondary code phase estimation will in general not be needed after the first fix in the modernized only receiver. However, because the L1 based coarse solver cannot resolve the millisecond ambiguity well enough, it will need to use secondary code phase estimation before it can track the modernized signals with high sensitivity. Using wideband all the way After first fix, another major differentiation in the oneNav solution compared to current L1-L5 receivers is the use of the full signal bandwidth. The sidebands, separated by 30.69MHz and referred to as the A and B channels, enable methods to reduce the effects of fading and are more resilient than the typical consumer grade implementation of L5 that uses only one sideband. OneNav has also implemented the wideband ALTBOC and ACEBOC tracking. As this signal is centered at the carrier, it is referred to as the C or center-channel. These signals offer unprecedented measurement precision and multipath mitigation. These measurements are made in parallel with the sideband measurements. Using the sidebands to aid the center channel A bank of sideband tracking correlators, with a half chip code spacing, provide the observability needed to acquire the narrow correlation vector of the wideband tracking. In all but the worst urban canyons where there are few direct signals, the wideband tracking provides lane level navigation capability due to sub-decimeter level measurement precision. Another bank of less than 1 / 5 or 16th chip spaced 2021283884  07 Dec 2022 correlator (depending on configuration), is used to observe the wideband C channel, in order to both reduce tracking ambiguity with the multi-peak correlation vector and provide additional carrier phase tracking stability needed for pedestrian applications. Re-using the vector processor Observability of 3 wideband channel per satellites requires new methods to produce a high number of correlations per satellite while still retaining a low silicon footprint and low power. The solution presented here is to reconfigure the vector processor in the acquisition engine rather than instantiating a number of individual correlators. Thus, the frequency domain and time domain correlation processes may re-use the same vector processing and associated memory. Advance multipath mitigation: moving the punctual channel out A method is presented by which the same multipath mitigation of a 100Mhz conventional narrow correlator Early-minus-late tracking configuration can be achieved with only a 50Mhz sample clock. This method can also be applied to the sideband tracking of L5 or E5a for examples. The punctual correlator that is generally used to track the carrier phase is moved outside the early and late correlators and is produced with coherent sums of the remaining correlators. The combination is different for the center channel and sideband channels. One advantage is that the early and late power are increased by being higher up the corrVec. A synthetic punctual that works with ground bounce in cell phones Cellphones that are Android based are now using carrier phase tracking to enable new high precision applications. Many of these phones employ linear antennas so ground bounce is a significant source of multipath as the nearby reflection cannot be attenuated with such an antenna. A method is presented to reduce the impact of ground bounce at its worst-case condition in slow pedestrian uses cases. A unique characteristic of the wideband correlation vector (corrVec) is that the multilevel sub chip modulator produces3 cycles of phase ration across its range. Whereas the ground bounce multipath will be very close to the direct signals, the relative phase combination across the correlation vector, also known as constructive and destructive combination, will change quickly with even small antenna motion. For the center channel, and at an optimal sample rate, the elements of the earlier and later corrVec has even higher energy and can be used for carrier tracking that is more resilient to ground bounce multipath. Furthermore, for the C-channels, multiple correlators first phase rotated and then combined to form a weighted punctual correlator that can average the effect of the near ground bounce multipath, reducing the likelihood of cycles slips due to rapidly changing destructive interference. Other advance tracking; phase detector combining for AFC and PLL Just as the four components of E5 and B2, or the two components of L5 are combined to improve acquisition sensitivity, tracking methods are presented that combine multiple components during tracking. In general, because the carrier wavelength, about 25cm, is significantly smaller than the code wavelength, about 29.3m, GNSS receivers lose lock in the carrier tracking loop before the code loop. The main issue is carrier frequency or phase error detectors. Thus, method are presented for combining the phase information from each component coherently to reduce the phase detector error. 2021283884  07 Dec 2022 Secondary correlation for integrity and ML As the ALTBOC and ACEBOC corrVec is so narrow, an integrity monitoring method is needed to validate that the code tracking is properly centered. A secondary correlation of the observed corrVec is made with a predetermined corrVec, that accounts for the system bandwidth, to validate proper tracking. This result is reported as an integrity monitor, to periodically reset the tracking, and serve as an input to the machine learning that is classifying the signal as either directly, multipath, or non-line-of-sight (NLOS) Equalization for group delay across a wideband front end A nearly flat group delay response across the wideband front end bandwidth of 50MHz or more with low cost consumer grade RF filters and amplifiers can be achieved with digital complex equalizer placed in the signal path prior to A / B channelization CW interference with Notch filtering As the A / B channels for acquisition require an FFT of for frequency domain correlation, a simple method of interference mitigation is to observe the frequency response with these filters to identify interference. For the A / B channels, the frequencies with high power can be clipped or blanked, causing a slight decrease in sensitivity when interference is observed, but not the sort of catastrophic problems that are associated with jamming of narrow-band signals. A recent decision by the FCC to allow terrestrial transmission at L1 band increases the incentive to rely on the more reliable L5 signals. 2021283884  07 Dec 2022 Figure 8A High Level Block Diagram of L5 Signal Direct Acquisition and Tracking Block 1: Initial Search Parameters The system begins operation here by determining the initial search parameters and satellites. Based on a starting time and satellite data the position, velocity, and time offset (clock bias) of all satellites is computed. Based on a starting receiver position the vector from the receiver to the satellite position is computed is rotated into the locally level horizontal plane to determine the azimuth and elevation to the satellite. Satellite above the defined horizon mask angle have positive elevation and are added to the initial search set. If starting time, position, and satellite data are accurately known, then the phase of the primary and secondary spreading codes on modernized signals in the E5 band can be estimated accurately. However, as accurate time transfer requires access to an accurate time base, such a time is not generally available. For one embodiment, the initial time estimate is only assumed to be available within a few minutes. While accurate time has been available in some systems, current mobile phone base stations are not required to synchronize or observe the time offset of their transmissions from GNSS time. Also, current mobile phones have alternate means to determine the starting position by associating reception of cellular, WiFi, and Bluetooth transmissions from devices whose position has been already determined. In dense urban environments, the density of positioning references is quite high, enabling a starting position with an accuracy on the order of 100m or better. However, both accurate time and position are required to precompute an accurate received primary and secondary codephase. For this reason, the starting accuracy of such phase estimates is much larger than the sub-millisecond accuracy required to significantly reduce the search size below the full range of these code sequences. Thus, the search for each satellite is for an approximate carrier frequency and a range in frequency around this center estimate. The center frequency is the sum of the predicted frequency shift associated with satellite motion, user motion, and receiver frequency offset of its frequency source. The frequency is related to the derivate of the pseudorange between the i-th satellite and the receiver at time t. The measurement is called a pseudo-range because it contains the effect of the receiver’s and satellite time error (also known as clock bias) from true time. It is also affected by the atmospheric effects of the space through which the signal travels from the satellite to the receiver, referred to as propagation effects. Finally, there is receiver noise. The relativistic effects as well as the rotation of the earth during the time the signal travel time are well known and not included here. Equation 1 PRi (tree) = true range(ttran,trec) + receiver time error(trec) - satellite time error(trec) + propagation effects(trec) + receiver noise(trec) Define the receiver time error as the receiver time offset from true GNSS time. This is also referred to as the receiver clock bias. It can be decomposed into a part less than a millisecond, called the fractional clock bias, and a part that is an integer number of milliseconds, called the integer msec, or intMs. 2021283884  07 Dec 2022 Pseudo Range rate (PRRi) is defined as the derivate of pseudorange to the i-th satellite. True range at time trec is the vector norm of the distance between the satellite at transmission time (ttran) and the receiver location at reception time (trec) (Xr,Yr,Zr) . The satellite position (or space vehicle SV) of the ith-satellite (Xsi,Ysi,Zsi) may be computed iteratively based upon the estimated range. Equation 2 True range to i-th SV at tree = Ri (tree) = [ (Xsi(ttran) — Xr(tree))2 + (Ysi(ttran) — Yr(tree))2 + (Zsi(ttran) — Xr(tree))2 ]1 / 2 Assume that the GNSS control segment estimates the satellite position and time offset from true time and this data is available either by deeoding from the satellite or by other means sueh as through the internet. The satellite eloek offset impaets the phase of the generated primary and seeondary pseudorandom (PN) eode sequenees at transmission time. The reeeiver eloek offset impaets the phase of reeeived phase of both sequenees. The propagation effeets inelude the ionospherie and tropospherie delays as well as errors due to the ambient thermal noise and multipath and refleetion errors. The reeeiver noise ineludes the reeeivers generated noise due to its imperfeetions in generating and exaet repliea of the broadeast signal. The true pseudorange rate is simply the time derivative of the pseudorange. This is eomputed by forming the time derivatives ( d / dt { } of eaeh element of the pseudorange as shown below: Equation 3 PRRi (tree) = d / dt { Ri(ttran,tree) } + d / dt { receiver time error(trec) } - d / dt { satellite time error(trec) }  + d / dt { propagation effeets(tree) } + d / dt { reeeiver noise(tree) } = d / dt { Ri(ttran,tree) } + reeeiver eloek drift - satellite eloek drift + d / dt {propagation effeets} + noise The reeeiver eloek drift is the time derivative of the reeeiver eloek bias. The satellite eloek drift is the time derivative of the satellite eloek bias. The time derivative of the propagation effeets is small, often less than 1m / s. In general, the reeeiver estimates the time derivative of the range by differeneing the ranges over some time interval, say of 1 seeond. The satellite eloek drift is assumed provided by the signal or the internet. Using all available known estimates, the pseudorange-rate, PRR, is eomputed as the nominal range rate. It is then eonverted to a frequeney estimate by sealing by the appropriate wavelength. For searehing at the eenter of the E5 bands, the wavelength = speed of light / 1191.795Mhz = 25.155em, about 25% larger than the 19.054em wavelength at L1. The frequeney range to be seareh depends on the uneertainty in the estimated PRR. The errors eome from the position estimate error, the time error, but are dominated by the error in the estimate of reeeiver eloek drift. For eommereial reeeivers that employ a TCXO, or a softer eompensated erystal oseillator, SCXO, the uneertainty is typieally about + / -1PPM, or one part per million. This error ean be redueed for reeeivers that ean diseipline their oseillators to a more stable eellular signal. In sueh a ease, indueed Doppler due to reeeiver speed must be aeeounted for. In general, the reeeiver eloek bias, or the initial time error is mueh larger than one milliseeond, so the full primary eodephase must be searehed, and the seeondary eodephase is unknown. This means the 2021283884  07 Dec 2022 searchis performed as a number of individual searches for the primary code at a set of discrete frequencies. The frequency search step is related to the coherent integration time, typically one millisecond. In order to improve sensitivity, the one millisecond power (or amplitude) estimates at each possible codephase position, typically about two samples per primary code chip, are non-coherently integrated over a longer period so as to average the noise, and improve the post-correlation signal to noise ratio. During the non-coherent integration, the codephase estimates need to be time shifted to account for the code shift due to carrier frequency during the integration. The code Doppler at 1191.795Mhz (E5 and B2) is one code chip per 116.5 carrier cycles. The ratio is 115 at 1175.45MHz (E5a,B2b, and L5), and 118 at 1207.14Mhz at (E5b and B2B). Generally, the frequency step is reduced so that code chip shift error at ½ the frequency step over the expected longest integration time. For example, if the integration time is 200msec, then the frequency step is limited as follows: ½ = freqStep / 2 / (116.5) cycles / chip at E5 * 0.2 seconds. Solving for freqStep = 116.5 / dt. For 0.2seconds, the result is that the frequency step should be no smaller than 227Hz. The search parameters for a set of satellites are the initial conditions, or seeds, for the primary code generators, the center frequency, the frequency step, the number of frequencies around the center, and the integration time. Initial Search = { PRN, PRN seeds, frequency center, number of frequencies, number of milliseconds, detection thresholds } Block 2: Primary Codephase Acquisition This block contains the hardware and software to perform the search for a number of satellites in series and parallel. The search continues until the peak is found in the correlation that has a sufficient SNR to provide a level of detection confidence traded off by a level of false detection. The noise floor is parameterized by estimating the noise floor mean and standard deviation of all the code phase hypotheses at each individual frequency. For the strongest peak, the correlation values are removed so that the noise floor is unbiased. A first detection test is declared satisfied when 10*log10((maxPower -noisePower) / noiseVariance) > threshold1. To improve robustness against cross correlations, or other interference source that produce correlations above the Gaussian noise floor, a second test is performed on the second highest peak that is not near the top peak. This is referred to as the margin test, where the second detection test is declared satisfied when 10*log10((maxPower -offPeakPower) / noiseVariance) > threshold2. Typical values are 16dB and 6dB for threshold1 and threshold2 respectively. The non-coherent integration continues until either both tests are satisfied, or the maximum integration time is achieved. A detection moves a signal candidate to Block 3. Notice that by using a maximum coherent detection time of one msec, the error of the secondary codephase is minimized. It should be pointed out that the integration occurs on a msec to msec basis, not a primary code epoch to epoch, so there is loss when there is a phase reversal inside the integration window. As the time uncertainty is large, it is expensive in both computation resources and power to test multiple hypotheses for the secondary code phase. The worst case occurs when the received primary code phase is in the center of the msec window: a phase reversal due to the secondary code, or even the data symbol change will cause a 180 degree phase rotation that leads to complete cancelation of correlation energy. In the 2021283884  07 Dec 2022 embodiment described in OneNav US provisional patent application No 62 / 915510, filed October 15, 2019 a number of improvements are proposed to compensate for these conditions. The worst-case condition is not continuous, as the probability of phase reversal every msec is on the order of 50%. Another way to minimize the maximum loss is to use more than one component of the signals, such as the data and pilot components as their secondary codes will not switch always at the same msec. In another embodiment, primary code phase peaks may be provisionally detected with a lower SNR threshold, set according to the amount of code phase uncertainty. The code phase uncertainty can be determined as a combination of clock and initial position uncertainty. In a further improvement, code phases may be tested relative to each other, thus cancelling clock errors. Once a provisional peak has passed a more difficult test, based upon a maximum PFA, minimum SNR or similar, it can be declared a trusted peak detection and search windows on subsequent satellite searches may be narrowed. Likewise, frequency uncertainty may be progressively narrowed. Block 3: Secondary Codephase Acquisition After determining the primary codephase and when the time uncertainty is more than 1 / 2 msec, the next step is to determine the secondary codephase. (In case the time uncertainty is large, but less than ½ msec, the secondary code may be known. The primary code search for this mode is handled in block 14.) The modernized signals generally have different length sequences on the data and pilot components, and the pilot is usually longer. The pilot secondary code lengths, also referred to as overlay codes, are 100msec long on both Galileo (E5a and E5b pilots) and BDS (B2a and likely B2b pilots). [For GPS L5 pilot, a common 20ms long Neuman-Hoffman code is used for all SVs.] What is the secondary code (or overlay codes)? It is a sequence of bits or chips that produce a 0 or 180 degree phase shift synchronized to the epoch of the primary code. For the modernized codes at E5, the secondary bit transitions occur at the completion of a primary code 10230 chip. There are separate sequences on the data and pilot components. The data bits are synchronous with the secondary code sequence on the data component. The secondary code is an integer multiple of frames of the primary code (n=5 for Beidou, n=10 for GPS and n=20 for Galileo). The data bit is a 0 or 180 degree phase rotation at the end of an n-chip secondary code. See Figure 8B for further details on the decoding of each data channel. The decoding of the pilot channels is more simple, with a unique pilot code assigned to each primary PRN code for Beidou and Galileo, and a fixed 20-bit Neuman Hoffman code used for all GPS pilot channels. Figure 8B A Sideband Data Channel Decoding It should be noted that the receiver cannot use a coherent integration longer that 1msec before the secondary code phase is known. Thus, the receiver must employ other methods to track, or effectively hold on to the signal while learning the secondary codephase. Whereas the primary codephase acquisition step required a large number of correlations, the secondary codephase acquisition step 2021283884  07 Dec 2022 requires far fewer correlators. It only requires enough to observe the signal, maintain basic tracking, and observe the noise floor. Such as 3 correlators for early, punctual, late plus a few additional earlier and later correlators for noise floor observability. Tracking can also be performed at a lower rate block phase estimator where the number of correlators is chosen so that the estimated codephase does not fall out of the observation window. It is assumed that the search carrier frequency estimate will drive the code doppler to also not lose the signal. [In an alternative embodiment, integration results meeting a lower threshold may be stored provisionally and accumulated coherently for all possible secondary code phases, pending reaching a higher SNR threshold associated with a very low probability of false alarm. The secondary code phase “bins” may be compared across multiple satellites, after alignment to account for differential time of signal transit.] In another alternative embodiment, the noise floor may be predetermined without the use of an automatic gain control, such that additional correlators are not required. The L1+L5 receiver generally gets the first fix with only L1. In case it is able to reduce its time uncertainty less than ½ msec it will be able to predict the secondary codephase without needing to measure it. In case it has a coarse time fix, (described later when describing block 8), the data bit phase it has learned from GPS L1 may only be + / -10msec which is not enough to predict the 100msec and it will also need a method to measure the secondary codephase. However, the L1 based fix will generally observe the receiver clock offset, and thus, it will not need to handle a large frequency error during secondary codephase estimation. The L5-only receiver on the other hand will need to measure the secondary codephase with a codephase and coarse frequency estimate obtained in a primary search method like that in block 2. The frequency step is as large as possible to reduce search time and power consumption. Thus, the L5-only secondary code search must operate in this condition. For a primary code search frequency step of 300Hz, the worst-case frequency error is 150Hz. Moreover, for shorter acquisitions times, such as less than 50msec, the secondary code phase reversal pattern can affect the frequency at which the maximum power occurs. In other words, the primary code search may not have the strongest power closest to the correct frequency. This is a kind of frequency aliasing process. First, secondary code estimation methods are presented that are independent for each satellite. Second, a grouped method is presented where multiple satellites are processed at the same time in order to concurrently observe more secondary code bits. The first independent method: Independent differential histogram method 1. The first of the independent methods uses a differential phase detector and a histogram method referred to as the IDHM1. The method has several features: it tolerates up to 500Hz of frequency error and can work with even medium to low signal strengths. This is ideally suited for the primary code phase acquisition method in block 2. Whereas the primary codephase acquisition in block 2 worked with a millisecond of sample data not aligned to the codephase epoch, the IDHM1 works with consecutive correlation samples whose boundaries are the code epochs, that is, the event where the primary code generator starts and is in phase with the incoming signal phase. The epoch location inside the receiver msec window is measured 2021283884  07 Dec 2022 in block1 and is referred to as the codephase. The receiver can generate the correlation samples in one of two ways: by breaking the msec to msec correlation at the epoch into two sums or by selecting the samples from the incoming sample stream between the sample at which the epoch occurs. Signal model Assume the E5 signal as the most general model has components, I and Q, on each of the two sidebands A and B (where I is in-phase, and Q is quadrature): Equation 4 SdataA(t) = AmpAi * dA(t- t) * scAi(t- t) * cAi(t- t) * cos(2n*fA*(t- t) + a) + n(t) SpilotA(t) = AmpAq * scAq(t- t) * cAq(t- t) * sin(2n*fA*(t- t) + a) + n(t) SdataB(t) = AmpBi * dB(t- t) * scBi(t- t) * cBi(t- t) * cos(2n*fB*(t- t) + P) + n(t) SpilotB(t) = AmpBq * scBQ(t- t) * cBQ(t- t) * sin(2n*fB*(t- t) + P) + n(t) Let X=the X-th component, then AMPX is the received amplitude in the X-th component, dX is the data sequence that changes at the endpoints of the secondary code sequence scX, which itself changes at the end of the primary code sequence cX, where X is either Ai,Aq,Bi,Bq. There is no data on the pilot components. Assume the carrier frequencies fA and fB are related according to the center carrier frequency fC according to their relative wavelengths. The carrier frequency is the time rate of change of the pseudorange, that is, the pseudorange-rate, converted from meters per second to cycles per second according to the broadcast frequency of the A,B and Center channels (1175.42,1207.14 and 1191.795MHz respectively). Assume the receiver has wiped the primary code sequences cX as some estimate of code delay t and at frequency fAA on component x. The inphase and quadrature correlators for each component then have the form: Equation 5 CorrIx = AmpX * dx(t- t) * scX(t- t) * cos(Ox) + ni(t) CorrQx = AmpX * dx(t- t) * scX(t- t) * sin(Ox) + nQ(t) Where Ox is the phase error on the x-component based on using the estimated component frequency estimate fxA. Equation 6 Thus, Ox = 2n*(fx- fxA) (t- t) + a Ignoring the noise components: the phase error can be estimated using arctangent of the ratio of the quadrature and in-phase correlators because the amp, data and secondary code coefficient are the same in the numerator and denominator: Equation 7 2021283884  07 Dec 2022 Atan2( corrQx / corrIx ) = atan2( [ AmpAx * dx(t- t) * scX(t- t) * sin(¢x) ] , [ AmpAx * dx(t- t) * scX(t- t) * cos(¢x) ] = OxA radians Notice that the secondary code phase cancels from the 1msec phase estimate. This method identifies the phase error and is commonly used as the phase detector to drive a phase lock loop. However, at a 1msec integration time with weak signals, it is quite noisy. How to differentially detect secondary code chip changes Now consider the phase change across two adjacent correlators using the trigonometric identities: Equation 8 cos(A-B) = cosA cosB + sinA sinB sin(A-B) = sinA cosB - cosA sinB These two terms are also referred to as the dot product and cross product Equation 9 Dot(A-B) = cos(A-B) Cross(A-B) = sin(A-B) Plugging in, and ignoring the noise, and letting 1 represent the later correlator at t1 and 0 represent the earlier correlator at t0: Equation 10 cos(epochl-epochO) = AmpX1*dx1*scX1* AmpX0*dx0*scX0*cos ¢1 *cos ¢0 + AmpX1*dx1*scX1* AmpX0*dx0*scX0*sin ¢1 *sin ¢0 = AmpX1*AmpX0 * [ dx1*dx0*sc1*sc0] * [ cos ¢1 *cos ¢0 + sin ¢1 *sin ¢0 ] = AmpX1*AmpX0 * [ dx1*dx0*sc1*sc0] * [ cos (¢1- ¢0 )] sin(epoch1-epoch0) = AmpX1*dx1*scX1* AmpX0*dx0*scX0*sin ¢1 *cos ¢0 - AmpX1*dx1*scX1* AmpX0*dx0*scX0*cos ¢1 *sin ¢0 = AmpX1*AmpX0 * [ dx1*dx0*sc1*sc0] * [ sin ¢1 *cos ¢0 - cos ¢1 *sin ¢0] = AmpX1*AmpX0 * [ dx1*dx0*sc1*sc0] * [ sin (¢1- ¢0 )] As long as the phase change is less than 180 degrees, then cos (¢1- ¢0) > 0 and sin (¢1- ¢0) < 0. As long as the data bits do not change, then the cosine of the angle difference can be used to differentially detect the change in the secondary codes. This method works at all phase offsets for the pilot components where there is no data modulation (and the amp is larger than the noise). As the atan2 is a non-linear function and is noisy when AmpX is small compared to the noise, the phase detectors are also noisy, and the frequency tracking stability is affected. One approach to keep the frequency error below 500Hz, inferring that the phase difference is below 180 degrees, is to use a damped frequency loop that can filter the noisy discriminators. There is benefit however to reducing frequency error as the correlation will improve resulting in a stronger signal. 2021283884  07 Dec 2022 The frequency error can be reduced by operating either a phase lock loop, a frequency lock loop (FLL) (also referred to as an Automatic Frequency Control (AFC) loop), or a block frequency error estimator. A PLL can be used that highly filters the 1msec phase estimates. However, the secondary code estimation is considered as a pull-in state and is not generally used as a measurement state for position fixing. In this case, an AFC loop that drivers the frequency error to zero is adequate. A block frequency estimator groups several frequency error discriminators together to estimate an average frequency error. The preferred method proposed here is mix of the AFC and block phase estimation. The differential phase detector already computes the cosine of the phase change across two consecutive epochs. This is the key value for the secondary codephase determination and will be described after the frequency tracking is summarized. For stronger signals, it is enough to form the phase error estimate each epoch and then different them to compute a delta phase. Thus, by also computing the sine of the phase change, the phase change can be estimated as the arctangent of the sin of the phase change divided by the cosine of the phase change. Step 1 is to compute cosine and sine of the phase change over consecutive epochs. Step 2 is to identify whether the secondary code phase has changed or not between the current and previous epoch. This is identified by the sign of the cosine of the phase change. A negative value means the secondary phase changed. A positive value infers it did not change. This is referred to as differential detection. Step 3. is to form a frequency error discriminator. For strong signals, where the correlator power of corrI2 + corrQ2 is greater than a predetermined threshold, the difference of one epoch phases as defined in Equation 7 is used. Equation 11 8^dt = (¢1 - ¢o) / dt = {Atan2(corrQ1 / corrI1) - Atan2(corrQ0 / corrI0)} / (2n) / dt The advantage of this detector is that the sign of the phase at each epoch is not affected by the sign of the secondary code and data bit as they are common to the numerator and denominator of the atan2 function. (Notice the atan2 output is converted from radians to cycles by dividing by 2n.) This method also has the advantage that it produces a + / -500hz detector range. These detectors can be averaged in a block phase estimate Equation 12 S^dV = SNepoch=1 5¢ / (2^) / dt / N (Hz) This averaged frequency error is then input to at least a first order frequency lock loop as a method to further filter the frequency error. The updated frequency estimate is used for subsequent correlations to improve the correlation power. For weaker signals, where the correlator power is below the above-mentioned predetermined threshold, then the phase change over the two epochs is formed by first averaging multiple instances of the cosine and sine of the phase change as described in Equation 10 before and second using the atan2. In order to average the cosine and sine terms across multiple consecutive epochs, it is necessary to 2021283884  07 Dec 2022 account for observed differential phase changes as this will change the sign of both the cosine and sine terms. First handle the secondary code change: Equation 13 If cos(epochX-epochY) < 0 cosw (epochX-epochY) = - cos(epochX-epochY) sinw (epochX-epochY) = - sin(epochX-epochY) else cosw (epochX-epochY) = cos(epochX-epochY) sinw (epochX-epochY) = sin(epochX-epochY) Next, sum up the cosine and sine terms: CoswA = SNicosw(epochX-epochY) SinwA = SNi sinw (epochX-epochY) Notice the notation that the wA superscript denotes a filtered sum of wrapped estimates. Then, after averaging for a predetermined number of epochs, form a filtered delta phase estimate: Equation 14 60wA dt = atan2 (sinwA / coswA) / (2n) / dt (Hz) As the cosine and sine have been wrapped in case of a secondary code bit phase change, the range of this detector is now reduced by a factor of two to + / -250Hz. In order to track the correlation peak, operate the frequency tracking loop, and update the differential secondary code bit detection, a range of codephase is produced with multiple correlators. As few at 5 correlator pairs is needed to form an early and late for a code tracking loop, centered around a punctual for frequency tracking and frequency phase estimation, as well as at least one set of very early and one very late correlators for noise estimation in order to produce a signal to noise estimation to verify that a signal is still observable in the center. Note that there are five correlator pairs for each component, as there is a different secondary code sequence on each component. To simplify the tracking and also improve tracking of weaker signals, all four components are jointly tracked. The center codephase estimate is propagated from msec to msec with a code doppler estimate in chips / second obtained by converting the received carrier frequency estimate to the code doppler using the known relationship: at ii76.45Mhz there are ii5 carrier cycles per code chip at i0230 chips per millisecond, at ii9i.795Mhz there are ii6.5 carrier cycles per code chip at i0230 chips per millisecond, at i207.i4Mhz there are ii8 carrier cycles per code chip at i0230 chips per millisecond. 2021283884  07 Dec 2022 As the initial codephase estimate is obtained from the primary code search, which is generally a ½ code chip search, the codephase error can be ¼ chip or more. Also, the primary acquisition block 2 may require hundreds of milliseconds to achieve the required SNR to detect the signal. As such, the secondary codephase acquisition block will require a similar integration period in order to reduce the noise on the codephase and frequency error detectors to update the code tracking and frequency tracking loops respectively. After a new epochs worth of correlation results are available, the data is processed to form amplitude and phase. The one msec power or amplitude estimates are formed from each in-phase and quadrature correlator pair. Next, the one msec power estimates are integrated to a number of msec, such as twenty. For simplicity, the power is chosen here, although amplitude can be averaged in the same way. Code tracking during secondary codephase estimation The power sum for Js components (j), where Js = (1 up to 4 for GAL and BDS and 2 for GPS), at each correlator pair (c) from 1 to Ncorr at time (tk) is: Equation 15 PSum(j,c) += Power(j,c, tk) = corrI(j,c, tk)2 + corrQ(j,c, tk)2 Equation 16 PSumGlobal(c) = SJsc=i PSum(j,c) The maximum power location cMax is estimated as the c-th correlator pair when Equation 17 cMax = index c where PsumGlobalMax = Max { PSumGlobal(c) } for c=1, Ncorr The noise power estimate is the sum of all correlations that are not adjacent to the maximum power location cMax. Equation 18 PSumNoise = ScMaxc=i PSumGlobal(c) where |c-CMax| > 1 Equation 19 SNR = 10*log10((PsumGlobalMax - PsumNoise) / PSumNoise) The loops are updated when SNR > predetermined threshold, such at 6 dB meaning the maximum power sum is at least twice as large as the noise power sum. The code loop is a standard delay lock loop where the detector is the early - late power normalized by punctual. Equation 20 DLLdetector(k) = [ PSumGlobal(cMax -1) - PSumGlobal(cMax +1) ] / PSumGlobal(cMax) The DLL is the input to a standard first order tracking loop that has a loop filter G(z) where z represents the time delay of a discrete time filter. The filtered discriminator output is added to the previous phase 2021283884  07 Dec 2022 to generated a filtered codephase center estimate. The code doppler component is also added each epoch as an unfiltered feed-forward propagator. The filtered codephase can be represented as scaled version of the previous filtered codephase plus the scaled current and previous DLL detectors. Equation 21 filteredCodePhase(k) = C1*filteredCodePhaseH(k-1) + C2*(Dlldetector(k) + C3*Dlldetector(k-1) The code doppler is also added each msec. Equation 22 filteredCodePhase(k) += filteredCarrierFrequency(cycles / sec) / 116.5(cycles / chip) *0.001sec Subsequent correlations use this codephase as the centered codephase for both the A and B channels. Frequency tracking during secondary codephase estimation The frequency tracking loop is a standard frequency lock loop. However, the combined detector is new and has the advantage that it is able to combine all components together to improve its accuracy with weak signals. It is necessary to determine the frequency reference for the loop. Also, while the frequency is the same for components at the same sideband A or B, the frequency is different across sidebands. Fortunately, the frequency difference is predictable. It is chosen to track the center frequency between A and B. This is the optimal selection when the primary codephase acquisition block 2 uses multiple components across sidebands as it will set the sideband frequencies up and down with respect to the center frequency. Thus, the winning codephase will naturally apply to the center frequency. Deterministic Relationship between A,B,C Dopplers and Range-Rate The broadcast frequency for the E5 and B2 signals is at 1191.795Mhz. The observed Doppler at A, B and center channels is impacted by the wavelength of each sideband. Define the transmission frequency ftran is the transmit frequency in hertz c is the speed of light in m / s = 2.9979245e8 m / s Xtran is the wavelength of the transmit frequency in m / cycle = (c / ftran) The observed Doppler is therefore Dtran = rangeRate * (-1 / Xtran) Assume that the correlators will use a different frequency at each sideband correlation but that the resulting phase estimates can be shifted back to the center frequency. Equation 23 Xa = (c / 1176.45e6) = 0.254828049 Xb = (c / 1191.795e6) = 0.251547001 Xc= (c / 1207.14e6) = 0.248349370 The Doppler difference between the center and lower sideband A using A as the reference is: Dc — Da = (-1 / Xc*rangeRate) - ( -1 / Xa*rangeRate) 2021283884  07 Dec 2022 = - rangeRate [ (Xa - Xc) / (Xa * Xc) = Da * [ (Xa- Xc) / * Xc] = Da * sfca Equation 24 sfac = [ (Xa- Xc) / * Xc] = 0.013043478 sfbc = [ (Xb- Xc) / * Xc] = -0.012711865 Notice, converting from A Doppler to C and B Doppler to C has a different scale factor. Conversely, converting from C to A and C to B where C is the reference has the same scale factor (except for opposite signs): Dc — Da = (-1 / Xc*rangeRate) - ( -1 / Xa*rangeRate) = - rangeRate [ (Xa- Xc) / (Xa* Xc) = Dc * [ (Xa- Xc) / * Xa] = Dc * sfca Equation 25 sfca = [ (Xa- Xc) / * Xa] = 0.01287554 sfcb = [ (Xb- Xc) / * Xb] = -0.01287554 Thus, when tracking the composite signal, all 4 components, the starting Doppler is the composite Doppler from primary codephase acquisition block 2. The C-Doppler is converted to A,B Doppler for mixing in the A,B correlators. The phase detectors are then updated in each of the A and B channels, and then are rotated back to the filter to update the C channel composite frequency. The phase detectors in the four components are updated using the punctual correlator with an index of cMax. Now define upto 4 different filtered frequency error discriminators. Consider the frequency error detector from the Ai, Aq, Bi, Bq: Note that since the frequency change detector is independent of the absolute phase, which is different by 90 degrees between the data and pilot components, they can be averaged into a single-phase estimate per sideband. Assume for the frequency loop has the time scaling to convert the phase change to a frequency change. Thus, the detector has the units of radians. Equation 26 8OwAA / dt = atan2 ((sinw\i + sinwAAq) / (coswAAi +coswAAq)) radians / 2n / 0.001 (Hz) 8OwAB / dt = atan2 ((sinwABi +sinwABq) / (coswABi +coswABq)) radians / 2n / 0.001 (Hz) 2021283884  07 Dec 2022 Each of these detectors is compensated to produce a averaged detector in the center frequency frame of reference: Equation 27 8OwAc / dt = [(8OwAA / dt + DopplerA*sfac) + (8OwAB / dt + DopplerB*sfbc)]*0.5 This detector has the advantage that it uses all 4 independent components and therefore improves tracking by averaging the detector noise. This detector is applied to a standard closed loop FLL where the filtered frequency estimate is a combination of scaled and delayed inputs and outputs. The filtered C Doppler shown below is a linear combination of the previous. Equation 28 FcA(k) = [ a1*FcA(k-1) + a2*FcA(k-2) ] + [ bl* 80 Ac(k) / dt + b2* 80 Ac(k-1) / dt + b3* 80 Ac(k-2) / dt ] After the filtered frequency is updated, then the updated Dopplers for the A and B sideband correlators is formed. Equation 29 FAa = FcA(k)*sfca FAb = FcA(k)*sfcb The subsequent correlations for the A and B correlations use these carrier frequency values. Figure 8C Four component AFC Discriminator values without compensation below shows the four phase change discriminator without compensation. The loop is averaging them into an average frequency. The offset from the center is proportional to the compensation terms DopplerX*sfxc. The compensation term is important because its size grows as the Dopplers grow in magnitude. Thus, any bias impacts the ability to wrap the resolve an ambiguity in case the two phase estimates are close to the l80 degrees. Figure 8C Four component AFC Discriminator values without compensation Figure 8D below shows the discriminator trajectory when the phase change detectors are compensated with the expected phase change from signal Doppler. Figure 8D AFC 4 Component Discriminator values with compensation Aggregating the differential secondary codephase bit estimates Whereas the filtered codephase and filtered center frequency occur at a lower rate to ensure a minimum SNR before updating the filters, the differential detection occurs every epoch. There are myriad possibilities for using the four components. 2021283884  07 Dec 2022 The first method described performs the secondary codephase estimation (SCE) independently on each component. Assume each component has its own length. E5Ai is 20 bits, E5Aq and E5Bq are 100, E5Bi is 4 bits. GPS L5i is 10 bits, L5q is 20 bits, B2Ai s 20 bits, B2BAq is 100 bits, B2Bi is 1 bit, B2Bq is 100 bits (expected at time of this writing). The cosine of the cross epoch phase difference as describe in Equation 10 is referred to as the dot product detector. Equation 30 Dot(y,x) = cos(epochY-epochX) where y > x. The usage is as follows: when dot(y,x) < 0, declare change, otherwise, declare no-change. A histogram is introduced to allow integration longer than the code. On the 2nd epoch, when the first dot(1,0) is available, a counter, called scCntRS, is initialized to 0. The R refers to the sideband, and S reference to the component. This counter will represent the histogram bin index. The counter increments each epoch and wraps to zero at the length of the secondary code sequence scSizeRS. For example, scCntRS for E5Ai = scCntAi goes from 0 to 19. The time tag of the first detection is saved at msec0XY so as to have a time reference in milliseconds. The lowest memory approach is to have a single histogram that counts up when dot(y,x) < 0, meaning change, and counts down when dot(y,x) >= 0, meaning no change. In case of a long integration with a noisy only input, the value should be close to zero. In case the histogram bin is mapped to a secondary code bit location where there is a change, then the histogram bin will hold a large number, equal to the number of changes observed. In the opposite case of a bin where there is no change, then the histogram bin should hold a large negative number. For easier visualization of the history for test software, two histograms are implemented: one for the change events, and another for the no-change events. The logic is as follows: Equation 31 If (dot(y,x) < 0) histoChange[scCntRS] += 1 Else histoNoChange[scCntRS] += 1 scCntRS += 1 if (scCntRs = scSizeRS) scCntRS = 0 When to analyze the histograms The minimum number of bits at which the secondary code phase can be estimated without ambiguity can be referred to as the minHistoAgreementCnt, that is, the minimum histogram agreement count. This number is based on the actual code sequence and its length. It is the length at which it is not possible to find a repeating subset of bits more than once. 2021283884  07 Dec 2022 For example, in the sequence 0011 0011 1010 0011 0011 0101, the pattern 0011 0011 appears two times. However, the sequence 0011 0011 1 appears only 1 time. Thus, the minHistoAgreementCnt might be approximated as 9. Thus, it is possible to beginning testing the correlation between the histograms and true secondary code as soon as the number of bins with data reaches the minHistoAgreementCnt. However, in case the signal is weak, it is more reliable to wait for more bits. In case of stronger signals, such as above 30dB-Hz, where the 1msec differential phase noise is low, i.e, the probability of a error in dot(y,x) is low, is possible to satisfy the SCE as soon as the minHistoAgreementCnt is achieved and a match is found at that number of bits. In case of weaker signals, such as below 30dB-Hz, the probability of an error in the dot(y,x) is higher, more time is needed to achieve the minHistoAgreementCnt. This is the advantage of the histogram method. By integrating longer than the scSizeXY, the errors can be overcome with other correct occurrences. How to compare the histogram to the true secondary code The matching method for differentially detected bit changes is to first generate the derivative of the true sequence. For example, the sequence above, the change bits occur when two consecutive bits are different. The change for the first bit uses the last bit as the earlier bit. In this case, the last bit is 1 and the first bit is zero. Thus, the first change bit is 1. The 2nd bit is 0 and the 1st bit is 0, so the second change bit is 0. The derivative of the above sequence is 1010 1010 0101 0010 1010 1111. The second step is to merge the histoChange and histoNoChange arrays into a single array. At each bin, the two values are compared. If histoChange count is larger than histoNoChange count, then the result is declared change. If histoNoChange count is larger than histoChange count, then the result is declared no-change. If the counts are equal, then then result is declared no-decision, which is recorded as result = -1. In logical form: Let changeMeas be the measured change at each bin. Equation 32 For each bin: i = {0,scSizeRS} If (histoChange[i] > histoNoChange[i]) changeMeas[i] = 1 Else if (histoChange[i] < histoNoChange[i]) changeMeas [i] = 0 Else if (histoChange[i] == histoNoChange[i]) changeMeas [i] = -1 Next the histogram result is compared to the true secondary code derivative at all possible phases. This is equivalent to summing the count of the bins where both sequences have the same change or nochange decision over all possible offsets between the two sequences. When one sequence reaches the end before the other, it is circularly shifted to produce the remaining bins. The shift where the sum is maximized is the most likely secondary code phase. The time of the start of the secondary code is the 2021283884  07 Dec 2022 start time, saved in msec0, plus the shift, plus 1 additional msec to account for the one msec delay in obtaining the first valid measured bit differential. Such a shift, compare, sum and maximization process can also be represented algorithmically. In the double loop below, all possible truth phases are tested in the outside loop. Then the shifted truth is compared to the measured changes. At each possible phase position, the measured change at each bin is tested. If the measured change, changeMeas[i] < 0, it means there is no decision at that bin and the bin is ignored. This effectively reduces the maximum agreement count. The derivative of the truth sequence is generated by forming the change across the current and previous truth bit. When agreement is found, the agreement count is incremented. After each phase of the true secondary code derivative is tested, the agreement count at the current phase is compared to the maximum observed agreement count, that is the best count (bestCnt). The location of the highest pass count is saved (bestPhase). Equation 33 bestCnt = 0 bestPhase = -1 for each phase: phase = {0,scSizeRS} agreeCnt = 0 For each bin: i = {0,scSizeRS} If (changeMeas [i] >= 0) { bin = i+phase If bin >= scSize bin = 0 binMinusl = bin - 1 if (binMinus1 < 0) binMinus1 = scSize-1 thisBit = secondaryCode[bin] lastBit = secondaryCode[minMinus1] changeTrue = 0 if (thisBit != lastBit) changeTrue = 1 if (changeMeas[i] == changeTrue) agreeCnt += 1 2021283884  07 Dec 2022 If (agreeCnt > bestCnt) { bestCnt = agreeCnt bestPhase = phase Example for a pilot channel An example of the method is shown in the table below. The left-most column is the histo bin index. The next column right is the change histo followed by the no-change histo. The truth is the next column right. The 2nd column from the right is the meas decision column which is the merger of the two measured change and no-change histo and is 1 is the change is more than the no-change. The right most column is the truth sequence derivative which is one if the current bit is different from the previous bit. At the first row, the previous bit is taken from the last bit in the truth sequence. By inspection one can discern that the meas decision column is 3 rows later than the truthChange. Thus, the bestPhase would be in the 4th row at i4 as the first 1 in this column agrees with the first 1 in row 0 or the truth change column. The time tag of the first bit of the sequence is also one msec sooner as the differential bit is detected one msec late. 2021283884  07 Dec 2022 truth histolndex changeHisto noChangeHisto 1 measDecision truthchange iO 0 99 0 0 1 il 0 99 0 0 0 i2 99 0 1 1 1 i3 99 0 1 1 0 i4 0 99 1 0 0 i5 99 0 1 1 0 i6 0 99 0 0 1 i7 0 99 1 0 1 i8 0 99 1 0 0 i9 99 0 1 1 0 ilO 99 0 1 1 0 ill 0 99 1 0 0 il2 0 99 1 0 0 il3 0 99 1 0 0 il4 0 99 1 0 0 il5 0 99 1 0 0 116 0 99 0 0 1 il7 0 99 0 0 0 118 0 99 1 0 1 il9 99 0 0 1 1 i20 0 99 0 0 0 i21 99 0 1 1 1 i22 99 0 0 1 1 i23 0 99 1 0 1 i24 99 0 1 1 0 i25 99 0 1 1 0 126 99 0 1 1 0 i27 0 99 0 0 1 i28 0 99 1 0 1 i29 0 99 0 0 1 i3O 99 0 1 1 1 i31 99 0 0 1 1 132 99 0 1 1 1 i33 99 0 1 1 0 i34 99 0 1 1 0 i35 99 0 0 1 1 i36 0 99 0 0 0 i37 0 99 1 0 1 i38 99 0 1 1 0 139 0 99 1 0 0 Table 1 2021283884  07 Dec 2022 Example with a data channel Here is the result for the AI data channel. The secondary code is 20 bits long. The top row is the histogram bin index: i0, i1..i10. The second row is the histoChange array. The third row is the noChangeHisto array. The 4th row is the true secondary code. Notice that the histogram has integrated 499+20msec as each bin has 499 observation. Notice that in the 4th bin, bin i3, that the changeHisto and noChangeHisto are nearly identical. As the data bit phase is the same across the whole secondary code, the derivative is non-zero on the first bit of the new sequence and thus, only impacts the histo bin at the start of the sequence. Because the first and last bit are both one, then the expected result at the start of the sequence is a no-change decision. This result suggests that over the roughly 500 epochs, the data bit change change rate was about 0.5. Notice, the best count is 19 out of 20 because the true code derivative is zero at the start of the true derivative code but the changeCnt was slightly higher, meaning the measured change was 1 which is wrong. Even with a bit error, but correct phase is still found. bestPha 3 bestCr 19 histolndex iO il i2 i3 i4 i5 i6 i7 i8 i9 ilO ill il2 113 il4 il5 il6 117 il8 il9 bestPha 3 bestCr 19 changeHisto 499 0 499 256 499 0 0 0 499 499 0 0 0 499 499 499 0 0 499 499 bestPha 3 bestCr 19 ncChangeHisto 0 499 0 243 0 499 499 499 0 0 499 499 499 0 0 0 499 499 0 0 bestPha 3 bestCr 19 secondaryDataC 1O0OO1QOOO1O111O1OO1 Table 2 It should be remarked that this was made with a strong satellite and all bits away from the first bit have the same number of observations. This means the dot product detector was strong. Now consider an example with a relatively weak received signal strength of about 25dB-Hz. This is effectively 19dB down from a nominal signal level of 44dB-Hz. The plot below shows the performance of the algorithm over about 1.6 seconds or about 1600 epochs. The true secondary codephase is a 0. In the early part of the experiment the bestPhase occurs with a bestCnt of 16. Figure 8E 20msec Secondary Codephase Length Differential detector phase and agreement count at 25db-Hz The table below shows how this occurred. The agreement count is 12 at the true phase of 0. Notice that there are 8 wrong bins, or which 4 had a margin of 1, but 3 also had a wrong margin of 5! The first bin is where the data bit phase creates a low margin. In this case, the agreement count at phase 0 used these errors to produce a higher agreement cnt = 16. Thus, with weaker signals a higher threshold is required. 2021283884  07 Dec 2022 bestPhasebestPhasebestPhasebestPhase at 119745 start 119400 epochs 345 6 6 6 6 bestCnt bestCnt bestCnt bestCnt agreeCnt agreeCnt 16 16 16 16 12 16 histo Index change Histo noChange Histo secondary Data Code true Change PhaseO meas Change phaseO Agreement true Change Phase6 phase6 Agreement Margin iO 8 9 1 0 0 1 0 1 1 il 6 11 0 1 0 0 1 0 5 i2 9 8 0 0 1 0 1 1 1 i3 10 7 0 0 1 0 1 1 3 i4 6 11 0 0 0 1 0 1 5 i5 10 7 1 1 1 1 1 1 3 i6 8 9 0 1 0 0 0 1 1 i7 11 6 0 0 1 0 1 1 5 18 9 8 0 0 1 0 0 0 1 i9 6 11 0 0 0 1 0 1 5 ilO 6 11 1 1 0 0 0 1 5 ill 10 7 0 1 1 1 1 1 3 il2 11 6 1 1 1 1 1 1 5 il3 2 15 1 0 0 1 0 1 13 il4 6 11 1 0 0 1 0 1 5 il5 8 9 0 1 0 0 0 1 1 il6 10 7 1 1 1 1 1 1 3 il7 10 8 0 1 1 1 1 1 2 il8 6 12 0 0 0 1 1 0 6 il9 10 8 1 1 1 1 0 0 2 Table 3 2021283884  07 Dec 2022 Waiting for a best agreement count of 17 however produces the correct bestPhase0 at msec=120345 which is about 1 second of integration time. Notice now that the wrong bit estimates occur with a margin of 6. bestPhase bestPhase bestPhase bestPhase at 120345 start 119400 epochs 945 0 0 0 0 bestCnt bestCnt bestCnt bestCnt 17 17 17 17 histo Index change Histo no Change Histo secondary Data Code true Change PhaseO meas Change phaseO Agreement margin iO 22 25 1 0 0 1 3 il 24 23 0 1 1 1 1 i2 25 22 0 0 1 0 3 i3 24 23 0 0 1 0 1 i4 18 29 0 0 0 1 11 i5 29 18 1 1 1 1 11 io 24 23 0 1 1 1 1 i7 23 24 0 0 0 1 1 18 19 28 0 0 0 1 9 i9 20 27 0 0 0 1 7 ilO 28 19 1 1 1 1 9 ill 28 19 0 1 1 1 9 il2 28 19 1 1 1 1 9 il3 13 34 1 0 0 1 21 il4 12 35 1 0 0 1 23 il5 29 18 0 1 1 1 11 il6 30 17 1 1 1 1 13 il7 21 27 0 1 0 0 6 118 22 26 0 0 0 1 4 il9 26 22 1 1 1 1 4 Table 4 Waiting for a threshold of 18 produces this result 2021283884  07 Dec 2022 bestPhase bestPhase bestPhase bestPhase at 120465 start 119400 epochs 1065 0 0 0 0 bestCnt bestCnt bestCnt bestCnt 18 18 18 18 histo Index change Histo no Change Histo secondary Data Code true Change PhaseO meas Change phaseO Agreement margin iO 25 28 1 0 0 1 3 il 29 24 0 1 1 1 5 i2 28 25 0 0 1 0 3 i3 26 27 0 0 0 1 1 i4 22 31 0 0 0 1 9 i5 33 20 1 1 1 1 13 16 29 24 0 1 1 1 5 i7 26 27 0 0 0 1 1 i8 23 30 0 0 0 1 7 i9 22 31 0 0 0 1 9 ilO 32 21 1 1 1 1 11 ill 31 22 0 1 1 1 9 il2 31 22 1 1 1 1 9 il3 14 39 1 0 0 1 25 il4 15 38 1 0 0 1 23 il5 31 22 0 1 1 1 9 il6 36 17 1 1 1 1 19 il7 25 29 0 1 0 0 4 il8 25 29 0 0 0 1 4 il9 30 24 1 1 1 1 6 Table 5 The following chart shows the result after more than 6 seconds of tracking. The margin grows large and there are no errors. 2021283884  07 Dec 2022 bestPhase bestPhase bestPhase bestPhase at 125825 start 119400 epochs 6425 0 0 0 0 bestCnt bestCnt bestCnt bestCnt 20 20 20 20 histo Index change Histo no Change Histo secondary Data Code true Change PhaseO meas Change phaseO Agreement margin iO 156 165 1 0 0 1 9 il 181 140 0 1 1 1 41 i2 139 182 0 0 0 1 43 i3 132 189 0 0 0 1 57 i4 140 181 0 0 0 1 41 i5 197 124 1 1 1 1 73 16 188 133 0 1 1 1 55 i7 130 191 0 0 0 1 61 i8 127 194 0 0 0 1 67 i9 139 182 0 0 0 1 43 ilO 179 142 1 1 1 1 37 ill 180 141 0 1 1 1 39 il2 195 126 1 1 1 1 69 il3 115 206 1 0 0 1 91 il4 126 195 1 0 0 1 69 il5 178 143 0 1 1 1 35 il6 191 130 1 1 1 1 61 il7 190 132 0 1 1 1 58 118 139 183 0 0 0 1 44 il9 178 144 1 1 1 1 34 Table 6 From this analysis, with weaker signals, a low margin at each bit estimate can lead to errors. One solution is to wait longer. Another solution is to group the components together as the shorter length histograms have higher margins and are used to restrict the candidate phases for the longer histograms. A key element of any design is the how to combine the histograms, their information, and the detection thresholds. Improving detection time and accuracy by aggregating components Other solutions for combining the secondary code information across all components are now considered. Firstly, jointly determining the secondary codephase across the four components provides a cross checking of results. In the first example, the A channel has an SNR of 25dB-Hz and the B channel is 2dB weaker at 23dB-Hz. The B channel pilot with a 100msec secondary code estimate is formed every 100msec at it takes the 400msec for the best phase to be at the correct value of 0. The first 3 estimates have a low best count, so they are clearly low confidence. However, the B channel data with a 4 msec secondary code rapidly converges to the correct phase. Furthermore, the wrong B Pilot estimate has a modulo 4msec estimate that is correct. The B Pilot channel best phase estimates are 46,55, and 46 2021283884  07 Dec 2022 which have a modul0 4msec estimate that is 2, 3, and 2. Also, the B data estimates agrees with the A pilot and a A data estimates modulo their secondary lengths. For example, the A data estimate modulo 4 is zero, the A pilot estimate modulo 4 is zero. Also, the A pilot estimate modulo 20 agrees with the A data estimate. Figure 8F Long Term Four Individual Components of Differential Detector Thus, the first way to combine is to verify the larger length secondary code estimates modulo the shorter length estimates agree. This is a logical check as a joint method. Another more algebraic method is to combine all the secondary codes into a single search. The histograms cannot be mixed into a single array, but the shorter histograms can be repeated to form a single secondary multi bit sequence at each bin. The image is as shown below: Galileo Combined secondary code method Consider the Galileo case. The A data is 20 epochs. The A and B pilots are 100 epochs. The A data is 4 epochs. Thus, the A data is repeated 4 times to produce a 100msec sequence. The 4msec B data is repeated 24 times to produce a 100 epoch sequence. Figure 8G Image of Galileo Secondary Codephase Lengths On All Four Components The true differential secondary code is also repeated in the same way. The image is then that there is one 100 epoch histogram with 4 bits at each bin. Thus, the measured bits are changeMeas(i,j) where i = 1,4 and j=1,100. The true derivative array changeTrue(i,j) is repeated in the same way. At each bin, each changeMeas(i,j) is checked that the data is valid (not equal change vs no-change and at least one vote) and then each bit is compared to the true bit. The agreement count is up to 4 for each bin. The best phase is searched over the 100 possible phases of the true data. Notice that the A and B data channel data will vote the data at each bin. The probabilities are also summed at each bin. Here is an example of how adding the smaller length Bdata to the msec 119745 recovers the correct detection. While it is not an exhaustive search, it shows the best phase is now captured at the true phase0 rather than phase6. The first epoch has the data bit phase reversals so that this bit is lost. But the remaining 3 bits are correctly detected at phase0. Notice the measured change is copied 4 times to fill in the 20 bins. Next, true secondary code change is shifted down 6 bins (equivalent to shift of 2 as the sequence is only 4 bits) to match the phase6 hypothesis on the Adata. In this position, the Bdata agreement with phase6 only produces one bit per 4 bits. After adding the Bdata agreements to the Adata agreements, phase0 has the best agreement. 2021283884  07 Dec 2022 >estPhas estPhas estPhas estPhase phased agree ent Adata Bdata phased agree cnt Adata Bdata best Phase best Phase best Phase & 6 6 6 27 21 0 0 0 bestCnt bestCnt bestCnt bestCnt agree Cnt agree Cnt bestCnt bestCnt bestCnt agree Cnt agree 1 Cnt 16 16 16 16 12 16 3 3 3 15 5 histo Index change Histo no-Chang e Histo ary I Data Code true Change PhaseO meas Change phased Agreement true Change Phases phases Agreement change Histo noChan geHisto seconda ryDataC ode true change 0 meas change phased agreement true ;phase2 change Agree- 6 । ment iO 8 9 1 0 0 1 0 1 36 49 1 1 0 0 0 1 1 il 6 1 1 11 1 0 1 0 0 1 0 28 58 1 0 0 1 1 0 i2 9 8 0 0 1 0 1 1 35 51 1 0 0 1 1 0 i3 10 7 o ; 0 1 0 1 1 45 41 0 1 1 1 0 0 i4 6 11 0 0 0 1 0 1 1 0 0 0 1 i5 10 7 i 1 1 1 1 1 0 0 1 1 0 i6 8 9 0 1 0 0 0 1 0 0 1 1 0 i7 11 6 0 0 1 0 1 1 1 1 1 0 0 18 9 8 0 0 1 0 0 0 1 0 0 0 1 i9 6 11 0 0 0 1 0 1 0 0 1 1 0 ilO 6 11 1 1 0 0 0 1 0 0 1 1 0 ill 10 7 0 1 1 1 1 1 1 1 1 0 0 il2 11 6 1 1 1 1 1 1 1 0 0 0 1 il3 2 15 1 0 0 1 0 1 0 0 1 1 0 il4 6 11 1 0 0 1 0 1 0 0 1 1 0 il5 8 9 0 1 0 0 0 1 1 1 1 0 0 il6 10 7 1 1 1 1 1 1 1 0 0 0 1 117 10 8 0 1 1 1 1 1 0 0 1 1 0 il8 6 12 0 0 0 1 1 0 0 0 1 1 0 il9 10 8 1 1 1 1 0 0 1 1 1 0 0 Table 7 Generating a detection threshold from the differential bit probability These above examples should have highlighted the condition that the margin at each histogram bin is an indicator of the probability of being correct. However, another indicator is the signal strength at which each bit was collected. For example, a single bit is enough to produce a margin of 1 with high confidence when it was derived from a strong signal. Thus, in general, each histogram bin should have associated confidence factor, or probability, derived from the SNR associated with the two epochs of correlator data that formed the dot product that was integrated into histoChange or histoNoChange. One solution is to compute a probability with each dot product where the SNR is mapped to a probability where a high SNR has a probability near unity, and a low SNR has a probability near zero. It would also be possible to not include new bits into the histogram in case of a newer low confidence bit after already having a higher confidence bit. Improvement for Merging change and no change histograms with probability Assume each bin has an associated probability sum for both the histoChange and histoNoChange defined as histoChangeProbSum and histoNoChangeProbSum. The histoChange and histoNoChange hold the counts. The merged result can then be generated alternatively as follows at each bin where 2021283884  07 Dec 2022 the largest probability generates the change or no-change decision. The difference of probabilities divided by the sum of counts yields a bin probability with a value between 0 and 1 as follows: Probability = (probSuml - probSum2) / (probCntl + probCnt2). If both have similar probabilities, the probability will be close to 0. If one is much larger it will yield a probability near 1. Also count the number of available measured bits per secondary code sequency. Method1) availBits(y) = 0 probSum(y) = 0 marginSum(y) = 0 For each bin of each secondary code(y) y=0 to N, and bins = 0, Nbits(y) if (histoChangeProbSum (bin,y) > histoNoChangeProbSum (y,bin)) changeMeas(bin,y) = 1, availBits(y) += 1 changeProb(bin,y) = (histoChangeProbSum (bin,y) - histoNoChangeProbSum (bin,y)) / (histoChange(bin,y) + histoNoChange(bin,y) else if (histoChangeProbSum (bin,y) < histoNoChangeProbSum (bin,y)) changeMeas(bin,y) = 0, availBits(y) += 1 changeProb(bin,y) = -(histoChangeProbSum (bin,y) - histoNoChangeProbSum (bin,y)) / (histoChange(bin,y) + histoNoChange(bin,y) else changeMeas(bin,y) = -1 changeProb(bin,y) probSum(y) += changeProb(bin,y) marginProb(y) = abs(histoChange(bin,y) - histoNoChange(bin,y) / (histoChange(bin,y) + histoNoChange(bin,y) marginSum(y) += marginProb(y) Method2) Another approach is to use the keep the decision based on counts as before but derive the probability in the same way For each bin of each secondary code(y) at bin(i) if (histoChange (bin,y) > histoChange (bin,y)) changeMeas(bin,y) = 1, availBits(y) += 1 2021283884  07 Dec 2022 changeProb(bin,y) = (histoChangeProbSum (bin,y) - histoNoChangeProbSum (bin,y)) / (histoChange(bin,y) + histoNoChange(bin,y)) else if (histoChange (bin,y) < histoChange (bin,y)) changeMeas(bin,y) = 0, availBits(y) += 1 changeProb(bin,y) = -(histoChangeProbSum (bin,y) - histoNoChangeProbSum (bin,y)) / (histoChange(bin,y) + histoNoChange(bin,y)) else changeMeas(bin,y) = -1 changeProb(bin,y) = 0 probSum(y) += changeProb(bin,y) marginProb(y) = abs(histoChange(bin,y) - histoNoChange(bin,y) / (histoChange(bin,y) + histoNoChange(bin,y) marginSum(y) += marginProb(y) Suppose at a particular bin, the change sum was 100 epochs, and the change probability sum is 50, and the no-change sum is 10 epochs, with a no-change probability sum of 5, then these two sources provide equivalent information. The marginProb is 90 / 100, and the changeProb is 45 / 110. Now consider a low margin case. Suppose the change sum is 100 epochs, and the change probability sum is 15, whereas the no change sum is 98 epochs and the no-change probability sum is 20. Here the marginProb is 2 / 198 and the changeProb is 5 / 198. This case would occur with all low SNR updates. In this case, the threshold for the best agreement would be required to be nearly the length of the sequence. Thus, the passing threshold for the best agreement count needs to be based on probability sums or margin sums, depending on which method is preferred. Define confidence(y) = either probSum(y) or marginSum(y), to represent the confidence of available bits. The desired outcome is: if the confidence is very high, then allow fast detection with a minimum threshold based upon the characteristics of the sequence, that is, the minimum number of bits where it impossible to get a false pass. A false pass means there are more than one same combination of bits in the sequence. Call this minFalsePassThresh. The next step is to compute a second threshold based on the confidence based on margin or probability. The lower the confidence, the higher the threshold. Whereas the threshold might be computed as a joint probability based on probability density function of each bit being correct, a simpler approach is to scale the sequence length by the confidence and then subtract this from the length: that is thresh = (1 - confidence)*length. In this way, if the confidence is 1, then the threshold is zero, and the minFalsePassThresh sets the minimum threshold. On the other extreme, if the confidence is 0, then the minimum threshold becomes the length. It should be pointed out for a data sequence, the phase reversals due to the data reduces the maximum by 1. However, in general, the longest sequence is the pilot code that does not have a data sequence and the best agreement can therefore achieve the full length. 2021283884  07 Dec 2022 If (availBits(y) of the longest component > minFalsePassThresh) minConfThresh = (1 - confidence)*maxPilotLength Notice that when the components are combined, then the agreement count can upto 4 times the maximum pilot length. Thus, the test has two phases. First, the additional components are used to identify the best candidate. Second, the agreement count for that pilot alone is used to make the final decision. The test becomes: Find the best phase using all components in the bestCnt. Then, find the component maxY with the maximum agreement count at the bestPhase from the candidate pilot codes and also using the availBits from this component. The test: If (availBits(maxY) > minFalsePassThresh) If (agreeCnt(maxY,bestPhase) > minConfThresh) Declare secondary code phase found at bestPhase The best phase provides the offset of the start of the secondary codephase from the arbitrary point where the histograms were anchored. Also, the histogram index and starting time where anchored one epoch late as the differential requires 2 bits to initialize. Thus, the predicted start of the current secondary code is the simply the starting time tag plus the best phase offset minus one millisecond to compensate for the 1st epoch. The start time of the next secondary codephase is can be computed this way: it is the Corner case: frequency error larger than 250Hz The frequency error discriminator using the phase difference between the current previous epoch is wrapped according the dot detector to handle phase reversals of the secondary code. This wrapping effectively cuts the discriminator range from + / -500Hz to + / -250Hz. Thus, if the frequency error is larger than 250Hz, and smaller then 500hz, the secondary code determination will work, but the frequency tracking loop will not converge to the correct frequency. However, as the frequency error gets closer to 500Hz, the noise in the correlator values will cause the dot product detector to fail. Thus, for weaker signals, the method will be un-reliable when the frequency error is higher than 250Hz. One solution to this condition is to implement an alias lock method. One method is to implement another set of correlators that are spaced at + / -500Hz from the filtered center frequency. Then, if the power associated with one of these correlators is higher than the center power, an alias condition is declared. In this case, the estimated frequency is reset to the frequency of strongest power. The secondary codephase estimation process is then restarted as the previous information will be wrong. Another method to detect a large frequency error is to observe the codephase trajectory across a bank of parallel correlators. Consider a bank of Nc correlators where the center correlator codephase is the derived from the primary code search. The bank of correlators must cover a range of codephase to 2021283884  07 Dec 2022 contain the change in codephase trajectory based on the maximum frequency error of say, 500hz. The code change at E5a over 100msec = 500 / 115*0.1 = 0.44 chips. Thus, a minimum of 3 correlators is required, a center correlator that is propagated at the primary code search frequency, and then plus or minus one additional correlator spaced at ½ chip to capture the worst case code slippage due to the frequency error. As a method to learn the code doppler error and thus, the carrier frequency error, the codephase offset from the center correlator is formed with a discriminator that is employed with conventional code tracking loop. The code doppler can be estimated from discriminator trajectory over time. The slope of this trajectory can then be converted to a carrier frequency error estimate. The model for the codephase offset trajectory with respect to the codephase in the center of correlators is: Equation 34 codeOffset(t) = offsetO + offsetSlope*(t - t0). At each epoch, the codephase offset is estimated using the 3 correlators with the conventional delay lock loop where code offset from the peak: Equation 35 codeOffset(t) = (powerEarly(t) - powerLate(t)) / Normalizer(t) (in code spacing units) Normalizer(t) is proportional to the punctual power and can be estimated from either the average of the early and late correlator power or from the punctual correlator power. It should be scaled to convert the early minus late power to a code offset in code samples per chip. Equation 36 One such normalizer = Punctual power * 4 * 1.5 * (1 / To - 1) / To where To is correlator samples per chip, typically around 2, and the scale factor on punctual power is about 3. To improve sensitivity, the power in each correlator is summed with a moving window of 20 epochs. For a 100msec set of epochs, there are 100 codeOffsets, each codeOffset is an average over 20 epochs. Linear regression is applied as follows: let y(t) = H(t)*x(t) + noise, where y = [ codeOffset(tO) ... codeOffset(t99) ] , x = [offsetO offsetSlope]T and H = [ 1 0,1 dt(1) , . 1 dt(N-1) ]T. Y is Nx1 column vector of measurements, X is the 2x1 unknown vector, and H is an Nx2 matrix of coefficient . The solution is X = (HTH)-1HT that can be solved with standard matrix methods. The a-posteriori fit residuals, that is, the sum of squares of the estimated state to the measurement hold information the quality of the fix. The determinant of (HTH)-1 indicates the observability of the solution. Such a method can be implemented as either closed loop or open loop. In both cases, the slope is estimated over a longer time, such as 1OOmsec. In the closed loop case, the discriminator can be applied to shift the estimated codephase of the bank of correlators every 2Omsec. In this case, the codeOffset(t) integrates the shifts along with the discriminator outputs so as to produce the equivalent of the open loop estimates. 2021283884  07 Dec 2022 Equation 37 codeOffsetCL(t) = codeOffset(t) + sumOfShifts(t) where codeOffSetCL is the closed loop based offset estimate at time t. It is the sum of the total shifts, sumOfShifts(t), plus the new discriminator based estimate codeOffset(t). At some update rate, say every 100msec, the codeOffset(t) for the open loop method, or codeOffsetCL(t) for the closed loop method is processed, such as with linear regression, to produce the code slope in chips. This is then converted to a carrier doppler in Hz as follows: the code doppler in chips according the relationship between code doppler and carrier frequency codeDoppler (chip) = -df (carrier Hz) / 115*dt. Solving for df: -115*codeChange / dt = df. Let codeSlope = codeChange / dt. Equation 38 dfcode in carrier Hz at E5a =-codeSlope(chips)*115 hz / chip from correlators at E5a dfcode in carrier hz at E5b = codeSlopeA(chips / sec)*118hz / chip from correlators are E5b In case the magnitude of df is large, say larger than 250Hz where the wrapped frequency error estimate will be aliased, the aliased frequency can be estimated by creating an un-wrapped version of delta phase estimator given in Equation 14. The unwrapped delta frequency is formed from the un-wrapped sin and cos terms. The unwrapped discriminator is chosen when the code Doppler (code slope) is large, and when the regression is confident, that is the R2, the coefficient of determination is close to 1. R2 describes how well the sum of squares of residuals after fitting compares to the sum of square of the data before regression. A value close to 1 means the regression fit is good. A value near zero means the regression fit is poor, or that the slope is zero. Equation 39 50uw dtA = atan2 (sinA / cosA) / (2n) / dt (Hz) If abs(dfcode ) { if (50 ac / dt < 0) df = 50 ac / dt + 500 Else df = 50 aC / dt - 500 } This frequency error is applied as a one time adjustment to the estimated carrier frequency for the subsequent correations and the histogram observers are reset. Example of 400Hz error The figure 8H shows the un-wrapped cos and sin detector with 400Hz frequency error. This level of frequency error causes a rotation of 360 degrees in 2.5msec. The detector also shows the effect of the secondary codephase phase reversals. 2021283884  07 Dec 2022 Figure 8H FLL frequency detector 400Hz Error Example The computed code slope is 7.570794chips / second with an R2 = 0.994. Converting to carrier frequency error yields 7.57cells / sec*0.5chips / cell*-115cycles / chip = -435Hz. The wrapped frequency error detector yielded a frequency error of 105Hz. The unwrapped frequency error detector yielded -395Hz. As the code doppler slope matches the un-wrapped detector better than the unwrapped, the alias condition is declared, the frequency is corrected, and the histogram is reset. In case the correlators are saved, they can be re-rotated and the differential detectors can be re-computed. Figure 8I DLL Example with 400 Hz Error The corrected detectors components are shown below. Figure 8J FLL Detector Example with 395Hz Removed The figure 8J shows a small residual frequency error but that the large frequency error that was rapidly rotating the detector has been removed, yielding the phase reversals from the secondary code which are the object of detector. In another embodiment, two additional correlator trajectories are computed: one that is wrapped by 500Hz, another that is wrapped by -500Hz. In case the frequency error is larger than 250Hz, then one of the parallel detectors would correctly remove the majority of that frequency error which allows the secondary code to be identified. 2021283884  07 Dec 2022 Figure 8K Example Secondary Code Acquisition Flow Another method to aggregate component to improve secondary code acquisition In general, the correlators and codes are different for each component. Thus, the phase detector for each component is different and has different noise. Also, because the data channels generally have shorter lengths, they have more observations and have the possibility of averaging longer than the pilot codes. In this method, each component maintains its change and no-change sums at each msec in its sequence and sets the changeMeas[i]. At some minimum update rate, as fast as every msec, or as slow as the longest sequence, all components are merged into a single test with length of the largest component. Each phase of the longest phase is tested in series. At each msec of each phase, the index to the change and no-change sums are tested with index that is wrapped according to each component as in Equation 33. All components are tested . Assume the Galileo case where the A and B quadrature components have secondary code lengths of 100 bits, and the A in-phase is 20 bits, and the B in-phase is 4 bits. In the example below, the two pilot codes are 100 bits and the changeMeas array has 100 bits. However, the two data components have shorter lengths that are integer multiples of the pilot lengths. To handle this, the changeMeas is re-used. The index for data components is simply the pilot index mod the data sequence length as show below for Ai and Bi component. Notice that all components are blended into a single agree count for each of the longer pilot phases. To qualify a best candidate, the second best candidate is also sorted to enable a margin between the first and second highest agreement count. This can be represented as exclusive or’s of the measured change with values of 1,0 and the change of the secondary code with values of 1,0 for all four components across At each phase possibly phase of the t of the secondary code, the agreement count for all four components of the Galileo signal is added together as shown below: Equation 40 Agreement (t) = Sti100 dscAi(mod(t - t,20)) ©  cmAi(mod(t,20) + St=i100 dscAq(mod(t - t,100)) © cmAq(t) + S©10' dscBi(mod(t - t,4))    © cmBi(mod(t,4)) + St / 00 dscBq(mod(t - t,100)) © cmAq(t) t = {1,2,..100} Margin = max1{Agreement(t)} - max2{Agreement(t)} Where © represent the exclusive or operator which is 1 when the two inputs are different and otherwise 0 cmAi is the epoch to epoch differential phase ambiguity , or change, measured on the in-phase A sideband. It is integrated as long as possible 2021283884  07 Dec 2022 dscAi is the derivative of the secondary code sequence on the in-phase A sideband. It has value of 1 if the code changed from the previous to the current time and is otherwise 0 Written algorithmically: Equation 41 bestCnt = 0 bestPhase = -1 secondCnt = 0 for each phase: phase = {0,100} agreeCnt = 0 For each bin: i = {0,100} If (changeMeasAq [i] >= 0) { / / bit is valid bin = i+phase If bin >= 100 bin = 0 binMinusl = bin - 1 if (binMinus1 < 0) binMinus1 = scSize-1 thisBit = secondaryCodeAq[bin] lastBit = secondaryCodeAq[minMinus1] changeTrue = 0 if (thisBit != lastBit) changeTrue = 1 if (changeMeasAq[i] == changeTrue) agreeCnt += 1 } / / Aq If (changeMeasBq [i] >= 0) { / / bit is valid bin = i+phase If bin >= 100 bin = 0 2021283884  07 Dec 2022 binMinusl = bin - 1 if (binMinus1 < 0) binMinus1 = scSize-1 thisBit = secondaryCodeBq[bin] lastBit = secondaryCodeBq[minMinus1] changeTrue = 0 if (thisBit != lastBit) changeTrue = 1 if (changeMeasBq[i] == changeTrue) agreeCnt += 1 } / / Bq j= i % 20 / / j is the remainder of division by 20 If (changeMeasAi [j] >= 0) { / / bit is valid bin = i+phase If bin >= 20 bin = 0 binMinus1 = bin - 1 if (binMinus1 < 0) binMinus1 = scSize-1 thisBit = secondaryCodeAi[bin] lastBit = secondaryCodeAi[minMinus1] changeTrue = 0 if (thisBit != lastBit) changeTrue = 1 if (changeMeasAi[i] == changeTrue) agreeCnt += 1 } / / Ai j= i % 4 / / j is the remainder of division by 4 If (changeMeasBi [i] >= 0) { / / bit is valid 2021283884  07 Dec 2022 bin = i+phase If bin >= 4 bin = 0 binMinusl = bin - 1 if (binMinus1 < 0) binMinus1 = scSize-1 thisBit = secondaryCodeBi[bin] lastBit = secondaryCodeBi[minMinus1] changeTrue = 0 if (thisBit != lastBit) changeTrue = 1 if (changeMeasBi[i] == changeTrue) agreeCnt += 1 } / / Bi If (agreeCnt > bestCnt) { secondCnt = bestCnt; bestCnt = agreeCnt bestPhase = phase } Else if (agreeCnt > secondCnt) secondCnt = agreeCnt } Margin = bestCnt - secondCnt What is unique in this histogram-based secondary code estimation method 1. Up to four components are tracked with a single code tracking loop and a single frequency tracking loop. a. The frequency error discriminators of A and B are translated to the center channel 2. The method works with large frequency error up to 250Hz and detects larger frequency error and restarts the process a. Secondary code phase estimation will work up to 500Hz of frequency error for strong signals, but the goal is also to pull in the frequency error gradually during the process 2021283884  07 Dec 2022 3. The frequency tracking loop adjusts the frequency phase detectors so as to track the frequency error referenced to the center channel 4. The differential secondary code bits are combined across channels to allow detection at lower input signal strength a. The shorter lengths, that have higher confidence because of more observations, help to reduce ambiguity in the larger lengths. It is equivalent to restricting the candidate phases of the longer sequences modulo the shorter sequences to agree with the shorter sequences 5. The confidence at each bin is quantified by the margin between the change and no change histograms and the confidence of each differential phase bit according to its SNR. The second independent method: Coherent secondary code methods The above histogram of differential code bits method works well for stronger signals and for weaker signals with increased integration time. However, it is effectively a wide bandwidth estimator, or noncoherent, that squares the data each millisecond to detect the phase reversal. Much weaker signals require a more narrow-band detector that does not square the noise to enabled coherent noise averaging. Narrow-band implies that the frequency must be known so that the phase error across the integration time is less than a quarter cycle. An L1+L5 receiver will generally acquire the L5 secondary codephase after the first fix, and the L5 frequency can be predicted to the accuracy of the velocity and clock drift solution, which is on the order of a few Hertz. Conversely, an L5-only receiver must acquire the secondary codephase before the fix and thus, the accuracy of the L5 frequency is limited by the precision of primary codephase acquisition, which can be 100’s of Hertz or more. In one embodiment, the receiver may employ a frequency estimation step between the primary codephase acquisition and the secondary codephase acquisition. However, this is not preferable as it reduces the acquisition time. The preferred method is to learn the frequency error and the secondary codephase concurrently that can also work with weak signals. A solution for this is an open-loop coherent method that searches over many frequencies. To improve sensitivity, what is needed is a method that can jointly estimate the secondary codephase across all components, can integrate longer that the lengths of the secondary codephase sequences, and can also account for a high frequency error, up to 500Hz. If one considers a secondary code length of 100msec, which has bandwidth of 10Hz, or + / -5Hz, then a frequency error larger than 10Hz will produce a phase rotation across the correlators, that will effectively rotate the true phase rotations of the secondary code as shown in the figures below. Figure 8K shows the original secondary code sequence. Figure 8L shows how a phase modulation with a period equal the length of the sequence will rotate the phase on the second half of the cycle. 2021283884  07 Dec 2022 Figure 8K Code without frequency modulation Figure 8L Code with 10Hz frequency error Thus, the frequency error must be less than half the code BW. That is, df <= 0.5 / (length in seconds). For a 100 epoch secondary code, such as the Galileo A and B sideband pilot component, BW=10Hz, and maximum frequency error is 5Hz. This is satisfied with a frequency search step of twice the worst case error, i.e, 10Hz. The coherent secondary codephase method correlates the full length of secondary code sequence, not the differential, with a similar number of epochs using the in-phase and quadrature correlators, at all possible secondary codephase hypotheses. In order to handle the frequency error, it must also compensate either the correlator data of code sequence for all possibly frequency errors over the expected range of frequency error. The method must also allow all components to be tested jointly, and also allow assimilating data longer than the length of the longest secondary codephase sequence. For coherent integration, the secondary codephase sequence is represented as a sequence of bits with values of + / -1. In the time domain, the search can be represented as shown below for a Galileo satellite with 4 components: two pilot sequences of length 100 bits, and two data sequences of length 20 and 4 bits. It has the following elements: it has all components, it searches over a range of frequencies between {fmin, fmax}, and it integrates as long as possible over multiple periods of the longest secondary code T via the previously updated integration stored in memory at each codephase t and frequency hypothesis f. Notice that the magnitude rather can power is integrated. In a first description for simplicity, the magnitude is computed from a coherent sum of 100 epochs for all components. A longer coherent test beyond the length of the pilot codes is possible but it requires a finer frequency search step to avoid a phase change larger than a quarter cycle that will reduce the coherent sum. Furthermore, it is not possible to coherently combine complex results of sequential tests as the phase of the frequency error will not remain constant and energy will be lost in the integration. For this reason, sequential tests are combined non-coherently. The test is to integrate both coherently and non-coherently until the margin, that is the separation between the first and second maximum agreement is statistically significant. The threshold is chosen a 2021283884  07 Dec 2022 priori, to be near the theoretical margin between the first and second max secondary code correlation. The simplest form, which doesn’t take into account the data bit phase reversals, is shown below: 2021283884  07 Dec 2022 Equation 42 Agreement (T,f,Ti) = ({S t=o99 scAi(mod(t - T,20))*corrIAif(t)}2+ {S t=o99 scAi(mod(t - T,20))*corrQAif(t)}2)1 / 2 + ({S t=o99 scAq(mod(t - t,100)) * corrIAqf(t))}2    + {S t=o99 scAq(mod(t - t,100)) * corrQAqf(t)}2 )1 / 2 + ({S t=099scBi(mod(t - t,4)) * corrlBif(t)}2 + {S t=099 scBi(mod(t - t,4)) * corrQBif(t)}2 )1 / 2 + ({S t=o99 scBq(mod(t - t,100)) * corrlBqf(t))} 2    + {S t=099 scBq(mod(t - t,100)) * corrQBqf(t)}2 )1 / 2 + Agreement(T,f,Ti-i) where: t = {0,2,..,99}, and f = {fmin, fmax} = {-500,-490,...,-10,0,10,...490,500), this is 101 frequencies, and T is number of 100msec periods where Ti is the current and Ti-1 is the last corrIXf(t) = corrIX(t) * cos(2nf*t) + corrQX(t)*sin(2nf *t) corrQXf(t) = corrQX(t) * cos(2nf *t) - corrIX(t)*sin(2nf *t) where X = Ai,Aq,Bi, or Bq Margin = max1{Agreement(t,f)} - max2{Agreement(t,f)} If margin > Threshold Declare secondary codephase found at codephase t1 and frequency f1 And quit the test Else Continue Threshold is a predetermined threshold Remarks about the coherent test Notice firstly that there are four sets of correlator data: at Ai,Aq,Bi,Bq and each set is complex: it has a corrI and corrQ which are the in-phase and quadrature correlations. These correlators are pre-wrapped for the frequency error hypothesis at each frequency f. Thus, the complex correlators are converted to another set of complex correlators with the frequency f wiped off. The range of frequencies is chosen to cover the frequency uncertainty with a frequency step that is similar to 1 / T(seconds). Thus, if T=100msec, then frequency step is 10Hz and the worst case frequency error is 0.5 / 0.1 = 5Hz. Also notice that shorter secondary code sequences, that is the data sequences, are repeated: the 20 epoch length sequence is repeated 5 times, and the 4 epoch length sequence is repeated 25 times. This has the effect of deweighting the longer sequence candidates away from the strongest location of the shorter sequences. 2021283884  07 Dec 2022 In this example, the square root of the sum of squared of the complex sums produces the magnitude rather than the power of the correlation. Improvement for coherent integration on data components The above method has one drawback in that the data channel correlators pairs {corrIAi,corrQAi} and {corrIBi,corrQBi} have additional phase reversals due to the data bits. These reversals are synchronous with the secondary code start bit. The impact of the data bits is that the magnitude of the coherent sum on the data components will not grow linearly. One solution is to shift the start-point of the correlators for the A and B data components in accordance with the secondary codephase hypothesis and then form the magnitudes at the end of each secondary code sequence. For example, the startpoint for the data A hypothesis of phase 0 would start at the first, or 0-th, correlator. The start-point for phase 1 would start at the 2nd, etc. This is shown in the example below: The following pseudocode was used to derive the indices needed to combine the shorter data channel secondary codes with the longer pilot channels. Here is a sample of how the epochs referred to as milliseconds m0, m1, etc. The secondary code is referred to as sc0, sc1, etc. Notice when using the longer pilot secondary codes, the shorter data codes are repeating every 4 epochs while the data channel epoch data is No delay for phase 0, m0,m1,m2,m3 ->ComputeMag. m4,m5,m6,m7 ->ComputeMag Sc0,sc1,sc2,sc3                    sc0,sc1,sc2,sc3 For a delay of 1 msec for phase 1, m0 ->ComputeMag m1,m2,m3,m4 ->ComputeMag sc3                    sc0,sc1,sc2,sc3 For a delay of 2 msecs for phase 2, m0,m1 ->ComputeMag  m2,m3,m4,m5 ComputeMag sc2,sc3                                  sc0,sc1,sc2,sc3 For a delay of 3 msecs for phase 3, m0,m1,m2 ->ComputeMag m3,m4,m5,m6 ->ComputeMag sc1,sc2,sc3                    sc0,sc1,sc2,sc3 Identifying the first two magnitudes for each 4msec coherent sum for data Bi for phase0 (delay 0) +{S t=0t<4scBi(mod(t,4))*corrIBif(mod(t,4))}2 + {S t=o t<4scBi(mod(t,4))*corrQBif(mod(t,4))}2 +{St=4 t<=7 scBi(mod(t,4))*corrIBif(mod(t,4))}2 + { S t=4t<=7scBi(mod(t,4))*corrQBif(mod(t,4))}2}1 / 2 +... 2021283884  07 Dec 2022 for phasel (delay 1) {S t=0t<1scBi(mod(t-1,4)) * corrIBif(mod(t-1,4))}2 + {S t=0t<1scBi(mod(t-1,4)) * corrQBif(mod(t-1,4))}2 +{S t=it<5scBi(mod(t-1,4)) * corrIBif(mod(t-1,4))}2 +{S t=it<5scBi(mod(t-1,4)) * corrQBif(mod(t-1,4))}2 +... for phase2 (delay 2) {S t=0t<2scBi(mod(t-2,4)) * corrIBif(mod(t-2,4))}2 + {S t=0 t<2scBi(mod(t-2,4)) * corrQBif(mod(t-2,4))}2 +{S t=2t<6scBi(mod(t-2,4)) * corrIBif(mod(t-2,4))}2 + {S t=2 t<6scBi(mod(t-2,4)) * corrQBif(mod(t-2,4))}2 +.. for phase3 (delay 3) {S t=0t<3scBi(mod(t-3,4)) * corrIBif(mod(t-3,4))}2 + {S t=0 t<3scBi(mod(t-3,4)) * corrQBif(mod(t-3,4))}2 +{S t=3t<7scBi(mod(t-3,4)) * corrIBif(mod(t-3,4))}2 + {S t=3 t<7scBi(mod(t-3,4)) * corrQBif(mod(t-3,4))}2 +. Thus, the indexing for the data terms is modified as shown below. Equation 43 Agreement (T,f,Ti) = ({S t=0t<T scAi(mod(t- t,4)) * corrIAif(mod(t- t,4))}2 + {S t=0 t<T scAi(mod(t- t,4))* corrQAif(mod(t- t,4))}2)1 / 2 + { S p=op<100 / 20({ S t=T+2opt<=20p+19scAi(mod(t- t,20)) * corrIAif(t)}2 + { S t=T+20pt<=20p+19scBi(mod(t - t,20)) * corrQAif(t)}2 )1 / 2 } * SFA + ({S t=1100 scAq(mod(t - t,100)) * corrIAqf(t))}2 + {S t=1100scAq(mod(t - t,100)) * corrQAqf(t)}2 )1 / 2 + ({S t=0t<T scBi(mod(t- t,4)) *corrIBif(mod(t- t,4))}2 +{S t=0 t<TscBi(mod(t- T,4))*corrQBif(mod(t- t,4))}2 )1 / 2 + { S p=op<100 / 4({ S t=T+4pt<=4p+3scBi(mod(t- t,4)) * corrIBif(t))}2 + { S t=T+4pt<=4p+3scBi(mod(t- t,4)) * corrQBif(t)}2} )1 / 2 } * SFB + ({S t=1100 scBq(mod(t - t,100)) * corrIBqf(t))} 2 + {S t=1100scBq(mod(t - t,100)) * corrQBqf(t))}2 )1 / 2 + Agreement(T,f,Ti-1) Notice the A and B data terms have a first term to account for the partial sums that occur for t > 0 and less than the code length before the full length sums. A similar final partial sum will occur for the ending epochs for values of t > 0. 2021283884  07 Dec 2022 SFA and SFB are scale factors to account for the increase in the dataA and dataB terms that have additional squaring at the data bit length. These terms can be considered tuning factors. SFA can be set to the number of non-coherent sums over the 100 epochs: SFA = sqrt(5), SFB = sqrt(20). Correlation of DataA component An example single 20 epoch coherent correlation of the data A correlators with the data A secondary code with the true pilot secondary codephase at 44 (referenced to msec 0) means the expected data A codephase is mod(44,20) = 4 (the plot shows 5 referenced to 1). The frequency error is zero. The peak has a magnitude of about 9,700,000 and the 2nd peak magnitude is 2,000,000 producing a margin of 13.7dB. The histogram method by comparison has a 1st maximum of 20 counts and 2nd maximum of 16 counts, yielding a margin of just 1.9dB. Figure 8M Data A Example Now a + / -500Hz frequency search with 10Hz step size is applied along with coherent integration of 20 epochs and 20 non-coherent integration over 400 epochs. The spectrum is shown below. The truth secondary codephase is correctly at the 4th bin (sc4). The peak magnitude is 11,700,000 and the 2nd peak is around 7,000,000 yielding a margin about 9dB, a reduction in 4.8dB to the single frequency case. Figure 8N Correlation of DataB component For the B data channel with a single 4 msec coherent integration at single frequency with 0Hz error, the peak magnitude is 2,900,000 and the 2nd peak is 1,450,000 yielding a margin of nearly 6dB. The histogram method by comparison has a 1st maximum of 4 and a 2nd maximum of 3, yielding a margin of 2.5dB. Figure 8O Data B Example When the same frequency search that produces 100 non-coherent integrations with 4 epoch coherent integration, the peak is 11,700,000 and the 2nd peak is around 9,000,000 to produce a margin of 2.3dB. 2021283884  07 Dec 2022 Figure 8P Data B Secondary Code Correlation Example Correlation of PilotA component The single 100 epoch coherent correlation of a Galileo pilot secondary codephase of 100 epochs with 0 Hz error is shown below. It has a peak magnitude at 48,000,000 and a 2nd peak at 3,900,000 yielding a margin of 21.8dB. The histogram method by comparison has a first maximum of 100 and 2nd maximum of 60 yielding a margin 4.4dB. Figure 8Q Pilot A Example at 0Hz The maximum magnitude at each frequency is show below for the same frequency search containing 4 non-coherent integrations of a 100 epoch coherent integration. It has a similar top max of 48,000,000 and a 2nd max of 14,000,000 yielding a margin of 10.7db. Figure 8R Pilot A Max Example Summaring Differential and Coherent margins Table 8 Summary Table Bits Histo Max Count Histo 2nd Max Margin dB Coherent margin (dB) 1 frequency Coherent margin (dB)max frequencies Loss (dB) due to multiple frequencies DataA 20 20 16 1.9 13.7 9 4.7 DataB 4 4 3 2.5 6 2.5 3.5 PilotA 100 100 60 4.4 21.3 10.7 11.1 Improving the calculation efficiency of the coherent method The method in Equation 43 shows a two dimensional search: 100 secondary codephase candidates, and 101 frequency candidates. It can be implemented in the time domain with two loops: 2021283884  07 Dec 2022 1. An outer loop is on the frequency. The complex correlators for each component are multiplied by a complex exponential to perform the frequency shift. The outer loop searches all the candidate frequencies. 2. An inner loop on secondary codephase. All the secondary codephase hypotheses are tested. This step is where the coherent sum occurs. In the time domain, this step is efficient as each code bit is either + / -1 which is implement efficiently as either an add or subtract. This method requires the following instructions at each pilot length integration of T epochs: The outer loop requires 200 complex multiplies for Aq,Bq, 20 complex multiples for Ai, and 4 complex multiplies for Bi for a total of 224 complex multiplies, and then 224 copies to implement the shift. The inner loop requires roughly 224 complex additions or subtractions based on the secondary code value. The agreement update requires 224 magnitudes and then 400 adds to update the Agreement for 4 components where the data components reuse the same 20 or 4 values across the 100 epochs. Thus, one inner loop is 624 additions and 224 magnitudes. One frequency requires the outer loop, and 100 inner loops which equals 62400 adds, 22400 magnitudes, 224 multiplies and 224 shifts. 100 outer loops therefore require 6,240,000 adds, 2,240,000 magnitudes, 22,400 complex multiplies and 22,400 shifts. A magnitude can be approximated implemented efficiently as a series of shifts and adds. Frequency domain coherent method It is also possibly to implement this same coherent method in the frequency domain. It produces the same agreement sum. Initially, the DFT is taken of both the input correlators and the secondary code sequences for all components. The coherent secondary codephase occurs implicitly by taking the product of the correlators and complex conjugate of the codes and then by taking the inverse DFT (IDFT) (that is, correlation in the time domain is equivalent to multiplication in the frequency domain with the complex conjugate applied to one element of the multiplication). The frequency search loop can be performed by exploiting the property of the DFT where multiplication in the time domain by a complex exponential with a frequency that is a multiple of the DFT resolution is equivalent to a shift of the DFT bins by that multiple. The equations below established the convention for the shift direction and the corresponding frequency down-shift. Equation 44 ejw0t * f(t) = F(w- wo), similarly e-jw0t * f(t) = F(w + wo), e-jw0t = cos(w0) - j*sin(w0) define f(t) = realA + j*imagA = cosA + j*sinA e-jwot * f(t) = (cosw + j*sinw) * cos(wo) - j*sin(wo) = [cosw*coswo + sinw*sinwo] + j*[sinw*coswo - cosw*sinwo] = cos(w-wo) + j*sin(w-wo) The frequency resolution of each frequency bin in the spectrum is determined by the sample rate of the time domain correlators divided by the number of bins in the DFT. Consider the correlators are sampled at 1kHz and the number of bins is 1oo. The resolution is therefore 1ooohz / 1oobins = 1oHz / bin. Thus, a shift of + / - one bin corresponds to multiplying by - / +1oHz (notice the negative relationship). A shift by N 2021283884  07 Dec 2022 bins correspondes to N*10Hz. When N > bins / 2, the frequency moves negative and the mapping becomes -(shift - bins)*10Hz. All possible frequencies withing the coherent bandwidth that are multiples of the frequency resolution can be tested by testing all possible shifts of one of either the input or code spectrums. At each shift, which corresponds to each frequency, the magnitude of the IDFT at each index which corresponds to the codephase hypothesis, is added to the running sum of Agreement(T,f,Ti—i). In other words, mathematically, the test is equivalent to Equation 43 where the sums of secondary codes times the frequency shifted correlators at a particular phase is the result of the IFFT at the corresponding index. As an implementation detail, it is also valid to keep the data A and B components in the time domain as they are smaller in length, and also need to be squared at the end of each sequence. Furthermore, the correlator data is not the same for all secondary codephase hypotheses and thus, the DFT for the correlator data is not the same length for these secondary codephase hypotheses. i. An initialization step takes the DFT of each of the 2 complex correlator sequences as well as the DFT of the real values secondary code sequences. The data A and B components are not included here. a.  SCAQ(ro) = DFT(scAq(t) + j*0), t=(0,99) b.  SCBQ(ro) = DFT(scBq(t) + j*0), t=(0,99) c.  CORRAQ(ro) = DFT(corrIAq(t) + j*corrQAq(t)), t = (0,99) d.  CORRBQ(ro) = DFT(corrIBq(t) + j*corrQBq(t)), t = (0,99) 2. A single loop iterates over all the possibly shifts of the DFT of the complex correlator sequences. The first shift is zero, and then the subsequent shifts are by one positive frequency bin (equivalent to positive frequency shift that wipes off that frequency). The resulting shifted complex correlator DFT is then multiplied by the complex conjugate of the code sequence DFT. The IDFT is taken on resulting product. The magnitude of the complex IDFT is taken at each index and added to Agreement(T,f,Ti-1) where t is the IDFT index and f is the correlator DFT shift index. a. Shift all correlator sample spectrums by the one bin of the longest sequence i.  CORRAQ(roi) = CORRAQ(ro-i*ro) ii. CORRBQ(^i) = CORRBQ(ro-i*ro) b. Multiply correlator spectrums by the code spectrums (* denotes complex conjugate) i. YAQ = CORRAQ(roi) * SCAQ*(ro), ^=(0,99) ii. YBQ = CORRBQ(^i) * SCAQ*(ro), ^=(0,99) c. Invert the spectrum products i. yAq(T) = IDFT(YAQ) , t=(0,99) ii. yBq(T) = IDFT(YBQ) , t=(0,99) d. form the Agreement (T,f,Ti) using the time domain correlations Yab(T): Agreement (T,f,Ti) = + AgreementAi(T,f,Ti) + + AgreementBi(T,f,Ti) + ({ real(yAq(T,f) }2 + ({ real(yBq(T,f) }2 + Agreement(T,f,Ti-1) + { imag(yAq(T,f) }2)1 / 2 + { imag(yBq(T,f) }2)1 / 2 2021283884  07 Dec 2022 Notice that the data A and B components are computed as with Equation 43. 2021283884  07 Dec 2022 Figure 8T Coherent Method Example Flow Chart Computation considerations for the coherent method The instructions required are based on the number of instructions per DFT. Assume the N-point DFT requires N2 with 6 adds and 7 multiples per stage. For N=100, this 60,000 adds and 70,000 multiplies. Also, ignore the data A and B components as they will be common between time domain and frequency domain. The initialization step requires 2 DFTS with (10000 + 10000) DFT stages, The main loop requires 200 shifts of all components, then 200 complex multiples, and then 4 IDFTs implemented with IDFTs. Doing the loop 100 times leads to a total of 2 + 100(2) DFTs, and 100*200 shifts and 100*200 complex multipliers. Then there are 200 magnitudes and 400 adds The total instructions is 100*20000 stages * (6 adds and 7 multipliers) + 100*(200 shifts + 200 complex multiplies + 200 magnitudes + 400 adds) = 12,000,000 adds + 14,000,800 multipliers + 20000 shifts + 20000 complex multiplies + 20000 magnitudes + 40000 adds. Whereas the last 4 terms that update the magnitudes are common in both methods, the DFT method has significantly more multiplies. However, if an FFT is implemented, the efficiency is improved further. As an upper bound for the 100 point sequences, consider a 128 point radix-2 FFT for the 10. In this case, the total number of kernel operations 7*64 = 448 (log2(128) = 7 and 28 / 2 = 64) instead of 100*100 for the DFT. Assume the 20 point and 4 points are implemented as DFTs. Each kernel has 6 adds and 4 multiplies (there are also 3 less multiplies if the twiddles factors are precomputed). In this case, the 100 point FFT is repeated 200 times, then the instruction for this element is 200*448 stages * (6 adds + 4 multiplies) = 537,600 adds and 627,200 multiplies. An optimized mixed radix (5,5,4) 100 point FFT should be even more efficient. Results of Differential and Coherent method The following sections summarizes comparisons of the two methods and how using multiple components improves the ability to determine the secondary codephase at a lower signal level than without the additional components. With strong signals, both methods correctly estimate the secondary codephase. The coherent method has the advantage of jointly estimating the frequency error. The differential method requires a separate frequency tracking loop to estimate the frequency error but can operate with a frequency error as large as ¼ of the differential bandwidth. As expected, the coherent method outperforms the differential method with weaker signals as it has a much narrower bandwidth. However, it requires significantly more computation. In a preferred embodiment, the differential method is used for stronger signals, and the coherent method is used for weaker signals. In another embodiment, both methods are used to provide two estimates and thus, high confidence when both have the same results. 2021283884  07 Dec 2022 The result 10 experiments at each of 3 different signal levels is shown below. With 15dB noise added to a nominal signal level, the differential method requires multiple periods of the pilot code before a high detection probability is achieved. Whereas a single pilot component failed sometimes even after 4 periods of the pilot sequence, the combined component method was perfect at this signals level. The differential method failure rate increases quickly after this point with higher noise. Table 9 Histogram Method Example Table Histogram method 10 400msec experiments at each test Time msec correct found ent at 15db 200Hz correct found ent at 18db 200Hz correct found ent at 20db 200Hz margin (counts) 15db 200Hz margin (counts) 18db 200Hz margin (counts) 20db 200Hz PilotA 101 0 0 1 0.0 0.0 2.0 201 4 1 1 1.8 3.0 0.0 301 6 1 1 4.0 6.0 2.0 401 8 1 1 3.1 4.0 2.0 PilotC 101 0 0 0 0.0 0.0 0.0 201 6 1 2 1.3 3.0 0.5 301 7 0 1 4.0 0.0 6.0 401 9 2 1 5.6 1.5 4.0 DataA 101 2 1 4 1.5 0.0 0.8 201 3 0 1 1.3 0.0 1.0 301 4 3 2 0.5 0.7 0.5 401 7 0 1 0.4 0.0 0.0 DataB 101 8 7 3 1.0 1.0 1.0 201 9 10 4 1.0 1.0 1.0 301 9 9 9 1.0 1.0 1.0 401 10 8 8 1.0 1.0 1.0 PilotAB 101 2 0 0 2.0 0.0 0.0 201 8 2 2 2.6 3.5 4.5 301 9 3 2 7.3 6.0 3.0 401 10 4 1 10.5 3.3 1.0 PilotABandDataAB 101 2 0 0 2.0 0.0 0.0 201 8 2 2 2.6 3.5 4.5 301 9 3 2 7.3 6.0 3.0 401 10 4 1 10.5 3.3 1.0 PilotABandDataA 101 2 0 0 2.0 0.0 0.0 201 8 2 2 2.6 3.5 4.5 301 9 3 2 7.3 6.0 3.0 401 10 4 1 10.5 3.3 1.0 PilotABandDataB 101 2 0 0 2.0 0.0 0.0 201 8 2 2 2.6 3.5 4.5 301 9 3 2 7.3 6.0 3.0 401 10 4 1 10.5 3.3 1.0 2021283884  07 Dec 2022 The coherent method results are shown below. The single pilot result is nearly perfect at 15db of added noise. However, the combined component method is perfect after even one period down to 20db of added noise. The frequency error is also small, generally within 5hz. The failure rate at 25dB of added noise starts to increase significantly for the single component cases, but is much lower for the multiple component cases. Table 10 Coherent Method Example Table coherent method 10 400msec experiments at each test time correct found ent at 15db 400Hz correct found ent at 15db 200Hz correct found ent at 18db 200Hz correct found ent at 20db 200Hz correct found ent at 25db 200Hz margin 15db 400Hz margin 15db 200hz margin 18db 200Hz margin 20db 200Hz margin 25db 200Hz Avg freq error Hz 15db 400Hz Avg freq error Hz 15db 200Hz Avg freq error Hz 18db 200Hz Avg freq error Hz 20db 200Hz Avg freq error Hz 25db 200Hz PllotA 101 9 10 8 5 1 13.2 20.0 13.2 11.6 4.4 5.6 0.0 0.0 0.0 240.0 201 10 10 10 9 1 17.7 23.5 20.1 16.0 10.3 5.0 0.0 0.0 0.0 0.0 301 10 10 10 9 1 19.7 25.0 22.3 19.5 12.1 5.0 0.0 0.0 0.0 0.0 401 10 10 10 10 3 20.2 25.9 23.5 19.2 9.1 5.0 0.0 0.0 0.0 0.0 PilotB 101 9 10 9 7 0 12.7 20.4 16.0 12.3 0.0 5.6 0.0 0.0 0.0 0.0 201 10 10 10 8 0 17.9 23.7 19.5 18.2 0.0 7.0 0.0 0.0 0.0 0.0 301 10 10 10 10 3 19.8 25.3 22.3 18.5 11.9 6.0 0.0 0.0 0.0 0.0 401 10 10 10 10 3 20.6 26.2 23.6 21.0 15.2 7.0 0.0 0.0 0.0 0.0 DataA 101 9 10 7 5 1 16.2 16.6 11.4 9.8 7.2 4.4 1.0 1.4 4.0 30.0 201 10 10 10 8 0 19.3 20.8 18.5 15.6 0.0 6.0 1.0 2.0 5.0 0.0 301 10 10 10 8 0 20.8 21.9 20.5 17.8 0.0 8.0 1.0 3.0 5.0 0.0 401 10 10 10 9 3 21.8 22.7 21.7 18.9 9.7 9.0 0.0 1.0 2.2 10.0 DataB 101 10 10 7 5 2 1.0 1.0 1.0 1.0 1.0 22.0 12.0 21.4 164.0 335.0 201 10 10 9 4 1 1.0 1.0 1.0 1.0 1.0 19.0 7.0 18.9 17.5 140.0 301 10 10 9 8 2 1.0 1.0 1.0 1.0 1.0 18.0 10.0 20.0 8.8 290.0 401 10 10 9 8 2 1.0 1.0 1.0 1.0 1.0 14.0 7.0 13.3 8.8 105.0 PilotAB 101 10 10 10 9 2 17.2 23.8 19.6 15.4 7.6 0.0 0.0 0.0 0.0 0.0 201 10 10 10 9 4 20.9 26.9 23.8 21.4 12.0 1.0 0.0 0.0 0.0 0.0 301 10 10 10 10 6 22.7 28.3 25.8 22.7 15.0 0.0 0.0 0.0 0.0 0.0 401 10 10 10 10 8 23.4 29.2 27.0 24.7 15.2 0.0 0.0 0.0 0.0 0.0 PilotABDataAB 101 10 10 10 8 1 17.3 23.8 19.6 18.2 11.7 0.0 0.0 0.0 0.0 0.0 201 10 10 10 9 4 21.2 26.4 24.1 22.2 13.6 1.0 0.0 0.0 0.0 0.0 301 10 10 10 9 6 23.0 27.6 26.0 24.5 14.5 0.0 0.0 0.0 0.0 0.0 401 10 10 10 10 8 23.7 28.2 27.1 25.4 14.6 0.0 0.0 0.0 0.0 0.0 PilotABDataA 101 10 10 10 8 2 17.4 23.8 19.6 18.0 5.6 0.0 0.0 0.0 0.0 120.0 201 10 10 10 9 4 21.2 26.4 24.0 22.2 13.8 1.0 0.0 0.0 0.0 0.0 301 10 10 10 9 6 23.1 27.6 26.0 24.4 15.0 0.0 0.0 0.0 0.0 0.0 401 10 10 10 10 8 23.7 28.3 27.1 25.4 15.4 0.0 0.0 0.0 0.0 0.0 PilotABDataB 101 10 10 10 8 2 17.2 23.9 19.7 17.8 9.7 0.0 0.0 0.0 0.0 0.0 201 10 10 10 9 4 20.9 26.9 23.9 21.6 11.7 1.0 0.0 0.0 0.0 0.0 301 10 10 10 10 6 22.7 28.3 25.9 22.7 14.7 0.0 0.0 0.0 0.0 0.0 401 10 10 10 10 8 23.5 29.2 27.1 24.9 15.2 0.0 0.0 0.0 0.0 0.0 2021283884  07 Dec 2022 An example of the frequency search for the A pilot secondary code is shown below. The top max is correctly at 44 (45 starting with 1st bin as 1). The top max is at 570,000 and the 2nd max at 350,000 yields are margin of 7.15dB. Figure 8S Coherent Method Example Secondary Correlation The Third independent method: Cross-SV ensemble correlation integration method GNSS signals work on the principle of Direct Sequence Spread Spectrum - CDMA signaling scheme. In most of the GNSS signals secondary codes are overlaid on top of the primary codes to increase the auto- and cross-correlation properties of the signal. Secondary codes are relatively short in length compared to the primary codes, but the duration (or period) of the secondary codes are long as they run over several code cycles of the primary code. The pilot signal components in Galileo and Beidou have a length of 100 and are 100ms long. Hence even after acquiring the primary code phase, the receiver must spend additional time in acquiring the secondary code phase. Fig 8V shows how the secondary codes are transmitted from the satellites assuming that the satellite clock errors are negligible. Figure 8T Secondary code alignment across SVs at the time of transmission (ideal) However, the receiver receives each satellite signal at different delays from the transmit time. In addition, each satellite may have different satellite clock errors, and these will introduce additional relative delays at the receiver.. Figure 8U Secondary code phases at the receiver - an illustration 2021283884  07 Dec 2022 The goal of this algorithm is to identify the secondary code phase by considering the relative delay information across the received signals from multiple satellites. Core steps for the algorithm: i.      Acquire the primary codes. Let S be the number of satellites whose primary codes have been acquired. Each primary code period (for example, each millisecond) and produces a new correlation value for each satellite. If the signal has two components (A and B), then two correlation values are produced per primary code period and the value of S is doubled. ii.      Arrange the correlation values in a matrix where the rows correspond to the SV (or a signal component of the ...

Claims

1. A system for processing L5 wideband frequency GNSS signals, the system comprising: an analog to digital converter (ADC) to generate a digital representation of received GNSS signals in an L5 wideband GNSS frequency band;a baseband sample memory to store the digital representation of the received GNSS signals, the baseband sample memory coupled to the ADC;a GNSS processing system coupled to the baseband sample memory to process the digital representation of the received GNSS signals, the GNSS processing system configured to acquire code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals without using L1 GNSS signals to acquire the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals and wherein the GNSS processing system acquires the code phases of the one or more secondary codes after acquiring one or more primary codes of the GNSS signal components.

2. The system as in claim 1, wherein the system includes only a single GNSS antenna tuned to a frequency in the L5 wideband frequency band and wherein the system does not receive and does not acquire L1 GNSS signals.

3. The system as in claim 1, wherein the system comprises a GNSS antenna coupled to the ADC, and wherein the GNSS processing system acquires the code phases of the one or more secondary codes before tracking of the GNSS signal components.2021283884   05 Aug 20264. The system as in claim 3, wherein the GNSS processing system acquires the code phases of the one or more secondary codes while a time uncertainty exceeds 0.5 milliseconds.

5. The system as in claim 4, wherein an estimated error for current time exceeds 1 millisecond prior to acquiring the code phases of the one or more secondary codes.

6. The system as in claim 3, wherein a code phase of a first secondary code in the one or more secondary codes is acquired by using multiple GNSS signal components in L5 wideband GNSS signals from a single GNSS satellite.

7. The system as in claim 6, wherein the multiple GNSS signal components comprise a GNSS sideband A signal and a GNSS sideband B signal.

8. The system as in claim 3, wherein a code phase of a first secondary code in the one or more secondary codes is acquired by using multiple GNSS signals from multiple GNSS satellites.

9. The system as in claim 8, wherein the multiple GNSS satellites comprise at least two satellites from at least one of: a Galileo E5 constellation of GNSS satellites; or an L5 GPS constellation of GNSS satellites; or a Glonass K2 constellation of GNSS satellites; or a QZSS constellation of GNSS satellites; or a Beidou B2 constellation of GNSS satellites.

10. The system as in claim 4, the system further comprising:a radio frequency (RF) receiver that comprises at least a first RF filter that is tuned to only a frequency in the L5 wideband frequency band to receive L5 wideband GNSS signals, and the first RF filter is coupled to the GNSS antenna, and wherein the system does not use L1 GNSS signals to determine time information or frequency information and wherein the system does not track L1 GNSS signals.2021283884   05 Aug 202611. The system as in any one of claims 1-10, wherein the GNSS processing system detects phase changes between successive primary code epochs, the GNSS processing system comprising a frequency lock loop (FLL), the phase changes detected from in-phase and quadrature results of correlation outputs in the GNSS processing system; and wherein the GNSS processing system averages the phase changes detected from the in-phase and quadrature results of correlation outputs to produce an estimated frequency error; and wherein the GNSS processing system provides a compensated frequency, based on the estimated frequency error, to one or more discriminators of the FLL, the FLL configured to reduce error in estimations of frequency of received L5 GNSS signals based on the estimated frequency error.

12. The system as in claim 11, wherein the FLL comprises a first discriminator for a first sideband of L5 GNSS signals and a second discriminator for a second sideband of L5 GNSS signals, and wherein the estimated frequency error is a filtered estimate based on the averages of the phase changes detected from the in-phase and quadrature results of correlation outputs.

13. The system as in claim 12, wherein the averaging comprises averaging phase changes detected over two, three, or four GNSS signal components from a single GNSS satellite.

14. The system as in claim 13, wherein the FLL detects the phase changes between successive primary code epochs.

15. The system as in any one of claims 1-14, wherein the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals are acquired by using a set of histograms that store sets of phase change values.2021283884   05 Aug 202616. The system as in any one of claims 1-14, wherein the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals are acquired by correlating coherently in two separate correlation operations.

17. The system as in any one of claims 1-14, wherein the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals are acquired by using an expected sequence of phase reversals for secondary codes associated with primary code phases that have been acquired.

18. The system as in any one of claims 1-14, wherein the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals are acquired by correcting predicted secondary code phase for GNSS signals from a first GNSS SV based on a determined difference between a determined secondary code phase of received GNSS signals from a second GNSS SV and the predicted secondary code phase.

19. The system as in any one of claims 1-14, wherein the code phases of one or more secondary codes of one or more GNSS signal components of L5 wideband GNSS signals are acquired by correlating a set of differential correlation samples against a differential secondary code sequence to provide a set of correlation outputs; and determining, from the set of correlation outputs one or more secondary code phases of the one or more secondary codes.

20. The system as in claim 19, wherein the differential correlation samples are produced by multiplying a set of correlator outputs from a primary correlation operation by a set of complex conjugated delayed correlator outputs from a primary correlation operation and the differential secondary code sequence is produced by multiplying a secondary code sequence by a delayed secondary code sequence.