From fb82c2246dffc69c36952c47df70141870ac23e3 Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Tue, 31 Jul 2012 12:35:07 +0000 Subject: [PATCH] Correlator class now takes profit of the GNU Radio memory alignment, used by Volk SIMD functions git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@218 64b25241-fba3-4117-9849-534c7e92360d --- conf/gnss-sdr.conf | 14 +++---- .../gps_l1_ca_dll_fll_pll_tracking_cc.cc | 4 +- .../gps_l1_ca_dll_pll_tracking_cc.cc | 3 +- .../gps_l1_ca_tcp_connector_tracking_cc.cc | 3 +- src/algorithms/tracking/libs/correlator.cc | 37 ++++++++++--------- src/algorithms/tracking/libs/correlator.h | 2 +- 6 files changed, 34 insertions(+), 29 deletions(-) diff --git a/conf/gnss-sdr.conf b/conf/gnss-sdr.conf index 9158c9988..a1c23c334 100644 --- a/conf/gnss-sdr.conf +++ b/conf/gnss-sdr.conf @@ -17,7 +17,7 @@ ControlThread.wait_for_flowgraph=false SignalSource.implementation=File_Signal_Source ;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=../data/my_capture.dat +SignalSource.filename=/media/DATALOGGER_/signals/Agilent GPS Generator/cap2/agilent_cap2.dat ;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. SignalSource.item_type=gr_complex @@ -292,7 +292,7 @@ Acquisition.sampled_ms=1 ;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] Acquisition0.implementation=GPS_L1_CA_PCPS_Acquisition ;#threshold: Acquisition threshold -Acquisition0.threshold=50 +Acquisition0.threshold=70 ;#doppler_max: Maximum expected Doppler shift [Hz] Acquisition0.doppler_max=10000 ;#doppler_max: Doppler step in the grid search [Hz] @@ -302,28 +302,28 @@ Acquisition0.doppler_step=250 ;######### ACQUISITION CH 1 CONFIG ############ Acquisition1.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition1.threshold=50 +Acquisition1.threshold=70 Acquisition1.doppler_max=10000 Acquisition1.doppler_step=250 ;######### ACQUISITION CH 2 CONFIG ############ Acquisition2.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition2.threshold=50 +Acquisition2.threshold=70 Acquisition2.doppler_max=10000 Acquisition2.doppler_step=250 ;######### ACQUISITION CH 3 CONFIG ############ Acquisition3.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition3.threshold=50 +Acquisition3.threshold=70 Acquisition3.doppler_max=10000 Acquisition3.doppler_step=250 ;######### ACQUISITION CH 4 CONFIG ############ Acquisition4.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition4.threshold=50 +Acquisition4.threshold=70 Acquisition4.doppler_max=10000 Acquisition4.doppler_step=250 @@ -409,7 +409,7 @@ Observables.dump_filename=./observables.dat PVT.implementation=GPS_L1_CA_PVT ;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 +PVT.averaging_depth=10 ;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] PVT.flag_averaging=true diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.cc index 3f447c51a..120159b6a 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.cc @@ -389,8 +389,8 @@ int Gps_L1_Ca_Dll_Fll_Pll_Tracking_cc::general_work (int noutput_items, gr_vecto d_late_code, d_Early, d_Prompt, - d_Late); - + d_Late, + is_unaligned()); // check for samples consistency (this should be done before in the receiver / here only if the source is a file) if (std::isnan((*d_Prompt).real()) == true or std::isnan((*d_Prompt).imag()) == true )// or std::isinf(in[i].real())==true or std::isinf(in[i].imag())==true) { diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc index 76b1aa2c5..30c16f1c1 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc @@ -386,7 +386,8 @@ int Gps_L1_Ca_Dll_Pll_Tracking_cc::general_work (int noutput_items, gr_vector_in d_late_code, d_Early, d_Prompt, - d_Late); + d_Late, + is_unaligned()); // check for samples consistency (this should be done before in the receiver / here only if the source is a file) if (std::isnan((*d_Prompt).real()) == true or std::isnan((*d_Prompt).imag()) == true )// or std::isinf(in[i].real())==true or std::isinf(in[i].imag())==true) diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc index b9ad65f00..d7c1dc53c 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc @@ -424,7 +424,8 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work (int noutput_items, gr_vec d_late_code, d_Early, d_Prompt, - d_Late); + d_Late, + is_unaligned()); // check for samples consistency (this should be done before in the receiver / here only if the source is a file) if (std::isnan((*d_Prompt).real()) == true or std::isnan((*d_Prompt).imag()) == true )// or std::isinf(in[i].real())==true or std::isinf(in[i].imag())==true) diff --git a/src/algorithms/tracking/libs/correlator.cc b/src/algorithms/tracking/libs/correlator.cc index 81432cfd0..09c7e74e3 100644 --- a/src/algorithms/tracking/libs/correlator.cc +++ b/src/algorithms/tracking/libs/correlator.cc @@ -73,37 +73,40 @@ void Correlator::Carrier_wipeoff_and_EPL_generic(int signal_length_samples,const -void Correlator::Carrier_wipeoff_and_EPL_volk(int signal_length_samples,const gr_complex* input, gr_complex* carrier,gr_complex* E_code, gr_complex* P_code, gr_complex* L_code,gr_complex* E_out, gr_complex* P_out, gr_complex* L_out) +void Correlator::Carrier_wipeoff_and_EPL_volk(int signal_length_samples,const gr_complex* input, gr_complex* carrier,gr_complex* E_code, gr_complex* P_code, gr_complex* L_code,gr_complex* E_out, gr_complex* P_out, gr_complex* L_out, bool input_vector_aligned) { gr_complex* bb_signal; gr_complex* input_aligned; - //gr_complex* carrier_aligned; - // signal_length_samples=next_power_2(signal_length_samples); - //std::cout<<"length="<