summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-digital/python/generic_mod_demod.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/gr-digital/python/generic_mod_demod.py b/gr-digital/python/generic_mod_demod.py
index da8e2cfd9..9378e2d61 100644
--- a/gr-digital/python/generic_mod_demod.py
+++ b/gr-digital/python/generic_mod_demod.py
@@ -265,8 +265,9 @@ class generic_demod(gr.hier_block2):
self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100)
# Frequency correction
+ fll_ntaps = 55
self.freq_recov = digital_swig.fll_band_edge_cc(self._samples_per_symbol, self._excess_bw,
- ntaps, self._freq_bw)
+ fll_ntaps, self._freq_bw)
# symbol timing recovery with RRC data filter
taps = gr.firdes.root_raised_cosine(nfilts, nfilts*self._samples_per_symbol,
@@ -275,6 +276,9 @@ class generic_demod(gr.hier_block2):
self._timing_bw, taps,
nfilts, nfilts//2, self._timing_max_dev)
+ # Perform phase / fine frequency correction
+ self.phase_recov = digital_swig.costas_loop_cc(self._phase_bw, arity)
+
fmin = -0.25
fmax = 0.25
self.receiver = digital_swig.constellation_receiver_cb(
@@ -283,7 +287,8 @@ class generic_demod(gr.hier_block2):
# Do differential decoding based on phase change of symbols
if differential:
- self.diffdec = gr.diff_decoder_bb(arity)
+ #self.diffdec = gr.diff_decoder_bb(arity)
+ self.diffdec = gr.diff_phasor_cc()
if self._constellation.apply_pre_diff_code():
self.symbol_mapper = gr.map_bb(
@@ -292,16 +297,23 @@ class generic_demod(gr.hier_block2):
# unpack the k bit vector into a stream of bits
self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol())
+ p = 1*math.pi/4.0
+ c = complex(math.sin(p), math.cos(p))
+ self.rotate = gr.multiply_const_cc(c)
+
if verbose:
self._print_verbage()
if log:
self._setup_logging()
-
+
# Connect and Initialize base class
- blocks = [self, self.agc, self.freq_recov, self.time_recov, self.receiver]
+ blocks = [self, self.agc, self.freq_recov, self.time_recov]
if differential:
blocks.append(self.diffdec)
+ blocks.append(self.rotate)
+ blocks.append(self.receiver)
+
if self._constellation.apply_pre_diff_code():
blocks.append(self.symbol_mapper)
blocks += [self.unpack, self]
@@ -351,7 +363,8 @@ class generic_demod(gr.hier_block2):
gr.file_sink(gr.sizeof_float, "rx_receiver_freq.32f"))
if self._differential:
self.connect(self.diffdec,
- gr.file_sink(gr.sizeof_char, "rx_diffdec.8b"))
+ gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.8b"))
+ #gr.file_sink(gr.sizeof_char, "rx_diffdec.8b"))
if self._constellation.apply_pre_diff_code():
self.connect(self.symbol_mapper,
gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.8b"))