From 14e109983a34a1349188dac1762664fe0f7eee09 Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Wed, 9 Mar 2016 15:29:00 +0100 Subject: [PATCH] Added confguration option to set DLL and PLL bandwidth for 20 ms extended correlation in C_Aid GPS L1 CA tracking (dll_bw_narrow_hz and pll_bw_narrow_hz) --- .../adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc | 8 ++++++++ .../gps_l1_ca_dll_pll_c_aid_tracking_cc.cc | 12 +++++++++--- .../gps_l1_ca_dll_pll_c_aid_tracking_cc.h | 8 ++++++++ .../gps_l1_ca_dll_pll_c_aid_tracking_sc.cc | 10 +++++++++- .../gps_l1_ca_dll_pll_c_aid_tracking_sc.h | 10 ++++++++++ 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc index 436c68e60..fe9eb4d4c 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc @@ -60,7 +60,9 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( std::string dump_filename; std::string default_item_type = "gr_complex"; float pll_bw_hz; + float pll_bw_narrow_hz; float dll_bw_hz; + float dll_bw_narrow_hz; float early_late_space_chips; item_type_ = configuration->property(role + ".item_type", default_item_type); //vector_length = configuration->property(role + ".vector_length", 2048); @@ -69,6 +71,8 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( dump = configuration->property(role + ".dump", false); pll_bw_hz = configuration->property(role + ".pll_bw_hz", 50.0); dll_bw_hz = configuration->property(role + ".dll_bw_hz", 2.0); + pll_bw_narrow_hz = configuration->property(role + ".pll_bw_narrow_hz", 20.0); + dll_bw_narrow_hz = configuration->property(role + ".dll_bw_narrow_hz", 2.0); early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); std::string default_dump_filename = "./track_ch"; dump_filename = configuration->property(role + ".dump_filename", @@ -88,6 +92,8 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( dump_filename, pll_bw_hz, dll_bw_hz, + pll_bw_narrow_hz, + dll_bw_narrow_hz, early_late_space_chips); DLOG(INFO) << "tracking(" << tracking_cc->unique_id() << ")"; }else if(item_type_.compare("cshort") == 0) @@ -102,6 +108,8 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( dump_filename, pll_bw_hz, dll_bw_hz, + pll_bw_narrow_hz, + dll_bw_narrow_hz, early_late_space_chips); DLOG(INFO) << "tracking(" << tracking_sc->unique_id() << ")"; }else diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc index b7304512a..eba5c0795 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc @@ -67,10 +67,12 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_cc( std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips) { return gps_l1_ca_dll_pll_c_aid_tracking_cc_sptr(new gps_l1_ca_dll_pll_c_aid_tracking_cc(if_freq, - fs_in, vector_length, queue, dump, dump_filename, pll_bw_hz, dll_bw_hz, early_late_space_chips)); + fs_in, vector_length, queue, dump, dump_filename, pll_bw_hz, dll_bw_hz,pll_bw_narrow_hz, dll_bw_narrow_hz, early_late_space_chips)); } @@ -106,6 +108,8 @@ gps_l1_ca_dll_pll_c_aid_tracking_cc::gps_l1_ca_dll_pll_c_aid_tracking_cc( std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips) : gr::block("gps_l1_ca_dll_pll_c_aid_tracking_cc", gr::io_signature::make(1, 1, sizeof(gr_complex)), gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))) @@ -129,6 +133,8 @@ gps_l1_ca_dll_pll_c_aid_tracking_cc::gps_l1_ca_dll_pll_c_aid_tracking_cc( // Initialize tracking ========================================== d_pll_bw_hz=pll_bw_hz; d_dll_bw_hz=dll_bw_hz; + d_pll_bw_narrow_hz=pll_bw_narrow_hz; + d_dll_bw_narrow_hz=dll_bw_narrow_hz; d_code_loop_filter.set_DLL_BW(d_dll_bw_hz); d_carrier_loop_filter.set_params(10.0, d_pll_bw_hz,2); @@ -394,8 +400,8 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec current_synchro_data.symbol_integration_enabled=true; // UPDATE INTEGRATION TIME CURRENT_INTEGRATION_TIME_S = static_cast(GPS_CA_TELEMETRY_SYMBOLS_PER_BIT)*GPS_L1_CA_CODE_PERIOD; - d_code_loop_filter.set_DLL_BW(d_dll_bw_hz); - d_carrier_loop_filter.set_params(10.0, d_pll_bw_hz/5,2); + d_code_loop_filter.set_DLL_BW(d_dll_bw_narrow_hz); + d_carrier_loop_filter.set_params(10.0, d_pll_bw_narrow_hz,2); enable_dll_pll=true; }else{ diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h index 3d4cf3272..5df1ad8c4 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h @@ -64,6 +64,8 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_cc(long if_freq, std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); @@ -96,6 +98,8 @@ private: std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); gps_l1_ca_dll_pll_c_aid_tracking_cc(long if_freq, @@ -106,6 +110,8 @@ private: std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); // tracking configuration vars @@ -145,6 +151,8 @@ private: // tracking vars float d_dll_bw_hz; float d_pll_bw_hz; + float d_dll_bw_narrow_hz; + float d_pll_bw_narrow_hz; double d_code_freq_chips; double d_code_phase_step_chips; double d_carrier_doppler_hz; diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc index d74738e4d..12b8351bf 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc @@ -66,10 +66,12 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_sc( std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips) { return gps_l1_ca_dll_pll_c_aid_tracking_sc_sptr(new gps_l1_ca_dll_pll_c_aid_tracking_sc(if_freq, - fs_in, vector_length, queue, dump, dump_filename, pll_bw_hz, dll_bw_hz, early_late_space_chips)); + fs_in, vector_length, queue, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, early_late_space_chips)); } @@ -94,6 +96,8 @@ gps_l1_ca_dll_pll_c_aid_tracking_sc::gps_l1_ca_dll_pll_c_aid_tracking_sc( std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips) : gr::block("gps_l1_ca_dll_pll_c_aid_tracking_sc", gr::io_signature::make(1, 1, sizeof(lv_16sc_t)), gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))) @@ -108,6 +112,10 @@ gps_l1_ca_dll_pll_c_aid_tracking_sc::gps_l1_ca_dll_pll_c_aid_tracking_sc( d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== + d_pll_bw_hz=pll_bw_hz; + d_dll_bw_hz=dll_bw_hz; + d_pll_bw_narrow_hz=pll_bw_narrow_hz; + d_dll_bw_narrow_hz=dll_bw_narrow_hz; d_code_loop_filter.set_DLL_BW(dll_bw_hz); d_carrier_loop_filter.set_params(10.0, pll_bw_hz,2); diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h index adfccfb08..ab0efd957 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h @@ -67,6 +67,8 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_sc(long if_freq, std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); @@ -99,6 +101,8 @@ private: std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); gps_l1_ca_dll_pll_c_aid_tracking_sc(long if_freq, @@ -109,6 +113,8 @@ private: std::string dump_filename, float pll_bw_hz, float dll_bw_hz, + float pll_bw_narrow_hz, + float dll_bw_narrow_hz, float early_late_space_chips); // tracking configuration vars @@ -148,6 +154,10 @@ private: double d_acq_carrier_doppler_hz; // tracking vars + float d_dll_bw_hz; + float d_pll_bw_hz; + float d_dll_bw_narrow_hz; + float d_pll_bw_narrow_hz; double d_code_freq_chips; double d_code_phase_step_chips; double d_carrier_doppler_hz;