summaryrefslogtreecommitdiff
path: root/gr-analog/python/analog/fm_demod.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-analog/python/analog/fm_demod.py')
-rw-r--r--gr-analog/python/analog/fm_demod.py59
1 files changed, 32 insertions, 27 deletions
diff --git a/gr-analog/python/analog/fm_demod.py b/gr-analog/python/analog/fm_demod.py
index 1976a076ca..cf99b768d1 100644
--- a/gr-analog/python/analog/fm_demod.py
+++ b/gr-analog/python/analog/fm_demod.py
@@ -28,6 +28,7 @@ try:
except ImportError:
import analog_swig as analog
+
class fm_demod_cf(gr.hier_block2):
"""
Generalized FM demodulation block with deemphasis and audio
@@ -36,7 +37,7 @@ class fm_demod_cf(gr.hier_block2):
This block demodulates a band-limited, complex down-converted FM
channel into the the original baseband signal, optionally applying
deemphasis. Low pass filtering is done on the resultant signal. It
- produces an output float strem in the range of [-1.0, +1.0].
+ produces an output float stream in the range of [-1.0, +1.0].
Args:
channel_rate: incoming sample rate of the FM baseband (integer)
@@ -49,27 +50,30 @@ class fm_demod_cf(gr.hier_block2):
"""
def __init__(self, channel_rate, audio_decim, deviation,
audio_pass, audio_stop, gain=1.0, tau=75e-6):
- gr.hier_block2.__init__(self, "fm_demod_cf",
- gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
- gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
-
- k = channel_rate/(2*pi*deviation)
- QUAD = analog.quadrature_demod_cf(k)
-
- audio_taps = filter.optfir.low_pass(gain, # Filter gain
- channel_rate, # Sample rate
- audio_pass, # Audio passband
- audio_stop, # Audio stopband
- 0.1, # Passband ripple
- 60) # Stopband attenuation
- LPF = filter.fir_filter_fff(audio_decim, audio_taps)
-
- if tau is not None:
- DEEMPH = fm_deemph(channel_rate, tau)
- self.connect(self, QUAD, DEEMPH, LPF, self)
+ gr.hier_block2.__init__(self, "fm_demod_cf",
+ gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+ gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
+
+ k = channel_rate/(2*pi*deviation)
+ QUAD = analog.quadrature_demod_cf(k)
+
+ audio_taps = filter.optfir.low_pass(
+ gain, # Filter gain
+ channel_rate, # Sample rate
+ audio_pass, # Audio passband
+ audio_stop, # Audio stopband
+ 0.1, # Passband ripple
+ 60 # Stopband attenuation
+ )
+ LPF = filter.fir_filter_fff(audio_decim, audio_taps)
+
+ if tau is not None:
+ DEEMPH = fm_deemph(channel_rate, tau)
+ self.connect(self, QUAD, DEEMPH, LPF, self)
else:
self.connect(self, QUAD, LPF, self)
+
class demod_20k0f3e_cf(fm_demod_cf):
"""
NBFM demodulation block, 20 KHz channels
@@ -84,9 +88,10 @@ class demod_20k0f3e_cf(fm_demod_cf):
"""
def __init__(self, channel_rate, audio_decim):
fm_demod_cf.__init__(self, channel_rate, audio_decim,
- 5000, # Deviation
- 3000, # Audio passband frequency
- 4500) # Audio stopband frequency
+ 5000, # Deviation
+ 3000, # Audio passband frequency
+ 4500) # Audio stopband frequency
+
class demod_200kf3e_cf(fm_demod_cf):
"""
@@ -101,8 +106,8 @@ class demod_200kf3e_cf(fm_demod_cf):
audio_decim: input to output decimation rate (integer)
"""
def __init__(self, channel_rate, audio_decim):
- fm_demod_cf.__init__(self, channel_rate, audio_decim,
- 75000, # Deviation
- 15000, # Audio passband
- 16000, # Audio stopband
- 20.0) # Audio gain
+ fm_demod_cf.__init__(self, channel_rate, audio_decim,
+ 75000, # Deviation
+ 15000, # Audio passband
+ 16000, # Audio stopband
+ 20.0) # Audio gain