NOAA decoder speedups, via surligas.
This commit is contained in:
parent
d2defbb0c5
commit
d5a1154535
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.11'?>
|
<?grc format='1' created='3.7.10'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Mon Apr 10 23:26:02 2017</timestamp>
|
<timestamp>Mon Apr 10 23:26:02 2017</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -136,7 +136,7 @@ in acceptable levels especially for embedded devices.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>4</value>
|
<value>2</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -151,7 +151,7 @@ in acceptable levels especially for embedded devices.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>cutoff_freq</key>
|
<key>cutoff_freq</key>
|
||||||
<value>0.2</value>
|
<value>0.4</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
|
@ -286,7 +286,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>satnogs.hw_rx_settings[rx_sdr_device]['samp_rate']</value>
|
<value>250e3</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -313,7 +313,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(935, 123)</value>
|
<value>(968, 124)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -423,7 +423,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>high_cutoff_freq</key>
|
<key>high_cutoff_freq</key>
|
||||||
<value>4.2e3</value>
|
<value>3.7e3</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>id</key>
|
<key>id</key>
|
||||||
|
@ -435,7 +435,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>low_cutoff_freq</key>
|
<key>low_cutoff_freq</key>
|
||||||
<value>500</value>
|
<value>700</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>maxoutbuf</key>
|
<key>maxoutbuf</key>
|
||||||
|
@ -451,7 +451,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>width</key>
|
<key>width</key>
|
||||||
<value>200</value>
|
<value>1e3</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>win</key>
|
<key>win</key>
|
||||||
|
@ -740,7 +740,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(718, 115)</value>
|
<value>(760, 116)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -838,7 +838,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
|
@ -2626,7 +2626,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>fbw</key>
|
<key>fbw</key>
|
||||||
|
@ -2685,7 +2685,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>fbw</key>
|
<key>fbw</key>
|
||||||
|
@ -2799,11 +2799,11 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>decim</key>
|
<key>decim</key>
|
||||||
<value>int(samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)) / audio_decimation)</value>
|
<value>int(samp_rate_rx /first_stage_decimation)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>fbw</key>
|
<key>fbw</key>
|
||||||
|
@ -2811,7 +2811,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(896, 232)</value>
|
<value>(992, 232)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3034,7 +3034,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(471, 119)</value>
|
<value>(528, 120)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3081,7 +3081,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>filename</key>
|
<key>filename</key>
|
||||||
|
@ -3089,7 +3089,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1112, 236)</value>
|
<value>(1224, 236)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3124,7 +3124,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>1</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>flip</key>
|
<key>flip</key>
|
||||||
|
@ -3132,7 +3132,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(520, 320)</value>
|
<value>(568, 320)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3226,7 +3226,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(223, 47)</value>
|
<value>(176, 88)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# Title: NOAA APT Decoder
|
# Title: NOAA APT Decoder
|
||||||
# Author: Manolis Surligas, George Vardakis
|
# Author: Manolis Surligas, George Vardakis
|
||||||
# Description: A NOAA APT Decoder with automatic image synchronization
|
# Description: A NOAA APT Decoder with automatic image synchronization
|
||||||
# Generated: Wed Aug 9 18:06:52 2017
|
# Generated: Sun Sep 17 04:44:10 2017
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
from gnuradio import analog
|
from gnuradio import analog
|
||||||
|
@ -52,14 +52,14 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
# Variables
|
# Variables
|
||||||
##################################################
|
##################################################
|
||||||
self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate']
|
self.samp_rate_rx = samp_rate_rx = 250e3
|
||||||
self.first_stage_decimation = first_stage_decimation = 4
|
self.first_stage_decimation = first_stage_decimation = 2
|
||||||
|
|
||||||
self.noaa_filter_taps = noaa_filter_taps = firdes.low_pass(1.0, samp_rate_rx /first_stage_decimation, 16.5e3, 4e3, firdes.WIN_HAMMING, 6.76)
|
self.noaa_filter_taps = noaa_filter_taps = firdes.low_pass(1.0, samp_rate_rx /first_stage_decimation, 16.5e3, 4e3, firdes.WIN_HAMMING, 6.76)
|
||||||
|
|
||||||
self.initial_bandwidth = initial_bandwidth = 100e3
|
self.initial_bandwidth = initial_bandwidth = 100e3
|
||||||
|
|
||||||
self.first_stage_filter_taps = first_stage_filter_taps = firdes.low_pass(1.0, 1.0, 0.2, 0.1, firdes.WIN_HAMMING, 6.76)
|
self.first_stage_filter_taps = first_stage_filter_taps = firdes.low_pass(1.0, 1.0, 0.4, 0.1, firdes.WIN_HAMMING, 6.76)
|
||||||
|
|
||||||
self.audio_decimation = audio_decimation = 2
|
self.audio_decimation = audio_decimation = 2
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx /first_stage_decimation)
|
self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx /first_stage_decimation)
|
||||||
self.rational_resampler_xxx_2 = filter.rational_resampler_ccc(
|
self.rational_resampler_xxx_2 = filter.rational_resampler_ccc(
|
||||||
interpolation=48000,
|
interpolation=48000,
|
||||||
decimation=int(samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)) / audio_decimation),
|
decimation=int(samp_rate_rx /first_stage_decimation),
|
||||||
taps=None,
|
taps=None,
|
||||||
fractional_bw=None,
|
fractional_bw=None,
|
||||||
)
|
)
|
||||||
|
@ -117,7 +117,7 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
self.fft_filter_xxx_0.declare_sample_delay(0)
|
self.fft_filter_xxx_0.declare_sample_delay(0)
|
||||||
self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1)
|
self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1)
|
||||||
self.band_pass_filter_0 = filter.fir_filter_fff(1, firdes.band_pass(
|
self.band_pass_filter_0 = filter.fir_filter_fff(1, firdes.band_pass(
|
||||||
6, samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)) / audio_decimation, 500, 4.2e3, 200, firdes.WIN_HAMMING, 6.76))
|
6, samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)) / audio_decimation, 700, 3.7e3, 1e3, firdes.WIN_HAMMING, 6.76))
|
||||||
self.analog_wfm_rcv_0 = analog.wfm_rcv(
|
self.analog_wfm_rcv_0 = analog.wfm_rcv(
|
||||||
quad_rate=samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)),
|
quad_rate=samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)),
|
||||||
audio_decimation=audio_decimation,
|
audio_decimation=audio_decimation,
|
||||||
|
@ -248,7 +248,6 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
|
|
||||||
def set_rx_sdr_device(self, rx_sdr_device):
|
def set_rx_sdr_device(self, rx_sdr_device):
|
||||||
self.rx_sdr_device = rx_sdr_device
|
self.rx_sdr_device = rx_sdr_device
|
||||||
self.set_samp_rate_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate'])
|
|
||||||
self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0)
|
self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0)
|
||||||
self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0)
|
self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0)
|
||||||
self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0)
|
self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0)
|
||||||
|
@ -279,14 +278,14 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
self.samp_rate_rx = samp_rate_rx
|
self.samp_rate_rx = samp_rate_rx
|
||||||
self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx)
|
self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx)
|
||||||
self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0)
|
self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0)
|
||||||
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 500, 4.2e3, 200, firdes.WIN_HAMMING, 6.76))
|
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 700, 3.7e3, 1e3, firdes.WIN_HAMMING, 6.76))
|
||||||
|
|
||||||
def get_first_stage_decimation(self):
|
def get_first_stage_decimation(self):
|
||||||
return self.first_stage_decimation
|
return self.first_stage_decimation
|
||||||
|
|
||||||
def set_first_stage_decimation(self, first_stage_decimation):
|
def set_first_stage_decimation(self, first_stage_decimation):
|
||||||
self.first_stage_decimation = first_stage_decimation
|
self.first_stage_decimation = first_stage_decimation
|
||||||
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 500, 4.2e3, 200, firdes.WIN_HAMMING, 6.76))
|
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 700, 3.7e3, 1e3, firdes.WIN_HAMMING, 6.76))
|
||||||
|
|
||||||
def get_noaa_filter_taps(self):
|
def get_noaa_filter_taps(self):
|
||||||
return self.noaa_filter_taps
|
return self.noaa_filter_taps
|
||||||
|
@ -300,7 +299,7 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
|
|
||||||
def set_initial_bandwidth(self, initial_bandwidth):
|
def set_initial_bandwidth(self, initial_bandwidth):
|
||||||
self.initial_bandwidth = initial_bandwidth
|
self.initial_bandwidth = initial_bandwidth
|
||||||
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 500, 4.2e3, 200, firdes.WIN_HAMMING, 6.76))
|
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 700, 3.7e3, 1e3, firdes.WIN_HAMMING, 6.76))
|
||||||
|
|
||||||
def get_first_stage_filter_taps(self):
|
def get_first_stage_filter_taps(self):
|
||||||
return self.first_stage_filter_taps
|
return self.first_stage_filter_taps
|
||||||
|
@ -314,7 +313,7 @@ class satnogs_noaa_apt_decoder(gr.top_block):
|
||||||
|
|
||||||
def set_audio_decimation(self, audio_decimation):
|
def set_audio_decimation(self, audio_decimation):
|
||||||
self.audio_decimation = audio_decimation
|
self.audio_decimation = audio_decimation
|
||||||
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 500, 4.2e3, 200, firdes.WIN_HAMMING, 6.76))
|
self.band_pass_filter_0.set_taps(firdes.band_pass(6, self.samp_rate_rx/ ( self.first_stage_decimation * int(self.samp_rate_rx/ self.first_stage_decimation / self.initial_bandwidth)) / self.audio_decimation, 700, 3.7e3, 1e3, firdes.WIN_HAMMING, 6.76))
|
||||||
|
|
||||||
|
|
||||||
def argument_parser():
|
def argument_parser():
|
||||||
|
|
Loading…
Reference in New Issue