mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Replaced fix point NCO by VOLK phase rotator in CPU multicorrelator
(around 5% faster). This optimization is enabled at this time only in Tracking_DLL_PLL_C_Aid. Sample config can be found in gnss-sdr_Hybrid_byte_sim.conf
This commit is contained in:
		| @@ -198,7 +198,7 @@ Acquisition_1C.sampled_ms=1 | ||||
| ;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] | ||||
| Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition | ||||
| ;#threshold: Acquisition threshold | ||||
| Acquisition_1C.threshold=0.035 | ||||
| Acquisition_1C.threshold=0.045 | ||||
| ;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]  | ||||
| ;Acquisition_1C.pfa=0.01 | ||||
| ;#doppler_max: Maximum expected Doppler shift [Hz] | ||||
| @@ -233,7 +233,7 @@ Acquisition_1B.doppler_step=125 | ||||
| ;######### TRACKING GPS CONFIG ############ | ||||
|  | ||||
| ;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] | ||||
| Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking | ||||
| Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_Tracking | ||||
| ;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. | ||||
| Tracking_1C.item_type=gr_complex | ||||
|  | ||||
|   | ||||
| @@ -125,11 +125,12 @@ bool cpu_multicorrelator::Carrier_wipeoff_multicorrelator_resampler( | ||||
|         float code_phase_step_chips, | ||||
|         int signal_length_samples) | ||||
| { | ||||
|     //update_local_carrier(signal_length_samples, rem_carrier_phase_in_rad, phase_step_rad); //replaced by VOLK phase rotator | ||||
|     //volk_32fc_x2_multiply_32fc(d_sig_doppler_wiped, d_sig_in, d_nco_in, signal_length_samples); //replaced by VOLK phase rotator | ||||
|  | ||||
|     update_local_carrier(signal_length_samples, rem_carrier_phase_in_rad, phase_step_rad); | ||||
|     lv_32fc_t phase_offset_as_complex[1]= lv_cmake(std::cos(rem_carrier_phase_in_rad),-std::sin(rem_carrier_phase_in_rad)); | ||||
|     volk_32fc_s32fc_x2_rotator_32fc(d_sig_doppler_wiped, d_sig_in, std::exp(lv_32fc_t(0, -phase_step_rad)),phase_offset_as_complex, signal_length_samples); | ||||
|     update_local_code(signal_length_samples,rem_code_phase_chips, code_phase_step_chips); | ||||
|  | ||||
|     volk_32fc_x2_multiply_32fc(d_sig_doppler_wiped, d_sig_in, d_nco_in, signal_length_samples); | ||||
|     for (int current_correlator_tap = 0; current_correlator_tap < d_n_correlators; current_correlator_tap++) | ||||
|         { | ||||
|             volk_32fc_x2_dot_prod_32fc(&d_corr_out[current_correlator_tap], d_sig_doppler_wiped, d_local_codes_resampled[current_correlator_tap], signal_length_samples); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Javier Arribas
					Javier Arribas