# Comparison of L1 and L5 Bands GNSS Signals Acquisition
## 2 GNSS Signals and Acquisition
### Acquisition of GNSS Signals  
There are several methods to perform the acquisition of GNSS signals, namely the serial search [1]; the Parallel Frequency Search (PFS), which uses an FFT to search simultaneously all or a part of the Doppler frequency bins [15; 16]; the Parallel Code Search (PCS), which uses FFTs to compute the code correlation in order to search simultaneously all the code delay bins [1; 17]; and two-dimensional search where FFTs are used for both frequency and code domains [9; 16; 18; 19]. The method considered in this paper is the PCS that computes the correlation over the primary code correlation using FFTs, because [5]: (1) It is an efficient method providing a high level of parallelism; (2) the parallelism is still exploited in presence of a basic assistance, unlike the parallel frequency search (because it is much easier to reduce the frequency search space than the code delay search space from any assistance [8]); (3) the code Doppler can easily be compensated; and (4) it requires less memory than two-dimensional searches. To emphasize this, one can note that this is the method implemented in today's mass market receivers [2], and considered or already implemented in spaceborne GNSS receivers [20; 21; 22]. An overview of the PCS architecture considered is shown in Figure 1. The incoming signal is stored into a memory, to be processed at a higher frequency in order to reduce the processing time [5]. Then, during the processing, the signal is multiplied by a local carrier, followed by an FFT-based correlation performed over one primary code period (in fact, two primary code periods are used to manage the possible transition and the zero-padding possibly needed, but this is repeated for every period [23; 24]). At this stage, if the Doppler is completely removed, the \(i\) th primary code correlation result can be expressed as  
\[\boldsymbol{r}_{i}=a\ c_{2,i-m_{\mathrm{S}}}\ \boldsymbol{r}_{\mathrm{P}}+ \boldsymbol{\eta}_{i}, \tag{3}\]  
for a pilot channel signal, or as  
\[\boldsymbol{r}_{i}=a\ d_{i}\ \boldsymbol{r}_{\mathrm{P}}+\boldsymbol{\eta}_{i}, \tag{4}\]  
for a data channel signal, where \(c_{2,i-m_{\mathrm{S}}}\) is the \((i-m_{\mathrm{S}})\) th chip of the secondary code (the subscript is modulo \(N_{\mathrm{S}}\), with \(N_{\mathrm{S}}\) the length of the secondary code in chip), \(m_{\mathrm{S}}\) is the unknown delay of the incoming secondary code, \(\boldsymbol{r}_{\mathrm{P}}\) is the primary code autocorrelation of length \(N_{\mathrm{P}}\) (\(N_{\mathrm{P}}\) being the number of samples in one primary code period), and \(\boldsymbol{\eta}_{i}\) is the noise [23]. Then, further coherent integration can be performed. If there is data, the data transition should be managed; if there is a secondary code, the secondary code should be removed with another correlation. This is described in detail in Section 3. Finally, non-coherent integration can be performed. The number of accumulators used for the coherent and non-coherent integrations can vary depending if the accumulations are performed in serial (one accumulator testing one delay at once), parallel (many accumulators testing all delays at once), or semi-parallel (several accumulators testing several delays at once). For the comparisons in this paper, the implementations will be based on Figure 1 and inspired from [23], which compares many ways to implement the acquisition (e.g., the accumulation can be done before or after the FFTs, a temporary memory can be used or not, and the accumulation can be done serially or in parallel). The next section will detail the specific cases that interest us, i.e., using coherent integration only or using non-coherent integrations, and considering parallel, serial and semi-parallel accumulations.