A GNSS signal acquisition method based on FPGA step-by-step code phase refinement

20230111314 · 2023-04-13

    Inventors

    Cpc classification

    International classification

    Abstract

    A GNSS signal acquisition method based on FPGA step-by-step code phase refinement comprises steps as follows: (1) Coarse acquisition: correlate all received data with the locally generated carrier and the complete pseudo-random code to find the maximum correlation value; obtain the carrier and the rough code phase for fine acquisition if the maximum correlation value conforms to the acquisition threshold; otherwise, repeat Step (1). (2) Fine acquisition: feedback the carrier and the coarse acquisition code phase value from Step (1) to the controller so that the controller can intercept partial of the received signal for mixing with the local carrier from Step (1); then, correlate the result with partial pseudo-random code after eliminating the influence of the carrier to obtain a code phase with higher accuracy.

    Claims

    1. A GNSS signal acquisition method based on FPGA step-by-step code phase refinement, which runs in an acquisition system comprising a local oscillator, a down-sampling module, a Fourier transform module, a local pseudo-random code generator, an inverse Fourier transform module, and a controller, and comprises the steps as follows: A. coarse acquisition: (1) take a N-point GNSS signal r(n) (sampling frequency: f.sub.s), and multiply it by the sine and cosine carrier signals sin(2πf.sub.carry) and cos (2πf.sub.carry generated by the local oscillator for frequency mixing respectively to get two data, respectively I and Q. The said N-point GNSS signal is a signal that contains a complete pseudo-random code period, while the said complete pseudo-random code period shall contain n chips. f.sub.s ≥ 2f.sub.I, where: f.sub.I is the center frequency of the digital signal being processed; f.sub.carry = f.sub.I - |f.sub.Dappler | + Δ .Math. i, where f.sub.Dappler is the frequency offset caused by the Doppler effect; Δ is the step size for carrier frequency search, which is user-defined; and i = 0 , 1 , 2 , .Math. , 2 × f D o p p l e r / Δ ; (2) conduct M-point uniform down-sampling for the two data I and Q obtained from Step (1) , and use the results as real part and imaginary part respectively for M-point fast Fourier transform (FFT); M is an integer power of 2 and M < N; (3) conduct M-point uniform down-sampling for the locally generated pseudo-random code (sampling frequency of f.sub.s), and take the conjugate of the result after fast Fourier transform (FFT) operation; (4) multiply the fast Fourier transform (FFT) result from Step (2) by the conjugate result of the pseudo-random code from Step (3) to get Y(k), and then conduct M-point inverse fast Fourier transform (IFFT); (5) perform modulus and square operations on the result from Step (4) to get the sequence of correlation values of the GNSS signal with the local carrier and the local pseudo-random code. Then find the maximum value Max and the secondary maximum Second.sub.Max in the correlation value sequence. If Max ≥ 3 × Second_Max, the coarse acquisition can be judged as completed. Then, the frequency of the local carrier is just the carrier value of the coarse acquisition, and the position of the maximum value Max in the correlation value sequence is just the coarse acquisition code phase value. If so, continue with Step (6). Otherwise, return to Step (1); increase the i in Step (1) by 1, change the frequency of the orthogonal carrier signals generated by the local oscillator for the next frequency search. B. fine acquisition: (6) feedback the carrier value and the coarse acquisition code phase value obtained from the coarse acquisition in Step (5) to the controller; the controller controls the input of data by reading a Nʹ-point (M ≤ Nʹ < N) part of the GNSS signal data from the chip in front of the coarse acquisition code phase value obtained from the coarse acquisition and multiply it by the carrier value obtained from the coarse acquisition for orthogonal mixing to eliminate the influence of the carrier and get the two data I1 and Q1; (7) conduct M-point uniform down-sampling for the two data I1 and Q1 obtained from Step (6) under the control of the controller, and use the results as real part and imaginary part respectively for M-point fast Fourier transform (FFT); (8) after controlling the local pseudo-random code generator to sample at the frequency of f.sub.s, the controller takes a Nʹ-point part of the pseudo-random code (the same long as that in Step (6)) for M-point uniform down-sampling and fast Fourier transform (FFT) operation, and then takes the conjugate; (9) multiply the data after fast Fourier transform (FFT) from Step (7) by the conjugated data after fast Fourier transform (FFT) from Step (8) for inverse fast Fourier transform (IFFT) operation; (10) perform modulus and square operations on the result from Step (9) to get the correlation values of the GNSS signal with the local carrier and the local pseudo-random code. Then find the position corresponding to the maximum correlation value. If the position differs from that of the last acquisition by less than one chip, the fine acquisition can be judged as effective. Then, the position corresponding to the maximum correlation value is just the code phase obtained by the fine acquisition. The fine acquisition ends when Nʹ = M is met. Otherwise, return to Step (6), and take the chip in front of the code phase of the fine acquisition as starting position of the next fine acquisition to continue with fine acquisition by reducing the data length.

    2. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the said M-point uniform down-sampling comprises the steps as follows: N M = m , where: m refers to the number of original data points contained in each down-sampled data point, also known as down-sampling multiple; when m is an integer, add up every m data as a data point; when m is not an integer, the following relational expressions are satisfied, as shown in equation (I): a < m < b a x + b y = N x + y = M where: a and b are integers that are closest to the m respectively; x is the number of summation times for every a consecutive points; and y is the number of summation times for every b consecutive points. a-point summation and b-point summation are to be distributed evenly across the data to complete uniform down-sampling.

    3. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the said controller is used to control the input of different lengths of data for each fine acquisition, which comprises steps as follows: A. the first fine acquisition: According to the coarse acquisition code phase value, Index.sub.CA (0 < Index.sub.CA < M) obtained by the coarse acquisition, the fine acquisition begins to read N′ points of data from the position pos1 p o s 1 = c e i l N M × I n d e x C A c e i l N / n , where: ceil(.Math.) is a function of rounding up to an integer and M ≤ Nʹ < N - pos1). The maximum correlation value in the first fine acquisition corresponds to the position of the code phase I n d e x C A obtained from the first fine acquisition; B. the second fine acquisition: According to the code phase value, I n d e x C A 0 < Index’ C A < M , the second fine acquisition begins to read Nʺ points of data from the position pos2 M N < N ; p o s 2 = p o s 1 + c e l l N / M × I n d e x C A c e i l N / n ; Repeat the above until Nʺ.Math..Math..Math.ʹ = M, namely refining to the highest accuracy.

    4. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the said controller controls the M-point uniform down-sampling for different lengths of data in each fine acquisition process, which comprises steps as follows: C. the first fine acquisition uses a down-sampling multiple of N / M = m , and conducts M-point uniform down-sampling according to the value of mʹ; D. the second fine acquisition uses a down-sampling multiple of N / M = m , and conducts M-point uniform down-sampling according to the value of mʺ; repeat the above until N .Math. = M , namely refining to the highest accuracy.

    5. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the said controller is used to control the generation of different lengths of local pseudo-random codes in each fine acquisition, which comprises steps as follows: the controller controls the local pseudo-random code generator to generate a pseudo-random code at the sampling frequency of f.sub.s and then takes a part of the pseudo-random code with the same length as the input data size above for M-point uniform down-sampling.

    6. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the M-point fast Fourier transform (FFT) formula is as shown in equation (II): X k = F F T x m = .Math. m = 0 M 1 x m e j 2 π k m M II where: k = 0,1,2,..., M - 1; x(m) is a discrete sequence for which the FFT operation is to be performed; X(k) is the result of the discrete Fourier transform; and j is an imaginary unit.

    7. The GNSS signal acquisition method based on FPGA step-by-step code phase refinement as described in claim 1, which is characterized in that the M-point inverse fast Fourier transform (IFFT) formula is as shown in equation (III): y m = I F F T Y k = .Math. k = 0 M 1 Y k e j 2 π k m M III where: m = 0,1,2 ... , M - 1; y(m) is the discrete sequence obtained by the inverse Fourier transform; and j is an imaginary unit.

    Description

    BRIEF DESCRIPTION OF THE FIGURES

    [0047] FIG. 1 is the functional block diagram of the GNSS signal acquisition method based on FPGA step-by-step code phase refinement in the invention.

    [0048] FIG. 2 is the overall flow diagram of the GNSS signal acquisition method based on FPGA step-by-step code phase refinement in the invention.

    DETAILED EMBODIMENTS

    [0049] The invention is further described in combination with the attached figures and embodiments as follows, but is not limited to that.

    Embodiment

    [0050] A GNSS signal acquisition method based on FPGA step-by-step code phase refinement (as shown in FIG. 2), which runs in an acquisition system (as shown in FIG. 1) comprising a local oscillator, a down-sampling module, a Fourier transform module, a local pseudo-random code generator, an inverse Fourier transform module, and a controller. The local oscillator is used to generate orthogonal local sine and cosine carrier signals; the down-sampling module is used to down sample long signals with high sampling rate into short signals averagely; the Fourier transform module and inverse Fourier transform module are used to realize the corresponding mathematical operations; the local pseudo-random code generator is used to generate local pseudo-random codes for different satellites; and the controller is used to control the data acquisition, the down-sampling rate, and the acquisition of a part of the local pseudo-random code according to the results of the last acquisition. After the input signal is multiplied by the two orthogonal carrier signals generated by the local oscillator for mixing, the down-sampling module conducts down sampling for the two output signals respectively. After down sampling, the two output signals will be used as real part and imaginary part input signals for the Fourier transform module respectively to obtain intermediate signal I through Fourier transform. At the same time, the local pseudo-random code generator generates a local pseudo-random code which will be input into the Fourier transform module after down sampling in the down-sampling module. Then, intermediate signal II is obtained after taking the conjugate of the signal output by the Fourier transform module. The intermediate signal I is then input into the inverse Fourier transform module for Fourier inverse transform after being multiplied by the intermediate signal II. After modulus operation and square operation, a correlation value will be output for acquisition judgment. The judgment result is then input into the controller for control of the next acquisition. The embodiment takes the application of digital intermediate frequency signal processing in the GPS receiver as an example, which comprises steps are as follows: [0051] A. coarse acquisition: [0052] 1) Take a 16368-point GNSS signal r(n) (sampling frequency:f.sub.s = 16.3676 MHz), and multiply it by the sine and cosine carrier signals sin(2πf.sub.carry) and cos (2πf.sub.carry) generated by the local oscillator for frequency mixing respectively to get two data, respectively I and Q. f.sub.I is the center frequency of the digital signal being processed; f.sub.carry = F.sub.I- |f.sub.Doppler| + Δ • i, where f.sub.Doppler is the frequency offset caused by the Doppler effect and is generally±10KHz; Δ is the step size for carrier frequency search, which is user-defined and generally500 Hz; and [0053] 2) Conduct 1024-point uniform down-sampling for the two data I and Q obtained from Step (1) , and use the results as real part and imaginary part respectively for 1024-point fast Fourier transform (FFT); [0054] 3) Conduct 1024-point uniform down-sampling for the locally generated pseudo-random code (C/A Code) with length of 16368 and sampling frequency of f.sub.s = 16.3676 MHz, and take the conjugate of the result after performing 1024-point Fourier transform operation; [0055] 4) Multiply the fast Fourier transform (FFT) result from Step (2) and the conjugate result of the pseudo-random code (C/A code) from Step (3) to get Y(k), and then conduct 1024-point inverse fast Fourier transform (IFFT); [0056] 5) Perform modulus and square operations on the result from Step (4) to get the sequence of correlation values of the GNSS signal with the local carrier and the local pseudo-random code. Then find the maximum value Max and the secondary maximum Second.sub.Max in the correlation value sequence. If Max ≥ 3 × Second_Max, the coarse acquisition can be judged as completed. Then, the frequency of the local carrier is just the carrier value of the coarse acquisition f.sub.I, and the position of the maximum value Max in the correlation value sequence is just the coarse acquisition code phase value Index.sub.CA(0 < Index.sub.CA < 1024). If so, continue with Step (6). Otherwise, return to Step (1); increase the i in Step (1) by 1; change the frequency of the orthogonal carrier signal generated by the local oscillator for the next frequency search. [0057] The coarse acquisition process can reduce the number of FFT operation points through down-sampling. As FFT operation points are proportional to the computation load, the acquisition time, and the required hardware resources, a reduced number of FFT points will greatly reduce the computation load of acquisition, save acquisition time, and reduce hardware resources. Where the input signal sampling frequency f.sub.s = 16.3676 MHz and the signal length is 1 ms, FFT operations have to be done for a total of 16,368 points if without down-sampling treatment; while if down-sampled to 1024 points, FFT operations only need to be done for 1024 points, which can reduce the number of operation points by 15 times. [0058] B. fine acquisition: [0059] 6) Feedback the carrier value f and the coarse acquisition code phase value Index.sub.CA obtained from the coarse acquisition in Step (5) to the controller; the controller controls the input of data by reading an 8192 — point part of the GNSS signal data from the chip position pos1(pos1 = 16 × Index.sub.CA — 16) in front of the coarse acquisition code phase value obtained from the coarse acquisition and multiply it by the carrier value obtained from the coarse acquisition for orthogonal mixing to eliminate the influence of the carrier and get the two data I1 and Q1. [0060] 7) Conduct 1024-point uniform down-sampling for the two data I1 and Q1 obtained from Step (6) under the control of the controller, and use the results as real part and imaginary part respectively for 1024-point fast Fourier transform (FFT); [0061] 8) After controlling the local pseudo-random code generator to sample at the frequency of f.sub.s= 16.3676 MHz, the controller takes an 8192-point (the same long as that in Step (6)) part of the pseudo-random code (C/A code) for 1024-point uniform down-sampling and fast Fourier transform (FFT) operation, and then takes the conjugate of the result; [0062] 9) Multiply the data after fast Fourier transform (FFT) from Step (7) by the conjugated data after fast Fourier transform (FFT) from Step (8) for inverse fast Fourier transform (IFFT) operation; [0063] 10) Perform modulus and square operations on the result from Step (9) to get the correlation values of the GNSS signal with the local carrier and the local pseudo-random code. Then find the position corresponding to the maximum correlation value. If the position differs from that of the last acquisition by less than one chip, the fine acquisition can be judged as effective. Then, the position corresponding to the maximum correlation value is just the code phase obtained by the fine acquisition. The data length acquired at this time is 8192, which is still larger than 1024. Therefore, the obtained code phase value still has an error caused by down-sampling, and needs to be further refined. [0064] 11) Conduct the second fine acquisition. Feedback the code phase Index’.sub.CAobtained from the first acquisition in Step (10) to the controller, so that the controller can control the input of data by reading a 4096 — point part of the signal data from the chip position pos2 (pos2 = pos1 + 8 × lndex′.sub.CA — 16) in front of the code phase obtained from the coarse acquisition and multiply it by the carrier value obtained from the coarse acquisition for orthogonal mixing to eliminate the influence of the carriers and get the two data I and Q. [0065] 12) Conduct 1024-point uniform down-sampling for the two data I and Q obtained from Step (11) under the control of the controller, and use the results as real part and imaginary part respectively for 1024-point fast Fourier transform (FFT); [0066] 13) After controlling the local pseudo-random code generator to sample at the frequency of f.sub.s = 16.3676 MHz, the controller takes a 4096-point (the same long as that in Step (11)) part of the pseudo-random code (C/A code) for 1024-point uniform down-sampling and fast Fourier transform (FFT) operation, and then takes the conjugate of the result; [0067] 14) Multiply the data after FFT from Step (12) by the conjugated data after FFT from Step (13) for IFFT operation; [0068] 15) Perform modulus and square operations on the result from Step (14) to get the correlation values of the received data with the local carriers and the local pseudo-random code (C/A code). Then find the position corresponding to the maximum correlation value that meets the threshold requirement. As a code phase with a higher accuracy (Indexʺ.sub.CA(0 < Indexʺ.sub.CA < 1024)), the data length acquired at this time is 4096, which is still larger than 1024. Therefore, the obtained code phase value still has an error caused by down-sampling, and needs to be further refined. [0069] 16) Conduct the third fine acquisition. Feedback the code phase Indexʺ.sub.CA obtained from the second acquisition in Step (15) to the controller, so that the controller can control the input of data by reading a 2048 — point part of the signal data from the chip position pos3 (pos3 = pos2 + 4 × Indexʺ.sub.CA — 16) in front of the code phase obtained from the coarse acquisition and multiply it by the carrier value obtained from the coarse acquisition for orthogonal mixing to eliminate the influence of the carrier and get the two data I and Q. [0070] 17) Conduct 1024-point uniform down-sampling for the two data I and Q obtained from Step (16) under the control of the controller, and use the results as real part and imaginary part respectively for 1024-point fast Fourier transform (FFT); [0071] 18) After controlling the local pseudo-random code generator to sample at the frequency of f= 16.3676 MHz, the controller takes a 2048-point (the same long as that in Step (16)) part of the pseudo-random code (C/A code) for 1024-point uniform down-sampling and fast Fourier transform (FFT) operation, and then takes the conjugate of the result; [0072] 19) Multiply the data after FFT from Step (17) by the conjugated data after FFT from Step (18) for IFFT operation; [0073] 20) Perform modulus and square operations on the result from Step (19) to get the correlation values of the received data with the local carrier and the local pseudo-random code (C/A code). Then find the position corresponding to the maximum correlation value that meets the threshold requirement. As a code phase with a higher accuracy the data length acquired at this time is 2048, which is still larger than 1024. Therefore, the obtained code phase value still has an error caused by down-sampling, and needs to be further refined. [0074] 21) Conduct the forth fine acquisition. Feedback the code phase obtained from the third acquisition in Step (20) to the controller, so that the controller can control the input of data by reading a 1024 — point part of the data from the chip position pos4 (pos4 = pos3 + 2 × — 16) in front of the code phase obtained from the coarse acquisition and multiply it by the carrier value obtained from the coarse acquisition for orthogonal mixing to eliminate the influence of the carrier and get the two data I and Q. [0075] 22) After controlling the local pseudo-random code generator to sample at the frequency of f.sub.s = 16.3676 MHz, the controller takes a 1024-point (the same long as that in Step (21)) part of the pseudo-random code (C/A code) for fast Fourier transform (FFT) operation, and then takes the conjugate of the result; [0076] 23) Multiply the data after FFT from Step (21) by the conjugated data after FFT from Step (22) for IFFT operation; [0077] 24) Perform modulus and square operations on the result from Step (23) to get the correlation values of the received data with the local carrier and the local pseudo-random code (C/A code). Then find the position corresponding to the maximum correlation value that meets the threshold requirement. As a code phase with a higher accuracy the data length acquired at this time is 1024, which is equal to the number of points for down-sampling. Therefore, the obtained code phase value has no error caused by down-sampling, and the fine acquisition is completed. The final result of the obtained code phase ispos5 = pos4 +

    [0078] The fine acquisition process of the invention takes a part of the data and a part of the pseudo-random code for correlation operation, and thus can reduce the computational load and improve the code phase accuracy compared to the coarse acquisition. Similarly, when the sampling frequency of the input signal is f.sub.s = 16.3676 MHz and the signal length is 1 ms, the coarse acquisition process needs to down sample a complete data that contains 16368 points to 1024 points, and the code phase resolution is 16 × .sup.1/.sub.fs. If the first fine acquisition takes 8196 points of the data, and down sample them to 1024 points, the code phase resolution will be 8 × .sup.1/.sub.fs’ which improves the code phase accuracy by one time compared to that of the coarse acquisition. With the help of the second, third and other subsequent fine acquisitions, the code phase accuracy will increase with the decrease of the sampling number and the down-sampling multiple until the maximum code phase accuracy is reached, that is, the code phase resolution equals to .sup.1/.sub.fs.

    [0079] In this embodiment, the process of uniformly down sampling the 16,368 points in Steps (2) and (3) to 1024 points is as follows:

    [00012]15<16368102415.98<1615x+16y=16368x+y=1024

    [0080] Solution:

    [00013]x=16y=1008

    [0081] Namely, summation of 15 consecutive points needs to be performed for16 times, while summation of 16 consecutive points needs to be performed 1008 times. In order to uniformly down sample the data, the 16 positions of summation of 15 consecutive points shall be uniformly distributed in the whole data segment. The specific positions are shown in Table 1:

    TABLE-US-00001 ith summation of 15 consecutive points Position of the summation of 15 consecutive points ith summation of 15 consecutive points Position of the summation of 15 consecutive points 1 1008 9 9192 2 2031 10 10215 3 3054 11 11238 4 4077 12 12261 5 5100 13 13284 6 6123 14 14307 7 7146 15 15330 8 8169 16 16353

    [0082] In this embodiment, 1024-point down-sampling is performed for the 8192 points of data in Steps (7) and (8) as follows: as

    [00014]81921024=8

    (8 is an integer), the sum of 8 consecutive data points can be directly taken as a data point after sampling.

    [0083] Similarly, in this embodiment, 1024-point down-sampling is performed for the 4096 points of data in Steps (12) and (13) as follows: as

    [00015]40961024=4,

    the sum of 4 consecutive data points can be directly taken as a data point after sampling.

    [0084] Similarly, in this embodiment, 1024-point down-sampling is performed for the 2048 points of data in Steps (17) and (18) as follows: as

    [00016]20481024=2,

    the sum of 2 consecutive data points can be directly taken as a data point after sampling.