Modernized consumer-grade gnss subcode acquisition and signal tracking
Patent Information
- Application Number
- CN202180058641.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-05-28
- Filing Date
- 2021-06-01
- Publication Date
- 2026-09-11
- Estimated Expiration
- 2041-06-01
AI Technical Summary
然而,如果没有这样的确定,那么跟踪所捕获的主码GNSS信号是困难的
Smart Images

Figure CN116745647B_ABST
Abstract
Description
[0001] This application claims the benefits of U.S. Provisional Patent Application No. 62 / 704,882 and No. 62 / 704,884, filed June 1, 2020, and U.S. Provisional Patent Application No. 17 / 334,477, filed May 28, 2021, which are incorporated herein by reference. Background Technology
[0002] This disclosure relates to the field of Global Navigation Satellite Systems (GNSS), and specifically, in one embodiment, to a GNSS receiver using modern L5 signals in the L5 band. Many GNSS systems are available, including the U.S. GPS (Global Positioning System), GLONASS, Galileo, Beidou, and regional systems that are already in use or may be deployed in the future. The U.S. GPS system was initially only available in the L1 band. Now, the U.S. 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. These modernized GNSS signals in the L5 band have certain advantages over GNSS signals in the L1 band, some of which are described below. However, directly acquiring L5 band GNSS signals in a GNSS receiver without first acquiring L1 GNSS signals in the receiver is considered difficult; therefore, conventional GNSS receivers employ techniques that first acquire L1 GNSS signals. This initial acquisition provides information for capturing GNSS signals in the L5 band, such as timing information and Doppler estimation. Therefore, conventional GNSS receivers supporting L5 signals use RF front-ends that receive both L5 and L1 signals; this means there is duplication of RF components in these GNSS receivers. Furthermore, conventional receivers must store and use pseudo-random noise (PRN) code sequences for both L1 and L5 GNSS signals.
[0003] Modern GNSS signals (such as those from the European Galileo satellite constellation (SV)) include both a primary code sequence and a secondary code sequence. The secondary code sequence is typically superimposed on the primary code sequence using modulo-2 addition. The inclusion of a secondary code sequence provides modern GNSS signals with several advantages over older GPS signals that do not include such a sequence. For example, the secondary code sequence can reduce cross-correlation between signals received from different satellites; this improves the reliability of the receiving system by reducing error tracking. The secondary code sequence produces a series of zero or 180-degree phase shifts synchronized with the epochs of the primary code. Secondary code sequences can be long, such as 100 milliseconds in the case of some Galileo L5 signals. Primary code epochs typically occur every 1 millisecond. This means that GNSS receivers cannot use coherent correlation longer than 1 millisecond (ms or msec) unless the secondary code phase is determined first in the GNSS receiver. If the secondary code is determined, the coherent correlation can be extended well beyond 1 millisecond, allowing for high receiver sensitivity. However, without such determination, tracking the captured primary code GNSS signal is difficult. Existing GNSS receivers avoid this problem by capturing the L1 signal before attempting to capture the L5 signal. This capture effectively allows the determination of the phase of the secondary code associated with the L5 signal, thus avoiding the requirement to determine this phase by independent means. Summary of the Invention
[0004] This disclosure includes various aspects and embodiments of systems, GNSS receivers, methods, and techniques for capturing the secondary code phase of GNSS signals, including, for example, a GNSS receiver that captures the secondary code phase of an L5 GNSS signal without using an L1 GNSS signal. In one embodiment, such a GNSS receiver includes: an analog-to-digital converter (ADC) for generating a digital representation of a received GNSS signal in an L5 wideband GNSS frequency band; a baseband sample memory for storing the digital representation of the received GNSS signal, the baseband sample memory being coupled to the ADC; and a GNSS processing system coupled to the baseband sample memory to process the digital representation of the received GNSS signal, the GNSS processing system being configured to capture the code phase of one or more secondary codes of one or more GNSS signal components of an L5 wideband GNSS signal without using an L1 GNSS signal. In one embodiment, the system includes only a single GNSS antenna tuned to a frequency in the L5 wideband, and the GNSS receiver does not receive and does not capture L1 GNSS signals. In one embodiment, the GNSS receiver acquires the code phase of 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, the code phase of the first code in one or more secondary codes is acquired using multiple GNSS signal components from an L5 wideband GNSS signal from a single GNSS satellite (e.g., GNSS sideband A and GNSS sideband B signals from the same GNSS satellite, such as E5a and E5b signals from the same Galileo GNSSSV). In one embodiment, the GNSS receiver detects phase changes between successive primary code epochs, where the phase changes are detected from in-phase and quadrature results of the correlation outputs of the GNSS processing system in the GNSS receiver; the GNSS processing system averages the phase changes detected from the in-phase and quadrature results of the correlation outputs to produce an estimated frequency error. The GNSS processing system provides a compensated frequency to one or more discriminators in a frequency-locked loop (FLL) based on the estimated frequency error, the FLL being configured to reduce errors in the frequency estimation of the received L5 GNSS signal based on the estimated frequency error. In one embodiment, the FLL includes a first discriminator for a first sideband of the L5 GNSS signal and a second discriminator for a second sideband of the L5 GNSS signal, and the estimated frequency error is based on a filtered estimate of the average of the phase changes detected from the in-phase and quadrature results of the correlation output. In one embodiment, the average may be for two, three, or four GNSS signal components from a single GNSS SV.
[0005] The different methods described below allow a GNSS receiver to capture the secondary code phase of an L5 GNSS signal without using the L1 GNSS signal. According to one embodiment, a method for capturing the secondary code phase of a GNSS signal may include: capturing one or more primary codes of a received L5 GNSS signal; determining a phase change value for each L5 GNSS signal for each transition between received primary code epochs in each of the one or more primary codes of the received L5 GNSS signal, wherein a set of phase change values is determined sequentially over time; 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 with a set of expected phase change values derived from one or more secondary codes associated with one or more primary codes from one or more GNSS satellites, wherein these primary and secondary codes are further associated with uniquely identified GNSS satellites and their signal transmissions; and determining one or more code phases of the one or more secondary codes based on the comparison. In one embodiment, the method may further include: performing a narrowband tracking operation on at least one of the components of the received L5 GNSS signal after determining the primary code phase and associated secondary code phase for a component of one of the received L5 GNSS signals; and determining one or more position solutions based on one or more outputs from the tracking operation. Each phase change value represents an indication of a phase change 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 value includes calculating the cosine of the value at each transition between two consecutive primary code epochs. The expected phase change value is derived from the secondary code by transforming the secondary code into a sequence of phase change values across epochs in the secondary code, using a set of index values in a data structure. Acquisition of the primary code includes determining the code phase of the primary code. In one embodiment, the method may further include: cross-checking the determined secondary code phases of different channels of the L5 GNSS signal from the same GNSS satellite, and comparing the phase change values from different channels of the same GNSS SV to derive a comparison output for determining one or more secondary code phases.
[0006] According to another embodiment, another method for capturing the secondary code phase of a GNSS signal may include the following operations: receiving from a GNSS satellite a GNSS signal 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-level code having a first length (in bits) and a second-level code having a second length (in bits), the first length being greater than the second length; in a first correlation operation, coherently correlating the first set of primary codes (e.g., from a first Galileo GNSSSV) with locally generated secondary codes corresponding to the first set of secondary codes, the first correlation operation extending over a first length of the received first set of GNSS signals, and the first correlation operation coherently correlating for each value in a set of possible code phase assumptions and a set of frequencies; in a second correlation operation, which is temporally subsequent to the first correlation, receiving a second set of GNSS signals (e.g., from a first Galileo GNSSSV received after the received first set of GNSS signals). The first correlation operation (SV) is coherently correlated with a locally generated secondary code corresponding to the first set of secondary codes. A second correlation operation extends over a first length of the received second set of GNSS signals and coherently correlates each value in the set of possible code phase assumptions and the set of frequencies. The results from the first correlation operation are combined with the results from the second correlation operation. One or more secondary code phases for the first set of secondary codes are determined from the combined results. The first and second correlation operations can be performed using a Discrete Fourier Transform or a hardware correlator. The first set of secondary codes may include four secondary codes for four components of a GNSS signal from the same GNSS satellite, and the first and second correlation operations are coherent over a first length for the first set of secondary codes. In one embodiment, the combination is incoherently integrated over the results from the first and second correlation operations. In one embodiment, the first correlation operation includes correlating a first set of GNSS signals received from a GNSS satellite with a locally generated primary code corresponding to the first set of secondary codes, and wherein the second correlation operation includes correlating a second set of received GNSS signals (from the GNSS satellite) with a locally generated primary code corresponding to the first set of secondary codes; the second set of received GNSS signals is received after the first set of received GNSS signals is received.
[0007] According to another embodiment, another method for capturing the secondary code phase of a GNSS signal may include the following operations: capturing the primary code phase of multiple GNSS signals from multiple GNSS satellites of at least one GNSS constellation at multiple primary code epochs, the capture generating a set of correlation values over a set of time intervals for the multiple primary code epochs of the multiple GNSS satellites, such that for each time interval, there exist multiple correlation values specifying the primary code phase captured from the multiple GNSS satellites; within each time interval of the set of time intervals, evaluating the multiple correlation values in one of the time intervals to determine a pattern of values derived from the multiple correlation values in that time interval, the pattern of values maximizing the sum of the multiple correlation values; determining an expected sequence of phase reversals of the secondary code associated with the captured primary code phase based on the multiple GNSS satellites for which the primary code phase has been captured, the expected sequence being determined over the set of time intervals; comparing each determined value pattern for one of the time intervals with the expected phase reversal sequence for the secondary code; and determining one or more code phases of the secondary code based on the comparison. A set of discrete Fourier transform operations may be used to capture the primary code phase. In one embodiment, the plurality of GNSS satellites originate from only one GNSS constellation, while in another embodiment, the plurality of GNSS SVs originate from multiple different constellations. In one embodiment, the comparison determines multiple code phases for the secondary code by considering relative delay information of GNSS signals received from different GNSS satellites, and the comparison concurrently determines multiple code phases for the secondary code together for all different GNSS satellites. The method can also determine whether the set of time intervals is large enough to provide a reliable determination of one or more code phases for the secondary code.
[0008] According to another embodiment, another method for capturing the secondary code phase of a GNSS signal may include the following operations: determining the secondary code phase of a GNSS signal received from a first GNSS satellite; determining the difference between the determined secondary code phase of the GNSS signal received from the first GNSS satellite and a predicted secondary code phase of a GNSS signal received from a second GNSS satellite different from the first GNSS satellite; and correcting the predicted secondary code phase based on the determined difference. The correction may include: (1) comparing the determined difference with a fraction of the code length in time at an epoch of the secondary code; and (2) (a) if the determined difference is less than the fraction, adding the code length in time to the determined difference and wrapping the result of the addition within a possible range of milliseconds of the code length; or (b) if the determined difference is greater than the fraction, subtracting the code length in time from the determined difference and wrapping the result of the subtraction within a possible range of milliseconds of the code length. In one embodiment, the method may further include: determining an additional secondary code phase of other GNSS signals received from other GNSS satellites; determining an additional difference between the determined additional secondary code phase and the predicted secondary code phase; and wherein correction is based on the determined difference and the additional difference. In one embodiment, the correction may be based on the highest likelihood difference between the determined difference and the additional difference.
[0009] According to another embodiment, another method for capturing the secondary code phase of a GNSS signal may include the following operations: receiving a GNSS signal from a GNSS satellite containing one or more primary codes and one or more secondary codes; generating a first correlation output from the received GNSS signal, from an acquisition correlation process operating on the received GNSS signal, the first correlation output including the secondary code correlation period of the one or more secondary codes over time; determining a set of one or more expected secondary code sequences of the one or more secondary codes over time; calculating a differential secondary code sequence based on the determined set of one or more expected secondary code sequences; calculating a set of differential correlation samples based on the first correlation output and the complex conjugate of each of the first correlation outputs; correlating the set of differential correlation samples with the differential secondary code sequence to provide a set of second correlation outputs; and determining one or more secondary code phases of the one or more secondary codes from the set of second correlation outputs. The differential secondary code sequence may be calculated based on the product of the expected secondary code sequence and a delayed version of the expected secondary code sequence. The delayed version may delay a small portion of one or more primary code epochs, or delay the duration of a bit in the secondary code. In one embodiment, the first correlation output provides complex data including real and imaginary data, and the complex conjugate is operated on the imaginary data. The correlation can be performed over multiple secondary code epochs and can be performed using one or more Discrete Fourier Transform (DFT) operations. In one embodiment, the set of second correlation outputs includes the value of the real part of the peak, and the secondary code phase is determined from the absolute value of the real part. In one embodiment, the correlation includes: cyclically cross-correlating the set of differentially correlated samples with the differential secondary code. In one embodiment, the correlation may include: computing the DFT of the set of differentially correlated samples to produce a first set of results; computing the DFT of the differential secondary code sequence to produce a second set of results; multiplying the first set of results by the complex conjugate of the second set of results to produce a first product; and computing the inverse DFT of the first product. In one embodiment, the method may further include: correlating a set of differential correlation outputs with a further delayed differential secondary code based on a determined set of one or more expected secondary code sequences to provide a third set of correlation outputs, which are used to examine the second set of correlation outputs.
[0010] On the other hand, it involves synthesizing a set of punctual correlation outputs. In one embodiment, these synthesized punctual correlation outputs can be used to determine an error signal for a discriminator to adjust a carrier phase-locked loop to lock onto the carrier phase of a GNSS signal being tracked during the tracking mode of a GNSS receiver. Embodiments of this aspect may include: generating a sample clock with a sample clock frequency; determining a set of correlation outputs, including a set of early correlation outputs 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. This set of punctual correlation outputs can be synthesized in the GNSS receiver during tracking operation mode, after successful acquisition of the GNSS signal (by determining the primary and secondary code phases of the GNSS signal). In one embodiment, no local punctual code is generated in the GNSS receiver during tracking mode, and no set of punctual correlation outputs is created in the correlator of the GNSS receiver. In one embodiment, a synthesized set of instantaneous correlation outputs can be used to estimate signal power to normalize the discriminator of the delay-locked loop. In one embodiment, the time interval between samples of successive advance and lag correlation outputs for the GNSS signal is less than the single-sample clock interval of a chip in the GNSS signal, and the sample clock frequency can be less than three times the L5 chip rate of 10.23 MHz. In one embodiment, this interval is a narrowed code delay that reduces multipath error while maintaining the sample frequency clock frequency at less than four times the L5 chip rate of 10.23 MHz. In one embodiment, the set of advance correlation outputs is a set of very early correlation outputs, and wherein, if the GNSS signal is strong, the synthesized set of instantaneous correlation outputs is synthesized by multiplying the set of very early correlation outputs by a factor greater than 1. In one embodiment, synthesis includes calculating a scaling factor multiplied by the sum of the lead and lag correlation outputs; for each synthesized instant correlation output, a scaling factor can be calculated to produce a synthesized instant correlation output having the same magnitude as the true instant correlation output when the lead and lag correlation outputs are balanced.In one embodiment, the set of advance-related outputs includes a set of super-advance-related outputs and advance-related outputs, while the set of lag-related outputs includes a set of super-lag-related outputs and lag-related outputs, wherein synthesis includes: for each synthesized instantaneous related output, averaging the super-advance-related outputs, advance-related outputs, lag-related outputs, and super-lag-related outputs. In another embodiment, the set of advance-related outputs includes a set of super-advance-related outputs and advance-related outputs, and synthesis includes: for each synthesized instantaneous related output, averaging the super-advance-related outputs and advance-related outputs.
[0011] In one embodiment, the set of instantaneous correlation outputs is synthesized from an Altboc-formatted signal in the C channel of a GNSS signal, and the set of instantaneous correlation outputs uses known predetermined phase offsets between the correlations, which extend beyond the main peak of the Altboc correlation. There may be one or more secondary peaks outside the main peak, which have different phases from the main peak.
[0012] In one embodiment, the combined instantaneous correlation output can be used to adjust the carrier phase-locked loop (PLL), and the carrier phase used for the PLL is generated using a synthesized instantaneous correlation (averaged over multiple correlations) to produce a carrier phase estimate with reduced carrier multipath compared to multipath at the correlator between the early and late correlators. This averaging tends to favor earlier correlations to produce a carrier phase estimate with reduced carrier multipath compared to multipath at the correlator between the early and late correlators.
[0013] The aspects and embodiments described herein may include a non-transitory machine-readable medium that stores 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. The instructions may be stored in a non-transitory machine-readable medium, such as dynamic random access memory (DRAM) which is volatile memory, or non-volatile memory (such as flash memory) or other forms of memory. The aspects and embodiments described herein may also take the form of a GNSS receiver or data processing system built or programmed to perform these methods. For example, a data processing system may be built with hardware logic to perform these methods, or may be programmed with a computer program to perform these methods, and such a data processing system may be considered a system for processing GNSS signals or a GNSS receiver.
[0014] The foregoing description of the invention does not include an exhaustive list of all embodiments and aspects of this disclosure. All systems, media, and methods can be practiced from all suitable combinations of the various aspects and embodiments summarized above and those disclosed in the detailed description below. Attached Figure Description
[0015] This patent or application document contains at least one color drawing. Copies of this patent or patent application publication with the color drawing will be provided by the Patent Office upon request, at the cost of the necessary fees.
[0016] The invention is illustrated in the accompanying drawings by way of example rather than limitation, and similar reference numerals in the drawings indicate similar elements.
[0017] Figure 1 An example of a device (e.g., a smartphone) comprising a GNSS receiver according to one or more embodiments described herein is shown.
[0018] Figure 2 This is a flowchart illustrating a method for capturing the secondary code phase of a GNSS signal according to one embodiment.
[0019] Figure 3 This is a flowchart illustrating another method for capturing the secondary code phase of a GNSS signal according to another embodiment.
[0020] Figure 4 This is a flowchart illustrating another method for capturing the secondary code phase of a GNSS signal according to another embodiment.
[0021] Figure 5 This is a flowchart illustrating another method for capturing the secondary code phase of a GNSS signal according to another embodiment.
[0022] Figure 6 This is a flowchart illustrating another method for capturing the secondary code phase of a GNSS signal according to another embodiment.
[0023] Figure 7 This is a flowchart illustrating a method for synthesizing a set of instantaneous correlated outputs in a GNSS receiver (e.g., during tracking mode) according to one embodiment.
[0024] Figures 8A to 8BBB It is the diagram mentioned in the appendix.
[0025] Figure 9 It is shown Figure 6 A flowchart of a more detailed method of the embodiment shown is provided.
[0026] Figure 10A This is a flowchart illustrating a general example of a method for capturing the secondary code phase using a combination of methods described herein.
[0027] Figure 10B This is a flowchart illustrating a more detailed method for capturing the secondary code phase using a combination of the methods described herein. Detailed Implementation
[0028] Various embodiments and aspects will be described with reference to the details discussed below, and the accompanying drawings will illustrate various embodiments. The following description and drawings are illustrative and should not be construed as limiting. Numerous specific details are described to provide a thorough understanding of the various embodiments. However, in some cases, well-known or conventional details have not been described in order to provide a concise discussion of the embodiments.
[0029] In this specification, references to "an embodiment" or "an embodiment" mean that a particular feature, structure, or characteristic described in connection with that embodiment may be included in at least one embodiment. The phrase "in an embodiment" appearing throughout the specification does not necessarily refer to the same embodiment. The processes depicted in the figures below are performed by processing logic including hardware (e.g., circuit systems, dedicated logic, etc.), software, or a combination of both. Although these processes are described below according to some sequential operations, it should be understood that some of the described operations may be performed in a different order. Furthermore, some operations may be performed in parallel rather than sequentially.
[0030] This disclosure describes various embodiments of GNSS (Global Navigation Satellite System) methods, apparatuses, systems, and nontransitory machine-readable media, such as methods used in a GNSS receiver, GNSS receivers, components within such receivers, and nontransitory machine-readable media storing executable computer program instructions that, when executed in one or more processing systems within the GNSS receiver, can perform one or more of the methods described in this disclosure. This specification provides examples of various embodiments that can be combined in various ways as described below; for example, a method for capturing the secondary code of a GNSS signal can be combined with another method for capturing the secondary code of a GNSS signal. For example, one such method can be used for strong GNSS signals, while another such method can be used for weak GNSS signals. Therefore, embodiments are not mutually exclusive and can be combined. This description provides non-limiting examples and should not be construed as claiming all features described in all possible embodiments. All systems and methods can be practiced through all suitable combinations of the aspects and embodiments disclosed in the following description. It is apparent that various modifications can be made to these aspects and embodiments without departing from the broader spirit and scope set forth in the following claims and the exemplary embodiments enumerated prior to the claims. Therefore, this specification is to be considered illustrative rather than restrictive.
[0031] The embodiments described herein may utilize one or more GNSS receiver architectures (or components, methods, or portions thereof) as described in U.S. Provisional Patent Application No. 62 / 915,510 (Attorney General's File No. 107505.P001Z), filed October 15, 2019, by Paul Conflitti et al., which is incorporated herein by reference. Additionally, the embodiments described herein may utilize one or more GNSS receiver architectures (or components, methods, or portions thereof) as described in U.S. Patent Application No. 17 / 068,659 (Attorney General's File No. 107505.P001), filed October 12, 2020, by Paul Conflitti et al., which is incorporated herein by reference.
[0032] Figure 1A general example of device 51 is shown, which includes a GNSS receiver that can be used or implemented using 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 transceivers, etc.). In one embodiment, device 51 is part of a smartphone, tablet, or laptop computer, or a vehicle (e.g., a car), or a wearable device or accessory (e.g., a fitness watch, smartwatch, or head-mounted display, etc.). In an alternative embodiment, device 51 is a simple GNSS receiver that does not include transceiver 75. The GNSS receiving elements in device 51 include a GNSS antenna 53, an L5 GNSS radio frequency (RF) front-end 55, an analog-to-digital (A / D) converter 57, a baseband digital memory 59, a frequency-locked loop (FLL, which may be implemented as a phase-locked loop), and a GNSS processing system 63. The GNSS antenna 53 may be a conventional GNSS antenna or a GNSS antenna tuned to the L5 GNSS band. The GNSS signal received from antenna 53 can be amplified and filtered in an L5 GNSS RF front-end 55, which may include at least a first RF filter tuned to a frequency in the L5 wideband only, and a low-noise amplifier. In another embodiment, the RF front-end may be a conventional GNSS RF front-end. U.S. Patent Application No. 17 / 068,659, filed October 12, 2020, provides an example of an RF front-end that can be used as RF front-end 55. The processed RF GNSS signal is output from RF front-end 55 and provided as input to an A / D converter 57 (which may be a conventional A / D converter for GNSS signals). The A / D converter 57 digitizes the received GNSS signal and stores it in a baseband digital memory 59; the digitized GNSS signal in memory 59 is then processed by a GNSS processing system 63. In one embodiment, the digitized GNSS signal is only an L5 GNSS signal (no L1 GPS signal and no L1 GNSS signal). In one embodiment, the GNSS receiver in device 51 does not receive and does not capture the L1 GNSS signal. In another embodiment, the GNSS receiver in device 51 does not use the L1 GNSS signal to help capture the secondary code in the L5 GNSS signal.
[0033] Figure 1The GNSS processing system 63 may include an acquisition engine (AE) 65, a secondary code processing system 67, a tracking engine 69, and a position solving engine 71. The acquisition engine 65 may be the same as that described in U.S. Application No. 17 / 068,659, filed October 12, 2020. This acquisition engine 65 can acquire the primary code from GNSS signals from multiple L5 GNSS SVs (such as those from the Galileo E5 constellation of GNSS satellites; or the L5 GPS constellation of GNSS satellites; or the GLONASS K2 constellation of GNSS satellites; or the QZSS constellation of GNSS satellites; or the Beidou B2 constellation of GNSS satellites). The acquisition engine 65 and the tracking engine 69 may use a frequency-locked loop (FLL) 61 to maintain lock on the carrier phase of the GNSS signal, as is known in the art. The methods described herein also include methods using FLL on synthesized instantaneous correlation outputs. The tracking engine 69 can track the captured GNSS signal using techniques known in the art, and the position solving engine 69 can be a conventional position solving engine that uses techniques known in the art to calculate the position solution based on pseudorange and GNSS SV ephemeris data from the tracking engine 69 and other data available to the position solving engine 69. The secondary code acquisition processing system 67 can use the methods described herein (see, for example...) Figure 2-6 The secondary code acquisition processing system 67 acquires secondary code phases from L5 GNSS signals using one or more of the following methods (typically after the primary code phase is 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 in programmable logic (such as a digital processing system executing one or more computer programs), or in a combination of hardware logic and circuitry and programmable logic. In one embodiment, the secondary code acquisition processing system 67 acquires these secondary code phases of L5 GNSS signals without using L1 GNSS signals to acquire the secondary code phases.
[0034] Figure 1The device 51 also includes a device processing system 73, which may include most or all of the components found in a smartphone, including an application processing system with DRAM and flash memory, and a collection of sensors (such as accelerometers, compasses, gyroscopes, cameras, proximity sensors, etc.). The device processing system 73 may 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 phone network. The cellular transceiver 75 may also include other wireless transceivers, such as transceivers for WiFi networks, Bluetooth, etc. The transceiver 75 may be used to provide auxiliary data or location auxiliary data 79 to a GNSS receiver (e.g., Doppler data of an estimated GNSS SV within the GNSS receiver's field of view, based on the approximate location of the GNSS receiver, SV ephemeris data, etc.); the use of such location auxiliary data is known in the art, including numerous U.S. patents granted to SnapTrack, Inc., California.
[0035] In the methods described below, Figure 1 The secondary code acquisition processing system 67 can acquire the code phase of a secondary code of an L5 GNSS signal when the time uncertainty exceeds 0.5 milliseconds; for example, in one embodiment, the estimation error of the current time may exceed 1 millisecond before acquiring the code phase of one or more secondary codes of an L5 GNSS signal. This verifies that the uncertainty or estimation error for the current time is less than 0.5 milliseconds when a set of code phases acquired from the different methods described below provides consistent, similar values (e.g., their code phase measurements are substantially the same). In one embodiment described below, the secondary code acquisition processing system 67 can acquire the code phase of a secondary code by using multiple GNSS signal components from a single GNSS satellite's L5 wideband GNSS signal (e.g., E5a and E5b GNSS signals from the same SV). In another embodiment described below, the secondary code acquisition processing system 67 can acquire the code phase of a secondary code using multiple GNSS signals from multiple GNSS SVs.
[0036] The GNSS receiver in device 51 can use detected phase changes between successive primary code epochs to generate a compensated frequency used in FLL 61 to reduce errors in estimating the frequency of the received L5 GNSS signal. For example, GNSS processing system 63 can detect phase changes between successive primary code epochs from the in-phase and quadrature results of the correlation outputs in the GNSS processing system; GNSS processing system 63 can average the phase changes detected from the in-phase and quadrature results of the correlation outputs to generate an estimated frequency error. GNSS processing system 63 can provide a compensated frequency to one or more discriminators in FLL 61 based on this estimated frequency error, and FLL 61 can be configured to reduce errors in estimating the frequency of the received L5 GNSS signal based on this estimated frequency error. In one embodiment, FLL 61 may include a first discriminator for a first sideband (e.g., E5a signal) of an L5 GNSS signal and a second discriminator for a second sideband (e.g., E5b signal) of an L5 GNSS signal, wherein the estimated frequency error is based on a filtered estimate of the average of phase changes detected from in-phase and quadrature results of the correlated output. In one embodiment, averaging includes averaging phase changes detected on two, three, or four GNSS signal components from a single GNSS satellite, and 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 FLL 61.
[0037] Now refer to Figure 2 A method is described for capturing the secondary code phase of a secondary code in an L5 GNSS signal. Figure 2 The method shown can create data structures (such as histograms) that can be used to determine the signal generated by a GNSS receiver (such as...). Figure 1 The secondary code phase of the secondary code in the L5 GNSS signal received by the GNSS receiver shown. Figure 2 In operation 101, the GNSS receiver can capture one or more master codes of the received L5 GNSS signal; for example, in Figure 1In the case of the GNSS receiver shown, AE 65 can acquire these master codes; master code acquisition includes identifying the GNSS SV that transmitted the master code and determining the code phase of the received master code. Then, in operation 103, the GNSS receiver can determine the phase change value of each captured GNSS signal for each transition between received master code epochs and generate a set of phase change values sequentially according to the time represented by a sequence of time bins (each time bin represents a portion of time in the time series, and each time bin contains at least one phase change value). For the secondary codes associated with the master code from the GNSS satellite that transmitted the master code, each phase change value (e.g., 1 or 0) represents a judgment on whether an angular phase change (e.g., a quantization change from 0 degrees to 180 degrees or from 180 degrees to 0 degrees) occurred in a particular time bin. This judgment can be represented by a binary value indicating whether a 180-degree angular phase change occurred in each time bin, 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 a data structure (such as a histogram) in operation 105 (visualized by counting phase change events at 180-degree angles along the x-axis and y-axis over a time interval). This set of phase change values stored in the data structure can then be compared in operation 107 with a set of expected phase change values derived from the secondary codes associated with the primary code captured from the GNSS signal from the GNSS SV (from operation 101). Each primary code from the identified GNSS SV (identified by capturing the primary code phase of the SV) will have an associated secondary code with a known angular phase change relative to the primary code. The comparison in operation 107 allows the GNSS receiver to determine the secondary code phase of each GNSS signal processed using operations 101, 103, 105, and 107 in operation 109. For example, the secondary code phase can be used for E5a and E5b signals from the same GNSS SV. Figure 2 The method shown is used to determine the secondary code phase of an E5a GNSS signal and an E5b GNSS signal from the same GNSS SV. In one embodiment, the method can cross-check the results of the secondary code phases of these different channels of an L5 GNSS signal from the same GNSS SV. After operation 109, the GNSS receiver has acquired the primary code phase and secondary code phase of the GNSS signal, and can continue to track the GNSS signal in operation 111 using narrowband tracking to derive the pseudorange using techniques known in the art. Then, at operation 113, the GNSS receiver can determine one or more location solutions based on the tracked GNSS signal.
[0038] exist Figure 2In one embodiment of the method shown, a set of expected phase change values is derived from the secondary code by transforming the secondary code into a series of phase change values across epochs in the secondary code over a set of index values in the data structure. Figure 2 In one embodiment of the method shown, determining the phase change value includes calculating the cosine of the value at each transition between two consecutive primary code epochs. Figure 2 In one embodiment of the method shown, the data structure is a set of histograms, with at least one histogram for each channel of the L5 GNSS signal from a particular GNSS satellite, and the stored set of phase change values includes phase change values for two orthogonal data components and pilot signal components in the same frequency band of the same satellite, wherein the comparison uses the phase change values from these data components and pilot components to derive a comparison output for determining the phase of one or more secondary codes. Figure 2 In one embodiment of the method, the GNSS receiver can determine whether the phase change value is erroneous due to a frequency error, and if the phase change value is erroneous, then reset the data structure. Figure 2 In one embodiment of the method shown, the method can estimate one or more frequencies of one or more master codes of a received L5 GNSS signal, and the method can use code phase trajectories across a set of correlators to detect frequency errors across that set of correlators, and can reset data in a data structure in response to the detected frequency errors. Figure 2 In one embodiment of the method shown, the GNSS receiver can predict the code Doppler slope from a discriminator track over time, the discriminator track being the output of the discriminator in the code tracking loop; the GNSS receiver can then estimate the frequency error based on the predicted code Doppler slope, and then detect the secondary code phase at the frequency offset determined according to the estimated frequency error, based on the phase change value associated with the primary code. Figure 2 In one embodiment of the method, the GNSS receiver can terminate the method if the time uncertainty is less than 0.5 milliseconds. In one embodiment, if the secondary code phases obtained from multiple (e.g., 2 or 3) secondary code phase methods (described herein) are substantially consistent and in agreement, then it can be concluded that the time uncertainty is less than 0.5 milliseconds (and thus the current time is known with an error of less than 0.5 milliseconds).
[0039] exist Figure 2In one embodiment of the method, the GNSS receiver can perform two sets of correlation operations on the primary code (at different frequency offsets) to determine two sets of phase change values at different frequency offsets. For example, the GNSS receiver can perform a first set of correlation operations on the primary code at a first frequency offset from the center frequency to determine the phase change value at the first frequency offset, and also perform a second set of correlation operations on the secondary code at a second frequency offset from the center frequency to determine the phase change value at the second frequency offset. This allows the GNSS receiver to determine the impact of frequency variations caused by frequency errors. The GNSS receiver can also apply confidence values to the phase change values and store these confidence values in a data structure; for example, for each phase change value in at least a subset of the phase change values in the data structure, the GNSS receiver can determine a confidence value based on the signal-to-noise ratio associated with each phase change value and store that confidence value in the data structure. Decreasing the confidence value over time can indicate an increase in frequency error (or other problems), which can instruct the GNSS receiver to reset the data structure (e.g., erase or wipe all data in the data structure to begin collecting new phase change values). The appendix provides information on what can be used. Figure 2 For more details on embodiments of the method, see, for example, the section under the heading including the phrase “difference histogram method”.
[0040] The following will refer to Figure 3 This paper describes an alternative method for capturing the secondary code phase in L5 GNSS signals. Figure 3 The method shown can use several coherent correlation operations, using the longest secondary code length as the time interval for coherent correlation operations on all secondary codes (or subsets of secondary codes). In some L5 GNSS systems, different secondary codes from the same GNSS SV have different lengths; for example, in the Galileo E5 constellation, secondary codes associated with different primary codes from the same GNSS SV have different lengths, and... Figure 3 This feature is used in the methods described. Figure 3In operation 151, the GNSS receiver receives a first set of GNSS signals and a second set of GNSS signals, including a first level code having a first length (e.g., the first level code having the longest length among all codes from the same GNSS SV) and a second level code having a second length less than the first length. In operation 153, the GNSS receiver performs a first coherent correlation operation on the received first set of GNSS signals (e.g., from a first Galileo GNSS SV) over a time period of the first length, on a set of possible code phase assumptions and a set of frequencies for the first and second level codes; in one embodiment, when coherently correlated with the received first set of GNSS signals, the GNSS receiver locally generates the first and second level codes at each value of the set of possible code phase assumptions and frequencies in operation 153. In one embodiment, the first coherent correlation operation (in operation 153) can be performed on all four secondary code components of the GNSS signal from a GNSS SV (such as a Galileo GNSS SV) (therefore all four secondary code components are correlated in the first coherent correlation operation). At operation 155, the GNSS receiver again performs a second coherent correlation operation on the received second set of GNSS signals (e.g., from the first Galileo GNSS SV) over a first length of time period, on a set of possible code phase assumptions and a set of frequencies for the first and second level codes (time-following the first correlation operation); in one embodiment, when coherently correlated with the received second set of GNSS signals, the GNSS receiver locally generates the first and second level codes at each value of the set of possible code phase assumptions and frequencies in operation 155. In one embodiment, the received second set of GNSS signals is received after the first set of GNSS signals is received. In one embodiment, the second coherent correlation operation (in operation 155) can be performed on all four secondary code components of the GNSS signal from the GNSS SV (such as the Galileo GNSS SV) (therefore 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 in operation 159, determine one or more secondary code phases for one or more secondary codes based on the combined results; for example, determining the code phase of the longest secondary code in operation 159. The combination in operation 157 can be an incoherent integration in one embodiment, and the integration results are sorted within each frequency to select the highest amplitude value among the combined results. In one embodiment, the first and second correlation operations can be performed in the GNSS receiver using a discrete Fourier transform; in another embodiment, the first and second correlation operations can be performed in the GNSS receiver using a hardware correlator.In one embodiment, for all four secondary codes in the received first set of GNSS signals, the first correlation operation is coherent over a first length, and for all four secondary codes in the received second set of GNSS signals, the second correlation operation is coherent over the first length. In both correlation operations, all four secondary codes are correlated. In one embodiment, the first correlation operation includes correlating the received first set of GNSS signals with locally generated primary codes corresponding to the first set of secondary codes, and the second correlation operation includes correlating the received second set of GNSS signals with locally generated primary codes corresponding to the first set of secondary codes. Figure 3 In the context of this approach, it will be understood that 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 its corresponding reference sample and summing the results. In one embodiment, the set of frequencies is divided by a minimum step size, and further, improved frequency estimates are determined for one or more channels. Regarding... Figure 3 Further details of the method are provided, among other things, in the appendix under the heading “Coherent Secondary Code Method”.
[0041] Now refer to Figure 4 Another method is described for capturing the secondary code phase of a secondary code in an L5 GNSS signal. Figure 4 The method shown can derive one or more secondary code phases using multiple signals from several GNSS SVs from the same or different GNSS constellations. Figure 4In operation 201, the GNSS receiver can acquire the primary code phase of multiple GNSS signals from multiple GNSS satellites of at least one GNSS constellation at multiple primary code epochs. This acquisition generates a set of correlation values over a set of time intervals for the multiple primary code epochs of the multiple GNSS satellites, such that for each time interval, there are multiple correlation values specifying the primary code phase acquired from the multiple GNSS satellites. In the context of this specification, code phase represents the time difference between the start of a detected code sequence (e.g., the start of an epoch of a detected code sequence in a received GNSS signal) and the start of a predicted (or locally referenced) code sequence (e.g., the start of an epoch of a locally generated code sequence). Then, in operation 203, within each time interval of the set of time intervals, the GNSS receiver can evaluate the multiple correlation values in one of the time intervals to determine a pattern of values derived from the multiple correlation values in that time interval, which maximizes the sum of the multiple correlation values. In operation 205, the GNSS receiver can determine a predicted phase-reversal sequence of secondary codes associated with the acquired primary code phase based on multiple GNSS satellites for which primary code phase has been acquired, the predicted phase-reversal sequence being determined over that set of time intervals. In operation 207, the GNSS receiver can compare each determined value pattern for one of the time intervals with the predicted phase-reversal sequence for the secondary code. This comparison in operation 207 allows the GNSS receiver to determine one or more code phases of the secondary code in operation 209. In one embodiment, the comparison determines multiple code phases of the secondary code by taking into account relative delay information between GNSS signals received from different GNSS satellites, and the comparison concurrently determines multiple code phases of the secondary code together for all different GNSS satellites.
[0042] In one embodiment, Figure 4 The method described above can determine whether the set of intervals is large enough to provide a reliable determination of one or more code phases of the secondary code. In one embodiment, the primary code phase is captured using a discrete Fourier transform or a hardware correlator. Figure 4 The method shown allows the GNSS receiver to perform a tracking operation on at least one component of the received GNSS signal after determining the primary code phase and associated secondary code phase for one of the components of the received GNSS signal, and to determine one or more position solutions based on one or more outputs from the tracking operation. Regarding Figure 4 Further details of the method are provided, among other things, in the appendix under the heading “Methods for Relevant Integration Across SV Sets (ensemble)”.
[0043] Now refer to Figure 5Another method is described for capturing the secondary code phase of a secondary code in an L5 GNSS signal. Figure 5 The method shown can use data from secondary code phase measurements of the first-level code to adjust the correlation of the secondary code acquisition process for the second-level code (different from the first-level code). This method can be called a "transfer" method, and it can provide fast results (often faster than other secondary code phase acquisition methods described in this paper). Figure 5 In operation 251, the GNSS receiver determines the secondary code phase of the GNSS signal received from the first GNSS SV. Then, in operation 253, the GNSS receiver determines the difference between the determined secondary code phase of the GNSS signal received from the first GNSS satellite and the predicted secondary code phase of the GNSS signal received from a second GNSS satellite different from the first GNSS satellite. The GNSS receiver can then correct the predicted secondary code phase in operation 255 based on the difference determined in operation 253. For example, if the difference indicates that the predicted secondary code phase is premature, the correction can be made to adjust the predicted secondary code phase so that it is not premature. This allows the GNSS receiver to use strong signals (e.g., unobstructed signals) from some GNSS SVs to correct the predicted secondary code phase of other (e.g., weaker) GNSS signals from other GNSS SVs. The method in one embodiment may further include: determining an additional secondary code phase of other GNSS signals received from other GNSS satellites; determining an additional difference between the determined additional secondary code phase and a predicted secondary code phase; and correcting the predicted secondary code phase based on the determined difference and the additional difference. In one embodiment, the correction is based on the highest likelihood difference between the determined difference and the additional difference. In one embodiment, the correction may include: (1) comparing the determined difference with a fraction of the code length in time of the epoch of the secondary code, and (2) (a) if the determined difference is less than the fraction, then adding the code length in time to the determined difference and wrapping the result of the addition within a possible value of milliseconds of the code length, or (b) if the determined difference is greater than the fraction, then subtracting the code length in time from the determined difference and wrapping the result of the subtraction within a possible value of milliseconds of the code length. In one embodiment, the method may further include: erasing the secondary code from the GNSS signal received from the second GNSS satellite using the corrected secondary code phase for the second GNSS satellite to allow coherent integration of the primary code from the second GNSS satellite. use Figure 5The method described above allows a GNSS receiver to determine a position solution for the GNSS receiver from multiple GNSS satellites, including a first GNSS satellite but excluding a second GNSS satellite, before correcting the predicted secondary code phase. Regarding... Figure 5 Further details of the method are provided, among other things, in the appendix under the heading “Porting Method for Predicting Secondary Code Phase”.
[0044] Now refer to Figure 6 Another method is described for capturing the secondary code phase of a secondary code in an L5 GNSS signal. Figure 6 The method shown can be used to determine the secondary code phase using a method that can be called the coherent differential method. This method is further described in the appendix (see, for example, the section under the heading including the phrase "coherent differential method"). The advantage of this method is that it largely avoids the requirement to search for the carrier frequency when capturing the secondary code phase. Figure 6In operation 301, the GNSS receiver receives a GNSS signal from the GNSS SV containing one or more primary codes and one or more secondary codes. Then, in operation 303, the GNSS receiver uses the received GNSS signal to capture the primary pseudo-random code by determining the code phase between the received signal and the reference code, and generates a first set of correlation outputs, which includes a set of one or more secondary code correlation periods for the one or more secondary codes. This first set of correlation outputs is typically a sequence of data, with each element generated once per period of the primary pseudo-random code; specifically for the L5 band, the rate is once per millisecond. Each such output is typically further modulated by the secondary codes. To avoid confusion, in the following discussion, the additional set of correlation outputs refers to the set of outputs generated by cross-correlation operations between samples of data and locally generated secondary code data, where the output set contains a set of correlation values for different assumed sample delays (samples in 1-millisecond increments in the L5 example). Therefore, in an exemplary embodiment, if the secondary code length is 100, then the size of the second or third set of correlation outputs discussed below could be 100. The second or third correlation outputs are sometimes referred to as cross-correlation "functions" or "correlation functions". In operation 305, the GNSS receiver generates a set of one or more expected secondary code sequences locally over time based on the SV within the GNSS receiver's field of view. In operation 307, the GNSS receiver uses this set of expected secondary code sequences to compute a differential secondary code sequence based on this set of one or more expected secondary code sequences. At operation 309, the GNSS receiver computes a set of differential correlation samples based on a first correlation output and the complex conjugate of each of the first correlation outputs. Then, in operation 311, the GNSS receiver computes a correlation function based on this set of differential correlation samples and the differential secondary code sequence to provide a set of second correlation outputs. Using this set of second correlation outputs, the GNSS receiver determines one or more code phases of one or more secondary codes in operation 313. In one embodiment, the differential secondary code sequence is computed based on the product of an expected secondary code sequence (e.g., a sequence of expected phase changes in the expected secondary code from the GNSS receiver at the current time) and a delayed version of the expected secondary code sequence; this delayed version may delay a small fraction of one or more primary code epochs, or delay the duration of one or more bits in the secondary code. In one embodiment, differentially correlated samples are computed based on the product of the first correlated output and a delayed version of its complex conjugate. In one embodiment, the delay is set to correspond to the delay used in the differential secondary code sequence. For example, the delay of a sample in the differentially correlated sample set (e.g., a delay of 1 millisecond) corresponds to the delay of a sample in the secondary code sequence. In this way, when the phases are properly aligned, the new sample set and code sequence differentially constructed in this manner will have the same code phase sequence.This alignment is performed through a subsequent correlation process formed on the differentially correlated samples and the differential code phase sequence. In one embodiment, the first correlation output provides complex data including real and imaginary data, and the complex conjugate operates on the imaginary data. In one embodiment, the correlation in operation 311 is performed over multiple secondary code epochs and can be performed using one or more discrete Fourier transforms. In one embodiment, a set of second correlation outputs includes the values of the real parts of the peaks, and the secondary code phase is determined by the absolute value of the real parts. In one embodiment, the secondary code phase is determined based on the magnitude of the second correlation output. In one embodiment, the correlation in operation 311 is a cyclic cross-correlation between the set of differentially correlated samples and the differential secondary code sequence. In one embodiment, the correlation in operation 311 may include the following operations: calculating the discrete Fourier transform of the set of differentially correlated samples to produce a first set of results; calculating the discrete Fourier transform of the differential secondary code sequence to produce a second set of results; multiplying the first set of results by the complex conjugate of the second set of results to produce a first product; and calculating the inverse discrete Fourier transform of the first product.
[0045] In one embodiment, according to Figure 6 The method may include further correlation, wherein, based on the determined locally generated set of one or more expected secondary code sequences, a different set of differentially correlated samples are correlated with further delayed differential secondary codes to provide a third set of correlation outputs that can be used to examine the second set of correlation outputs. This different set of samples may be formed, for example, by utilizing different delays when forming the product of the first correlation output and its delayed version. 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, the second and third correlation outputs are coherently added, and the individual real and imaginary parts are examined to determine the secondary code phase, or the magnitude or square of the third correlation output is examined to determine the secondary code phase. Figure 8AAA An example of this operation is shown in the middle section (for Galileo SV code 1 secondary code 1). In another embodiment, the magnitudes of the second correlation output and the third correlation output are added together. Figure 8BBB The middle section illustrates an example of this operation. In yet another embodiment, the squares of the magnitudes of the second and third correlated outputs are added together. The rightmost section of these graphs also shows the results when the fourth and fifth correlated outputs are included. Note that the output SNR is improved by combining multiple outputs. The addition of magnitudes or squares (incoherent addition), rather than the coherent addition of components, reduces the losses that occur when large carrier frequency errors are present. Curve Figure 8AAAWe assume zero frequency error to illustrate the improvement when performing coherent combination under small frequency error conditions. For larger errors, coherent combination can provide less performance improvement or even degrade performance. This contrasts with incoherent combination, which is minimally affected by frequency error. However, coherent combination produces better performance when the frequency error is small. In these embodiments utilizing the combination of second and third correlation outputs, the third correlation output computation uses delays on the differential secondary code and differential correlation samples, these delays corresponding to each other and different from the delays used to form the second set of correlation outputs. For example, the second set of correlation outputs can use a one-sample-time delay to construct the differential samples and differential secondary code, while the third set of correlation outputs can use a two-sample-time delay. Figure 10B It shows the use of based Figure 6 The method shown uses examples of different delays. In other embodiments, additional delays can be employed to form additional sets of correlated outputs, which can be coherently or incoherently added together in a similar manner to those described above. By constructing these additional sets, the fidelity of the combined correlated outputs is improved both in terms of signal-to-noise ratio (SNR) and in terms of reducing so-called correlated sidelobes (which can mask the location of the maximum correlated peak and thus provide incorrect secondary phase determination results). A specific set of delays can be selected to minimize the resulting correlated sidelobes, and the choice of the number of delays in this set will primarily determine the improvement in SNR. For example, simulations show that for GalileoSV No. 1, if four delays are used, each ranging from 1 to 8 secondary code samples, the optimal delay choices to minimize the maximum sidelobes are 4, 5, 7, and 8, which produce a maximum sidelobe with a peak-to-weight ratio of 8 1 / 3 (18.4 dB), while if 1, 2, 3, and 4 are used, the maximum sidelobe with a peak-to-weight ratio will be 7.14 (17 dB).
[0046] For the Galileo SV code example 1, Figure 8AAA and 8BBB The cross-correlation function that appears periodically every 100 symbols is shown. This is because the reference code is repeated five times in this example. Therefore, the synchronization of the secondary code sequence can be determined by examining only the first 100 outputs of such a function. In practice (in this example), instead of performing a cross-correlation of 5 frames with the reference that repeats against the reference, a single period of the reference can be sequentially cross-correlated with blocks of 100 differentially constructed data samples, and then the results of these blocks can be coherently summed to obtain the result. Figure 8AAA and Figure 8BBB The first 100 outputs of the function yield the same result. This minimizes computation without incurring any loss. This simplification is obviously applicable to processing any number of sample blocks.
[0047] To make it clearer, we provide a simplified example of the exemplary processing procedure here, using the method described above with a 1-millisecond delay suitable for L5 secondary code signals. We also assume that the boundary of the primary correlation output coincides with the boundary of the secondary code (in practice it may deviate by a small fraction of the chip). Assume the primary code correlation output is represented as c(t), t = 0, d, ..., (N-1) × d, where N is any number required for sensitivity, and d is 1 millisecond. Each output sample is inverted by a secondary code, such as s(mp), m = 0, 1, 2, ... where p represents the unknown timing of the secondary code to be determined. The differential correlation samples are then constructed as b(t) = c(t) × c*(t-1), where the asterisk denotes complex conjugation. This contains the modified secondary sequence, which we call the differential secondary code, s(mp) × s(m-1-p) multiplied by a constant phase angle exp(j2f). e d), where f e Let be the frequency error and d be 1 millisecond, where p represents the unknown code phase. This is at baseband without an additional carrier. The process then constructs a cross-correlation function, or more precisely, a cyclic cross-correlation function, from the differentially correlated sample b and the differential secondary code c(t)×c(t-1). This is best done if the data length N is equal to or a multiple of the sequence length c. This cross-correlation at all offsets can be performed most quickly, almost instantaneously, using FFT (Fast Fourier Transform). Peaks found during the correlation process indicate the phase of the secondary code within the primary code. As discussed above, the delay d can be chosen for different values (e.g., 1, 2, 3, 4, ...), resulting in different, almost independent output sequences that can be combined in various ways (e.g., coherent, incoherent, false alarm checks, etc.) to improve sensitivity. By combining multiple such output sequences with different delays, this sensitivity improvement overcomes the signal-to-noise ratio loss associated with the nonlinear construction of the differentially correlated samples. It should be noted that the differential correlation samples are located in the baseband and there is no carrier. Therefore, this method avoids the need to first determine the carrier frequency (which is a difficult process if there is a large carrier frequency uncertainty and high sensitivity is desired).
[0048] Another aspect of this disclosure relates to generating synthesized instantaneous correlation outputs, which can be used to generate error signals for a discriminator in a phase-locked loop (PLL) used in a GNSS receiver to track and lock onto the carrier phase of a GNSS signal received at the receiver. In one embodiment, during tracking mode, local instantaneous codes are not generated for the correlation in the GNSS receiver, and a set of instantaneous correlation outputs is not created or used in the correlator in the GNSS receiver; more precisely, according to this aspect, the GNSS receiver synthesizes synthesized instantaneous correlation outputs based on advance or lag (or advance and lag) correlation outputs from a hardware correlator or a discrete Fourier transform. Figure 7 Examples of methods according to this embodiment are shown, and examples of this aspect are also provided in the appendix (e.g., in the section titled "Tracking"). Figure 7 In operation 351, the GNSS receiver generates a sample clock with a sample clock frequency. In operation 353, the GNSS receiver generates a set of correlation outputs, including a set of advance correlation outputs at the sample clock frequency and / or a set of lag correlation outputs at the sample clock frequency. Then, in operation 355, the GNSS receiver can synthesize a set of instantaneous correlation outputs from at least one of: (a) the set of advance correlation outputs, or (b) the set of lag correlation outputs. Then, during tracking mode in the GNSS receiver, the synthesized set of instantaneous correlation outputs can be used to control or adjust control loops in the GNSS receiver (such as phase-locked loops attempting to lock onto the carrier phase of the GNSS signal). For example, as shown in operation 357, the synthesized instantaneous correlation outputs can be used to generate an error signal for a discriminator to adjust the carrier phase-locked loop to lock onto the carrier phase of the GNSS signal. As is known in the art, a discriminator is a component in a phase-locked loop (PLL) that adjusts the output of the PLL to keep it locked to a defined phase of the received signal, and the discriminator uses the error signal to adjust the output of the PLL.
[0049] In one embodiment, the synthesized set of instantaneous correlation outputs can be used to estimate signal power to normalize the discriminator of the delay-locked loop. In one embodiment, the time interval between samples of the consecutive advance and lag correlation outputs of the GNSS signal is less than the single-sample clock interval of a chip in the GNSS signal, and the sample clock frequency can be less than three times the L5 chip rate of 10.23 MHz. In one embodiment, this interval is a narrowed code delay, which reduces multipath error while maintaining the sample frequency clock frequency at less than four times the L5 chip rate of 10.23 MHz. In one embodiment, the set of advance correlation outputs is a set of super-advance correlation outputs, and wherein, if the GNSS signal is strong, the synthesized instantaneous correlation outputs are synthesized by multiplying the set of super-advance correlation outputs by a factor greater than 1. In one embodiment, the synthesis includes calculating a scaling factor multiplied by the sum of the advance and lag correlation outputs; for each synthesized instantaneous correlation output, a scaling factor can be calculated to produce a synthesized instantaneous correlation output having the same amplitude as the true instantaneous correlation output when the advance and lag correlation outputs are balanced. In one embodiment, the set of advance-related outputs includes super-advance-related outputs and advance-related outputs, while the set of lag-related outputs includes super-lag-related outputs and lag-related outputs, and wherein the synthesis includes: for each synthesized instantaneous related output, averaging the super-advance-related outputs, advance-related outputs, lag-related outputs, and super-lag-related outputs. In another embodiment, the set of advance-related outputs includes a set of super-advance-related outputs and advance-related outputs, and the synthesis includes: for each synthesized instantaneous related output, averaging the super-advance-related outputs and advance-related outputs.
[0050] In one embodiment, an Altboc-formatted signal in a C-channel of a GNSS signal is synthesized into a set of instantaneous correlation outputs. This set of instantaneous correlation outputs uses known, predetermined phase offsets between the correlations, which extend beyond the main peak of the Altboc correlation. There may be one or more secondary peaks outside the main peak, which have different phases from the main peak.
[0051] In one embodiment, a synthesized set of instantaneous correlation outputs can be used to adjust a carrier phase-locked loop (PLL), and the carrier phase used for the PLL is generated from error signals from synthesized instantaneous correlations averaged over multiple correlations, to produce a carrier phase estimate with reduced carrier multipath compared to multipath at the correlator between the lead and lag correlators. This averaging tends to favor earlier correlations to produce a carrier phase estimate with less carrier multipath than at the correlator between the lead and lag correlators.
[0052] Another aspect of secondary code phase determination
[0053] As mentioned above, different methods for determining the secondary code phase can be used concurrently or sequentially. This aspect will now be described further.
[0054] Two sets of methods for determining the phase of the secondary code have been proposed. The first set, known as the single SV method, is the histogram method (see example...). Figure 2 ) and coherent FFT methods (see, for example) Figure 3 ) and differential coherence methods (see, for example) Figure 6 In the first group of methods, each SV is processed independently. The coherent FFT can be summarized as an offset N, where N = 0, 1, 2, 3, 4 up to M-1, where M is the number of points in the secondary code sequence. The second group of methods uses the porting method (see example...). Figure 5 ) and cross-SV method (see example) Figure 4 These methods combine information across satellites (using multiple SVs) and, in one embodiment, rely on additional information related to receiver location and time. Tags used in these methods (e.g., for...) Figure 2 The "histogram" of the method is used as a shorthand for the method described herein and is not intended to limit how the method is used or how the claims are interpreted (e.g., for...). Figure 2 The claims for the method do not require a histogram unless the claim explicitly includes the word "histogram".
[0055] The advantage of the first group is that the secondary code phase of each satellite is obtained independently of other satellites, based solely on its input correlation sequence. The final atomic combination of code phase, Doppler, secondary code, and time stamp provides fine-grained timing information, allowing the secondary code phase to propagate forward in time based on anticipated code phase changes based on carrier Doppler. This propagation provides the code phase slope through a scaling factor associated with the carrier period and the chip. This propagation can be used in embodiments where secondary code phase measurements are interrupted after initial secondary code phase acquisition. This measurement can propagate forward in time until the uncertainty of the propagated code phase grows to more than half a millisecond (i.e., the length of one epoch in the secondary code sequence). Moreover, satellite tracking means that the secondary code can be continuously re-anchored, even if the code phase circumvents the millisecond boundary and is either one millisecond higher or lower, depending on the direction of the code phase. A decreasing code phase crossing 0 means the secondary code phase decreases by one, while an increasing code phase crossing the end of a millisecond means the secondary code phase increases by one.
[0056] Secondary code phase data determined by a single SV (e.g., according to Figure 2 , 3(or one of the methods in 6) also provides sub-millisecond and super-millisecond timing information: the code phase provides fine timing information of less than one millisecond, and the secondary code phase provides coarse timing information of more than one millisecond up to the length of the pilot secondary sequence.
[0057] The secondary code phase determination method for multiple SV groups is the cross-SV method (see, for example, see...). Figure 4 ) and transplantation methods (e.g., see Figure 5 These methods combine relevant time series information from multiple satellites, and they also rely on additional information: receiver position and time estimates, and satellite position estimates at the estimated receiver time. The transplantation method uses the secondary code phase determined by a single SV from one or more satellites through receiver position and time estimates to predict the secondary code phase of satellites whose timing information has not yet been determined. It can do this even when the receiver time uncertainty is much greater than the time information obtained from the single SV method. This is because it only needs to identify the modulo pilot length portion of the receiver time error. Time errors greater than the pilot length have only a second-order effect on the predicted secondary code phase.
[0058] The cross-SV method begins with the same position and timing information as the porting method, but does not require a first single SV estimate. The goal of the cross-SV method is to combine the relevant time series of multiple satellites to improve the overall detection probability relative to the probability of a single SV. It achieves this by associating the expected secondary code phase of a set of satellites based on receiver time and position estimates with the relevant time series, in a way that produces a higher SNR than that achieved using a single SV.
[0059] The predicted secondary code phase (scStart) for each satellite, based on a given receiver in-cycle time (tow) and position, is the integer part of the remainder when the satellite's in-cycle time at the transmission time (in milliseconds) is divided by the length of the pilot secondary code ("length" in the following equation). The formula is summarized as follows:
[0060] Note: Due to the duality of solving at either the transmission or reception time, this problem can also be equivalently posed at the reception time. Here, we choose the transmission time.
[0061] The transmission cycle time (towT) is the receiver cycle time minus the propagation time from the satellite to the receiver:
[0062] towT (seconds) = Receiver weektime at the time of reception – pseudorange in seconds
[0063] The pseudorange in seconds = pseudorange in meters / speed of light
[0064] Satellite weektime, in milliseconds:
[0065] towTInt = integer(towT * 1000)
[0066] The predicted secondary code phase is the remainder when divided by the pilot length:
[0067] scPhase = remainder(towTInt / pilot code length)
[0068] This indicates the phase of the secondary code at the receiver cycle during reception. The phase at the next epoch will increment by one secondary code chip. The next start of the sequence, scStart, appears in modulo-time:
[0069] scStart=length–(scPhase+1)
[0070] Define towTRemainder as the sub-millisecond portion of the millisecond cycle time (towT) during transmission:
[0071] towTRemainder=(towT*1000)–towTInt
[0072] Where towTRemainder is a millisecond decimal from 0 to 1 millisecond.
[0073] The pseudorange in meters based on receiver time and location is:
[0074] Pseudorange = Geometric distance + Satellite clock offset - Receiver clock offset + Error in space
[0075] The pseudorange estimate with zero receiver clock bias is defined as:
[0076] pseudorange0 = Geometric distance + Satellite clock deviation + Error in space
[0077] When the transfer method is performed, all satellites with a single SV secondary code phase estimate also have a primary code phase estimate. Assuming the receiver position error is less than + / - 1 / 2 milliseconds (or approximately 150 kilometers), the receiver clock can be estimated as the residual of the measured code phase minus the submillisecond portion of the pseudorange when the receiver clock is zero.
[0078] Receiver clock offset (i) = Measured code phase (i) – residual
[0079] (pseudorange0(i) / 299792.458m)
[0080] Each deviation (i) estimate is wrapped around + / - 0.5 * speed of light * 0.001 meters.
[0081] If more than one satellite is available, then the offset is the average of all offsets. Now that the receiver offset estimate is available, the measured and predicted secondary code phases can be compared to understand the receiver's millisecond time error. Offset(i) is defined as a portion of the receiver time error, which is the modulus of the pilot secondary code sequence length.
[0082] Offset(i) = Measured secondary code phase(i) – scStart(i)
[0083] The optimal offset(i) is determined from the largest satellite group with the most consistent offset(i).
[0084] Find the corrected scStart without time error by correcting the predicted scStart with offset.
[0085] scStartCorr(i)=scStart(i)–offset(i)
[0086] Note that if a single SV secondary code phase estimate can only be obtained from a GPS satellite with a 20-millisecond pilot, then the secondary code phase scStart(i) can only be predicted for GPS satellites, and not for Galileo and BDS satellites with longer pilot sequences.
[0087] When assigning confidence to the predicted secondary code phase scStart(i), the remainder term (towTRemainder) must be considered. If the remainder is very close to zero or very close to one, the confidence is low. Position estimation errors affect the accuracy of scStart: as the position error increases, the error in the predicted pseudorange also increases, which affects the transmission time estimation, and consequently, the estimation of the predicted secondary code phase.
[0088] Location uncertainty (also known as the standard deviation of location error, or location sigma (sigmaPos)) is converted from meters to milliseconds to a millisecond time uncertainty threshold, as follows:
[0089] sigmaMsec = sigmaPos / speed of light / 1000
[0090] Then the confidence level of scStart is assigned as follows;
[0091] if(towTRemainder <sigmaMsec)
[0092] The secondary key scStart has low confidence.
[0093] Two estimates are formed: scStart0 and scStart1 = scStart1 + 1
[0094] Else if(towTRemainder>(1-sigmaMsec))
[0095] The secondary code scStart is a low-confidence key.
[0096] Two estimates are formed: scStart0 and scStart1 = scStart0 - 1
[0097] Else
[0098] The secondary key scStart is of high confidence.
[0099] Maintain the predicted secondary code phase (scStart) to enable the sequential porting method.
[0100] Transplantation methods (for example, see Figure 5 and with Figure 5 (Associated description) Measured scStarts are obtained from one or more satellites, and the scStarts of the remaining satellites are predicted. This applies at the time when the secondary code phase is measured. These measurements can also be propagated forward in time as long as the satellites are periodically tracked. Code phase, Doppler, and time stamps are associated with the measured secondary code phase. The code phase propagates forward in time according to a standard formula.
[0101] Codephase(t1)=codephase(t0)+Doppler*(-1 / wavelength)*(t2–t1)
[0102] If the propagated code phase becomes greater than 1 millisecond, this is a roll-up case, and scStart is incremented by 1 millisecond, and a 1-millisecond range is removed from the code phase. Conversely, if the propagated code phase becomes less than zero, this is a roll-down case, and scStart is decremented by 1 millisecond, and a 1-millisecond range is added to the code phase. In this way, the code phase can be maintained recursively, where the new time t1 becomes the previous time t0.
[0103] Propagating the secondary code phase is one way to reduce power consumption because, generally, once the secondary code phase is reached, the predicted secondary code bits are applied to the correlation process, and the correlation stream still containing the secondary code modulation is unobservable. Therefore, continuing to measure the secondary code phase requires an additional set of correlators, or maintaining a partial sum of the correlation before and after the major epoch of the secondary code bit change; an additional register is used to store this partial sum. Thus, propagation allows alternative methods to maintain the secondary code phase without re-measuring (therefore, for secondary code phase measurement, this additional set of correlators may not be necessary).
[0104] It is worth noting that even after positioning, these propagated secondary code phase measurements can be used to predict the secondary code phase of the remaining satellites.
[0105] Porting methods when fine-grained timing is available
[0106] Once tracking begins, it becomes possible to decode the navigation data stream on the data channel, which is orthogonal to the pilot channel phase. The data channel symbols are synchronized with the pilot channel secondary code phase sequence. The data channel also has its own secondary code phase sequence within each data symbol. This sequence must be removed to generate the data symbols. Fortunately, the start of the data channel secondary code sequence can be easily determined from the pilot secondary code sequence. A block phase estimator, time-aligned with the data symbols, is used to estimate the pilot carrier phase, which is removed from the data channel carrier phase to generate the data symbols. These decoded data symbols are processed according to the interface control document to generate a navigation message, which includes a timestamp at the transmission time of the first bit of the data frame. The reception time is obtained by propagating this timestamp by a transmission time, which can be correlated with the receiver time at which the first bit was received. This process is well-known. This process allows for the estimation and correction of millisecond time errors in the receiver. At this point, no porting method is needed because the estimated scPhase and scStart can be directly estimated without correction using the measured secondary code phase. However, even with near-perfect time and position estimates, ambiguity still exists in the predicted secondary code phase. The occurrence of ambiguity becomes rarer as position and timing errors decrease, and increases as position and time errors increase.
[0107] It is important to note that when the millisecond time error is reduced to zero, that is, when fine time is achieved, the offset calculated using the porting method should be zero, thus providing confidence that the time has been correctly set.
[0108] Observations on fuzziness
[0109] When the remainder term is close to zero or close to one, ambiguity (in the predicted secondary code phase) is observed. This generally occurs when the predicted pseudorange is close to an integer millisecond.
[0110] This is an example of a satellite ensemble where the system time error is one millisecond. Three GNSS systems are shown. The predicted scStart is shown in column scStart0. The measured values are in the "meas" column. Except for BDS 29, all SVs have an offset of 1, while BDS 29 has an offset of 2 due to the ambiguity being close to zero. The receiver position error is small. Analysis shows that the ambiguity is due to the almost identical clock offset between the satellite and the receiver used for that satellite.
[0111]
[0112]
[0113] The first result of the confidence level is that a single SV measured with low confidence cannot be used as a measurement for offset determination unless it is confirmed by another measurement with higher confidence. The second result is that scStart is ambiguous, and the satellite is forced to determine the secondary code phase using one of the single SV methods, or using an estimate but with an additional two-stage initialization. The baseline estimate is labeled scStart0, and the second estimate scStart1 is formed based on the remainder. If the remainder is close to zero, the second code phase estimate is taken as scStart0 minus 1 (and if the calculated estimate is zero, it is wrapped back to N-1, where N is the secondary code length). If the remainder is close to one, the second code phase estimate is taken as scStart0 plus one (and if the estimated secondary code phase is N-1, it is wrapped back to 0, where N is the secondary code length).
[0114] The two candidates can be tested on the correlation of a time series between 20 and 100 milliseconds. The correct one should have a significantly higher coherence integral than the incorrect one.
[0115] As another information gain from the single-SV method, if the single-SV method passes using the DFT method and produces a reliable frequency error estimate, then the clock drift can be used to estimate the corrected Doppler candidate of the autonomous code determination result. Drift is defined as the rate of change of the receiver clock offset in meters per second.
[0116] Distance rate = d / dt Geographic distance + Satellite drift – Receiver drift
[0117] Predicted distance rate 0 = d / dt geometric distance + satellite drift
[0118] DriftEstimate(i) = Measured Doppler(i) in Hz * (-wavelength (m)) – Predicted distance rate 0
[0119] If more than one satellite is available, then the drift is the average of all DriftEstimate(i), becoming the final global drift estimate, driftEstimate.
[0120] Doppler(i) = d / dt geometric distance + satellite drift + driftEstimate
[0121] For satellites in a determined secondary code state (i.e., satellites that have not completed the single SV method, generally due to weak signal strength), this predicted Doppler is immediately adopted. The search candidate Doppler is replaced by the estimated Doppler(i), and the satellite enters the tracking state.
[0122] Regardless of how the Doppler candidate is corrected by a single SV frequency error estimate, the steady-state tracking method removes the secondary code phase by applying the estimated secondary code sequence to the correlated time series. Before initiating regular closed-loop or open-loop tracking, a conventional DFT method can be applied to the correlated time series to remove the secondary code phase and eliminate any residual Doppler error in the estimated Doppler. For example, the DFT can be applied to a sequence of 20 one-millisecond correlated data points to perform a frequency error estimate ranging from + / - 500 Hz. The resolution would be 1000 Hz / 20 = 50 Hz, with a maximum of 25 Hz. Interpolation can reduce the frequency error to below 25 Hz, which is necessary to initialize a 50 Hz PLL or AFC carrier tracking loop. Alternatively, zero-padding the 64-point FFT can reduce the frequency resolution to 1000 / 64 = 28 Hz, with a maximum error of 14 Hz.
[0123] Example of combined secondary key method
[0124] Figure 10A This illustrates a combination of methods for determining the secondary code phase using the methods described herein (e.g., Figure 2 , 3 Examples of general methods (combinations of two or more methods shown in methods 4, 5 and 6). Figure 10A The methods described herein can use specific predetermined sequences of such methods (e.g., based on the decoding time of signals(one or more) from GNSS SV, according to...). Figure 2 or Figure 6 The method, and then according to Figure 5 The method, and then according to Figure 5 Another method). Figure 10A In the initial operation, the GNSS receiver can be used with a single SV (e.g., using a SV-based system). Figure 2 , 3 (or one of the methods shown in 6) or multiple SVs (e.g., using based on Figure 4 (Or one of the methods shown in 5) to measure the secondary code phase. Next, in Figure 10A In the method shown, the GNSS receiver can use a method based on Figure 5 The method uses available coarse time and estimated GNSS receiver position to obtain the predicted secondary code phase for a set of remaining SVs (for which secondary code phase has not yet been acquired). Next, in... Figure 10AIn the method described, the GNSS receiver can decode a satellite time message (indicating satellite time) received from the GNSS SV, and then estimate the fine time at the GNSS receiver (using techniques known in the art); in one embodiment, the fine time has an expected uncertainty of less than 0.5 milliseconds. At this point, using the estimated fine time, the GNSS receiver can switch to a time-based... Figure 5 The method is a port of the previous one, where the offset = 0, to predict the secondary code phase of satellites for which the secondary code phase has not yet been successfully acquired. The transition to offset = 0 allows the GNSS receiver to set its time estimate to a high confidence level and can begin tracking using all the primary codes for which the secondary code phase has been successfully acquired.
[0125] Capture (ACQ)
[0126] The following description includes actions performed by the GNSS receiver and... Figure 10B The method shown in the figure. Figure 10B The method shown can be used with a single SV method (e.g., Figure 6 The differential coherence method or histogram method shown, along with the transfer method (see, for example) Figure 5 For example, the single SV method can use a method based on... Figure 6 The method involves a method that first employs a porting approach, and then a differential coherent method that repeats over time with different offsets, followed by a porting approach to capture the secondary code phase. In another embodiment, the method can begin with a histogram-based approach, and then proceed based on... Figure 6 The method (and can be repeated with different delays based on) Figure 6 The method, for example, with an offset of 1 delay, then with an offset of 2 delays), and then the histogram method can be used to complete the secondary phase capture process for any SVs that have not captured the secondary code phase from the previous method.
[0127] The capture begins with a master code search using frequency domain correlation (FDC). In one embodiment, for short incoherent integrations (such as 20 ms), this method efficiently searches the entire PN code range (1 ms) with frequency steps up to 500 Hz, while frequency steps down to 200 Hz are used for longer incoherent integrations (such as 1 second). Typically, a range of + / - 1 PPM is searched. At L5, 1 PPM is approximately 1192 Hz, so the number of search intervals for each SV is reasonable: 5 for a 500 Hz step and 13 for a 200 Hz step. The entire range of frequency uncertainty is quickly searched with short integration times to identify the master lobe for the sinX / X frequency response of strong signals. The optimal SNR = 10 * log10((peakAmplitude)) is found among all codes and frequencies searched. 2–noiseAmplitudeAvg 2 The sum of the incoherent amplitudes (noiseAmplitudeVariance) is compared to a detection threshold of 16 dB to test signal search. If no signal is found, the integration time is increased to improve sensitivity.
[0128] The detection generates the main code phase and a Doppler candidate (which propagates coherently during acquisition), referenced to the start of the search. With sufficient hardware (HW) search capability, short searches can be operated in parallel with longer searches to avoid the more sensitive case where a longer integral discovery claims a signal has been found on a sidelobe of the sinX / X frequency response. Sidelobes are at least 13 dB higher and should be found quickly with a faster search. Even with a full frequency scan, the strongest observed candidate signal may be located outside the main lobe of the sinX / X frequency response if the real signal is blocked and the frequency search exceeds the coherent search bandwidth. The sidelobes of the sinX / X function for the 1 ms coherent integration time used in FDC are located at + / -N kHz, where N = 1, 2, 3. Therefore, if the frequency search is greater than 1 kHz or the error in the center of the frequency window exceeds 1 kHz, the frequency search will include sidelobes.
[0129] The observed frequency search peaks may not appear at the true frequency due to the interaction of two conditions: first, secondary code biphase modulation may occur at every epoch of the primary code; second, the primary code phases used for all SVs are uniformly distributed across the millisecond sample data range used in the FDC. For a code phase epoch offset from the first 1 / 4 of a millisecond, half the power is lost at the secondary code transition, resulting in modulation of the correlation amplitude. However, the frequency error provides the degree of freedom to change the sign of the correlation on the millisecond correlation, effectively canceling the rotation caused by the secondary code change, resulting in higher correlation energy at the frequency error. Frequency offsets of + / -250Hz and + / -500Hz are common, depending on the distance between the primary code epoch and the millisecond, and specifically on the number of components used in the FDC and how frequently the transitions occur.
[0130] Frequency refinement
[0131] These frequency offsets complicate secondary code phase acquisition. Better alignment of the code phase and milliseconds will reduce energy loss when the secondary code changes. Therefore, the Time Domain Correlation (TDC) method can select from one of four millisecond sample streams, each at an increasing offset, starting from the millisecond time base used in FDC and quantized in quarter-quantization. In one embodiment, the GNSS receiver's system firmware can select the offset to minimize the time offset between the primary code phase epoch and the end of the selected millisecond. Using this improved phase adjustment, a small set of TDC correlators is used to perform secondary frequency acquisition, which are centered on the code phase and Doppler candidates from the primary code search. The Time Domain Correlation (TDC) method is well-suited for this purpose: a set of 20 code phases separated by half a chip is used to integrate over a time period, similar to the integral used to obtain the candidates.
[0132] A similar incoherent one-millisecond amplitude sum is formed at each code tap. The frequency is searched around the candidate Doppler with steps of + / -250Hz and + / -500Hz. This frequency search further reduces the frequency error associated with the Doppler candidate. Interpolation of the frequency information can also be used to further minimize the frequency error before starting secondary code phase determination. This process reduces the frequency error but does not eliminate the need to handle the frequency error during secondary code phase determination. A similar method is used for the sidelobe search (which is a search for signals at least 13dB higher), for example, searching + / -750Hz and + / -1000Hz, but the integration duration is reduced by a factor that will produce a 13dB processing gain. If a signal is found during 200ms integration, then the sidelobe search will be the integration time T for solving this equation, assuming the worst case where the integration time doubles each time and the processing gain is 1.5dB, 13dB = 1.5dB * log2(200ms / T). T = 200 / 2 (13 / 1.5) (milliseconds) = 0.0049 milliseconds. Even an integral of 1 millisecond is sufficient to find the main lobe of a signal detected in 200 milliseconds. For one second, less than 3 milliseconds are needed.
[0133] Secondary code capture status
[0134] The secondary code phase begins with the primary code phase and the determined Doppler candidate. For weaker signals, in one embodiment, it is necessary to observe multiple repetitions of the pilot secondary code sequence. In this case, it is necessary to be able to track the code phase during this period to avoid signal loss and to provide relevant data containing the signal for the secondary code phase determination process. Tracking is necessary to avoid propagation errors associated with the Doppler error of the candidate signal. For example, for a 500Hz error, code Doppler will cause the candidate signal to move 1 1 / 2 chip samples within the time found by solving (29.3 / 2m = 500Hz / 115cycles / chip * 29.3m / chip * dt), dt = 0.115 seconds. This means that the signal will be lost within approximately 100 milliseconds due to propagation according to the incorrect Doppler. One solution is to use two or three correlators centered on the code phase estimation to form a delay-locked loop to track the signal. Because the correlators change the sign due to the secondary code with unknown phase, longer coherent correlations require more care and are problematic. A chip-separated advance correlator, minus the incoherence of the hysteresis correlator, allows for acceptable tracking around an instantaneous correlator, which is used to provide a one-millisecond correlation for secondary code phase estimation. Another solution is a set of correlators. In a set of 20 code phase taps with a 1 / 2 chip spacing, the candidate code phase is centered, ranging approximately 150m, and can contain a propagating signal with a 500Hz frequency error, approximately 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 a one-millisecond correlation for secondary code determination.
[0135] Method for determining secondary codes
[0136] As a summary of secondary code phase determination, the proposed methods are divided into two groups: the first group includes single SV methods, and the second group includes multi-SV methods. The single SV methods can be used in combination in a way that is optimized to quickly find the strongest signal with the lowest frequency error with minimal computation, while handling weaker signals and the maximum possible frequency error.
[0137] Histogram
[0138] Histogram methods (for example, see...) Figure 2 The method described above works quickly for shorter secondary code lengths (such as for GPS L5), with an intermediate frequency error range of + / -250Hz. This histogram method is implemented by integer calculation after forming the cosine of the phase change of the complex correlator (real, imag) from millisecond to millisecond as real(k)*real(k-1)+imag(k)*imag(k-1). This histogram method is less sensitive than... Figure 6This method is based on DFT, but has the advantage of allowing continuous integration into the histogram to gradually improve sensitivity, but at the cost of increased computational complexity or memory usage.
[0139] If this histogram method succeeds (successfully captures the secondary code phase), then it is assumed that the frequency error is small enough to be determined in a step before tracking begins (the secondary code is removed). The secondary code phase capture process is then terminated.
[0140] Offset -1 using differential coherence method
[0141] Offset-1 method based on DFT (using differential coherence methods, such as those based on...) Figure 6 The method provides improved sensitivity for longer codes and is insensitive to frequency errors up to + / - 500 Hz. It requires three DFTs: one for the input single-epoch correlated time series, one for the secondary code sequence, and an inverse DFT for the complex product of the two spectra (which is the cyclic correlation between the input and secondary code sequences). The magnitude is defined as the envelope of each term in the inverse DFT result, i.e., the square root of the sum of the squares of the real and imaginary parts at each point.
[0142] If this offset-1 method passes, meaning the peak SNR passes the threshold, then the estimated secondary code phase is applied to the input epoch-related time series, and the DFT with post-detection interpolation is used to identify the frequency error of the input sequence. The secondary code phase acquisition process is then terminated.
[0143] Offset -2
[0144] If the offset-1 method fails (e.g., the offset-1 method fails to capture the secondary code phase), then repeat the DFT offset method (e.g., based on...). Figure 6 The method (using offset -2) is employed because it has a different noise floor than offset -1. If this method works, the estimated secondary code is then used accordingly for the input epoch-related time series, and the DFT with post-detection interpolation is used to identify the frequency error of the input sequence. The process then terminates.
[0145] Peaks with offsets 1-2
[0146] If both offset-1 and offset-2 methods fail, but the strongest candidates for both methods are the same and their sum of SNR is above a threshold, then the process is declared successful. The estimated secondary code phase is applied to the input epoch-related time series, and a DFT with post-detection interpolation is used to identify the frequency error of the input sequence. The secondary code phase acquisition process is then terminated.
[0147] Offset 1-2 values and
[0148] If offset-1 and offset-2 methods fail, their inverse DFT values are averaged, and the peak SNR is compared to a threshold. This method leverages the fact that autocorrelation differs and can generate incoherent processing gain. If this method succeeds, meaning the peak SNR passes the threshold, the estimated secondary code phase is applied to the input epoch-related time series, and the DFT with post-detection interpolation is used to identify frequency errors in the input sequence. The secondary code phase acquisition process is then terminated.
[0149] Offset 1-N, sum of values
[0150] If averaging the inverse DFT values of offset-1 and offset-2 fails, then more offsets (such as offset-3 and offset-4) can be calculated, and their inverse DFT values averaged with the previous average of offset-1 and offset-2. If this method succeeds, meaning the peak SNR passes the threshold, then the estimated secondary code phase is applied to the input epoch-related time series, and the DFT with post-detection interpolation is used to identify the frequency error of the input sequence. The process then terminates.
[0151] Offset 0, all frequencies
[0152] If averaging the four offsets fails, then the offset-0 method is finally performed on all frequencies covered by the DFT. Note that the frequency is obtained as a shift of the DFT of the secondary code spectrum, followed by a complex product of the input spectrum and the shifted secondary code spectrum. In this way, only one additional DFT is required for each frequency. The frequency step size is the sample frequency of the input sequence divided by the number of intervals in the DFT = 1000Hz / 100 = 10Hz, so the frequency range is + / - 500Hz with a step size of 10Hz. Interpolation with more intervals or zero-padded FFT produces a finer step size. If this method passes, meaning the peak SNR crosses the threshold, then the frequency is interpolated using the adjacent frequency in the optimal secondary code phase. The process then terminates.
[0153] All failed, saving memory for the next batch.
[0154] If the offset 0 method fails, the memory is saved until a new set of input complex correlations for the pilot range becomes available. For offset methods (1, 2, 3, 4), the saved memory is a sequence of complex delay multiplications, as these sequences represent the cosine and sine of the phase change within milliseconds. This allows for coherent averaging before forming the spectrum of the input sequence, providing optimal processing gain. For offset -0 frequencies, the inverse DFT magnitudes are saved, providing incoherent processing gain. For offsets -1, 2, 3, 4 magnitude sums, the saved memory is the sum of magnitudes and is included in subsequent magnitude averaging, thus producing incoherent processing gain.
[0155] Special cases with GPS
[0156] Note that offsets greater than 0 can have a higher noise floor than offset 0. For longer pilot codes like GAL and BDS, since the autocorrelation sequence at each phase far from the peak is different for each offset, averaging over a sufficient number of offsets > 0 improves the resulting noise floor relative to the offset 0 case, making averaging possible. For short pilot codes like GPS, there is a peak offset at half the length, which is common to all offsets and is not reduced by averaging. The result is a higher noise floor than offset -0. While this cannot be minimized, it has been found that choosing the offset wisely can lead to a reduction in noise floor at all offsets except the half-length offset. In some cases, a second peak is detected at half the distance from the peak. When the first peak has the desired ratio to the second peak, removing this second peak can reduce the noise floor, effectively allowing a lower SNR to pass. Another solution is to simply declare the existence of ambiguity and require tracking to test two candidates and determine which has the best coherent SNR when applying the secondary code phase.
[0157] Summary offset
[0158] Some offset combinations are better than others. Therefore, the optimal offset combinations can be pre-calculated for each system and for each subcode and stored in a table.
[0159] While this specification focuses on GNSS SV and GNSS signals from GNSS SV, the embodiments described herein can also be used for GNSS-like signals from ground-based (e.g., ground-based) transmitters (such as pseudo-satellites (“pseudo-satellites”)). Therefore, the embodiments described herein can be used in systems employing such ground transmitters and receivers designed to receive and process GNSS-like signals from such ground transmitters. The phrase “GNSS signal” will be understood to include such GNSS-like signals, and the phrase “GNSS SV” will be understood to include such ground transmitters.
[0160] Exemplary embodiments
[0161] The numbered embodiments are presented below in a similar claim format, and it should be understood that these embodiments may be presented as claims in one or more future applications (such as one or more continuation or divisional applications). While individual embodiments are described in detail below, it should be recognized that these embodiments may be combined or modified in whole or in part. At least some of these numbered embodiments are proposed as claims in an earlier provisional application. For some of the embodiments listed below, only method embodiments / claims are given below, but it should be understood that these embodiments / claims may also be in the form of apparatus, such as a GNSS receiver, components of a GNSS receiver, and a non-transitory machine-readable medium storing executable program instructions that, when executed by one or more processing systems, cause one or more processing systems to perform one or more of the methods presented in this list of embodiments and elsewhere in this disclosure.
[0162] Example 1. A system for processing L5 broadband frequency GNSS signals, the system comprising:
[0163] Analog-to-digital converter (ADC) is used to generate a digital representation of GNSS signals received in the L5 broadband GNSS band;
[0164] A baseband sample memory for storing digital representations of received GNSS signals, the baseband sample memory being coupled to the ADC;
[0165] A GNSS processing system, coupled to a baseband sample memory to process a digital representation of a received GNSS signal, is configured to capture the code phase of one or more secondary codes of one or more GNSS signal components of an L5 wideband GNSS signal without using L1 GNSS signals to capture the code phase of one or more secondary codes of one or more GNSS signal components of an L5 wideband GNSS signal.
[0166] Example 2. The system as described in Example 1, wherein the system comprises only a single GNSS antenna tuned to a frequency in the L5 broadband band, and wherein the system does not receive and does not capture L1 GNSS signals.
[0167] Example 3. The system as described in Example 1, wherein the GNSS processing system captures the code phase of the one or more secondary codes after capturing one or more primary codes of the GNSS signal components but before narrowband tracking of the GNSS signal components.
[0168] Example 4. The system as described in Example 3, wherein the GNSS processing system captures the code phase of the one or more secondary codes when the time uncertainty exceeds 0.5 milliseconds.
[0169] Example 5. The system as described in Example 4, wherein the estimation error for the current time exceeds 1 millisecond before capturing the code phase of the one or more secondary codes.
[0170] Example 6. The system as described in Example 3, wherein the code phase of the first code in one or more secondary codes is captured by using multiple GNSS signal components from an L5 broadband GNSS signal from a single GNSS satellite.
[0171] Example 7. The system as described in Example 6, wherein the plurality of GNSS signal components include GNSS sideband A signals and GNSS sideband B signals.
[0172] Example 8. The system as described in Example 3, wherein the code phase of the first code in one or more secondary codes is acquired by using multiple GNSS signals from multiple GNSS satellites.
[0173] Example 9. The system as described in Example 8, wherein the plurality of GNSS satellites includes at least two satellites from at least one of the following: the Galileo E5 constellation of GNSS satellites; or the L5 GPS constellation of GNSS satellites; or the GLONASS K2 constellation of GNSS satellites; or the QZSS constellation of GNSS satellites; or the Beidou B2 constellation of GNSS satellites.
[0174] Example 10. The system as described in Example 4, the system further comprising:
[0175] A radio frequency (RF) receiver includes at least a first RF filter tuned to a frequency in the L5 wideband only to receive L5 wideband GNSS signals, and the first RF filter is coupled to the single GNSS antenna, wherein the system does not use L1 GNSS signals to determine time or frequency information, and wherein the system does not track L1 GNSS signals.
[0176] Example 11. The system as described in Example 1, wherein the GNSS processing system detects phase changes between successive master code epochs, the GNSS processing system including a frequency-locked loop (FLL), the phase changes being detected from in-phase and quadrature results of the correlation outputs of the GNSS processing system; and wherein the GNSS processing system averages the phase changes detected from the in-phase and quadrature results of the correlation outputs to generate an estimated frequency error; and wherein the GNSS processing system provides a compensated frequency to one or more discriminators of the FLL based on the estimated frequency error, the FLL being configured to reduce errors in the frequency estimation of the received L5 GNSS signal based on the estimated frequency error.
[0177] Example 12. The system as described in Example 11, wherein the FLL includes a first discriminator for a first sideband of the L5 GNSS signal and a second discriminator for a second sideband of the L5 GNSS signal, and wherein the estimated frequency error is based on the average of the phase changes detected from the in-phase and quadrature results of the correlation output.
[0178] Example 13. The system as described in Example 12, the averaging includes averaging the phase changes detected on two, three or four GNSS signal components from a single GNSS satellite.
[0179] Example 14. The system as described in Example 13, wherein the FLL detects phase changes between successive primary code epochs.
[0180] Example 15. A method for operating a GNSS receiver, the method comprising:
[0181] Capture one or more master codes of the received L5 GNSS signal;
[0182] For each transition between received master code epochs in each of the one or more master codes of the received L5 GNSS signal, a phase change value for each L5 GNSS signal is determined, wherein a set of phase change values is determined sequentially over time.
[0183] Store the set of phase change values in a data structure;
[0184] The set of phase change values in the data structure is compared with a set of expected phase change values, which are derived from one or more secondary codes associated with one or more primary codes from one or more GNSS satellites, wherein these primary and secondary codes are further associated with uniquely identified GNSS satellites and their signal transmissions.
[0185] Based on the comparison, one or more code phases of the one or more secondary codes are determined.
[0186] Example 16. The method as described in Example 15, wherein the method further includes:
[0187] After the primary code phase and associated secondary code phase have been determined for one of the components of the received L5 GNSS signal, a narrowband tracking operation is performed on at least one of the components of the received L5 GNSS signal.
[0188] One or more location solutions are determined based on one or more outputs from the tracking operation.
[0189] Example 17. The method as described in Example 16, wherein each phase change value represents an indication of a phase change of a secondary code associated with the primary code from a GNSS satellite that has transmitted the primary code, and wherein capturing the primary code includes determining the code phase of the primary code.
[0190] Example 18. The method as described in Example 17, wherein the method further includes:
[0191] Cross-checking identifies the secondary code phases of different channels of L5 GNSS signals from the same GNSS satellite.
[0192] Example 19. The method as described in Example 17, wherein the stored set of phase change values includes phase change values of different primary codes from different channels of L5 GNSS signals from the same GNSS satellite, and wherein the different channels include channel A on sideband A and channel B on sideband B, and wherein the comparison uses the phase change values from the different channels to derive a comparison output used to determine the phase of one or more secondary codes.
[0193] Example 20. The method as described in Example 17, wherein the set of expected phase change values is derived from the secondary code by transforming the secondary code into a sequence of phase change values across epochs in the secondary code using a set of index values in the data structure.
[0194] Example 21. The method as described in Example 17, wherein determining the phase change value includes: calculating the cosine of the value at each transition between two consecutive major code epochs.
[0195] Example 22. The method as described in Example 17, wherein the method further includes:
[0196] Estimate one or more frequencies of the one or more master codes of the received L5 GNSS signal.
[0197] Example 23. The method as described in Example 22, wherein the method further includes using code phase trajectories across a set of correlators to detect frequency errors across the set of correlators, and resetting data in the data structure.
[0198] Example 24. The method as described in Example 22, wherein the method further includes:
[0199] Predict the code Doppler slope from the discriminator trajectory over time, the discriminator trajectory being the output of the discriminator in the code tracking loop;
[0200] Frequency error is estimated based on predicted code Doppler slope;
[0201] At the frequency offset determined based on the estimated frequency error, the phase of the secondary code is detected based on the phase change value associated with the primary code.
[0202] Example 25. The method as described in Example 22, wherein the method further includes:
[0203] Perform the first set of related operations on the master code at a first frequency offset from the center frequency to determine the phase change value at the first frequency offset;
[0204] Perform a second set of related operations on the primary code at a second frequency offset from the center frequency to determine the phase change value at the second frequency offset.
[0205] Example 26. The method as described in Example 17, wherein the method further includes:
[0206] Determine the time uncertainty value, and if the time uncertainty value is less than 0.5 milliseconds, then terminate the method.
[0207] Example 27. The method as described in Example 17, wherein the method further includes:
[0208] Determine whether the phase change value is incorrect due to frequency error, and if the phase change value is incorrect, then reset the data structure.
[0209] Example 28. The method as described in Example 17, wherein the method further includes:
[0210] For each phase change value in at least a subset of the phase change values in the data structure, a confidence value is determined based on the signal-to-noise ratio associated with each phase change value and the confidence value is stored in the data structure.
[0211] Example 29. The method as described in Example 17, wherein the data structure is a set of histograms, each channel of the L5 GNSS signal from a particular GNSS satellite has at least one histogram, wherein the stored set of phase change values includes phase change values for two orthogonal data signal components and pilot signal components in the same frequency band of the same satellite, and wherein the comparison uses the phase change values from these data components and pilot components to derive a comparison output used to determine one or more secondary code phases.
[0212] Example 30. A method for operating a GNSS receiver, the method comprising:
[0213] GNSS signals are received from a GNSS satellite containing a first set of secondary codes and a first set of primary codes. The first set of secondary codes includes at least a first set of primary codes and a second set of primary codes. The first set of primary codes has a first length in units of bits, and the second set of primary codes has a second length in units of bits. The first length is greater than the second length.
[0214] In the first correlation operation, the received first group of GNSS signals is coherently correlated with the locally generated secondary code corresponding to the first group of secondary codes. The first correlation operation extends the first length of the received first group of GNSS signals and performs coherent correlation over the set of possible code phase assumptions and the set of frequencies.
[0215] In the second correlation operation, the received second set of GNSS signals is coherently correlated with the locally generated secondary code corresponding to the first set of secondary codes. The second correlation operation extends over the first length of the received second set of GNSS signals and performs coherent correlation over the set of possible code phase assumptions and the set of frequencies.
[0216] Combine the results from the first relevant operation with the results from the second relevant operation;
[0217] The combination results determine one or more secondary code phases of the first group of secondary codes.
[0218] Example 31. The method as described in Example 30, wherein the first correlation operation and the second correlation operation are performed using the Discrete Fourier Transform.
[0219] Example 32. The method as described in Example 30, wherein the first correlation operation and the second correlation operation are performed using a hardware correlator.
[0220] Example 33. The method as described in Example 30, wherein the first set of secondary codes includes four secondary codes for the four components of the GNSS signal from the GNSS satellite.
[0221] Example 34. The method as described in Example 30, wherein the first correlation operation is coherent with respect to the first set of secondary codes over a first length, and wherein the second correlation operation is coherent with respect to the received second set of GNSS signals over a first length, the second set of GNSS signals being received from the GNSS satellite after receiving the first set of GNSS signals received from the GNSS satellite.
[0222] Example 35. The method as described in Example 30, wherein the combination incoherently integrates the result from the first correlation operation with the result from the second correlation operation.
[0223] Example 36. The method as described in Example 31, wherein the method further includes:
[0224] The integral results within each frequency are sorted to select the highest value among the results.
[0225] Example 37. The method as described in Example 30, wherein the first correlation operation includes correlating the received first group of GNSS signals with the locally generated primary code corresponding to the first group of secondary codes, and wherein the second correlation operation includes correlating the received second group of GNSS signals with the locally generated primary code corresponding to the first group of secondary codes.
[0226] Example 38. The method as described in Example 35, wherein the combination integrates the magnitude of the result, and wherein the code phase of the longest secondary code is determined from the integration result.
[0227] Example 39. The method as described in Example 30, wherein the set of frequencies is separated by a minimum step size, and wherein improved frequency estimates for one or more channels are further determined.
[0228] Example 40. A method for operating a GNSS receiver, the method comprising:
[0229] The main code phase of multiple GNSS signals from multiple GNSS satellites of at least one GNSS constellation is captured at multiple main code epochs, the capture generating a set of correlation values at a set of time intervals for the multiple main code epochs of the multiple GNSS satellites, such that for each time interval, there are multiple correlation values specifying the main code phase captured from the multiple GNSS satellites;
[0230] Within each of the set of time intervals, the plurality of relevant values in one of the time intervals are evaluated to determine a value pattern derived from the plurality of relevant values in that time interval, the value pattern maximizing the sum of the plurality of relevant values;
[0231] Based on the plurality of GNSS satellites for which primary code phases have been captured, a prospective phase reversal sequence of secondary codes associated with the captured primary code phases is determined, the prospective phase reversal sequence being determined over the set of time intervals.
[0232] Each determined value pattern used for one of the time intervals is compared with the expected phase-reversed sequence used for the secondary code;
[0233] One or more code phases of the secondary code are determined from the comparison.
[0234] Example 41. The method as described in Example 40, wherein a set of discrete Fourier transforms is used to capture the master code phase.
[0235] Example 42. The method as described in Example 40, wherein the plurality of GNSS satellites come from only one GNSS constellation.
[0236] Example 43. The method as described in Example 40, wherein the plurality of GNSS satellites come from a plurality of GNSS constellations.
[0237] Example 44. The method as described in Example 40, wherein the comparison determines multiple code phases for the secondary code by taking into account the relative delay information of GNSS signals received from different GNSS satellites, and wherein the comparison concurrently determines the multiple code phases for the secondary code together for all different GNSS satellites.
[0238] Example 45. The method as described in Example 40, wherein the method further comprises:
[0239] Determine whether the set of intervals is large enough to provide a reliable determination of the phase of the one or more codes used for the secondary code.
[0240] Example 46. The method as described in Example 40, wherein the method further comprises:
[0241] The one or more subcodes are verified in the next interval following the first set of intervals.
[0242] Example 47. The method as described in Example 40, wherein the method further comprises:
[0243] After the primary code phase and associated secondary code phase have been determined for one of the components of the received GNSS signal, a tracking operation is performed on at least one of the components of the received GNSS signal.
[0244] Based on one or more outputs from the tracking operation, determine one or more location solutions.
[0245] Example 48. A method for operating a modern GNSS receiver during a tracking operation mode, the method comprising:
[0246] Generate a sample clock with a sample clock frequency;
[0247] Generate a set of correlation outputs, including a set of advance correlation outputs at the sample clock frequency and a set of lag correlation outputs at the sample clock frequency;
[0248] A set of immediate correlated outputs is synthesized from at least one of the following: (a) the set of advance correlated outputs, or (b) the set of lag correlated outputs.
[0249] Example 49. The method as described in Example 48, wherein the set of instantaneous correlated outputs is synthesized during the tracking operation mode.
[0250] Example 50. The method as described in Example 49, wherein the synthesized set of instantaneous correlation outputs is used as an error signal of the discriminator to adjust the carrier phase-locked loop to lock onto the carrier phase of the GNSS signal.
[0251] Example 51. The method as described in Example 49, wherein no local instant code is generated in the GNSS receiver during tracking mode, and no set of instant correlation outputs is created in the correlator in the GNSS receiver.
[0252] Example 52. The method according to Example 49, wherein the synthesized set of instantaneous correlation outputs is used to estimate the signal power to normalize the discriminator of the delay-locked loop.
[0253] Example 53. The method according to Example 49, wherein the time interval between samples of successive advance correlation outputs and lag correlation outputs for the GNSS signal is a single-sample clock interval smaller than the chip in the GNSS signal.
[0254] Example 54. The method according to Example 53, wherein the sample clock frequency is less than 3 times the L5 chip rate of 10.23MHz.
[0255] Example 55. The method as described in Example 53, wherein the spacing is a narrowed code delay, the narrowed code delay reduces multipath error, and at the same time maintains the frequency of the sample frequency clock at 4 times the L5 chip rate of less than 10.23MHz.
[0256] Example 56. The method as described in Example 49, wherein the set of advance correlation outputs is a set of super-advance correlation outputs, and wherein, if the GNSS signal is strong, the synthesized set of instantaneous correlation outputs is synthesized by multiplying the set of super-advance correlation outputs by a factor greater than 1.
[0257] Example 57. The method according to Example 49, wherein the synthesis includes calculating the product of the scaling factor and the sum of the advance-related output and the lag-related output.
[0258] Example 58. The method as in Example 57, wherein the scaling factor is calculated to produce a synthesized instantaneous correlation output for each synthesized instantaneous correlation output, the synthesized instantaneous correlation output having the same magnitude as the true instantaneous correlation output when the lead correlation output and the lag correlation output are balanced.
[0259] Example 59. The method as described in Example 49, wherein the set of advance correlation outputs includes a set of super-advance correlation outputs and advance correlation outputs, and the set of lag correlation outputs includes a set of super-lag correlation outputs and lag correlation outputs, and wherein the synthesis includes: for each synthesized instantaneous correlation output, averaging the super-advance correlation outputs, advance correlation outputs, lag correlation outputs and super-lag correlation outputs.
[0260] Example 60. The method as described in Example 49, wherein the set of advance correlation outputs includes a set of super-advance correlation outputs and advance correlation outputs, and the synthesis includes: for each synthesized instantaneous correlation output, averaging the super-advance correlation outputs and the advance correlation outputs.
[0261] Example 61. The method as described in Example 49, wherein the set of instantaneous correlation outputs is synthesized for an Altboc-formatted signal in the C channel of a GNSS signal.
[0262] Example 62. The method as described in Example 61, wherein the set of instantaneous correlation outputs uses a known predetermined phase offset between correlators that exceed the main peak of the Altoboc correlation.
[0263] Example 63. The method as described in Example 62, wherein one or more secondary peaks beyond the main peak have a different phase from the main peak.
[0264] Example 64. The method as described in Example 49, wherein the synthesized set of instantaneous correlation outputs is used to adjust the carrier phase-locked loop, and the carrier phase for the carrier phase-locked loop is generated by averaging the synthesized instantaneous correlations over multiple correlations, so as to produce a carrier phase estimate with reduced carrier multipath compared to multipath at the correlator between the advance correlator and the lag correlator.
[0265] Example 65. The method as described in Example 49, wherein the synthesized set of instantaneous correlation outputs is used to adjust the carrier phase-locked loop, and the carrier phase for the carrier phase-locked loop is generated by averaging a composite instantaneous correlation of multiple correlators that are more favorable to the earlier correlator, so as to produce a carrier phase estimate with reduced carrier multipath compared to multipath at the correlator between the early correlator and the late correlator.
[0266] Example 66. A method for operating a GNSS receiver, the method comprising:
[0267] Determine the secondary code phase of the GNSS signal received from the first GNSS satellite;
[0268] The difference between the determined secondary code phase of the GNSS signal received from the first GNSS satellite and the predicted secondary code phase of the GNSS signal received from a second GNSS satellite different from the first GNSS satellite is determined.
[0269] Based on the determined differences, the predicted secondary code phase is corrected.
[0270] Example 67. The method as described in Example 66, wherein the method further comprises:
[0271] Determine the additional secondary code phase of other GNSS signals received from other GNSS satellites;
[0272] Determine the additional difference between the determined additional secondary code phase and the predicted secondary code phase; and
[0273] The correction is based on the determined differences and additional differences.
[0274] Example 68. The method as described in Example 66, wherein the correction comprises: (1) comparing the determined difference with a fraction of the time-time code length of the epoch of the secondary code, and (2) (a) if the determined difference is less than the fraction, then adding the time-time code length to the determined difference and wrapping the result of this addition within the possible range of milliseconds of the code length, or (b) if the determined difference is greater than the fraction, then subtracting the time-time code length from the determined difference and wrapping the result of this subtraction within the possible range of milliseconds of the code length.
[0275] Example 69. The method as described in Example 67, wherein the correction is based on the highest likelihood difference among the determined differences and the additional differences.
[0276] Example 70. The method as described in Example 66, wherein the method further comprises:
[0277] Using the corrected secondary code phase for the second GNSS satellite, the secondary code is erased from the GNSS signal received from the second GNSS satellite to allow coherent integration of the primary code from the second GNSS satellite.
[0278] Example 71. The method as described in Example 66, wherein the method further comprises:
[0279] Before correcting the predicted secondary code phase, the position solution of the GNSS receiver is determined from multiple GNSS satellites, including the first GNSS satellite but excluding the second GNSS satellite.
[0280] Example 72. A method for operating a GNSS receiver, the method comprising:
[0281] Receive GNSS signals from GNSS satellites, which contain one or more primary codes and one or more secondary codes;
[0282] From the received GNSS signal, a set of first correlation outputs is generated from the acquisition correlation process that operates on the received GNSS signal. The first correlation outputs include the secondary code correlation period of the one or more secondary codes over time.
[0283] Over time, a set of one or more expected sequences of the one or more secondary codes are generated locally;
[0284] Calculate the differential secondary code sequence based on the locally generated set of one or more expected secondary code sequences;
[0285] A set of differentially correlated samples is calculated based on the first correlation output and the complex conjugate of each of the first correlation outputs;
[0286] The set of differentially correlated samples is correlated with the differential secondary sequence code to provide a set of second correlation outputs;
[0287] One or more secondary code phases of the one or more secondary codes are determined from the set of second correlation outputs.
[0288] Example 73. The method as described in Example 72, wherein the differential secondary code sequence is calculated based on the product between the expected secondary code sequence and a delayed version of the expected secondary code sequence, and wherein the differential correlation sample is based on the product between the set of first correlation outputs and a delayed version of the first set of correlation outputs.
[0289] Example 74. The method as described in Example 73, wherein the delayed version is delayed by a small portion of one or more primary key epochs.
[0290] Example 75. The method as described in Example 73, wherein the delayed version is a non-zero integer multiple of one bit in the delayed secondary code.
[0291] Example 76. The method as described in Example 73, wherein the first correlation output provides complex data including real data and imaginary data, and the complex conjugate is used to operate on the imaginary data.
[0292] Example 77. The method as described in Example 73, wherein the correlation is performed on multiple secondary code epochs.
[0293] Example 78. The method as described in Example 73, wherein the set of second correlation outputs includes the value of the real part of the peak, and the secondary code phase is determined based on one of the absolute value of the real part, the magnitude of the correlation output, and the square of the magnitude of the correlation output.
[0294] Example 79. The method as described in Example 73, wherein the correlation is performed using one or more discrete Fourier transforms.
[0295] Example 80. The method as described in Example 79, wherein the relevant components include:
[0296] The set of differentially correlated samples are cyclically cross-correlated with the differential secondary code sequence.
[0297] Example 81. The method as described in Example 79, wherein the relevant components include:
[0298] Calculate the discrete Fourier transform of the set of differentially correlated samples to produce the first set of results;
[0299] Calculate the discrete Fourier transform of the differential secondary code sequence to produce a second set of results;
[0300] Multiply the first set of results by the complex conjugate of the second set of results to produce the first product;
[0301] Calculate the inverse discrete Fourier transform of the first product.
[0302] Example 82. The method as described in Example 73, wherein the method further includes:
[0303] Based on a determined set of one or more expected secondary code sequences, a set of differentially correlated samples is correlated with further delayed differentially correlated secondary codes to provide a third set of correlated outputs, which are used to examine the set of second correlated outputs.
[0304] Example 83. The method as described in Example 82, wherein the set of differentially correlated samples used to construct the third set of correlated outputs uses a different delay than the delay used to construct the second set of correlated outputs.
[0305] Example 84. The method as described in Example 30, wherein the combination coherently integrates the result from the first correlation operation with the result from the second correlation operation, wherein an optimal phase offset is determined and applied to the coherent duration prior to the coherent combination.
[0306] Example 85. The method as described in Example 82, wherein the second set of related outputs and the third set of related outputs are combined to produce related outputs with higher fidelity.
[0307] Example 86. The method as described in Example 85, wherein the combination is one of the following: (A) by an additive coherent combination, or (B) by an additive incoherent combination, the latter being accomplished by adding the magnitudes or squares of the magnitudes of the second set of related outputs and the third set of related outputs.
[0308] Example 87. The method as described in Example 86, wherein an additional set of related outputs is formed in the same manner as the second and third sets are generated, and wherein the delays used to form each of these sets are different from each other.
[0309] Example 88. The method as described in Example 74, wherein the differential secondary code and the differentially correlated sample use the same delay in their construction.
[0310] Example 89. The method as described in Example 72, wherein if the determination of the one or more secondary code phases is unsuccessful or insufficient, then:
[0311] Calculate at least one additional differential secondary code sequence based on the locally generated set of one or more expected secondary code sequences;
[0312] Based on the first correlation output and the complex conjugate of each of the first correlation outputs, calculate at least one additional set of differential correlation samples;
[0313] The at least one additional set of differentially correlated samples is correlated with the at least one additional differential secondary sequence code to provide the correlation output of the additional set;
[0314] One or more secondary code phases of the one or more secondary codes are determined from the set of second correlation outputs and the correlation outputs of the additional set.
[0315] Example 90. The method as described in Example 89, wherein the differential correlation samples and differential secondary code sequences used to form different groups of correlation outputs employ delays in their construction, and wherein the delays for the correlation outputs of different groups are different from each other.
[0316] Example 91. The method as described in Example 90, wherein the second correlation output and the correlation output of the additional group are combined by adding one of their magnitudes and the squares of their magnitudes, and wherein the combination is examined to determine the secondary code phase.
[0317] Example 92. The method as described in Example 89, wherein the differentially correlated sample and the differentially secondary code sequence are computed using a first delay, and wherein the additional differentially correlated sample and the additional differentially secondary code sequence are computed using a second delay different from the first delay.
[0318] Example 93. The method as described in Example 89, wherein the differential secondary code sequence is calculated based on the product of the expected secondary code sequence and a first delayed version of the expected secondary code sequence, and wherein the differential correlation sample is based on the product of the set of first correlation outputs and a first delayed version of the set of first correlation outputs, and the additional differential secondary code sequence is calculated based on the product of the expected secondary code sequence and a second delayed version of the expected secondary code sequence, and wherein the additional differential correlation sample is based on the product of the set of first correlation outputs and a second delayed version of the set of first correlation outputs, and the first delayed version has a first delay while the second delayed version has a second delay different from the first delay.
[0319] Example 94. A method for operating a GNSS receiver, the method comprising:
[0320] Receive GNSS signals containing one or more primary codes and one or more secondary codes from multiple GNSS satellites;
[0321] Capture one or more master codes from the received GNSS signals to identify at least some of the plurality of GNSS satellites;
[0322] After capturing the one or more primary codes, the first method is used to determine the secondary code phase of at least a first set of the received one or more secondary codes;
[0323] After determining the secondary code phase of at least a first set using the first method, the secondary code phase of at least a second set of the received one or more secondary codes is determined using a second method, which differs from the first method.
[0324] Example 95. The method as described in Example 94, wherein the first method is according to the method of Example 15 and the second method is according to one of the following: (a) the method of Example 30 or (b) the method of Example 66.
[0325] Example 96. The method as described in Example 94, wherein the method further includes:
[0326] The third method is used to determine the secondary code phase of at least a third set of the received one or more secondary codes.
[0327] Example 97. The method as described in Example 96, wherein the first method is according to the method of Example 15, the second method is according to the method of Example 30 or Example 72, and the third method is according to the method of Example 66.
[0328] Example 98. The method as described in Example 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.
[0329] Example 99. The method as described in Example 98, wherein the first method is one of the following: (a) the method according to Example 15 or (b) the method according to Example 30 or (c) the method according to Example 72; and the second method is one of the following: (a) the method according to Example 66 or (b) the method according to Example 40.
[0330] Example 100. The method as described in Example 98, wherein the method further includes:
[0331] After the second code phase measurement result is not available in the GNSS receiver used for the first set, the secondary code phase determined from the first method is propagated for use.
[0332] Example 101. The method as described in Example 99, wherein the second method initially uses coarse time and location to predict the secondary code phase; after decoding the satellite time from the GNSS signal and generating a fine time estimate at the GNSS receiver, the second method is again used to predict the secondary code phase of one or more secondary codes that have not yet been captured.
[0333] Specific exemplary embodiments have been described in the foregoing specification. It will be apparent that various modifications can be made to those embodiments without departing from the broader spirit and scope set forth in the appended claims. Therefore, the specification and drawings are to be considered illustrative rather than restrictive.
[0334] Modernized consumer-grade GNSS secondary code acquisition and signal tracking
[0335] One Airlines
[0336] introduction
[0337] In the following disclosure, we describe all the steps necessary for acquiring time, frequency, and secondary code phase, and subsequently tracking the signal, in a modern consumer-grade L5 GNSS receiver. In our preferred embodiment, a conventional “closed-loop” technique is used to track the signal. In alternative embodiments, they are tracked using an open-loop technique. The process of bringing these signals into tracking mode is as complex as the signals involved, therefore we use a combination of open-loop and closed-loop strategies. Further related embodiments relating to power reduction, multipath suppression, sensitivity enhancement, and anti-fading are also described.
[0338]
[0339]
[0340]
[0341]
[0342] List of Attachments
[0343] Figure 8A High-level block diagram of L5 signal direct acquisition and tracking
[0344] Figure 8B Data channel decoding
[0345] Figure 8C Uncompensated four-component AFC discriminator value
[0346] Figure 8D Compensated AFC4 component discriminator values
[0347] Figure 8E Phase and protocol counts of the differential detector with a secondary code phase length of 20 milliseconds at 25 dB-Hz.
[0348] Figure 8F The long-term four individual components of the differential detector
[0349] Figure 8G Image of the phase length of the Gallieo secondary code on all four components
[0350] Figure 8H FLL frequency detector 400Hz error example
[0351] Figure 8I DLL example with 400Hz error
[0352] Figure 8J Remove the example of an FLL detector with a 395Hz refresh rate.
[0353] Figure 8K Example of secondary code acquisition process
[0354] Figure 8L Code without frequency modulation
[0355] Figure 8M Code with a 10Hz frequency error
[0356] Figure 8N Example of Data A
[0357] Figure 8O Correlation of DataB components
[0358] Figure 8P Data B Example
[0359] Figure 8Q Examples related to the secondary code of data B
[0360] Figure 8R Pilot A example at 0Hz
[0361] Figure 8S Example of maximum value of pilot A
[0362] Figure 8T Example flowchart of coherent method
[0363] Figure 8U Example of coherent method secondary correlation
[0364] Figure 8V Secondary code alignment across SVs during transmission (ideal case)
[0365] Figure 8W Secondary code phase at the receiver - illustration
[0366] Figure 8X Examples of secondary correlations in pilot secondary codes exceeding 100ms
[0367] Figure 8Y Example 8: Component Quadratic Correlation
[0368] Figure 8Z 10ms Example
[0369] Figure 8AA Example of excluding noisy input
[0370] Figure 8BB Cross-SV coherence, temporal incoherence examples
[0371] Figure 8CC Related option 1
[0372] Figure 8DD Related Option 2
[0373] Figure 8EE Basic related positions
[0374] Figure 8FF Multipath return
[0375] Figure 8GG AB channel BPSK discriminator
[0376] Figure 8HH AltBOCCorrVec (Theory)
[0377] Figure 8II C-channel corrVec in wide and narrow modes
[0378] Figure 8JJ E, P, L move in the direction of their positions on AltBOCCorrVec Figure 8KK AltBOCDLL discriminator curve
[0379] Figure 8LL AltBOCCorrVec and PhaseVec
[0380] Figure 8MM The DLL discriminator shows regions with different slope signs.
[0381] Figure 8NN PRN3 Primary Peak Tracking
[0382] Figure 800 PRN5 Primary Peak Tracking
[0383] Figure 8PP PRN3 tracks side peaks
[0384] Figure 8 QQ PRN5 tracks side peaks
[0385] Figure 8RR Images of 20 correlated instrument code windows (corrVec)
[0386] Figure 8SS Relationship between data channel bits and secondary code length, as well as millisecond and epoch correlations Figure 8TT Side band shift
[0387] Figure 8UU Example phase accumulation mechanism
[0388] Figure 8VV Flowchart for generating correlators A, B, and C
[0389] Figure 8YY Example of coherent differential method process flow
[0390] Purpose
[0391] Advanced Description: In one embodiment, one implementation may use a closed-loop system to capture, locate, and track L5 signals that are only wideband high-precision signals, which have only L5 wideband signals (i.e., do not rely on older narrowband signals, such as L1 GPS signals).
[0392] Enhancement of modernization
[0393] Modern GNSS signals have several enhancements that improve their accuracy and reliability compared to the original GPS L1 CA signals.
[0394] First, while GPS L1 CA has only a single component containing data bits every 20 milliseconds, modern signals have two orthogonal components: a data channel containing data bits and a pilot channel without data bits. The European Gallieo and Chinese BDS versions have two more orthogonal components, thus enabling a second data and pilot channel.
[0395] Secondly, while there is no phase rotation between the 20-millisecond data bits on GPS L1 CA, modern signals have secondary codes that introduce phase rotation at the end of each primary code within each data bit. The code sequences are distinct on both the data and pilot channels. The pilot channel has a longer, separate secondary code.
[0396] Third, although GPS L1 has a chip rate of 1.023 MHz, modern signals in the L5 band have a chip rate of 10.23 MHz, which is ten times higher.
[0397] Fourth, while GPS L1 CA signals have BPSK modulation and carrier-centered correlation vectors, modernized signals in Europe and China have additional multi-level modulation at a frequency 1.5 times the chip rate of the main code, producing a sideband offset from the carrier. This is called ALTBOC in the European Gallieo system and ACEBOC in the Chinese Beidou or BDS system. This modulation enables additional data and pilot channels.
[0398] The fifth difference is that while GPS L1 CA has an 8-bit parity check word for every 24 bits of data, modern signals have convolutional encoding / decoding and more error correction bits.
[0399] The sixth difference in modern signals is that they have a higher transmit power than L1 CA: each component can be at least 0.5 dB stronger, and the combination of all four components can be 6 dB stronger.
[0400] The seventh difference in modern signaling is that all countries deploying satellites in the L5 band have chosen to implement almost identical signal structures, with only minor differences in data channel bit rate, pilot channel secondary code length, and multi-level inter-chip modulation.
[0401] Advantages of modernization
[0402] The advantage of data and pilot channels is that they allow the use of pilot channels to track weaker signals.
[0403] The advantage of secondary coding is the reduction of cross-correlation between different satellites, which improves signal reliability by reducing false tracking. This cross-correlation occurs when searching for weaker satellites, whose carrier frequencies are modulo the primary code repetition frequency of stronger visible satellites. The cross-correlation can be 13 dB lower than that of stronger satellites. Secondary coding and higher chip rates reduce the cross-correlation by a similar 13 dB. Cross-correlation leads to the failure to find the correct signal and the spurious tracking of strong satellites, resulting in the collection of erroneous satellite data and the generation of incorrect observed phase, causing large position errors. Another major advantage of secondary coding is that it allows for finer observation of the ultra-millisecond phase, i.e., the portion of the signal travel time longer than 1 millisecond.
[0404] Compared to slower chip rates, higher chip rates offer the advantage of greater accuracy in determining the received phase and reduced multipath effects. For example, the correlation vector for GPS L1 CA is approximately + / -293 meters, while the correlation vector for L5 modern signals is approximately + / -29.3 meters. A 50-meter reflection will distort the L1 CA correlation vector but will not affect the L5 correlation vector because it is outside its range.
[0405] Compared to BPSK correlation vectors with the same chip rate, the advantage of ALTBOC or ACEBOC additional sub-chip modulation is that it produces a finer correlation vector. This finer vector further improves accuracy and reduces the impact of reflections within the correlation vector's range.
[0406] The advantage of modern signal encoding and decoding is a reduced bit error rate, meaning it's possible to reliably decode satellite data even with weak signal levels. Satellite decoding time is a critical event for every auxiliary GNSS receiver. Modern signal encoding improves the reliability of this process.
[0407] The advantage of a stronger signal is that it can be used with a weaker signal.
[0408] The advantage of a unified signal architecture is simplified hardware and software design. Systems such as GPS L1 CA, GLONASS, early BDS, and older GNSS systems near Galileo L1 have drastically different signal architectures, leading to complex hardware and software designs.
[0409] Existing technology
[0410] Prior art includes the narrow correlator technique described in U.S. Patent #5495499. Modernized signal tracking is also described in detail in NovAtel patents, U.S. Patent #6922167B2. Modernized signal composite tracking is described in U.S. Patent #7885317. Secondary code capture in... https: / / www.researchgate.net / publication / 317225851_ Efficient_GNSS_secondary_code_correlations_for_high_sensitivity_acquisition The technical paper described above describes this. Here, we describe high-sensitivity secondary code capture: https: / / www.researchgate.net / publication / 320514396 Fast secondary code capture in http: / / citeseerx.ist.psu.edu / viewdoc / download?doi=10.1.1.161.5205&rep=rep1&type= pdf It is described in the text.
[0411] Why is modernization difficult?
[0412] One drawback of modern signals is that they are more numerous than the 350MHz from GPS L1 CA signals, which generally requires separate antennas and RF signal paths.
[0413] Another drawback of modern signals is the complexity of initial signal acquisition. Because the chip rate is 10 times higher and the code length is 10 times longer than GPS L1CA, the complexity increases by 100 times.
[0414] What should the current leader do?
[0415] Adding L5 to a conventional receiver increases cost. However, the reason for adding L5 is to improve the receiver's accuracy.
[0416] As of this writing, all L5-enabled GNSS receiver manufacturers perform acquisition and first position the signal on L1, then track the L5 signal. If the L5 signal is lost, it is reacquired using the L1 signal, and then tracked again on L5. Since the visibility of each satellite is independent, the L1 receiver cannot be turned off. However, due to the accuracy of modern L5 signals, the L1 signal is often significantly deweighted in position calculation filters. This approach does not take advantage of the inherently improved reliability of modern signals. In a sense, it uses a less reliable (weaker and less redundant) system to acquire a more reliable signal.
[0417] One advantage of dual-frequency receivers is their ability to estimate ionospheric delay, which is proportional to the free electron density in the atmospheric region through which the signal propagates and inversely proportional to the signal carrier frequency. For GNSS receivers in internet-connected devices (such as mobile phones), it is possible to access servers and download ionospheric estimates generated by the GNSS receiver's global reference network. The accuracy of these models is now at the sub-meter level, eliminating the need for the cost and power associated with dual-frequency mobile consumer receivers.
[0418] L5 is feasible only.
[0419] The number of L5 signals is growing rapidly. The European Gallieo system is nearing completion with 22 satellites, and the final number will reach 24 by 2021, including an E5 signal modulated with ALTBOC and four components: two in the lower sideband E5A and two in the upper sideband E5B. By 2024, the United States will have a constellation of 24 L5 satellites and two components, having reached 13 by 2019. China will have a complete constellation of 24 satellites, including the signal B2 with lower sideband B2A and upper sideband B2B.
[0420] Introducing L5 or modernization-only methods
[0421] The purpose of this disclosure is to present embodiments of a modernized GNSS-only receiver that can fully utilize the enhancements in modernized signals. Primarily, in one embodiment, it uses only modernized wideband signals for accuracy and reliability purposes. While L1 CA signals have long been the gold standard for enabling fast acquisition and high sensitivity, modernized signal enhancements promise to provide higher performance at a lower cost. For example, the number of RF paths is reduced from two to one, the number of signal structures that need to be tracked is reduced from more than four to one, and the complexity of handling cross-correlation SWs is reduced.
[0422] Further advantages of modernization
[0423] In one embodiment, our approach is to improve the accuracy of all receiver functions simply by using a signal with higher bandwidth. The shift from initial positioning with higher multipath means the receiver must handle situations with lower accuracy and integrity while attempting to find a signal with higher accuracy and greater reliability.
[0424] New closed-loop system
[0425] The entire process of primary code phase and frequency acquisition, secondary code phase acquisition, code and frequency pull-in, tracking, positioning, and reacquisition is different for modern receivers alone, providing innovative opportunities for many operations.
[0426] OneNav describes the capture process in U.S. Provisional Patent Application No. 62 / 915510, filed on October 15, 2019.
[0427] Secondary code phase estimation before, rather than after, positioning.
[0428] The secondary code phase acquisition requirements for modern-only receivers differ from those of the L1-L5 method in that the process must be performed after acquisition, not after the initial positioning. Post-acquisition methods must tolerate higher frequency errors because acquisition primarily uses incoherent integration of the primary code phase with a bandwidth of 1 kHz, where frequency steps can be as high as 200-500 Hz. L1-L5 receivers typically only attempt secondary code phase acquisition after the initial positioning, when their frequency uncertainty has significantly decreased.
[0429] Early secondary code phase estimation is used to aid in localization and subsequent acquisition.
[0430] The one-millisecond phase rotation of the secondary code and the longer secondary code length on the pilot channel provide significantly more range information than an L1 CA signal with 20 millisecond data bits. These features are utilized in the first modernization-only localization in the typical case of GNSS assisted in a mobile phone, when only approximate initial time and position information are available. The L1 CA data bits provide range ambiguity of + / -10 milliseconds, while the E5 and B2 pilot secondary codes provide range ambiguity of + / 50 milliseconds. The predicted secondary code phase forms a coarse time localization (described below), which can be corrected with earlier secondary code measurements. L5 secondary code acquisition of L1-CA requires L1-based position and time localization, while L5 time determination can occur before the first localization. Therefore, secondary code phase estimation is generally not required after the first localization in a modernization-only receiver. However, because L1-based coarse solvers do not handle millisecond-level ambiguity well, secondary code phase estimation will be needed to track modernized signals with high sensitivity.
[0431] Broadband used throughout
[0432] Following its initial positioning, another key difference between the oneNav solution and current L1-L5 receivers is the use of the full signal bandwidth. The 30.69MHz-separated sidebands, referred to as channels A and B, allow this approach to reduce the effects of fading and are more flexible than typical consumer-grade L5 implementations that use only one sideband.
[0433] OneNav also implemented wideband ALTBOC and ACEBOC tracking. Because this signal is carrier-centered, it is referred to as C, or center channel. These signals provide unprecedented measurement accuracy and multipath suppression. These measurements are performed in parallel with sideband measurements.
[0434] Use a side channel to assist the center channel
[0435] A set of sideband tracking correlators with half-chip spacing provides the observability needed to capture the narrow correlation vector for wideband tracking. In the worst urban canyons where there is almost no direct signal, wideband tracking provides lane-level navigation capability due to sub-decimeter measurement accuracy. Another set of correlators (split by less than 1 / 5 or 16 chip spacing, depending on configuration) is used to observe the wideband C-channel to reduce tracking ambiguity of multi-peak correlation vectors and provide the additional carrier phase tracking stability required for pedestrian applications.
[0436] Reuse vector processors
[0437] The observability requirement of three wideband channels per satellite necessitates a novel approach to generate substantial correlations for each satellite while maintaining low chip size and low power consumption. The solution presented here is to reconfigure the vector processor within the acquisition engine, rather than instantiating multiple separate correlators. Therefore, the frequency and time domain correlation processes can reuse the same vector processing and associated memory.
[0438] Advanced multipath suppression: shifting out of the instantaneous channel
[0439] A method is presented that can achieve the same multipath suppression in a 100MHz conventional narrow correlator early-minus-late tracking configuration using only a 50MHz sample clock. This method can also be applied to sideband tracking, such as L5 or E5a. The instantaneous correlator, typically used for tracking carrier phase, is moved outside the early and late correlators and generated by the coherent sum of the remaining correlators. The combination differs for the center channel and sideband channels. One advantage is the ability to increase the early and late power by improving corrVec.
[0440] Synthetic instantaneous ground bounce suitable for mobile phones
[0441] Android-based phones are now using carrier phase tracking to enable new high-precision applications. Many of these phones employ linear antennas, making ground bounce a significant source of multipath, as nearby reflections cannot be attenuated with such antennas. Methods to reduce the worst-case impact of ground bounce in slow-moving pedestrian use cases are presented.
[0442] The unique feature of the wideband correlation vector (corrVec) is that a multi-stage subchip modulator produces a phase ratio of 3 cycles over its range. While ground bounce multipath will be very close to the direct signal, the relative phase combinations across the correlation vector (also known as constructive and destructive combinations) will change rapidly with minute antenna movements. For the center channel, and at the optimal sampling rate, the elements of the earlier and later corrVecs have even higher energy and can be used for more resilient carrier tracking against ground bounce multipath. Furthermore, for the C channel, multiple correlators are first phase-rotated and then combined to form a weighted instantaneous correlator, which can average the effects of near-ground bounce multipath, thereby reducing the likelihood of cycle slips due to rapidly changing destructive interference.
[0443] Other advance tracking; phase detector combinations for AFC and PLL
[0444] Just as combining the four components of E5 and B2 or the two components of L5 improves acquisition sensitivity, a tracking method combining multiple components during tracking is presented. Generally, because the carrier wavelength of approximately 25 cm is significantly smaller than the code wavelength of approximately 29.3 m, the GNSS receiver loses lock in the carrier tracking loop before the code loop. The main problem is carrier frequency or phase detector error. Therefore, a method for coherently combining phase information from each component is presented to reduce phase detector error.
[0445] Secondary dependencies used for integrity and ML
[0446] Because the corrVec of ALTBOC and ACEBOC is so narrow, an integrity monitoring method is needed to verify that the code tracking is correctly centered. The observed corrVec is secondary correlated with a predetermined corrVec that takes into account the system bandwidth to verify correct tracking. This result is reported as an integrity monitor to periodically reset the tracking and is used as input for machine learning, which classifies the signal as a direct signal, multipath signal, or non-line-of-sight (NLOS) signal.
[0447] Group delay equalization across broadband front-end
[0448] By placing a digital complex equalizer in the signal path before A / B channelization, a nearly flat group delay response can be achieved over a wideband front-end bandwidth of 50 MHz or higher using low-cost consumer-grade RF filters and amplifiers.
[0449] CW interference with notch filter
[0450] Since the A / B channels used for acquisition require an FFT of the frequency domain correlation, a simple interference suppression method is to observe the frequency response of these filters to identify the interference. For the A / B channels, frequencies with high power can be clipped or blanked, resulting in a slight decrease in sensitivity when interference is observed, but without the catastrophic problems associated with narrowband signal congestion. The FCC's recent decision to allow terrestrial transmission in the L1 band has increased the incentive to rely on the more reliable L5 signal.
[0451] Figure 8A A high-level block diagram is shown for direct capture and tracking of L5 signals.
[0452] Box 1: Initial search parameters
[0453] The system begins operations by determining initial search parameters and satellite data. Based on the start time and satellite data, the positions, velocities, and time offsets (clock deviations) of all satellites are calculated. Based on the initial receiver position, a vector from the receiver to the satellite positions is rotated to the local horizontal plane to determine the azimuth and elevation angles of the satellites. Satellites above the defined horizon mask angle have positive elevation angles and are added to the initial search set.
[0454] If the start time, location, and satellite data are known accurately, the phase of the primary and secondary spreading codes of modernized signals in the E5 band can be accurately estimated. However, such time is generally unavailable because accurate time transfer requires access to an accurate time base. In one embodiment, the assumed initial time estimate is only available for a few minutes. While some systems provide accurate time, current mobile phone base stations do not require synchronization or observation of their transmission time offset from GNSS time. Moreover, current mobile phones have alternative methods for determining the start location by correlating cellular, WiFi, and Bluetooth transmissions received from devices with known locations. In dense urban environments, the density of positioning references is very high, enabling start location accuracy of 100 meters or higher.
[0455] However, precise timing and location are required to pre-calculate the accurate received primary and secondary code phases. For this reason, the initial accuracy of such phase estimation is far greater than the sub-millisecond accuracy needed to significantly reduce the search size to below the entire range of these code sequences.
[0456] Therefore, the search for each satellite is aimed at an approximate carrier frequency and an estimated frequency range around this center. The center frequency is the sum of predicted frequency shifts associated with satellite motion, user motion, and receiver frequency offsets of their frequency sources.
[0457] This frequency is related to the derivative of the pseudorange between the i-th satellite and the receiver at time t. This measurement is called pseudorange because it incorporates the effects of receiver and satellite time errors (also known as clock skew) on real time. It is also affected by atmospheric effects in the space the signal travels through from the satellite to the receiver, known as propagation effects. Finally, there is receiver noise. Relativistic effects and the Earth's rotation during the signal's travel time are well-known and are not included here.
[0458] Equation 1
[0459] PR i (t rec ) = True distance (t) tran ,t rec ) + Receiver time error (t) rec ) – Satellite time error (t rec ) + propagation effect (t) rec )+ Receiver noise (t rec )
[0460] Receiver time error is defined as the offset between the receiver time and the true GNSS time. This is also known as receiver clock skew. It can be decomposed into a fractional clock skew (less than a millisecond) and an integer millisecond (integer millisecond, or intMs).
[0461] Pseudorange rate (PRR) i ) is defined as the derivative of the pseudorange with respect to the i-th satellite.
[0462] At time t rec The actual distance is in the transmission time (t) tran The satellite and the reception time (t) rec The vector norm of the distance between receiver positions (Xr, Yr, Zr) of the i-th satellite. The satellite position (or spacecraft SV) of the i-th satellite (Xr, Yr, Zr). si ,Y si Z si It can be calculated iteratively based on the estimated range.
[0463] Equation 2
[0464] In t rec The true range to the i-th SV is R i (t rec )=[(X si (t tran )–X r (t rec )) 2 +(Y si (t tran )–Y r (t rec)) 2 +(Z si (t tran )–X r (t rec )) 2 ] 1 / 2
[0465] Assume the GNSS control segment estimates the satellite position and its time offset from the actual time, and this data can be obtained by decoding from the satellite or through other means (such as via the Internet). The satellite clock offset affects the phase of the primary and secondary pseudo-random (PN) code sequences generated during transmission. The receiver clock offset affects the phase of the two sequences received. Propagation effects include ionospheric and tropospheric delays, as well as errors due to environmental thermal noise, multipath propagation, and reflection errors. Receiver noise includes noise generated by the receiver due to its deficiencies in generating and accurately reproducing the broadcast signal.
[0466] The true pseudorange rate is simply the time derivative of the pseudorange. This is calculated using the time derivative (d / dt{}) of each element forming the pseudorange, as shown below:
[0467] Equation 3
[0468] PRR i (t rec )=d / dt{R i (t tran ,t rec )}+d / dt{Receiver time error(t) rec )}–d / dt{Satellite time error(t rec )}+d / dt{propagation effect(t rec )}+d / dt{Receiver noise(t rec )}
[0469] =d / dt{R i (t tran ,t rec + Receiver clock drift – Satellite clock drift + d / dt {Propagation effect} + Noise
[0470] Receiver clock drift is the time derivative of receiver clock skew. Satellite clock drift is the time derivative of satellite clock skew. The time derivative of propagation effects is small, often less than 1 m / s.
[0471] Generally, a receiver estimates the time derivative of the distance by differentiating the range over a certain time interval (e.g., 1 second). This assumes that satellite clock drift is provided by a signal or the internet.
[0472] Using all available known estimates, the pseudorange rate PRR was calculated as the nominal range rate. It was then converted to a frequency estimate by scaling to the appropriate wavelength. To search at the center of the E5 band, the wavelength = speed of light / 1191.795 MHz = 25.155 cm, approximately 25% larger than the 19.054 cm wavelength at L1.
[0473] The frequency range to be searched depends on the uncertainty in the estimated PRR. The error arises from location estimation errors, time errors, but primarily from the estimation error of receiver clock drift. For commercial receivers employing TCXOs or soft-compensated crystal oscillators (SCXOs), the uncertainty is typically around + / - 1 PPM, or parts per million. This error can be reduced for receivers that can control the oscillator for a more stable cellular signal. In this case, the Doppler effect induced by receiver speed must be considered.
[0474] Generally, receiver clock skew, or initial time error, is much greater than 1 millisecond, thus requiring a complete search for the primary code phase while the secondary code phase remains unknown. This means the search is performed as multiple separate searches of the primary code at a set of discrete frequencies. The frequency search step size is related to the coherent integration time and is typically one millisecond. To improve sensitivity, the one-millisecond power (or amplitude) estimate at each possible code phase location (typically about two samples per primary code chip) is incoherently diversified over a longer time period to average the noise and improve the post-correlation signal-to-noise ratio.
[0475] During incoherent integration, code phase estimation requires a time shift to account for code shift due to carrier frequency during integration. The code Doppler at 1191.795 MHz (E5 and B2) is one code chip every 116.5 carrier cycles. This ratio is 115 at 1175.45 MHz (E5a, B2b, and L5) and 118 at 1207.14 MHz (E5b and B2B). Generally, the frequency step size is reduced so that the code chip shifts by half the frequency step size over the expected longest integration time. For example, if the integration time is 200 milliseconds, the frequency step size is limited as follows: 1 / 2 = freqStep / 2 / (116.5) cycles / chip at E5 * 0.2 seconds. Solving for freqStep = 116.5 / dt, the result is that the frequency step size should be no less than 227 Hz.
[0476] The search parameters for the set of satellites are the initial conditions or seed for the code generator, the center frequency, the frequency step size, the number of frequencies around the center, and the integration time.
[0477] Initial search = {PRN, PRN seed, frequency center, frequency number, milliseconds, detection threshold}
[0478] Box 2: Master code phase capture
[0479] This box contains the hardware and software used to perform searches on multiple tandem and parallel satellites. The search continues until a peak is found in the correlation, which has a sufficient SNR to provide a detection confidence level that is traded off by the false detection level. The noise floor is parameterized by estimating the mean and standard deviation of the noise floor for all code phase assumptions at each individual frequency. For the strongest peak, the correlation value is removed, so the noise floor is unbiased. The first detection test is declared satisfied when 10*log10((maxPower – noisePower) / noiseVariance) > threshold1. To improve robustness to other sources of interference that produce cross-correlation or correlations higher than the Gaussian noise floor, a second test is performed on a second peak not close to the first. This is called the marginal test, where the second detection test is declared satisfied when 10*log10((maxPower – offPeakPower) / noiseVariance) > threshold2. Typical values for threshold1 and threshold2 are 16 dB and 6 dB, respectively.
[0480] Incoherent integration continues until both tests are met or the maximum integration time is reached. Detection moves the signal candidate to box 3. Note that by using a maximum coherent detection time of one millisecond, the error in the secondary code phase is minimized. It should be noted that integration occurs on a millisecond-to-millisecond basis, not on a primary code epoch-to-epoch basis, and therefore incurs losses when there is a phase reversal within the integration window. Due to the large time uncertainty, testing multiple hypotheses in the secondary code stage is computationally and power-intensive. The worst-case scenario occurs when the received primary code phase is in the center of the millisecond window: a phase reversal due to the secondary code, or even a change in data symbols, causes a 180-degree phase rotation, resulting in complete cancellation of the relevant energy. Several improvements are proposed to compensate for these conditions in the embodiments described in OneNav U.S. Provisional Patent Application No. 62 / 915510, filed October 15, 2019. The worst-case scenario is discontinuous because the probability of a phase reversal per millisecond is approximately 50%. Another way to minimize the maximum loss is to use more than one signal component, such as data and pilot components, since their secondary codes do not always switch within the same millisecond.
[0481] In another embodiment, the primary code phase peak can be temporarily detected using a lower SNR threshold set according to the amount of code phase uncertainty. Code phase uncertainty can be determined as a combination of clock and initial position uncertainties. In a further refinement, code phases can be tested relative to each other to offset clock errors. Once the temporary peak passes tests based on maximum PFA, minimum SNR, or similar more difficult criteria, it can be declared a reliable peak detection, and the search window for subsequent satellite searches can be narrowed. Similarly, the frequency uncertainty can be gradually narrowed.
[0482] Box 3: Secondary code phase capture
[0483] After determining the primary code phase and when the time uncertainty is greater than 1 / 2 millisecond, the next step is to determine the secondary code phase. (In cases where the time uncertainty is large but less than 1 / 2 millisecond, the secondary code can be known. The primary code search for this mode is handled in box 14.) Modern signals generally have sequences of different lengths in the data and pilot components, with the pilots typically being longer. The pilot secondary code length, also known as the overlay code, is 100 milliseconds long for Galileo (E5a and E5b pilots) and BDS (B2a and possible B2b pilots). [For GPSL5 pilots, the common 20-millisecond Neuman-Hoffman code is used for all SVs.]
[0484] What is a secondary code (or overlay code)? It is a sequence of bits or chips that generate a 0 or 180-degree phase shift synchronized with the primary code epoch. For the modernized code at E5, the secondary bit transition occurs when the primary code 10230 chips are completed. There are separate sequences on the data and pilot components. The data bits are synchronized with the secondary code sequence on the data components. The secondary code is an integer multiple of the primary code frame (n=5 for Beidou, n=10 for GPS, and n=20 for Gallieo). The data bits are the 0 or 180-degree phase rotation at the end of the n-chip secondary code. For more details on decoding for each data channel, see [link to documentation]. Figure 8B Decoding the pilot channels is simpler. Each master PRN code for Beidou and Gallieo is assigned a unique pilot code, and all GPS pilot channels use the 20-bit Neuman Hoffman code for positioning.
[0485] Figure 8B This shows the decoding of the sideband data channel.
[0486] It should be noted that the receiver cannot use coherent integration exceeding 1 millisecond until the secondary code phase is known. Therefore, the receiver must employ alternative methods to track or effectively maintain the signal while learning the secondary code phase. The primary code phase acquisition step requires a large number of correlators, while the secondary code phase acquisition step requires far fewer. It only requires enough to observe the signal, maintain basic tracking, and observe the noise floor. Examples include three correlators for advance, immediate, and lag, and several more advance and more lag correlators for the observability of the noise floor. Tracking can also be performed on a lower-rate block phase estimator, where the number of correlators is chosen so that the estimated code phase does not fall outside the observation window. It is assumed that searching for the carrier frequency estimate will drive the code Doppler without losing the signal.
[0487] [In an alternative embodiment, the integration results that satisfy a lower threshold can be temporarily stored and coherently accumulated over all possible secondary code phases, waiting to reach a higher SNR threshold associated with a very low false alarm probability. After alignment to account for different times of signal transmission, the secondary code phase "intervals" can be compared across multiple satellites.]
[0488] In another alternative embodiment, the noise floor can be predetermined without using automatic gain control, thus eliminating the need for an additional correlator.
[0489] An L1+L5 receiver can typically obtain initial positioning using only L1. If it can reduce its time uncertainty to below 1 / 2 millisecond, it will be able to predict the secondary code phase without measuring it. If it has a coarse time positioning (described later in Box 8), the data bit phase it learns from GPS L1 may only be + / - 10 milliseconds, which is insufficient for predicting 100 milliseconds, and it will still need a method to measure the secondary code phase. However, L1-based positioning generally observes the receiver clock offset; therefore, large frequency errors do not need to be handled during secondary code phase estimation.
[0490] On the other hand, only L5 receivers will need to use the code phase and coarse frequency estimate obtained from the main search method, as shown in Box 2, to measure the secondary code phase. The frequency step size is as large as possible to reduce search time and power consumption. Therefore, only L5 secondary code search must operate under these conditions. For a main code search frequency step size of 300 Hz, the worst-case frequency error is 150 Hz. Moreover, for shorter acquisition times (such as less than 50 ms), the secondary code phase reversal mode affects the frequency at which maximum power occurs. In other words, the main code search may not have the strongest power closest to the correct frequency. This is a frequency aliasing process. First, an independent secondary code estimation method for each satellite is proposed. Second, a grouping method is proposed, where multiple satellites are processed simultaneously to observe more secondary code bits concurrently. The first independent method: Independent Differential Histogram Method 1
[0491] The first independent method uses a differential phase detector and a histogram method called IDHM1. This method has several advantages: it tolerates frequency errors up to 500 Hz and can even operate with low to medium signal strength. This makes it well-suited for the master code phase acquisition method in Box 2.
[0492] While the master code phase capture in Box 2 uses millisecond sample data that is not time-aligned with the code phase, the IDHM1 uses continuous correlated samples whose boundaries are code epochs, i.e., the events at which the master code generator begins and is in phase with the incoming signal. The epoch position within the receiver's millisecond window is measured in Box 1 and is called the code phase. The receiver can generate correlated samples in one of two ways: by decomposing the millisecond-to-millisecond correlation at the epoch into two sums, or by selecting samples from the incoming sample stream between the samples where the epoch occurs.
[0493] signal model
[0494] Assume that the E5 signal, as the most general model, has components I and Q in each of the two sidebands A and B (where I is in phase and Q is quadrature):
[0495] Equation 4
[0496] SdataA(t)=AmpAi*dA(t-τ)*scAi(t-τ)*cAi(t-τ)*cos(2π*f A *(t-τ)+α)+n(t)
[0497] SpilotA(t)=AmpAq*scAq(t-τ)*cAq(t-τ)*sin(2π*f A *(t-τ)+α)+n(t)
[0498] SdataB(t)=AmpBi*dB(t-τ)*scBi(t-τ)*cBi(t-τ)*cos(2π*f B *(t-τ)+β)+n(t)
[0499] SpilotB(t)=AmpBq*scBQ(t-τ)*cBQ(t-τ)*sin(2π*f B *(t-τ)+β)+n(t)
[0500] Let X = the Xth component, then AMPX is the received amplitude in the Xth component, and 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 any one of Ai, Aq, Bi, and Bq. There is no data regarding the pilot components. Assume that the carrier frequencies fA and fB are correlated with the center carrier frequency fC according to their relative wavelengths. The carrier frequencies are the pseudorange time-varying rates (i.e., pseudorange rates) converted from meters per second to cycles per second according to the broadcast frequencies of A, B, and the center channel (1175.42, 1207.14, and 1191.795 MHz, respectively).
[0501] Assume the receiver has erased the master code sequence cX as some estimate of the code delay t and is at frequency f on component x. A ^.
[0502] The in-phase and quadrature correlators for each component have the following forms:
[0503] Equation 5
[0504] CorrIx=AmpX*dx(t-τ)*scX(t-τ)*cos(Φx)+n I (t)
[0505] CorrQx=AmpX*dx(t-τ)*scX(t-τ)*sin(Φx)+n Q (t)
[0506] Where Φ x It is based on estimating f using the estimated component frequencies. x The phase error of the x component of ^.
[0507] Equation 6
[0508] Therefore, Φ x =2π*(f X -f x ^)(t-τ)+α
[0509] Ignoring noise components: The phase error can be estimated using the arctangent of the ratio of the quadrature correlator to the in-phase correlator, since the amplifier, data, and secondary code coefficients are identical in both the numerator and denominator.
[0510] Equation 7
[0511] Atan2(corrQx / corrIx)=atan2([AmpAx*dx(t-τ)*scX(t-τ)*sin(Φ x )],[AmpAx*dx(t-τ)*scX(t-τ)*cos(Φ x )]=Φ x ^radians
[0512] Note that the secondary code phase is canceled out by the 1-millisecond phase estimate. This method identifies phase errors and is commonly used as a phase detector to drive a phase-locked loop. However, the noise is quite significant within the 1-millisecond integration time of the weak signal.
[0513] How to differentially detect changes in the secondary code chip
[0514] Now, let's consider the phase change between two adjacent correlators using trigonometric identities:
[0515] Equation 8
[0516] cos(AB) = cosA cosB + sinA sinB
[0517] sin(AB) = sinA cosB - cosA sinB
[0518] These two items are also called the dot product and the cross product.
[0519] Equation 9
[0520] Dot(AB) = cos(AB)
[0521] Cross(AB) = sin(AB)
[0522] Insert and ignore noise, and let 1 represent a more lagging correlator at t1, and 0 represent a more leading correlator at t0:
[0523] Equation 10
[0524] cos(epoch1-epoch0)=AmpX1*dx1*scX1*AmpX0*dx0*scX0*cosΦ1*cosΦ0+AmpX1*dx1*scX1*AmpX0*dx0*scX0*sinΦ1*sinΦ0
[0525] =AmpX1*AmpX0*[dx1*dx0*sc1*sc0]*[cosΦ1*cosΦ0+sinΦ1*sinΦ0]
[0526] =AmpX1*AmpX0*[dx1*dx0*sc1*sc0]*[cos(Φ1-Φ0)]
[0527] sin(epoch1-epoch0)=AmpX1*dx1*scX1*AmpX0*dx0*scX0*sinΦ1*cosΦ0-AmpX1*dx1*scX1*AmpX0*dx0*scX0*cosΦ1*sinΦ0
[0528] =AmpX1*AmpX0*[dx1*dx0*sc1*sc0]*[sinΦ1*cosΦ0–cosΦ1*sinΦ0]
[0529] =AmpX1*AmpX0*[dx1*dx0*sc1*sc0]*[sin(Φ1-Φ0)]
[0530] As long as the phase change is less than 180 degrees, cos(Φ1-Φ0)>0 and sin(Φ1-Φ0)<0. As long as the data bits remain unchanged, the cosine of the angle difference can be used to distinguish and detect changes in the secondary code. This method is applicable to all phase shifts of the pilot component without data modulation (and where the amplifier is greater than the noise level).
[0531] Since atan2 is a nonlinear function and is noisy when AmpX is small compared to noise, the phase detector is also noisy, thus affecting frequency tracking stability. One way to keep the frequency error below 500Hz (inferred phase difference less than 180 degrees) is to use a damped frequency loop that can filter out the noise discriminator. However, reducing the frequency error is beneficial because the correlation improves, resulting in a stronger signal.
[0532] Frequency errors can be reduced by operating a phase-locked loop (PLL), a frequency-locked loop (FLL) (also known as an automatic frequency control (AFC) loop), or a block frequency error estimator. A PLL with highly filtered 1-millisecond phase estimation can be used. However, secondary code estimation is considered a pull-in state and is generally not used for measurements used in positioning. In this case, an AFC loop that drives the frequency error to zero is sufficient. A block frequency estimator combines several frequency error discriminators together to estimate the average frequency error.
[0533] The preferred method proposed here is a hybrid of AFC and block phase estimation. The differential phase detector has already calculated the cosine of the phase change across two consecutive epochs. This is a key value for secondary code phase determination and will be described later after summarizing frequency tracking. For stronger signals, it is sufficient to form phase error estimates for each epoch and then subtract them to calculate the incremental phase.
[0534] Therefore, by also calculating the sine of the phase change, the phase change can be estimated as the arctangent of the sine of the phase change divided by the cosine of the phase change.
[0535] Step 1 is to calculate the cosine and sine of the phase change over consecutive epochs.
[0536] Step 2 is to identify whether the secondary code phase has changed between the current and previous epochs. This is identified by the sign of the cosine of the change in behavior. A negative value indicates that the secondary phase has changed. A positive value indicates that it has not changed. This is called differential detection.
[0537] Step 3 is to form a frequency error discriminator. For strong signals, where corrI 2 +corrQ 2 If the correlator power is greater than a predetermined threshold, the difference of an epoch phase as defined in Equation 7 is used.
[0538] Equation 11
[0539] δΦ / dt=(Φ1-Φ0) / dt={Atan2(corrQ1 / corrI1)-Atan2(corrQ0 / corrI0)} / (2π) / dt
[0540] The advantage of this detector is that the sign of the phase at each epoch is unaffected by the signs of the secondary code and data bits, as these are shared by the numerator and denominator of the atan2 function. (Note that the atan2 output is converted from radians to period by dividing by 2π.) This method also has the advantage of producing detectors with a range of + / -500 Hz. These detectors can be averaged in block phase estimation.
[0541] Equation 12
[0542] δΦ / dt^=Σ N epoch=1 δΦ / (2π) / dt / N(Hz)
[0543] The averaged frequency error is then input into at least a first-order frequency-locked loop as a method for further filtering the frequency error. The updated frequency estimate is used in subsequent correlations to improve the correlation power.
[0544] For weaker signals, where the correlator power is below the predetermined threshold mentioned above, the phase change for two epochs is then formed by first averaging multiple instances of the cosine and sine phase changes (as described in Equation 10) and then using atan2. To average the cosine and sine terms over multiple consecutive epochs, it is necessary to consider the observed differential phase change, as this alters the sign of the cosine and sine terms.
[0545] First, handle the minor code change:
[0546] Equation 13
[0547]
[0548]
[0549] Note that the superscript w^ indicates the sign of the filtered sum of the wraparound estimate.
[0550] Then, after averaging over a predetermined number of epochs, a filtered incremental phase estimate is formed.
[0551] Equation 14
[0552] δΦ w ^ / dt=atan2(sin w ^ / cos w ^) / (2π) / dt(Hz)
[0553] Since the cosine and sine have been wrapped around with the secondary code bit phase change, the range of this detector is now reduced by a factor of two to + / -250Hz.
[0554] To track correlation peaks, operate the frequency tracking loop, and update differential secondary code bit detection, multiple correlators are used to generate a range of code phases. Since as few as five correlator pairs are needed to form the advance and lag of the code tracking loop, centered on the instantaneous point for frequency tracking and frequency phase estimation, and at least one set of correlators with very advance and very lag are used for noise estimation to generate a signal-to-noise ratio estimate to verify that the signal is still observable at the center.
[0555] Note that there are five correlator pairs for each component because each component has a different secondary code sequence. To simplify tracking and also improve tracking of weaker signals, all four components are tracked jointly.
[0556] The center code phase estimate is propagated from millisecond to millisecond, and the code Doppler estimate is obtained in chips per second by converting the received carrier frequency estimate into code Doppler using known relationships: at 1176.45 MHz, each code chip has 115 carrier cycles, 10230 chips per millisecond; at 1191.795 MHz, each code chip has 116.5 carrier cycles, 10230 chips per millisecond; and at 1207.14 MHz, each code chip has 118 carrier cycles, 10230 chips per millisecond.
[0557] Since the initial code phase estimate is obtained from the primary code search (typically a 1 / 2 chip search), the code phase error can be 1 / 4 chip or more. Furthermore, the primary capture block 2 can require hundreds of milliseconds to achieve the SNR needed for signal detection. Therefore, the secondary code phase capture block will require a similar integration time to reduce noise on the code phase and frequency error detectors for updating the code tracking and frequency tracking loops, respectively.
[0558] After the correlation results for the new epoch are available, the data are processed to form amplitude and phase. A one-millisecond power or amplitude estimate is formed for each in-phase and quadrature correlator pair. Next, the one-millisecond power estimate is integrated over multiple milliseconds, such as twenty. For simplicity, power is chosen here, but the amplitude can be averaged in the same way.
[0559] Code tracking during secondary code phase estimation
[0560] The power sum of the Js component (j), where Js = (1 to 4 for GAL and BDS, 2 for GPS), in time (t) k From 1 to N corrat Each correlator pair (c):
[0561] Equation 15
[0562] PSum(j,c)+=Power(j,c,t k )=corrI(j,c,t k ) 2 +corrQ(j,c,t k ) 2
[0563] Equation 16
[0564] PSumGlobal(c) = Σ Js c=1 PSum(j,c)
[0565] Maximum power position c Max Estimated as the c-th correlator pair, when
[0566] Equation 17
[0567] c Max = index c, where PsumGlobalMax = Max{PSumGlobal(c)} for c = 1, N corr
[0568] Noise power estimation is related to the location of maximum power c. Max The sum of all non-adjacent correlations.
[0569] Equation 18
[0570] PSumNoise=Σ cMax c=1 PSumGlobal(c) where |cc Max |>1
[0571] Equation 19
[0572] SNR=10*log10((PsumGlobalMax–PsumNoise) / PSumNoise)
[0573] The loop is updated when SNR > a predetermined threshold, such as 6dB, which means that the maximum power sum is at least twice the noise power sum.
[0574] The code loop is a standard delay-locked loop, where the detector is powered by an instantaneously normalized advance-lag power.
[0575] Equation 20
[0576] DLLdetector(k)=[PSumGlobal(c Max -1)-PSumGlobal(c Max +1)] / PSumGlobal(c Max )
[0577] The DLL is the input to a standard first-order tracking loop with a loop filter G(z), where z represents the time delay of the discrete-time filter. The filtered discriminator output is added to the previous stage to generate a filtered code phase center estimate. The code Doppler component is also added at each epoch as an unfiltered feedforward propagator. The filtered code phase can be represented as a scaled version of the previously filtered code phase plus the scaled current and previous DLL detectors.
[0578] Equation 21
[0579] filteredCodePhase(k)=C1*filteredCodePhaseH(k-1)+C2*(Dlldetector(k)+C3*Dlldetector(k-1)
[0580] The code Doppler is also added every millisecond.
[0581] Equation 22
[0582] filteredCodePhase(k)+=filteredCarrierFrequency(cycles / sec) / 116.5(cycles / chip)*0.001sec
[0583] The subsequent correlation uses this code phase as the center code phase for channels A and B.
[0584] Frequency tracking during secondary code phase estimation
[0585] The frequency tracking loop is a standard frequency-locked loop. However, the combined detector is new, and its advantage is the ability to combine all components together to improve its accuracy with weak signals. It is necessary to determine the frequency reference of the loop. Furthermore, although the frequencies used for components in the same sideband A or B are the same, the frequencies between the sidebands differ. Fortunately, the frequency difference is predictable. It is chosen to track the center frequency between A and B. This is optimal when the main code phase capture block 2 uses multiple components across the sidebands because it sets the sideband frequencies above and below the center frequency. Therefore, the winning code phase is naturally applied to the center frequency. Deterministic relationship between A, B, C Doppler and range rate.
[0586] The broadcast frequency used for E5 and B2 signals is 1191.795 MHz. The Doppler observed in the A, B, and center channels is affected by each sideband wavelength. The transmission frequency is defined.
[0587] f tran Transmission frequency in Hertz
[0588] c is the speed of light in m / s = 2.9979245e8 m / s
[0589] λ tran It is the wavelength of the transmission frequency, with units of meters (m) per period = (c / f) tran )
[0590] Therefore, the observed Doppler is Dtran = rangeRate * (-1 / λ) tran )
[0591] Assume that the correlator will use different frequencies in each sideband correlation, but the resulting phase estimate can be shifted back to the center frequency.
[0592] Equation 23
[0593] λ a =(c / 1176.45e6)=0.254828049
[0594] λ b =(c / 1191.795e6)=0.251547001
[0595] λ c =(c / 1207.14e6)=0.248349370
[0596] The Doppler difference between the center (using A as a reference) and the lower sideband A is:
[0597] D c –D a =(-1 / λ) c *rangeRate)-(-1 / λ a *rangeRate)
[0598] =-rangeRate[(λ a -λ c ) / (λ a *λ c )
[0599] =Da*[(λ a -λ c / *λ c ]
[0600] =Da*sf ca
[0601] Equation 24
[0602] sf ac =[(λ a -λ c / *λ c ] = 0.013043478
[0603] sf bc =[(λ b -λ c / *λ c ] = -0.012711865
[0604] Note that the conversion from A-Doppler to C and the conversion from B-Doppler to C have different scaling factors.
[0605] Conversely, the transformations from C to A and from C to B (where C is the reference) have the same scaling factor (except for the opposite sign):
[0606] D c –D a =(-1 / λ) c *rangeRate)-(-1 / λ a *rangeRate)
[0607] =-rangeRate[(λ a -λ c ) / (λ a *λ c )
[0608] =Dc*[(λ a -λ c / *λ a ]
[0609] =Dc*sf ca
[0610] Equation 25
[0611] sf ca =[(λ a -λ c / *λ a ] = 0.01287554
[0612] sf cb =[(λ b -λ c / *λ b ] = -0.01287554
[0613] Therefore, when tracking a composite signal (all four components), the initial Doppler is the composite Doppler from the main code phase capture block 2. The C-Doppler is converted to A and B Dopplers for mixing in the A and B correlators. The phase detector is then updated in each of the A and B channels, and then rotated back to the filter to update the composite frequency of the C channel.
[0614] The phase detector in the four components uses index c Max The real-time correlater is updated.
[0615] Now define up to 4 different filtered frequency error discriminators.
[0616] Consider frequency error detectors from Ai, Aq, Bi, and Bq:
[0617] Note that since the frequency change detector is independent of the absolute phase, and the data is 90 degrees out of phase with the pilot component, they can be averaged to obtain a single-phase estimate for each sideband. Assume the frequency loop has a time scaling that converts the phase change into a frequency change. Therefore, the detector has radian units.
[0618] Equation 26
[0619] δΦ w ^ A / dt=atan2((sin w ^ Ai +sin w ^ Aq ) / (cos w ^ Ai +cos w ^ Aq ))radians / 2π / 0.001(Hz)
[0620] δΦ w ^ B / dt=atan2((sin w ^ Bi +sin w ^ Bq ) / (cos w ^ Bi +cos w ^ Bq ))radians / 2π / 0.001(Hz)
[0621] Each of these detectors is compensated to produce an averaged detector in the center frequency reference frame:
[0622] Equation 27
[0623] δΦ w ^ C / dt=[(δΦ w ^ A / dt+DopplerA*sf ac )+(δΦ w ^ B / dt+DopplerB*sf bc )]*0.5
[0624] The advantage of this detector is that it uses all four independent components, thus improving 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 former.
[0625] Equation 28
[0626] F c ^(k)=[a1*F c ^(k-1)+a2*F c ^(k-2)]+[b1*δΦ^ C (k) / dt+b2*δΦ^ C (k-1) / dt+b3*δΦ^ C (k-2) / dt]
[0627] After updating the filtered frequencies, an updated Doppler is formed for the A and B sideband correlators.
[0628] Equation 29
[0629] F^a=Fc^(k)*sf ca
[0630] F^b=Fc^(k)*sf cb
[0631] These carrier frequency values are used for subsequent correlations related to A and B.
[0632] Figure C shows the uncompensated four-component AFC discriminator values.
[0633] The following shows an uncompensated four-phase-change discriminator. The loop averages them to an average frequency. The offset from the center is compared with the compensation term Doppler X*sf. xc Proportional. The compensation term is important because its size increases with the Doppler magnitude. Therefore, when the two phase estimates are close to 180 degrees, any deviation will affect the ability of the wraparound to resolve ambiguities.
[0634] Figure 8C The uncompensated four-component AFC discriminator values are shown.
[0635] The following Figure 8D The discriminator trajectory is shown when the phase-change detector is compensated by the expected phase change from the signal Doppler.
[0636] Figure 8D The values of the AFC4 component discriminator with compensation are shown.
[0637] Aggregate differential secondary code phase bit estimation
[0638] Although the filtered code phase and the filtered center frequency appear at a low rate to ensure minimum SNR before updating the filter, differential detection occurs at every epoch. There are countless possibilities for using these four components.
[0639] The first method described performs secondary code phase estimation (SCE) independently for each component.
[0640] Assume each component has its own length. E5Ai is 20 bits, E5Aq and E5Bq are 100 bits, and E5Bi is 4 bits. GPSL5i is 10 bits, L5q is 20 bits, B2Ai is 20 bits, B2BAq is 100 bits, B2Bi is 1 bit, and B2Bq is 100 bits (as of the time of writing).
[0641] The cosine of the cross-epoch phase difference described in Equation 10 is called the dot product detector.
[0642] Equation 30
[0643] Dot(y,x) = cos(epochY - epochX) where y > x.
[0644] The usage is as follows: when dot(y,x)<0, the declaration is changed; otherwise, the declaration is not changed.
[0645] A histogram is introduced to allow for integrations longer than the code. In the second epoch, when the first point (1,0) is available, a counter called scCntRS is initialized to 0. R refers to the sideband, and S refers to the component. This counter will represent the histogram interval index. The counter increments each epoch and wraps back to zero at the length of the secondary code sequence scSizeRS. For example, scCntRS for E5Ai = scCntAi ranges from 0 to 19. The timestamp of the first detection is stored in msec0XY to provide a time reference in milliseconds.
[0646] The lowest memory method uses a single histogram, counting up when dot(y,x) < 0, indicating a change, and counting down when dot(y,x) >= 0, indicating no change. If the long integral contains only noisy input, this value should be close to zero. If the histogram interval maps to the positions of changed secondary code points, the histogram interval will hold a large number equal to the observed number of changes. Conversely, in the case of intervals without changes, the histogram interval should hold a large negative number.
[0647] To more easily visualize the test software's history, two histograms were implemented: one for changing events and the other for events without changes. The logic is as follows:
[0648] Equation 31
[0649] If(dot(y,x)<0)histoChange[scCntRS]+=1
[0650] ElsehistoNoChange[scCntRS]+=1
[0651] scCntRS+=1
[0652] if (scCntRs = scSizeRS)
[0653] scCntRS=0
[0654] When to analyze histograms
[0655] The minimum number of bits that can be used to estimate the phase of the secondary code without ambiguity can be called minHistoAgreementCnt, i.e., the minimum histogram. Figure 1 The count is based on the actual code sequence and its length. It is impossible to find the length of a subset of positions that repeats more than once.
[0656] For example, in the sequence 001100111010001100110101, the pattern 00110011 appears twice. However, the sequence 001100111 appears only once. Therefore, minHistoAgreementCnt may be approximately 9.
[0657] Therefore, once the number of data intervals reaches minHistoAgreementCnt, it may be possible to begin testing the correlation between the histogram and the true secondary code. However, if the signal is weak, waiting for more bits is more reliable.
[0658] When the signal is strong, such as above 30dB-Hz, the 1ms differential phase noise is low, that is, the error probability in dot(y,x) is low. It is possible to satisfy SCE as long as minHistoAgreementCnt is achieved and a match is found at that bit.
[0659] In weak signal conditions, such as below 30 dB-Hz, the probability of errors at point (y,x) is higher, requiring more time to reach minHistoAgreementCnt. This is an advantage of the histogram method. By integrating over a longer time than scSizeXY, errors can be overcome by using other correct events.
[0660] How to compare histograms with actual secondary codes?
[0661] The matching method used for bit change detection by differential estimation first generates the derivative of the true sequence. For example, in the sequence above, a bit change occurs when two consecutive bits differ. The change for the first bit uses the last bit as the preceding bit. In this case, the last bit is 1, and the first bit is 0. Therefore, the first changed bit is 1. The second bit is 0, and the first bit is 0, so the second changed bit is 0. The derivative of the above sequence is 101010100101001010101111.
[0662] The second step is to merge the `histoChange` and `histoNoChange` arrays into a single array. Within each interval, these two values are compared. If the `histoChange` count is greater than the `histoNoChange` count, the result is declared as changed. If the `histoNoChange` count is greater than the `histoChange` count, the result is declared as unchanged. If the counts are equal, the result is declared as indeterminate, recorded as result = -1. Logically, let `changeMeas` be the change measured in each interval.
[0663] Equation 32
[0664]
[0665] Next, the histogram results are compared with the true secondary code derivatives at all possible phases. This is equivalent to summing the counts of intervals where two sequences have the same change or no change at all possible offsets between the two sequences. When one sequence reaches the end before the other, it is cyclically shifted to produce the remaining intervals. The shift that maximizes the sum is the most probable secondary code phase. The start time of the secondary code is the start time, stored in msec0, plus the shift, plus an additional 1 millisecond to account for the 1-millisecond delay when obtaining the first validly measured bit difference.
[0666] This process of shifting, comparing, summing, and maximizing can also be represented algorithmically. In the following double loop, all possible true phases are tested in the outer loop. The fact of the shift is then compared with the measured change. At each possible phase position, the measured change in each interval is tested. If the measured change changeMeas[i] < 0, it means that there is no decision at that interval, and that interval is ignored. This effectively reduces the maximum number of protocols. The derivative of the true sequence is generated by forming changes between the current and previous true bits. The protocol count is incremented when a protocol is found. After testing the derivative of the true secondary code for each phase, the protocol count for the current phase is compared with the maximum observed protocol count (i.e., the best count (bestCnt)). The position with the highest pass count is saved (bestPhase).
[0667] Equation 33
[0668]
[0669]
[0670] Example for pilot channel
[0671] An example of this method is shown in the table below. The leftmost column is the histo interval index. The next column to the right is the changed histo, followed by the unchanged histo. The truth value is in the next column to the right. The second column from the right is the meas decision column, which is the sum of the two measured changed and unchanged histos, with 1 indicating that the changed histo is greater than the unchanged histo. The rightmost column is the derivative of the truth value sequence, which is 1 if the current position is different from the previous position. In the first row, the previous position is taken from the last position of the truth value sequence. By inspection, it can be seen that the meas decision column lags behind truthChange by 3 rows. Therefore, bestPhase will be located in the 4th row at i4, because the first 1 in this column matches the first 1 in the 0th row or the truth change column. The timestamp of the first position of the sequence is also one millisecond earlier, because the difference position is detected with a one-millisecond lag.
[0672]
[0673] Table 1 Examples with data channels
[0674] This is the result used for the AI data channel. The secondary code is 20 bits long. The top row is the histogram interval index: i0, i1, ..., i10. The second row is the histoChange array. The third row is the noChangeHisto array. The fourth row is the actual secondary code. Note that the histogram integral is 499 + 20 milliseconds because there are 499 observations per interval. Note that in the 4th interval (interval i3), changeHisto is almost identical to noChangeHisto. Since the data bits are in phase throughout the secondary code, the derivative is not zero at the first bit of the new sequence, thus only affecting the histo intervals at the beginning of the sequence. Because the first and last bits are both one, the expected result at the beginning of the sequence is no change decision. This result shows that the data bit change rate is approximately 0.5 over about 500 epochs. Note that the optimal count is 19 out of 20 because the derivative of the actual code is zero at the beginning of the actual derivative, but changeCnt is slightly higher, meaning the measured change is 1, which is incorrect. Even with bit errors, the correct phase can still be found.
[0675]
[0676] Table 2
[0677] It should be noted that this was produced using strong satellites, and all bits farthest from the first have the same number of observations. This implies a strong dot product detector.
[0678] Now consider an example with a relatively weak received signal strength (approximately 25 dB-Hz). This is actually 19 dB lower than the nominal signal level of 44 dB-Hz. The figure below shows the algorithm's performance over approximately 1.6 seconds, or approximately 1600 epochs. The actual secondary code phase is 0. In the early part of the experiment, bestCnt is 16 when bestPhase occurs.
[0679] Figure 8E The phase and protocol counts of the secondary code phase length differential detector at 20 ms at 25 dB-Hz are shown.
[0680] The following diagram illustrates how this occurs. The protocol count is 12 when the true phase is 0. Note that there are 8 erroneous intervals, or 4 of them with a margin of 1, but 3 with an error margin of 5! The first interval is where the data bit phase creates a low margin. In this case, the protocol count at phase 0 uses these errors to produce a higher protocol cnt = 16. Therefore, a higher threshold is required for weaker signals.
[0681]
[0682] Table 3
[0683] However, waiting for the best protocol count to be 17 will produce the correct bestPhase0 at msec = 120345, which is approximately 1 second of integration time. Now note that the incorrect bit estimate occurs at the edge of 6.
[0684]
[0685] Table 4
[0686] This result is produced when the threshold is 18.
[0687]
[0688] Table 5
[0689] The chart below shows the results after tracking for more than 6 seconds. The margins are increasing and there are no errors.
[0690]
[0691] Table 6
[0692] This analysis shows that for weaker signals, the low margins at each bit estimate lead to errors. One solution is to wait longer. Another solution is to group the components together, as shorter histograms have higher margins and are used to limit candidate phases for longer histograms. The key element of any design is how to combine the histograms, their information, and the detection threshold.
[0693] Improve detection time and accuracy by combining components.
[0694] Now consider other solutions for combining secondary code information across all components. First, jointly determining the secondary code phase across the four components provides a cross-checking of the results. In the first example, the SNR of channel A is 25 dB-Hz, and channel B is 2 dB weaker at 23 dB-Hz. The B channel pilot with a 100 ms secondary code estimate is formed every 100 ms, and the optimal phase takes 400 ms to reach the correct value of 0. The first three estimates have low optimal counts, so they are obviously low confidence. However, the B channel data with a 4 ms secondary code quickly converges to the correct phase. Furthermore, the incorrect B pilot estimate has a correct modulo 4 ms estimate. The optimal phase estimates for the B pilot channel are 46, 55, and 46, and their modulo 0 4 ms estimates are 2, 3, and 2. Moreover, the B data estimates are consistent with the A pilot and A data estimates, modulo their secondary lengths. For example, the A data estimate modulo 4 is zero, and the A pilot estimate modulo 4 is zero. Moreover, the A pilot estimate modulo 20 is consistent with the A data estimate.
[0695] Figure 8F The four individual components of the differential detector are shown over a long period.
[0696] Therefore, the first approach is to verify whether the longer secondary code estimate is consistent with the shorter length estimate. This is a logical check used as a joint method.
[0697] Another more algebraic approach is to combine all secondary codes into a single search. Histograms cannot be mixed into a single array, but shorter histograms can be repeated to form a single secondary multi-bit sequence at each interval. The image is shown below:
[0698] Gallieo Combinatorial Secondary Code Method
[0699] Consider the Gallieo case. Data A has 20 epochs. Pilots A and B have 100 epochs. Data A has 4 epochs. Therefore, data A is repeated 4 times to produce a 100-millisecond sequence. Data B, with 4 milliseconds, is repeated 24 times to produce a 100-epoch sequence.
[0700] Figure 8G An image showing the phase lengths of the Gallieo secondary code on all four components.
[0701] The actual differential secondary code is repeated in the same way.
[0702] The image is then a 100-epoch histogram with 4 bits per interval. Therefore, the measured bits are changeMeas(i,j), where i = 1, 4 and j = 1, 100. The true derivative array changeTrue(i,j) is similarly repeated. Within each interval, each changeMeas(i,j) data is checked to see if it is valid (not equal to a change relative to no change and at least one vote), and then each bit is compared to the true bit. The protocol count for each interval is at most 4. The optimal phase is searched among the 100 possible phases of the true data. Note that the A and B data channels will vote on the data for each interval. The probabilities are also summed at each interval.
[0703] Here's an example of how a shorter Bdata length is added to 119745 milliseconds to restore correct detection. While this isn't an exhaustive search, it shows that the optimal phase is now captured in true phase 0, not phase 6. The first epoch has a data bit phase reversal, so that bit is lost. But the remaining 3 bits are correctly detected in phase 0. Note that the measured change is copied 4 times to fill 20 intervals. Next, the true secondary code change is shifted down 6 intervals (equivalent to a 2-bit shift since the sequence is only 4 bits) to match the phase 6 assumption on Adata. At this position, the Bdata protocol with phase 6 produces only one bit every 4 bits. With the Bdata protocol added to the Adata protocol, the phase 0 protocol is optimal.
[0704]
[0705] Table 7
[0706] Detection threshold is generated from differential probability.
[0707] The examples above should emphasize the condition that the margin of each histogram interval is an indicator of the correct probability. However, another indicator is the signal strength when collecting each bit. For example, when a single bit comes from a strong signal, it is sufficient to produce a margin of 1 with high confidence.
[0708] Therefore, in general, each histogram interval should have an associated confidence factor or probability derived from the SNR associated with two periods of the related factor data, which form a dot product integrated into histoChange or histoNoChange.
[0709] One solution is to compute the probability of each dot product, where the SNR is mapped to a probability, with a high SNR probability close to one and a low SNR probability close to zero. It's also possible to exclude a new low-confidence bit from the histogram if an update occurs after a high-confidence bit has already been created.
[0710] Improvements to the merging of modified and unchanged histograms and probabilities
[0711] Assume each interval has an associated sum of probabilities for both histoChange and histoNoChange, defined as histoChangeProbSum and histoNoChangeProbSum. histoChange and histoNoChange store counts. The merged results can then be generated alternately at each interval where the decision to change or not change has the highest probability, as shown below. The difference in probabilities divided by the sum of the counts produces the interval probability, with a value between 0 and 1, as shown below:
[0712] Probability = (probSum1 – probSum2) / (probCnt1 + probCnt2). If the two probabilities are similar, then the probability will be close to 0. If one of them is much larger, then the probability will be close to 1.
[0713] It also counts the number of available measurable bits for each secondary code sequence.
[0714] Method 1)
[0715]
[0716]
[0717] Method 2) Another approach is to use count-based decision-making as before, but derive the probabilities in the same way.
[0718]
[0719]
[0720] Suppose that within a specific interval, the total change probability is 100 epochs, and the total probability of change is 50, while the total probability of no change is 10 epochs, and the total probability of no change is 5. Thus, these two sources provide equivalent information. The marginProb is 90 / 100, and the changeProb is 45 / 110. Now consider the low-margin case. Assume the total change probability is 100 epochs, and the total probability of change is 15, while the total probability of no change is 98 epochs, and the total probability of no change is 20. Here, the marginProb is 2 / 198, and the changeProb is 5 / 198. This situation occurs for all low SNR updates. In this case, the threshold for optimal consistency is required to be close to the length of the sequence.
[0721] Therefore, the pass threshold for optimal consistency counting needs to be based on either the sum of probabilities or the sum of marginal probabilities, depending on which method is preferred.
[0722] Define confidence(y) = probSum(y) or marginSum(y) to represent the confidence of the available bits. The desired result is that if the confidence is very high, then a minimum threshold based on the characteristics of the sequence (i.e., the minimum number of bits that cannot pass falsely) is allowed for fast detection. A false pass means that there is more than one identical combination of bits in the sequence. This is called minFalsePassThresh. The next step is to calculate a second threshold based on the confidence based on margin or probability. The lower the confidence, the higher the threshold. While the threshold can be calculated as the joint probability based on the probability density function of each correct bit, a simpler approach is to scale the sequence length by the confidence and then subtract it from the length: that is, threshold = (1 – confidence) * length. In this way, if the confidence is 1, then the threshold is zero, and minFalsePassThresh sets the minimum threshold. At the other extreme, if the confidence is 0, then the minimum threshold becomes the length. It should be noted that for data sequences, the phase reversal caused by the data will reduce the maximum value by 1. However, in general, the longest sequence is the pilot code without a data sequence, so the best protocols can reach the full length.
[0723] If (the longest component's availableBits(y) > minFalsePassThresh)
[0724] minConfThresh=(1–confidence)*maxPilotLength
[0725] Note that when combining components, the protocol count can reach up to four times the maximum pilot length. Therefore, the test has two phases. First, additional components are used to identify the best candidate. Second, the protocol count used for that pilot is used to make the final decision.
[0726] The test becomes:
[0727] Find the optimal phase using all components in bestCnt.
[0728] Then, find the component maxY with the largest consistency count at bestPhase from the candidate pilot codes, and use the availableBits from this component.
[0729] test:
[0730] If(availBits(maxY)>minFalsePassThresh)
[0731] If(agreeCnt(maxY,bestPhase)>minConfThresh)
[0732] The statement indicates that the secondary key phase was found at bestPhase.
[0733] The optimal phase provides the offset of the secondary code phase starting from any point anchored in the histogram. Furthermore, because the difference requires 2 bits for initialization, the histogram index and start time are lagging by one epoch. Therefore, the prediction start of the current secondary code is simply the start time stamp plus the optimal phase offset minus one millisecond to compensate for the first epoch. The start time of the next secondary code phase can be calculated in this way: it is
[0734] Extreme case: Frequency error greater than 250Hz
[0735] The frequency error discriminator, which uses the phase difference between the current and previous epochs, is based on the dot product detector being wound back to handle phase inversion of the secondary code. This wrap-back effectively reduces the discriminator range from + / -500Hz to + / -250Hz. Therefore, if the frequency error is greater than 250Hz but less than 500Hz, 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, noise in the correlator value will cause the dot product detector to fail. Therefore, for weaker signals, this method will be unreliable when the frequency error is greater than 250Hz.
[0736] One solution to this problem is to implement an aliasing locking method. One approach is to implement another set of correlators spaced + / - 500 Hz apart from the filtered center frequency. Then, if the power associated with one of these correlators is higher than the center power, an aliasing condition is declared. In this case, the estimated frequency is reset to the frequency of the strongest power. Since the previous information would be incorrect, the secondary code phase estimation process restarts.
[0737] Another method for detecting large frequency errors is to observe the code phase trajectory across a set of parallel correlators. Consider a set of Nc correlators, where the code phase of the center correlator is derived from the master code search. This set of correlators must cover a range of code phases to include code phase trajectory changes based on the maximum frequency error (e.g., 500 Hz). The code change at E5a exceeds 100 milliseconds = 500 / 115 * 0.1 = 0.44 chips. Therefore, at least three correlators are required: a center correlator propagating at the master code search frequency, and then an additional correlator spaced at 1 / 2 chip intervals to capture the worst-case code slip due to frequency errors.
[0738] As a method for learning code Doppler error and thus carrier frequency error, the code phase offset with the center correlator is formed by a discriminator used in conjunction with a conventional code tracking loop. The code Doppler can be estimated based on the discriminator's trajectory over time. The slope of this trajectory can then be converted into a carrier frequency error estimate.
[0739] The model for the code phase offset trajectory relative to the correlator center is as follows:
[0740] Equation 34
[0741] codeOffset(t)=offset0+offsetSlope*(t–t0).
[0742] At each epoch, three correlators and a conventional delay-locked loop are used to estimate the code phase offset, where the code offsets from the peak value:
[0743] Equation 35
[0744] codeOffset(t) = (powerEarly(t) – powerLate(t)) / Normalizer(t) (unit of code spacing)
[0745] Normalizer(t) is proportional to the instantaneous power and can be estimated from either the average of the advance and lag correlator powers or the instantaneous correlator power. It should be scaled to convert the advance minus lag power into the code offset in the code sample for each chip.
[0746] Equation 36
[0747] A normalizer like this = instantaneous power * 4 * 1.5 * (1 / To – 1) / To
[0748] Where To is the correlator sample for each chip, typically around 2, and the scaling factor for instantaneous power is around 3.
[0749] To improve sensitivity, the power in each correlator is summed with a moving window over 20 epochs. For a 100-millisecond set of epochs, there are 100 codeOffsets, each of which is the average over 20 epochs. Linear regression is applied as follows: Let y(t) = H(t) * x(t) + noise, where y = [codeOffset(t0) ... codeOffset(t99)], x = [offset0offsetSlope]T and H = [10,1dt(1), ...,1dt(N-1)]T. Y is an Nx1 column vector of measurements, X is a 2x1 unknown vector, and H is an Nx2 matrix of coefficients. The solution is X = (H T H) -1 H T It can be solved using the standard matrix method. The posterior fitting residuals (i.e., the sum of squares of the estimated state and the measurements) preserve information about the quality of the positioning. (H) T H) -1 The determinant indicates the observability of the solution.
[0750] This method can be implemented as either closed-loop or open-loop. In both cases, the slope is estimated over a longer time period (such as 100 milliseconds). In the closed-loop case, a discriminator can be used to shift the estimated code phase of the correlator group every 20 milliseconds. In this case, codeOffset(t) combines the shift with the discriminator output to produce an equivalent open-loop estimate.
[0751] Equation 37
[0752] codeOffsetCL(t)=codeOffset(t)+sumOfShifts(t)
[0753] 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).
[0754] At a certain update rate, such as every 100 milliseconds, process codeOffset(t) for the open-loop method or codeOffsetCL(t) for the closed-loop method, such as using linear regression, to generate the code slope in the chip. Then convert it to carrier Doppler in Hz as follows: the code Doppler in the chip is based on the relationship between code Doppler and carrier frequency, codeDoppler(chip) = -df(carrier Hz) / 115*dt. Solve for df: -115*codeChange / dt = df. Let codeSlope = codeChange / dt.
[0755] Equation 38
[0756] df at E5a in carrier Hz code = -codeSlope (chip) * 115 Hz / E5a chip from the correlator
[0757] df at E5ab in carrier Hz code = -codeSlope^(chips / second) * 118 Hz / E5b chip from the correlator
[0758] If the magnitude of df is large, say greater than 250Hz, the frequency error estimate of the wraparound will be aliased. This aliasing frequency can be estimated by creating an unwrapped version of the incremental phase estimator given in Equation 14. The unwrapped incremental frequency is formed by the unwrapped sin and cos terms. The unwrapped discriminator is chosen when the code Doppler (code slope) is large, and the confidence level is close to 1 when the regression is trustworthy (i.e., R²). R² describes how well the sum of squares of the residuals after fitting compares to the sum of squares of the data before regression. A value close to 1 indicates a good regression fit. A value close to zero indicates a poor regression fit, or a slope of zero.
[0759] Equation 39
[0760]
[0761] This frequency error is applied as a one-time adjustment to the estimated carrier frequency in subsequent correlations, and the histogram observer is reset.
[0762] Example of 400Hz error
[0763] Figure 8H An unwound cosine and sinine detector with a frequency error of 400 Hz is shown. This level of frequency error causes a 360-degree rotation within 2.5 milliseconds. The detector also shows the effect of secondary code phase reversal.
[0764] Figure 8H An example of the 400Hz error of the FLL frequency detector is shown.
[0765] The calculated code slope is 7.570794 chips / second, R² = 0.994. This translates to a carrier frequency error of 7.57 cells / second * 0.5 chips / cell * -115 cycles / chip = -435Hz. The wrapped-back frequency error detector produces a frequency error of 105Hz. The unwrapped frequency error detector produces -395Hz. Since the code Doppler slope matches the unwrapped detector better, aliasing conditions are declared, the frequency is corrected, and the histogram is reset. If the correlators are saved, they can be rerotated and the differential detector can be recalculated.
[0766] Figure 8I An example DLL with a 400Hz error is shown.
[0767] The calibrated detector components are shown below.
[0768] Figure 8J An example of removing an FLL detector with a 395Hz frequency is shown.
[0769] Figure 8J A small residual frequency error is shown, but the large frequency error of the fast-rotating detector has been removed, resulting in a phase reversal from the secondary code, which is the object of the detector. In another embodiment, two additional correlator trajector tracks are calculated: one wrapped around 500 Hz and the other around -500 Hz. If the frequency error is greater than 250 Hz, then one of the parallel detectors will correctly remove most of the frequency error, thus allowing the identification of the secondary code.
[0770] Figure 8K This illustrates an example secondary code capture process.
[0771] Another method to aggregate components to improve secondary code capture
[0772] Generally, the correlator and code are different for each component. Therefore, the phase detectors used for each component are different and have different noise. Moreover, because the data channels are generally short, they have more observations and are likely to take longer to average than the pilot codes. In this approach, each component maintains its changed and unchanged sum every millisecond in its sequence and sets changeMeas[i]. At some minimum update rate, fast as every millisecond, or slow as the longest sequence, all components are merged into a single test of length equal to the length of the longest component. Each phase of the longest phase is tested in series. At each millisecond of each phase, the index of the changed and unchanged sum is tested according to the index of each component wrapping around, as shown in Equation 33. All components are tested. Assume the Galileo case, where the secondary code length of the orthogonal components A and B is 100 bits, and A is in phase for 20 bits, and B is in phase for 4 bits. In the example below, both pilot codes are 100 bits and the changeMeas array has 100 bits. However, the lengths of the two data components are shorter, being integer multiples of the pilot length. To address this issue, changeMeas is reused. The index of the data component is simply the pilot index modulo the data sequence length, as shown below for the Ai and Bi components. Note that for each longer pilot component, all components are merged into a single consensus count. To determine the eligibility of the best candidate, the second best candidate is also sorted to leave a margin between the first and second highest consensus counts.
[0773] This can be represented as the XOR of the changes measured with values of 1 and 0, plus the changes of the secondary codes with values of 1 and 0 for all four components.
[0774] At each stage, the possible phases of τ in the secondary code are summed together using the consistent counts of all four components of the Gallieo signal, as follows:
[0775] Equation 40
[0776]
[0777] in
[0778] This represents the XOR operator, which returns 1 if the two inputs are different, and 0 otherwise.
[0779] cmAi is the epoch-to-epoch differential phase ambiguity or change measured on the in-phase A sideband. Integrate for as long as possible;
[0780] dscAi is the derivative of the secondary code sequence in the in-phase A sideband. It has a value of 1 if the code has changed from a previous time to the current time, and 0 otherwise.
[0781] According to the algorithm, it can be written as:
[0782] Equation 41
[0783]
[0784]
[0785]
[0786] The unique features of this histogram-based secondary code estimation method are:
[0787] 1. Up to four components can be tracked by a single-code tracking loop and a single-frequency tracking loop.
[0788] The frequency error discriminators of aA and B are translated to the center channel;
[0789] 2. This method is applicable to large frequency errors up to 250Hz and detects even larger frequency errors, restarting the process;
[0790] a. Secondary code phase estimation works for frequency errors up to 500 Hz for strong signals, but the goal is also to gradually introduce frequency errors during the process;
[0791] 3. The frequency tracking loop adjusts the frequency phase detector to track the frequency error referenced to the center channel;
[0792] 4. Differential secondary code points are combined across channels to allow detection at lower input signal strengths;
[0793] a. Shorter lengths, due to more observations and thus higher confidence, help reduce ambiguity in longer sequences. This is equivalent to limiting the candidate phase of a longer sequence to be modulo the shorter sequence;
[0794] 5. The confidence level of each interval is quantified by the margin between the changing and unchanged histograms and the confidence level of each differential phase bit based on its SNR.
[0795] The second independent method: coherent secondary coding method
[0796] The differential code bit histogram method described above works well for strong signals and for weaker signals with increased integration time. However, it is essentially a wide-bandwidth estimator or an incoherent estimator, squaring the data every millisecond to detect phase reversal. Weaker signals require a narrower-band detector that does not square the noise to achieve coherent noise averaging. Narrow band means the frequency must be known so that the phase error over the integration time is less than a quarter-cycle. L1+L5 receivers typically acquire the L5 secondary code phase after the first positioning, and the L5 frequency can be predicted with the accuracy of the speed and clock drift solution, on the order of several hertz. Conversely, receivers with only L5 must acquire the secondary code phase before positioning; therefore, the accuracy of the L5 frequency is limited by the accuracy of the primary code phase acquisition, which can reach 100 hertz or higher. In one embodiment, the receiver can employ a frequency estimation step between primary code phase acquisition and secondary code phase acquisition. However, this is not preferred as it reduces acquisition time. The preferred method is to learn the frequency error and secondary code phase concurrently, which also works for weak signals. The solution to this problem is an open-loop coherent method that searches at multiple frequencies.
[0797] To improve sensitivity, a method is needed that can jointly estimate the secondary code phase of all components, integrate a length longer than the secondary code phase sequence, and also account for high-frequency errors up to 500 Hz.
[0798] If we consider a secondary code length of 100 milliseconds with a bandwidth of 10 Hz or + / - 5 Hz, then a frequency error greater than 10 Hz will produce a phase rotation on the correlator, which will effectively rotate the true phase of the secondary code, as shown in the figure below. Figure 8L The original secondary code sequence is shown. Figure 8M This illustrates how phase modulation with a time interval equal to the sequence length can rotate the phase in the latter half of the period.
[0799] Figure 8L This shows the code without frequency modulation.
[0800] Figure 8M The code with a frequency error of 10 Hz is shown.
[0801] Therefore, the frequency error must be less than half the code BW. That is, df <= 0.5 / (length in seconds). For a secondary code of 100 epochs, such as the Gallieo A and B sideband pilot components, BW = 10 Hz, and the maximum frequency error is 5 Hz. This is satisfied using a frequency search step size twice the worst-case error (i.e., 10 Hz).
[0802] Under all possible secondary code phase assumptions, the coherent secondary code phase method uses in-phase and quadrature correlators to correlate the full length of the secondary code sequence, rather than the differences, with a similar number of epochs. To handle frequency errors, it must also compensate for the correlator data for all possible frequency error-inducing code sequences within the expected range of the frequency error. The method must also allow joint testing of all components and assimilate data longer than the longest secondary code phase sequence.
[0803] For coherent integration, the secondary code phase sequence is represented as a bit sequence with values of + / -1. In the time domain, for a Galileo satellite with 4 components, the search can be represented as follows: two pilot sequences of length 100 bits, and two data sequences of lengths 20 bits and 4 bits respectively. It has the following elements: it has all components, and it is in {f min ,f max The search is performed within the frequency range between} and integrated over the longest possible time across multiple time periods of the longest secondary code T, using previously updated integrals stored in memory for each code phase τ and frequency assumption f. Note that the magnitude, not the power, is integrated. In the first description for simplicity, the magnitude is calculated from the coherent sum of 100 epochs for all components.
[0804] Longer coherent tests beyond the pilot code length are possible, but this requires finer frequency search steps to avoid phase changes greater than a quarter period, thus reducing coherence. Furthermore, it is impossible to coherently combine the complex results of sequential tests because the phase of the frequency error does not remain constant and energy is lost during integration. Therefore, sequential tests are combined in a non-coherent manner.
[0805] The test involves coherent and incoherent integration until a boundary is reached, i.e., the separation between the first and second maximal coherences is statistically significant. The threshold is chosen a priori to approximate the theoretical boundary between the first and second maximal secondary code correlations. The simplest form, without considering data bit phase reversal, is shown below:
[0806] Equation 42
[0807] Agreement(τ,f,T i )=({Σ t=0 99 scAi(mod(t–τ,20))*corrIAi f (t)} 2 +{Σ t=0 99 scAi(mod(t–τ,20))*corrQAi f (t)} 2 ) 1 / 2 +({Σ t=0 99 scAq(mod(t–τ,100))*corrIAq f (t))} 2 +{Σ t=0 99 scAq(mod(t–τ,100))*corrQAq f (t)} 2 ) 1 / 2 +({Σ t=0 99 scBi(mod(t–τ,4))*corrIBi f (t)} 2 +{Σ t=0 99 scBi(mod(t–τ,4))*corrQBi f (t)} 2 ) 1 / 2 +({Σ t=0 99 scBq(mod(t–τ,100))*corrIBq f (t))} 2 +{Σ t=0 99 scBq(mod(t–τ,100))*corrQBq f (t)} 2 ) 1 / 2 +Agreement(τ,f,T i-1 )
[0808] in:
[0809] τ = {0, 2, ..., 99}, and f = {f min ,f max} = {-500, -490, ..., -10, 0, 10, ..., 490, 500}, which represents 101 frequencies, and T is the number of 100 ms intervals, where T i It is the current time period and T i-1 It's the last one;
[0810] corrIX f (t)=corrIX(t)*cos(2πf*t)+corrQX(t)*sin(2πf*t)
[0811] corrQX f (t)=corrQX(t)*cos(2πf*t)–corrIX(t)*sin(2πf*t)
[0812] Where X = Ai, Aq, Bi, or Bq
[0813] Margin=max1{Agreement(τ,f)}–max2{Agreement(τ,f)}
[0814] If margin > Threshold
[0815] The statement indicates that the secondary code phase is found at code phase t1 and frequency f1.
[0816] Exit the test.
[0817] Else
[0818] continue
[0819] The threshold is a predetermined threshold.
[0820] Notes on coherence testing
[0821] First, note the four sets of correlator data: Ai, Aq, Bi, and Bq, and each set is complex: it has corrI and corrQ, which are in-phase and quadrature correlators. These correlators are pre-wound for the frequency error assumption at each frequency f. Therefore, the complex correlators are transformed into another set of complex correlators, with frequency f erased. The frequency range is chosen to cover the frequency uncertainty with a frequency step size similar to 1 / T (seconds). Thus, if T = 100 milliseconds, the frequency step size is 10 Hz and the worst-case frequency error is 0.5 / 0.1 = 5 Hz.
[0822] It is also important to note that shorter secondary code sequences (i.e., data sequences) are repeated: a 20-epoch sequence is repeated 5 times, and a 4-epoch sequence is repeated 25 times. This has the effect of reducing the weight of longer sequence candidates away from the strongest positions of shorter sequences.
[0823] In this example, the square root of the sum of squares of complex numbers produces a magnitude of correlation rather than a power.
[0824] Improvements to the coherent integral of data components
[0825] The above method has a drawback: the data channel correlators for {corrIAi,corrQAi} and {corrIBi,corrQBi} have additional phase reversals due to the data bits. These reversals are synchronized with the start bit of the secondary code. The effect of the data bits is that the coherence and the magnitude of the data components do not increase linearly. One solution is to shift the start point of the correlators for the A and B data components according to the secondary code phase assumption, and then form the magnitude at the end of each secondary code sequence. For example, the start point of the data A assumption with phase 0 will begin from the first or 0th correlation factor. The start point of the first phase will begin from the second phase, and so on. As shown in the example below:
[0826] The following pseudocode is used to derive the index required to combine the shorter data channel secondary code with the longer pilot channel.
[0827] Here is an example of how epochs are referred to as milliseconds m0, m1, etc. Secondary codes are referred to as sc0, sc1, etc. Note that when using longer pilot secondary codes, the shorter data codes are repeated every four epochs, while the data channel epoch data is...
[0828] There is no delay for phase 0.
[0829] m0,m1,m2,m3->ComputeMag.m4,m5,m6,m7->ComputeMag
[0830] Sc0,sc1,sc2,sc3sc0,sc1,sc2,sc3
[0831] There is a 1-millisecond delay for phase 1.
[0832] m0->ComputeMagm1,m2,m3,m4->ComputeMag
[0833] sc3sc0,sc1,sc2,sc3
[0834] There is a 2-millisecond delay for phase 2.
[0835] m0,m1->ComputeMagm2,m3,m4,m5ComputeMag
[0836] sc2,sc3 sc0,sc1,sc2,sc3
[0837] There is a 3-millisecond delay for phase 3.
[0838] m0,m1,m2->ComputeMagm3,m4,m5,m6->ComputeMag
[0839] sc1,sc2,sc3sc0,sc1,sc2,sc3
[0840] Identify the first two values of the coherence sum for each 4-millisecond interval of data Bi used for phase 0 (delay 0).
[0841] +{Σ t=0 t<4 scBi(mod(t,4))*corrIBi f (mod(t,4))} 2 +{Σ t=0 t<4 scBi(mod(t,4))*corrQBi f (mod(t,4))} 2
[0842] +{Σ t=4 t<=7 scBi(mod(t,4))*corrIBi f (mod(t,4))} 2 +{Σ t=4 t<=7 scBi(mod(t,4))*corrQBi f (mod(t,4))} 2} 1 / 2 +…
[0843] For phase 1 (delay 1)
[0844] {Σ t=0 t<1 scBi(mod(t-1,4))*corrIBi f (mod(t-1,4))} 2 +{Σ t=0 t<1 scBi(mod(t-1,4))*corrQBi f (mod(t-1,4))} 2
[0845] +{Σ t=1 t<5 scBi(mod(t-1,4))*corrIBi f (mod(t-1,4))} 2 +{Σ t=1 t<5 scBi(mod(t-1,4))*corrQBi f (mod(t-1,4))} 2 +…
[0846] For phase 2 (delay 2)
[0847] {Σ t=0 t<2 scBi(mod(t-2,4))*corrIBi f (mod(t-2,4))} 2 +{Σ t=0 t<2 scBi(mod(t-2,4))*corrQBi f (mod(t-2,4))} 2
[0848] +{Σ t=2 t<6 scBi(mod(t-2,4))*corrIBi f (mod(t-2,4))} 2 +{Σ t=2 t<6 scBi(mod(t-2,4))*corrQBi f (mod(t-2,4))} 2 +..For phase 3 (delay 3)
[0849] {Σ t=0 t<3 scBi(mod(t-3,4))*corrIBi f (mod(t-3,4))} 2 +{Σ t=0 t<3 scBi(mod(t-3,4))*corrQBi f (mod(t-3,4))} 2
[0850] +{Σ t=3 t<7 scBi(mod(t-3,4))*corrIBi f (mod(t-3,4))} 2 +{Σ t=3 t<7 scBi(mod(t-3,4))*corrQBi f (mod(t-3,4))} 2 +…
[0851] Therefore, the indexing of data items has been modified as follows.
[0852] Equation 43
[0853] Agreement(τ,f,T i )=({Σ t=0t<τ scAi(mod(t-τ,4))*corriAi f (mod(t-τ,4))} 2 +{Σ t=0 t<τ scAi(mod(t-τ,4))*corrQAi f (mod(t-τ,4))} 2 ) 1 / 2 +{Σ p=0 p<100 / 20 ({Σ t=τ+20p t<=20p+ 19 scAi(mod(t-τ,20))*corriAi f (t)} 2 +{Σ t=τ+20p t<=20p+19 scBi(mod(t-τ,20))*corrQAi f (t)} 2 ) 1 / 2}*SFA+({Σ t=1 100 scAq(mod(t–τ,100))*corriAq f (t))} 2 +{Σ t=1 100 scAq(mod(t–τ,100))*corrQAq f (t)} 2 ) 1 / 2 +({Σ t=0 t<τ scBi(mod(t-τ,4))*corriIBi f (mod(t-τ,4))} 2 +{Σ t=0 t<τ scBi(mod(t-τ,4))*corrQBi f (mod(t-τ,4))} 2 ) 1 / 2 +{Σ p=0 p<100 / 4 ({Σ t=τ+4p t<=4p+3 scBi(mod(t-τ,4))*corriIBi f (t))} 2 +{Σ t=τ+4p t<=4p+3 scBi(mod(t-τ,4))*corrQBi f (t)} 2})1 / 2}*SFB+({Σ t=1 100 scBq(mod(t–τ,100))*corrIBq f (t))} 2 +{Σ t=1 100 scBq(mod(t–τ,100))*corrQBq f (t))} 2 ) 1 / 2 +Agreement(τ,f,T i-1 )
[0854] Note that data items A and B have a first term to consider the partial sum of the code length preceding τ>0 and less than the full length. For values of τ>0, a similar final partial sum will appear at the end epoch.
[0855] SFA and SFB are scaling factors used to account for the increase of dataA and dataB terms with additional squares over the data bit length. These terms can be considered as tuning factors. SFA can be set as the number of incoherent sums over 100 epochs: SFA = sqrt(5), SFB = sqrt(20).
[0856] Correlation of DataA components
[0857] An example of coherently correlating the data A correlator at 44 (reference 0 ms) with a single 20-epoch data A secondary code having a true pilot secondary code phase implies that the expected data A code phase is mod(44,20) = 4 (Figure 5, reference 1). The frequency error is zero. The magnitude of the first peak is approximately 9,700,000, and the magnitude of the second peak is 2,000,000, producing a margin of 13.7 dB. In contrast, the histogram method, with a first maximum of 20 counts and a second maximum of 16 counts, produces a margin of only 1.9 dB.
[0858] Figure 8N Example of data A is shown.
[0859] We now apply a frequency search of + / - 500 Hz with a step size of 10 Hz, and coherent integration over 20 epochs and incoherent integration over 400 epochs. The spectrum is shown below. The true secondary code phase is correctly located in the 4th interval (sc4). The peak value is 11,700,000, and the second peak is around 7,000,000, resulting in a margin of approximately 9 dB, a reduction of 4.8 dB compared to the single-frequency case.
[0860] Figure 8O The correlation of the DataB component is shown.
[0861] For a single 4ms coherent integral B data channel at a single frequency with 0Hz error, the peak value is 2,900,000 and the second peak is 1,450,000, resulting in a margin of nearly 6dB. In contrast, the histogram method has a first maximum of 4 and a second maximum of 3, resulting in a margin of 2.5dB.
[0862] Figure 8P Example of data B is shown.
[0863] When the same frequency search is generated for 100 incoherent integrals and 4 epoch coherent integrals, the peak is 11,700,000 and the second peak is about 9,000,000, resulting in a margin of 2.3 dB.
[0864] Figure 8Q Examples related to the secondary code of data B are shown.
[0865] Correlation of PilotA Components
[0866] The single 100-epoch coherent correlation of the Galileo pilot secondary code phase with 0Hz error is shown below. Its peak value is 48,000,000 and the second peak is 3,900,000, resulting in a margin of 21.8 dB. In contrast, the histogram method has a first maximum of 100 and a second maximum of 60, resulting in a margin of 4.4 dB.
[0867] Figure 8R An example of pilot A at 0Hz is shown.
[0868] For a search of the same frequency for four incoherent integrals comprising 100 epochs of coherent integrals, the maximum magnitude at each frequency is shown below. It has a similar highest maximum of 48,000,000 and a second maximum of 14,000,000, resulting in a margin of 10.7 dB.
[0869] Figure 8S An example of the maximum value of pilot A is shown.
[0870] Summary of difference and coherence margin
[0871] Table 8 Summary Table
[0872]
[0873] Improve the computational efficiency of coherent methods
[0874] The method in Equation 43 illustrates a two-dimensional search: 100 secondary code phase candidates and 101 frequency candidates. It can be implemented in the time domain via two loops:
[0875] 1. There is an outer loop at the frequency. The complex correlator used for each component is multiplied by a complex exponent to perform a frequency shift. The outer loop searches for all candidate frequencies.
[0876] 2. Inner loop on secondary code phase. All secondary code phase assumptions were tested. This step is where coherence occurs. In the time domain, this step is efficient because each code bit + / - 1 is efficiently implemented as addition or subtraction.
[0877] This method requires executing the following instructions at each pilot length integral over T epochs:
[0878] The outer loop requires 200 complex multiplications of Aq and Bq, 20 complex multiplications of Ai, and 4 complex multiplications of Bi, for a total of 224 complex multiplications. Then, the shift is achieved by copying the data 224 times.
[0879] The inner loop requires approximately 224 complex additions or subtractions based on the secondary code value. The protocol update requires 224 values, which are then added 400 times to update the protocol for four components, where the data components reuse the same 20 or 4 values across 100 epochs. Therefore, one inner loop consists of 624 additions and 224 values.
[0880] One frequency requires an outer loop and 100 inner loops, which equals 62,400 additions, 22,400 magnitudes, 224 multiplications, and 224 shifts. Therefore, 100 outer loops require 6,240,000 additions, 2,240,000 magnitudes, 22,400 complex multiplications, and 22,400 shifts. The magnitudes can be approximated as a series of shifts and additions that can be implemented efficiently.
[0881] Frequency domain coherence method
[0882] It is also possible to implement the same coherent method in the frequency domain. It produces the same consistent sum. Initially, the DFT is taken from the input correlator and secondary code sequence used for all components. By taking the product of the complex conjugates of the correlator and the code, and then taking the inverse DFT (IDFT) (i.e., the correlation in the time domain is equivalent to the product of the complex conjugates applied to one element in the frequency domain), the coherent secondary code phase implicitly emerges. The frequency search loop can be performed by utilizing the properties of the DFT, where multiplying by a complex exponent in the time domain by a frequency multiple of the DFT resolution is equivalent to shifting the DFT interval by that multiple. The following equation establishes the convention for the shift direction and the corresponding frequency downshift.
[0883] Equation 44
[0884] e jw0t *f(t)=F(w–w0),similarlye -jw0t *f(t)=F(w+w0),e-jw0t =cos(w0) – j*sin(w0)
[0885] Define f(t) = realA + j*imagA = cosA + j*sinA
[0886] e -jw0t *f(t)=(cosw+j*sinw)*cos(w0)–j*sin(w0)
[0887] =[cosw*cosw0+sinw*sinw0]+j*[sinw*cosw0-cosw*sinw0]
[0888] =cos(w-w0)+j*sin(w-w0)
[0889] The frequency resolution of each frequency interval in the spectrum is determined by dividing the sampling rate of the time-domain correlator by the number of intervals in the DFT. Consider a correlator sampling at 1 kHz and 100 intervals. Therefore, the resolution is 1000 Hz / 100 intervals = 10 Hz / interval. Thus, a shift of + / - one interval corresponds to multiplying by - / +10 Hz (note the negative relationship). A shift of N intervals corresponds to N * 10 Hz. When N > interval / 2, the frequency shifts negatively and the mapping becomes –(shift – interval) * 10 Hz.
[0890] All possible frequencies within a coherent bandwidth that is a multiple of the frequency resolution can be tested by testing or all possible shifts of either the input or code spectrum. At each shift corresponding to each frequency, the magnitude of the IDFT at each index corresponding to the code phase assumption is added to Agreement(τ,f,T). i-1 In the sum of the running operations. In other words, mathematically, the test is equivalent to Equation 43, where the sum of the secondary codes multiplied by the frequency shift correlator at a specific phase is the IFFT result at the corresponding index.
[0891] As a detail of the implementation, it is also effective to keep the data components A and B in the time domain because their lengths are small and they need to be squared at the end of each sequence. Furthermore, the correlator data is not the same for all secondary code phase assumptions; therefore, the DFT length of the correlator data differs for these secondary code phase assumptions.
[0892] 1. The initialization step uses the DFT of each of the two complex correlator sequences and the DFT of the real-valued secondary code sequence. Data components A and B are not included here.
[0893] a.SCAQ(ω)=DFT(scAq(t)+j*0),t=(0,99)
[0894] b.SCBQ(ω)=DFT(scBq(t)+j*0),t=(0,99)
[0895] c.CORRAQ(ω)=DFT(corrIAq(t)+j*corrQAq(t)),t=(0,99)
[0896] d.CORRBQ(ω)=DFT(corrIBq(t)+j*corrQBq(t)),t=(0,99)
[0897] 2. A single loop iterates through all possible shifts of the DFT of the complex correlator sequence. The first shift is zero, and subsequent shifts are to a positive frequency range (equivalent to erasing the positive frequency shift). The resulting shifted complex correlator DFT is then multiplied by the complex conjugate of the code sequence DFT. The resulting product is then subjected to an IDFT. The magnitude of the complex IDFT is taken from each index and added to Agreement(τ,f,T). i-1 ), where t is the IDFT index and f is the correlator DFT shift index.
[0898] a. Shift the spectrum of all correlator samples by one interval of the longest sequence.
[0899] i.CORRAQ(ω i )=CORRAQ(ω-i*ω)
[0900] ii.CORRBQ(ω i =CORRBQ(ω-i*ω)
[0901] b. Multiply the correlator spectrum by the code spectrum (* indicates complex conjugation).
[0902] i.YAQ=CORRAQ(ω i )*SCAQ * (ω),ω=(0,99)
[0903] ii.YBQ=CORRBQ(ω i )*SCAQ * (ω),ω=(0,99)
[0904] c. Inverted spectral product
[0905] i.yAq(τ)=IDFT(YAQ),τ=(0,99)
[0906] ii.yBq(τ)=IDFT(YBQ),τ=(0,99)
[0907] d. Use time-domain correlation Yab(τ) to form an agreement (τ,f,T).i ):
[0908] Agreement(τ,f,T i )=+AgreementAi(τ,f,T i )++AgreementBi(τ,f,T i )+({real(yAq(τ,f)} 2 +{imag(yAq(τ,f)} 2 ) 1 / 2 +({real(yBq(τ,f)} 2 +{imag(yBq(τ,f)} 2 ) 1 / 2 +Agreement(τ,f,T i-1 )
[0909] Note that the calculation of data components A and B is the same as in Equation 43.
[0910] Figure 8T A flowchart illustrating a coherent method is shown.
[0911] Calculation considerations for coherent methods
[0912] The required instructions are based on the number of instructions per DFT. Assume an N-point DFT requires N instructions. 2 Each stage involves 6 additions and 7 multiplications. For N=100, this amounts to 60,000 additions and 70,000 multiplications. Furthermore, the data components A and B are ignored, as they will be common between the time and frequency domains.
[0913] The initialization step requires two DFTSs with (10000+10000) DFT stages.
[0914] The main loop requires 200 shifts on all components, followed by 200 complex multiples, and then 4 IDFTs implemented using IDFT. Looping 100 times results in a total of 2 + 100(2) DFTs, plus 100 * 200 shifts and 100 * 200 complex multiplications. Then there are 200 values and 400 additions.
[0915] The total instruction set is 100 * 20,000 stages * (6 additions and 7 multiplications) + 100 * (200 shifts + 200 complex multiplications + 200 magnitudes + 400 additions) = 12,000,000 additions + 14,000,800 multiplications + 20,000 shifts + 20,000 complex multiplications + 20,000 additions + 40,000 additions. While updating the last four terms of the magnitudes is common in both methods, the DFT method has significantly more multipliers.
[0916] However, if FFT is implemented, the efficiency will be further improved. As an upper limit for a 100-point sequence, consider a 128-point radix-2 FFT for 10. In this case, the total number of kernel operations is 7*64 = 448 (log2(128) = 7 and 28 / 2 = 64) instead of 100*100 for DFT. Suppose that 20 points and 4 points are implemented as DFT. Each kernel has 6 additions and 4 multiplications (3 fewer multiplications if the twiddle factor is pre-calculated). In this case, the 100-point FFT is repeated 200 times, so the instructions for this element are 200*448 stages * (6 additions + 4 multiplications) = 537,600 additions and 627,200 multiplications. The optimized mixed radix (5,5,4) 100-point FFT should be more efficient.
[0917] Results of difference and coherence methods
[0918] The following section summarizes a comparison of the two methods and how using multiple components improves the ability to determine the secondary code phase at lower signal levels than without additional components. For strong signals, both methods correctly estimate the secondary code phase. 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 at frequency errors up to 1 / 4 of the differential bandwidth. As expected, the coherent method outperforms the differential method for weaker signals due to its narrower bandwidth. However, it requires significantly more computation. In a preferred embodiment, the differential method is used for stronger signals, while the coherent method is used for weaker signals. In another embodiment, both methods are used to provide two estimates, thus providing high confidence when both yield the same result.
[0919] The results of 10 experiments at each of the three different signal levels are shown below. With 15 dB of noise added to the nominal signal level, the differential method requires multiple cycles of the pilot code to achieve a high detection probability. While a single pilot component may sometimes fail even after four cycles of the pilot sequence, the combined component method is perfect at this signal level. After this point, the failure rate of the differential method increases rapidly with increasing noise.
[0920] Table 9. Examples of Histogram Methods
[0921]
[0922] The results for the coherent method are shown below. With an added noise of 15 dB, the results for a single test are almost perfect. However, the combined component method remains perfect even after adding noise as low as 20 dB for one cycle. The frequency error is also small, generally within 5 Hz. For the single-component case, the failure rate begins to increase significantly with an added noise of 25 dB, but is much lower for the multi-component case.
[0923] Table 10 Examples of Coherent Methods
[0924]
[0925] An example of frequency search used for the A pilot secondary code is shown below. The highest maximum value is correctly 44 (45 is 1 starting from the first interval). The highest maximum value is 570,000, and the second maximum value is 350,000, resulting in a marginal value of 7.15 dB.
[0926] Figure 8U This shows an example of a coherent method, secondary correlation.
[0927] The third independent method: Cross-SV set correlation integral method
[0928] GNSS signals operate using a direct sequence spread spectrum – CDMA signaling scheme. In most GNSS signals, a secondary code is overlaid on the primary code to enhance the signal's autocorrelation and cross-correlation properties. Compared to the primary code, the secondary code is relatively short, but its duration (or period) is long because it operates over several code periods of the primary code. The pilot signal component in Gallieo and Beidou is 100 ms long. Therefore, even after acquiring the primary code phase, the receiver must spend additional time acquiring the secondary code phase.
[0929] Figure 8V This illustrates how secondary codes are transmitted from the satellite assuming that satellite clock errors are negligible.
[0930] Figure 8V This shows the secondary code alignment across SVs during transmission (ideally).
[0931] However, the receiver receives each satellite signal with a delay different from the transmission time. Furthermore, each satellite may have different satellite clock errors, which introduce additional relative delays at the receiver.
[0932] Figure 8W The secondary code phase at the receiver is shown in a diagram.
[0933] The goal of this algorithm is to identify the secondary code phase by taking into account the relative delay information of received signals from multiple satellites.
[0934] The core steps of the algorithm:
[0935] i. Capture the master code. Let S be the number of satellites whose original code has been captured. Each master code period (e.g., every millisecond) generates a new correlation value for each satellite. If the signal has two components (A and B), then two correlation values are generated each master code period, and the value of S is doubled.
[0936] ii. Arrange the relevant values in a matrix, where rows correspond to SVs (or the signal components of SVs) and columns correspond to time. If the satellite ensemble contains SVs from multiple systems (or constellations), then the estimated time offset between systems is part of the predetermined position. That is, the secondary code phase is estimated based on the initial position and time. These estimates can be provided from a web server or calculated within the receiver using well-known techniques.
[0937] Depending on the set of captured SVs, the receiver is in one of the following situations and the corresponding alignment process.
[0938] SV / components with the same secondary code length but different secondary codes:
[0939] In this case, alignment is the simplest due to the same secondary code length. Capturing the secondary code phase of one SV / component applies to all other SVs.
[0940] SV / components with different secondary code lengths:
[0941] Ideally, the length of the secondary code of an SV in the context is an integer multiple of the shortest code in that set, or at least has a not-too-large least common multiple (LCM). This is indeed the case for the published GPS, Galileo, and Beidou secondary codes, with secondary code lengths of 4 (GalileoE5b data), 5 (BeidouB2a data), 20 (GPSL5 pilot), and 100 (GalileoE5a pilot, GalileoE5b pilot, BeidouB2a pilot). Having a small LCM is not necessary, but it helps reduce the complexity of the implementation. In this case, capturing the secondary code phase of an SV / component can be translated unambiguously to the other SVs in the list.
[0942] SV / components with the same secondary code sequence:
[0943] This is the case for the published Gallieo and Beidou secondary codes used for data signals. In Beidou B2a and Gallieo E5a / E5b, the data signal components have the same secondary code. In this case, capturing the secondary code phase of one satellite / component is applicable to all other SVs with the same secondary code sequence.
[0944] Let N be the number of primary code cycles chosen for the secondary code estimation algorithm. Then the phase arrangement...
[0945] The matrix E of the key values is:
[0946]
[0947] An example arrangement for correlation values of three SVs, each with two signal components, lasting 10 milliseconds, produces a 6x10 correlation value matrix. If the receiver does not have a B (or A) channel in the secondary code state, then this channel does not need to be added. For satellites with relative delays close to the relative delay estimation error boundary, satellites with lower signal strength (obtained from the acquisition margin) are removed from the list.
[0948] iii. For each column, find the bit pattern that maximizes the relevance of that column.
[0949] a. A bit pattern is simply a sequence of bits consisting of the binary values of the secondary code. In the 6x10 matrix example, the bit sequence along the column dimension is 6 bits wide, therefore there are 2 6 = 64 patterns or possibilities (0 to 63 in decimal representation).
[0950] b. Find the correlation sum for each column across all hypotheses (bit patterns). To find the correlation sum across columns, multiply the secondary code bit pattern hypothesis by the correlation values of the columns in E. If If the secondary code bits used in the k-th primary code period (column) are for the i-th satellite / component (row), then the correlation sum used in the k-th column is...
[0951] v′ k =(b′) k ) T ·E k
[0952] This step of generating correlation sums is performed for different secondary code hypotheses (bit patterns). The receiver has pre-defined bit information, which it uses to estimate the relative time offset for each satellite. The number of bit patterns (or primary code periods) tested depends on the accuracy of the relative time offset estimation. As an example, if the relative time offset between satellites is estimated to be + / - 10 milliseconds, then only 20 hypotheses need to be tested (typically one primary code period = 1 millisecond), denoted by J. The bit pattern used for each hypothesis is obtained from a secondary code table stored in the host computer.
[0953] c. Then, for each hypothesis j = 1:J, generate a correlation sum for each column. The first sum comes from the SV dimension, the second sum comes from the time dimension, and the correlation sum is... These are coherent correlations across SV dimensions. The bit pattern being tested is...
[0954] d. At this stage, before finding the maximum correlation sum, perform coherent or incoherent integration on the correlation sum to obtain a unique peak. This result is the correlation sum of the correlation sum and the correlation sum.
[0955] i. Steps for performing coherent integration of correlation across the time dimension:
[0956]
[0957] Where N is the number of main code cycles within the coherent integration duration.
[0958] ii. Steps for performing incoherent integration across the time dimension on the correlation:
[0959]
[0960] Where N is the number of main code cycles within the duration of the incoherent integration.
[0961] e. Find the maximum value of all hypotheses. Using the index of the maximum correlation sum of and , identify the bit pattern that leads to the maximum correlation sum of and and the second largest correlation sum of and .
[0962] v1 = max(v″) j ), the first maximum value
[0963] m1 = max index (v″ j ), index of the first maximum value
[0964] b1=b′ j (m1), the bit pattern that produces the first maximum value.
[0965] v2 = secondmax(v″) j ),s second maximum value
[0966] m2 = secondmax index (v″ j ), the index of the second maximum value
[0967] b2 = b″ j (m2), the bit pattern that produces the second maximum value.
[0968] f. Store the bit pattern in B and the correlation sum in V. When considering a small number of satellites, the correlation sums may be close to each other (e.g., within 3 dB). In this case, both values are stored in descending order of their correlation sums (the first maximum value is stored as the first, the second maximum value as the second).
[0969]
[0970]
[0971] iv. Finally, obtain the secondary code phase as follows.
[0972] a. Compare v1 with a predefined SNR threshold and with the second maximum v ; Compare them. If v1 passes the threshold and has a significant (greater than 3dB) maximum to second maximum margin, then b1 is selected as the secondary code index bit pattern.
[0973] b. If the threshold check or the second maximum margin check fails, then the J hypothesis test process continues from the next main key period (column), and both B and V matrices are filled with the maximum correlation sum and the next set of bit patterns and checked against the threshold.
[0974]
[0975]
[0976] c. In one example, the step preceding the filling of the B and V matrices (step b) also serves as a verification of the pass case in a. If the secondary code phase is correctly identified in a, then the bit pattern will follow the secondary code table.
[0977] d. In another example, the summation can be simply extended to examine 100 different secondary key hypotheses.
[0978] v. The position of the secondary code mid-mode (obtained through the above process) is the secondary code phase of the satellite used. Note that the advantage of the cross-SV algorithm is that it obtains the secondary codes for all tested satellites at once.
[0979] The process of choosing N:
[0980] The bit pattern formed in each major code period (typically every millisecond) depends on the PRN and its relative offset considered for secondary code acquisition. This bit pattern should not be reused in other major code periods. By design, the bit pattern is unique for pilot channels in GPSL5, GalileoE5, and BeidouB2, considering the entire secondary code length. However, the innovation in this algorithm lies in using a length less than the maximum secondary code length to acquire the secondary code phase.
[0981] The table below shows the minimum value of N for a given number of satellites S. This was determined by comparing bit patterns formed by various combinations of satellites.
[0982] Table 11 Examples of Cross-SV
[0983]
[0984]
[0985] Here is an example. Let's consider a case where GalileoPRN3, 8, 13, and 2 are declared successful during the main code capture phase, with estimated relative time offsets of 80, 87, 76, and 76 milliseconds (mod 100 ms), respectively. If the secondary codes of these PRNs are aligned according to the estimated relative time offsets, then the following table shows the maximum number of repetitions for different N values. Shaded rows indicate N without repetition, meaning the bit pattern is unique. The minimum N required for this particular SV combination is less than the N in Table 11 (9 for 3 SVs and 6 for 4 SVs) because Table 11 considers several different combinations of published secondary codes.
[0986] Considering SV3, 8, and 13:
[0987]
[0988] Considering SV3, 8, 13, 2:
[0989]
[0990]
[0991] vi. To verify, perform the following steps.
[0992] a. Shifting the sequence by 1 (corresponding to the next millisecond) verifies the minimum N.
[0993] b. The correlation value of each satellite for N milliseconds integration should be used to generate an integration gain based on N.
[0994] The number of satellites that can be used together in the ensemble is related to the accuracy of the relative delay estimates between satellites from auxiliary or pre-positioned sources. If the accuracy is 100 µs, and if the delays of some of these satellites are close to the millisecond boundary, then those satellites can be eliminated to minimize computation.
[0995] This algorithm can be applied to several scenarios after the master code is captured, some of which are:
[0996] Case I: Before the secondary code synchronization of any satellite;
[0997] Case II: After capturing the secondary code of any satellite before time synchronization;
[0998] Scenario III: After time synchronization.
[0999] If the number of satellites increases during this set search, then those satellites can be included immediately. However, to minimize the computation required by the algorithm, if the algorithm does not match or uses a particular satellite in the verification phase, then those satellites can be combined in the next step.
[1000] Demonstration:
[1001] The input for the demonstration is the correlation values of all satellites one millisecond after master code acquisition, as shown in the table below. The satellites in this list are GalileoPRN3, 13, 8, and 2, channels A and B.
[1002]
[1003] The secondary code search performed over the entire length of the secondary code for all assumptions yields the results of secondary code shifts. Components A and B will result in the same secondary code shift because the delays are very close to each other. As mentioned earlier, satellites whose primary code shifts are very close to the primary code boundary (e.g., within + / -10µs, predefined design parameters) are excluded from the list of SVs used for cross-SV combinations. In this example dataset, the secondary code shifts for PRN3, 8, 13, and 2 are 10, 17, 6, and 6, respectively.
[1004] Figure 8X An example of secondary correlation for pilot secondary codes exceeding 100ms is shown.
[1005] Let's assume we start with a random offset from the estimated secondary code delay. For this, assume there's an error of -30ms in the estimation. Therefore, the secondary code delay estimation input for the algorithm is [10,17,6,6]-30=[-20,-13,-24,-24]=[80,87,76,76] (the negative shift is rolled from the maximum length of the secondary code, which is 100 in this case).
[1006] Starting with the estimated delay, the correlation values for all 8 components (2 components per SV, 4 SVs) with an integration duration of 10 ms are calculated. 10 ms is chosen as a number higher than the minimum length and number of components in the table above. A higher integration degree also increases the bias towards stronger satellites, so weaker satellites do not affect the cross-SV sum. In this particular dataset, the case has weak satellite PRN3 and strong PRN13, while PRN8 and 2 are relatively weak. The correlations of the individual secondary codes are as follows: Figure 8Y As shown in the image.
[1007] Figure 8Y Example 8 shows the secondary correlation of the components.
[1008] As expected, the secondary code maxima are almost aligned despite the significant role of noise and the presence of non-peak spikes. However, the secondary code correlation across all signal components exhibits a clear peak at the selected -30ms random delay error.
[1009] Figure 8Z An example of 10ms is shown.
[1010] However, if we exclude satellites 8 and 2, the noise is greatly reduced, as shown below. Figure 8AA As shown in the image.
[1011] Figure 8AA The example shown excludes noisy input.
[1012] Adding the index of the peak's location to the estimated delay input will produce the actual secondary code delay for each satellite.
[1013] Cross-SV combination under residual frequency error after capture
[1014] Coherent combination across time is prone to generating residual frequency errors from the estimates obtained from the primary code capture. One way to avoid this is to perform a fine-grained frequency search across all possible assumptions for the secondary code length (100 ms in the pilot cases of GalileoE5AQ, E5BQ, and BeidouB2a). However, this incurs a high computational burden and verbose data (100+ ms).
[1015] Combining the cross-SV assumption of coherent and incoherent integration across time, this allows for a frequency error of + / - 500Hz for 1ms. It is well known that incoherent gain is less than coherent gain, but handles frequency errors better than coherent integration. For incoherent combinations, the integration time should be increased for weak signals. For the same illustration as the coherent combination case above, error! Reference source not found. The following shows a diagram for incoherent combinations for 10ms.
[1016] Figure 8BB Examples of cross-SV coherence and temporal incoherence are shown.
[1017] Box 4 (Code and carrier input)
[1018] As described in the discussion in Box 3, the secondary code phase of strong and medium-intensity signals is captured using a differential method, while the secondary code phase of weaker signals is captured using a coherent method. The differential phase detector spanning two epochs is the real (cosine) part of the AFC frequency detector, and the complex (sine) part is formed from the same epoch correlator data. The wrapped cosine and sine detectors can be averaged to form a filtered phase error detector for the AFC (Automatic Frequency Control, also known as frequency locking) loop, reducing frequency errors. The difference between single-epoch advance and hysteresis power can also be averaged to form a detector for the delay-locked loop (DLL). In the case of the coherent method, handling large frequency errors by testing all frequency steps facilitates learning the frequency error in parallel with the secondary code phase.
[1019] Therefore, the task in box 4 depends on the method used to obtain the secondary code phase. In the case of the differential method, some residual code and frequency may still need to be estimated. In the case of the coherent method, there may be some residual code error, but the frequency error is small. Therefore, the goal of this state is to perform fast code and frequency refinement. Another FFT method can be used for frequency error. However, since the secondary code phase is known, a longer coherent integration can be used. This allows the code and frequency errors of weak signals to be reduced to the level required to enter the measurement loop.
[1020] Therefore, the main purpose of this block is that when using the differential secondary code phase method, the frequency error can still be large due to the wide discriminator. For a + / -250Hz detector range of a wraparound AFC detector, the frequency error can exceed the + / -25Hz limit of the 20ms coherent integration. A longer coherent post-detection integration (PDI) can now be used to generate the cosine and sine of the phase error. Again, these can be averaged to produce a filtered estimate to reduce noise. In one embodiment, a 4ms coherent PDI with a + / -250Hz detector range can be used, and five of these phases can be summed to produce a 20ms average.
[1021] Now assume that the secondary code has been erased from the correlator data. The correlator sum can be either epoch-to-epoch, where erasure occurs at each new epoch, or millisecond-to-millisecond, where erasure occurs after the millisecond data is combined to form consecutive epochs.
[1022] At a minimum, these correlator values include: the real and imaginary parts of the instantaneously estimated phase, i.e., realP and imaginaryP. The real and imaginary parts of the leading phase are realE and imaginaryE, respectively, and the real and imaginary parts of the lagging phase are real = L and imaginaryL, respectively.
[1023] Instantaneous correlators are used to estimate frequency errors by forming phase error estimates on the PDI.
[1024] sumRealAQ(k)=sum[realP(i)*secCodeAQ(j)]
[1025] sumImagAQ(k)=sum[imagP(i)*secCodeAQ(j)]
[1026] Where i = {k to k+N+1} and j = mod(i – scStartAQ, scLengthAQ),
[1027] N = number of milliseconds in the sum, or pre-detection interval (PDI).
[1028] The cosine of the phase change between the two sums is:
[1029] Cosine(phase(k))=sumRealAQ(k-1)*sumRealAQ(k)+sumImagAQ(k-1)*sumImagAQ(k)
[1030] Sine(phase(k))=sumImagAQ(k-1)*sumRealAQ(k)-sumRealAQ(k-1)*sumImagAQ(k)
[1031] The averaging is performed by summing M cosine and sine terms, where M is typically 5:
[1032] cosineSum(M)=sumCosine(phase(k)),k=0,M-1
[1033] SineSum(M)=sumSine(phase(k)),k=0,M-1
[1034] The combination interval with an average phase exceeding (N+1)*M milliseconds is:
[1035] phaseEstimate = atan2(SineSum(M), cosineSum(M)) where atan2(y,x) and y = imag, x = real
[1036] The phase estimate is divided by the pre-detection interval N to form a frequency error estimate, which is the input to the AFC loop (FLL loop).
[1037] The DLL is updated using the advance subtraction of hysteresis power on PDIN:
[1038] Lag power sum = sumPowerL(k) = sum(realL(i)) 2 +imagL(i)2 ),i=k to i=k+(N-1)
[1039] The delay-locked loop discriminator is configured to subtract the hysteresis power in advance:
[1040] earlyMinusLate(k)=sumPowerE(k)-sumPowerL(k)
[1041] The discriminator is normalized and filtered and converted into a code phase shift.
[1042] These FLLs and DLLs are operated until the detectors are small enough, for example, the frequency error phase detector is below 15 degrees to make sufficient continuous estimations, and the normalized DLL discriminator is within 0.1 chips. After these conditions are met, the state in box 4 terminates and satellite tracking proceeds to a higher state.
[1043] Hardware tracking correlator options: parallel dedicated or serial reusable
[1044] The following section describes the low-level timing details of how the hardware generates correlator values. It involves whether the hardware has a physical set of dedicated correlators, often referred to as a channel for a single satellite, or whether it has correlators that are continuously reused at a high rate to serve all satellites. The former has the advantage of gating the correlators when the code generator detects the beginning of the code sequence (also called an epoch). In this case, parallel correlators simultaneously provide the same sample sequence to all correlators. Therefore, dedicated channels have the advantage of natural alignment to epochs, and only one correlation register needs to be reported for each epoch.
[1045] In reuse scenarios, sample data is typically buffered, requiring additional memory. Furthermore, the data is buffered for one millisecond because the code sequence length of the desired signal is one millisecond. In this case, the reused single channel is aligned to a millisecond, but the epochs for each satellite will appear at different locations. When the secondary code is unknown, the hardware must report two correlations: the pre-epoch correlation and the post-epoch correlation. The software then handles the construction of the epoch-to-epoch correlation sums needed to detect the secondary code phase. Once the code is known, the secondary code is provided to the hardware, and it can apply the sequence, allowing the correlator to integrate across epochs into the sum of the single millisecond alignment.
[1046] There is another option for reuse. If a two-millisecond sample buffer is used, sample data for each reuse can be pulled from different starting addresses associated with the expected epoch position. In this case, the reused correlator can report single epoch-to-epoch correlations. This approach has higher hardware complexity but requires fewer report registers and simplifies the software. The two options are described below, and a summary of how SW generates epoch-to-epoch detector information is provided.
[1047] Related option 1: milliseconds to milliseconds
[1048] Millisecond-to-millisecond integration requires four registers per millisecond for each correlator at each code phase and carrier frequency. Note that epochs occur between millisecond events. The hardware breaks the correlation at the epoch. The signs for cos and sin are used to denote the in-phase (real) and quadrature (imaginary) parts of the correlation. The secondary code bits differ at each epoch; therefore, phase reversal occurs at epoch boundaries. The secondary code can change each epoch marked with the highest arrow. Millisecond boundaries are indicated by down arrows.
[1049] Figure 8CC Option 1 is shown.
[1050] The goal is to construct the real and imaginary parts (cos, sin) of the correlation between epoch0 and epoch1 as corr0, and the correlation between epoch1 and epoch2 as corr1.
[1051] At msec1, CorrI01, CorrI02, CorrQ01, and CorrQ02 are received. The left index is the 0th millisecond, and the right index is the partition: 1 before the epoch and 2 after the epoch.
[1052] At msec2, CorrI11, CorrI12, CorrQ11, and CorrQ12 are received. It is now possible to construct a complete epoch, corr0 = (CorrI0, CorrQ0), where CorrI0 = CorrI02 + CorrI11 and CorrQ0 = CorrQ02 + CorrQ11. (Note that corrI01 and corrQ01 are effectively ignored during the first correlation).
[1053] At msec3, we receive CorrI21, CorrI22, CorrQ21, and CorrQ22. Now we can construct another complete epoch: corr1 = (CorrI1, CorrQ1), where CorrI11 + CorrI21 and CorrQ1 = CorrQ12 + CorrQ21.
[1054] Related Option 2: Era to Era
[1055] Direct epoch-to-epoch integration requires selecting different samples for integration for each satellite. The channel initially begins at the millisecond boundary. The initial sum is ignored. Subsequent sums are operated from one epoch to another.
[1056] Each code phase and carrier frequency requires two registers per millisecond:
[1057] The secondary code can be changed every epoch.
[1058] Figure 8DD Option 2 is shown.
[1059] Receive Receive
[1060] Cos0 Cos1
[1061] Sin0 sin1
[1062] Handling Corr0 (PLL) Handling Corr0 and 1 (AFC)
[1063] For PLL:
[1064] The carrier phase of corr0 is equal to atan2(sin0,cos0).
[1065] The carrier phase of corr1 is equal to atan2(sin0,cos0).
[1066] For DLL×AFC):
[1067] The incremental phase from 0 to 1 is atan2(sin0*cos1-cos0*sin1,sin0*sin1+cos0*cos1).
[1068] Boxes 5 and 13: Drag-in state
[1069] The tracking state in box 5 is intended for two purposes: as the next state after box 4 in the capture sequence of the full code search following the secondary code phase search, and as a direct tracking state when accurate pre-positioning is provided. This is intended as a predictive state, where the frequency is estimated using a coherent PDI of 20 milliseconds or longer. If the pre-positioning is deemed inaccurate, then box 13 is used, and if a signal is found, then proceed to box 5.
[1070] When coming from box 4, the coherent PDI is of medium length, thus reducing the frequency error from up to + / -250Hz to below + / -20Hz, which is sufficient to start the box 5 loop with a pull-in range of + / -25Hz.
[1071] When entering this state as a direct t-tracking state, the pre-position has been calculated based on accurate position and velocity. Position accuracy determines code phase prediction, and velocity accuracy determines frequency accuracy. Block 5 can have fewer correlators, and this number determines the range. For L5, more correlators are needed to accommodate position errors. For example, a position error of + / - 50 meters corresponds to a range of 100 meters. Since the sample clock is close to 1 / 2 chip, which is approximately 15 m, 7 correlator pairs are needed, spaced 1 / 2 chip apart.
[1072] However, for a positional uncertainty of + / -1000 meters, the range of the 1 / 2 chip correlator is 2000 / 15 = 134. Such a large number of parallel correlators are implemented with a smaller set (e.g., 20), and then searched sequentially with a step size of 134 / 20 = 7. Box 13 is an additional state to accommodate this greater positional uncertainty. This occurs wh...
Claims
1. A system for processing L5 broadband frequency GNSS signals, the system comprising: Analog-to-digital converter (ADC) is used to generate a digital representation of GNSS signals received in the L5 broadband GNSS band; A baseband sample memory for storing digital representations of received GNSS signals, the baseband sample memory being coupled to the ADC; A GNSS processing system, coupled to a baseband sample memory to process a digital representation of a received GNSS signal, is configured to capture the code phase of one or more secondary codes of one or more GNSS signal components of an L5 wideband GNSS signal without using L1 GNSS signals to capture the code phase of one or more secondary codes of one or more GNSS signal components, and wherein the GNSS processing system captures the code phase of the one or more secondary codes after capturing one or more primary codes of the GNSS signal components.
2. The system of claim 1, wherein, The system comprises only a single GNSS antenna tuned to a frequency in the L5 broadband band, and the system does not receive or capture L1 GNSS signals.
3. The system of claim 1, wherein, The GNSS processing system includes a GNSS antenna coupled to the ADC, and wherein the GNSS processing system captures the code phase of the one or more secondary codes before tracking the GNSS signal components.
4. The system of claim 3, wherein, The GNSS processing system captures the code phase of one or more secondary codes when the time uncertainty exceeds 0.5 milliseconds.
5. The system of claim 4, wherein, Before capturing the code phase of the one or more secondary codes, the estimation error of the current time exceeds 1 millisecond.
6. The system of claim 3, wherein, The code phase of the first code in one or more secondary codes is captured by using multiple GNSS signal components from an L5 broadband GNSS signal from a single GNSS satellite.
7. The system of claim 6, wherein, The multiple GNSS signal components include GNSS sideband A signals and GNSS sideband B signals.
8. The system as claimed in claim 3, wherein, The code phase of the first code in one or more secondary codes is captured by using multiple GNSS signals from multiple GNSS satellites.
9. The system of claim 8, wherein, The plurality of GNSS satellites includes at least two satellites from at least one of the following: the Galileo E5 constellation of GNSS satellites; or the L5 GPS constellation of GNSS satellites; or the GLONASS K2 constellation of GNSS satellites; Or the QZSS constellation of GNSS satellites; or the Beidou B2 constellation of GNSS satellites.
10. The system of claim 4, further comprising: An RF receiver includes at least a first RF filter tuned to a frequency in the L5 wideband only to receive L5 wideband GNSS signals, and the first RF filter is coupled to a single GNSS antenna, wherein the system does not use L1 GNSS signals to determine time or frequency information, and wherein the system does not track L1 GNSS signals.
11. The system of claim 1, wherein, The GNSS processing system detects phase changes between successive primary code epochs. The GNSS processing system includes a frequency-locked loop (FLL), and the phase changes are detected from the in-phase and quadrature results of the correlation output of the GNSS processing system. The GNSS processing system averages the phase changes detected from the in-phase and quadrature results of the correlation output to generate an estimated frequency error; and The GNSS processing system provides a compensated frequency to one or more discriminators of the FLL based on the estimated frequency error, and the FLL is configured to reduce the error in the frequency estimation of the received L5 GNSS signal based on the estimated frequency error.
12. The system of claim 11, wherein, The FLL includes a first discriminator for a first sideband of the L5 GNSS signal and a second discriminator for a second sideband of the L5 GNSS signal, wherein the estimated frequency error is a filtered estimate based on the average of the phase changes detected from the in-phase and quadrature results of the correlation output.
13. The system of claim 12, wherein averaging comprises: The phase changes detected on two, three, or four GNSS signal components from a single GNSS satellite are averaged.
14. The system of claim 13, wherein, The FLL detects the phase change between successive primary code epochs.
15. The system of claim 1, wherein, The code phase of one or more secondary codes of one or more GNSS signal components of an L5 broadband GNSS signal is captured by using a set of histograms that store a set of phase change values.
16. The system of claim 1, wherein, The code phase of one or more secondary codes of one or more GNSS signal components of an L5 broadband GNSS signal is captured by coherent correlation in two separate correlation operations.
17. The system of claim 1, wherein, The code phase of one or more secondary codes of one or more GNSS signal components of an L5 broadband GNSS signal is captured by using a expected phase-reversal sequence of secondary codes associated with the already captured primary code phase.
18. The system of claim 1, wherein, The code phase of one or more secondary codes of one or more GNSS signal components of an L5 broadband GNSS signal is captured by correcting the predicted secondary code phase based on a determined difference between the determined secondary code phase of the GNSS signal received from the second GNSS SV and the predicted secondary code phase of the GNSS signal from the first GNSS SV.
19. The system of claim 1, wherein, The code phase of one or more secondary codes of one or more GNSS signal components of an L5 broadband GNSS signal is captured by: correlating a set of differential correlation samples with a differential secondary code sequence to provide a set of correlation outputs; and determining one or more secondary code phases of the one or more secondary codes from the set of correlation outputs.
20. The system of claim 19, wherein, The differentially correlated samples are generated by multiplying the outputs of a set of correlators with a set of complex conjugate delays due to the future autocorrelation operation by the outputs of a set of correlators with a set of complex conjugate delays due to the autocorrelation operation, and the differential secondary code sequence is generated by multiplying the secondary code sequence by the delayed secondary code sequence.
Citation Information
Patent Citations
Modernized global navigation satellite system (GNSS) receivers and commercially viable consumer grade GNSS receivers
US11686855B2
Pseudorandom noise ranging receiver which compensates for multipath distortion by dynamically adjusting the time delay spacing between early and late correlators
US5495499A
Hardware architecture for processing galileo alternate binary offset carrier (AltBOC) signals
US6922167B2
AltBoc receiver
US7885317B2