mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-16 04:05:46 +00:00
added the reading of the high_dyn parameter in the tracking adapter modules + added max_num_acqs parameter for the FPGA acquisition.
This commit is contained in:
parent
d8e8b8a5a0
commit
eda3f21fb9
@ -181,7 +181,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga(
|
|||||||
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
||||||
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
||||||
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
||||||
|
acq_parameters.max_num_acqs = configuration_->property(role + ".max_num_acqs", 2);
|
||||||
// reference for the FPGA FFT-IFFT attenuation factor
|
// reference for the FPGA FFT-IFFT attenuation factor
|
||||||
acq_parameters.total_block_exp = configuration_->property(role + ".total_block_exp", 12);
|
acq_parameters.total_block_exp = configuration_->property(role + ".total_block_exp", 12);
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf
|
|||||||
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
||||||
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
||||||
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
||||||
|
acq_parameters.max_num_acqs = configuration_->property(role + ".max_num_acqs", 2);
|
||||||
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
||||||
|
|
||||||
channel_ = 0;
|
channel_ = 0;
|
||||||
|
@ -164,7 +164,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga(
|
|||||||
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
||||||
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
||||||
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
||||||
|
acq_parameters.max_num_acqs = configuration_->property(role + ".max_num_acqs", 2);
|
||||||
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
||||||
|
|
||||||
channel_ = 0;
|
channel_ = 0;
|
||||||
|
@ -167,7 +167,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga(
|
|||||||
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
|
||||||
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
|
||||||
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
|
||||||
|
acq_parameters.max_num_acqs = configuration_->property(role + ".max_num_acqs", 2);
|
||||||
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
acquisition_fpga_ = pcps_make_acquisition_fpga(acq_parameters);
|
||||||
|
|
||||||
channel_ = 0;
|
channel_ = 0;
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
|
|
||||||
#define AQ_DOWNSAMPLING_DELAY 40 // delay due to the downsampling filter in the acquisition
|
#define AQ_DOWNSAMPLING_DELAY 40 // delay due to the downsampling filter in the acquisition
|
||||||
|
|
||||||
|
|
||||||
pcps_acquisition_fpga_sptr pcps_make_acquisition_fpga(pcpsconf_fpga_t conf_)
|
pcps_acquisition_fpga_sptr pcps_make_acquisition_fpga(pcpsconf_fpga_t conf_)
|
||||||
{
|
{
|
||||||
return pcps_acquisition_fpga_sptr(new pcps_acquisition_fpga(std::move(conf_)));
|
return pcps_acquisition_fpga_sptr(new pcps_acquisition_fpga(std::move(conf_)));
|
||||||
@ -79,6 +78,8 @@ pcps_acquisition_fpga::pcps_acquisition_fpga(pcpsconf_fpga_t conf_)
|
|||||||
|
|
||||||
d_doppler_max = acq_parameters.doppler_max;
|
d_doppler_max = acq_parameters.doppler_max;
|
||||||
|
|
||||||
|
d_max_num_acqs = acq_parameters.max_num_acqs;
|
||||||
|
|
||||||
acquisition_fpga = std::make_shared<Fpga_Acquisition>(acq_parameters.device_name, acq_parameters.code_length, acq_parameters.doppler_max, d_fft_size,
|
acquisition_fpga = std::make_shared<Fpga_Acquisition>(acq_parameters.device_name, acq_parameters.code_length, acq_parameters.doppler_max, d_fft_size,
|
||||||
|
|
||||||
acq_parameters.fs_in, acq_parameters.sampled_ms, acq_parameters.select_queue_Fpga, acq_parameters.all_fft_codes, acq_parameters.excludelimit);
|
acq_parameters.fs_in, acq_parameters.sampled_ms, acq_parameters.select_queue_Fpga, acq_parameters.all_fft_codes, acq_parameters.excludelimit);
|
||||||
@ -293,28 +294,27 @@ void pcps_acquisition_fpga::set_active(bool active)
|
|||||||
if (d_test_statistics > d_threshold)
|
if (d_test_statistics > d_threshold)
|
||||||
{
|
{
|
||||||
d_doppler_center_step_two = static_cast<float>(d_gnss_synchro->Acq_doppler_hz);
|
d_doppler_center_step_two = static_cast<float>(d_gnss_synchro->Acq_doppler_hz);
|
||||||
//acquisition_fpga->open_device();
|
|
||||||
//boost::chrono::high_resolution_clock::time_point start = boost::chrono::high_resolution_clock::now();
|
|
||||||
|
|
||||||
acquisition_core(d_num_doppler_bins_step2, d_doppler_step2, d_doppler_center_step_two - static_cast<float>(floor(d_num_doppler_bins_step2 / 2.0)) * d_doppler_step2);
|
uint32_t num_second_acq = 1;
|
||||||
|
|
||||||
acquisition_fpga->close_device();
|
while (num_second_acq < d_max_num_acqs)
|
||||||
|
|
||||||
if (d_test_statistics > d_threshold)
|
|
||||||
{
|
{
|
||||||
d_active = false;
|
acquisition_core(d_num_doppler_bins_step2, d_doppler_step2, d_doppler_center_step_two - static_cast<float>(floor(d_num_doppler_bins_step2 / 2.0)) * d_doppler_step2);
|
||||||
send_positive_acquisition();
|
if (d_test_statistics > d_threshold)
|
||||||
d_state = 0; // Positive acquisition
|
{
|
||||||
|
d_active = false;
|
||||||
|
send_positive_acquisition();
|
||||||
|
d_state = 0; // Positive acquisition
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
num_second_acq = num_second_acq + 1;
|
||||||
}
|
}
|
||||||
else
|
if (d_test_statistics <= d_threshold)
|
||||||
{
|
{
|
||||||
d_state = 0;
|
d_state = 0;
|
||||||
d_active = false;
|
d_active = false;
|
||||||
send_negative_acquisition();
|
send_negative_acquisition();
|
||||||
}
|
}
|
||||||
//boost::chrono::nanoseconds ns = boost::chrono::high_resolution_clock::now() - start;
|
|
||||||
//auto val = ns.count();
|
|
||||||
//std::cout << "Count ns: " << val << std::endl;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -323,6 +323,41 @@ void pcps_acquisition_fpga::set_active(bool active)
|
|||||||
d_active = false;
|
d_active = false;
|
||||||
send_negative_acquisition();
|
send_negative_acquisition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// if (d_test_statistics > d_threshold)
|
||||||
|
// {
|
||||||
|
// d_doppler_center_step_two = static_cast<float>(d_gnss_synchro->Acq_doppler_hz);
|
||||||
|
// //acquisition_fpga->open_device();
|
||||||
|
// //boost::chrono::high_resolution_clock::time_point start = boost::chrono::high_resolution_clock::now();
|
||||||
|
//
|
||||||
|
// acquisition_core(d_num_doppler_bins_step2, d_doppler_step2, d_doppler_center_step_two - static_cast<float>(floor(d_num_doppler_bins_step2 / 2.0)) * d_doppler_step2);
|
||||||
|
//
|
||||||
|
// acquisition_fpga->close_device();
|
||||||
|
//
|
||||||
|
// if (d_test_statistics > d_threshold)
|
||||||
|
// {
|
||||||
|
// d_active = false;
|
||||||
|
// send_positive_acquisition();
|
||||||
|
// d_state = 0; // Positive acquisition
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// d_state = 0;
|
||||||
|
// d_active = false;
|
||||||
|
// send_negative_acquisition();
|
||||||
|
// }
|
||||||
|
// //boost::chrono::nanoseconds ns = boost::chrono::high_resolution_clock::now() - start;
|
||||||
|
// //auto val = ns.count();
|
||||||
|
// //std::cout << "Count ns: " << val << std::endl;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// acquisition_fpga->close_device();
|
||||||
|
// d_state = 0;
|
||||||
|
// d_active = false;
|
||||||
|
// send_negative_acquisition();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,6 +72,7 @@ typedef struct
|
|||||||
uint32_t num_doppler_bins_step2;
|
uint32_t num_doppler_bins_step2;
|
||||||
float doppler_step2;
|
float doppler_step2;
|
||||||
bool repeat_satellite;
|
bool repeat_satellite;
|
||||||
|
uint32_t max_num_acqs;
|
||||||
} pcpsconf_fpga_t;
|
} pcpsconf_fpga_t;
|
||||||
|
|
||||||
class pcps_acquisition_fpga;
|
class pcps_acquisition_fpga;
|
||||||
@ -130,6 +131,7 @@ private:
|
|||||||
uint32_t d_num_doppler_bins_step2;
|
uint32_t d_num_doppler_bins_step2;
|
||||||
float d_doppler_step2;
|
float d_doppler_step2;
|
||||||
float d_doppler_center_step_two;
|
float d_doppler_center_step_two;
|
||||||
|
uint32_t d_max_num_acqs;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~pcps_acquisition_fpga();
|
~pcps_acquisition_fpga();
|
||||||
|
@ -70,6 +70,7 @@ GalileoE1DllPllVemlTrackingFpga::GalileoE1DllPllVemlTrackingFpga(
|
|||||||
trk_param_fpga.dump_filename = dump_filename;
|
trk_param_fpga.dump_filename = dump_filename;
|
||||||
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
||||||
trk_param_fpga.dump_mat = dump_mat;
|
trk_param_fpga.dump_mat = dump_mat;
|
||||||
|
trk_param_fpga.high_dyn = configuration->property(role + ".high_dyn", false);
|
||||||
if (configuration->property(role + ".smoother_length", 10) < 1)
|
if (configuration->property(role + ".smoother_length", 10) < 1)
|
||||||
{
|
{
|
||||||
trk_param_fpga.smoother_length = 1;
|
trk_param_fpga.smoother_length = 1;
|
||||||
|
@ -67,6 +67,7 @@ GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga(
|
|||||||
trk_param_fpga.dump_filename = dump_filename;
|
trk_param_fpga.dump_filename = dump_filename;
|
||||||
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
||||||
trk_param_fpga.dump_mat = dump_mat;
|
trk_param_fpga.dump_mat = dump_mat;
|
||||||
|
trk_param_fpga.high_dyn = configuration->property(role + ".high_dyn", false);
|
||||||
if (configuration->property(role + ".smoother_length", 10) < 1)
|
if (configuration->property(role + ".smoother_length", 10) < 1)
|
||||||
{
|
{
|
||||||
trk_param_fpga.smoother_length = 1;
|
trk_param_fpga.smoother_length = 1;
|
||||||
|
@ -64,7 +64,7 @@ GpsL1CaDllPllTrackingFpga::GpsL1CaDllPllTrackingFpga(
|
|||||||
int32_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000);
|
int32_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000);
|
||||||
int32_t fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
|
int32_t fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
|
||||||
trk_param_fpga.fs_in = fs_in;
|
trk_param_fpga.fs_in = fs_in;
|
||||||
|
trk_param_fpga.high_dyn = configuration->property(role + ".high_dyn", false);
|
||||||
if (configuration->property(role + ".smoother_length", 10) < 1)
|
if (configuration->property(role + ".smoother_length", 10) < 1)
|
||||||
{
|
{
|
||||||
trk_param_fpga.smoother_length = 1;
|
trk_param_fpga.smoother_length = 1;
|
||||||
|
@ -74,6 +74,7 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga(
|
|||||||
trk_param_fpga.dump_filename = dump_filename;
|
trk_param_fpga.dump_filename = dump_filename;
|
||||||
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
bool dump_mat = configuration->property(role + ".dump_mat", true);
|
||||||
trk_param_fpga.dump_mat = dump_mat;
|
trk_param_fpga.dump_mat = dump_mat;
|
||||||
|
trk_param_fpga.high_dyn = configuration->property(role + ".high_dyn", false);
|
||||||
if (configuration->property(role + ".smoother_length", 10) < 1)
|
if (configuration->property(role + ".smoother_length", 10) < 1)
|
||||||
{
|
{
|
||||||
trk_param_fpga.smoother_length = 1;
|
trk_param_fpga.smoother_length = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user