Method and apparatus for performing small batch discrete Fourier transforms to track satellite signals

By using small batch DFT technology in the GNSS receiver, analyzing and aggregating intermediate results of multiple epochs, the problem of high DFT computing burden in the prior art is solved, and the effect of fast tracking of GNSS satellite signals is achieved.

CN120225915APending Publication Date: 2025-06-27DEERE & CO
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380072178.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-08-03
Filing Date
2023-09-28
Publication Date
2025-06-27

AI Technical Summary

Technical Problem

The existing GNSS receivers perform a significant computational burden of discrete Fourier transform (DFT) when tracking satellite signals, making it impractical to fast track GNSS satellite signals.

Method used

By generating and aggregating intermediate results for multiple epochs of a single period of a pseudo-random number (PN) sequence, samples of channel signals are analyzed using small batch DFTs, aggregating intermediate results produces DFT correlation results, and processing the correlation results to generate code phase corrections.

Benefits of technology

Fast tracking of GNSS satellite signals is achieved, reducing the burden of DFT computing and improving the real-time performance of the receiver.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120225915A_ABST
    Figure CN120225915A_ABST
Patent Text Reader

Abstract

A method performed by a navigation module of a movable object includes receiving respective channel signals encoded with a sequence of pseudo-random numbers (PNs) from respective satellites. The method includes, for a respective channel signal, generating and aggregating intermediate results for a plurality of epochs of a single pseudo-random number (PN) sequence period of a PN sequence, including, for each respective epoch of the plurality of epochs, analyzing samples of the respective channel signal using a Discrete Fourier Transform (DFT) to produce intermediate results for the respective epoch; and aggregating the intermediate results for the plurality of epochs to produce a DFT association result. The method includes: processing the DFT association results to generate code phase corrections for respective channels; and calculating a position estimation and velocity estimation result for the movable object according to the code phase correction; and performing a navigation function for the movable object.
Need to check novelty before this filing date? Find Prior Art

Description

Related Applications

[0001] This application is a continuation of U.S. Application No. 18 / 229,815, filed on August 3, 2023, and claims priority to U.S. Provisional Patent Application No. 63 / 416,419, filed on October 14, 2022. Technical Field

[0002] The disclosed embodiments generally relate to navigation systems that use navigation signals received from multiple satellites to determine the position of a movable object, and more particularly to methods and devices for tracking signals from such satellites. Background Art

[0003] Global Navigation Satellite Systems (GNSS) such as GPS, GLONASS, Galileo, and Beidou are used in many applications. In a GNSS system, each satellite transmits a signal that identifies the satellite and allows a receiver to determine the time at which the signal was transmitted. To this end, GNSS satellites transmit a pseudo-random code (also known as a pseudo-random noise (PRN) or (PN) code). The pseudo-random code is, for example, a sequence of "1"s and "0"s that appears to be random but actually uniquely identifies the satellite. Using other data (such as ephemeris data and almanac data) that is encoded in the received signal "above" the pseudo-random code and using various modulation schemes (e.g., BPSK, BOC), a receiver can determine the time at which the signal was transmitted by the satellite. Using signals received from four or more satellites, a receiver can determine its position (e.g., on the Earth).

[0004] For this process to work, a GNSS receiver must "acquire" the signal of a satellite. To acquire the signal, a GNSS receiver must determine or resolve several ambiguities, including the frequency of the received signal (e.g., the frequency of the so-called "chips" of the received PRN code) and the offset of the PRN code (e.g., the phase of the PRN code). Thus, acquiring the signal of a satellite includes at least: determining the correct frequency (e.g., chip frequency) and code shift (sometimes referred to as code shift) of the satellite signal received at the receiver. The conventional way of doing this is guess-and-check: the receiver uses all possible "frequency hypotheses" and "code shift hypotheses" until the correct combination is found.

[0005] After acquiring the signal of a satellite, a GNSS receiver must then "track" the signal of the satellite. In conventional systems, it is impractical to perform a Discrete Fourier Transform (DFT) to track the signal of a satellite due to the large computational burden of performing the DFT over the entire length of the PRN code. Thus, there is a need for systems and methods that can track GNSS satellite signals more quickly. Brief Description of the Drawings

[0006] To better understand the various described embodiments, reference should be made to the following description of the embodiments in conjunction with the following drawings, in which like reference numerals throughout all the drawings refer to corresponding parts.

[0007] Figure 1 is a block diagram showing a navigation system according to some embodiments.

[0008] Figure 2 is a block diagram of a computer system according to some embodiments, which is, for example, a computer system that is part of a navigation system of a movable object.

[0009] Figure 3 is a block diagram of a GNSS receiver according to some embodiments.

[0010] Figure 4 is a block diagram of a tracking engine in a GNSS receiver according to some embodiments.

[0011] Figure 5 is a flowchart of a method for tracking signals from satellites in a Global Navigation Satellite System (GNSS) using a Discrete Fourier Transform (DFT) according to some embodiments.

[0012] Figure 6 is a block diagram of storing samples in a first buffer and a second buffer according to some embodiments.

[0013] Figures 7A to 7E shows a flowchart of a method for tracking signals from satellites in a Global Navigation Satellite System (GNSS) according to some embodiments. Summary of the Invention

[0014] Some embodiments provide a system, a computer-readable storage medium storing instructions, or a method for tracking signals from satellites in a Global Navigation Satellite System (GNSS). The method is executed at a movable object and includes: receiving satellite navigation signals from a plurality of satellites, the satellite navigation signals including respective channel signals for respective channels of the satellite navigation signals received from respective ones of the plurality of satellites, each respective channel signal being encoded with a pseudo-random number (PN) sequence having a chip sequence. The method includes, for the respective channel signals: generating and aggregating intermediate results for a plurality of epochs of a single pseudo-random number (PN) sequence period of the PN sequence, including: for each respective epoch of the plurality of epochs, using a discrete Fourier transform (DFT) to analyze samples of the respective channel signal that are limited to the respective epoch of the PN sequence period to produce an intermediate result for the respective epoch; and aggregating the intermediate results for the plurality of epochs to produce a DFT correlation result. The method includes, for the respective channel signals, processing the DFT correlation result to produce a code phase correction for the respective channel of the respective satellite. The method includes: calculating a position estimation result and a velocity estimation result for the movable object based on the code phase correction; and performing a navigation function for the movable object (e.g., routing the movable object; displaying on a map one or more suggested routes for moving the movable object from a current location to a designated or target location; and / or providing information about locations near or along a proposed route of the movable object) based on the calculated position estimation result and velocity estimation result for the movable object.

[0015] In some embodiments, analyzing samples of the respective channel signal to produce an intermediate result for the respective epoch includes: performing a first DFT on samples of the respective channel signal that are limited to the respective epoch of the PN sequence period to produce a first result; obtaining a second result corresponding to performing a second DFT on a portion of a local copy of the pseudo-random number (PN) code that corresponds to the respective channel and the epoch; and multiplying the first result by the second result to produce the intermediate result for the respective epoch.

[0016] In some embodiments, the respective channels of the satellite navigation signals received from respective satellites of the plurality of satellites are modulated with the PN sequence using binary phase shift keying. In some embodiments, the first DFT performed on samples of the respective channel signals that are limited to samples for the respective epochs of the PN sequence period is limited to samples corresponding to a respective chip of the PN sequence encoded in the respective channel signal. In some embodiments, the second DFT performed on a portion of the local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples for the respective epoch of the PN sequence period for only N chips in the local copy of the PN code, the N chips including a respective chip corresponding to the respective epoch and one or more chips offset from the one respective chip in the local copy of the PN code, where N is an integer not greater than 7 (e.g., N = 3).

[0017] In some embodiments, the respective channels of the satellite navigation signals received from respective satellites of the plurality of satellites are modulated with the PN sequence using code shift keying. In some embodiments, the first DFT performed on samples of the respective channel signals that are limited to samples for the respective epochs of the PN sequence period is limited to samples corresponding to a respective chip of the PN sequence encoded in the respective channel signal. In some embodiments, the second DFT performed on a portion of the local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples for the respective epoch of the PN sequence period for only N chips in the local copy of the PN code, the N chips including a respective chip corresponding to the respective epoch and one or more chips offset from the one respective chip in the local copy of the PN code, where N is an integer not greater than 261.

[0018] In some embodiments, processing the DFT correlation result includes: performing an inverse discrete Fourier transform (IDFT) on the DFT correlation result to generate a time-domain correlation; and based on the time-domain correlation, determining a code phase correction for a tracking loop corresponding to the respective channel of the satellite navigation signal received from the respective satellite of the plurality of satellites.

[0019] In some embodiments, performing the first DFT on samples of the respective channel signals that are limited to samples for the respective epochs of the PN sequence period to generate the first result includes: loading a first buffer with samples for the respective epoch of the PN sequence period, and padding the remainder of the first buffer with zeros.

[0020] In some embodiments, the size of the first buffer is less than or equal to the size of the first DFT.

[0021] In some embodiments, the plurality of epochs is a first number of epochs, the samples for which the first DFT is performed for the corresponding epochs of the PN sequence period are a first number of samples per epoch, and the first number of epochs corresponds to the total number of samples for the PN sequence period divided by the first number of samples per epoch.

[0022] In some embodiments, the first number of samples is determined based on the sampling rate at which the corresponding channel signal is sampled, and the first number of samples corresponds to the number of samples per chip of the PN sequence.

[0023] In some embodiments, the plurality of epochs for the PN sequence period includes epochs for or corresponding to each chip of the PN sequence encoded in the corresponding channel signal.

[0024] In some embodiments, the DFT used to analyze the samples of the corresponding channel signal is implemented in a DFT hardware circuit for performing DFT calculations.

[0025] In some embodiments, the method includes: acquiring the corresponding channel signal (satellite navigation signal) corresponding to the corresponding channel before processing the DFT correlation result to generate a code phase correction for the corresponding channel of the corresponding satellite, wherein acquiring the corresponding channel signal includes determining an initial code phase for the corresponding channel of the corresponding satellite.

[0026] In some embodiments, the method includes: acquiring a satellite navigation signal corresponding to the corresponding channel, wherein acquiring the satellite navigation signal corresponding to the corresponding channel includes: determining a frequency and an initial code phase for the corresponding channel of the corresponding satellite. In some embodiments, the method includes: after acquiring the satellite navigation signal corresponding to the corresponding channel, tracking the satellite navigation signal corresponding to the corresponding channel so as to keep a local copy of the satellite navigation signal corresponding to the corresponding channel within one tenth of a chip of the satellite navigation signal corresponding to the corresponding channel; wherein tracking the satellite navigation signal corresponding to the corresponding channel includes: generating and aggregating intermediate results for a plurality of epochs of a single PN sequence period, and performing the processing on the DFT correlation result to generate a code phase correction for the corresponding channel of the corresponding satellite.

[0027] In some embodiments, the method includes: generating, in real time, a respective code phase correction for each successive PN sequence period of the respective channel signal, thereby generating a respective code phase correction for successive PN sequence periods of the respective channel signal.

[0028] In some embodiments, there is provided a navigation module for a movable object, the navigation module including one or more processors, a satellite receiver, and a memory, the satellite receiver for receiving satellite navigation signals from a plurality of satellites, and the satellite receiver generating a code phase correction for a respective channel of a respective satellite from which it receives satellite navigation signals using any one of the methods described herein, the memory storing instructions which, when executed by the one or more processors, cause the navigation module for the movable object to calculate a position estimation result and a speed estimation result for the movable object based on the code phase correction, and to perform a navigation function for the movable object based on the calculated position estimation result and speed estimation result for the movable object.

[0029] In some embodiments, there is provided a navigation module for a movable object, the navigation module including one or more processors and means for performing any one of the methods described herein.

[0030] In some embodiments, there is provided a non-transitory computer-readable storage medium storing instructions which, when executed by a navigation module or a global navigation satellite system (GNSS) receiver including one or more processors, cause the navigation module or the GNSS receiver to perform any one of the methods described herein. DETAILED DESCRIPTION

[0031] Figure 1 is a block diagram showing a navigation system 100 according to some embodiments. The navigation system 100 enables a movable object 110 (e.g., a telephone, a dedicated GNSS receiver, a ship, a truck or other vehicle, an agricultural implement, a mining implement, a drilling system, etc.) to determine its current position 112 relative to a global coordinate system (e.g., the coordinate system of the Earth 114) at any point in time. The movable object 110 is equipped with a satellite receiver (navigation signal receiver 120), which typically includes or is connected to one or more satellite antennas 140 in order to receive satellite navigation signals from at least four satellites 115 orbiting the Earth. The satellite navigation signals received by the movable object 110 are typically global navigation satellite system (GNSS) signals. Tables 1 to 2 below provide examples of GNSS signals from an exemplary GNSS system. Table 1 Table 2

[0032] In Tables 1 to 2 above, the signal type refers to the various signals provided by the various GNSS systems (e.g., GPS-C / A is the GPS coarse acquisition signal); the PRN period is the length of time (in milliseconds) of a complete instance of the PRN code; T is the length of time (in milliseconds) that encodes a single data bit and is also the minimum length of time between signal value transitions due to secondary code (SC) modulation or data modulation or both; the PRN length is the number of chips in a complete instance of the PRN code; and the chipping rate is the rate at which the chips are sent (in millions of chips per second (MCPS)). The rate at which the chips are sent can be different from the rate at which the chips are received based on, for example, the Doppler effect and other effects. The minimum length in milliseconds shown in Table 2 is the minimum amount of sampled data required for each signal type to ensure that the receiver can detect the start of the PRN sequence of that signal type.

[0033] For the plurality of satellites, the movable object 110 optionally receives satellite orbit correction information and satellite clock correction information (sometimes collectively referred to as "correction information"). Using antennas 142 and signal receivers 152 different from the antennas 140 and navigation signal receivers 120 used for receiving satellite navigation signals (see Figure 2 ) the correction information is typically propagated by one or more satellites 118 different from the GNSS satellites 115 and received from the one or more satellites 118. However, in some embodiments, the same antennas and receivers are used to receive both satellite navigation signals and correction information.

[0034] The movable object 110 uses the received satellite navigation signals and, optionally, the received satellite orbit correction information and satellite clock correction information for the plurality of satellites to determine the position of the movable object 110. In some embodiments, the received satellite navigation signals are processed by a navigation signal receiver 120 including an analog signal processing circuit 122 and a digital signal processor 124, optionally considering the correction information, to determine code measurement results and phase measurement results of signals received from four or more satellites 115. The embedded computer system 130 determines the position of the movable object 110 based on these measurement results.

[0035] Figure 2 is a block diagram of a computer system 130 located in a movable object and used by the movable object to determine the position of the movable object according to some embodiments.

[0036] Computer system 130 typically includes: one or more processors (sometimes referred to as CPUs, hardware processors) 202 for executing programs or instructions; a memory 210; one or more communication interfaces 206; and one or more communication buses 205 for interconnecting these components. Computer system 130 optionally includes a user interface 209, which includes one or more input devices 213 (e.g., one or more of a keyboard, mouse, touch screen, keypad, etc.) and a display device 211 that are connected to other components of computer system 130 via the one or more communication buses 205. The navigation signal receiver 120 and the (optional) supplementary receiver(s) 152 (if provided) are also connected to other components of computer system 130 via the one or more communication buses 205. The one or more communication buses 205 may include circuitry (sometimes referred to as a chipset) that interconnects and controls communication between system components.

[0037] The communication interface 206 (e.g., a receiver or transceiver) is used by computer system 130 and more generally by the movable object 110 to communicate information to an external system and to receive communications from the external system.

[0038] The memory 210 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 disk storage devices, optical storage devices, flash memory devices, or other non-volatile solid-state storage devices. The memory 210 optionally includes one or more storage devices that are remotely located relative to the (optional) CPU(s) 202, or alternatively, the non-volatile memory device(s) within the memory 210 include a computer-readable storage medium. In some embodiments, the memory 210 or the computer-readable storage medium of the memory 210 stores the following programs, modules, and data structures or subsets thereof: • An operating system 212, which includes programs for handling various basic system services and for performing hardware-dependent tasks; • A communication module 214, which operates in conjunction with the communication interface 206 (e.g., a receiver and / or transceiver) to handle communications between the movable object 110 and an external system 160 ( Figure 1 ) The connection between computer system 130 and external system 160 may include a communication network 162, such as the Internet or a public or private wireless network; • Optionally, a user interface module 216 for receiving information from one or more input devices 213 of the user interface 209 and communicating information to a user of the movable object 110 via one or more display devices or output devices 211; • A navigation module 218 for determining the position of the movable object and performing one or more navigation functions (e.g., routing of the movable object; displaying on a map one or more suggested routes for moving the movable object from the current position to a specified or target position; and / or providing information about positions near the movable object or along the proposed route of the movable object); • An acquisition engine 220 for acquiring satellite signals from GNSS satellites, including determining the tracking frequency and code shift (sometimes referred to as code offset) of each of a number of corresponding GNSS satellites, or for managing the operation of the acquisition engine implemented at least partially in the digital signal processor 124; • A tracking module 222, sometimes referred to as a satellite signal tracking module, which uses the acquisition information (e.g., tracking frequency and code shift) taken over from the acquisition module 220 to track GNSS satellite signals, or for managing the operation of the tracking module implemented at least partially in the digital signal processor 124. For example, in some embodiments, the tracking module 222 samples the GNSS satellite signals using the tracking frequency and code shift initially determined by the acquisition module 220, and then adjusts itself when the tracking module determines the code phase correction for the corresponding channel of the received satellite navigation signal.

[0039] The operating system 212 and each of the above-identified modules and applications correspond to a set of instructions for performing the above functions. The set of instructions can be executed by the one or more processors 202 of the computer system 130. The above-identified modules, applications, or programs (i.e., sets of instructions) need not be implemented as separate software programs, processes, or modules, and thus various subsets of these modules can be combined or otherwise rearranged in various embodiments. In some embodiments, the memory 210 stores a subset of the above-identified modules and data structures. Additionally, the memory 210 optionally stores additional modules and data structures not described above.

[0040] Figure 2 This is more intended as a functional description of the various features that can exist in the computer system 130 of the movable object 110 rather than as a structural schematic of the embodiments described herein. In practice, and as recognized by those of ordinary skill in the art, items shown separately can be combined, and some items can be separated. For example, in Figure 2 some items shown separately can be combined into a single module or component, and a single item can be implemented using two or more modules or components. The actual number of modules and components and how the features are distributed among them will vary from one implementation to another.

[0041] In addition, in some embodiments, some or all of the above functions may be implemented by hardware circuits (e.g., the hardware circuit may include a graphics processing unit, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a "system on chip" including a processor and a memory, etc. that are used to effectively perform a discrete Fourier transform (DFT)). For this purpose, in some embodiments, the CPU 202 includes dedicated hardware for performing these tasks and other tasks. In some embodiments, these operations are performed by the navigation signal receiver 120 instead of the computer system 130.

[0042] Figure 3 is a block diagram of a GNSS receiver 300 according to some embodiments. The antenna 140 receives GNSS signals from satellites (e.g., Figure 1 satellite 115). In some embodiments, the antenna 140 receives GNSS signals from each of a plurality of satellites (e.g., four or more satellites in a corresponding satellite constellation). In some embodiments, the antenna 140 receives GNSS signals from a plurality of satellites from a plurality of different constellations (e.g., receives GPS signals, GLONASS signals, and / or Beidou signals). Thus, in some embodiments, the GNSS receiver 300 is a multi-constellation multi-frequency (MCMF) receiver. The signals received from the antenna 140 are amplified by the low noise amplifier 304 and transmitted to the high frequency channel 301a and the low frequency channel 301b.

[0043] The channels 301a and 301b respectively include analog processing circuits 306a and 306b. In some embodiments, the analog processing circuit 306a includes a high frequency band radio frequency (RF) to intermediate frequency (IF) analog chain, which may include one or more filters and variable gain amplifiers. In some embodiments, the analog processing circuit 306b includes a low frequency band radio frequency (RF) to intermediate frequency (IF) analog chain, which may include one or more filters and variable gain amplifiers.

[0044] The channels 301a and 301b respectively include analog-to-digital converters (ADCs) 308a and 308b. In some embodiments, the ADCs 308a and 308b sample the GNSS signals at a first sampling rate (e.g., 40.92 MHz). In some embodiments, the first sampling rate is a multiple (e.g., an integer multiple) of the chip rate of the GNSS signal.

[0045] The channels 301a and 301b respectively include digital processing circuits 310a and 310b. In some embodiments, the digital processing circuits 310a and 310b include digital band or sub-band selective filtering.

[0046] The filtered signals respectively generated by the digital processing circuits 310a and 310b of channels 301a and 301b are passed to a band - select multiplexer (MUX) 312, and the correspondingly selected channel signals output by this band - select multiplexer are passed to both a mini - batch DFT tracking engine 314 (e.g., a GNSS satellite tracking engine using mini - batch DFT, as described in more detail below) and a GNSS satellite acquisition engine 316. For now, suffice it to say that the GNSS satellite acquisition engine 316 determines parameters such as code shift and frequency (e.g., chip frequency) required for the mini - batch DFT tracking engine 314 to track satellites, and the mini - batch DFT tracking engine 314 performs mini - batch DFT and other processing, as described below, to determine the code offset for aligning a local copy of the PN sequence with the PN sequence embedded in the corresponding channel signal. In some embodiments, and typically, multiple instances of the mini - batch DFT tracking engine 314 are included in the GNSS receiver 300. For example, to track N different channel signals, the GNSS receiver 300 includes N instances of the mini - batch DFT tracking engine 314. Additionally, the pseudorange information determined by the baseband tracking module 318 (with the assistance of the mini - batch DFT tracking engine 314) (e.g., the measurement of the distance between the receiver 300 and each satellite in a set of four or more satellites within the field of view of the receiver 300) is information for determining the position of the receiver 300.

[0047] To support the various modulation types used by GNSS systems, the tracking module 314 typically includes one or more carrier - phase demodulators, a PN code generator with multiple delayed - phase samples, a binary offset carrier (BOC) modulator (for modern GNSS signals such as GPS L1C, BeiDou B1C, Galileo E1 signals, etc.), and multiple accumulators or mini - batch DFTs to create a set of in - phase (I) and quadrature (Q) measurements at millisecond (ms) or multiple - millisecond intervals to drive the baseband tracking module 318.

[0048] The navigation module 320 obtains pseudorange and carrier - phase measurements and other relevant information from satellites to generate a positioning solution (e.g., the calculated position and velocity estimates for a movable object), which is used as feedback to align the receiver's crystal - level clock with the satellite - based atomic - level clock; the solution is also combined with other information to generate a list of satellites within the field of view, thereby controlling the appropriate allocation of receiver resources.

[0049] Figure 4It is a block diagram of a small - batch DFT tracking engine 314 in a GNSS receiver (e.g., navigation signal receiver 120) according to some embodiments. In some embodiments, the small - batch DFT tracking engine 314 includes the sub - components described below. For example, a small - batch DFT approach is provided that decouples the DFT length from the PN sequence length. As used herein, DFT is the Fast Fourier Transform (FFT). It should be understood that in the examples described herein, the use of DFT and FFT is interchangeable. The DFT length depends on the target range of the PN phase offset between the received PN sequence and the local copy sequence, and the reduction ratio can be calculated by the following equation: (Equation 1) Where β represents the number of samples per chip; L PN represents the length of the sequence in chips; L CORR represents the range of correlation in chips; represents the function to implement the smallest integer for which 2 to the power is greater than or equal to x; 2• means that the small - batch DFT requires the lengths of the first buffer 404 and the second buffer 408 to be twice as long. R represents the reduction multiple between the conventional DFT and the small - batch DFT.

[0050] In some embodiments, the small - batch DFT tracking module 314 is initialized using the initially estimated code phase and carrier phase signals (e.g., acquired during acquisition). The baseband tracking module 318 obtains a set of correlation signals from the small - batch DFT module 314, derives the code error and carrier error (sometimes referred to as code shift and carrier offset), and updates the receiver - estimated code and carrier frequencies to align with the code and carrier frequencies of the received signal. For example, the feedback frequency signal drives the code NCO (Numerically Controlled Oscillator) 422 and / or multiple carrier NCOs to demodulate the received samples for the next PN sequence period. Thus, the small - batch DFT calculates the code error (code offset) in real - time and enables a moving object to correct the code phase error before receiving samples for the next PN sequence period.

[0051] The carrier demodulation module 402 demodulates the signals from the band - selection MUX 312 based on the local carrier frequency estimate ( Figure 3Convert the received signal to zero frequency. In some embodiments, the carrier frequency signal drives a carrier NCO to create a carrier phase signal that is an index to sine and cosine look-up tables. The resulting complex sequence is used by the complex multiplier in the carrier demodulation module 402 to remove the residual carrier embedded in the signal. The ideal zero frequency signal is fed into the first buffer 404 to start mini-batch processing.

[0052] To generate a set of correlation signals for the baseband tracking module 318, in some embodiments, the scheduler 403 divides the correlation process into five stages: sample buffering, buffer latching, DFT execution and accumulation, IDFT execution, and peak identification and correlation latching. The scheduler 403 initiates each of the five stages of the correlation process.

[0053] Sub-components of the mini-batch DFT tracking engine 314 are used to reduce the DFT size, thus enabling the feasibility of implementing a frequency domain tracking loop using the DFT. The first buffer 404 stores the zero frequency sample signal received from the carrier demodulation module 402. The second buffer 408, which acts as a right shift register, stores the local copy signal 424. However, in some embodiments, the local copy signal 424, the second buffer 408, the second DFT buffer 409, the second DFT 410, and the conjugate module 411 are replaced by a table look-up module that obtains the pre-computed conjugate of the DFT of the corresponding portion of the local copy signal 424 corresponding to the channel signal being processed by the mini-batch DFT tracking engine 314.

[0054] In some embodiments, the buffer size can be selected such that: (Equation 2) where β represents the number of samples per chip; L CORR represents the relevant range of interest within the chip; represents the function to implement the smallest integer for which a power of 2 is greater than or equal to x; and N BUF represents the size of the first buffer 404 and the second buffer 408 in samples.

[0055] The number of samples per mini-batch DFT (L LOAD ) can be selected by the following equation: (Equation 3) where N LOAD represents the number of new samples buffered for each DFT; β represents the number of samples per chip; L PN represents the length of the PN sequence in a chip; N BUF represents the sample-based size of the first buffer 404 and the second buffer 408, which is also the size of each DFT. A|B means the first integer A divided by the second integer B (e.g., where A is a factor of B).

[0056] The following example uses the parameters of L1-CA applied to the above equations 1 to 3 to show the DFT size reduction using the mini-batch approach described herein. For example, for each L1-CA chip, the sampling rate is 40.92 MHz (β = 40 samples) (e.g., for the corresponding epoch, there are 40 samples per chip). The length of the L1-CA sequence is 1023 chips, where β•L PN = 40920. According to Equation 1, ROUND(β•L PN ) = 65536. During the tracking loop pull-in or lock mode, the PN code phase offset between the received signal and the local copy signal is within + / - 1 chip (e.g., + / - 40 samples); thus, the range of the code offset is L CORR = 3 chips (N CORR = βL CORR = 120). According to Equation 1, ROUND(N CORR ) = 128. As a result, the DFT size is reduced by 512 (2 16 / 2 7 ) times.

[0057] According to Equation 2, the sizes of the first buffer 404 and the second buffer 408 are 2 ROUND(βL CORR ) = 256, which is the size of the DFT to be calculated during each epoch of the process of analyzing the channel signal samples. Compared with the DFT size of 2 17 of the conventional size DFT, the 256-point DFT is significantly more efficient and manageable to implement on an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).

[0058] According to Equation 3, for L1-CA with 40 samples per chip, N LOAD is not greater than 128, and the factor N PN = βL PN = 40920, and thus the maximum value of N LOAD is 120 (e.g., once 120 samples are counted, a new mini-batch DFT is performed).

[0059] To easily quantify the size reduction of using small - batch DFT relative to conventional DFT, this embodiment assumes that: (1) the sampling frequency is 4F0, where F0 represents the GNSS standard base frequency of 10.23 MHz; (2) the range of code - phase offset is + / - 1 chip, which is sufficient for code tracking of signals using BPSK or BOC modulation. Based on this assumption, Table 3 shows examples of DFT size reduction using small - batch DFT compared to the conventional DFT size of the entire code length (e.g., for signals belonging to four major constellations). The last column of Table 3 shows that the size reduction ranges from 128 - fold (for short - length PN sequences) to approximately 1.05 million - fold (for long PN sequences). Table 3

[0060] In some embodiments, the first small - batch DFT association starts at the first epoch (e.g., epoch 600, Figure 6 ), where the pre - loaded signal from the scheduler initializes the first buffer 404 with zeros, initializes the DFT correlator 414 with zeros, and initializes the second buffer 408 with N BUF - N LOAD samples, as described in the reference Figure 6 . To meet typical code - tracking requirements, the first sample pre - loaded in the second buffer 408 is sampled from the last chip of the PN sequence, and this last sample belongs to the chip defined by the following equation: (Equation 4) where, K LAST represents the chip index to which the last sample belongs; L PN represents the length of the PN sequence in the chip; R NCO represents the code signal 123 in chips per sample; N BUF represents the size of the first buffer 404 and the second buffer 408 in samples; N LOAD represents the number of samples buffered to perform the DFT; and |x| represents the largest integer not exceeding x.

[0061] The sample - enable signal (from the scheduler) shifts the samples received from the carrier demodulation module 402 into the first buffer 404, and at the same time, the local - copy signal 424 (from the scheduler) shifts a portion of the local copy of the PN code into the second buffer 408.

[0062] Once the number is N LOAD samples are shifted into the buffer, the scheduler provides a transfer enable signal that causes: (1) the samples in the first buffer 404 to be shifted into the first DFT 405 and the first buffer 404 to be reset to zero; and (2) the samples in the second buffer 408 to be shifted into the second DFT buffer 409 (e.g., as Figure 6 shown).

[0063] Once the data has been transferred to the first DFT buffer 405 and the second DFT buffer 409 (e.g., at the first epoch), the scheduler 403 provides a DFT enable signal to start the first N BUF -point DFT 406 for the data stored in the first DFT buffer 405 and create a first DFT result, and start the second N BUF -point DFT 410 for the data stored in the second DFT buffer 409 and create a second DFT result, which is conjugated by the conjugate operation 411 to generate a signal fed to the multiplication module 412.

[0064] The element-wise multiply module 412 multiplies the k-th data from the first DFT 406 by the conjugate of the k-th data from the second DFT 410 (to achieve the k-th data of 610, where k ranges from 0 to (NBUF-1). The accumulator 413 adds the accumulated signals output from the DFT associator 414 (e.g., the previously stored DFT association) to generate a new accumulated signal, which is fed back to the DFT associator 414 for storage, as referenced Figure 6 described.

[0065] During DFT execution, the scheduler 403 provides an enable signal to continuously shift another NLOAD received signal samples from the carrier demodulation module 402 into the first buffer 404, and continuously shift the new local copy signal 424 into the second buffer 408 for the next DFT.

[0066] In some embodiments, at the second epoch, a second N LOAD samples are buffered in the first buffer 404 and the second buffer 408. It repeats the above steps for a second batch of DFTs (e.g., for the second epoch samples).

[0067] In some embodiments, at the last epoch (e.g., corresponding to the last chip in the PN sequence), when the Mth DFT is completed, an inverse discrete Fourier transform (IDFT) (e.g., or an inverse fast Fourier transform (IFFT)) is triggered, where: (Equation 5) where, d is the number of milliseconds for iterative baseband tracking loop updates; β represents the number of samples per chip; L MS represents the number of chips per millisecond; N LOAD represents the sample interval between the first DFT execution and the second DFT execution.

[0068] In some embodiments, the scheduler 403 provides an IDFT enable signal to activate the IDFT module 416 to convert the frequency-domain correlation output by the DFT correlator 414 into a time-domain correlation. In some embodiments, the scheduler also causes a register (e.g., the DFT correlator 414) to be reset so that it is ready for the next (e.g., second) baseband loop iteration. When the IDFT calculation is completed, the correlation latch enable signal from the scheduler 403 activates the maximum value selection module 418, which selects the maximum value and the corresponding index from the correlation set located at β multiple samples, where the correlation is located at the rising edge of each chip, which can be expressed by the following equation: (Equation 6) where, C iβ represents the correlation located at the rising edge of the ith chip; X P represents the maximum value in the set of; and IDX P represents the index signal corresponding to X P corresponding.

[0069] In most cases, the code and carrier tracking process algorithms are interested in the correlations located within a small range with respect to the index signal (IDX P ); therefore, the index selection module obtains the peak index signal from the maximum value selection module 418, and the corresponding correlation is latched into the memory 420.

[0070] The baseband tracking module 318 uses the selected correlation signal to generate an updated carrier frequency and an updated code frequency.

[0071] In some embodiments, the next (e.g., second) baseband loop iteration begins at the next (second) plurality of epochs until the Mth DFT is completed at the last epoch of the next (second) baseband loop iteration.

[0072] As an example for illustrating the equivalence between a small-batch DFT (e.g., performed one epoch at a time for the entire PN sequence) and a conventional DFT (e.g., performed once on the entire PN sequence), if the PN sequence includes 7 chips (e.g., chip 1, chip 2, chip 3, chip 4, chip 5, chip 6, and chip 7), the conventional DFT needs to buffer the entire sequence and correlate with a local copy that is 7 chips long, which can be cyclically offset by 7 possible chips into the PN sequence. For example, the local copy sequence can be delayed by 1 chip relative to the incoming sequence, can be delayed by 2 chips relative to the sequence, can be delayed by 6 chips (or advanced by 1 chip) relative to the incoming sequence, or can be offset (e.g., delayed or advanced) by another number of chips. However, typical code and carrier tracking only corrects for offsets no greater than 1 chip delay or 1 chip advance (e.g., in the case of a 7-chip PN sequence, equivalent to 6-chip delay), sometimes also referred to as the late chip or early chip relative to the incoming sequence in the received channel signal. Therefore, other offsets (e.g., between 2 to 5 chip delay offsets for a 7-chip PN sequence) are useless for code and carrier tracking, and performing a conventional DFT on the entire PN sequence significantly increases the DFT block size, which complicates the computational logic and slows down the processing speed.

[0073] Therefore, the small-batch DFT divides a large-batch conventional DFT (e.g., a 7-chip long PN sequence) into the accumulation of seven small-batch DFTs (e.g., 7 epochs), each small-batch DFT being 3 (N BUF / β) chips long. In each small-batch DFT (e.g., for each epoch), the incoming (received) sequence signal in the first buffer 404 (e.g., corresponding to one chip) is correlated with a local copy of the PN sequence that includes 3 chips of samples (sometimes referred to as the early chip, the punctual chip, and the late chip), where the punctual chip (in the local copy of the PN sequence) corresponds to the current estimated result of the incoming (received) code phase, the early chip corresponds to the chip immediately preceding the punctual chip in the PN sequence, and the late chip corresponds to the chip immediately following the punctual chip in the PN sequence.

[0074] Figure 5 A method 500 for determining a code phase correction for tracking a satellite signal is described. In some embodiments, the method 500 is performed at a movable object. In some embodiments, the movable object acquires GNSS satellite signals (502), which include respective channel signals for each channel of the satellite signals.

[0075] In some embodiments, for a respective satellite channel signal, the movable object obtains samples of the respective satellite channel signal. In some embodiments, the respective satellite channel signal is encoded using a pseudo-random number (PN) sequence having a chip sequence. In some embodiments, the method 500 tracks the respective satellite channel signal by performing a mini-batch DFT for a plurality of epochs of the satellite channel signal. For example, an epoch corresponds to a respective chip in the PN sequence (e.g., an epoch has the same duration as the respective chip in the PN sequence and at least partially overlaps). In some embodiments, performing a mini-batch DFT for the plurality of epochs includes: for a respective epoch, calculating the DFT (or FFT) of the samples for the respective epoch and multiplying the result by the calculated DFT (or FFT) of the samples of a local copy of the PN sequence. In some embodiments, only the samples of the respective epoch (e.g., corresponding to one chip) are used to calculate the DFT for the respective epoch, while samples offset from the samples of the received channel signal are used to calculate (or pre-calculate) the DFT of the local copy of the PN sequence, e.g., purchasing at most one chip before and after the respective chip corresponding to the respective epoch. Thus, the movable object uses the calculated DFT to determine a local offset of the code phase of the channel signal.

[0076] For example, for a satellite channel signal using BPSK or BOC modulation, a local copy of the PN code 508 loads samples spanning 3 chips (e.g., or another number of chips determined based on the uncertainty of the code phase shift) into a second buffer 408. In this way, three chips (or another number of chips) are loaded into the second buffer 408 (e.g., for the local copy), while only one chip is loaded into the first buffer (e.g., to minimize the FFT size).

[0077] In some embodiments, for example, if CSK is used to modulate the satellite channel signal, the uncertainty is greater than 3 chips, and samples are loaded into the second buffer to span 257 chips. For example, CSK (Code Shifting Keying) modulation has been used through QZSS L6 to support fast data transmission. However, the initial chip phase for each code period varies among one of 256 possibilities such that the local code copy should extend far enough to ensure that the local chip phase is within a minimum range from 1 chip ahead to 256 chips delayed relative to the received signal. This requirement significantly increases the number of correlators, and this enables a small batch DFT with complexity O(N logN) to effectively implement CSK demodulation.

[0078] In some embodiments, a second DFT is obtained for samples spanning 3 chips (e.g., or other number of chips determined based on the uncertainty of the corresponding modulation). In some embodiments, the second DFT is pre-computed for a local copy of the PN sequence and stored in a table such that the second DFT (or a combination of second DFTs) is obtained by performing a lookup in the table.

[0079] Thus, in an example of BPSK using 3 chips as the uncertainty range in the code phase of the received channel signal, the mobile object calculates the DFT correlation between the samples for the corresponding chip (e.g., corresponding to the current epoch) and the samples for the early chip, on-time chip, and late chip (e.g., 3 chips) of the local copy of the PN sequence by multiplying the first DFT by the conjugate of the second DFT (512). For example, the DFT of the local copy includes samples spanning at least +1 chip and -1 chip from the chips corresponding to the respective epoch. In an example where there are 40 samples per chip, the first DFT is performed on 40 samples of the corresponding chip, and the second DFT is performed on 120 samples corresponding to 3 chips (early chip, on-time chip, and late chip).

[0080] The mobile object aggregates the DFT correlation for the corresponding epoch with any previous epoch (e.g., of the current PN sequence period) (514), and repeats steps 504 to 512 until all epochs (516) of the current PN sequence period have been processed (e.g., at the Mth DFT).

[0081] After completing the DFT correlation for the epochs in the PN sequence period, the aggregate result for the PN sequence period is transformed into the time domain (518) using an inverse discrete Fourier transform (IDFT). The mobile object determines the code phase correction 520 in real time (e.g., before the next PN sequence period) based on the peak index signal (of the resulting IDFT), as described above with reference to the maximum value selection module 418 ( Figure 4 ).

[0082] Figure 6 Illustrates the storage of samples in the first buffer 404 and the second buffer 408. In some embodiments, the samples in the first buffer 404 and the second buffer 408 are stored by initially setting the first buffer 404 to all zeros (e.g., at the first epoch 600 of the PN sequence period), where the first buffer 404 includes a first section 404a of the buffer (N LOAD samples) and a second section 404b of the buffer (N BUF - N LOAD samples); the second buffer 408 is also pre-loaded, where the first section 408a of the buffer (N LOAD samples) is set to zero, and the second section 408b of the buffer (N BUF - N LOAD samples) is set with samples from the PN sequence (e.g., a portion of the local copy of the PN sequence corresponding to the samples for epoch 600). The first sample in the second section 408b of the buffer belongs to the (L PN - 1)th chip, and the last sample in the second section 408b of the buffer belongs to the chip indexed by K LAST , e.g., as defined by Equation 4. In some embodiments, the DFT correlator 414 is reset to all zeros so that the DFT correlator 414 is ready to accumulate the DFT results for the current PN sequence period.

[0083] In some embodiments, the buffer 408 is initially loaded with samples of 3 chips (or another number of chips depending on the code phase uncertainty of the channel signal being tracked) of the local copy of the PN sequence for the first epoch; and for each subsequent epoch, samples of an additional chip are added to the buffer (e.g., the other 2 chips are shifted, resulting in the buffer 408 having a different set of 3 chips for each epoch, where the samples of the buffer 408 for each epoch overlap the samples of the previous epoch by 2 chips).

[0084] In some embodiments, at the corresponding epochs, such as Figure 6 epoch 602 in LOADThe received samples are stored in the first section 404c of the first buffer, and the same number of samples from the local copy are shifted to the second section 408d of the second buffer. Then, the data in the first buffer 404 is transferred to the first DFT buffer 405, and the data in the second buffer 408 is transferred to the second DFT buffer 409.

[0085] As Figure 6 shown, the first DFT 406 performs a DFT calculation on the data in the first DFT buffer 405, and the second DFT 410 performs a DFT calculation on the data in the second DFT buffer 409 (e.g., and transfers the conjugate of the second DFT result generated by the conjugate operation 411 to the multiplication module 412). The element-by-element multiplication module 412 generates the k-th element of the vector signal 610 by taking the k-th element of the vector signal 606 output from the first DFT 406 and the k-th element of the vector signal 608 output from the conjugate operation 411, which is input to the aggregator 413. The previous vector signal 612 stored in the DFT associator 414 (also referred to herein as a register) is added to the vector signal 610 (e.g., aggregated via the aggregator 413) to create the vector signal 614 stored in the DFT associator 414.

[0086] Before performing the IDFT on the aggregation association, this process is repeated for each epoch in the PN sequence period (e.g., until the M-th DFT, as described above). Figure 5 The process of using the mini-batch DFT tracking engine shown in operates in a pipelined manner so that for each PN sequence period, the received channel signal is processed in real time at the same rate as the received channel signal and the final DFT association result 614 is generated. For example, in an embodiment where one chip of new data is shifted into the first buffer 404 at each epoch, the number of epochs of the DFT association result 614 for each corresponding PN sequence period is equal to the number of chips in the PN sequence. Thus, if there are N (e.g., 1023) chips in the PN sequence, the DFT association result for each PN sequence period requires N iterations of the mini-batch DFT calculation and accumulation operations. In addition, the IDFT and peak selection operations for the current (e.g., just completed) PN sequence period discussed with respect to Figure 4 and Figures 7A to 7E are performed at the start of the mini-batch DFT tracking engine while the process of sampling the received channel signal samples the next PN sequence period.

[0087] Figures 7A to 7EFIG. 700 is a flow chart of a method for tracking signals from satellites in a Global Navigation Satellite System (GNSS), and more particularly, a method for tracking signals using a small batch DFT. Method 700 is generally performed by a mobile object having circuitry such as a signal receiver (e.g., receiver 120, Figure 1 ), and one or more processors (e.g., one or more processors of computer system 130, Figure 1 ), but optionally, at least in part, by a system external to or remote from the mobile object. In some embodiments, method 700 is performed by a GNSS signal tracking engine (e.g., small batch DFT tracking engine 314, Figure 3 ) of a signal receiver on a mobile object. For ease of explanation, method 700 will be explained as being performed by a mobile object, but it should be understood that at least some portions of method 700 may be performed by an external system.

[0088] The mobile object receives (702) satellite navigation signals from a plurality of satellites, the satellite navigation signals including respective channel signals for each respective channel of the satellite navigation signals received from the respective satellites of the plurality of satellites. Each respective channel signal is encoded with a pseudo-random number (PN) sequence having a chip sequence. For example, each respective channel signal includes a carrier signal modulated with a pseudo-random number (PN) sequence having a chip sequence (e.g., having at least 511 chips (e.g., see “Code length”, Table 3)).

[0089] For a respective channel signal (704): the mobile object performs operations 708, 710, 728, and 732. For example, for a respective channel signal, the mobile object generates (708) and aggregates intermediate results of a plurality of epochs of a single pseudo-random number (PN) sequence period of the PN sequence, including: (i) for each respective epoch of the plurality of epochs, analyzing (710) samples of the respective channel signal using a discrete Fourier transform (DFT) (e.g., an FFT implemented in a hardware circuit) to produce an intermediate result for the respective epoch, the samples of the respective channel signal being limited to samples of the respective epoch of the PN sequence period; and (ii) aggregating (728) the intermediate results of the plurality of epochs to produce a DFT (frequency domain) correlation result (e.g., for an entire single PN sequence period).

[0090] In some embodiments, a mobile object acquires (706) satellite navigation signals corresponding to respective channels, where acquiring satellite navigation signals corresponding to respective channels includes: determining a frequency and an initial code phase for the respective channel for a respective satellite. In some embodiments, after acquiring satellite navigation signals corresponding to respective channels, the mobile object tracks the satellite navigation signals corresponding to the respective channels to keep a local copy of the satellite navigation signals corresponding to the respective channels within one tenth of a chip of the satellite navigation signals corresponding to the respective channels, where tracking the satellite navigation signals corresponding to the respective channels includes: generating and aggregating intermediate results for a plurality of epochs for a single PN sequence period (e.g., at step 708), and processing DFT correlation results to produce a code phase correction for the respective channel for the respective satellite (e.g., at step 732).

[0091] In some embodiments, analyzing samples of a respective channel signal to produce an intermediate result for a respective epoch includes (712): performing a first DFT on samples of the respective channel signal (limited to samples for the respective epoch of the PN sequence period) to produce a first result; obtaining a second result corresponding to a second DFT performed on a portion of a local copy of a pseudo-random number (PN) code corresponding to the respective channel and epoch; and multiplying the first result by the second result to produce an intermediate result for the respective epoch. In some embodiments, obtaining the second result includes: performing a lookup in a table storing values of the second DFT. In some embodiments, obtaining the second result includes: performing a second DFT on a portion of a local copy of a pseudo-random number (PN) code corresponding to the respective channel and epoch, the portion being limited to samples for the respective epoch of the PN sequence period (e.g., samples corresponding to early chips, on-time chips, and late chips of the PN sequence, where the on-time chip corresponds to a sample of the respective channel signal for the epoch (e.g., overlapping in time)).

[0092] In some embodiments, method 700 includes: storing a local copy of a PN code for a respective satellite (e.g., also referred to herein as a copy of a PRN local sequence or a PN sequence), or storing parameters required to generate a PRN code for a respective satellite. For example, a PRN local sequence memory stores the PRN code (or values required to generate the PRN code) for each satellite in each constellation that an acquisition engine 316 may attempt to acquire satellite signals from. In some embodiments, the stored (or generated) PRN code is a version of the PRN code corresponding to a decimation frequency (e.g., a GPS-CA signal with a PRN length of 1023 chips and a chip rate of 1.023 MHz will be 4092 values long at a decimated sampling rate of 4.092 MHz).

[0093] In some embodiments, the respective channels of satellite navigation signals received from respective satellites of the plurality of satellites are modulated (714) using binary phase shift keying (BPSK) with a PN sequence. In some embodiments, a first DFT performed on samples of the respective channel signals that are limited to samples for a respective epoch of a PN sequence period is limited to samples corresponding to a respective chip of the PN sequence encoded in the respective channel signal; and a second DFT performed on a portion of a local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples for the respective epoch of a PN sequence period for only N chips in the local copy of the PN code, the N chips including a respective chip corresponding to the respective epoch and one or more chips offset from the respective chip in the local copy of the PN code, where N is an integer not greater than 7. For example, the second DFT is performed on 3 chips (or up to 7 chips), the 3 chips including the chip corresponding to the respective epoch, one or more previous chips corresponding to the PN sequence, and one or more next chips in the PN sequence. For example, for the example of 3 chips, the 3 chips are sometimes referred to as the prompt / on-time chip, the early chip, and the late chip.

[0094] In some embodiments, the respective channels of satellite navigation signals received from respective satellites of the plurality of satellites are modulated (716) using code shift keying (CSK) with a PN sequence. In some embodiments, a first DFT performed on samples of the respective channel signals that are limited to samples for a respective epoch of a PN sequence period is limited to samples corresponding to a respective chip of the PN sequence encoded in the respective channel signal; and a second DFT performed on a portion of a local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples for the respective epoch of a PN sequence period for only N chips in the local copy of the PN code, the N chips including a respective chip corresponding to the respective epoch and one or more chips offset from the respective chip in the local copy of the PN code, where N is an integer not greater than 261. For example, as described above with reference to Figure 5 As described, in some embodiments, using CSK requires performing a second DFT on samples spanning at least 257 chips (e.g., because in the CSK example, the initial chip phase is unknown).

[0095] In some embodiments, performing a first DFT on samples of the corresponding channel signal that are limited to the corresponding epochs for the PN sequence period to produce a first result includes (718): loading a first buffer with samples for the corresponding epochs for the PN sequence period, and padding the remainder of the first buffer with zeros. For example, if 256 samples are loaded into the first buffer and the size of the first buffer is 512, the remainder of the first buffer is filled with 0s (e.g., 256 zero values). In another example, if 40 samples of the corresponding epoch of the received channel signal are loaded into the first buffer and the size of the first buffer is 256, the first buffer is padded with 216 zero values. In some embodiments, a second buffer for a local copy of the PN sequence is loaded with samples to fill the buffer. In some embodiments, the second buffer is loaded with 3 (or up to 7) chips from the local copy of the PN sequence to fill the buffer (e.g., the second buffer is not padded with zeros), as described with reference to Figure 5 and Figure 6 described.

[0096] In some embodiments, the first buffer has (720) a size (e.g., length) that is less than or equal to the size of the first DFT. For example, the first buffer contains data of samples for the corresponding epochs for the PN sequence period, followed by zero data. In some embodiments, the second buffer is filled with non-zero data corresponding to the local copy of the PN sequence.

[0097] In some embodiments, the DFT used to analyze samples of the corresponding channel signal is implemented (721) in DFT hardware circuitry for performing DFT calculations. For example, the DFT hardware circuitry is different from the processor that performs computational and navigation operations. In some embodiments, the hardware circuitry is implemented in an application specific integrated circuit that is different from the processor that performs computational and navigation operations. In some embodiments, the hardware circuitry is described with reference to the small batch DFT tracking module 314 in Figure 3 and Figure 4 described.

[0098] In some embodiments, the plurality of epochs is (722) a first number of epochs, the samples for the corresponding epochs for the PN sequence period for which the first DFT is performed are a first number of samples per epoch, and the first number of epochs corresponds to the total number of samples for the PN sequence period divided by the first number of samples per epoch. For example, for the corresponding epoch, the first number of samples is the number of samples of a single chip corresponding to that epoch. Further, for example, the number of epochs is the number of chips in the PN sequence.

[0099] In some embodiments, a first number of samples is determined (724) based on the sampling rate at which the corresponding channel signal is sampled, and the first number of samples corresponds to the number of samples per chip of the PN sequence (e.g., for modulating the corresponding channel signal). For example, the size of the second DFT (and the number of samples) depends on the range of PN sequence uncertainty (e.g., in chips). For example, for BPSK and BOC modulation signals, an uncertainty of 3 chips (e.g., early chip, on-time chip, and late chip) is optionally selected. In some embodiments, the sampling rate of the first number of samples is the same for two or more of L1-CA, L2CM, G1C, and / or another GNSS signal.

[0100] In some embodiments, the plurality of epochs for the PN sequence period includes (726) epochs for or corresponding to each chip of the PN sequence encoded in the corresponding channel signal. For example, each epoch corresponds to a chip in the PN sequence of the chip (e.g., a single chip).

[0101] In some embodiments, before processing the DFT correlation result to generate a code phase correction for the corresponding channel of the corresponding satellite, the mobile object acquires (730) a satellite navigation signal corresponding to the corresponding channel, wherein acquiring the satellite navigation signal corresponding to the corresponding channel includes determining an initial code phase for the corresponding channel of the corresponding satellite. For example, the satellite receiver uses a process different from method 700, and in some embodiments, uses a hardware module different from the small batch DFT tracking engine 314 to acquire the satellite navigation signal corresponding to the corresponding channel. The initial code phase for the corresponding channel of the corresponding satellite is used to determine which chip of the PN sequence is initially used by the satellite receiver as the on-time chip associated with the chip of the received channel signal when tracking the received channel signal. When tracking the received channel signal, the initial code phase is updated according to the code phase correction generated by performing method 700.

[0102] For the corresponding channel signal, the mobile object processes (732) the DFT correlation result to generate a code phase correction for the corresponding channel of the corresponding satellite.

[0103] In some embodiments, processing the DFT correlation result includes (734): performing an inverse discrete Fourier transform (IDFT) on the DFT correlation result to generate a time-domain correlation; and based on the time-domain correlation, determining a code phase correction for a tracking loop corresponding to the corresponding channel of the satellite navigation signal received from the corresponding satellite among the plurality of satellites. For example, the satellite receiver or the GNSS signal tracking engine of the received satellite identifies a peak in the time-domain correlation, and identifies the code phase correction based on the identified peak in the time-domain correlation.

[0104] In some embodiments, the movable object generates (736) a respective code phase correction for each successive PN sequence period of the respective channel signal in real time, thereby generating a respective code phase correction for successive PN sequence periods of the respective channel signal. For example, as described above with reference to Figure 4 As described, the DFT correlator 414 is updated with the aggregation result computed by the aggregator 413 for each epoch. In some embodiments, the second buffer 408 is initially loaded with samples spanning 3 chips (e.g., for the first epoch), and the data in the buffer is then shifted by 1 chip (e.g., or the minimum amount such that the shift of the data meets the resolution and minimizes the processing of the DFT) to obtain the DFT for the next respective epoch. Thus, the size of the DFT (e.g., and the size of the buffer) is minimized. It should be understood that the DFT is computed in real time such that, prior to or during the first epoch of the next PN sequence period, a code phase correction is generated (e.g., updated) for one PN sequence period.

[0105] Based on the code phase correction, the movable object computes (738) a position estimation result and a velocity estimation result for the movable object. In some embodiments, the code phase corrections for multiple (e.g., 2 to 10) epochs are combined, and the resulting combined code phase correction is used to adjust the code phase of a local copy of the PN sequence of the respective channel signal, and a position estimation result and a velocity estimation result for the movable object are computed.

[0106] The movable object performs (740) a navigation function for the movable object (e.g., routing of the movable object; displaying on a map one or more suggested routes for moving the movable object from a current location to a specified or target location; and / or providing information about locations near or along a proposed route of the movable object) based on the computed position estimation result and velocity estimation result for the movable object.

[0107] It should be understood that although terms such as "first", "second", etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first contact may be referred to as a second contact, and similarly, a second contact may be referred to as a first contact, without changing the meaning of the description, provided that all occurrences of "first contact" are consistently renamed and all occurrences of the second contact are consistently renamed. The first contact and the second contact are both contacts, but they are not the same contact.

[0108] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the claims. As used in the description of the embodiments and the appended claims, the singular forms "a", "an", and "the" are also intended to include the plural forms unless the context clearly dictates otherwise. It should also be understood that the term "and / or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It should also be understood that the terms "comprises" and / or "comprising", when used in this specification, specify the presence of the stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0109] As used herein, the term "if the stated prerequisite is true" can be interpreted to mean "when the stated prerequisite is true" or "while the stated prerequisite is true" or "in response to determining that the stated prerequisite is true" or "in accordance with determining that the stated prerequisite is true" or "in response to detecting that the stated prerequisite is true", depending on the context. Similarly, the phrases "if it is determined that [the stated prerequisite is true]" or "if [the stated prerequisite is true]" or "when [the stated prerequisite is true]" can be interpreted to mean "upon determining that the stated prerequisite is true" or "in response to determining that the stated prerequisite is true" or "in accordance with determining that the stated prerequisite is true" or "upon detecting that the stated prerequisite is true" or "in response to detecting that the stated prerequisite is true", depending on the context.

[0110] For purposes of explanation, the foregoing description has been made with reference to specific embodiments. However, the above illustrative discussion is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications suited to the particular use contemplated.

Claims

1. A method for tracking a movable object based on signals from satellites, the method comprising: at the movable object, receiving satellite navigation signals from a plurality of satellites, the satellite navigation signals including respective channel signals for each respective channel of the satellite navigation signals received from respective ones of the plurality of satellites, each respective channel signal being encoded with a pseudo-random number (PN) sequence having a chip sequence; for the respective channel signals: generating and aggregating intermediate results for a plurality of epochs of a single pseudo-random number (PN) sequence period for the PN sequence, including: for each respective epoch of the plurality of epochs, using a discrete Fourier transform (DFT) to analyze samples of the respective channel signal that are limited to the respective epoch for the PN sequence period to produce an intermediate result for the respective epoch; and aggregating the intermediate results for the plurality of epochs to produce a DFT correlation result; and processing the DFT correlation result to produce a code phase correction for the respective channel of the respective satellite; calculating a position estimation result and a velocity estimation result for the movable object based on the code phase correction; and performing a navigation function for the movable object based on the calculated position estimation result and velocity estimation result for the movable object.

2. The method according to claim 1, wherein, Analyzing samples of the respective channel signal to produce an intermediate result for the respective epoch includes: performing a first DFT on samples of the respective channel signal that are limited to the respective epoch for the PN sequence period to produce a first result; obtaining a second result corresponding to a second DFT performed on a portion of a local copy of the pseudo-random number (PN) code corresponding to the respective channel and the respective epoch; and multiplying the first result by the second result to produce the intermediate result for the respective epoch.

3. The method according to claim 2, wherein: the respective channel of the satellite navigation signal received from a respective one of the plurality of satellites is modulated with the PN sequence using binary phase shift keying; the first DFT performed on samples of the respective channel signal that are limited to the respective epoch for the PN sequence period is limited to samples corresponding to one respective chip in the PN sequence encoded in the respective channel signal; and the second DFT performed on the portion of the local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples of the respective epoch for the PN sequence period for only N chips in the local copy of the PN code, the N chips including one respective chip corresponding to the respective epoch and one or more chips offset from the one respective chip in the local copy of the PN code, where N is an integer not greater than 7.

4. The method according to claim 2, wherein: wherein a code shift keying is used to modulate the respective channel of the satellite navigation signals received from the respective satellites among the plurality of satellites with the PN sequence; the first DFT performed on samples of the respective channel signals that are limited to the respective epochs for the PN sequence period is limited to samples corresponding to one respective chip in the PN sequence encoded in the respective channel signals; and the second DFT performed on a portion of the local copy of the PN code corresponding to the respective channel and the respective epoch is limited to samples of the respective epoch for the PN sequence period for only N chips in the local copy of the PN code, the N chips including one respective chip corresponding to the respective epoch and one or more chips offset from the one respective chip in the local copy of the PN code, wherein N is an integer not greater than 261.

5. The method according to any one of claims 2 to 4, wherein Performing the first DFT on samples of the respective channel signals that are limited to the respective epochs for the PN sequence period to produce the first result includes: loading a first buffer with samples of the respective epoch for the PN sequence period, and padding the remainder of the first buffer with zeros.

6. The method according to claim 5, wherein, The size of the first buffer is less than or equal to the size of the first DFT.

7. The method according to any one of claims 2 to 6, wherein: the plurality of epochs are a first number of epochs, the samples on which the first DFT is performed for the respective epoch for the PN sequence period are a first number of samples per epoch, and the first number of epochs corresponds to the total number of samples for the PN sequence period divided by the first number of samples per epoch.

8. The method according to claim 7, wherein The first number of samples is determined based on the sampling rate at which the respective channel signals are sampled, and the first number of samples corresponds to the number of samples per chip of the PN sequence.

9. The method according to any one of claims 1 to 8, wherein, Processing the DFT correlation result includes: performing an inverse discrete Fourier transform (IDFT) on the DFT correlation result to produce a time-domain correlation; and determining, based on the time-domain correlation, a code phase correction for a tracking loop corresponding to the respective channel of the satellite navigation signals received from the respective satellite among the plurality of satellites.

10. The method according to any one of claims 1 to 9, wherein, The plurality of epochs for the PN sequence period include epochs for or corresponding to each chip of the PN sequence encoded in the respective channel signals.

11. The method according to any one of claims 1 to 10, wherein The DFT used to analyze samples of the respective channel signals is implemented in a DFT hardware circuit for performing DFT calculations.

12. The method according to any one of claims 1 to 11, comprising: Before processing the DFT correlation result to produce a code phase correction for the respective channel of the respective satellite, the respective channel signal is acquired, wherein acquiring the respective channel signal includes determining an initial code phase for the respective channel of the respective satellite.

13. The method according to any one of claims 1 to 12, comprising: For a respective channel, Collect satellite navigation signals corresponding to the respective channels, wherein collecting the satellite navigation signals corresponding to the respective channels includes: determining the frequency and initial code phase of the respective channels for the respective satellites; After collecting the satellite navigation signals corresponding to the respective channels, track the satellite navigation signals corresponding to the respective channels so as to keep a local copy of the satellite navigation signals corresponding to the respective channels within one tenth of a chip of the satellite navigation signals corresponding to the respective channels; wherein tracking the satellite navigation signals corresponding to the respective channels includes: generating and aggregating intermediate results for a plurality of epochs for a single PN sequence period, and processing the DFT correlation result to generate a code phase correction for the respective channel of the respective satellite.

14. The method according to any one of claims 1 to 13, including generating in real time a respective code phase correction for successive PN sequence periods of the respective channel signals.

15. A navigation module for a movable object, comprising: one or more processors; a satellite receiver for receiving satellite navigation signals from a plurality of satellites, wherein the satellite receiver is configured to: receive satellite navigation signals from a plurality of satellites, the satellite navigation signals including respective channel signals for each respective channel of the satellite navigation signals received from respective satellites of the plurality of satellites, each respective channel signal being encoded with a pseudo-random number (PN) sequence having a chip sequence; for the respective channel signals: generating and aggregating intermediate results for a plurality of epochs for a single pseudo-random number (PN) sequence period of the PN sequence, including: for each respective epoch of the plurality of epochs, using a discrete Fourier transform (DFT) to analyze samples of the respective channel signal that are limited to the respective epoch of the PN sequence period to generate an intermediate result for the respective epoch; and aggregating the intermediate results for the plurality of epochs to generate a DFT correlation result; and processing the DFT correlation result to generate a code phase correction for the respective channel of the respective satellite; and a memory storing one or more programs, the one or more programs, when executed by the one or more processors, cause the navigation module for the movable object to: calculate a position estimation result and a speed estimation result for the movable object according to the code phase correction; and perform a navigation function for the movable object according to the calculated position estimation result and speed estimation result for the movable object.

16. The navigation module according to claim 15, wherein, Analyzing samples of the respective channel signal to generate an intermediate result for the respective epoch includes: performing a first DFT on samples of the respective channel signal that are limited to the respective epoch of the PN sequence period to generate a first result; obtaining a second result corresponding to a second DFT performed on a portion of a local copy of the pseudo-random number (PN) code corresponding to the respective channel and the respective epoch; and Multiply the first result by the second result to produce the intermediate result for the corresponding epoch.

17. The navigation module according to claim 16, wherein: The corresponding channel of the satellite navigation signal received from the corresponding satellite among the plurality of satellites is modulated with the PN sequence using binary phase shift keying; The first DFT performed on the samples of the corresponding channel signal that are limited to the samples for the corresponding epoch of the PN sequence period is limited to the samples corresponding to one corresponding chip in the PN sequence encoded in the corresponding channel signal; and The second DFT performed on the portion of the local copy of the PN code corresponding to the corresponding channel and the epoch is limited to the samples for the corresponding epoch of the PN sequence period for only N chips in the local copy of the PN code, the N chips including one corresponding chip corresponding to the corresponding epoch and one or more chips offset from the one corresponding chip in the local copy of the PN code, where N is an integer not greater than 7.

18. The navigation module according to claim 16, wherein: The corresponding channel of the satellite navigation signal received from the corresponding satellite among the plurality of satellites is modulated with the PN sequence using code shift keying; The first DFT performed on the samples of the corresponding channel signal that are limited to the samples for the corresponding epoch of the PN sequence period is limited to the samples corresponding to one corresponding chip in the PN sequence encoded in the corresponding channel signal; and The second DFT performed on the portion of the local copy of the PN code corresponding to the corresponding channel and the epoch is limited to the samples for the corresponding epoch of the PN sequence period for only N chips in the local copy of the PN code, the N chips including one corresponding chip corresponding to the corresponding epoch and one or more chips offset from the one corresponding chip in the local copy of the PN code, where N is an integer not greater than 261.

19. The navigation module according to any one of claims 16 to 18, wherein, Performing the first DFT on the samples of the corresponding channel signal that are limited to the samples for the corresponding epoch of the PN sequence period to produce the first result includes: loading a first buffer with the samples for the corresponding epoch of the PN sequence period, and filling the remaining portion of the first buffer with zeros.

20. The navigation module according to claim 19, wherein The size of the first buffer is less than or equal to the size of the first DFT.

21. The navigation module according to claim 15, wherein, The satellite receiver is configured to perform the method according to any one of claims 2 to 14.

22. A computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by one or more processors of a navigation module for a movable object, cause the navigation module to perform the method according to any one of claims 1 to 14.