mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-07-08 21:12:56 +00:00
updated doxygen comments
This commit is contained in:
parent
6ee9fedd76
commit
f30d8a60ec
@ -50,13 +50,23 @@ class ConfigurationInterface;
|
|||||||
class GalileoE1PcpsAmbiguousAcquisitionFpga : public AcquisitionInterface
|
class GalileoE1PcpsAmbiguousAcquisitionFpga : public AcquisitionInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GalileoE1PcpsAmbiguousAcquisitionFpga(ConfigurationInterface* configuration,
|
GalileoE1PcpsAmbiguousAcquisitionFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~GalileoE1PcpsAmbiguousAcquisitionFpga() = default;
|
~GalileoE1PcpsAmbiguousAcquisitionFpga() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
@ -70,14 +80,32 @@ public:
|
|||||||
return "Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga";
|
return "Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
size_t item_size() override
|
size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -150,6 +178,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
void stop_acquisition() override;
|
void stop_acquisition() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set resampler latency
|
||||||
|
*/
|
||||||
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -164,7 +195,6 @@ private:
|
|||||||
|
|
||||||
ConfigurationInterface* configuration_;
|
ConfigurationInterface* configuration_;
|
||||||
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
||||||
size_t item_size_;
|
|
||||||
bool acquire_pilot_;
|
bool acquire_pilot_;
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::weak_ptr<ChannelFsm> channel_fsm_;
|
std::weak_ptr<ChannelFsm> channel_fsm_;
|
||||||
|
@ -50,13 +50,23 @@ class ConfigurationInterface;
|
|||||||
class GalileoE5aPcpsAcquisitionFpga : public AcquisitionInterface
|
class GalileoE5aPcpsAcquisitionFpga : public AcquisitionInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GalileoE5aPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
GalileoE5aPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~GalileoE5aPcpsAcquisitionFpga() = default;
|
~GalileoE5aPcpsAcquisitionFpga() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
@ -70,14 +80,32 @@ public:
|
|||||||
return "Galileo_E5a_Pcps_Acquisition_Fpga";
|
return "Galileo_E5a_Pcps_Acquisition_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -158,7 +186,7 @@ public:
|
|||||||
void stop_acquisition() override;
|
void stop_acquisition() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Sets the resampler latency to account it in the acquisition code delay estimation
|
* \brief Set resampler latency
|
||||||
*/
|
*/
|
||||||
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
||||||
|
|
||||||
@ -174,7 +202,6 @@ private:
|
|||||||
|
|
||||||
ConfigurationInterface* configuration_;
|
ConfigurationInterface* configuration_;
|
||||||
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
||||||
size_t item_size_;
|
|
||||||
std::string item_type_;
|
std::string item_type_;
|
||||||
std::string dump_filename_;
|
std::string dump_filename_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
|
@ -52,13 +52,23 @@ class ConfigurationInterface;
|
|||||||
class GpsL1CaPcpsAcquisitionFpga : public AcquisitionInterface
|
class GpsL1CaPcpsAcquisitionFpga : public AcquisitionInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GpsL1CaPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
GpsL1CaPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~GpsL1CaPcpsAcquisitionFpga() = default;
|
~GpsL1CaPcpsAcquisitionFpga() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
@ -72,14 +82,32 @@ public:
|
|||||||
return "GPS_L1_CA_PCPS_Acquisition_Fpga";
|
return "GPS_L1_CA_PCPS_Acquisition_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -152,6 +180,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
void stop_acquisition() override;
|
void stop_acquisition() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set Resampler Latency
|
||||||
|
*/
|
||||||
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -168,7 +199,6 @@ private:
|
|||||||
|
|
||||||
ConfigurationInterface* configuration_;
|
ConfigurationInterface* configuration_;
|
||||||
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::weak_ptr<ChannelFsm> channel_fsm_;
|
std::weak_ptr<ChannelFsm> channel_fsm_;
|
||||||
uint32_t doppler_max_;
|
uint32_t doppler_max_;
|
||||||
|
@ -50,13 +50,23 @@ class ConfigurationInterface;
|
|||||||
class GpsL5iPcpsAcquisitionFpga : public AcquisitionInterface
|
class GpsL5iPcpsAcquisitionFpga : public AcquisitionInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GpsL5iPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
GpsL5iPcpsAcquisitionFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~GpsL5iPcpsAcquisitionFpga() = default;
|
~GpsL5iPcpsAcquisitionFpga() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
@ -70,14 +80,32 @@ public:
|
|||||||
return "GPS_L5i_PCPS_Acquisition_Fpga";
|
return "GPS_L5i_PCPS_Acquisition_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -150,6 +178,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
void stop_acquisition() override;
|
void stop_acquisition() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set resampler latency
|
||||||
|
*/
|
||||||
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -165,7 +196,6 @@ private:
|
|||||||
|
|
||||||
ConfigurationInterface* configuration_;
|
ConfigurationInterface* configuration_;
|
||||||
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
pcps_acquisition_fpga_sptr acquisition_fpga_;
|
||||||
size_t item_size_;
|
|
||||||
std::string item_type_;
|
std::string item_type_;
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::weak_ptr<ChannelFsm> channel_fsm_;
|
std::weak_ptr<ChannelFsm> channel_fsm_;
|
||||||
|
@ -89,6 +89,9 @@ pcps_acquisition_fpga_sptr pcps_make_acquisition_fpga(pcpsconf_fpga_t conf_);
|
|||||||
class pcps_acquisition_fpga
|
class pcps_acquisition_fpga
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~pcps_acquisition_fpga() = default;
|
~pcps_acquisition_fpga() = default;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -116,7 +119,6 @@ public:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Sets local code for PCPS acquisition algorithm.
|
* \brief Sets local code for PCPS acquisition algorithm.
|
||||||
* \param code - Pointer to the PRN code.
|
|
||||||
*/
|
*/
|
||||||
void set_local_code();
|
void set_local_code();
|
||||||
|
|
||||||
|
@ -176,11 +176,6 @@ void Fpga_Acquisition::run_acquisition(void)
|
|||||||
std::cout << "acquisition module Interrupt number " << irq_count << std::endl;
|
std::cout << "acquisition module Interrupt number " << irq_count << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// nbytes = TEMP_FAILURE_RETRY(write(d_fd, reinterpret_cast<void *>(&disable_int), sizeof(int32_t)));
|
|
||||||
// if (nbytes != sizeof(int32_t))
|
|
||||||
// {
|
|
||||||
// std::cerr << "Error disabling interruptions in the FPGA." << std::endl;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -213,7 +208,7 @@ void Fpga_Acquisition::set_doppler_sweep(uint32_t num_sweeps, uint32_t doppler_s
|
|||||||
|
|
||||||
void Fpga_Acquisition::configure_acquisition()
|
void Fpga_Acquisition::configure_acquisition()
|
||||||
{
|
{
|
||||||
//Fpga_Acquisition::open_device();
|
//Fpga_Acquisition::();
|
||||||
d_map_base[0] = d_select_queue;
|
d_map_base[0] = d_select_queue;
|
||||||
d_map_base[1] = d_vector_length;
|
d_map_base[1] = d_vector_length;
|
||||||
d_map_base[2] = d_nsamples;
|
d_map_base[2] = d_nsamples;
|
||||||
@ -258,18 +253,6 @@ void Fpga_Acquisition::read_acquisition_results(uint32_t *max_index,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Fpga_Acquisition::block_samples()
|
|
||||||
{
|
|
||||||
d_map_base[14] = 1; // block the samples
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Fpga_Acquisition::unblock_samples()
|
|
||||||
{
|
|
||||||
d_map_base[14] = 0; // unblock the samples
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Fpga_Acquisition::close_device()
|
void Fpga_Acquisition::close_device()
|
||||||
{
|
{
|
||||||
auto *aux = const_cast<uint32_t *>(d_map_base);
|
auto *aux = const_cast<uint32_t *>(d_map_base);
|
||||||
|
@ -45,6 +45,10 @@
|
|||||||
class Fpga_Acquisition
|
class Fpga_Acquisition
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
Fpga_Acquisition(
|
Fpga_Acquisition(
|
||||||
std::string device_name,
|
std::string device_name,
|
||||||
uint32_t nsamples,
|
uint32_t nsamples,
|
||||||
@ -56,14 +60,29 @@ public:
|
|||||||
uint32_t *all_fft_codes,
|
uint32_t *all_fft_codes,
|
||||||
uint32_t excludelimit);
|
uint32_t excludelimit);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~Fpga_Acquisition() = default;
|
~Fpga_Acquisition() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Select the code with the chosen PRN
|
||||||
|
*/
|
||||||
bool set_local_code(uint32_t PRN);
|
bool set_local_code(uint32_t PRN);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Configure the doppler sweep parameters in the FPGA
|
||||||
|
*/
|
||||||
void set_doppler_sweep(uint32_t num_sweeps, uint32_t doppler_step, int32_t doppler_min);
|
void set_doppler_sweep(uint32_t num_sweeps, uint32_t doppler_step, int32_t doppler_min);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Run the acquisition process in the FPGA
|
||||||
|
*/
|
||||||
void run_acquisition(void);
|
void run_acquisition(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Read the results of the acquisition process
|
||||||
|
*/
|
||||||
void read_acquisition_results(
|
void read_acquisition_results(
|
||||||
uint32_t *max_index,
|
uint32_t *max_index,
|
||||||
float *firstpeak,
|
float *firstpeak,
|
||||||
@ -73,10 +92,6 @@ public:
|
|||||||
uint32_t *doppler_index,
|
uint32_t *doppler_index,
|
||||||
uint32_t *total_blk_exp);
|
uint32_t *total_blk_exp);
|
||||||
|
|
||||||
void block_samples();
|
|
||||||
|
|
||||||
void unblock_samples();
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set maximum Doppler grid search
|
* \brief Set maximum Doppler grid search
|
||||||
* \param doppler_max - Maximum Doppler shift considered in the grid search [Hz].
|
* \param doppler_max - Maximum Doppler shift considered in the grid search [Hz].
|
||||||
@ -101,18 +116,33 @@ public:
|
|||||||
void reset_acquisition(void);
|
void reset_acquisition(void);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief read the scaling factor that has been used by the FFT-IFFT
|
* \brief Read the scaling factor that has been used by the FFT-IFFT
|
||||||
*/
|
*/
|
||||||
void read_fpga_total_scale_factor(uint32_t *total_scale_factor, uint32_t *fw_scale_factor);
|
void read_fpga_total_scale_factor(uint32_t *total_scale_factor, uint32_t *fw_scale_factor);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the block exponent of the FFT in the FPGA.
|
||||||
|
*/
|
||||||
void set_block_exp(uint32_t total_block_exp);
|
void set_block_exp(uint32_t total_block_exp);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Write the PRN code in the FPGA
|
||||||
|
*/
|
||||||
void write_local_code(void);
|
void write_local_code(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Write the acquisition parameters into the FPGA
|
||||||
|
*/
|
||||||
void configure_acquisition(void);
|
void configure_acquisition(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Open the device driver
|
||||||
|
*/
|
||||||
void open_device();
|
void open_device();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Close the device driver
|
||||||
|
*/
|
||||||
void close_device();
|
void close_device();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -39,11 +39,27 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Class that controls the switch in the FPGA, which connects the FPGA acquisition and multicorrelator modules to
|
||||||
|
* either the DMA or the Analog Front-End.
|
||||||
|
*/
|
||||||
class Fpga_Switch
|
class Fpga_Switch
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
Fpga_Switch(const std::string& device_name);
|
Fpga_Switch(const std::string& device_name);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~Fpga_Switch();
|
~Fpga_Switch();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This function configures the switch in th eFPGA
|
||||||
|
*/
|
||||||
void set_switch_position(int32_t switch_position);
|
void set_switch_position(int32_t switch_position);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -51,32 +51,62 @@ class ConfigurationInterface;
|
|||||||
class GalileoE1DllPllVemlTrackingFpga : public TrackingInterface
|
class GalileoE1DllPllVemlTrackingFpga : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GalileoE1DllPllVemlTrackingFpga(ConfigurationInterface* configuration,
|
GalileoE1DllPllVemlTrackingFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
virtual ~GalileoE1DllPllVemlTrackingFpga();
|
virtual ~GalileoE1DllPllVemlTrackingFpga();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga"
|
/*!
|
||||||
|
* \brief Returns "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga"
|
||||||
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga";
|
return "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
|
size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -91,9 +121,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
void start_tracking() override;
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Stop running tracking
|
* \brief Start the tracking process in the FPGA
|
||||||
|
*/
|
||||||
|
void start_tracking() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Stop the tracking process in the FPGA
|
||||||
*/
|
*/
|
||||||
void stop_tracking() override;
|
void stop_tracking() override;
|
||||||
|
|
||||||
@ -105,7 +139,6 @@ private:
|
|||||||
static const int32_t LOCAL_CODE_FPGA_CORRELATOR_SELECT_COUNT = 0x20000000; // flag that selects the writing of the pilot code in the FPGA (as opposed to the data code)
|
static const int32_t LOCAL_CODE_FPGA_CORRELATOR_SELECT_COUNT = 0x20000000; // flag that selects the writing of the pilot code in the FPGA (as opposed to the data code)
|
||||||
|
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
uint32_t in_streams_;
|
uint32_t in_streams_;
|
||||||
|
@ -44,32 +44,61 @@ class ConfigurationInterface;
|
|||||||
class GalileoE5aDllPllTrackingFpga : public TrackingInterface
|
class GalileoE5aDllPllTrackingFpga : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GalileoE5aDllPllTrackingFpga(ConfigurationInterface* configuration,
|
GalileoE5aDllPllTrackingFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
virtual ~GalileoE5aDllPllTrackingFpga();
|
virtual ~GalileoE5aDllPllTrackingFpga();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "Galileo_E5a_DLL_PLL_Tracking_Fpga"
|
/*!
|
||||||
|
* \brief Returns "Galileo_E5a_DLL_PLL_Tracking_Fpga"
|
||||||
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "Galileo_E5a_DLL_PLL_Tracking_Fpga";
|
return "Galileo_E5a_DLL_PLL_Tracking_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
|
size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -83,9 +112,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
void start_tracking() override;
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Stop running tracking
|
* \brief Start the tracking process in the FPGA
|
||||||
|
*/
|
||||||
|
void start_tracking() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Stop the tracking process in the FPGA
|
||||||
*/
|
*/
|
||||||
void stop_tracking() override;
|
void stop_tracking() override;
|
||||||
|
|
||||||
@ -98,7 +131,6 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
uint32_t in_streams_;
|
uint32_t in_streams_;
|
||||||
|
@ -49,32 +49,61 @@ class ConfigurationInterface;
|
|||||||
class GpsL1CaDllPllTrackingFpga : public TrackingInterface
|
class GpsL1CaDllPllTrackingFpga : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GpsL1CaDllPllTrackingFpga(ConfigurationInterface* configuration,
|
GpsL1CaDllPllTrackingFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
virtual ~GpsL1CaDllPllTrackingFpga();
|
virtual ~GpsL1CaDllPllTrackingFpga();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "GPS_L1_CA_DLL_PLL_Tracking_Fpga"
|
/*!
|
||||||
|
* \brief Returns "GPS_L1_CA_DLL_PLL_Tracking_Fpga"
|
||||||
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GPS_L1_CA_DLL_PLL_Tracking_Fpga";
|
return "GPS_L1_CA_DLL_PLL_Tracking_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
|
size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -88,10 +117,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Start the tracking process in the FPGA
|
||||||
|
*/
|
||||||
void start_tracking() override;
|
void start_tracking() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Stop running tracking
|
* \brief Stop the tracking process in the FPGA
|
||||||
*/
|
*/
|
||||||
void stop_tracking() override;
|
void stop_tracking() override;
|
||||||
|
|
||||||
@ -105,7 +137,6 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
uint32_t in_streams_;
|
uint32_t in_streams_;
|
||||||
|
@ -50,32 +50,61 @@ class ConfigurationInterface;
|
|||||||
class GpsL5DllPllTrackingFpga : public TrackingInterface
|
class GpsL5DllPllTrackingFpga : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
GpsL5DllPllTrackingFpga(ConfigurationInterface* configuration,
|
GpsL5DllPllTrackingFpga(ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
virtual ~GpsL5DllPllTrackingFpga();
|
virtual ~GpsL5DllPllTrackingFpga();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Role
|
||||||
|
*/
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "GPS_L5_DLL_PLL_Tracking_Fpga"
|
/*!
|
||||||
|
* \brief Returns "GPS_L5_DLL_PLL_Tracking_Fpga"
|
||||||
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GPS_L5_DLL_PLL_Tracking_Fpga";
|
return "GPS_L5_DLL_PLL_Tracking_Fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
/*!
|
||||||
|
* \brief Returns size of lv_16sc_t
|
||||||
|
*/
|
||||||
|
size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Connect
|
||||||
|
*/
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disconnect
|
||||||
|
*/
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get left block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_left_block() override;
|
gr::basic_block_sptr get_left_block() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get right block
|
||||||
|
*/
|
||||||
gr::basic_block_sptr get_right_block() override;
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -89,9 +118,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
void start_tracking() override;
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Stop running tracking
|
* \brief Start the tracking process in the FPGA
|
||||||
|
*/
|
||||||
|
void start_tracking() override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Stop the tracking process in the FPGA
|
||||||
*/
|
*/
|
||||||
void stop_tracking() override;
|
void stop_tracking() override;
|
||||||
|
|
||||||
@ -104,7 +137,6 @@ private:
|
|||||||
static const int32_t LOCAL_CODE_FPGA_CORRELATOR_SELECT_COUNT = 0x20000000; // flag that selects the writing of the pilot code in the FPGA (as opposed to the data code)
|
static const int32_t LOCAL_CODE_FPGA_CORRELATOR_SELECT_COUNT = 0x20000000; // flag that selects the writing of the pilot code in the FPGA (as opposed to the data code)
|
||||||
|
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
uint32_t in_streams_;
|
uint32_t in_streams_;
|
||||||
|
@ -1851,10 +1851,10 @@ int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((un
|
|||||||
// this must be computed for the secondary prn code
|
// this must be computed for the secondary prn code
|
||||||
if (d_secondary)
|
if (d_secondary)
|
||||||
{
|
{
|
||||||
uint32_t first_length_secondary_code = d_current_integration_length_samples - (d_fpga_integration_period - 1) * static_cast<int32_t>(std::floor(T_prn_samples));
|
uint32_t first_prn_length = d_current_integration_length_samples - (d_fpga_integration_period - 1) * static_cast<int32_t>(std::floor(T_prn_samples));
|
||||||
uint32_t next_length_secondary_code = static_cast<int32_t>(std::floor(T_prn_samples));
|
uint32_t next_prn_length = static_cast<int32_t>(std::floor(T_prn_samples));
|
||||||
|
|
||||||
multicorrelator_fpga->update_secondary_code_length(first_length_secondary_code, next_length_secondary_code);
|
multicorrelator_fpga->update_prn_code_length(first_prn_length, next_prn_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform a correlation step
|
// perform a correlation step
|
||||||
@ -1898,10 +1898,10 @@ int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((un
|
|||||||
// this must be computed for the secondary prn code
|
// this must be computed for the secondary prn code
|
||||||
if (d_secondary)
|
if (d_secondary)
|
||||||
{
|
{
|
||||||
uint32_t first_length_secondary_code = d_current_integration_length_samples - (d_fpga_integration_period - 1) * static_cast<int32_t>(std::floor(T_prn_samples));
|
uint32_t first_prn_length = d_current_integration_length_samples - (d_fpga_integration_period - 1) * static_cast<int32_t>(std::floor(T_prn_samples));
|
||||||
uint32_t next_length_secondary_code = static_cast<int32_t>(std::floor(T_prn_samples));
|
uint32_t next_prn_length = static_cast<int32_t>(std::floor(T_prn_samples));
|
||||||
|
|
||||||
multicorrelator_fpga->update_secondary_code_length(first_length_secondary_code, next_length_secondary_code);
|
multicorrelator_fpga->update_prn_code_length(first_prn_length, next_prn_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform a correlation step
|
// perform a correlation step
|
||||||
|
@ -62,16 +62,45 @@ dll_pll_veml_tracking_fpga_sptr dll_pll_veml_make_tracking_fpga(const Dll_Pll_Co
|
|||||||
class dll_pll_veml_tracking_fpga : public gr::block
|
class dll_pll_veml_tracking_fpga : public gr::block
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~dll_pll_veml_tracking_fpga();
|
~dll_pll_veml_tracking_fpga();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the channel number and configure some multicorrelator parameters
|
||||||
|
*/
|
||||||
void set_channel(uint32_t channel);
|
void set_channel(uint32_t channel);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This function is used with two purposes:
|
||||||
|
* 1 -> To set the gnss_synchro
|
||||||
|
* 2 -> A set_gnss_synchro command with a valid PRN is received when the system is going to run
|
||||||
|
* acquisition with that PRN. We can use this command to pre-initialize tracking parameters and
|
||||||
|
* variables before the actual acquisition process takes place. In this way we minimize the
|
||||||
|
* latency between acquisition and tracking once the acquisition has been made.
|
||||||
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
|
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This function starts the tracking process
|
||||||
|
*/
|
||||||
void start_tracking();
|
void start_tracking();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This function sets a flag that makes general_work to stop in order to finish the tracking process.
|
||||||
|
*/
|
||||||
void stop_tracking();
|
void stop_tracking();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief General Work
|
||||||
|
*/
|
||||||
int general_work(int noutput_items, gr_vector_int &ninput_items,
|
int general_work(int noutput_items, gr_vector_int &ninput_items,
|
||||||
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
|
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This function disables the HW multicorrelator in the FPGA in order to stop the tracking process
|
||||||
|
*/
|
||||||
void reset(void);
|
void reset(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -491,10 +491,10 @@ void Fpga_Multicorrelator_8sc::set_secondary_code_lengths(uint32_t secondary_cod
|
|||||||
d_map_base[secondary_code_lengths_reg_addr] = secondary_code_length_1_minus_1 * 256 + secondary_code_length_0_minus_1;
|
d_map_base[secondary_code_lengths_reg_addr] = secondary_code_length_1_minus_1 * 256 + secondary_code_length_0_minus_1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fpga_Multicorrelator_8sc::update_secondary_code_length(uint32_t first_length_secondary_code, uint32_t next_length_secondary_code)
|
void Fpga_Multicorrelator_8sc::update_prn_code_length(uint32_t first_prn_length, uint32_t next_prn_length)
|
||||||
{
|
{
|
||||||
d_map_base[first_prn_length_minus_1_reg_addr] = first_length_secondary_code - 1;
|
d_map_base[first_prn_length_minus_1_reg_addr] = first_prn_length - 1;
|
||||||
d_map_base[next_prn_length_minus_1_reg_addr] = next_length_secondary_code - 1;
|
d_map_base[next_prn_length_minus_1_reg_addr] = next_prn_length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fpga_Multicorrelator_8sc::initialize_secondary_code(uint32_t secondary_code, std::string *secondary_code_string)
|
void Fpga_Multicorrelator_8sc::initialize_secondary_code(uint32_t secondary_code, std::string *secondary_code_string)
|
||||||
|
@ -50,29 +50,108 @@
|
|||||||
class Fpga_Multicorrelator_8sc
|
class Fpga_Multicorrelator_8sc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
Fpga_Multicorrelator_8sc(int32_t n_correlators, std::string device_name,
|
Fpga_Multicorrelator_8sc(int32_t n_correlators, std::string device_name,
|
||||||
uint32_t device_base, int32_t *ca_codes, int32_t *data_codes, uint32_t code_length_chips, bool track_pilot, uint32_t code_samples_per_chip);
|
uint32_t device_base, int32_t *ca_codes, int32_t *data_codes, uint32_t code_length_chips, bool track_pilot, uint32_t code_samples_per_chip);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Destructor
|
||||||
|
*/
|
||||||
~Fpga_Multicorrelator_8sc();
|
~Fpga_Multicorrelator_8sc();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Configure pointers to the FPGA multicorrelator results
|
||||||
|
*/
|
||||||
void set_output_vectors(gr_complex *corr_out, gr_complex *Prompt_Data);
|
void set_output_vectors(gr_complex *corr_out, gr_complex *Prompt_Data);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Configure the local code in the FPGA multicorrelator
|
||||||
|
*/
|
||||||
void set_local_code_and_taps(
|
void set_local_code_and_taps(
|
||||||
float *shifts_chips, float *prompt_data_shift, int32_t PRN);
|
float *shifts_chips, float *prompt_data_shift, int32_t PRN);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Configure code phase and code rate parameters in the FPGA
|
||||||
|
*/
|
||||||
void update_local_code();
|
void update_local_code();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Perform a multicorrelation
|
||||||
|
*/
|
||||||
void Carrier_wipeoff_multicorrelator_resampler(
|
void Carrier_wipeoff_multicorrelator_resampler(
|
||||||
float rem_carrier_phase_in_rad, float phase_step_rad,
|
float rem_carrier_phase_in_rad, float phase_step_rad,
|
||||||
float carrier_phase_rate_step_rad,
|
float carrier_phase_rate_step_rad,
|
||||||
float rem_code_phase_chips, float code_phase_step_chips,
|
float rem_code_phase_chips, float code_phase_step_chips,
|
||||||
float code_phase_rate_step_chips,
|
float code_phase_rate_step_chips,
|
||||||
int32_t signal_length_samples);
|
int32_t signal_length_samples);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Stop the correlation process in the FPGA and free code phase and code rate parameters
|
||||||
|
*/
|
||||||
bool free();
|
bool free();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set channel number and open the FPGA device driver
|
||||||
|
*/
|
||||||
void set_channel(uint32_t channel);
|
void set_channel(uint32_t channel);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the initial sample number where the tracking process begins
|
||||||
|
*/
|
||||||
void set_initial_sample(uint64_t samples_offset);
|
void set_initial_sample(uint64_t samples_offset);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Read the sample counter in the FPGA
|
||||||
|
*/
|
||||||
uint64_t read_sample_counter();
|
uint64_t read_sample_counter();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Start the tracking process in the FPGA
|
||||||
|
*/
|
||||||
void lock_channel(void);
|
void lock_channel(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief finish the tracking process in the FPGA
|
||||||
|
*/
|
||||||
void unlock_channel(void);
|
void unlock_channel(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the secondary code length in the FPGA. This is only used when extended coherent integration
|
||||||
|
* is enabled in the FPGA. If tracking the pilot is enabled then secondary_code_0_length is the length of the pilot
|
||||||
|
* secondary code and secondary_code_1_length is the length of the data secondary code. If tracking the pilot is disabled
|
||||||
|
* then secondary_code_0_length is the length of the data secondary code, and secondary_code_1_length must be set to zero.
|
||||||
|
*/
|
||||||
void set_secondary_code_lengths(uint32_t secondary_code_0_length, uint32_t secondary_code_1_length);
|
void set_secondary_code_lengths(uint32_t secondary_code_0_length, uint32_t secondary_code_1_length);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Initialize the secondary code in the FPGA. If tracking the pilot is enabled then the pilot secondary code is
|
||||||
|
* configured when secondary_code = 0 and the data secondary code is configured when secondary_code = 1. If tracking the
|
||||||
|
* pilot is disabled then the data secondary code is configured when secondary code = 0.
|
||||||
|
*/
|
||||||
void initialize_secondary_code(uint32_t secondary_code, std::string *secondary_code_string);
|
void initialize_secondary_code(uint32_t secondary_code, std::string *secondary_code_string);
|
||||||
void update_secondary_code_length(uint32_t first_length_secondary_code, uint32_t next_length_secondary_code);
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the PRN length in the FPGA in number of samples. This function is only used then extended coherent integration is enabled in the
|
||||||
|
* FPGA. The FPGA allows for the configuration of two PRN lengths. When the length of the extended coherent integration is bigger than the
|
||||||
|
* length of the PRN code, the FPGA uses the first_length_secondary_code as the length of the PRN code immediately following the beginning
|
||||||
|
* of the extended coherent integration, and the next_length_secondary_code as the length of the remaining PRN codes.
|
||||||
|
* The purpose of this is to have the option to allow the FPGA to compensate for a possible deviation between the nominal value of the PRN
|
||||||
|
* code length and the measured PRN code length in the PRN immediately following the start of the coherent integration only.
|
||||||
|
* If this option is not used then write the same value to first_length_secondary_code and next_length_secondary_code.
|
||||||
|
*/
|
||||||
|
void update_prn_code_length(uint32_t first_length_secondary_code, uint32_t next_length_secondary_code);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Enable the use of secondary codes in the FPGA
|
||||||
|
*/
|
||||||
void enable_secondary_codes();
|
void enable_secondary_codes();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Disable the use of secondary codes in the FPGA
|
||||||
|
*/
|
||||||
void disable_secondary_codes();
|
void disable_secondary_codes();
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user