A generic GNSS signal defined by its complex baseband equivalent, \(s_{T}(t)\), the digital signal at the input of an Acquisition block can be written as:

\[\begin{equation} \label{xin} x_\text{IN}[k] = A(t)\tilde{s}_{T}(t - \tau(t))e^{j \left( 2\pi f_D(t) t + \phi(t) \right) } \Bigr \rvert_{t=kT_s} + n(t) \Bigr \rvert_{t=kT_s} \end{equation}\]

where \(A(t)\) is the signal amplitude, \(\tilde{s}_{T}(t)\) is a filtered version of \(s_T(t)\), \(\tau(t)\) is a time-varying code delay, \(f_D(t)\) is a time-varying Doppler shift, \(\phi(t)\) is a time-varying carrier phase shift, \(n(t)\) is a term modeling random noise and \(T_s\) is the sampling period.

The role of an Acquisition block is the detection of the presence/absence of signals coming from a given GNSS satellite. In the case of a positive detection, it should provide coarse estimations of the code phase \(\hat{\tau}_{acq}\) and the Doppler shift \(\hat{f}_{\!D_{acq}}\), yet accurate enough to initialize the delay and phase tracking loops.

By exploiting the concepts and methodology of estimation theory, it is possible to show that the maximum likelihood (ML) estimates of \(f_D\) and \(\tau\) can be obtained by maximizing the function

\[\begin{equation} \hat{f}_{\!D_{ML}}, \hat{\tau}_{ML} = \arg \max_{f_D,\tau} \left\{ \left| \hat{R}_{xd}(f_D,\tau)\right|^2\right\}~, \end{equation}\]

where

\[\begin{equation} \hat{R}_{xd}(f_D,\tau) = \frac{1}{K}\sum_{k=0}^{K-1}x_{\text{IN}}[k]d[kT_s - \tau]e^{-j 2 \pi f_D kT_s}~, \end{equation}\]

\(x_{\text{IN}}[k]\) is a complex vector containing I&Q samples of the received signal, \(T_s\) is the sampling period, \(\tau\) is the code phase of the received signal with respect to a local reference, \(f_D\) is the Doppler shift, \(K\) is the number of samples in a spreading code (4 ms for Galileo E1, 1 ms for GPS L1, etc.), and \(d[k]\) is a locally generated reference. The maximization in the equation above requires a two-dimensional search in a function which output results from a multiplication-and-sum of \(K\) complex samples, becoming the computational bottleneck of the whole process. A usual method to alleviate this issue is to resort to the FFT-based circular convolution, which exchanges the expensive multiplication-and-sum operation by a discrete Fourier transform, a vector product, and an inverse transform, taking advantage of the efficient implementations available for such operations1.

The magnitude of \(|\hat{R}_{xd}(f_D,\tau)|\), also known as cross-ambiguity function, is also used to decide whether the satellite corresponding to the local replica \(d[k]\) is in view or it is not. Resorting to signal detection theory, it is possible to define tests statistics with desirable properties. A criterion commonly used for a detection problem is the maximization of the detection probability (\(P_d\)) subject to a given false alarm probability (\(P_{fa}\)). It is well-known in the literature that the optimum solution to that problem can be found by applying the Neyman-Pearson approach, which requires perfect knowledge of the signal parameters and constitutes the uniformly most powerful test. Assuming additive white Gaussian noise and replacing the true synchronization parameters by their ML estimators in the Neyman-Pearson detector, one obtains the Generalized Likelihood Ratio Test (GLRT) function, which can be written as:

\[\begin{equation} T_{\text{GLRT}}\left(\mathbf{x}_{\text{IN}}\right) = \max_{f_D,\tau}\left\{ \frac{\left| \hat{R}_{xd}(f_D,\tau) \right|^2}{\hat{R}_{xx}} \right\}~, \end{equation}\]

where \(\hat{R}_{xx}\) is an estimation of the input signal power. It can be shown that this acquisition test statistic is a Constant False Alarm Rate (CFAR) detector because \(P_{fa}\) does not depend on the noise power.

CAF GLRT statistic for Parallel Code Phase Search acquisition algorithm for a configuration of \(f_{IN} = 4\) Msps, a frequency span of \(\pm 5\) kHz with steps of \(250\) Hz, and using the E1B sinBOC local replica for Galileo’s IOV satellite PRN 112.

Completing all non-coherent dwells

The Acquisition_<signal>.full_grid_search option controls when the shared PCPS acquisition block (CPU or CUDA) makes its detection decision. It defaults to false.

Each dwell computes the correlation over every active Doppler bin and code phase. With multiple dwells, the block adds their squared correlation magnitudes, forming a non-coherently accumulated search grid. This option changes the stopping rule:

  • full_grid_search=false: after each dwell, accept the strongest peak if its detection statistic exceeds the threshold. Otherwise, continue until max_dwells is reached, then declare failure.
  • full_grid_search=true: accumulate exactly max_dwells dwells before testing the strongest peak for acceptance or rejection. An earlier threshold crossing does not end the search.

Despite its name, full_grid_search does not enlarge the Doppler range, reduce the Doppler step, or enable additional code-phase hypotheses. Both settings search the entire active grid in each dwell.

Waiting for all dwells can improve peak selection when noise or a temporary competing peak would otherwise cause an early acceptance. It does not guarantee better detection or tracking: a persistent competing peak can remain strongest, and a signal that fades or moves across grid cells during accumulation may produce a less useful final result. This option does not add motion compensation or resolve the inherent ambiguity of a BOC correlation function.

The cost is additional processing and a later handoff to tracking when a signal could have been accepted early. For max_dwells=N and a coherent integration time of T ms, a single-stage attempt processes N*T ms of input samples. If early acceptance would have occurred after k dwells, completing all dwells requires approximately N/k times as much correlation work. Actual elapsed time also depends on buffering, processing capacity, and scheduling. An attempt that never crosses the threshold already uses all N dwells with either setting. Accumulation reuses the existing grid, so this option does not require storing all dwells separately.

The following interactions apply:

  • max_dwells=1 gives the same behavior with either setting.
  • bit_transition_flag=true takes precedence: the block uses one double-length dwell per search stage, regardless of max_dwells or full_grid_search.
  • With make_two_steps=true, each stage accumulates max_dwells dwells. If the coarse stage succeeds, the refinement stage starts a fresh accumulation; a successful two-stage attempt processes 2*N*T ms of input samples.
  • When the Doppler search is narrowed (see Reduced Doppler search), the reduced grid remains in use. full_grid_search changes the dwell count, not the searched Doppler range.
  • Both blocking=true and blocking=false support this option. Moving the work to a separate thread does not eliminate the additional correlation work.
  • The existing pfa-derived or manually configured threshold is retained. The option changes when that threshold is tested; it does not recalibrate it.

Enable this option selectively when stable peak selection matters more than the earliest possible handoff to tracking, and compare acquisition success, subsequent tracking lock, and CPU load with representative recordings. Keeping the default is appropriate when rapid acquisition of strong signals is the priority.

For example, this Galileo E1 pilot configuration accumulates five 4 ms dwells (20 ms of input samples) before making a single-stage decision:

Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
Acquisition_1B.acquire_pilot=true
Acquisition_1B.coherent_integration_time_ms=4
Acquisition_1B.doppler_max=5000
Acquisition_1B.doppler_step=125
Acquisition_1B.pfa=1e-7
Acquisition_1B.max_dwells=5
Acquisition_1B.full_grid_search=true

This option is supported by the implementations whose parameter tables below include full_grid_search.

The implementations whose parameter tables below include full_grid_search and reference_bin_min_sidelobes share a PCPS acquisition block (CPU or CUDA) that can search any number of Doppler bins, from a single one up to the full configured grid, centered at a Doppler value \(f_c\) provided by the receiver. Without prior knowledge, the search covers the full grid of \(N = \lceil 2 \cdot \text{doppler_max} / \text{doppler_step} \rceil\) bins centered at \(f_c = 0\) Hz. The receiver narrows it when the Doppler shift is already known or can be predicted:

  • In multi-frequency configurations, the Doppler measured by a channel tracking the same satellite in the primary band is projected to the secondary band (see Self-assistance in multi-frequency receivers), and a single bin is searched. This is controlled by GNSS-SDR.assist_dual_frequency_acq. A single signal can opt out of this narrowing with Acquisition_XX.dual_freq_assisted_doppler_narrowing=false (it defaults to true): its searches are then always performed over the full grid centered at \(0\) Hz, while the other secondary bands remain assisted. Only the projected Doppler is discarded: with GNSS-SDR.assist_dual_frequency_acq=true, the secondary band still waits until the satellite is tracked in the primary band, and searches for that same satellite. This is mainly intended for characterizing the unassisted acquisition performance of a given band without disabling the assistance for the rest of the receiver. The parameter is read from the role the block was configured with, so it can also be set on a per-channel role (e.g., Acquisition_L50.dual_freq_assisted_doppler_narrowing=false) when those are in use (see Channels).
  • Without dual-frequency assistance, if GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible, the Doppler can be predicted from its ephemeris or almanac (see Doppler prediction from ephemeris and almanac). This is always done in the primary band, and in a secondary band only if Acquisition_XX.alm_ephe_assisted_doppler_narrowing=true (it defaults to false). This parameter can also be set on a per-channel role. With a position fix no older than one second, a single bin is searched. Before the first fix, and only if GNSS-SDR.doppler_prediction_before_fix=true, the prediction carries a Doppler uncertainty of \(U\) Hz derived from the configured clock and velocity bounds, and \(M = 1 + 2 \lceil U / \text{doppler_step} \rceil\) bins are searched. If \(M > 1\) and \(M \geq N\), the narrowing brings no benefit, and the full grid centered at \(0\) Hz is searched instead. \(N\) and \(M\) take into account the --doppler_max and --doppler_step command-line overrides.

Otherwise, the full grid is searched.

The \(M\) candidate bins are placed symmetrically around \(f_c\), with the \(k\)-th bin (\(k = 0, \ldots, M-1\)) at

\[f_k = f_c + \left(k - \left\lfloor \frac{M-1}{2} \right\rfloor \right) \cdot \text{doppler_step}~,\]

so a single-bin search tests exactly \(f_c\), and with an even \(M\) the extra bin falls on the positive side. For instance, doppler_max=5000 and doppler_step=250 give \(N = 40\) bins, from \(-4750\) Hz to \(+5000\) Hz.

If pfa is set, the detection threshold is recomputed for the number of candidate bins actually searched every time that number changes, so the configured probability of false alarm refers to the current search instead of the full grid. A manually configured threshold is used as is.

With pfa set, the test statistic normalizes the correlation peak by a noise power estimate taken from a Doppler bin assumed to contain no signal. In a full grid, this is the bin located \(\lfloor N/2 \rfloor\) bins away from the peak (wrapping around the grid). That bin is replaced by dedicated noise-reference bins, computed in addition to the candidates, in these cases:

  • The search is narrowed (\(M < N\)). Reference bins are then always computed, even without pfa, although only the CFAR statistic uses them.
  • The full grid is searched, pfa is set, and \(\lfloor N/2 \rfloor \cdot \text{doppler_step} < (\text{reference_bin_min_sidelobes} + 0.5) / T_{int}\), where \(T_{int}\) is the coherent integration time in seconds (the Doppler sidelobes of the correlation are spaced approximately \(1/T_{int}\) Hz apart). For instance, with the default reference_bin_min_sidelobes=4, the threshold is \(4500\) Hz for \(T_{int} = 1\) ms and \(1125\) Hz for \(T_{int} = 4\) ms.

With a single candidate bin, one reference bin is computed at \(f_c + \text{doppler_max}\). With more candidates, two reference bins are computed, at \(f_c + \text{doppler_max}\) and \(f_c - \text{doppler_max}\), and the statistic uses the one on the opposite side of \(f_c\) from the strongest candidate, so the reference never lies next to a signal near the edge of the search range. Reference bins are never placed beyond \(\pm\)doppler_max from \(f_c\), even when that separation does not reach the reference_bin_min_sidelobes target, because the configured doppler_max is the range for which the rest of the acquisition chain is designed, and noise samples taken outside it may be distorted by filtering.

Searching only a few Doppler bins is not statistically free: both the pfa-based threshold calibration and the noise estimate rely on fewer independent hypotheses than a full-grid search, so the detection is less statistically robust than with the full grid.

For example, consider GPS L5 in a multi-frequency receiver:

Acquisition_L5.implementation=GPS_L5i_PCPS_Acquisition
Acquisition_L5.coherent_integration_time_ms=1
Acquisition_L5.doppler_max=3000
Acquisition_L5.doppler_step=250
Acquisition_L5.pfa=0.01
Acquisition_L5.reference_bin_min_sidelobes=4

As a secondary band, most L5 searches are narrowed to a single bin by the assistance from L1 C/A, with the noise reference at \(f_c + 3000\) Hz. When L5 is searched without assistance, the full grid has \(N = 24\) bins, and \(\lfloor 24/2 \rfloor \cdot 250 = 3000\) Hz does not reach the \(4500\) Hz target for \(T_{int} = 1\) ms, so two reference bins are added at \(\pm 3000\) Hz from \(f_c\). Setting reference_bin_min_sidelobes=2 lowers the target to \(2500\) Hz, and the full grid then takes its reference from within the grid. Adding Acquisition_L5.dual_freq_assisted_doppler_narrowing=false would make every L5 search use this full grid, even when the satellite is already tracked in L1 C/A.

GPS L1 C/A signal acquisition

Implementation: GPS_L1_CA_PCPS_Acquisition

The Parallel Code Phase Search (PCPS) algorithm is described as follows:

  • Require: Input signal buffer \(\mathbf{x}_{\text{IN}}\) of \(K\) complex samples, provided by the Signal Conditioner; on-memory FFT of the local replica, \(D[k]=FFT_{K}\left\{d[k]\right\}\); acquisition threshold \(\gamma\); freq. span \([f_{min}\; f_{max}]\); freq. step \(f_{step}\).
  • Ensure: Decision positive or negative signal acquisition. In the case of positive detection, it provides coarse estimations of code phase \(\hat{\tau}_{acq}\) and Doppler shift \(\hat{f}_{\!D_{acq}}\) to the Tracking block.
  1. Compute input signal power estimation: \(\hat{P}_{in} = \frac{1}{K}\sum_{k=0}^{K-1}\left|x_{\text{IN}}[k]\right|^2\).

  2. for \(\check{f}_D=f_{min}\) to \(\check{f}_D = f_{max}\) in \(f_{step}\) steps:
    • Carrier wipe-off: \(x[k] = x_{\text{IN}}[k] \cdot e^{-(j2\pi \check{f}_D k T_s)}\), for \(k = 0,...,K-1\).
    • Compute \(X[k] = \text{FFT}_{K}\left\{ x[k]\right\}\).
    • Compute \(Y[k] = X[k] \cdot D[k]\), for \(k = 0,...,K-1\).
    • Compute \(R_{xd}(\check{f}_D, \boldsymbol{\tau}) = \frac{1}{K^2}\text{IFFT}_{K}\left\{Y[k]\right\}\).
  3. end for

  4. Search maximum and its indices in the search grid: \(\left\{S_{max}, f_i, \tau_j \right\} \quad \Leftarrow \quad \max_{f,\tau}\left|R_{xd}(f,\tau)\right|^2\)

  5. Compute the GLRT function with normalized variance: \(\Gamma_{\text{GLRT}} = \frac{2\cdot K \cdot S_{max}}{\hat{P}_{in}}\)

  6. if \(\Gamma_{\text{GLRT}}>\gamma\)
    • Declare positive acquisition and provide \(\hat{f}_{\!D_{acq}} = f_i\) and \(\hat{\tau}_{acq} = \tau_j\).
  7. else
    • Declare negative acquisition.
  8. endif

The computation of the Fast Fourier Transform and its inverse (second and fourth steps inside the for loop) are performed by means of GNU Radio wrappers of the FFTW library, an efficient implementation for computing the discrete Fourier transform, whereas the products (first and third steps in the for loop) are implemented with the Vector-Optimized Library of Kernels (VOLK), which generates processor-specific Single-Input Multiple-Data (SIMD) assembly instructions that take advantage of parallel computing techniques and allow writing efficient and portable code.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation GPS_L1_CA_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_G_1C_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: GPS_L1_CA_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GPS L1 CHANNELS ############
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition_1C.doppler_max=5000
Acquisition_1C.doppler_step=250
Acquisition_1C.pfa=0.01
Acquisition_1C.coherent_integration_time_ms=1
Acquisition_1C.max_dwells=1

Implementation: GPS_L1_CA_PCPS_Acquisition_Fine_Doppler

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation GPS_L1_CA_PCPS_Acquisition_Fine_Doppler Mandatory
item_type [gr_complex]: Set the sample data type expected at the block input. Only gr_complex is defined in this version. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to \(5000\) Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./acquisition.dat Optional

Acquisition implementation: GPS_L1_CA_PCPS_Acquisition_Fine_Doppler.

Example:

;######### ACQUISITION CONFIG FOR GPS L1 CHANNELS ############
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler
Acquisition_1C.threshold=0.007
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=500
Acquisition_1C.max_dwells=10

Implementation: GPS_L1_CA_PCPS_Tong_Acquisition

On top of the PCPS Algorithm (or any other providing the same outputs), we could integrate results from more than one consecutive code periods in order to enhance the acquisition sensitivity, understood as the minimum signal power at which a receiver can correctly identify the presence of a particular satellite signal in the incoming RF signal within a given time-out interval.

This is the case of the Tong detector3, a sequential variable dwell time detector with a reasonable computation burden and proves good for acquiring signals with low \(C/N_0\) levels. During the signal search, the up/down counter \(\mathcal{K}\) is incremented by one if the correlation peak value exceeds the threshold, otherwise it is decremented by one. If the counter has reached the maximum count value \(A\), the signal is declared ‘present’ and the search is terminated. Similarly, if the counter contents reach zero, the signal is declared ‘absent’ and the search is terminated. So that the Tong detector is not trapped into an extended dwell in the same cell, under certain poor signal conditions, another counter (\(\mathcal{K}_{max}\)) sets the limit on the maximum number of dwells.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation GPS_L1_CA_PCPS_Tong_Acquisition Mandatory
item_type [gr_complex]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
tong_init_val Initial value of the Tong counter \(\mathcal{K}\). It defaults to 1. Optional
tong_max_val Count value \(A\) that, if reached by counter \(\mathcal{K}\), declares a signal as present. It defaults to 2. Optional
tong_max_dwells Maximum number of dwells in a search \(\mathcal{K}_{max}\). It defaults to tong_max_val \(+1\). Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./acquisition.dat Optional

Acquisition implementation: GPS_L1_CA_PCPS_Tong_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GPS L1 CHANNELS ############
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Tong_Acquisition
Acquisition_1C.pfa=0.0001
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=250
Acquisition_1C.tong_init_val=2
Acquisition_1C.tong_max_val=10
Acquisition_1C.tong_max_dwells=20

Galileo E1 signal acquisition

The Galileo E1 Open Service signal can be written as:4

\[\begin{eqnarray} s^{\text{(Gal E1)}}_{T}(t)& = &\frac{1}{\sqrt{2}} \Big( e_{E1B}(t) \left(\alpha sc_A(t) + \beta sc_B(t) \right)~ + \nonumber \\ {} & {} & -~e_{E1C}(t) \left(\alpha sc_A(t) - \beta sc_B(t) \right) \Big)~, \end{eqnarray}\]

where \(sc_A(t)\) and \(sc_B(t)\) are the subcarriers defined as \(sc_A(t) = \text{sign}\Big(\sin(2\pi f_{s,E1A}t) \Big)\) and \(sc_B(t) = \text{sign}\Big(\sin(2\pi f_{s, E1B}t) \Big)\), with \(f_{s,E1A}=1.023\) MHz and \(f_{s, E1B}=6.138\) MHz.

Channel B contains the I/NAV type of navigation message, \(D_{I/NAV}\), and can be expressed as:

\[\begin{equation} e_{E1B}(t) = \sum_{l=-\infty}^{+\infty} D_{\text{I/NAV}} \Big[ [l]_{4092}\Big] \oplus C_{E1B}\Big[|l|_{4092}\Big] \cdot p(t - lT_{c,E1B})~. \end{equation}\]

In the case of channel C, it is a pilot (dataless) channel with a secondary code with a length of 100 ms, forming a tiered code:

\[\!\!\!\!\!\!\!\!\!\!\!\begin{equation} e_{E1C}(t) =\!\! \sum_{m=-\infty}^{+\infty}\!C_{E1Cs}\Big[|m|_{25}\Big] \oplus \sum_{l=1}^{4092}C_{E1Cp}\Big[ l \Big] \cdot p(t \! - \! mT_{c,E1Cs} \! - \! lT_{c,E1Cp})~, \end{equation}\]

with \(T_{c,E1B}=T_{c,E1Cp}=\frac{1}{1.023}\) \(\mu\)s and \(T_{c,E1Cs}=4\) ms.

Implementation: Galileo_E1_PCPS_Ambiguous_Acquisition

This implementation permits the configuration of the shape of the local replica \(d[k]\), allowing for simplifications that reduce the computational load. As shown in the figure below, in narrowband receivers the CBOC waveform can be substituted by a sinBOC modulation with a very small performance penalty5. For the E1B signal component, the reference signals available in this implementation are:

\[\begin{equation} d_{E1B}^{(\text{CBOC})}[n] = \sum_{l=-\infty}^{+\infty} C_{E1B}\Big[|l|_{4092}\Big] p(t - lT_{c,E1B}) \cdot \left( \alpha sc_A[n] + \beta sc_B[n] \right) \end{equation}\]

or

\[\begin{equation} \label{eq:dE1BsinBOC} d_{E1B}^{(\text{sinBOC})}[n] = \sum_{l=-\infty}^{+\infty} C_{E1B}\Big[|l|_{4092}\Big] p(t - lT_{c,E1B}) sc_A[n]~, \end{equation}\]

while for E1C, users can choose among:

\[\begin{eqnarray} d_{E1C}^{(\text{CBOC})}[n] & = &\sum_{m=-\infty}^{+\infty} \sum_{l=1}^{4092}\! C_{E1Cp}\Big[ l \Big] \! \cdot \! p[n\! -\! mT_{c,E1Cs} - lT_{c,E1Cp}] \cdot \nonumber \\ {} & {} & \cdot \left( \alpha sc_A[n] + \beta sc_B[n] \right) \end{eqnarray}\]

or

\[\!\!\!\!\begin{equation} d_{E1C}^{(\text{sinBOC})}[n] = \! \sum_{m=-\infty}^{+\infty} \! \sum_{l=1}^{4092}C_{E1Cp}\Big[ l \Big] \! \cdot \! p[n \! - \! mT_{c,E1Cs} \! - \! lT_{c,E1Cp}] \cdot sc_A[n]~. \end{equation}\]

The simpler sinBOC options are chosen by default. CBOC versions can be set by Acquisition_1B.cboc=true. Next figure plots the shape of the cross-correlation function for those waveforms:

Rxd Normalized \(\left|R_{xd}\left(\check{f}_D = f_D, \tau \right) \right|^2\) for different sampling rates and local reference waveforms2.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation Galileo_E1_PCPS_Ambiguous_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
cboc [true, false]: If set to true the algorithm uses the CBOC waveform , if set to false a simpler sinBOC waveform is used. It defaults to false. Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. Should be a multiple of 4 ms. It defaults to 4 ms. Optional
acquire_pilot [true, false]: If set to true, sets the receiver to acquire the E1C pilot component. It defaults to false (that is, the receiver is set to acquire the E1B data component). Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_E_1B_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: Galileo_E1_PCPS_Ambiguous_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E1 CHANNELS ############
Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
Acquisition_1B.pfa=0.01
Acquisition_1B.doppler_max=5000
Acquisition_1B.doppler_step=250
Acquisition_1B.coherent_integration_time_ms=4
Acquisition_1B.max_dwells=1

Implementation: Galileo_E1_PCPS_Tong_Ambiguous_Acquisition

The Tong detector3 is a sequential variable dwell time detector with a reasonable computation burden that proves good for acquiring signals with low \(C/N_0\) levels. During the signal search, the up/down counter \(\mathcal{K}\) is incremented by one if the correlation peak value exceeds the threshold, otherwise it is decremented by one. If the counter has reached the maximum count value \(A\), the signal is declared ‘present’ and the search is terminated. Similarly, if the counter contents reach zero, the signal is declared ‘absent’ and the search is terminated. So that the Tong detector is not trapped into an extended dwell in the same cell, under certain poor signal conditions, another counter (\(\mathcal{K}_{max}\)) sets the limit on the maximum number of dwells.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation Galileo_E1_PCPS_Tong_Ambiguous_Acquisition Mandatory
item_type [gr_complex]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. Should be a multiple of 4 ms. It defaults to 4 ms. Optional
tong_init_val Initial value of the Tong counter \(\mathcal{K}\). It defaults to 1. Optional
tong_max_val Count value \(A\) that, if reached by counter \(\mathcal{K}\), declares a signal as present. It defaults to 2. Optional
tong_max_dwells Maximum number of dwells in a search \(\mathcal{K}_{max}\). It defaults to tong_max_val \(+1\). Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./acquisition.dat Optional

Acquisition implementation: Galileo_E1_PCPS_Tong_Ambiguous_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E1 CHANNELS ############
Acquisition_1B.implementation=Galileo_E1_PCPS_Tong_Ambiguous_Acquisition
Acquisition_1B.pfa=0.0001
Acquisition_1B.doppler_max=10000
Acquisition_1B.doppler_step=250
Acquisition_1B.tong_init_val=2
Acquisition_1B.tong_max_val=10
Acquisition_1B.tong_max_dwells=20

Glonass L1 C/A signal acquisition

Implementation: GLONASS_L1_CA_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation GLONASS_L1_CA_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_R_1G_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: GLONASS_L1_CA_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GLONASS L1 CHANNELS ############
Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition
Acquisition_1G.doppler_max=8000
Acquisition_1G.doppler_step=250
Acquisition_1G.pfa=0.0001

BeiDou B1I signal acquisition

Implementation: BEIDOU_B1I_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation BEIDOU_B1I_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_C_B1_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: BEIDOU_B1I_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR BeiDou B1I CHANNELS ############
Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition
Acquisition_B1.doppler_max=5000
Acquisition_B1.doppler_step=250
Acquisition_B1.pfa=0.01
Acquisition_B1.coherent_integration_time_ms=1
Acquisition_B1.max_dwells=1

BeiDou B1C signal acquisition

The BeiDou B1C signal, transmitted by BeiDou-3 MEO and IGSO satellites and centered at \(1575.42\) MHz, is composed of a data component (carrying the B-CNAV1 navigation message and modulated with BOC(1,1)) and a pilot component (modulated with QMBOC(6,1,4/33)), with a data:pilot power ratio of 1:3. Both components use ranging codes of \(10230\) chips transmitted at \(1.023\) Mchip/s, thus with a period of \(10\) ms, and the pilot component is further modulated by a secondary code of \(1800\) chips. GNSS-SDR identifies the BeiDou B1C signal with the identifier 1D.

Implementation: BEIDOU_B1C_PCPS_Ambiguous_Acquisition

By default, this implementation acquires the pilot component, which carries \(3/4\) of the total signal power, using a QMBOC(6,1,4/33) local replica. The acquire_pilot and qmboc parameters allow acquiring the data component instead, and/or using a simpler sinBOC(1,1) local replica.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation BEIDOU_B1C_PCPS_Ambiguous_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
acquire_pilot [true, false]: If set to true, the receiver is set to acquire the B1C pilot component. If set to false, the receiver is set to acquire the B1C data component. It defaults to true. Optional
qmboc [true, false]: If set to true, the algorithm uses a QMBOC(6,1,4/33) local replica; if set to false, a simpler sinBOC(1,1) local replica is used. It defaults to true. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It must be a multiple of the code period (\(10\) ms). It defaults to 10 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a symbol transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_C_1D_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: BEIDOU_B1C_PCPS_Ambiguous_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR BeiDou B1C CHANNELS ############
Acquisition_1D.implementation=BEIDOU_B1C_PCPS_Ambiguous_Acquisition
Acquisition_1D.item_type=gr_complex
Acquisition_1D.acquire_pilot=true
Acquisition_1D.qmboc=true
Acquisition_1D.pfa=0.005
Acquisition_1D.doppler_max=5000
Acquisition_1D.doppler_step=25

QZSS L1 C/A signal acquisition

Implementation: QZSS_L1_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation QZSS_L1_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_J_J1_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: QZSS_L1_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR QZSS L1 CHANNELS ############
Acquisition_J1.implementation=QZSS_L1_PCPS_Acquisition
Acquisition_J1.doppler_max=5000
Acquisition_J1.doppler_step=250
Acquisition_J1.pfa=0.01
Acquisition_J1.coherent_integration_time_ms=1
Acquisition_J1.max_dwells=1

SBAS L1 signal acquisition

The SBAS L1 signal, broadcast at \(1575.42\) MHz by the geostationary satellites of the different satellite-based augmentation systems (EGNOS, WAAS, …), uses Gold codes of \(1023\) chips transmitted at \(1.023\) Mchip/s (thus with a period of \(1\) ms, the same code family as GPS L1 C/A), and carries navigation data at \(250\) bits per second, convolutionally encoded at rate \(1/2\) into a \(500\) symbols-per-second data channel. There is no pilot component. GNSS-SDR identifies the SBAS L1 signal with the identifier S1, and supports PRNs \(120\) to \(138\) (RTCA DO-229, Table A-1).

Since the transmitting satellites are geostationary, the Doppler shift observed by a static receiver is below \(\pm 100\) Hz, so the acquisition search space mainly needs to accommodate the frequency error of the receiver’s reference oscillator (about \(1.6\) kHz per ppm of error at the L1 frequency): with an accurate or calibrated reference, doppler_max can be reduced well below the default, speeding up acquisition.

Implementation: SBAS_L1_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation SBAS_L1_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_S_S1_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: SBAS_L1_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR SBAS L1 CHANNELS ############
Acquisition_S1.implementation=SBAS_L1_PCPS_Acquisition
Acquisition_S1.item_type=gr_complex
Acquisition_S1.pfa=0.01
Acquisition_S1.doppler_max=5000
Acquisition_S1.doppler_step=250

GPS L2CM signal acquisition

Implementation: GPS_L2_M_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation GPS_L2_M_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 20 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_G_2S_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: GPS_L2_M_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GPS L2C CHANNELS ############
Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition
Acquisition_2S.item_type=cshort
Acquisition_2S.pfa=0.01
Acquisition_2S.doppler_max=6000
Acquisition_2S.doppler_step=60
Acquisition_2S.coherent_integration_time_ms=20
Acquisition_2S.max_dwells=2

Glonass L2 C/A signal acquisition

Implementation: GLONASS_L2_CA_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation GLONASS_L2_CA_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_R_2G_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: GLONASS_L2_CA_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GLONASS L2 CHANNELS ############
Acquisition_2G.implementation=GLONASS_L2_CA_PCPS_Acquisition
Acquisition_2G.doppler_max=8000
Acquisition_2G.doppler_step=250
Acquisition_2G.pfa=0.0001

Galileo E6 signal acquisition

Implementation: Galileo_E6_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation Galileo_E6_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to \(5000\) Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_E_E6_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: Galileo_E6_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E6 CHANNELS ############
Acquisition_E6.implementation=Galileo_E6_PCPS_Acquisition
Acquisition_E6.item_type=gr_complex
Acquisition_E6.pfa=0.001;
Acquisition_E6.blocking=true
Acquisition_E6.doppler_max=5000
Acquisition_E6.doppler_step=250
Acquisition_E6.dump=false
Acquisition_E6.dump_filename=./acq_e6_dump
Acquisition_E6.dump_channel=0

GPS L5 signal acquisition

Implementation: GPS_L5i_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation GPS_L5i_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_G_L5_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: GPS_L5i_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GPS L5 CHANNELS ############
Acquisition_L5.implementation=GPS_L5i_PCPS_Acquisition
Acquisition_L5.item_type=cshort
Acquisition_L5.pfa=0.01
Acquisition_L5.doppler_max=6000
Acquisition_L5.doppler_step=60
Acquisition_L5.coherent_integration_time_ms=4
Acquisition_L5.max_dwells=1

Galileo E5a signal acquisition

Implementation: Galileo_E5a_Pcps_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation Galileo_E5a_Pcps_Acquisition Mandatory
item_type [gr_complex, cshort]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
acquire_pilot [true, false]: If set to true, it enables the Acquisition of the pilot Galileo E5a signal (Q component). It defaults to false. Optional
acquire_iq [true, false]: If set to true, it enables the Acquisition of both, data (I) and pilot (Q) components of the Galileo E5a signal and overrides acquire_pilot to false. It is suitable for increasing the acquisition sensitivity of the receiver. It defaults to false. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_E_5X_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: Galileo_E5a_Pcps_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E5a CHANNELS ############
Acquisition_5X.implementation=Galileo_E5a_Pcps_Acquisition
Acquisition_5X.doppler_max=8000
Acquisition_5X.doppler_step=250
Acquisition_5X.pfa=0.01
Acquisition_5X.coherent_integration_time_ms=1
Acquisition_5X.max_dwells=1

Implementation: Galileo_E5a_Noncoherent_IQ_Acquisition_CAF

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
Parameter Description Required
implementation Galileo_E5a_Noncoherent_IQ_Acquisition_CAF Mandatory
item_type [gr_complex]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
CAF_window_hz Resolves Doppler ambiguity by averaging the specified bandwidth (in Hz) in the winner code delay. If set to \(0\), the CAF filter is deactivated. Recommended value: \(3000\) Hz. It defaults to 0 Hz. Optional
Zero_padding If set to a \(1\), it avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. It defaults to \(0\) (i.e., deactivated). Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. Should be a 3 ms or less. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./acquisition.dat Optional

Acquisition implementation: Galileo_E5a_Noncoherent_IQ_Acquisition_CAF.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E5a CHANNELS ############
Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF
Acquisition_5X.pfa=0.01
Acquisition_5X.doppler_max=10000
Acquisition_5X.doppler_step=250

BeiDOu B3I signal acquisition

Implementation: BEIDOU_B3I_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation BEIDOU_B3I_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_C_B3_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: BEIDOU_B3I_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR BeiDou B3I CHANNELS ############
Acquisition_B3.implementation=BEIDOU_B3I_PCPS_Acquisition
Acquisition_B3.item_type=cshort
Acquisition_B3.pfa=0.01
Acquisition_B3.doppler_max=6000
Acquisition_B3.doppler_step=60
Acquisition_B3.coherent_integration_time_ms=4
Acquisition_B3.max_dwells=1

QZSS L5 signal acquisition

Implementation: QZSS_L5i_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation QZSS_L5i_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_J_J5_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: QZSS_L5i_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR QZSS L5 CHANNELS ############
Acquisition_J5.implementation=QZSS_L5i_PCPS_Acquisition
Acquisition_J5.item_type=cshort
Acquisition_J5.pfa=0.01
Acquisition_J5.doppler_max=6000
Acquisition_J5.doppler_step=60
Acquisition_J5.coherent_integration_time_ms=4
Acquisition_J5.max_dwells=1

BeiDou B2a signal acquisition

The BeiDou B2a signal, transmitted by BeiDou-3 MEO and IGSO satellites and centered at \(1176.45\) MHz, is composed of a data component (carrying the B-CNAV2 navigation message) and a pilot component, in phase quadrature and with equal power, both modulated with BPSK(10). Both components use ranging codes of \(10230\) chips transmitted at \(10.23\) Mchip/s, thus with a period of \(1\) ms. The data component is further modulated by a \(5\)-chip secondary code, and the pilot component by a \(100\)-chip secondary code. GNSS-SDR identifies the BeiDou B2a signal with the identifier 5D.

Implementation: BEIDOU_B2A_PCPS_Acquisition

By default, this implementation acquires the pilot component of the B2a signal, using a local replica of its primary ranging code. The acquire_pilot parameter allows acquiring the data component instead, and acquire_iq allows using a complex local replica that carries the data primary code in phase and the pilot primary code in quadrature, as in the transmitted signal. Both primary codes have the same length and chip rate, so the code phase and Doppler estimates delivered to the Tracking block are valid for either component.

Pilot and joint data+pilot acquisition are only present in the next branch of the upstream repository, and will be included in the next GNSS-SDR stable release. GNSS-SDR v0.0.22 always acquires the data component.

Since the primary code period is \(1\) ms and both components carry a secondary code at \(1\) kchip/s, the default coherent integration time of \(1\) ms keeps at most one secondary code chip transition within each correlation; sensitivity can be increased by accumulating non-coherent dwells with max_dwells.

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation BEIDOU_B2A_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort, cbyte]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
acquire_pilot [true, false]: If set to true, the receiver is set to acquire the B2a pilot component (Q). If set to false, the receiver is set to acquire the B2a data component (I). It defaults to true. Only present in the next branch. Optional
acquire_iq [true, false]: If set to true, the receiver is set to acquire both the data (I) and pilot (Q) components of the B2a signal with a single complex local replica, and acquire_pilot is ignored. It defaults to false. Only present in the next branch. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present). Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a symbol transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_C_5D_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: BEIDOU_B2A_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR BeiDou B2a CHANNELS ############
Acquisition_5D.implementation=BEIDOU_B2A_PCPS_Acquisition
Acquisition_5D.item_type=gr_complex
Acquisition_5D.acquire_pilot=true
Acquisition_5D.coherent_integration_time_ms=1
Acquisition_5D.pfa=0.01
Acquisition_5D.doppler_max=5000
Acquisition_5D.doppler_step=250
Acquisition_5D.max_dwells=8

Galileo E5b signal acquisition

Implementation: Galileo_E5b_PCPS_Acquisition

This implementation accepts the following parameters:

Global Parameter Description Required
GNSS-SDR.internal_fs_sps Input sample rate to the processing channels, in samples per second. Mandatory
GNSS-SDR.use_acquisition_resampler [true, false]: If set to true, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at GNSS-SDR.internal_fs_sps. All the required setup is configured automatically. It defaults to false. Optional
Parameter Description Required
implementation Galileo_E5b_PCPS_Acquisition Mandatory
item_type [gr_complex, cshort]: Set the sample data type expected at the block input. It defaults to gr_complex. Optional
doppler_max Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. Optional
doppler_step Frequency step in the search grid, in Hz. It defaults to 500 Hz. Optional
threshold Decision threshold \(\gamma\) from which a signal will be considered present. It defaults to \(0.0\) (i.e., all signals are declared present), Optional
pfa If defined, it supersedes the threshold value and computes a new threshold \(\gamma_{pfa}\) based on the Probability of False Alarm. It defaults to \(0.0\) (i.e., not set). Optional
coherent_integration_time_ms Set the integration time \(T_{int}\), in ms. It defaults to 1 ms. Optional
bit_transition_flag [true, false]: If set to true, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of max_dwells. It defaults to false. Optional
max_dwells Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. Optional
full_grid_search [true, false]: If set to true, accumulate all max_dwells non-coherent dwells before accepting or rejecting the strongest peak. It defaults to false (early acceptance). Ignored when bit_transition_flag=true. See Completing all non-coherent dwells for availability, tradeoffs, and interactions. Optional
reference_bin_min_sidelobes Target separation, in Doppler sidelobes of the correlation, between the searched bins and the noise-reference bin of the CFAR statistic. It only decides whether a full-grid search needs dedicated reference bins, and never moves them beyond \(\pm\)doppler_max. Only used if pfa is set. It defaults to \(4\). See Reduced Doppler search for availability and details. Optional
dual_freq_assisted_doppler_narrowing [true, false]: If set to false, the Doppler projected from the primary band when GNSS-SDR.assist_dual_frequency_acq=true is discarded for this signal, which is then always searched over the full Doppler grid centered at \(0\) Hz. The secondary band still waits for the satellite to be tracked in the primary band; only the Doppler assistance is dropped. It defaults to true. See Reduced Doppler search for availability and details. Optional
alm_ephe_assisted_doppler_narrowing [true, false]: If set to true, and this signal is searched as a secondary band without dual-frequency assistance (e.g., with GNSS-SDR.assist_dual_frequency_acq=false), its Doppler search is narrowed around the value predicted from the ephemeris or almanac of the satellite, provided that GNSS-SDR.enable_visibility_aware_search=true and the satellite is classified as visible. It has no effect when this signal is searched as the primary band, where the prediction is always used. It defaults to false. See Reduced Doppler search for availability and details. Optional
repeat_satellite [true, false]: If set to true, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to false. Optional
blocking [true, false]: If set to false, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, results then depend on the processing speed of the host computer, so do not use this option for file processing, unless GNSS-SDR.deterministic=true (see deterministic processing, only present in the next branch), which makes the results independent of this parameter. It defaults to true. Optional
acquire_pilot [true, false]: If set to true, it enables the Acquisition of the pilot Galileo E5b signal (Q component). It defaults to false. Optional
acquire_iq [true, false]: If set to true, it enables the Acquisition of both, data (I) and pilot (Q) components of the Galileo E5b signal and overrides acquire_pilot to false. It is suitable for increasing the acquisition sensitivity of the receiver. It defaults to false. Optional
make_two_steps [true, false]: If set to true, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to false. Optional
second_nbins If make_two_steps is set to true, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. Optional
second_doppler_step If make_two_steps is set to true, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. Optional
dump [true, false]: If set to true, it enables the Acquisition internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to ./acquisition, so files with name ./acquisition_E_7X_ch_N_K_sat_P.mat (where N is the channel number defined by dump_channel, K is the dump number, and P is the targeted satellite’s PRN number) will be generated. Optional
dump_channel If dump is set to true, channel number from which internal data will be stored. It defaults to 0. Optional

Acquisition implementation: Galileo_E5b_PCPS_Acquisition.

Example:

;######### ACQUISITION CONFIG FOR GALILEO E5a CHANNELS ############
Acquisition_7X.implementation=Galileo_E5b_PCPS_Acquisition
Acquisition_7X.item_type=gr_complex
Acquisition_7X.pfa=0.01
Acquisition_7X.blocking=true
Acquisition_7X.doppler_max=5000
Acquisition_7X.doppler_step=250
Acquisition_7X.max_dwells=1
Acquisition_7X.dump=false
Acquisition_7X.dump_filename=./acq_dump_x5

Plotting results with MATLAB/Octave

Some Acquisition block implementations are able to dump intermediate results of the channel indicated by the dump_channel parameter in MATLAB Level 5 MAT-file v7.3 file format (.mat files), which can be opened in MATLAB/Octave.

The list of output variables contained in each .mat file is the following:

  • acq_delay_samples: Coarse estimation of time delay, in number of samples from the start of the pseudorandom code.
  • acq_doppler_hz: Coarse estimation of Doppler shift, in Hz.
  • acq_grid: Acquisition search grid. Each column corresponds to a Doppler bin. In dumps generated since GNSS-SDR v0.0.22, the Doppler bins can be followed by up to two noise-reference columns (see doppler_num_candidates).
  • positive_acq: 1 if there has been a positive acquisition, 0 for no detection.
  • doppler_center: Center of the Doppler search grid, in Hz. It is 0 unless the search was centered on a Doppler estimation obtained in another frequency band or predicted from ephemeris or almanac data (see Reduced Doppler search).
  • doppler_max: Maximum Doppler shift in the search grid. In dumps generated since GNSS-SDR v0.0.22, it is the offset of the first Doppler bin with respect to doppler_center, so that the Doppler of column \(i\) (starting at \(0\)) is doppler_center - doppler_max + doppler_step * i. Since the bins are centered at doppler_center (see Reduced Doppler search), this value can differ from the configured doppler_max (for instance, it is \(0\) for a single-bin search).
  • doppler_narrowed: 1 if fewer Doppler bins than the full configured grid were searched (see Reduced Doppler search), 0 otherwise.
  • doppler_num_candidates: Number of leading columns of acq_grid that are Doppler bins. The remaining columns, if any (up to two), are noise-reference bins at doppler_center \(\pm\) the configured maximum Doppler, which are not on the Doppler axis defined by doppler_max and doppler_step and must be skipped when plotting.
  • doppler_step: Doppler step in the search grid.
  • input_power: Input signal power.
  • num_dwells: Number of dwells performed in non-coherent acquisition.
  • PRN: Satellite ID.
  • sample_counter: Sample counter from receiver’s start.
  • test_statistic: Result of the test statistic.
  • threshold: Threshold above which a signal is declared present.

Example:

Assuming that you are processing GPS L1 C/A signals, and you have included the following lines in your configuration file:

Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
;... (other parameters) ...
Acquisition_1C.dump=true
Acquisition_1C.dump_filename=acq_dump
Acquisition_1C.dump_channel=0

Then, after the processing, you will get .mat files storing the results obtained from the Acquisition block corresponding to channel 0.

The acquisition grid can be plotted from MATLAB or Octave as:

load('./acq_dump_G_1C_ch_0_1_sat_1.mat')
f = -doppler_max:doppler_step:(doppler_max-doppler_step);
tau = linspace(0, 1023, size(acq_grid, 1));
surf(f, tau, acq_grid); xlabel('Doppler [Hz]'); ylabel('Delay [chips]');

You should see something like:

Positive acquisition Positive acquisition.

or

Negative acquisition Negative acquisition.

If the dump contains the doppler_num_candidates variable (see above), only its first doppler_num_candidates columns must be plotted, and the Doppler axis becomes:

n = double(doppler_num_candidates);
f = double(doppler_center) - double(doppler_max) + (0:n-1) * double(doppler_step);
tau = linspace(0, 1023, size(acq_grid, 1));
surf(f, tau, acq_grid(:, 1:n)); xlabel('Doppler [Hz]'); ylabel('Delay [chips]');

A single-bin search (n equal to \(1\)) cannot be drawn with surf; plot acq_grid(:, 1) against tau instead. The scripts utils/matlab/plot_acq_grid.m and utils/python/plot_acq_grid.py provided with the source code automate this plotting, skip the noise-reference columns, and decode all dump variants.

 


References

  1. K. Borre, D. M. Akos, N. Bertelsen, P. Rinder, S. H. Jensen, A Software-Defined GPS and Galileo Receiver. A Single-Frequency Approach, 1st edition, Boston: Birkhäuser, November 2006. ↩

  2. C. Fernández-Prades, J. Arribas, L. Esteve-Elfau, D. Pubill, P. Closas, An Open Source Galileo E1 Software Receiver, in Proceedings of the 6th ESA Workshop on Satellite Navigation Technologies (NAVITEC 2012), 5-7 December 2012, ESTEC, Noordwijk, The Netherlands. ↩ ↩2

  3. P. S. Tong, A Suboptimum Synchronization Procedure for Pseudo Noise Communication Systems, in Proc. of National Telecommunications Conference, pp. 26D1-26D5. Atlanta, GA, Nov. 1973. ↩ ↩2

  4. European GNSS (Galileo) Open Service Signal In Space Interface Control Document, Issue 2.1, Nov. 2023. ↩

  5. J. Zhang, E. S. Lohan, Galileo E1 and E5a Link-Level Performances in Single and Multipath Channels. In G. Giambene, C. Sacchi, Eds., Personal Satellite Services, Third International ICST Conference PSATS 2011, Málaga, Spain, February 2011. ↩

Updated: