The disclosed embodiments relate generally to satellite communications. More particularly, the disclosed embodiments relate to clock and carrier signal tracking in a GNSS receiver.
Receivers in global navigation satellite systems (GNSS's), such as the Global Positioning System (GPS), use range measurements that are based on line-of-sight signals from satellites. The signal strength of the satellite signals received by a GNSS receiver is weak, approximately 10−16 watts, and also suffers from a variety of errors. One error, referred to below as a “clock error,” results from the fact that GNSS receivers typically use a crystal clock that is less accurate than the atomic clocks typically used by GNSS transmitters. In addition, GNSS satellites transmit at a carrier frequency that undergoes a number of distortions, including a line-of-sight Doppler shift due to the relative motion between the GNSS transmitter (i.e., the satellite) and the GNSS receiver (i.e., the mobile object). These distortions must be accounted for, in a process known as carrier tracking, in order to accurately reproduce the satellite's data signal.
Some embodiments of the present disclosure provide systems and methods for navigating a mobile object according to signals from satellites. In some embodiments, the mobile object receives and processes GNSS satellite signals, sometimes herein called satellite navigation signals or satellite signals, from a plurality of satellites, using a plurality (e.g., a corresponding number) of different signal processing channels, sometimes herein called channels. For each signal processing channel, errors in the carrier phase (e.g., of a locally produced replica of a corresponding satellite signal) are measured and accumulated. These errors are used both for correcting the clock error and for carrier tracking. For example, an inertial measurement unit (IMU) or velocity estimate for the mobile object is used to estimate and account for a line-of-sight Doppler error, a common remaining error (across multiple channels) is used to determine a clock error, and a remainder for each individual channel is used for carrier tracking.
Because the clock error is estimated using the signals from multiple channels (which could correspond to as few as four channels, but more typically 8 or more channels, and potentially tens or even hundreds of channels), it is possible and often beneficial to correct the clock error more often than the carrier signal (e.g., every millisecond as opposed to every five milliseconds). When a single stage of demodulation is used to correct both errors, correcting the clock error at a faster rate than that of the carrier signal results in the two signals drifting in opposite directions, because corrections to the clock error are effectively counted multiple times. This typically would not adversely impact GNSS receiver performance as long as the receiver has enough allocated memory to store the two corrections. When implemented in software, allocating sufficient memory is typically not a problem, as memory can be reallocated on-demand. However, if a single stage of signal demodulation and correlation accumulation hardware is used to control both a clock NCO (numerically controlled oscillator) and channel carrier NCO, but with different iteration/update rates for the clock and channel carrier update loops, the opposite drift of the clock NCO and the channel carrier NCO can adversely affect operation of the GNSS receiver.
To that end, a method is provided for navigating a mobile object according to signals from satellites using a dual-stage error correction scheme, in which the corrected clock signal is intentionally not accounted for in tracking the carrier signal (e.g., to avoid multiple counting). The method is performed at the mobile object (e.g., by a navigation module at the mobile receiver, where the navigation module includes a satellite receiver to receive satellite navigation signals from a plurality of satellites). The method includes receiving satellite navigation signals from a plurality of satellites. The method includes, for each respective channel of a plurality of channels, processing a corresponding satellite navigation signal of the received satellite navigation signals, the processing of the corresponding satellite navigation signal including: generating an estimate of clock error of a clock of the mobile object using a first error correction stage of the respective channel; and generating an estimate of a respective carrier tracking error for the respective channel using a second error correction stage of the respective channel that is distinct from the first error correction stage of the respective channel. Each channel (e.g., using a channel tracking loop) processes a corresponding satellite navigation signal of the received satellite navigation signals. The method includes in accordance with the estimate of the clock error and the estimate of the respective carrier tracking error for each of the plurality of channels, computing position and velocity estimates for the mobile object. The method includes performing a navigation function for the mobile object in accordance with the computed position and velocity estimates for the mobile object.
It is noted that each channel of the plurality of channels is typically used to maintain lock or synchronization with a different satellite navigation signal. For example, for a set of N satellites in view of the mobile object, each satellite transmitting having two satellite navigation signals (e.g., on two different frequencies), 2N of the channels would be used to maintain lock or synchronization with the signals from those N satellites.
Further, a navigation module for a mobile object is provided. The navigation module includes one or more processors, a satellite receiver to receive satellite navigation signals from a plurality of satellites, and a plurality of channel tracking loops. Each channel tracking loop of the plurality of channel tracking loops corresponds to a respective channel of a plurality of channels and includes a first error correction stage and a second error correction stage. Each channel tracking loop processes a corresponding satellite navigation signal of the received satellite navigation signals and is configured to: generate an estimate of clock error of a clock of the mobile object using a first error correction stage of the respective channel; and generate an estimate of a respective carrier tracking error for the respective channel using a second error correction stage of the respective channel that is distinct from the first error correction stage of the respective channel. The navigation module for the mobile object further comprises a navigation application module configured to: in accordance with the estimate of the clock error and the estimate of the respective carrier tracking error for each of the plurality of channels, compute position and velocity estimates for the mobile object; and perform a navigation function for the mobile object in accordance with the computed position and velocity estimates for the mobile object.
Thus, improved systems and methods for navigating a mobile object are provided, particularly with respect to carrier and clock tracking.
In Tables 1-2 above, signal type refers to the various signals provided by the various GNSS systems (e.g., GPS-C/A is the GPS coarse acquisition signal), PRN period is the length of time for a complete instance of the PRN code (in milliseconds), T is the length of time, in milliseconds, over which a single bit of data is encoded (in milliseconds), and is also the minimum length of time between signal value transitions due to either secondary code (SC) modulation or data modulation or both, PRN length is the number of chips in a complete instance of the PRN code, the chipping rate is the rate at which the chips are transmitted (in millions of chips per second (MCPS)), and Req Fs is the required sampling frequency (per Nyquist theorem). The rate at which the chips are transmitted may differ from the rate at which they are received based on, e.g., Doppler shift and other effects.
In some embodiments, mobile object 1110 also receives satellite orbit correction information and satellite clock correction information (sometimes collectively called “correction information”) for the plurality of satellites. The correction information is typically broadcast by and received from one or more satellites 1118 distinct from the GNSS satellites 1115, using an antenna 1142 and signal receiver(s) 1152 (see
Mobile object 1110 determines a position of mobile object 1110, using the received satellite navigation signals, and optionally the received satellite orbit correction information and satellite clock correction information, for the plurality of satellites. In some embodiments, received satellite navigation signals are processed by navigation signal receiver 1120, including analog signal processing circuitry 1122 and a digital signal processor 1124, taking into account the correction information, to determine code measurements and phase measurements for signals received from four or more satellites 1115. In some embodiments, each distinct signal received from a satellite is processed using a different channel. Stated another way, the distinct signals received from each distinct satellite are each processed using a different channel, each of which includes a channel tracking loop. Since a single GNSS receiver may be tracking multiple signals, from multiple (e.g., four or more) satellites, from one or more (e.g., multiple) constellations of satellites, the GNSS receiver may be processing tens or hundreds of satellite signals at any given time. Embedded computer system 1130 determines the position of mobile object 1110 based on those measurements.
Mobile object system 2200 typically includes one or more hardware processors (e.g., CPUs) 2202 for executing programs or instructions; memory 2210; one or more communications interfaces 2206; and one or more communication buses 2205 for interconnecting these components. Mobile object system 2200 optionally includes a user interface 2209 comprising a display device and one or more input devices (e.g., one or more of a keyboard, mouse, touch screen, keypad, etc.) coupled to other components of mobile object system 2200 by the one or more communication buses 2205. Satellite receiver 1150 receives satellite navigation signals from a plurality of satellites 1115 (
Communication interface 2206 (e.g., a transceiver) is used by mobile object system 2200, and more generally by mobile object 1110, to convey information to external systems, and to receive communications from external systems. Optionally, one or more additional signal receivers 1152 are included in mobile object system 2200 to receive correction information broadcast by one or more satellites 1118 (
Memory 2210 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 2210 optionally includes one or more storage devices remotely located from the CPU(s) 2202. Memory 2210, or alternately the non-volatile memory device(s) within memory 2210, comprises a computer readable storage medium. In some embodiments, memory 2210 or the computer readable storage medium of memory 2210 stores the following programs, modules and data structures, or a subset thereof:
Dual-stage tracking system 2207 complements tracking module 2222 by performing certain GNSS satellite signal tracking operations in hardware, as described in greater detail below. Optionally, mobile object system 2200 includes an acquisition hardware module (e.g., implemented as one of the CPUs) that works in conjunction with acquisition module 2220 for acquiring (determining range or pseudorange, carrier phase, etc.) multiple satellite navigation signals distinct from dual-stage tracking system 2207. In some embodiments, as each satellite navigation signal is acquired (e.g., by acquisition module 2220, with or without accelerated acquisition by an acquisition hardware module), a corresponding channel or channel tracking loop of the dual-stage tracking system 2207 is initialized with carrier phase information, after which the channel tracking loop maintains lock or synchronization with the received satellite navigation signal so long as the satellite transmitting that satellite navigation signal remains in view of the mobile object system 2200.
Operating system 2212 and each of the above identified modules and applications correspond to a set of instructions for performing a function described above. The set of instructions can be executed by the one or more processors 2202 of mobile object system 2200. The above identified modules, applications or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various embodiments. In some embodiments, memory 2210 stores a subset of the modules and data structures identified above. Furthermore, memory 2210 optionally stores additional modules and data structures not described above.
In addition, in some embodiments, some or all of the above-described functions may be implemented with hardware circuits (e.g., which may comprise graphics processors for efficiently performing discrete Fourier transforms (DFTs), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), a “system on a chip” that includes processors and memory, or the like). To that end, in some embodiments, CPUs 2202 include specialized hardware for performing these and other tasks. In some embodiments, these operations are performed by satellite receiver 1150.
The composite signal 105 is received by antenna 106, which typically has a built-in low noise amplifier (LNA). To simplify the receiver analog filtering design, a typical modern GNSS receiver uses a wideband front-end design to receive multiple GNSS signals (e.g., from multiple satellites and/or multiple frequency bands) using, e.g., two or three wideband filters, each band targeting a bandwidth of 140-300 MHz. For example, in a dual band system, a diplex 107 splits the composite signal into an upper path and lower path. The upper filtering module 111 contains a mixer which moves received signals in the high band (L1, G1, B1 etc.) radio frequency (RF) into an intermediate frequency (IF) band. The upper filtering module 111 also includes a bandpass filter (BPF) that rejects the image band of the mixer output. Typically, the bandpass filter or a subsequent filter of the upper filtering module 111 includes multiple stages of IF filtering and a variable gain amplifier (VGA) to adapt the signal amplitude (e.g., signal voltage, peak to peak) within the operating range of an analog-to-digital converter (ADC) 112 that receives the output of the upper filtering module. The ADC 112 samples the analog signal using a predefined sampling rate, which, per the Nyquist theorem, is greater than the bandwidth for complex sampling and twice the bandwidth for the real sampling design. The width of the ADC determines maximum tolerable interference at a given quantization loss. The resulting digital signal 113, sometimes called a digital sequence, produced by the ADC 112 reconstructs the received high band RF spectrum in the baseband range.
VGA feedback control can be handled in either the analog or digital domain. An envelope detector is typically used for VGA if analog control is used. In some embodiments, digital signal 113 is used as a feedback signal to control VGAs in upper filtering module 111.
A digital filtering and interference rejection module 114 extracts the targeted component (e.g., the signal in a particular frequency band, such as L1, L2 or L5) from the whole high band spectrum of signals included in the digital signal 113. However, interference (e.g., background noise 104 and interference signal 103) located within the GNSS band cannot be removed by the single stage filtering provided by upper filtering module 111, and therefore interference rejection processing is included in the digital filtering and interference rejection module 114 as well. Based on the complexity and the technique being adopted, the digital filtering and interference rejection module 114 can reject a single or multiple narrow band interference (NBI) and/or some types of wideband interference (WBI). A resulting signal 115 is expected to comprise only the satellite signal, including a pseudorandom noise (PN) sequence mixed with an underlying data signal, and the background noise 104.
Equivalently to its counterpart along the upper path, the lower path from diplex 107 is processed by analog filtering and variable amplifier module 131 and ADC 132. The resulting digital signal 133 represents the low band RF spectrum at baseband range. A digital filtering and interference rejection module 134 extracts the targeted component (e.g., the signal in a particular frequency band, such as L1, L2 or L5) from the whole low band spectrum of signals included in the digital signal 133. A resulting signal 135 is expected to comprise only the satellite signal, including a pseudorandom noise (PN) sequence mixed with an underlying data signal, and the background noise 104.
Each channel, typically implemented using separate hardware or circuitry from the other channels, includes a band selection multiplexor (MUX) 120 which selects the sample stream from a band that carries the targeted PN sequence, e.g., the channel selects the L1 band (e.g., a band that includes 1575.42 MHz for GPS L1) if the targeted PN sequence type is GPS L1 CA. The appropriate sample stream is further processed by the GNSS channel module 121, which typically contains one or multiple carrier phase demodulators, the PN code generator sampled at multiple delayed phases, the binary offset sub-carrier (BOC) modulator (used for modern GNSS signal such as GPS LlC, BeiDou B1C, Galileo E1 signals, etc.), and multiple accumulators, to create a bank of in-phase (I) and quadrature (Q) measurements at an interval of one millisecond (ms) or multiple milliseconds to drive the baseband tracking loop. Carrier and code correction signals derived from the baseband tracking loops control numerically controlled oscillators (NCOs) in the GNSS channel module 121 to maintain synchronization between the received signal in the channel and the local replica signal in that channel. Clock correction signals 123 from a plurality of the channels are used by clock tracking loop 122 to correct for receiver clock errors.
In order to mitigate the tracking degradation results from clock micro jumps (also called clock resets, or clock jumps), a set of IQ measurements 225-235 (see
The navigation module 125 takes the pseudo-range and carrier phase measurements 124 and other related information from the satellites to generate the positioning solution, which is used as a feedback to align the receiver crystal-grade clock with the satellite-based atomic grade clock. These pseudo-range and carrier phase measurements are, directly or indirectly, based on various corrections made to various errors, including corrections to the receiver clock error and the carrier tracking error. Thus, the navigation module 125 computes position and velocity estimates for the mobile object in accordance with the estimate of the clock error and the estimate of the respective carrier tracking error for each of the plurality of channels, as described below. In some embodiments, the computed position of the mobile object, combined with other information, is used by navigation module 125 to generate a list of in-view satellites (e.g., based on information programmed into navigation module 125 concerning the orbits of the satellites in all the satellite constellations tracked by the mobile object system 2200, which is used in turn to control the allocation of receiver resources. In some embodiments, the navigation module 125 performs a navigation function for the mobile object (e.g., routing of the mobile object) in accordance with the computed position and velocity estimates for the mobile object.
To that end, each channel (i.e., each instance of subsystem 210) includes a GNSS channel processing module 211, a first stage demodulator 218, a second stage demodulator 219, a correlator bank 223 for carrier tracking (in baseband), and the correlator 224 for clock tracking. In some embodiments, a subsystem 204 that includes an external sensor 204 (e.g., an inertial measurement unit) generates a measured line-of-sight (LOS) signal for each channel (e.g., measured LOS signal 228 corresponding to the channel processed by subsystem 210; measured LOS signal 238 corresponding to a different channel). In some embodiments, vector tracking module 205 generates an estimated LOS signal for each channel (e.g., estimated LOS signal 227 corresponding to the channel processed by subsystem 210; estimated LOS signal 237 corresponding to a different channel). The GNSS channel processing module 211 combines the line-of-sight (LOS) signal, from either subsystem 204 or vector tracking module 205 or both, and properly scales it to the LOS carrier signal 212 (e.g., the GNSS channel processing module 211 generates an estimate of a line of sight Doppler error for the respective channel using the first error correction stage, wherein the estimate of the clock error is based at least in part on the line of sight Doppler error for the respective channel). The GNSS channel processing module 211 also comprises a carrier tracking loop and a code tracking loop. The carrier tracking loop generates a local residual carrier signal 214, while the code tracking loop generates multiple pseudo-random noise (PN) sequences (see 312-314,
A frequency scaling unit 215 scales a clock carrier signal 206 measured at a reference standard to the frequency of the GNSS signal standard (e.g., for the selected GNSS signal) to produce a clock carrier signal 216. Clock carrier signal 216 is combined with the LOS carrier signal 212 to create a first local carrier signal 217, which is used by the first stage demodulator 218 to remove the LOS and clock carrier components of the received signal 115/135 to produce output signal 221. The second stage demodulator 219 combines the output signal 221 with the local residual carrier signal 214 to translate an output signal 222 of the second stage demodulator to “zero” carrier frequency.
The output signal 222 from the second stage carrier demodulator is used by correlator bank 223 to generate IQ accumulation signal 226 to drive the carrier loop and code loop in the GNSS channel processing module 211, and the vector tracking module 205.
The output signal 221 from the first stage carrier demodulator, combined with the IQ measurements 213, is used by the correlator 224 to create an IQ accumulation signal 225 for clock tracking loop 230.
In some embodiments, clock tracking loop 230 is driven by the IQ accumulation signal from each channel. In the example of
The vector tracking module 205 takes the IQ accumulation signals 226-236 from the second stage carrier demodulator of multiple active channels, combines them with a carrier projection function based on the positioning solution (e.g., the current position of the mobile object as determined by the mobile object's navigation module), and creates a LOS carrier estimation for each active channel (e.g., estimated LOS signal 227 for a first channel, estimated LOS signal 237 for a second channel), where the active channels are the ones for which satellite signals are currently being received and processed by the mobile object system. In some embodiments, both the IQ accumulation signal 226 of the subsystem 210 and the IQ accumulation signal 236 of the second channel subsystem are based on outputs from the second stage carrier demodulator 219 of the corresponding subsystems 210.
In some embodiments, one or more of the components shown in
A second stage carrier demodulator 219′ in
In
A code NCO 306 is driven by the signal 213, produced by a code tracking loop in the GNSS channel module 121, to generate the chip enable signal 307 which drives a PN coder 309 to move the state of a linear feedback shift register (LFSR) in the PN coder 309 from a kth epoch to the (k+1)th epoch, or more generally from one epoch to a next epoch. The signal 308 represents the latest chip of a respective PN code generated by the PN coder 309 and passes through a delay unit 310 to produce multiple local PN sequences, each with a different delay with respect to the PN phase embedded in the output signal 221 from the first stage de-rotator 324 and output signal 222 from the second stage de-rotator 326. In some embodiments, local PN replica 311 (a first one of the local PN sequences) is assumed to have zero delay with respect to the PN phase of output signals 221 and 222. Local PN replicas 312, 313, and 314 are PN sequences with different phase offsets with respect to the PN phase of the output signals 221 and 222. The correlation accumulator 315 demodulates the PN sequence of the output signal 222 using multiple local PN replicas 311 through 314 and uses the results to creates IQ accumulation signal 226, which it provides to the GNSS channel baseband tracking module 211.
The correlation accumulator unit 316 combines the output signals 221 from the first demodulator (first stage de-rotator 324) and the local PN replica 311 to produce the IQ accumulation signal 225. The IQ accumulation signal 225 and the IQ accumulation signal 226 create a bundled signal for the channel corresponding to subsystem 210 that is fed into the clock tracking loop 230. Multiple bundled signals from other channels are also used by the clock tracking loop 230 to track the clock frequency.
Thus, in the parallel configuration, the first error correction stage (which includes NCO 301, first complex de-rotator 324, and correlation accumulator unit 316) is decoupled from an output of the second error correction stage (which includes NCO 302, second complex de-rotator 325, and correlation accumulator unit 315). In addition, the second error correction stage is decoupled from an output of the first error correction stage. More specifically, the correlation accumulator 315 is independent of an output of correlation accumulator 316, and vice versa. The correlation accumulator 316 (e.g., a first accumulator) produces a first accumulation signal (e.g., IQ accumulation signal 225) that is fed to clock tracking loop 230. In some embodiments, as described below, the clock tracking loop 230 removes a sign ambiguity resulting from data embedded in the received GNSS signal. The correlation accumulator 315 (e.g., second accumulator) produces a second accumulation signal (e.g., IQ accumulation signal 226) that is fed back to a channel tracking loop (included in GNSS channel processing module 211) of the respective channel, which includes a code tracking loop to generate the local code rate signal 213 and a carrier tracking loop to generate the local carrier rate signal 214. In some embodiments, the carrier tracking loop of the channel tracking loop in GNSS channel processing module 211 is a phase-locked loop.
In some embodiments, one or more of the components shown in
A second frequency detector 431 uses the bundled IQ accumulation signals 235 and 236 (from the second channel subsystem) to produce the second carrier frequency offset 432 between the signal 115 and the combined local LOS and clock carrier frequency for a second channel (e.g., for a second satellite or a second satellite signal transmitted by the same satellite as the satellite signal processed by the first frequency detector 421). The resulting carrier frequency error 432 is at the GNSS signal standard, which is scaled to the signal 433 at the reference frequency standard by the second inverse frequency scaling unit 435.
A first amplitude calculation unit 426 uses the IQ accumulation signal 226 (from the subsystem 210) to generate a first amplitude signal 427. The first amplitude unit calculation unit 426 can adaptively offset the amplitude oscillation resulting from automatic gain control (AGC) fluctuation. Similarly, a second amplitude calculation unit 436 uses the IQ accumulation signal 236 (from the second channel) to generate a second amplitude signal 437.
A summing unit 411 combines the un-normalized frequency errors from multiple active channels to create the sum of the frequency error signal 401. Each frequency error signal, such as the signal 423, comprises the frequency error of the clock and the LOS Doppler shift frequency error. In accordance with the geometric layout of typical constellations of satellites used for navigation, the number of satellites moving toward the receiver, at any epoch, should be approximately balanced with the number of the satellites moving away from the receiver. Thus, the average and sum of the LOS frequency error results is typically small. Therefore, the clock tracking error, which is common to all channel subsystems, is reinforced by the summing unit 411. As a result, the frequency error signal 401, shown in Equation 1, represents the clock frequency error mixed with a small fluctuation.
where.
The frequency error 401 is scaled by a predefined precision unit 402, and the resulting frequency error signal 403 becomes:
ERR
403≈2EΣk=1NFk−1Ak(φkLOS+θkRes)+2EφCLK=Ak Equation 2
A summing unit 412 combines (e.g., sums) the amplitude of IQs from multiple active channels to create a normalization signal 405 which is modelled as:
NORM405=Σk=1NAk Equation 3
In order to obtain the normalized frequency error, a divider 404 is used to remove the amplitude modulation from the frequency error signal 403, resulting in a normalized clock frequency error 406 given by Equation 4:
where
2E{Σk=1NAkFk−1(φkLOS+θkRes)}/Σk=1NAk≈0 Equation 5
In some embodiments, the clock tracking loop 230 uses a first order automatic frequency control (AFC) which comprises a gain selection unit 407 and a frequency accumulator 413. The normalized clock frequency error 406 passes through the gain selection unit 407, where a higher gain implies use of a wider loop bandwidth. The frequency error is scaled by the selected gain at gain selection unit 407 to create a frequency correction signal 408 sampled at a next epoch (e.g., a second epoch). The frequency correction signal 408, as sampled at the next epoch, is combined with the clock frequency 410 sampled at the current epoch (e.g., a first epoch immediate prior to the second epoch) to produce the latest clock frequency 409 sampled at the next epoch.
The IQ accumulation signal 225 is delayed by one clock cycle and results in a signal 510. The signal 510 is inverted by a negate unit 511 to obtain its negative version 512. A second multiplexer (MUX) 513, using the second sign selection signal 557, selects the IQ with proper sign (510 or 512) to create complex signal 514. The complex signal 514 is split into two components: an I component 515 and a Q component 516.
I components 505, Q component 506, I component 515, and Q component 516 are combined by the frequency error calculation unit 507 to generate a first carrier frequency error signal 422, according to Equation 6.
ERR
422
=|I
505
−Q
516
|−|I
505
+Q
516
|−|I
515
−Q
506
|+|I
515
+Q
506| Equation 6
Equation 6 is a linear approximation to simplify the ASIC design and reduce noise.
The signal 520 is the complex signal at the second epoch, which is one clock cycle delayed relative to the IQ accumulation signal 226. Similarly, the signal 523 is the I component of the signal 520 and the signal 533 is the Q component. The signal 551 is the sign of the I component 522 of signal 520, and the signal 552 is the sign of the Q component 533 of signal 520. The first sign selection signal 556 for the first epoch and the second sign selection signal 557 for the second epoch are determined by a selection signal 558, resulting from the comparison unit 555.
Instead of using sgn(I) (where “sgn” indicates the sign or signum function) of the first epoch to demodulate the sign of the IQ accumulation signal 226 at the first epoch and sgn(I) of the IQ accumulation signal 226 at the second epoch to demodulate the sign of the IQ accumulation signal 226, IQ sign demodulation system 530 uses both I components 521 and 523, sampled at the first and the second epoch respectively, and both Q components 531 and 533, sampled at the first and the second epoch, respectively, to determine whether to use I or Q to demodulate the sign of the signals 225 and 510.
Before achieving the phase locked status, the allocation of power between the I and Q components of IQ accumulation signal 226 can be arbitrary. IQ sign demodulation system 530 measures the total energy IQ accumulation signal 226 based on the I components 521 and 523 at the first and the second epochs, respectively, and compares with the total energy based on the Q components 531 and 533, at the first and the second epochs, respectively.
A first absolute unit 524 extracts the amplitude of the I signal 521 at the first epoch producing the signal 526; a second absolute unit 525 extracts the amplitude of the I signal 523 at the second epoch producing the signal 527; a third absolute unit 534 extracts the amplitude of the Q signal 531 at the first epoch producing the signal 536; and a fourth absolute unit 535 extracts the amplitude of the Q signal 533 at the second epoch producing the signal 537. A first sum unit 528 combines the absolute value 526 of I component 521 at the first epoch with the absolute value 527 of I component 523 at the second epoch to produce signal 553 representing the total energy of the I component of IQ accumulation signal 226; and a second sum unit 538 combines the absolute value 536 of Q component 531 at the first epoch with the absolute value 537 of the Q component 533 at the second epoch to produce signal 554 representing the total energy of the Q component of IQ accumulation signal 226.
Sum553=|I521|+|I523| Equation 7
Sum554=|Q531|+|Q533| Equation 8
If the total energy of the I component, signal 553, is larger than the total energy of the Q component, signal 554, over the first and the second epoch, as determined by comparator 555, the sgn(I) signal 529 is selected as the sign 556 of the IQ accumulation signal 226 at the first epoch, and the sgn(I) signal 551 is selected as the sign (557) of the IQ accumulation signal 520 at the second epoch. Otherwise, if the signal 553 is less than the signal 554, as determined by comparator 555, the sgn(Q) signal 539 is selected as the sign 556 of the IQ accumulation signal 226 at the first epoch, and the sgn(Q) signal 552 is selected as the sign 557 of the IQ accumulation signal 520 (e.g., the sign of the sample) at the second epoch. The resulting signals 556 and 557 are used to control multiplexers 503 and 513, respectively, in frequency error detection system 421,
In some circumstances, the amplitude of the sample can increase suddenly because the wideband AGC does not reduce the gain enough to smoothly control changes in the amplitude signal 613 or 621 of an individual GNSS band. Under such circumstances, the amplitude signal 613 at the first epoch can be much larger than (e.g., more than 2, 4, 6 or 8 times) the filtered amplitude 621 generated for the prior epoch. For example, in some circumstances the amplitude of the Q component 632 at the first epoch is proportional to the amplitude signal 613. If the Q component is large enough relative to the filtered amplitude 621, the stability of the clock tracking loop will be negatively impacted. Therefore, a comparator 622 turns on a signal 623 once the amplitude signal 613 (e.g., the instantaneous signal) is greater than the filtered amplitude 621, and in that circumstance the amplitude signal 613 is assigned, by MUX 624, to signal 620, which drives the clock tracking loop.
The division algorithm prevents “divide by zero” malfunctions by including a check unit 748 that inspects the frequency error signal 403 and normalization signal 405. If either signal is 0, where the divisor signal 405 (also called the normalization signal) should not be 0, signal 752 is set to select zero signal 736 (via multiplexer 737) as the final quotient 760.
The core division algorithm is controlled by a scheduling module 740 which divides the division algorithm into four stages: initialization, denominator normalization, division calculation, and completion. Registers 710 (A), 720 (B), and 730 (Q) all store positive numbers, e.g., the (X−1)th bit of each stored number is “0”.
At the initialization stage, an initialization enable signal 741 selects the X−1 bit absolute value of the numerator 702, and loads it into register 710, selects the X−1 bit absolute value of denominator signal 722, and loads it into register 720, and resets the X−1 bit quotient register 730 to a predefined value, such as zero.
At the denominator normalization stage, signal 755 enables the left shift control module 751. The left shift control module 751 detects the X−2th bit of the denominator signal 722 and enables the left shift signal 716 as long as the X−2th bit is NOT equal to one. The number of left shifts of the denominator is counted by the left shift control module 751 and that number is output by module 751 as signal 715. The raw denominator is denoted in
Once the normalization stage completes, the DIV_EN signal 742 is set to enable the radix-2 based division process. While DIV_EN signal 742 is set (e.g., enabled), load signal 744 is set and signal 708 is selected by multiplexer (MUX) 745, because the initialization signal INIT is not set. At the first clock cycle of this phase of the division process, a comparator 757 compares the numerator signal 703 with the denominator signal 722. If the numerator signal 703 is smaller, signal 706 equals to 0, which is shifted into the quotient register 730, and at the same time the numerator signal 703 is selected by multiplexer (MUX) 747. Otherwise, the numerator signal 703 is equal to or larger than the denominator signal 722, the quotient bit 1 (e.g., quotient signal 706 output by comparator 757 is set to 1) is shifted into the quotient register 730, and signal 707 (output from multiplexer MUX 747) is equal to signal 705 (called the adjusted numerator), which is equal to the numerator signal 703 minus the denominator signal 722 (e.g., the absolute value of the denominator). Furthermore, the adjusted numerator 705 is loaded into register 710 via multiplexer 747 and multiplexer 745, for use as the numerator in the next iteration or cycle of the division process. This process repeats for X−1 iterations (e.g., X−1 clock cycles) until the X−1 bit quotient is stored at the quotient register 730. Due to the reloading of the adjusted numerator 705 into register 710 at the end of each iteration of the division process, the division process scales the numerator 702 by 2X-1, and thus the numerator used in the division process is equivalent to A*2X-1, where A is the absolute value 702 of the original numerator signal 403.
After the radix-2 division process completes, the DONE signal 756 is set by scheduling module 740 and the quotient is scaled by module 750. As discussed above, the normalization stage scales the denominator signal 722 to B*2L. Similarly discussed above, the division stage scales the numerator 702 by 2X-1. Therefore the equivalent division by this radix 2 algorithm is:
Once the division completion triggers the DONE signal 756, module 750 scales the data at quotient register 730 by 2−(X-1-L) to obtain the quotient
output by module 750 as absolute quotient signal 731.
The mobile object receives (1302) satellite navigation signals from a plurality of satellites. In some embodiments, the mobile object simultaneously receives satellite navigation signals from a plurality of constellations of satellites (e.g., GPS, GLONASS, BeiDou, etc.). In some embodiments, the mobile object receives a plurality of signals from the same satellite. For example, the mobile object receives two GPS C/A signals from a GPS satellite (corresponding to high and low frequency bands, such as L1 and L2), and two GPS P-code signals from the same GPS satellite. Each signal from each satellite is processed by a different channel.
Using one or more of the satellite navigation signals from the plurality of satellites, for each respective channel of a plurality of channels, the mobile object: generates (1304) an estimate of clock error of a clock of the mobile object (e.g., a receive clock) using a first error correction stage; and generates an estimate of a respective carrier tracking error for the respective channel using a second error correction stage that is distinct from the first error correction stage. For example, in
In some embodiments, for each respective channel of a plurality of channels, the mobile object generates an estimate of a line of sight Doppler error for the respective channel using the first error correction stage. For example, the estimate of the line of sight (LOS) Doppler error may be based on an external sensor such as an IMU (e.g., external sensor 204,
In some embodiments, the estimate of clock error of the clock of the mobile object and the estimate of the respective carrier tracking error for each of the plurality of channels is generated using an application-specific integrated circuit (ASIC) of the mobile object.
In some embodiments, the estimate of the clock error is generated at a first rate (e.g., every millisecond) and the estimate of the respective carrier tracking error for each of the plurality of channels is generated at a second rate that is slower than the first rate (e.g., every five milliseconds). If a single stage of demodulation were used to generate estimates of both errors, correcting the clock error more often than the carrier signal would result in the two signals drifting in opposite directions, because corrections to the clock error are effectively double counted in the carrier tracking error for each of the plurality of channels. The dual-stage demodulation described herein solves this problem by decoupling the two stages. For example, in some embodiments, the first error correction stage is decoupled from an output of the second error correction stage (e.g., as shown in the embodiments of
In some embodiments, the first error correction stage includes a first accumulator (e.g., correlation accumulator 316,
In some embodiments, the first accumulator produces a first accumulation signal (e.g., IQ accumulation signal 225,
In some embodiments, the second accumulator produces a second accumulation signal (e.g., IQ accumulation signal 226) that is used to drive the code and carrier tracking loops. For example, in
In some embodiments, the second accumulation signal is fed to the clock tracking loop to remove a sign ambiguity resulting from data embedded in the satellite navigation signal processed by the respective channel (e.g., as described with respect to
In some embodiments, the second accumulation signal is further fed back to a channel tracking loop of the respective channel. For example, in
In some embodiments, the first error correction stage comprises a first numerically-controlled oscillator (NCO) (e.g., first numerically controlled oscillator (NCO) 301,
In some embodiments the second accumulation signal is further fed back to a channel tracking loop of the respective channel and the channel tracking loop of the respective channel comprises a local code replica generator that includes a third NCO. For example, the channel tracking loop shown in
In some embodiments, the second error correction stage comprises a phase-locked loop. Further, the NCO 306, PN code 309, and correlation accumulator 315 form a PN code loop, which aligns the local PN sequence with the PN sequence in the received satellite navigation signal.
In accordance with the estimate of the clock error and the estimate of the respective carrier tracking error for each of the plurality of channels, the mobile object 2200 computes (1308) position and velocity estimates for the mobile object.
The mobile object performs (1310) a navigation function (e.g., routing of the mobile object; displaying on a map one or more suggested routes for moving the mobile object from a current location to a specified or target location; and/or providing information regarding locations nearby the mobile object or along a propose route of the mobile object) for the mobile object in accordance with the computed position and velocity estimates for the mobile object.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.
This application claims priority to U.S. Provisional Application No. 63/295,429, filed Dec. 30, 2021, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63295429 | Dec 2021 | US |