mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-13 19:50:34 +00:00
Swap I/Q in two bit cpx interleaved file signal source
Some adjustments in the example configuration file to improve receiver sensitivity
This commit is contained in:
parent
6c0377ed06
commit
0927394351
@ -31,7 +31,7 @@ GNSS-SDR.SUPL_CI=0x31b0
|
|||||||
SignalSource.implementation=Two_Bit_Cpx_File_Signal_Source
|
SignalSource.implementation=Two_Bit_Cpx_File_Signal_Source
|
||||||
|
|
||||||
;#filename: path to file with the captured GNSS signal samples to be processed
|
;#filename: path to file with the captured GNSS signal samples to be processed
|
||||||
SignalSource.filename=/datalogger/captures/ajith/test1_two_cpx_sig2_60.dat
|
SignalSource.filename=/datalogger/captures/ajith/test1_two_cpx_live.dat
|
||||||
|
|
||||||
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
|
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
|
||||||
SignalSource.item_type=byte
|
SignalSource.item_type=byte
|
||||||
@ -52,7 +52,7 @@ SignalSource.samples=0
|
|||||||
SignalSource.repeat=false
|
SignalSource.repeat=false
|
||||||
|
|
||||||
;#dump: Dump the Signal source data to a file. Disable this option in this version
|
;#dump: Dump the Signal source data to a file. Disable this option in this version
|
||||||
SignalSource.dump=true
|
SignalSource.dump=false
|
||||||
|
|
||||||
SignalSource.dump_filename=../data/signal_source.dat
|
SignalSource.dump_filename=../data/signal_source.dat
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ DataTypeAdapter.item_type=gr_complex
|
|||||||
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
||||||
|
|
||||||
;#dump: Dump the filtered data to a file.
|
;#dump: Dump the filtered data to a file.
|
||||||
InputFilter.dump=true
|
InputFilter.dump=false
|
||||||
|
|
||||||
;#dump_filename: Log path and filename.
|
;#dump_filename: Log path and filename.
|
||||||
InputFilter.dump_filename=../data/input_filter.dat
|
InputFilter.dump_filename=../data/input_filter.dat
|
||||||
@ -147,7 +147,7 @@ InputFilter.sampling_frequency=19200000
|
|||||||
;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
|
;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
|
||||||
;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
|
;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
|
||||||
|
|
||||||
InputFilter.IF=-4024000
|
InputFilter.IF=4024000
|
||||||
|
|
||||||
;# Decimation factor after the frequency tranaslating block
|
;# Decimation factor after the frequency tranaslating block
|
||||||
InputFilter.decimation_factor=6
|
InputFilter.decimation_factor=6
|
||||||
@ -179,7 +179,7 @@ Resampler.sample_freq_out=2048000
|
|||||||
|
|
||||||
;######### CHANNELS GLOBAL CONFIG ############
|
;######### CHANNELS GLOBAL CONFIG ############
|
||||||
;#count: Number of available GPS satellite channels.
|
;#count: Number of available GPS satellite channels.
|
||||||
Channels_GPS.count=8
|
Channels_GPS.count=6
|
||||||
;#count: Number of available Galileo satellite channels.
|
;#count: Number of available Galileo satellite channels.
|
||||||
Channels_Galileo.count=0
|
Channels_Galileo.count=0
|
||||||
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
|
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
|
||||||
@ -206,15 +206,19 @@ Acquisition_GPS.if=0
|
|||||||
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
|
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
|
||||||
Acquisition_GPS.sampled_ms=1
|
Acquisition_GPS.sampled_ms=1
|
||||||
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
|
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
|
||||||
Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition
|
Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler
|
||||||
;#threshold: Acquisition threshold
|
;#threshold: Acquisition threshold
|
||||||
Acquisition_GPS.threshold=0.0075
|
Acquisition_GPS.threshold=0.007
|
||||||
;#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]
|
;#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_GPS.pfa=0.01
|
;Acquisition_GPS.pfa=0.0001
|
||||||
;#doppler_max: Maximum expected Doppler shift [Hz]
|
;#doppler_max: Maximum expected Doppler shift [Hz]
|
||||||
Acquisition_GPS.doppler_max=10000
|
Acquisition_GPS.doppler_max=10000
|
||||||
;#doppler_max: Doppler step in the grid search [Hz]
|
;#doppler_max: Maximum expected Doppler shift [Hz]
|
||||||
|
Acquisition_GPS.doppler_min=-10000
|
||||||
|
;#doppler_step Doppler step in the grid search [Hz]
|
||||||
Acquisition_GPS.doppler_step=500
|
Acquisition_GPS.doppler_step=500
|
||||||
|
;#maximum dwells
|
||||||
|
Acquisition_GPS.max_dwells=15
|
||||||
|
|
||||||
;######### ACQUISITION CHANNELS CONFIG ######
|
;######### ACQUISITION CHANNELS CONFIG ######
|
||||||
;#The following options are specific to each channel and overwrite the generic options
|
;#The following options are specific to each channel and overwrite the generic options
|
||||||
@ -231,16 +235,16 @@ Tracking_GPS.item_type=gr_complex
|
|||||||
Tracking_GPS.if=0
|
Tracking_GPS.if=0
|
||||||
|
|
||||||
;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
|
;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
|
||||||
Tracking_GPS.dump=false
|
Tracking_GPS.dump=true
|
||||||
|
|
||||||
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
|
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
|
||||||
Tracking_GPS.dump_filename=../data/epl_tracking_ch_
|
Tracking_GPS.dump_filename=./tracking_ch_
|
||||||
|
|
||||||
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
|
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
|
||||||
Tracking_GPS.pll_bw_hz=45.0;
|
Tracking_GPS.pll_bw_hz=40.0;
|
||||||
|
|
||||||
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
|
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
|
||||||
Tracking_GPS.dll_bw_hz=2.0;
|
Tracking_GPS.dll_bw_hz=1.5;
|
||||||
|
|
||||||
;#fll_bw_hz: FLL loop filter bandwidth [Hz]
|
;#fll_bw_hz: FLL loop filter bandwidth [Hz]
|
||||||
Tracking_GPS.fll_bw_hz=10.0;
|
Tracking_GPS.fll_bw_hz=10.0;
|
||||||
|
@ -69,19 +69,35 @@ int unpack_byte_2bit_cpx_samples::work(int noutput_items,
|
|||||||
//* Most Significant Nibble - Sample n
|
//* Most Significant Nibble - Sample n
|
||||||
//* Least Significant Nibble - Sample n+1
|
//* Least Significant Nibble - Sample n+1
|
||||||
//* Packing order in Nibble Q1 Q0 I1 I0
|
//* Packing order in Nibble Q1 Q0 I1 I0
|
||||||
|
//normal
|
||||||
|
// signed char c = in[i];
|
||||||
|
// //Q[n]
|
||||||
|
// sample.two_bit_sample = (c>>6) & 3;
|
||||||
|
// out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
// //I[n]
|
||||||
|
// sample.two_bit_sample = (c>>4) & 3;
|
||||||
|
// out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
// //Q[n+1]
|
||||||
|
// sample.two_bit_sample = (c>>2) & 3;
|
||||||
|
// out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
// //I[n+1]
|
||||||
|
// sample.two_bit_sample = c & 3;
|
||||||
|
// out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
|
||||||
|
//I/Q swap
|
||||||
signed char c = in[i];
|
signed char c = in[i];
|
||||||
//Q[n]
|
|
||||||
sample.two_bit_sample = (c>>6) & 3;
|
|
||||||
out[n++] = (short)sample.two_bit_sample;
|
|
||||||
//I[n]
|
//I[n]
|
||||||
sample.two_bit_sample = (c>>4) & 3;
|
sample.two_bit_sample = (c>>4) & 3;
|
||||||
out[n++] = (short)sample.two_bit_sample;
|
out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
//Q[n+1]
|
//Q[n]
|
||||||
sample.two_bit_sample = (c>>2) & 3;
|
sample.two_bit_sample = (c>>6) & 3;
|
||||||
out[n++] = (short)sample.two_bit_sample;
|
out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
//I[n+1]
|
//I[n+1]
|
||||||
sample.two_bit_sample = c & 3;
|
sample.two_bit_sample = c & 3;
|
||||||
out[n++] = (short)sample.two_bit_sample;
|
out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
//Q[n+1]
|
||||||
|
sample.two_bit_sample = (c>>2) & 3;
|
||||||
|
out[n++] = (2*(short)sample.two_bit_sample+1);
|
||||||
|
|
||||||
}
|
}
|
||||||
return noutput_items;
|
return noutput_items;
|
||||||
|
Loading…
Reference in New Issue
Block a user