Improve DUV decoder sensitivity

Due to a large gain in a LPF, large values negatively affected the
quadrature demod filter.
This commit is contained in:
Manolis Surligas 2018-07-30 13:44:37 +03:00
parent a6445b3b00
commit 16854f6495
6 changed files with 85 additions and 14 deletions

View File

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.11'?>
<?grc format='1' created='3.7.13'?>
<flow_graph>
<timestamp>Thu May 5 00:22:45 2016</timestamp>
<block>
@ -72,6 +72,10 @@
<key>run</key>
<value>True</value>
</param>
<param>
<key>sizing_mode</key>
<value>fixed</value>
</param>
<param>
<key>thread_safe_setters</key>
<value></value>
@ -80,6 +84,10 @@
<key>title</key>
<value>AMSAT FOX DUV Decoder</value>
</param>
<param>
<key>placement</key>
<value>(0,0)</value>
</param>
</block>
<block>
<key>variable</key>
@ -319,7 +327,7 @@ TX sampling rate</value>
</param>
<param>
<key>gain</key>
<value>1.0</value>
<value>1.2</value>
</param>
<param>
<key>id</key>
@ -368,6 +376,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -411,6 +423,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>eng_float</value>
@ -564,6 +580,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -607,6 +627,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -752,6 +776,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>intx</value>
@ -795,6 +823,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>intx</value>
@ -838,6 +870,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -940,6 +976,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>eng_float</value>
@ -983,6 +1023,10 @@ TX sampling rate</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -1027,6 +1071,10 @@ we shift the LO a little further</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>eng_float</value>
@ -1158,7 +1206,7 @@ max_modulation_freq = 3000</value>
</param>
<param>
<key>gain</key>
<value>100</value>
<value>1.0</value>
</param>
<param>
<key>id</key>
@ -2630,6 +2678,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>intx</value>
@ -2673,6 +2725,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>eng_float</value>
@ -2716,6 +2772,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>intx</value>
@ -2830,6 +2890,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>eng_float</value>
@ -2873,6 +2937,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>
@ -3378,6 +3446,10 @@ max_modulation_freq = 3000</value>
<key>short_id</key>
<value></value>
</param>
<param>
<key>hide</key>
<value>none</value>
</param>
<param>
<key>type</key>
<value>string</value>

View File

@ -5,7 +5,7 @@
# Title: AMSAT FOX DUV Decoder
# Author: Thanos Giolias (agiolias@csd.uoc.gr), Nikos Karamolegos (karamolegkos.n@gmail.com), Manolis Surligas (surligas@gmail.com)
# Description: A DUV Decoder for the AMSAT FOX satellites
# Generated: Sun Mar 25 17:42:58 2018
# Generated: Mon Jul 30 13:36:42 2018
##################################################
from gnuradio import analog
@ -90,7 +90,7 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block):
self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0)
self.low_pass_filter_1 = filter.fir_filter_fff(100, firdes.low_pass(
100, audio_samp_rate, 195, 10, firdes.WIN_HAMMING, 6.76))
1.0, audio_samp_rate, 195, 10, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass(
1, audio_samp_rate, deviation+max_modulation_freq, 3000, firdes.WIN_HAMMING, 6.76))
self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx)
@ -103,7 +103,9 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block):
taps=None,
fractional_bw=None,
)
self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1.0)
self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1.2)
##################################################
# Connections
@ -285,7 +287,7 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block):
def set_audio_samp_rate(self, audio_samp_rate):
self.audio_samp_rate = audio_samp_rate
self.low_pass_filter_1.set_taps(firdes.low_pass(100, self.audio_samp_rate, 195, 10, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_1.set_taps(firdes.low_pass(1.0, self.audio_samp_rate, 195, 10, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, self.deviation+self.max_modulation_freq, 3000, firdes.WIN_HAMMING, 6.76))
self.digital_clock_recovery_mm_xx_0_0_0.set_omega((self.audio_samp_rate/100.0) / 200)

View File

@ -100,7 +100,7 @@ namespace gr
return true;
}
uint8_t
void
decoder_8b10b_impl::process_10b (uint16_t word, int write_pos)
{
uint16_t diff_bits = 0;

View File

@ -578,7 +578,7 @@ namespace gr
bool
set_access_code (const std::string &access_code);
uint8_t
void
process_10b (uint16_t word, int write_pos);
// Where all the action really happens

View File

@ -79,9 +79,7 @@ namespace gr
case IQ_SINK_STATUS_NULL:
{
return noutput_items;
break;
}
case IQ_SINK_STATUS_ACTIVE:
{
/* update d_fp is required */
@ -112,11 +110,11 @@ namespace gr
}
nwritten += count;
}
return nwritten;
break;
}
}
/* Should never reach here */
return noutput_items;
}
} /* namespace satnogs */

View File

@ -46,7 +46,6 @@ namespace gr
size_t d_num_points;
float d_scale;
int16_t *d_out;
const char *d_filename;
public:
iq_sink_impl (const float scale, const char *filename, bool append,