GNSS-SDR  0.0.21
An Open Source GNSS Software Defined Receiver
acq_conf_fpga.h
Go to the documentation of this file.
1 /*!
2  * \file acq_conf_fpga.h
3  * \brief Class that contains all the configuration parameters for generic
4  * acquisition block based on the PCPS algorithm running in the FPGA.
5  * \author Marc Majoral, 2022. mmajoral(at)cttc.es
6  *
7  * -----------------------------------------------------------------------------
8  *
9  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
10  * This file is part of GNSS-SDR.
11  *
12  * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
13  * SPDX-License-Identifier: GPL-3.0-or-later
14  *
15  * -----------------------------------------------------------------------------
16  */
17 
18 #ifndef GNSS_SDR_ACQ_CONF_FPGA_H
19 #define GNSS_SDR_ACQ_CONF_FPGA_H
20 
22 #include <gnuradio/gr_complex.h>
23 #include <cstdint>
24 #include <string>
25 #include <utility> // for std::move, std::pair
26 #include <vector> // for std::vector
27 
28 /** \addtogroup Acquisition
29  * \{ */
30 /** \addtogroup acquisition_libs acquisition_libs
31  * Library with utilities for GNSS signal acquisition
32  * \{ */
33 
34 
36 {
37 public:
38  Acq_Conf_Fpga() = default;
39 
40  void SetFromConfiguration(const ConfigurationInterface *configuration, const std::string &role, uint32_t blk_exp, double code_chips_per_sec, double num_chips_per_code);
41 
42  bool ConfigureAutomaticResampler(std::vector<std::pair<uint32_t, uint32_t>> downsampling_filter_specs, uint32_t max_FFT_size, double opt_freq);
43 
44  bool Is_acq_config_valid(uint32_t max_FFT_size) const;
45 
46  /* PCPS Acquisition configuration */
47  std::string device_name = "uio0";
48  double code_rate_cps;
49  double code_length_chips;
50  float doppler_step{250.0};
51  float doppler_step2{125.0};
52  float threshold{0.0};
53 
54  int64_t fs_in{4000000LL};
55  int64_t resampled_fs{4000000LL};
56 
57  uint32_t *all_fft_codes = nullptr; // pointer to memory that contains all the code ffts
58  uint32_t num_doppler_bins_step2{4U};
59  uint32_t downsampling_filter_num{0U};
60  uint32_t downsampling_factor{1U};
61  uint32_t downsampling_filter_delay{0U};
62  uint32_t total_block_exp{13U};
63  uint32_t excludelimit{5U};
64  uint32_t max_num_acqs{2U};
65  uint32_t fft_size{1U};
66  uint32_t code_length{16000U};
67  int32_t doppler_max{5000};
68 
69  bool make_2_steps{false};
70  bool enable_zero_padding{false};
71  bool repeat_satellite{false};
72 
73 private:
74  const std::string acquisition_device_name = "acquisition_S00_AXI"; // UIO device name
75 };
76 
77 
78 /** \} */
79 /** \} */
80 #endif // GNSS_SDR_ACQ_CONF_FPGA_H
This abstract class represents an interface to configuration parameters.
This class represents an interface to configuration parameters.