mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-10-26 04:57:40 +00:00
Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into fpga
This commit is contained in:
@@ -16,81 +16,103 @@
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
if(ENABLE_CUDA)
|
||||
set(OPT_TRACKING_ADAPTERS_SOURCES ${OPT_TRACKING_ADAPTERS_SOURCES} gps_l1_ca_dll_pll_tracking_gpu.cc)
|
||||
set(OPT_TRACKING_ADAPTERS_HEADERS ${OPT_TRACKING_ADAPTERS_HEADERS} gps_l1_ca_dll_pll_tracking_gpu.h)
|
||||
set(OPT_TRACKING_INCLUDE_DIRS ${OPT_TRACKING_INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS})
|
||||
endif(ENABLE_CUDA)
|
||||
set(OPT_TRACKING_ADAPTERS_SOURCES
|
||||
${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||
gps_l1_ca_dll_pll_tracking_gpu.cc
|
||||
)
|
||||
set(OPT_TRACKING_ADAPTERS_HEADERS
|
||||
${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||
gps_l1_ca_dll_pll_tracking_gpu.h
|
||||
)
|
||||
set(OPT_TRACKING_INCLUDE_DIRS
|
||||
${OPT_TRACKING_INCLUDE_DIRS}
|
||||
${CUDA_INCLUDE_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_FPGA)
|
||||
set(OPT_TRACKING_ADAPTERS_SOURCES ${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||
gps_l1_ca_dll_pll_tracking_fpga.cc
|
||||
gps_l2_m_dll_pll_tracking_fpga.cc
|
||||
galileo_e1_dll_pll_veml_tracking_fpga.cc
|
||||
galileo_e5a_dll_pll_tracking_fpga.cc
|
||||
gps_l5_dll_pll_tracking_fpga.cc)
|
||||
|
||||
set(OPT_TRACKING_ADAPTERS_HEADERS ${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||
gps_l1_ca_dll_pll_tracking_fpga.h
|
||||
gps_l2_m_dll_pll_tracking_fpga.h
|
||||
galileo_e1_dll_pll_veml_tracking_fpga.h
|
||||
galileo_e5a_dll_pll_tracking_fpga.h
|
||||
gps_l5_dll_pll_tracking_fpga.h)
|
||||
endif(ENABLE_FPGA)
|
||||
set(OPT_TRACKING_ADAPTERS_SOURCES
|
||||
${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||
gps_l1_ca_dll_pll_tracking_fpga.cc
|
||||
gps_l2_m_dll_pll_tracking_fpga.cc
|
||||
galileo_e1_dll_pll_veml_tracking_fpga.cc
|
||||
galileo_e5a_dll_pll_tracking_fpga.cc
|
||||
gps_l5_dll_pll_tracking_fpga.cc
|
||||
)
|
||||
set(OPT_TRACKING_ADAPTERS_HEADERS
|
||||
${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||
gps_l1_ca_dll_pll_tracking_fpga.h
|
||||
gps_l2_m_dll_pll_tracking_fpga.h
|
||||
galileo_e1_dll_pll_veml_tracking_fpga.h
|
||||
galileo_e5a_dll_pll_tracking_fpga.h
|
||||
gps_l5_dll_pll_tracking_fpga.h
|
||||
)
|
||||
endif()
|
||||
|
||||
set(TRACKING_ADAPTER_SOURCES
|
||||
galileo_e1_dll_pll_veml_tracking.cc
|
||||
galileo_e1_tcp_connector_tracking.cc
|
||||
gps_l1_ca_dll_pll_tracking.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking.cc
|
||||
gps_l1_ca_tcp_connector_tracking.cc
|
||||
galileo_e5a_dll_pll_tracking.cc
|
||||
gps_l2_m_dll_pll_tracking.cc
|
||||
glonass_l1_ca_dll_pll_tracking.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking.cc
|
||||
gps_l1_ca_kf_tracking.cc
|
||||
gps_l5_dll_pll_tracking.cc
|
||||
glonass_l2_ca_dll_pll_tracking.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking.cc
|
||||
${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||
galileo_e1_dll_pll_veml_tracking.cc
|
||||
galileo_e1_tcp_connector_tracking.cc
|
||||
gps_l1_ca_dll_pll_tracking.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking.cc
|
||||
gps_l1_ca_tcp_connector_tracking.cc
|
||||
galileo_e5a_dll_pll_tracking.cc
|
||||
gps_l2_m_dll_pll_tracking.cc
|
||||
glonass_l1_ca_dll_pll_tracking.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking.cc
|
||||
gps_l1_ca_kf_tracking.cc
|
||||
gps_l5_dll_pll_tracking.cc
|
||||
glonass_l2_ca_dll_pll_tracking.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking.cc
|
||||
${OPT_TRACKING_ADAPTERS_SOURCES}
|
||||
)
|
||||
|
||||
set(TRACKING_ADAPTER_HEADERS
|
||||
galileo_e1_dll_pll_veml_tracking.h
|
||||
galileo_e1_tcp_connector_tracking.h
|
||||
gps_l1_ca_dll_pll_tracking.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking.h
|
||||
gps_l1_ca_tcp_connector_tracking.h
|
||||
galileo_e5a_dll_pll_tracking.h
|
||||
gps_l2_m_dll_pll_tracking.h
|
||||
glonass_l1_ca_dll_pll_tracking.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking.h
|
||||
gps_l1_ca_kf_tracking.h
|
||||
gps_l5_dll_pll_tracking.h
|
||||
glonass_l2_ca_dll_pll_tracking.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking.h
|
||||
${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||
galileo_e1_dll_pll_veml_tracking.h
|
||||
galileo_e1_tcp_connector_tracking.h
|
||||
gps_l1_ca_dll_pll_tracking.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking.h
|
||||
gps_l1_ca_tcp_connector_tracking.h
|
||||
galileo_e5a_dll_pll_tracking.h
|
||||
gps_l2_m_dll_pll_tracking.h
|
||||
glonass_l1_ca_dll_pll_tracking.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking.h
|
||||
gps_l1_ca_kf_tracking.h
|
||||
gps_l5_dll_pll_tracking.h
|
||||
glonass_l2_ca_dll_pll_tracking.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking.h
|
||||
${OPT_TRACKING_ADAPTERS_HEADERS}
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/gnuradio_blocks
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/gnuradio_blocks
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
list(SORT TRACKING_ADAPTER_HEADERS)
|
||||
list(SORT TRACKING_ADAPTER_SOURCES)
|
||||
|
||||
add_library(tracking_adapters ${TRACKING_ADAPTER_SOURCES} ${TRACKING_ADAPTER_HEADERS})
|
||||
add_library(tracking_adapters
|
||||
${TRACKING_ADAPTER_SOURCES}
|
||||
${TRACKING_ADAPTER_HEADERS}
|
||||
)
|
||||
|
||||
source_group(Headers FILES ${TRACKING_ADAPTER_HEADERS})
|
||||
target_link_libraries(tracking_adapters tracking_gr_blocks gnss_sp_libs gnss_sdr_flags)
|
||||
|
||||
target_link_libraries(tracking_adapters
|
||||
tracking_gr_blocks
|
||||
gnss_sp_libs
|
||||
gnss_sdr_flags
|
||||
)
|
||||
|
||||
@@ -17,86 +17,120 @@
|
||||
#
|
||||
|
||||
if(ENABLE_CUDA)
|
||||
set(OPT_TRACKING_BLOCKS_SOURCES ${OPT_TRACKING_BLOCKS_SOURCES} gps_l1_ca_dll_pll_tracking_gpu_cc.cc)
|
||||
set(OPT_TRACKING_BLOCKS_HEADERS ${OPT_TRACKING_BLOCKS_HEADERS} gps_l1_ca_dll_pll_tracking_gpu_cc.h)
|
||||
set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS})
|
||||
set(OPT_TRACKING_LIBRARIES ${OPT_TRACKING_LIBRARIES} ${CUDA_LIBRARIES})
|
||||
endif(ENABLE_CUDA)
|
||||
set(OPT_TRACKING_BLOCKS_SOURCES
|
||||
${OPT_TRACKING_BLOCKS_SOURCES}
|
||||
gps_l1_ca_dll_pll_tracking_gpu_cc.cc
|
||||
)
|
||||
set(OPT_TRACKING_BLOCKS_HEADERS
|
||||
${OPT_TRACKING_BLOCKS_HEADERS}
|
||||
gps_l1_ca_dll_pll_tracking_gpu_cc.h
|
||||
)
|
||||
set(OPT_TRACKING_INCLUDES
|
||||
${OPT_TRACKING_INCLUDES}
|
||||
${CUDA_INCLUDE_DIRS}
|
||||
)
|
||||
set(OPT_TRACKING_LIBRARIES
|
||||
${OPT_TRACKING_LIBRARIES}
|
||||
${CUDA_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_FPGA)
|
||||
set(OPT_TRACKING_BLOCKS_SOURCES ${OPT_TRACKING_BLOCKS_SOURCES} dll_pll_veml_tracking_fpga.cc)
|
||||
set(OPT_TRACKING_BLOCKS_HEADERS ${OPT_TRACKING_BLOCKS_HEADERS} dll_pll_veml_tracking_fpga.h)
|
||||
endif(ENABLE_FPGA)
|
||||
set(OPT_TRACKING_BLOCKS_SOURCES
|
||||
${OPT_TRACKING_BLOCKS_SOURCES}
|
||||
dll_pll_veml_tracking_fpga.cc
|
||||
)
|
||||
set(OPT_TRACKING_BLOCKS_HEADERS
|
||||
${OPT_TRACKING_BLOCKS_HEADERS}
|
||||
dll_pll_veml_tracking_fpga.h
|
||||
)
|
||||
endif()
|
||||
|
||||
set(TRACKING_GR_BLOCKS_SOURCES
|
||||
galileo_e1_tcp_connector_tracking_cc.cc
|
||||
gps_l1_ca_tcp_connector_tracking_cc.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
glonass_l1_ca_dll_pll_tracking_cc.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
gps_l1_ca_kf_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
dll_pll_veml_tracking.cc
|
||||
${OPT_TRACKING_BLOCKS_SOURCES}
|
||||
galileo_e1_tcp_connector_tracking_cc.cc
|
||||
gps_l1_ca_tcp_connector_tracking_cc.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
glonass_l1_ca_dll_pll_tracking_cc.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
gps_l1_ca_kf_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
|
||||
dll_pll_veml_tracking.cc
|
||||
${OPT_TRACKING_BLOCKS_SOURCES}
|
||||
)
|
||||
|
||||
set(TRACKING_GR_BLOCKS_HEADERS
|
||||
galileo_e1_tcp_connector_tracking_cc.h
|
||||
gps_l1_ca_tcp_connector_tracking_cc.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_cc.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_sc.h
|
||||
glonass_l1_ca_dll_pll_tracking_cc.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_cc.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_sc.h
|
||||
gps_l1_ca_kf_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
|
||||
dll_pll_veml_tracking.h
|
||||
${OPT_TRACKING_BLOCKS_HEADERS}
|
||||
galileo_e1_tcp_connector_tracking_cc.h
|
||||
gps_l1_ca_tcp_connector_tracking_cc.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_cc.h
|
||||
gps_l1_ca_dll_pll_c_aid_tracking_sc.h
|
||||
glonass_l1_ca_dll_pll_tracking_cc.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_cc.h
|
||||
glonass_l1_ca_dll_pll_c_aid_tracking_sc.h
|
||||
gps_l1_ca_kf_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
|
||||
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
|
||||
dll_pll_veml_tracking.h
|
||||
${OPT_TRACKING_BLOCKS_HEADERS}
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDES}
|
||||
${MATIO_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDES}
|
||||
${MATIO_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
if(ENABLE_GENERIC_ARCH)
|
||||
add_definitions( -DGENERIC_ARCH=1 )
|
||||
endif(ENABLE_GENERIC_ARCH)
|
||||
add_definitions(-DGENERIC_ARCH=1)
|
||||
endif()
|
||||
|
||||
list(SORT TRACKING_GR_BLOCKS_HEADERS)
|
||||
list(SORT TRACKING_GR_BLOCKS_SOURCES)
|
||||
|
||||
add_library(tracking_gr_blocks ${TRACKING_GR_BLOCKS_SOURCES} ${TRACKING_GR_BLOCKS_HEADERS})
|
||||
add_library(tracking_gr_blocks
|
||||
${TRACKING_GR_BLOCKS_SOURCES}
|
||||
${TRACKING_GR_BLOCKS_HEADERS}
|
||||
)
|
||||
|
||||
source_group(Headers FILES ${TRACKING_GR_BLOCKS_HEADERS})
|
||||
|
||||
target_link_libraries(tracking_gr_blocks tracking_lib ${GNURADIO_RUNTIME_LIBRARIES} gnss_sdr_flags gnss_sp_libs ${Boost_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${MATIO_LIBRARIES} ${OPT_TRACKING_LIBRARIES})
|
||||
target_link_libraries(tracking_gr_blocks
|
||||
tracking_lib
|
||||
${GNURADIO_RUNTIME_LIBRARIES}
|
||||
gnss_sdr_flags gnss_sp_libs
|
||||
${Boost_LIBRARIES}
|
||||
${VOLK_GNSSSDR_LIBRARIES}
|
||||
${MATIO_LIBRARIES}
|
||||
${OPT_TRACKING_LIBRARIES}
|
||||
)
|
||||
|
||||
if(NOT VOLK_GNSSSDR_FOUND)
|
||||
if(NOT VOLKGNSSSDR_FOUND)
|
||||
if(MATIO_FOUND)
|
||||
add_dependencies(tracking_gr_blocks volk_gnsssdr_module)
|
||||
else(MATIO_FOUND)
|
||||
add_dependencies(tracking_gr_blocks volk_gnsssdr_module matio-${GNSSSDR_MATIO_LOCAL_VERSION})
|
||||
endif(MATIO_FOUND)
|
||||
else(NOT VOLK_GNSSSDR_FOUND)
|
||||
else()
|
||||
add_dependencies(tracking_gr_blocks volk_gnsssdr_module
|
||||
matio-${GNSSSDR_MATIO_LOCAL_VERSION}
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
if(NOT MATIO_FOUND)
|
||||
add_dependencies(tracking_gr_blocks matio-${GNSSSDR_MATIO_LOCAL_VERSION})
|
||||
endif(NOT MATIO_FOUND)
|
||||
endif(NOT VOLK_GNSSSDR_FOUND)
|
||||
add_dependencies(tracking_gr_blocks
|
||||
matio-${GNSSSDR_MATIO_LOCAL_VERSION}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* \file dll_pll_veml_tracking.cc
|
||||
* \brief Implementation of a code DLL + carrier PLL tracking block.
|
||||
* \author Javier Arribas, 2018. jarribas(at)cttc.es
|
||||
* \author Antonio Ramos, 2018 antonio.ramosdet(at)gmail.com
|
||||
* Javier Arribas, 2018. jarribas(at)cttc.es
|
||||
*
|
||||
* Code DLL + carrier PLL according to the algorithms described in:
|
||||
* [1] K.Borre, D.M.Akos, N.Bertelsen, P.Rinder, and S.H.Jensen,
|
||||
@@ -402,7 +402,6 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl
|
||||
d_carrier_phase_step_rad = 0.0;
|
||||
d_carrier_phase_rate_step_rad = 0.0;
|
||||
d_rem_code_phase_chips = 0.0;
|
||||
d_code_phase_samples = 0.0;
|
||||
d_last_prompt = gr_complex(0.0, 0.0);
|
||||
d_state = 0; // initial state: standby
|
||||
clear_tracking_vars();
|
||||
@@ -464,36 +463,6 @@ void dll_pll_veml_tracking::start_tracking()
|
||||
d_acq_carrier_doppler_hz = d_acquisition_gnss_synchro->Acq_doppler_hz;
|
||||
d_acq_sample_stamp = d_acquisition_gnss_synchro->Acq_samplestamp_samples;
|
||||
|
||||
int64_t acq_trk_diff_samples = static_cast<int64_t>(d_sample_counter) - static_cast<int64_t>(d_acq_sample_stamp);
|
||||
double acq_trk_diff_seconds = static_cast<double>(acq_trk_diff_samples) / trk_parameters.fs_in;
|
||||
DLOG(INFO) << "Number of samples between Acquisition and Tracking = " << acq_trk_diff_samples;
|
||||
DLOG(INFO) << "Number of seconds between Acquisition and Tracking = " << acq_trk_diff_seconds;
|
||||
// Doppler effect Fd = (C / (C + Vr)) * F
|
||||
double radial_velocity = (d_signal_carrier_freq + d_acq_carrier_doppler_hz) / d_signal_carrier_freq;
|
||||
// new chip and PRN sequence periods based on acq Doppler
|
||||
d_code_freq_chips = radial_velocity * d_code_chip_rate;
|
||||
d_code_phase_step_chips = d_code_freq_chips / trk_parameters.fs_in;
|
||||
d_code_phase_rate_step_chips = 0.0;
|
||||
double T_chip_mod_seconds = 1.0 / d_code_freq_chips;
|
||||
double T_prn_mod_seconds = T_chip_mod_seconds * static_cast<double>(d_code_length_chips);
|
||||
double T_prn_mod_samples = T_prn_mod_seconds * trk_parameters.fs_in;
|
||||
|
||||
//d_current_prn_length_samples = std::round(T_prn_mod_samples);
|
||||
d_current_prn_length_samples = std::floor(T_prn_mod_samples);
|
||||
|
||||
double T_prn_true_seconds = static_cast<double>(d_code_length_chips) / d_code_chip_rate;
|
||||
double T_prn_true_samples = T_prn_true_seconds * trk_parameters.fs_in;
|
||||
double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds;
|
||||
double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds;
|
||||
double corrected_acq_phase_samples = std::fmod(d_acq_code_phase_samples + T_prn_diff_seconds * N_prn_diff * trk_parameters.fs_in, T_prn_true_samples);
|
||||
if (corrected_acq_phase_samples < 0.0)
|
||||
{
|
||||
corrected_acq_phase_samples += T_prn_mod_samples;
|
||||
}
|
||||
double delay_correction_samples = d_acq_code_phase_samples - corrected_acq_phase_samples;
|
||||
|
||||
d_acq_code_phase_samples = corrected_acq_phase_samples;
|
||||
|
||||
d_carrier_doppler_hz = d_acq_carrier_doppler_hz;
|
||||
d_carrier_phase_step_rad = PI_2 * d_carrier_doppler_hz / trk_parameters.fs_in;
|
||||
d_carrier_phase_rate_step_rad = 0.0;
|
||||
@@ -590,7 +559,6 @@ void dll_pll_veml_tracking::start_tracking()
|
||||
d_local_code_shift_chips[2] = trk_parameters.early_late_space_chips * static_cast<float>(d_code_samples_per_chip);
|
||||
}
|
||||
|
||||
d_code_phase_samples = d_acq_code_phase_samples;
|
||||
d_code_loop_filter.set_DLL_BW(trk_parameters.dll_bw_hz);
|
||||
d_carrier_loop_filter.set_PLL_BW(trk_parameters.pll_bw_hz);
|
||||
d_carrier_loop_filter.set_pdi(static_cast<float>(d_code_period));
|
||||
@@ -598,16 +566,13 @@ void dll_pll_veml_tracking::start_tracking()
|
||||
|
||||
// DEBUG OUTPUT
|
||||
std::cout << "Tracking of " << systemName << " " << signal_pretty_name << " signal started on channel " << d_channel << " for satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << std::endl;
|
||||
LOG(INFO) << "Starting tracking of satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << " on channel " << d_channel;
|
||||
DLOG(INFO) << "Starting tracking of satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << " on channel " << d_channel;
|
||||
|
||||
// enable tracking pull-in
|
||||
d_state = 1;
|
||||
d_cloop = true;
|
||||
d_Prompt_buffer_deque.clear();
|
||||
d_last_prompt = gr_complex(0.0, 0.0);
|
||||
LOG(INFO) << "PULL-IN Doppler [Hz] = " << d_carrier_doppler_hz
|
||||
<< ". Code Phase correction [samples] = " << delay_correction_samples
|
||||
<< ". PULL-IN Code Phase [samples] = " << d_acq_code_phase_samples;
|
||||
}
|
||||
|
||||
|
||||
@@ -1391,17 +1356,34 @@ int dll_pll_veml_tracking::general_work(int noutput_items __attribute__((unused)
|
||||
case 1: // Pull-in
|
||||
{
|
||||
// Signal alignment (skip samples until the incoming signal is aligned with local replica)
|
||||
uint64_t acq_to_trk_delay_samples = static_cast<uint64_t>(d_sample_counter - d_acq_sample_stamp);
|
||||
double acq_trk_shif_correction_samples = static_cast<double>(d_current_prn_length_samples) - std::fmod(static_cast<double>(acq_to_trk_delay_samples), static_cast<double>(d_current_prn_length_samples));
|
||||
int32_t samples_offset = std::round(d_acq_code_phase_samples + acq_trk_shif_correction_samples);
|
||||
if (samples_offset < 0)
|
||||
{
|
||||
samples_offset = 0;
|
||||
}
|
||||
d_acc_carrier_phase_rad -= d_carrier_phase_step_rad * d_acq_code_phase_samples;
|
||||
int64_t acq_trk_diff_samples = static_cast<int64_t>(d_sample_counter) - static_cast<int64_t>(d_acq_sample_stamp);
|
||||
double acq_trk_diff_seconds = static_cast<double>(acq_trk_diff_samples) / trk_parameters.fs_in;
|
||||
double delta_trk_to_acq_prn_start_samples = static_cast<double>(acq_trk_diff_samples) - d_acq_code_phase_samples;
|
||||
|
||||
// Doppler effect Fd = (C / (C + Vr)) * F
|
||||
double radial_velocity = (d_signal_carrier_freq + d_acq_carrier_doppler_hz) / d_signal_carrier_freq;
|
||||
// new chip and PRN sequence periods based on acq Doppler
|
||||
d_code_freq_chips = radial_velocity * d_code_chip_rate;
|
||||
d_code_freq_chips = d_code_chip_rate;
|
||||
d_code_phase_step_chips = d_code_freq_chips / trk_parameters.fs_in;
|
||||
d_code_phase_rate_step_chips = 0.0;
|
||||
double T_chip_mod_seconds = 1.0 / d_code_freq_chips;
|
||||
double T_prn_mod_seconds = T_chip_mod_seconds * static_cast<double>(d_code_length_chips);
|
||||
double T_prn_mod_samples = T_prn_mod_seconds * trk_parameters.fs_in;
|
||||
|
||||
d_acq_code_phase_samples = T_prn_mod_samples - std::fmod(delta_trk_to_acq_prn_start_samples, T_prn_mod_samples);
|
||||
d_current_prn_length_samples = round(T_prn_mod_samples);
|
||||
|
||||
int32_t samples_offset = round(d_acq_code_phase_samples);
|
||||
d_acc_carrier_phase_rad -= d_carrier_phase_step_rad * static_cast<double>(samples_offset);
|
||||
d_state = 2;
|
||||
d_sample_counter += static_cast<uint64_t>(samples_offset); // count for the processed samples
|
||||
consume_each(samples_offset); // shift input to perform alignment with local replica
|
||||
d_sample_counter += samples_offset; // count for the processed samples
|
||||
|
||||
DLOG(INFO) << "Number of samples between Acquisition and Tracking = " << acq_trk_diff_samples << " ( " << acq_trk_diff_seconds << " s)";
|
||||
DLOG(INFO) << "PULL-IN Doppler [Hz] = " << d_carrier_doppler_hz
|
||||
<< ". PULL-IN Code Phase [samples] = " << d_acq_code_phase_samples;
|
||||
|
||||
consume_each(samples_offset); // shift input to perform alignment with local replica
|
||||
return 0;
|
||||
}
|
||||
case 2: // Wide tracking and symbol synchronization
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*!
|
||||
* \file dll_pll_veml_tracking.h
|
||||
* \brief Implementation of a code DLL + carrier PLL tracking block.
|
||||
* \author Javier Arribas, 2018. jarribas(at)cttc.es
|
||||
* \author Antonio Ramos, 2018 antonio.ramosdet(at)gmail.com
|
||||
*
|
||||
* -------------------------------------------------------------------------
|
||||
@@ -173,7 +174,6 @@ private:
|
||||
double d_carrier_doppler_hz;
|
||||
double d_acc_carrier_phase_rad;
|
||||
double d_rem_code_phase_chips;
|
||||
double d_code_phase_samples;
|
||||
double T_chip_seconds;
|
||||
double T_prn_seconds;
|
||||
double T_prn_samples;
|
||||
|
||||
@@ -22,83 +22,89 @@ if(ENABLE_CUDA)
|
||||
# set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --gpu-architecture sm_30)
|
||||
list(APPEND CUDA_NVCC_FLAGS "-gencode arch=compute_30,code=sm_30; -std=c++11;-O3; -use_fast_math -default-stream per-thread")
|
||||
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
|
||||
CUDA_INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(LIB_TYPE STATIC) #set the lib type
|
||||
CUDA_ADD_LIBRARY(CUDA_CORRELATOR_LIB ${LIB_TYPE} cuda_multicorrelator.h cuda_multicorrelator.cu)
|
||||
cuda_add_library(CUDA_CORRELATOR_LIB ${LIB_TYPE} cuda_multicorrelator.h cuda_multicorrelator.cu)
|
||||
set(OPT_TRACKING_LIBRARIES ${OPT_TRACKING_LIBRARIES} CUDA_CORRELATOR_LIB)
|
||||
set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS} )
|
||||
endif(ENABLE_CUDA)
|
||||
|
||||
set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
set(TRACKING_LIB_SOURCES
|
||||
cpu_multicorrelator.cc
|
||||
cpu_multicorrelator_real_codes.cc
|
||||
cpu_multicorrelator_16sc.cc
|
||||
lock_detectors.cc
|
||||
tcp_communication.cc
|
||||
tcp_packet_data.cc
|
||||
tracking_2nd_DLL_filter.cc
|
||||
tracking_2nd_PLL_filter.cc
|
||||
tracking_discriminators.cc
|
||||
tracking_FLL_PLL_filter.cc
|
||||
tracking_loop_filter.cc
|
||||
dll_pll_conf.cc
|
||||
bayesian_estimation.cc
|
||||
cpu_multicorrelator.cc
|
||||
cpu_multicorrelator_real_codes.cc
|
||||
cpu_multicorrelator_16sc.cc
|
||||
lock_detectors.cc
|
||||
tcp_communication.cc
|
||||
tcp_packet_data.cc
|
||||
tracking_2nd_DLL_filter.cc
|
||||
tracking_2nd_PLL_filter.cc
|
||||
tracking_discriminators.cc
|
||||
tracking_FLL_PLL_filter.cc
|
||||
tracking_loop_filter.cc
|
||||
dll_pll_conf.cc
|
||||
bayesian_estimation.cc
|
||||
)
|
||||
|
||||
set(TRACKING_LIB_HEADERS
|
||||
cpu_multicorrelator.h
|
||||
cpu_multicorrelator_real_codes.h
|
||||
cpu_multicorrelator_16sc.h
|
||||
lock_detectors.h
|
||||
tcp_communication.h
|
||||
tcp_packet_data.h
|
||||
tracking_2nd_DLL_filter.h
|
||||
tracking_2nd_PLL_filter.h
|
||||
tracking_discriminators.h
|
||||
tracking_FLL_PLL_filter.h
|
||||
tracking_loop_filter.h
|
||||
dll_pll_conf.h
|
||||
bayesian_estimation.h
|
||||
cpu_multicorrelator.h
|
||||
cpu_multicorrelator_real_codes.h
|
||||
cpu_multicorrelator_16sc.h
|
||||
lock_detectors.h
|
||||
tcp_communication.h
|
||||
tcp_packet_data.h
|
||||
tracking_2nd_DLL_filter.h
|
||||
tracking_2nd_PLL_filter.h
|
||||
tracking_discriminators.h
|
||||
tracking_FLL_PLL_filter.h
|
||||
tracking_loop_filter.h
|
||||
dll_pll_conf.h
|
||||
bayesian_estimation.h
|
||||
)
|
||||
|
||||
if(ENABLE_FPGA)
|
||||
set(TRACKING_LIB_SOURCES ${TRACKING_LIB_SOURCES} fpga_multicorrelator.cc dll_pll_conf_fpga.cc)
|
||||
set(TRACKING_LIB_HEADERS ${TRACKING_LIB_HEADERS} fpga_multicorrelator.h dll_pll_conf_fpga.h)
|
||||
endif(ENABLE_FPGA)
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${VOLK_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDES}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${VOLK_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${OPT_TRACKING_INCLUDES}
|
||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
if(ENABLE_GENERIC_ARCH)
|
||||
add_definitions( -DGENERIC_ARCH=1 )
|
||||
endif(ENABLE_GENERIC_ARCH)
|
||||
|
||||
if (SSE3_AVAILABLE)
|
||||
add_definitions( -DHAVE_SSE3=1 )
|
||||
endif(SSE3_AVAILABLE)
|
||||
add_definitions(-DGENERIC_ARCH=1)
|
||||
endif()
|
||||
|
||||
if(SSE3_AVAILABLE)
|
||||
add_definitions(-DHAVE_SSE3=1)
|
||||
endif()
|
||||
|
||||
list(SORT TRACKING_LIB_HEADERS)
|
||||
list(SORT TRACKING_LIB_SOURCES)
|
||||
|
||||
add_library(tracking_lib ${TRACKING_LIB_SOURCES} ${TRACKING_LIB_HEADERS})
|
||||
source_group(Headers FILES ${TRACKING_LIB_HEADERS})
|
||||
target_link_libraries(tracking_lib ${OPT_TRACKING_LIBRARIES} ${VOLK_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES})
|
||||
|
||||
if(VOLK_GNSSSDR_FOUND)
|
||||
source_group(Headers FILES ${TRACKING_LIB_HEADERS})
|
||||
|
||||
target_link_libraries(tracking_lib
|
||||
${OPT_TRACKING_LIBRARIES}
|
||||
${VOLK_LIBRARIES}
|
||||
${VOLK_GNSSSDR_LIBRARIES}
|
||||
${Boost_LIBRARIES}
|
||||
${GNURADIO_RUNTIME_LIBRARIES}
|
||||
)
|
||||
|
||||
if(VOLKGNSSSDR_FOUND)
|
||||
add_dependencies(tracking_lib glog-${glog_RELEASE})
|
||||
else(VOLK_GNSSSDR_FOUND)
|
||||
else()
|
||||
add_dependencies(tracking_lib glog-${glog_RELEASE} volk_gnsssdr_module)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user