X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Fpython%2Fgnuradio%2Fblksimpl%2Fdbpsk.py;h=cf38f02e6cfe55fcaaf273c9d6a1b7bbeb2c3900;hb=b78ae1de4d9bbde942e5e7556630d7ccd8161c30;hp=7df4f240c5178c131addaffbb2bc361b29cdedce;hpb=0cfd4875e519e2b1ee05d074f72ec67391ed13bf;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py b/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py index 7df4f240..cf38f02e 100644 --- a/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py +++ b/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py @@ -39,7 +39,7 @@ _def_gray_code = True _def_verbose = False _def_log = False -_def_costas_alpha = 0.05 +_def_costas_alpha = None _def_gain_mu = 0.03 _def_mu = 0.05 _def_omega_relative_limit = 0.005 @@ -241,10 +241,12 @@ class dbpsk_demod(gr.hier_block): # Costas loop (carrier tracking) - # FIXME: need to decide how to handle this more generally; do we pull it from higher layer? - costas_order = 2 - beta = .25 * self._costas_alpha * self._costas_alpha - self.costas_loop = gr.costas_loop_cc(self._costas_alpha, beta, 0.002, -0.002, costas_order) + # The Costas loop is not needed for BPSK, though it can help. Turn the Costas loop on + # by setting an alpha value not None. + if self._costas_alpha is not None: + costas_order = 2 + beta = .25 * self._costas_alpha * self._costas_alpha + self.costas_loop = gr.costas_loop_cc(self._costas_alpha, beta, 0.002, -0.002, costas_order) # RRC data filter ntaps = 11 * self._samples_per_symbol @@ -289,9 +291,14 @@ class dbpsk_demod(gr.hier_block): self._setup_logging() # Connect and Initialize base class - self._fg.connect(self.pre_scaler, self.agc, self.costas_loop, - self.rrc_filter, self.clock_recovery, self.diffdec, - self.slicer, self.symbol_mapper, self.unpack) + if self._costas_alpha is not None: # With Costas Loop + self._fg.connect(self.pre_scaler, self.agc, self.costas_loop, + self.rrc_filter, self.clock_recovery, self.diffdec, + self.slicer, self.symbol_mapper, self.unpack) + else: # Without Costas Loop + self._fg.connect(self.pre_scaler, self.agc, + self.rrc_filter, self.clock_recovery, self.diffdec, + self.slicer, self.symbol_mapper, self.unpack) gr.hier_block.__init__(self, self._fg, self.pre_scaler, self.unpack) @@ -306,7 +313,10 @@ class dbpsk_demod(gr.hier_block): print "bits per symbol = %d" % self.bits_per_symbol() print "Gray code = %s" % self._gray_code print "RRC roll-off factor = %.2f" % self._excess_bw - print "Costas Loop alpha = %.5f" % self._costas_alpha + if self._costas_alpha is not None: + print "Costas Loop alpha = %.5f" % self._costas_alpha + else: + print "Costas Loop is turned off" print "M&M symbol sync gain = %.5f" % self._gain_mu print "M&M symbol sync mu = %.5f" % self._mu print "M&M omega relative limit = %.5f" % self._omega_relative_limit @@ -317,10 +327,11 @@ class dbpsk_demod(gr.hier_block): gr.file_sink(gr.sizeof_gr_complex, "prescaler.dat")) self._fg.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex, "agc.dat")) - self._fg.connect(self.costas_loop, - gr.file_sink(gr.sizeof_gr_complex, "costas_loop.dat")) - self._fg.connect((self.costas_loop,1), - gr.file_sink(gr.sizeof_gr_complex, "costas_error.dat")) + if self._costas_alpha is not None: + self._fg.connect(self.costas_loop, + gr.file_sink(gr.sizeof_gr_complex, "costas_loop.dat")) + self._fg.connect((self.costas_loop,1), + gr.file_sink(gr.sizeof_gr_complex, "costas_error.dat")) self._fg.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat")) self._fg.connect(self.clock_recovery,