[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4216 - gnuradio/branches/developers/trondeau/digital-
From: |
trondeau |
Subject: |
[Commit-gnuradio] r4216 - gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl |
Date: |
Tue, 2 Jan 2007 07:45:28 -0700 (MST) |
Author: trondeau
Date: 2007-01-02 07:45:28 -0700 (Tue, 02 Jan 2007)
New Revision: 4216
Modified:
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/d8psk.py
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dqpsk.py
Log:
modified PSK demodulators to use new MPSK receiver for original hier_blocks
Modified:
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/d8psk.py
===================================================================
---
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/d8psk.py
2007-01-02 14:43:35 UTC (rev 4215)
+++
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/d8psk.py
2007-01-02 14:45:28 UTC (rev 4216)
@@ -39,14 +39,14 @@
_def_verbose = False
_def_log = False
-_def_costas_alpha = None
-_def_gain_mu = 7.5e-3
-_def_mu = 0.00
-_def_omega_relative_limit = 0.001
+_def_costas_alpha = 0.01
+_def_gain_mu = 0.05
+_def_mu = 0.5
+_def_omega_relative_limit = 0.005
# /////////////////////////////////////////////////////////////////////////////
-# DQPSK modulator
+# D8PSK modulator
# /////////////////////////////////////////////////////////////////////////////
class d8psk_mod(gr.hier_block):
@@ -221,9 +221,9 @@
self._samples_per_symbol = samples_per_symbol
self._excess_bw = excess_bw
self._costas_alpha = costas_alpha
- self._gain_mu = gain_mu
- self._mu = mu
- self._omega_relative_limit = omega_relative_limit
+ self._mm_gain_mu = gain_mu
+ self._mm_mu = mu
+ self._mm_omega_relative_limit = omega_relative_limit
self._gray_code = gray_code
if samples_per_symbol < 2:
@@ -237,37 +237,31 @@
#self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100)
self.agc = gr.feedforward_agc_cc(16, 1.0)
- if 0:
- # Costas loop (carrier tracking)
- if self._costas_alpha is None: # If no alpha value was specified
by the user
- alpha_dir = {2:0.075, 3:0.09, 4:0.09, 5:0.095, 6:0.10, 7:0.105}
- self._costas_alpha = alpha_dir[self._samples_per_symbol]
-
- costas_order = 4
- # The value of beta is now set to be underdamped; this value can
have a huge impact on the
- # performance of QPSK. Set to 0.25 for critically damped or higher
for underdamped responses.
- beta = .35 * self._costas_alpha * self._costas_alpha
- self.costas_loop = gr.costas_loop_cc(self._costas_alpha, beta,
0.02, -0.02, costas_order)
-
# RRC data filter
ntaps = 11 * samples_per_symbol
self.rrc_taps = gr.firdes.root_raised_cosine(
- self._samples_per_symbol, # gain
+ 1.0, # gain
self._samples_per_symbol, # sampling rate
1.0, # symbol rate
self._excess_bw, # excess bandwidth (roll-off factor)
ntaps)
+ self.rrc_filter=gr.interp_fir_filter_ccf(1, self.rrc_taps)
- self.rrc_filter=gr.fir_filter_ccf(1, self.rrc_taps)
-
# symbol clock recovery
- omega = self._samples_per_symbol
- gain_omega = .25 * self._gain_mu * self._gain_mu
- self.clock_recovery=gr.clock_recovery_mm_cc(omega, gain_omega,
- self._mu, self._gain_mu,
- self._omega_relative_limit)
+ self._mm_omega = self._samples_per_symbol
+ self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu
+ self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha
+ fmin = -0.05
+ fmax = 0.05
- self.diffdec = gr.diff_decoder_bb(arity)
+ self.receiver=gr.mpsk_receiver_cc(arity, 0,
+ self._costas_alpha, self._costas_beta,
+ fmin, fmax,
+ self._mm_mu, self._mm_gain_mu,
+ self._mm_omega, self._mm_gain_omega,
+ self._mm_omega_relative_limit)
+
+ #self.diffdec = gr.diff_decoder_bb(arity)
# find closest constellation point
rot = 1
@@ -290,16 +284,8 @@
self._setup_logging()
# Connect & Initialize base class
- if 0:
- 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:
- self._fg.connect(self.pre_scaler, self.agc, #self.costas_loop,
- self.rrc_filter, self.clock_recovery,
- self.slicer, self.symbol_mapper,
- self.unpack)
+ self._fg.connect(self.pre_scaler, self.agc, self.rrc_filter,
self.receiver,
+ self.slicer, self.symbol_mapper, self.unpack)
gr.hier_block.__init__(self, self._fg, self.pre_scaler, self.unpack)
def samples_per_symbol(self):
@@ -310,13 +296,17 @@
bits_per_symbol = staticmethod(bits_per_symbol) # make it a static
method. RTFM
def _print_verbage(self):
- 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
- 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
+ print "\nDemodulator:"
+ 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: %.2e" % self._costas_alpha
+ print "Costas Loop beta: %.2e" % self._costas_beta
+ print "M&M mu: %.2f" % self._mm_mu
+ print "M&M mu gain: %.2e" % self._mm_gain_mu
+ print "M&M omega: %.2f" % self._mm_omega
+ print "M&M omega gain: %.2e" % self._mm_gain_omega
+ print "M&M omega limit: %.2f" % self._mm_omega_relative_limit
def _setup_logging(self):
@@ -325,16 +315,10 @@
gr.file_sink(gr.sizeof_gr_complex,
"rx_prescaler.dat"))
self._fg.connect(self.agc,
gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat"))
-# self._fg.connect(self.costas_loop,
-# gr.file_sink(gr.sizeof_gr_complex,
"rx_costas_loop.dat"))
-# self._fg.connect((self.costas_loop,1),
-# gr.file_sink(gr.sizeof_gr_complex,
"rx_costas_error.dat"))
self._fg.connect(self.rrc_filter,
gr.file_sink(gr.sizeof_gr_complex,
"rx_rrc_filter.dat"))
- self._fg.connect(self.clock_recovery,
- gr.file_sink(gr.sizeof_gr_complex,
"rx_clock_recovery.dat"))
- self._fg.connect((self.clock_recovery,1),
- gr.file_sink(gr.sizeof_gr_complex,
"rx_clock_recovery_error.dat"))
+ self._fg.connect(self.clock_receiver,
+ gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat"))
self._fg.connect(self.slicer,
gr.file_sink(gr.sizeof_char, "rx_slicer.dat"))
# self._fg.connect(self.diffdec,
Modified:
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py
===================================================================
---
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py
2007-01-02 14:43:35 UTC (rev 4215)
+++
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dbpsk.py
2007-01-02 14:45:28 UTC (rev 4216)
@@ -39,9 +39,9 @@
_def_verbose = False
_def_log = False
-_def_costas_alpha = None
-_def_gain_mu = 0.03
-_def_mu = 0.05
+_def_costas_alpha = 0.01
+_def_gain_mu = 0.05
+_def_mu = 0.5
_def_omega_relative_limit = 0.005
@@ -100,7 +100,6 @@
self.diffenc = gr.diff_encoder_bb(arity)
- print psk.constellation[arity]
self.chunks2symbols = gr.chunks_to_symbols_bc(psk.constellation[arity])
# pulse shaping filter
@@ -155,9 +154,10 @@
def _print_verbage(self):
- 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 "\nModulator:"
+ 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
def _setup_logging(self):
print "Modulation logging turned on."
@@ -223,9 +223,9 @@
self._samples_per_symbol = samples_per_symbol
self._excess_bw = excess_bw
self._costas_alpha = costas_alpha
- self._gain_mu = gain_mu
- self._mu = mu
- self._omega_relative_limit = omega_relative_limit
+ self._mm_gain_mu = gain_mu
+ self._mm_mu = mu
+ self._mm_omega_relative_limit = omega_relative_limit
self._gray_code = gray_code
if samples_per_symbol < 2:
@@ -239,32 +239,29 @@
#self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100)
self.agc = gr.feedforward_agc_cc(16, 1.0)
-
- # Costas loop (carrier tracking)
- # 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
+ ntaps = 11 * samples_per_symbol
self.rrc_taps = gr.firdes.root_raised_cosine(
- 1.0, # gain
+ 1.0, # gain
self._samples_per_symbol, # sampling rate
1.0, # symbol rate
self._excess_bw, # excess bandwidth (roll-off factor)
ntaps)
+ self.rrc_filter=gr.interp_fir_filter_ccf(1, self.rrc_taps)
- self.rrc_filter=gr.fir_filter_ccf(1, self.rrc_taps)
-
# symbol clock recovery
- omega = self._samples_per_symbol
- gain_omega = .25 * self._gain_mu * self._gain_mu
- self.clock_recovery=gr.clock_recovery_mm_cc(omega, gain_omega,
- self._mu, self._gain_mu,
- self._omega_relative_limit)
+ self._mm_omega = self._samples_per_symbol
+ self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu
+ self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha
+ fmin = -0.05
+ fmax = 0.05
+
+ self.receiver=gr.mpsk_receiver_cc(arity, 0,
+ self._costas_alpha, self._costas_beta,
+ fmin, fmax,
+ self._mm_mu, self._mm_gain_mu,
+ self._mm_omega, self._mm_gain_omega,
+ self._mm_omega_relative_limit)
# find closest constellation point
rot = 1
@@ -291,15 +288,8 @@
self._setup_logging()
# Connect and Initialize base class
- 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)
- self._fg.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex,
"dbpsk_in.dat"))
+ self._fg.connect(self.pre_scaler, self.agc, self.rrc_filter,
self.receiver,
+ self.diffdec, self.slicer, self.symbol_mapper,
self.unpack)
gr.hier_block.__init__(self, self._fg, self.pre_scaler, self.unpack)
def samples_per_symbol(self):
@@ -310,42 +300,36 @@
bits_per_symbol = staticmethod(bits_per_symbol) # make it a static
method. RTFM
def _print_verbage(self):
- 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
- 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
+ print "\nDemodulator:"
+ 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: %.2e" % self._costas_alpha
+ print "Costas Loop beta: %.2e" % self._costas_beta
+ print "M&M mu: %.2f" % self._mm_mu
+ print "M&M mu gain: %.2e" % self._mm_gain_mu
+ print "M&M omega: %.2f" % self._mm_omega
+ print "M&M omega gain: %.2e" % self._mm_gain_omega
+ print "M&M omega limit: %.2f" % self._mm_omega_relative_limit
def _setup_logging(self):
print "Modulation logging turned on."
self._fg.connect(self.pre_scaler,
- gr.file_sink(gr.sizeof_gr_complex, "prescaler.dat"))
+ gr.file_sink(gr.sizeof_gr_complex,
"rx_prescaler.dat"))
self._fg.connect(self.agc,
- gr.file_sink(gr.sizeof_gr_complex, "agc.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"))
+ gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat"))
self._fg.connect(self.rrc_filter,
- gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat"))
- self._fg.connect(self.clock_recovery,
- gr.file_sink(gr.sizeof_gr_complex,
"clock_recovery.dat"))
- self._fg.connect((self.clock_recovery,1),
- gr.file_sink(gr.sizeof_gr_complex,
"clock_recovery_error.dat"))
+ gr.file_sink(gr.sizeof_gr_complex,
"rx_rrc_filter.dat"))
+ self._fg.connect(self.receiver,
+ gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat"))
self._fg.connect(self.diffdec,
- gr.file_sink(gr.sizeof_gr_complex, "diffdec.dat"))
+ gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat"))
self._fg.connect(self.slicer,
- gr.file_sink(gr.sizeof_char, "slicer.dat"))
+ gr.file_sink(gr.sizeof_char, "rx_slicer.dat"))
self._fg.connect(self.symbol_mapper,
- gr.file_sink(gr.sizeof_char, "symbol_mapper.dat"))
+ gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat"))
self._fg.connect(self.unpack,
- gr.file_sink(gr.sizeof_char, "unpack.dat"))
+ gr.file_sink(gr.sizeof_char, "rx_unpack.dat"))
def add_options(parser):
"""
Modified:
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dqpsk.py
===================================================================
---
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dqpsk.py
2007-01-02 14:43:35 UTC (rev 4215)
+++
gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl/dqpsk.py
2007-01-02 14:45:28 UTC (rev 4216)
@@ -39,9 +39,9 @@
_def_verbose = False
_def_log = False
-_def_costas_alpha = None
-_def_gain_mu = 0.01
-_def_mu = 0.00
+_def_costas_alpha = 0.01
+_def_gain_mu = 0.05
+_def_mu = 0.5
_def_omega_relative_limit = 0.005
@@ -133,9 +133,10 @@
bits_per_symbol = staticmethod(bits_per_symbol) # make it a static
method. RTFM
def _print_verbage(self):
- print "bits per symbol = %d" % self.bits_per_symbol()
- print "Gray code = %s" % self._gray_code
- print "RRS roll-off factor = %f" % self._excess_bw
+ print "\nModulator:"
+ print "bits per symbol: %d" % self.bits_per_symbol()
+ print "Gray code: %s" % self._gray_code
+ print "RRS roll-off factor: %f" % self._excess_bw
def _setup_logging(self):
print "Modulation logging turned on."
@@ -221,9 +222,9 @@
self._samples_per_symbol = samples_per_symbol
self._excess_bw = excess_bw
self._costas_alpha = costas_alpha
- self._gain_mu = gain_mu
- self._mu = mu
- self._omega_relative_limit = omega_relative_limit
+ self._mm_gain_mu = gain_mu
+ self._mm_mu = mu
+ self._mm_omega_relative_limit = omega_relative_limit
self._gray_code = gray_code
if samples_per_symbol < 2:
@@ -236,34 +237,29 @@
self.pre_scaler = gr.multiply_const_cc(scale) # scale the signal
from full-range to +-1
self.agc = gr.feedforward_agc_cc(16, 1.0)
- # Costas loop (carrier tracking)
- if self._costas_alpha is None: # If no alpha value was specified by
the user
- alpha_dir = {2:0.075, 3:0.09, 4:0.09, 5:0.095, 6:0.10, 7:0.105}
- self._costas_alpha = alpha_dir[self._samples_per_symbol]
-
- costas_order = 4
- # The value of beta is now set to be underdamped; this value can have
a huge impact on the
- # performance of QPSK. Set to 0.25 for critically damped or higher for
underdamped responses.
- beta = .35 * self._costas_alpha * self._costas_alpha
- self.costas_loop = gr.costas_loop_cc(self._costas_alpha, beta, 0.02,
-0.02, costas_order)
-
# RRC data filter
ntaps = 11 * samples_per_symbol
self.rrc_taps = gr.firdes.root_raised_cosine(
- self._samples_per_symbol, # gain
+ 1.0, # gain
self._samples_per_symbol, # sampling rate
1.0, # symbol rate
self._excess_bw, # excess bandwidth (roll-off factor)
ntaps)
+ self.rrc_filter=gr.interp_fir_filter_ccf(1, self.rrc_taps)
- self.rrc_filter=gr.fir_filter_ccf(1, self.rrc_taps)
-
# symbol clock recovery
- omega = self._samples_per_symbol
- gain_omega = .25 * self._gain_mu * self._gain_mu
- self.clock_recovery=gr.clock_recovery_mm_cc(omega, gain_omega,
- self._mu, self._gain_mu,
- self._omega_relative_limit)
+ self._mm_omega = self._samples_per_symbol
+ self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu
+ self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha
+ fmin = -0.05
+ fmax = 0.05
+
+ self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0,
+ self._costas_alpha,
self._costas_beta,
+ fmin, fmax,
+ self._mm_mu, self._mm_gain_mu,
+ self._mm_omega, self._mm_gain_omega,
+ self._mm_omega_relative_limit)
self.diffdec = gr.diff_decoder_bb(arity)
@@ -289,10 +285,8 @@
self._setup_logging()
# Connect & Initialize base class
- self._fg.connect(self.pre_scaler, self.agc, self.costas_loop,
- self.rrc_filter, self.clock_recovery,
- self.slicer, self.diffdec, self.symbol_mapper,
- self.unpack)
+ self._fg.connect(self.pre_scaler, self.agc, self.rrc_filter,
self.receiver,
+ self.slicer, self.diffdec, self.symbol_mapper,
self.unpack)
gr.hier_block.__init__(self, self._fg, self.pre_scaler, self.unpack)
def samples_per_symbol(self):
@@ -303,14 +297,17 @@
bits_per_symbol = staticmethod(bits_per_symbol) # make it a static
method. RTFM
def _print_verbage(self):
- 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
- 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
-
+ print "\nDemodulator:"
+ 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: %.2e" % self._costas_alpha
+ print "Costas Loop beta: %.2e" % self._costas_beta
+ print "M&M mu: %.2f" % self._mm_mu
+ print "M&M mu gain: %.2e" % self._mm_gain_mu
+ print "M&M omega: %.2f" % self._mm_omega
+ print "M&M omega gain: %.2e" % self._mm_gain_omega
+ print "M&M omega limit: %.2f" % self._mm_omega_relative_limit
def _setup_logging(self):
print "Modulation logging turned on."
@@ -318,16 +315,10 @@
gr.file_sink(gr.sizeof_gr_complex,
"rx_prescaler.dat"))
self._fg.connect(self.agc,
gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat"))
- self._fg.connect(self.costas_loop,
- gr.file_sink(gr.sizeof_gr_complex,
"rx_costas_loop.dat"))
- self._fg.connect((self.costas_loop,1),
- gr.file_sink(gr.sizeof_gr_complex,
"rx_costas_error.dat"))
self._fg.connect(self.rrc_filter,
gr.file_sink(gr.sizeof_gr_complex,
"rx_rrc_filter.dat"))
- self._fg.connect(self.clock_recovery,
- gr.file_sink(gr.sizeof_gr_complex,
"rx_clock_recovery.dat"))
- self._fg.connect((self.clock_recovery,1),
- gr.file_sink(gr.sizeof_gr_complex,
"rx_clock_recovery_error.dat"))
+ self._fg.connect(self.receiver,
+ gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat"))
self._fg.connect(self.diffdec,
gr.file_sink(gr.sizeof_char, "rx_diffdec.dat"))
self._fg.connect(self.slicer,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4216 - gnuradio/branches/developers/trondeau/digital-wip2/gnuradio-core/src/python/gnuradio/blksimpl,
trondeau <=