mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Add work on Doppler rate
This commit is contained in:
parent
edf82644f2
commit
2b0e0f73ff
@ -394,6 +394,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl
|
|||||||
|
|
||||||
d_extend_correlation_symbols_count = 0;
|
d_extend_correlation_symbols_count = 0;
|
||||||
d_code_phase_step_chips = 0.0;
|
d_code_phase_step_chips = 0.0;
|
||||||
|
d_code_phase_rate_step_chips = 0.0;
|
||||||
d_carrier_phase_step_rad = 0.0;
|
d_carrier_phase_step_rad = 0.0;
|
||||||
d_rem_code_phase_chips = 0.0;
|
d_rem_code_phase_chips = 0.0;
|
||||||
d_K_blk_samples = 0.0;
|
d_K_blk_samples = 0.0;
|
||||||
@ -707,6 +708,7 @@ void dll_pll_veml_tracking::do_correlation_step(const gr_complex *input_samples)
|
|||||||
d_carrier_phase_step_rad,
|
d_carrier_phase_step_rad,
|
||||||
static_cast<float>(d_rem_code_phase_chips) * static_cast<float>(d_code_samples_per_chip),
|
static_cast<float>(d_rem_code_phase_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
static_cast<float>(d_code_phase_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
static_cast<float>(d_code_phase_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
|
static_cast<float>(d_code_phase_rate_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
trk_parameters.vector_length);
|
trk_parameters.vector_length);
|
||||||
|
|
||||||
// DATA CORRELATOR (if tracking tracks the pilot signal)
|
// DATA CORRELATOR (if tracking tracks the pilot signal)
|
||||||
@ -718,6 +720,7 @@ void dll_pll_veml_tracking::do_correlation_step(const gr_complex *input_samples)
|
|||||||
d_carrier_phase_step_rad,
|
d_carrier_phase_step_rad,
|
||||||
static_cast<float>(d_rem_code_phase_chips) * static_cast<float>(d_code_samples_per_chip),
|
static_cast<float>(d_rem_code_phase_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
static_cast<float>(d_code_phase_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
static_cast<float>(d_code_phase_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
|
static_cast<float>(d_code_phase_rate_step_chips) * static_cast<float>(d_code_samples_per_chip),
|
||||||
trk_parameters.vector_length);
|
trk_parameters.vector_length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,6 +145,7 @@ private:
|
|||||||
gr_complex *d_Prompt_Data;
|
gr_complex *d_Prompt_Data;
|
||||||
|
|
||||||
double d_code_phase_step_chips;
|
double d_code_phase_step_chips;
|
||||||
|
double d_code_phase_rate_step_chips;
|
||||||
double d_carrier_phase_step_rad;
|
double d_carrier_phase_step_rad;
|
||||||
// remaining code phase and carrier phase between tracking loops
|
// remaining code phase and carrier phase between tracking loops
|
||||||
double d_rem_code_phase_samples;
|
double d_rem_code_phase_samples;
|
||||||
|
@ -233,7 +233,7 @@ private:
|
|||||||
int32_t d_correlation_length_samples;
|
int32_t d_correlation_length_samples;
|
||||||
int32_t d_next_prn_length_samples;
|
int32_t d_next_prn_length_samples;
|
||||||
uint64_t d_sample_counter_next;
|
uint64_t d_sample_counter_next;
|
||||||
uint32_t d_pull_in = 0;
|
uint32_t d_pull_in = 0U;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //GNSS_SDR_DLL_PLL_VEML_TRACKING_FPGA_H
|
#endif //GNSS_SDR_DLL_PLL_VEML_TRACKING_FPGA_H
|
||||||
|
@ -131,9 +131,10 @@ bool cpu_multicorrelator_real_codes::Carrier_wipeoff_multicorrelator_resampler(
|
|||||||
float phase_step_rad,
|
float phase_step_rad,
|
||||||
float rem_code_phase_chips,
|
float rem_code_phase_chips,
|
||||||
float code_phase_step_chips,
|
float code_phase_step_chips,
|
||||||
|
float code_phase_rate_step_chips,
|
||||||
int signal_length_samples)
|
int signal_length_samples)
|
||||||
{
|
{
|
||||||
update_local_code(signal_length_samples, rem_code_phase_chips, code_phase_step_chips);
|
update_local_code(signal_length_samples, rem_code_phase_chips, code_phase_step_chips, code_phase_rate_step_chips);
|
||||||
// Regenerate phase at each call in order to avoid numerical issues
|
// Regenerate phase at each call in order to avoid numerical issues
|
||||||
lv_32fc_t phase_offset_as_complex[1];
|
lv_32fc_t phase_offset_as_complex[1];
|
||||||
phase_offset_as_complex[0] = lv_cmake(std::cos(rem_carrier_phase_in_rad), -std::sin(rem_carrier_phase_in_rad));
|
phase_offset_as_complex[0] = lv_cmake(std::cos(rem_carrier_phase_in_rad), -std::sin(rem_carrier_phase_in_rad));
|
||||||
|
@ -52,7 +52,7 @@ public:
|
|||||||
bool set_local_code_and_taps(int code_length_chips, const float *local_code_in, float *shifts_chips);
|
bool set_local_code_and_taps(int code_length_chips, const float *local_code_in, float *shifts_chips);
|
||||||
bool set_input_output_vectors(std::complex<float> *corr_out, const std::complex<float> *sig_in);
|
bool set_input_output_vectors(std::complex<float> *corr_out, const std::complex<float> *sig_in);
|
||||||
void update_local_code(int correlator_length_samples, float rem_code_phase_chips, float code_phase_step_chips, float code_phase_rate_step_chips = 0.0);
|
void update_local_code(int correlator_length_samples, float rem_code_phase_chips, float code_phase_step_chips, float code_phase_rate_step_chips = 0.0);
|
||||||
bool Carrier_wipeoff_multicorrelator_resampler(float rem_carrier_phase_in_rad, float phase_step_rad, float rem_code_phase_chips, float code_phase_step_chips, int signal_length_samples);
|
bool Carrier_wipeoff_multicorrelator_resampler(float rem_carrier_phase_in_rad, float phase_step_rad, float rem_code_phase_chips, float code_phase_step_chips, float code_phase_rate_step_chips, int signal_length_samples);
|
||||||
bool free();
|
bool free();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -49,6 +49,7 @@ void run_correlator_cpu_real_codes(cpu_multicorrelator_real_codes* correlator,
|
|||||||
float d_rem_carrier_phase_rad,
|
float d_rem_carrier_phase_rad,
|
||||||
float d_carrier_phase_step_rad,
|
float d_carrier_phase_step_rad,
|
||||||
float d_code_phase_step_chips,
|
float d_code_phase_step_chips,
|
||||||
|
float d_code_phase_rate_step_chips,
|
||||||
float d_rem_code_phase_chips,
|
float d_rem_code_phase_chips,
|
||||||
int correlation_size)
|
int correlation_size)
|
||||||
{
|
{
|
||||||
@ -58,6 +59,7 @@ void run_correlator_cpu_real_codes(cpu_multicorrelator_real_codes* correlator,
|
|||||||
d_carrier_phase_step_rad,
|
d_carrier_phase_step_rad,
|
||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
d_rem_code_phase_chips,
|
d_rem_code_phase_chips,
|
||||||
|
d_code_phase_rate_step_chips,
|
||||||
correlation_size);
|
correlation_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -125,6 +127,7 @@ TEST(CpuMulticorrelatorRealCodesTest, MeasureExecutionTime)
|
|||||||
float d_rem_carrier_phase_rad = 0.0;
|
float d_rem_carrier_phase_rad = 0.0;
|
||||||
float d_carrier_phase_step_rad = 0.1;
|
float d_carrier_phase_step_rad = 0.1;
|
||||||
float d_code_phase_step_chips = 0.3;
|
float d_code_phase_step_chips = 0.3;
|
||||||
|
float d_code_phase_rate_step_chips = 0.00001;
|
||||||
float d_rem_code_phase_chips = 0.4;
|
float d_rem_code_phase_chips = 0.4;
|
||||||
|
|
||||||
EXPECT_NO_THROW(
|
EXPECT_NO_THROW(
|
||||||
@ -141,6 +144,7 @@ TEST(CpuMulticorrelatorRealCodesTest, MeasureExecutionTime)
|
|||||||
d_rem_carrier_phase_rad,
|
d_rem_carrier_phase_rad,
|
||||||
d_carrier_phase_step_rad,
|
d_carrier_phase_step_rad,
|
||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
|
d_code_phase_rate_step_chips,
|
||||||
d_rem_code_phase_chips,
|
d_rem_code_phase_chips,
|
||||||
correlation_sizes[correlation_sizes_idx]));
|
correlation_sizes[correlation_sizes_idx]));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user