Processing GNSS signals to estimate signal characteristics

By generating and analyzing the carrier phase characteristics of uncoded samples, the positioning accuracy of the GNSS signal receiver under deep fading and multipath conditions is solved, and higher signal sensitivity and robustness are achieved.

CN120446991APending Publication Date: 2025-08-08U-BLOX
View PDF 0 Cites 3 Cited by

Patent Information

Application Number
CN202510128610.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-02-06
Filing Date
2025-02-05
Publication Date
2025-08-08

AI Technical Summary

Technical Problem

During the GNSS signal reception process, especially under the depth fading and multipath effect, it is difficult for the prior art to effectively track and estimate the carrier phase, resulting in a decrease in positioning accuracy.

Method used

By generating and storing uncoded samples, analyzing their carrier phase characteristics, separating real-time signal tracking and positioning calculated carrier phase estimation, and generating local carrier signals using carrier control signals and phase control signals to achieve higher robustness tracking of carrier signals.

Benefits of technology

Improves the sensitivity and robustness of GNSS signal receivers under deep fading and multipath conditions, and improves positioning accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120446991A_ABST
    Figure CN120446991A_ABST
Patent Text Reader

Abstract

The GNSS signal is processed to estimate signal characteristics. Methods and apparatus are provided for processing GNSS signals received at a receiver. The method includes obtaining a sample of a GNSS signal. The samples include a carrier signal modulated by a spreading code. The method includes generating codeless samples based on the obtained samples. These codeless samples contain carrier signals, but spreading codes have been erased. The method may include storing a sequence of codeless samples, the sequence having an associated duration. Further, the method includes analyzing the sequence of codeless samples to estimate one or more signal characteristics over a duration of the sequence. The signal characteristic includes a carrier phase of the carrier signal.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to global navigation satellite systems (GNSS). In particular, the present invention relates to estimating signal characteristics of GNSS signals. In particular, the signal characteristics may include carrier phase. Background Art

[0002] GNSS positioning technology is well known in the art. Existing GNSS include the Global Positioning System (GPS), Galileo, GLONASS and the BeiDou Navigation Satellite System (BDS), also referred to herein as "BeiDou". Each GNSS includes a constellation of satellites, also known in the art as "space vehicles" (SVs), which orbit the Earth. Typically, each SV transmits multiple satellite signals. These signals are received by a GNSS receiver, and the position of the GNSS receiver needs to be calculated. The GNSS receiver can use these signals to perform multiple ranging measurements to obtain information about the distance between the receiver and the corresponding satellite. When a sufficient number of measurements can be performed, the position of the receiver can be calculated through multi-point positioning.

[0003] To perform a GNSS measurement, the relevant GNSS signals must be acquired and tracked. While this may be relatively easy in open-air conditions, it can become more challenging in more difficult signal reception conditions. Multipath conditions can present particular difficulties. The accuracy of the position calculation depends on the accuracy of the ranging measurements. However, when significant multipath is present, the GNSS receiver may acquire and track reflected versions of the satellite signal instead of the direct "line of sight" (LoS) signal. The reflected version is likely to have a different path length and, therefore, produce different ranging measurements, which can corrupt or degrade the accuracy of the final position fix.

[0004] In challenging signal reception conditions, the received LoS signal may be weak. Therefore, to successfully acquire and track the LoS signal, the receiver sensitivity should be as high as possible. Increasing the receiver sensitivity increases the probability of detecting the LoS GNSS signal, which in turn increases the probability of multipath rejection.

[0005] More generally, any signal reception condition that results in deep fades can present difficulties for the receiver. Deep fades can be the result of multipath or other phenomena, such as atmospheric scintillation. Deep fades combined with fast receiver dynamics can be particularly challenging. In a deep fade, the received signal power temporarily drops to a relatively low level. Especially when combined with fast receiver dynamics (such as sudden acceleration), this can increase the likelihood of cycle slips and / or loss of signal lock. Summary of the Invention

[0006] The desire is to make the receiver more sensitive to GNSS signals and more robust to deep fades.

[0007] In conventional GNSS receiver designs, a phase-locked loop and / or a frequency-locked loop is used to track the carrier phase. In this way, the carrier phase estimates used to calculate the navigation solution are coupled to the tracking loop. The inventors have recognized that it may be advantageous to separate (i) the carrier phase estimates generated (explicitly or implicitly) during real-time signal tracking and used for feedback control from (ii) the carrier phase estimates used for positioning calculations. This is because the estimates generated during real-time signal tracking are inherently based on limited information (at most based on past and present observations). By relaxing the requirement to use the same (real-time) estimates, carrier phase estimates based on additional information can be derived. For example, the carrier phase estimate is no longer based solely on signal samples within a narrow time interval (as is the case with the real-time carrier phase estimate generated in the tracking loop), but can be derived by taking into account past and future signal samples (i.e., signal samples before and after the time interval in which the carrier phase is estimated). This can achieve greater robustness and thus improve sensitivity to deeply faded signals.

[0008] A method and apparatus for processing GNSS signals received at a receiver are provided. The method includes obtaining samples of the GNSS signal. The samples include a carrier signal modulated by a spreading code. The method includes generating code-free samples based on the obtained samples. The code-free samples include the carrier signal but with the spreading code erased. The method may include storing a sequence of code-free samples, the sequence having an associated duration. Furthermore, the method includes analyzing the sequence of code-free samples to estimate one or more signal characteristics over the duration of the sequence. The signal characteristics include a carrier phase of the carrier signal.

[0009] According to one aspect, there is provided a method of processing a GNSS signal received at a receiver, the method comprising the steps of:

[0010] Obtaining samples of the GNSS signal, wherein the samples comprise a carrier signal modulated by a spreading code;

[0011] generating uncoded samples based on the obtained samples, wherein the uncoded samples contain the carrier signal but the spreading code has been erased;

[0012] storing a sequence of the uncoded samples, the sequence having an associated duration;

[0013] The stored sequence is analyzed to estimate one or more signal characteristics over a duration of the sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal.

[0014] The step of storing the sequence may include storing the sequence in a memory.The step of storing the sequence may include accumulating the sequence of uncoded samples (eg, incrementally, one sample at a time) and storing it in a memory.

[0015] The step of analyzing the accumulated sequences may include post-processing the accumulated sequences.

[0016] The obtained samples may be samples output by the IF processing unit.

[0017] In some examples, the step of generating the codeless samples can include erasing the spreading code from the samples output by the IF processing unit—for example, by generating a local spreading code and correlating the obtained signal samples with the local spreading code. In other examples, the codeless samples can be generated in other ways.

[0018] Codeless samples contain (or "still" contain) the carrier signal, meaning either (i) no attempt was made to erase the carrier signal or (ii) the carrier signal was erased but restored. In the first case, the carrier signal has not been erased from the codeless samples. In particular, the codeless samples have not been mixed with the local carrier signal. In the second case, the carrier signal has been restored after being initially erased. In both cases, the codeless samples can, in principle, be mixed with the local carrier signal to generate codeless and carrierless samples.

[0019] In conventional receivers, even after attempting to erase the carrier signal, some residual carrier signal may exist. However, it should be understood that this does not fall within the scope of "uncoded samples" in accordance with the present disclosure.

[0020] The method may include generating a local carrier signal, mixing the obtained samples with the local carrier signal to generate carrier-less signal samples, generating a local spreading code, generating codeless carrier-less samples, including correlating the carrier-less signal samples with the local spreading code, and generating the codeless samples based at least in part on the codeless carrier-less samples.

[0021] In some examples (for some GNSS signals), the codeless and carrierless samples may be millisecond samples, for example, this is the case with the GPS L1 signal.

[0022] Generating uncoded samples can be viewed as reconstructing uncoded samples from uncoded and carrier-less samples.

[0023] In other words, the step of generating uncode samples may include or consist of the step of reconstructing the uncode samples based at least in part on the uncode-free carrier-less correlation result samples.

[0024] The codeless and carrierless correlation result samples may be complex-valued.

[0025] The method optionally includes storing the sequence of codeless and carrierless samples to provide stored signal samples; and generating the codeless samples based at least in part on the stored signal samples.

[0026] Storing the sequence of codeless and carrierless samples may include accumulating the sequence of codeless and carrierless samples (eg, accumulating them incrementally, one sample at a time).

[0027] The method may include subsampling the codeless and carrierless samples to generate subsampled signal samples; storing a sequence of the subsampled signal samples to provide stored signal samples; and generating the codeless samples based at least in part on the stored signal samples.

[0028] The sampling rate of the subsampled signal samples may be lower than that of the codeless and carrierless samples. The subsampling factor of the subsampled signal samples may be between 2 and 8, optionally between 4 and 6, optionally 5.

[0029] Storing the sequence of sub-sampled signal samples may include accumulating the sequence of sub-sampled signal samples (eg, incrementally accumulating them one sample at a time).

[0030] The step of subsampling the codeless and carrierless samples may include at least one of the following steps: summing the groups of codeless and carrierless samples; and averaging the groups of codeless and carrierless samples. The summed or averaged groups may be groups of consecutive codeless and carrierless samples.

[0031] The method may include generating a carrier control signal, wherein generating a local carrier signal is controlled by the carrier control signal; storing a sequence of values of the carrier control signal; and generating the uncoded samples based on the stored signal samples and the stored sequence of values of the carrier control signal.

[0032] The local carrier signal may be generated to have a carrier frequency determined by a carrier control signal. By setting the carrier frequency, the carrier control signal may indirectly control the carrier phase of the local carrier signal. Increasing the carrier frequency advances the phase; decreasing the carrier frequency delays the carrier phase. The method may additionally include generating a carrier phase control signal that directly sets the phase of the local carrier signal. The step of generating the local carrier signal may be controlled by both the carrier (frequency) control signal and the carrier phase control signal. The carrier phase control signal may be used to implement a non-incremental step / jump in the carrier phase. The method may further include storing a sequence of values of the carrier phase control signal, and generating codeless samples based on the stored signal samples, the stored sequence of values of the carrier control signal, and the stored sequence of values of the carrier phase control signal.

[0033] The sequence of values of the carrier control signal may correspond in time to the sequence of codeless samples. That is, they may be associated with the same time interval. The sampling rate of the sequence of values of the carrier control signal may be lower than the sampling rate of the stored signal samples. For example, the carrier control signal values may be generated at a rate of 100 Hz (1 value every 10 milliseconds, or 100 values per second), while the stored signal samples may have a sampling rate of 200 Hz (1 sample every 5 milliseconds, or 200 samples per second). In another example, the carrier control signal values may be generated at a rate of 50 Hz (1 value every 20 milliseconds, or 50 values per second).

[0034] The respective values of the carrier control signal can control the frequency of the local carrier signal within a given control period (e.g., 10 milliseconds or 20 milliseconds). Thus, the frequency of the local carrier signal can be piecewise constant, and only changes at the boundaries between control periods (corresponding to changes in the value of the carrier control signal).

[0035] By knowing the value of the carrier control signal (and optionally the carrier phase control signal) used to generate the local carrier signal (and thus used for mixing to generate the carrier-free signal samples), the effect of the local carrier signal over the duration of the sequence can be taken into account.

[0036] Generating the uncode samples based on the stored sequence of stored signal samples and values of the carrier control signal may comprise, for each stored value of the carrier control signal, rotating the phase of a corresponding subset of the stored signal samples based on the stored value.

[0037] Rotating the phase in this way can reverse the phase change imposed by the action of the local carrier signal during the mixing operation.In particular, the phase can be rotated based on the difference between the carrier frequency (determined by the stored value of the carrier control signal) and the reference frequency f0.

[0038] The step of generating the uncoded samples may further comprise: for each stored value of the carrier control signal, shifting the phase of the corresponding subset of stored signal samples by a common phase shift. The common phase shift may be calculated to align the phase of the first signal sample of a subset with the phase of the last signal sample of the previous subset.

[0039] The method may further include estimating, for the GNSS signal, at least one of a residual carrier frequency and a residual carrier phase based on the codeless and carrierless samples, wherein the carrier control signal is optionally a feedback signal generated based on a result of the estimation.

[0040] In this way, a tracking loop is achieved, thereby enabling tracking of the carrier signal. The local carrier signal can be generated so that its phase matches (at least approximately) the phase of the carrier signal of the GNSS signal. This tracking loop can be independent of the estimation of the signal characteristics based on the analysis of the stored sequence.

[0041] The step of estimating the residual carrier frequency and / or residual carrier phase may include performing a discrete Fourier transform (DFT) on the codeless and carrierless samples (also referred to herein as complex-valued correlation results). The residual carrier frequency and / or residual carrier phase may be estimated based on the results of the DFT.

[0042] The method may include estimating at least one of a residual carrier frequency and a residual carrier phase for the GNSS signal; and generating a carrier control signal based on a result of the estimation, wherein the step of generating the local carrier signal is controlled by the carrier control signal.

[0043] In some examples, the residual carrier frequency and / or residual carrier phase may be estimated based on the codeless and carrierless samples.

[0044] The local carrier signal can be generated over multiple control cycles. The carrier control signal can include a sequence of values. Each value can correspond to a respective control cycle and can be used to set the frequency of the local carrier signal within that control cycle. Thus, the local carrier signal can have a piecewise constant frequency, where the frequency is constant during each control cycle.

[0045] The duration associated with the uncoded sample sequence may be longer than the control period. It may be a multiple of the control period duration. For example, the duration of the uncoded sample sequence may be at least 10 times, or at least 20 times, the control period duration. In one example, the duration of the uncoded sample sequence may be equal to 50 times the control period duration. By analyzing an uncoded sample sequence that is longer than a single control period, the method may enable the incorporation of information from multiple control periods, resulting in improved estimation quality.

[0046] The sequence may be a first sequence, and the method may further include: obtaining a second sample of the GNSS signal; generating a second codeless sample based on the obtained second sample, wherein the second codeless sample contains the carrier signal but the spreading code has been erased; storing a second sequence of the second codeless samples, the second sequence having an associated duration; and analyzing the stored second sequence to estimate one or more signal characteristics over the duration of the second sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal, wherein the second sequence overlaps with the first sequence.

[0047] Analyzing the second overlapping sequence of uncoded samples may enable estimates of signal characteristics to be generated at shorter intervals, in particular regular intervals that are shorter than the duration of the individual sequences.

[0048] The second sample of the GNSS signal may overlap with the (first) sample of the GNSS signal. The second sample may also include a carrier signal modulated by a spreading code. The first sequence and the second sequence may have the same duration.

[0049] In this context, "overlap" means that some elements are common, but some elements are different. For example, the beginning of the second sequence may be after the beginning of the first sequence and before the end of the first sequence. The end of the second sequence may be after the end of the first sequence.

[0050] The step of analyzing the stored sequence optionally comprises processing the stored sequence using at least one of: a Kalman smoother; a Kalman filter; and a neural network trained to estimate the one or more signal characteristics. The stored second sequence may be analyzed in the same manner.

[0051] The method may further comprise using one or more estimated signal characteristics to assist in calculating a position fix.

[0052] The estimated carrier phase of a GNSS signal can be used together with the estimated carrier phases of other GNSS signals in multilateration calculations.

[0053] A computer program is also provided, comprising computer program code configured to cause one or more physical computing devices to perform all the steps of the method described above when the computer program is executed on the one or more physical computing devices. The one or more physical computing devices may comprise or consist of one or more processors of a GNSS receiver. The computer program may be stored on a computer-readable medium (optionally non-transitory).

[0054] A global navigation satellite system (GNSS) receiver is also provided. The GNSS receiver is configured to process GNSS signals. The GNSS receiver includes a measurement engine, and the measurement engine is configured to:

[0055] Obtaining samples of the GNSS signal, wherein the samples comprise a carrier signal modulated by a spreading code;

[0056] generating uncoded samples based on the obtained samples, wherein the uncoded samples contain the carrier signal but the spreading code has been erased;

[0057] storing a sequence of the uncoded samples, the sequence having an associated duration; and

[0058] The stored sequence is analyzed to estimate one or more signal characteristics over a duration of the sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal.

[0059] The GNSS receiver may further include an RF front end for receiving, downconverting, and digitizing GNSS signals; and a mixer for erasing a carrier signal. The GNSS receiver may further include an intermediate frequency (IF) processing unit for processing the signal downconverted from RF to IF by the RF front end. The output of the RF front end may be coupled to the input of the IF processing unit. The output of the IF processing unit may be coupled to the input of the mixer.

[0060] The GNSS receiver may further comprise at least a first correlator coupled to an output of the mixer and configured to erase a spreading code of the GNSS signal.The first correlator may be part of a correlator bank comprising an early, a prompt and a late correlator.

[0061] One or more outputs of the first correlator may be coupled to at least one tracking loop, including one or both of a code tracking loop and a carrier tracking loop.

[0062] At least one tracking loop may include a code-phase feedback controller configured to estimate a code phase of the GNSS signal; the GNSS receiver may further include a code generator configured to generate a local spreading code.

[0063] The code generator may include a numerically controlled oscillator (NCO) configured to generate a clock signal for generating the local spreading code.

[0064] The code generator can provide input to the correlator, enabling it to erase the spreading code of the GNSS signal.

[0065] The GNSS receiver may further include a carrier generator configured to generate a local carrier signal to erase the residual carrier from the GNSS signal. The carrier generator may include an NCO configured to generate the local carrier signal.

[0066] The GNSS receiver may include a memory for storing the sequence of uncoded samples.

[0067] The GNSS receiver may further include a pre-integration unit configured to subsample the codeless and carrierless samples to generate subsampled signal samples.

[0068] The GNSS receiver may include a memory and may be configured to store a sequence of subsampled signal samples in the memory to provide stored signal samples. In other examples, the signal samples stored in the memory may not be subsampled.

[0069] The GNSS receiver may include a first processor configured to generate uncoded samples based at least in part on stored signal samples.The first processor may be a reconstruction processor.

[0070] The GNSS receiver may further include a second processor configured to analyze the stored sequence to estimate one or more signal characteristics. The second processor may be (or may include, or may implement) a Kalman smoother, a Kalman filter, or a neural network. BRIEF DESCRIPTION OF THE DRAWINGS

[0071] Examples according to the present disclosure will now be described with reference to the accompanying drawings, in which:

[0072] Figure 1 is a block diagram of a GNSS receiver according to a first example; and

[0073] Figure 2 is a block diagram of a GNSS receiver according to a second example.

[0074] It should be noted that these figures are schematic only and are not drawn to scale. DETAILED DESCRIPTION

[0075] Reference will now be made in detail to the examples of the present disclosure illustrated in the accompanying drawings. The described examples should not be construed as being limited to the descriptions given in this section; the examples may have different forms.

[0076] Figure 1 is a block diagram of a GNSS receiver according to a first example. The GNSS receiver is configured to receive satellite signals from GPS satellites. It can alternatively or additionally be configured to receive satellite signals from other constellations (e.g., Galileo and BeiDou). The GNSS receiver includes an antenna 10 for receiving satellite signals. An RF front end 20 coupled to the antenna 10 is configured to down-convert and digitize the satellite signals received via the antenna 10. The RF front end essentially conditions the signal for subsequent signal processing. Other typical tasks performed by the front end include filtering, amplification, and automatic gain control. The satellite signals received at the RF front end 20 via the antenna 10 include L1C / A signals.

[0077] The GNSS receiver also includes an intermediate frequency (IF) processing unit 30, which is configured to process the satellite signal, which has been converted from radio frequency (RF) to IF in the RF front-end. The output of the IF processing unit 30 is coupled to the input of a mixer 40. Another input of the mixer 40 receives a local carrier, also known as a replica carrier signal, which is generated to (as closely as possible) replicate the carrier frequency and phase of the incoming signal. The replica carrier signal is a digital sinusoidal signal generated by a carrier generator 42. Thus, the mixer 40 is configured to erase (i.e., remove) any residual carrier, such as offset caused by the Doppler effect, from the incoming signal by mixing it with the replica carrier signal (in other words, calculating the product of the incoming signal and the replica carrier signal). In this example, the intermediate frequency (IF) will be assumed to be (approximately) zero. Although the satellite signal's carrier is, in principle, removed before the incoming signal reaches the mixer 40, there will still be a (small) constant residual IF and a varying carrier offset caused by the relative motion between the satellite and the GNSS receiver. The carrier generator 42 includes a numerically controlled oscillator (NCO) 44 configured to generate a replica carrier signal.

[0078] The output of the mixer 40 is provided as input to a correlator bank 50 comprising three correlators. Each correlator comprises a multiplier and an integrate-and-dump (I / D) unit ( Figure 1 (not shown in the figure). The output of each multiplier is provided as input to a corresponding integrate-and-dump (I / D) unit. Each multiplier multiplies the input signal by the replica spreading code. Each I / D unit calculates the sum of the resulting product values within an appropriate dwell time. The dwell time defines the length of the coherent integration within the correlator and corresponds to an integer number of iterations (most commonly one iteration) of the spreading code used to modulate the GNSS signal. The correlator group includes an "early" (E) correlator, a "prompt" (P) correlator, and a "late" (L) correlator. As the names suggest, these three correlators use different shifted versions of the replica spreading code. The replica spreading code is a binary pseudo-random noise (PRN) signal generated by a code generator 52, which operates under the control of a code loop controller 62. The code loop controller 62 receives the outputs of the three I / D units. It should be understood that the use of three correlators is merely illustrative. In many examples, there may be more than three correlators. In particular, there may be multiple "early" correlators, each with a different delay (shift) of the replica spreading code. Similarly, there may be multiple "late" correlators, each with a different delay (shift) of the replica spreading code. According to one implementation, in addition to one prompt correlator, there are four "early" correlators and four "late" correlators, i.e., a total of nine correlators.

[0079] Based on which correlator (E, P, L) has the maximum output value for the current dwell time, the controller 62 determines whether to adjust (eg, increment or decrement) the code phase delay control signal it provides to the code generator 52 .

[0080] The code generator 52 is a signal code generator for the relevant GNSS signal. It includes an NCO 54 configured to generate a clock signal, which is used to generate a replica spreading code for the GNSS signal. The NCO is controlled in part by a code phase delay control signal from a code loop controller 62 and in part based on a frequency estimate generated by the carrier loop controller 64.

[0081] In this way, the correlator group, together with the code loop controller 62, the carrier loop controller 64, and the code generator 52, acts as a code phase tracking loop (in other words, a delay locked loop (DLL)) for the GNSS signal. The code phase tracking loop ensures that the code phase of the replica spreading code used by the "P" correlator tracks the actual code phase of the other received L1 signal with as little delay as possible.

[0082] The outputs of the I / D units within the correlator bank 50 consist of complex-valued samples, also referred to as in-phase and quadrature samples (I / Q samples). In particular, the outputs of the I / D units of the prompt (P) correlators represent I / Q samples of the GNSS signal. When implemented in hardware, each correlator (as with other hardware blocks) would include separate I and Q branches. That is, there would be a multiplier and I / D unit for the in-phase (I) samples, and another multiplier and I / D unit for the quadrature-phase (Q) samples. However, for simplicity, it is more convenient to conceptualize them as a single multiplier and a single I / D unit with a complex output, and this is how they will be described here.

[0083] The I / Q samples from the prompt ("P") correlator output are provided to a carrier loop controller 64. The carrier loop controller 64 estimates the carrier frequency and carrier phase of the GNSS signal. It outputs the estimate as a carrier control signal, which is fed back to control the NCO 44 of the carrier generator 42. In providing this feedback, the carrier loop controller 64 implements a carrier tracking loop for the GNSS signal, ensuring that the frequency (and phase) of the replica carrier signal (generated by the carrier generator 42) tracks the actual frequency (and phase) of the received L1 signal's carrier as closely as possible. This enables the GNSS receiver to account for Doppler shifts caused by the relative motion between the receiver and the satellite. By controlling the frequency of the NCO in the carrier generator 42, both the frequency and phase of the replica carrier signal are controlled to match the frequency and phase of the residual carrier. (By increasing the frequency, the phase of the replica carrier signal is advanced; by decreasing the frequency, the phase of the replica carrier signal is retarded.) In effect, this implements a phase-locked loop (PLL) that tracks the frequency and phase of the residual carrier.

[0084] In this implementation, the code loop controller 62 and the carrier loop controller 64 generate updates at the same rate (e.g., 50 Hz). That is, they both operate with the same control period (20 milliseconds in this example). The carrier generator 42 keeps the frequency of the carrier NCO 44 constant within each 20 ms control period, and the code generator 52 also keeps the rate of the code NCO 54 constant within each such period.

[0085] In addition to updating the NCO 54 of the code generator 52 based on the code phase measurements generated by the code loop controller 62, it is also advantageous to update the chip rate of the NCO 54 (and thus the code phase) based on the output of the carrier loop controller 64. The carrier assistance block 70 converts the output of the carrier loop controller 64 (which is actually an estimate of the Doppler frequency) into a chip rate control value for the code NCO 54. The code NCO 54 operates at a specified chip rate within a control period (e.g., 20 milliseconds). Thus, the chip rate affects the evolution of the code phase of the replica spreading code. The chip rate control value is a value scaled down from the Doppler estimate, which is based on a constant ratio of the nominal carrier frequency to the nominal chip rate. If the code loop controller 62 detects a change / error in the code phase, it updates the code phase delay control signal accordingly in the next control period. This control of the code phase is added to the cumulative effect of the chip rate control.

[0086] Note that, in contrast to the carrier NCO 44, the code NCO 54 has two inputs, one for chip rate control (from the carrier assistance block 70, based on the Doppler estimate from the carrier loop controller 64), and one for code phase control (from the code loop controller 62). They are controlled independently. The chip rate control determines the chip rate. The code phase control determines the initial code phase for the control period. As a result, the code phase is not necessarily continuous at the boundaries between control periods.

[0087] The components described above enable a GNSS receiver to track GNSS signals in terms of frequency and phase of the carrier and code phase. The code tracking loop and the carrier tracking loop form a "measurement engine" comprising blocks 40 to 70.

[0088] In tracking mode, the output of the code loop controller 62 provides real-time code phase measurements. Similarly, the output of the carrier loop controller 64 provides real-time Doppler measurements. The code phase measurements and Doppler measurements are provided to the positioning engine ( Figure 1The engine combines these with GNSS measurements from other GNSS signals to calculate a navigation solution (including a position fix). Alternatively, the phase of the carrier generator 42 can be used to provide real-time carrier phase measurements for use in calculating a real-time kinematic (RTK) or precise point positioning (PPP) solution. However, this example derives the carrier phase measurements for positioning in a different manner, as will be described later below. It should be understood that the carrier phase measurements of this example can be used to calculate a position fix as an alternative to or in addition to real-time carrier phase measurements associated with the phase of the carrier generator.

[0089] In acquisition mode, the code loop controller 62 can detect whether a GNSS signal has been successfully acquired, or whether the tracking loop is actually tracking noise. This can be done by comparing the correlation results of the lead, lag, and prompt taps. When a GNSS signal is present, the amplitude of the correlation output of the prompt tap is significantly greater than the corresponding amplitudes of the lead and lag taps.

[0090] Figure 1 Demodulation / bit detection is not illustrated in the simplified block diagram. However, it should be understood that this is typically performed in practice when receiving GNSS signals. When tracking the pilot sequence, bit detection is not necessary. When tracking the rest of the GNSS signal, bit detection can be performed by examining the phase variations from symbol to symbol at the prompt correlator output.

[0091] When signal reception is good (at least for the GNSS signals in question), Figure 1 The tracking scheme works very well. ( Figure 1 The example illustrates a tracking method for one GNSS signal, but it should be understood that a receiver will typically track several GNSS signals simultaneously to generate a navigation solution.

[0092] The GNSS receiver further includes: a pre-integration unit 210 ; a memory, such as a random access memory (RAM) 220 ; a first processor, such as a reconstruction processor 230 ; and a second processor, such as a Kalman smoother 240 .

[0093] The pre-integration unit 210 is optional. When present, its input is connected to the output of the prompt (P) correlator. The pre-integration unit 210 receives the I / Q samples from the correlator and sums consecutive groups of them. This has the effect of reducing the sampling rate at the output of the pre-integration unit 210 compared to the sampling rate at the input of the pre-integration unit 210. Therefore, the pre-integration unit 210 can be more generally considered as a downsampling unit.

[0094] For example, the pre-integration unit 210 can sum (i.e., add together) consecutive pairs of samples to reduce the sampling rate. In this case, if the incoming I / Q samples are numbered 0-7, the pre-integration unit 210 will calculate the sum of sample 0 and sample 1, the sum of sample 2 and sample 3, the sum of sample 4 and sample 5, and so on, to produce a sequence of 4 complex output values based on the 8 complex-valued input sequence. In another example, the pre-integration unit 210 can add groups of four consecutive samples. Thus (using the same sample numbering as before), the pre-integration unit will calculate the sum of samples 0 to 3 and the sum of samples 4 to 7. In this way, it will produce a sequence of 2 complex output values based on the 8 complex-valued input sequence. In other examples, the pre-integration unit 210 can sum a different number of samples, such as 5, 6, 7, or 8 samples.

[0095] The complex output values from the pre-integration unit 210 are provided as input to a random access memory (RAM) 220, where a finite sequence of them is then stored. If the pre-integration unit 210 is not included, the I / Q samples output by the prompt (P) correlator are provided directly to the RAM 220 for storage. The RAM 220 also receives the carrier control signal values output by the carrier loop controller 64. A finite sequence of these values is also stored in the RAM 220. Each value of the carrier control signal is associated with a corresponding group of samples (either (pre-integrated) samples received from the pre-integration unit 210 or (non-pre-integrated) samples received directly from the prompt (P) correlator). Each group of samples corresponds to a control period during which the corresponding value of the carrier control signal controls the carrier generator 42.

[0096] The length of the sample sequences stored in memory (and similarly, the length of the sequences of carrier control signal values) can be selected based on application requirements. The length of each sequence can correspond to the interval between epochs—that is, the interval between successive calculations of a navigation solution. In one example, a navigation solution is output once per second. Thus, the sequences stored in memory correspond to one second of samples and one second of carrier control signal values.

[0097] The samples and carrier control signal values stored in the memory are processed by a first processor (reconstruction processor 230 in this example). The first processor is configured to generate codeless samples based on the signal samples stored in the memory. Here, "codeless" refers to samples from which the spreading code has been removed but the carrier signal is retained. It should be noted that such codeless samples are not Figure 1, is generated locally in the tracking loop of the receiver shown in . This is because the residual carrier signal is first erased by the mixer 40, and then the spreading code is erased from the carrier-free signal by the correlator bank 50. In other words, the output of the mixer 40 is a carrier-free signal (composed of carrier-free samples), while the output of the prompt (P) tap in the correlator bank 50 is a carrier-free and code-free signal (composed of carrier-free and code-free samples). The first processor (e.g., reconstruction processor 230) is configured to generate signal samples in the same form as if the spreading code was first erased before the carrier signal was erased. In effect, it "reconstructs" the code-free samples from the carrier-free and code-free samples by reintroducing the carrier signal.

[0098] During each control cycle, the carrier NCO 44 is set to a constant frequency. The millisecond samples generated by the correlator group 50 can be considered as a 1 millisecond integral sum of the mixed products of the virtual codeless samples and the local carrier generated using the configured carrier NCO frequency during the relevant control cycle. The carrier phase of the NCO 44 is generally not controlled independently of frequency. This means that the carrier phase evolves according to frequency and there is no jump in the carrier phase at the beginning / end of the control cycle (i.e., from one control cycle to the next). Therefore, the I / Q samples output by the mixer 40 and the correlator group 50 are phase continuous between control cycles.

[0099] Assume that the codeless samples (codeless I / Q samples) have been reconstructed for the previous control cycle. The local carrier phase generated by the carrier NCO 44 for processing the first sample of the current control cycle is denoted as Φ. Since the local carrier phase is constantly changing, Φ can be calculated iteratively given all the past carrier NCO frequencies. The local carrier in the current control cycle is e j2πfkT+jΦ In order to reconstruct the uncoded sample r k , the phase of this term is reversely rotated. There are K millisecond samples to be reconstructed in the current control cycle. Let [s1,s2,s3,…,s k ,…,s K ] is the sample array before reconstruction, let [r1,r2,r3,…,r k ,…,r K ] is the reconstructed sample array. The carrier NCO frequency for the current control cycle is denoted as f. The reference frequency for I / Q sample reconstruction is f0. This is the assumed frequency of the signal output by the IF processing unit 30 at the very beginning of the stream. The role of the carrier NCO 44 and mixer 40 is to rotate the phase of the incoming samples by an amount However, in this example, for simplicity, the reference frequency is assumed to be zero (f0=0). The reconstruction calculation is as follows:

[0100] r k =s k e -j2πfkT-jΦ

[0101] Here, the term e -j2πf Rotates the carrier NCO backwards for real-time tracking during the control cycle. j2πf At the same time, item e -jΦ Phase continuity between control cycles is ensured.

[0102] The uncoded samples output by the first processor (reconstruction processor 230) are output to a second processor for analysis. In this example, the second processor is a Kalman smoother 240. It processes the sequence of uncoded samples together to estimate the carrier phase over the entire snapshot. This can be considered a re-estimation of the carrier phase for each control cycle, since the real-time tracking loop has already (at least implicitly) generated a first estimate for each control cycle. The advantage of the Kalman smoother 240 is that it can consider more information than the real-time tracking loop—it can "look forward" and "look backward" in time to derive the optimal sequence of carrier phase estimates that best matches the complete sequence of uncoded samples. In this example, the receiver is configured to generate a navigation solution every second, and the Kalman smoother 240 is configured to process snapshots containing one second of uncoded samples. The end of the sequence output by the Kalman smoother is the accumulated carrier phase at the end of the snapshot. This accumulated carrier phase estimate is used to generate the navigation solution (particularly to resolve ambiguities in the real-time kinematic (RTK) algorithm, which is used to generate high-precision estimates of position, velocity, and time).

[0103] The present inventors have discovered that the (accumulated) carrier phase estimate derived using a Kalman smoother is more robust to deep fading than the carrier phase estimate implied by the tracking loop (i.e., the phase of the local carrier signal generated by the carrier generator 42). For example, the Kalman smoother can avoid or correct cycle slips that would degrade the carrier phase estimate implied by the real-time operation of the tracking loop.

[0104] Figure 2 1 is a block diagram of a GNSS receiver according to the second example. For simplicity, the antenna 10, the RF front end 20 and the IF processing unit 30 are omitted. Figure 1 The mixer 40, correlator bank 50, carrier generator 42, code generator 52 and carrier assist block 70 operate in the same manner as in the example of FIG. Figure 1 and therefore will not be described further.

[0105] Figure 2 The operation of the GNSS receiver shown is similar to Figure 1 The difference in the operation shown is the way in which the carrier and chips (spreading codes) of the GNSS signal are tracked. Figure 2In the GNSS receiver shown, there is no feedback loop within the measurement engine itself. Instead, high-rate feedback controlling the carrier NCO 44 and code NCO 54 is provided by the positioning engine (PE) 110 which is responsible for calculating the navigation solution.

[0106] for Figure 2 In the illustrated GNSS receiver, the outputs of the lag, lead, and lead taps of the correlator bank 50 are provided as inputs to respective bit stripping (BR) blocks 82, 84, and 86. When a portion of a GNSS signal containing data (e.g., a navigation message) is received, the bit stripping blocks 82, 84, and 86 erase the detected data bits by multiplying the complex correlator outputs by 1 or -1, as appropriate. When a portion of a GNSS signal containing a pilot sequence is received, no bit detection is required because the bit sequence of the pilot signal is known in advance (given the timing synchronization of the incoming signal).

[0107] The outputs of each bit removal block 82, 84, 86 are provided as input to a corresponding discrete Fourier transform (DFT) block 83, 85, 87. Each DFT block computes the Fourier transform of the complex correlator output over a defined coherent integration interval. The outputs of the DFT blocks 83, 85, 87 are provided as input to a line-of-sight (LoS) delay and Doppler estimator 90. The estimator 90 uses the information from the Fourier transform to estimate the carrier phase and code phase of the GNSS signal.

[0108] The aggregated outputs of DFT blocks 83, 85, and 87 form a two-dimensional matrix that covers a range of frequencies and a range of code-phase delays. In a time-varying channel, individual multipath components typically have Doppler and delay values that differ from the LoS value. In this delay-frequency matrix, correlation triangles appear at specific Doppler values, with the peaks of the triangles representing the proximity of the delay and Doppler of the multipath component. By inspecting the matrix, several such peaks can be identified in the delay-frequency grid. The peak with the shortest arrival time is detected as the line-of-sight path. Once completed, the taps on either side of the correlation triangle are interpolated to provide an estimate of the delay.

[0109] When the GNSS signal is accurately tracked (and there are no rapid dynamics), the LoS component should remain aligned with the "instantaneous" tap, with a Doppler frequency of zero. Any deviation between the code phase of the local spreading code and the code phase of the received GNSS signal will cause the leading or lagging correlator tap to display an output with a larger amplitude than the instantaneous tap. Simultaneously, any deviation between the carrier frequency of the local carrier signal and the carrier frequency of the received GNSS signal will show up as a peak at a non-zero frequency in the Fourier transform.

[0110] The output of the estimator 90 corresponds to Figure 1 The outputs of the code loop controller 62 and the carrier loop controller 64 in Figure 2 In the configuration shown, the output of the estimator is not used directly to control the carrier generator 42 or the code generator 52. Instead, the output of the estimator 90 is provided as one of the multiple inputs to the positioning engine 110. The positioning engine 110 also receives input from the inertial measurement unit (IMU) 120. One output of the positioning engine is a navigation solution, which includes estimates of position, velocity, time (PVT), and other state variables. The navigation solution is generated once per epoch and passed to a Tracking Intelligence Provider (TIP) generator 130. The positioning engine 110 also outputs more frequent estimates of velocity based on inertial measurements received since the most recent navigation solution. These velocity estimates are also output to the TIP generator. For example, the interval between epochs can be 1 second; therefore, the navigation solution can be output at a frequency of 1 Hz. The interval between velocity estimates can be 20 milliseconds; therefore, the velocity estimates can be output at a frequency of 50 Hz. (Here, 20 ms corresponds to the control period of the carrier generator 42.)

[0111] The TIP generator 130 converts the output of the positioning engine 110 into code phase and chip rate control signals for the code generator 52 and a carrier control signal for controlling the frequency of the carrier generator 42. To do this, the TIP generator 130 compares the current satellite positions with the current PVT solution from the positioning engine 110. From this comparison, the TIP generator predicts the delay and Doppler along the line-of-sight vector from the receiver to each satellite.

[0112] The code phase delay control signal is updated at a relatively low rate (e.g., 1 Hz). This is because the code phase estimate is generated once per epoch as part of the navigation solution. The carrier control signal is updated at a higher rate, based on the more frequent velocity estimate. Note that while the code phase delay control signal is updated only at a relatively low rate (e.g., 1 Hz), the code phase of the code generator 52 is updated at a relatively high rate (e.g., 50 Hz). This is because the carrier assistance block 70 continuously updates the code generator 52 at a relatively high rate during the intervals between epochs, based on the relatively high-rate velocity (and resulting Doppler) estimate. Thus, the high-rate velocity / Doppler estimate can help compensate for receiver acceleration and higher-order dynamics during the coherent integration of the correlator bank and DFT block. Note, however, that the code phase of the code NCO is reinitialized at the beginning of each epoch based solely on the code phase delay control signal. In other words, the evolution of the code phase in the previous epoch due to the cumulative effects of the carrier assistance block 70 does not affect the code phase setting at the beginning of the next epoch.

[0113] Figure 2The measurement engine in includes blocks 40 to 90 (but not blocks 110, 120, and 130). The output of the measurement engine is the output of the estimator 90. The positioning engine 110 receives corresponding inputs from multiple measurement engines—one input for each tracked GNSS signal. Typically, at least four signals from different satellites are tracked to support the calculation of the navigation solution. The positioning engine 110 combines the information provided by the GNSS measurements from the various measurement engines with the information provided by the inertial measurements from the IMU 120. To this end, the positioning engine 110 uses a Kalman filter or other state estimator. The output of the state estimator includes a position, velocity, and time (PVT) solution. As described above, the TIP generator 130 predicts the Doppler frequency and code phase of each GNSS signal based on the PVT solution and the corresponding satellite LoS vector. Note that in some examples, the functionality of the TIP generator 130 can be incorporated into the positioning engine 110. For example, the positioning engine 110 can output state estimates of the Doppler frequency and code phase of each satellite.

[0114] Figure 2 The configuration shown may be particularly suitable for difficult signal reception conditions. Completing the tracking loop through the positioning engine 110 helps make the feedback to the code generator 52 and the carrier generator 42 as robust and stable as possible. In the event that the corresponding measurement engine may lose tracking lock on a weak GNSS signal, if it is working independently, the information provided by the other measurement engine (and IMU 120) can enable continued tracking of the weak GNSS signal.

[0115] At the same time, because tracking can maintain lock on the GNSS signal even in challenging signal reception conditions (even in fast dynamic situations due to the use of inertial measurements), the coherent integration time of the correlator bank 50 and subsequent DFT blocks 83, 85, 87 can be increased. This in turn increases the sensitivity of the measurement engine, enabling it to acquire and track weaker signals. In one example according to the present disclosure, the coherent integration time of the DFT block is 1 second.

[0116] The sequence of operations performed for each epoch will now be described in more detail. Positioning engine 110 provides code phase and velocity inputs from the navigation solution once per epoch. This is used to set NCO 44 and NCO 54. Correlator group 50 begins generating millisecond samples. Positioning engine 110 provides high-rate velocity input multiple times per epoch (e.g., 50 times per epoch in this example). Each time a new velocity input is provided, NCO 44 and NCO 54 are set based on it (via TIP generator 130, which converts the velocity estimate into a Doppler estimate). Code NCO 54 is set via carrier auxiliary unit 70; carrier NCO is set directly. Correlator group 50 continues to generate millisecond samples. These are inputs to DFT blocks 83, 85, 87 to calculate the DFT. After DFT blocks 83, 85, 87 generate the Fourier transforms, they are evaluated by estimator 90.

[0117] Optionally, as soon as the millisecond samples are available, they can be pre-integrated to begin computing the DFT in a pipelined fashion. Alternatively, the millisecond samples can be stored until enough samples are available for a full coherent integration period (e.g., 1 second), and then the DFT can be computed using the full sample set.

[0118] According to this example, the GNSS receiver is Figure 1 Blocks 210, 220, 230 and 240 are added in a similar manner to the GNSS receiver in FIG. The pre-integration unit 210 takes input from the prompt (P) correlator taps as previously described. The RAM 220, reconstruction processor 230 and Kalman smoother 240 are used in conjunction with Figure 1 Operate in the same way as in the example.

[0119] like Figure 2 As shown, the output of the Kalman smoother 240 is provided as an input to the positioning engine 110. This provides the positioning engine 110 with carrier phase estimates generated by the Kalman smoother based on the sequence of codeless samples, once per epoch (e.g., once per second). Between these estimates provided by the Kalman smoother 240, the positioning engine relies on "real-time" frequency estimates generated by the LoS delay and Doppler estimator 90. The evolution of the carrier phase based on these frequency estimates controls the carrier phase of the carrier NCO 44.

[0120] In current implementations of GNSS receivers, blocks 20, 30, 40, 42, 44, 50, 52, 54, and 220 are implemented in dedicated hardware. Blocks 62, 64, 70, 82-87, 90, 110, 120, 130, 210, 230, and 240 are currently implemented in software running on a processor of the GNSS receiver. However, they may also be implemented in dedicated hardware.

[0121] It should be understood that the scope of the present disclosure is not limited to the examples described above. Based on the above description, many variations will be apparent to those skilled in the art.

[0122] exist Figure 1 and Figure 2 In the example of , the codeless samples are generated by the reconstruction processor 230. However, in other examples, they can be generated in other ways. For example, the codeless samples can be generated by erasing the spreading code from the signal samples produced by the IF processing unit 30. For example, this can include generating a local spreading code (such as the spreading code generated by the code generator 52) and correlating the signal samples obtained from the IF processing unit 30 with the local spreading code. In essence, this is like reordering Figure 1 and Figure 2 4 and 50 in order to place the correlator bank 50 before the mixer 40 in the receiver processing chain. Such an example may avoid the need to reconstruct the uncoded samples - thus, the pre-integration unit 210 and the first processor (reconstruction processor 230) may not be required. However, performing the correlation operation of the correlator bank 50 at the required sampling rate at the output of the IF processing unit 30 may be computationally intensive. In this regard, computational efficiency may be Figure 1 and 2 One advantage shown in is that it relies on the configuration of the reconstruction processor 230 .

[0123] In the above example, the carrier-free and code-free samples (I / Q samples) output from the correlator bank 50 (optionally downsampled by the pre-integration unit 210) are stored in a memory (RAM 220) and then processed by the first processor (reconstruction processor 230). The samples are accumulated in the RAM 220 over the entire one-second interval between epochs. Similarly, the carrier control signal values are also accumulated over the one-second interval. However, this may not be required in all implementations. Shorter batches of samples can be temporarily accumulated in the memory. For example, samples corresponding to one control cycle (e.g., lasting 20 milliseconds) can be accumulated in the memory (along with the corresponding carrier control signal values). They can then be processed by the first processor at the end of the control cycle (e.g., at the end of 20 milliseconds, rather than waiting until the end of 1 second).

[0124] Alternatively, in other examples, the samples may be processed by the first processor without being stored in memory at all. That is, they may be passed directly from the pre-integration unit 210 or the prompt (P) correlator taps to the reconstruction unit 230. Figure 1 and Figure 2 , which can be achieved by reversing the positions of the reconstruction processor 230 and the RAM 220 in the block diagram.

[0125] In the above examples, it is assumed that the navigation solution will be calculated periodically, once per second. However, it is not necessary to calculate the navigation solution at fixed, regular intervals in this manner. In other examples, the navigation solution can be calculated in response to requests from a software application. These requests can be at regular or irregular intervals. In such examples, the Kalman smoother can be configured to process a sequence of uncoded samples whose length corresponds to the duration that has elapsed since the last navigation solution was calculated. This duration may vary between consecutive navigation solutions.

[0126] exist Figure 1 and Figure 2 In the example, the second processor is a Kalman smoother. This is not required. The Kalman smoother can be replaced by another estimator suitable for estimating carrier phase from the sequence of uncoded samples in the snapshot. In general, any estimator that utilizes the entire observation set can be used. In one alternative example, the Kalman smoother can be replaced by a Kalman filter. In another alternative example, the second processor can include a neural network trained to estimate carrier phase from the uncoded samples, rather than a traditional state estimator such as a Kalman filter or a Kalman smoother. Such a neural network can be trained by obtaining a training dataset containing multiple sequences of uncoded samples. (These sequences can be real or generated by simulated GNSS receivers.) Each sequence is accompanied by a corresponding "ground truth" carrier phase value, which is the output variable that the neural network is trained to infer based on the sequence of uncoded samples. In some cases, the ground truth may include the carrier phase value for each control cycle, and accordingly, the neural network can be trained to infer each value of the carrier phase (one value per control cycle). However, since the final carrier phase is the primary interest for each snapshot, the neural network can alternatively be trained to infer only this final carrier phase value. This can reduce the amount of training data required and the computational burden of training. Once suitable training data is available, the neural network may be trained using any suitable algorithm, including but not limited to the well-known back-propagation algorithm.

[0127] The neural network can be of any suitable type, including but not limited to a recurrent neural network (RNN), a convolutional neural network (CNN), a long short-term memory (LSTM) network, or an attention-based network. In some examples, the uncoded samples can be pre-integrated before being input to the neural network. From each (pre-integrated) uncoded sample, the system can derive the amplitude and (accumulated) carrier phase. Both the amplitude and (accumulated) phase are fed into the neural network for phase estimation. In principle, during the training of the neural network, the amplitude will serve as a confidence measure for the phase estimate.

[0128] In the above example, if Figure 1 and Figure 2As shown, the Kalman smoother processes one second of data together as a batch (snapshot) to produce an improved carrier phase estimate. In one implementation, this approach may result in one such carrier phase estimate being generated per second. However, it is not necessary for the rate at which the estimate is generated to be tied to the size of the batch (i.e., the duration of the snapshot) in this way. In an alternative implementation, the Kalman smoother can process overlapping batches (snapshots). For example, the Kalman smoother can still process batches (snapshots) that are 1 second long, but consecutive batches can overlap by 0.5 seconds. In this way, the Kalman smoother can produce a carrier phase estimate every 0.5 seconds instead of every 1 second. This is achieved without reducing the amount of data considered for each estimate.

[0129] The 20 millisecond control period for the coherent integration described above may be beneficial; however, the method is not limited in this respect. Longer or shorter control periods may be selected. The selection may be based on the signal conditions expected or encountered in use. For example, in a highly dynamic scenario, where the receiver is subject to frequent rapid changes in speed and / or direction, a shorter control period may be required to better cope with the signal dynamics. Conversely, if the receiver is expected to be static, extending the control period may be beneficial. Alternatively, or in addition, in some examples, the control period may be selected based on the instantaneous carrier signal to noise density ratio (C / N0). For example, when C / N0 is high, a shorter control period may be required to reduce the effects of high dynamics. Conversely, when C / N0 is low, the control period may need to be increased to enhance sensitivity (at least when the dynamics do not pose additional challenges).

[0130] In the examples above, the measurement engine is described as generating GNSS measurements from GNSS signals. This is indeed the typical primary purpose of a measurement engine. However, the measurement engine may also (or alternatively) generate an indication of whether a GNSS signal is detected, i.e., whether a GNSS signal has been acquired before tracking the GNSS signal and / or taking a GNSS measurement. This can be very useful, particularly if GNSS signal lock is lost while tracking the GNSS signal.

[0131] Other variations involve how the blocks are implemented. In the examples discussed above, certain components are defined in software or software modules running on the GNSS receiver's processor. However, in other examples, some or all of these units may be implemented in dedicated fixed-function hardware. Similarly, components defined in hardware according to the examples above may be defined in software in other examples.

[0132] For example, the first processor (reconstruction processor 230) and the second processor (e.g., Kalman smoother 240) are described above as two separate components. Of course, this does not limit the scope of the present disclosure. These two components can be implemented in the same hardware. In particular, these two components can be implemented in software running on one or more processors (e.g., CPU or DSP).

[0133] In the claims, any reference signs placed between brackets shall not be construed as limiting the claim. The word "comprising" does not exclude the presence of elements or steps other than those listed in the claim. However, when the word "comprising" is used, this also discloses as a special case the possibility that the listed elements or steps are exhaustive - that is, the device or method may consist of only these elements or steps. The word "a" or "an" before an element does not exclude the presence of a plurality of such elements. Examples may be implemented by means of hardware comprising several different elements. In a device claim that lists several units, several of these units may be implemented by the same hardware. The fact that certain measures are recited in different dependent claims does not in itself indicate that a combination of these measures cannot be fully utilized. Furthermore, in the appended claims, a list comprising "at least one of A, B and C" should be interpreted as (A and / or B) and / or C.

[0134] In flowcharts, abstracts, claims, and descriptions related to methods, the order in which the steps are listed is generally not intended to limit the order in which the steps must be performed. The steps may be performed in an order different from that shown (unless otherwise indicated, or unless a subsequent step depends on the product of a previous step). However, in some cases, the order in which the steps are described may reflect a preferred order of operation.

[0135] Furthermore, in general, various examples may be implemented in hardware or dedicated circuitry, software, logic, or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software, which may be executed by a controller, microprocessor, or other computing device, although these are not limiting examples. Although various aspects described herein may be illustrated and described as block diagrams, flow charts, or using other graphical representations, it is fully understood that the blocks, devices, systems, techniques, or methods described herein may be implemented in hardware, software, firmware, dedicated circuitry or logic, general-purpose hardware or a controller or other computing device, or a combination thereof, as non-limiting examples.

[0136] The examples described herein can be implemented by computer software that can be executed by a data processor (e.g., a processor entity) of the device, or by hardware, or by a combination of software and hardware. In addition, it should be noted in this regard that any block of the logic flow in the figure can represent program steps, or interconnected logic circuits, blocks and functions, or a combination of program steps and logic circuits, blocks and functions. The software can be stored on physical media such as memory chips or memory blocks implemented in a processor, magnetic media (e.g., hard disk or floppy disk), and optical media (e.g., DVDs and their data variants, CDs).

[0137] The memory may be of any type suitable for the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory, and removable memory. The data processor may be of any type suitable for the local technical environment and may include one or more of a general-purpose computer, a special-purpose computer, a microprocessor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a gate-level circuit, and a processor based on a multi-core processor architecture, as non-limiting examples.

[0138] The examples discussed herein can be implemented in various components, such as integrated circuit modules. The design of integrated circuits is typically a highly automated process. Complex and powerful software tools are available to convert a logic-level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.

Claims

1. A method of processing a GNSS signal received at a receiver, the method comprising the following steps: Obtaining samples of the GNSS signal, wherein the samples comprise a carrier signal modulated by a spreading code; generating uncoded samples based on the obtained samples, wherein the uncoded samples contain the carrier signal but the spreading code has been erased; storing a sequence of the uncoded samples, the sequence having an associated duration; and The stored sequence is analyzed to estimate one or more signal characteristics over a duration of the sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal.

2. The method according to claim 1, comprising the steps of: generating a local carrier signal; mixing the obtained samples with the local carrier signal to generate carrier-free signal samples; Generate local spreading codes; Generating codeless and carrierless samples, the step comprising correlating the carrierless signal samples with the local spreading code; as well as The uncode samples are generated based at least in part on the uncode and carrier-less samples.

3. The method according to claim 2, comprising the steps of: storing the sequence of codeless and carrierless samples to provide stored signal samples; and The uncoded samples are generated based at least in part on stored signal samples.

4. The method according to claim 2, comprising the steps of: subsampling the codeless and carrierless samples to generate subsampled signal samples; storing the sequence of subsampled signal samples to provide stored signal samples; as well as The uncoded samples are generated based at least in part on stored signal samples.

5. The method according to claim 4, wherein The step of subsampling the codeless and carrierless samples comprises at least one of the following steps: summing the groups of codeless and carrierless samples; and The group of codeless and carrierless samples is averaged.

6. The method according to any one of claims 3 to 5, comprising the steps of: generating a carrier control signal, wherein the step of generating the local carrier signal is controlled by the carrier control signal; storing a sequence of values of the carrier control signal; and The uncode samples are generated based on stored signal samples and a stored sequence of values of the carrier control signal.

7. The method according to claim 6, wherein: The step of generating the uncoded samples based on the stored signal samples and the stored sequence of values of the carrier control signal comprises: For each stored value of the carrier control signal, the phase of the corresponding subset of stored signal samples is rotated based on the stored value.

8. The method of claim 6, further comprising estimating, for the GNSS signal, at least one of a residual carrier frequency and a residual carrier phase based on the codeless and carrierless samples, in, The carrier control signal is a feedback signal generated based on a result of the estimation.

9. The method according to any one of claims 1 to 5, comprising the steps of: estimating at least one of a residual carrier frequency and a residual carrier phase for the GNSS signal; as well as A carrier control signal is generated based on a result of the estimation, wherein the step of generating a local carrier signal is controlled by the carrier control signal.

10. The method according to any one of claims 1 to 5, wherein The sequence is a first sequence, and the method further comprises the following steps: obtaining a second sample of the GNSS signal; generating a second uncoded sample based on the obtained second sample, wherein the second uncoded sample includes the carrier signal but the spreading code has been erased; storing a second sequence of said second uncoded samples, said second sequence having an associated duration; and analyzing the stored second sequence to estimate one or more signal characteristics over a duration of the second sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal, Wherein, the second sequence overlaps with the first sequence.

11. The method according to any one of claims 1 to 5, wherein The step of analyzing the stored sequence comprises processing the stored sequence using at least one of: Kalman smoother; Kalman filter; as well as A neural network is trained to estimate the one or more signal characteristics.

12. The method of any one of claims 1 to 5, further comprising using one or more estimated signal characteristics to assist in calculating a position fix.

13. A computer program product comprising a computer program, the computer program comprising computer program code, the computer program code being configured to cause one or more physical computing devices to perform all the steps of the method according to any one of claims 1 to 12 when the computer program is run on the one or more physical computing devices.

14. A global navigation satellite system (GNSS) receiver, the GNSS receiver being configured to process GNSS signals, the GNSS receiver comprising a measurement engine (40, 42, 44, 50, 52, 54, 62, 64, 70, 82, 84, 86, 83, 85, 87, 90, 210, 220, 230, 240), the measurement engine being configured to: Obtaining a sample of the GNSS signal, wherein: The samples include a carrier signal modulated by a spreading code; generating uncoded samples based on the obtained samples, wherein the uncoded samples contain the carrier signal but the spreading code has been erased; storing a sequence of the uncoded samples, the sequence having an associated duration; and The stored sequence is analyzed to estimate one or more signal characteristics over a duration of the sequence, wherein the one or more signal characteristics include a carrier phase of the carrier signal.

Citation Information

Cited By

  • Processing a GNSS signal based on doppler estimates

    US12631767B2

  • Processing a GNSS signal based on doppler estimates

    US12693430B2

  • Processing a GNSS signal based on doppler estimates

    US20250123407A1