diff options
author | Tom Rondeau <trondeau@vt.edu> | 2012-07-16 22:43:46 -0400 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2012-07-16 22:43:46 -0400 |
commit | 25166c11ad7e438dd3673edca36b3a23ee8ec0dd (patch) | |
tree | 1285726602c35493aa4f7230c60cf5298aa4e1e7 /gr-digital | |
parent | f51f49c7cd1b5c1bd10c243f479ac8f9ebb3f3d3 (diff) |
digital: fixing narrowband (de)mods and examples to work with gr-digital and gr-filter components.
Diffstat (limited to 'gr-digital')
-rwxr-xr-x | gr-digital/examples/narrowband/benchmark_add_channel.py | 6 | ||||
-rw-r--r-- | gr-digital/examples/narrowband/receive_path.py | 14 | ||||
-rwxr-xr-x | gr-digital/examples/snr_estimators.py | 4 | ||||
-rw-r--r-- | gr-digital/python/bpsk.py | 6 | ||||
-rw-r--r-- | gr-digital/python/gmsk.py | 10 | ||||
-rw-r--r-- | gr-digital/python/pkt.py | 4 | ||||
-rw-r--r-- | gr-digital/python/qpsk.py | 22 |
7 files changed, 35 insertions, 31 deletions
diff --git a/gr-digital/examples/narrowband/benchmark_add_channel.py b/gr-digital/examples/narrowband/benchmark_add_channel.py index 841833a08f..8f2e544fdb 100755 --- a/gr-digital/examples/narrowband/benchmark_add_channel.py +++ b/gr-digital/examples/narrowband/benchmark_add_channel.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr +from gnuradio import gr, filter from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser @@ -43,8 +43,8 @@ class my_top_block(gr.top_block): self.src = gr.file_source(gr.sizeof_gr_complex, ifile) #self.throttle = gr.throttle(gr.sizeof_gr_complex, options.sample_rate) - self.channel = gr.channel_model(noise_voltage, frequency_offset, - time_offset, noise_seed=random.randint(0,100000)) + self.channel = filter.channel_model(noise_voltage, frequency_offset, + time_offset, noise_seed=random.randint(0,100000)) self.phase = gr.multiply_const_cc(complex(math.cos(phase_offset), math.sin(phase_offset))) self.snk = gr.file_sink(gr.sizeof_gr_complex, ofile) diff --git a/gr-digital/examples/narrowband/receive_path.py b/gr-digital/examples/narrowband/receive_path.py index 1f93105068..9aa6dc488d 100644 --- a/gr-digital/examples/narrowband/receive_path.py +++ b/gr-digital/examples/narrowband/receive_path.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru +from gnuradio import gr, gru, filter from gnuradio import eng_notation from gnuradio import digital @@ -61,12 +61,12 @@ class receive_path(gr.hier_block2): # Design filter to get actual channel we want sw_decim = 1 - chan_coeffs = gr.firdes.low_pass (1.0, # gain - sw_decim * self.samples_per_symbol(), # sampling rate - self._chbw_factor, # midpoint of trans. band - 0.5, # width of trans. band - gr.firdes.WIN_HANN) # filter type - self.channel_filter = gr.fft_filter_ccc(sw_decim, chan_coeffs) + chan_coeffs = filter.firdes.low_pass(1.0, # gain + sw_decim * self.samples_per_symbol(), # sampling rate + self._chbw_factor, # midpoint of trans. band + 0.5, # width of trans. band + gr.firdes.WIN_HANN) # filter type + self.channel_filter = filter.fft_filter_ccc(sw_decim, chan_coeffs) # receiver self.packet_receiver = \ diff --git a/gr-digital/examples/snr_estimators.py b/gr-digital/examples/snr_estimators.py index 432abd4553..0603da131d 100755 --- a/gr-digital/examples/snr_estimators.py +++ b/gr-digital/examples/snr_estimators.py @@ -15,7 +15,7 @@ except ImportError: print "Error: Program requires Matplotlib (matplotlib.sourceforge.net)." sys.exit(1) -from gnuradio import gr, digital +from gnuradio import gr, digital, filter from optparse import OptionParser from gnuradio.eng_option import eng_option @@ -147,7 +147,7 @@ def main(): gr_src = gr.vector_source_c(bits.tolist(), False) gr_snr = digital.mpsk_snr_est_cc(gr_est, ntag, 0.001) - gr_chn = gr.channel_model(1.0/scale) + gr_chn = filter.channel_model(1.0/scale) gr_snk = gr.null_sink(gr.sizeof_gr_complex) tb = gr.top_block() tb.connect(gr_src, gr_chn, gr_snr, gr_snk) diff --git a/gr-digital/python/bpsk.py b/gr-digital/python/bpsk.py index 9f2354003c..d55db15256 100644 --- a/gr-digital/python/bpsk.py +++ b/gr-digital/python/bpsk.py @@ -116,8 +116,7 @@ class dbpsk_mod(bpsk_mod): It exists purely to simplify generation of the block in grc. """ - super(dbpsk_mod, self).__init__(differential=True, - *args, **kwargs) + super(dbpsk_mod, self).__init__(*args, **kwargs) # ///////////////////////////////////////////////////////////////////////////// # DBPSK demodulator @@ -140,8 +139,7 @@ class dbpsk_demod(bpsk_demod): It exists purely to simplify generation of the block in grc. """ - super(dbpsk_demod, self).__init__(differential=True, - *args, **kwargs) + super(dbpsk_demod, self).__init__(*args, **kwargs) # # Add these to the mod/demod registry diff --git a/gr-digital/python/gmsk.py b/gr-digital/python/gmsk.py index 2c9be056c2..cc6af9ffff 100644 --- a/gr-digital/python/gmsk.py +++ b/gr-digital/python/gmsk.py @@ -32,6 +32,12 @@ import numpy from pprint import pprint import inspect +try: + from gnuradio import filter +except ImportError: + import filter_swig as filter + + # default values (used in __init__ and add_options) _def_samples_per_symbol = 2 _def_bt = 0.35 @@ -92,7 +98,7 @@ class gmsk_mod(gr.hier_block2): sensitivity = (pi / 2) / samples_per_symbol # phase change per bit = pi / 2 # Turn it into NRZ data. - self.nrz = gr.bytes_to_syms() + self.nrz = digital.bytes_to_syms() # Form Gaussian filter # Generate Gaussian response (Needs to be convolved with window below). @@ -105,7 +111,7 @@ class gmsk_mod(gr.hier_block2): self.sqwave = (1,) * samples_per_symbol # rectangular window self.taps = numpy.convolve(numpy.array(self.gaussian_taps),numpy.array(self.sqwave)) - self.gaussian_filter = gr.interp_fir_filter_fff(samples_per_symbol, self.taps) + self.gaussian_filter = filter.interp_fir_filter_fff(samples_per_symbol, self.taps) # FM modulation self.fmmod = gr.frequency_modulator_fc(sensitivity) diff --git a/gr-digital/python/pkt.py b/gr-digital/python/pkt.py index 09254a7caa..b294066f17 100644 --- a/gr-digital/python/pkt.py +++ b/gr-digital/python/pkt.py @@ -23,7 +23,7 @@ from math import pi from gnuradio import gr import gnuradio.gr.gr_threading as _threading import packet_utils -import digital_swig +import digital_swig as digital # ///////////////////////////////////////////////////////////////////////////// @@ -141,7 +141,7 @@ class demod_pkts(gr.hier_block2): threshold = 12 # FIXME raise exception self._rcvd_pktq = gr.msg_queue() # holds packets from the PHY - self.correlator = digital_swig.correlate_access_code_bb(access_code, threshold) + self.correlator = digital.correlate_access_code_bb(access_code, threshold) self.framer_sink = digital.framer_sink_1(self._rcvd_pktq) self.connect(self, self._demodulator, self.correlator, self.framer_sink) diff --git a/gr-digital/python/qpsk.py b/gr-digital/python/qpsk.py index 2fdeabd40f..d6c06bc83f 100644 --- a/gr-digital/python/qpsk.py +++ b/gr-digital/python/qpsk.py @@ -28,7 +28,7 @@ Demodulation is not included since the generic_mod_demod from gnuradio import gr from gnuradio.digital.generic_mod_demod import generic_mod, generic_demod from utils import mod_codes -import digital_swig +import digital_swig as digital import modulation_utils # The default encoding (e.g. gray-code, set-partition) @@ -41,7 +41,7 @@ _def_mod_code = mod_codes.GRAY_CODE def qpsk_constellation(mod_code=_def_mod_code): if mod_code != mod_codes.GRAY_CODE: raise ValueError("This QPSK mod/demod works only for gray-coded constellations.") - return digital_swig.constellation_qpsk() + return digital.constellation_qpsk() # ///////////////////////////////////////////////////////////////////////////// # QPSK modulator @@ -62,12 +62,12 @@ class qpsk_mod(generic_mod): pre_diff_code = True if not differential: - constellation = digital_swig.constellation_qpsk() + constellation = digital.constellation_qpsk() if mod_code != mod_codes.GRAY_CODE: raise ValueError("This QPSK mod/demod works only for gray-coded constellations.") else: - constellation = digital_swig.constellation_dqpsk() - if mod_code not in (mod_codes.GRAY_CODE or mod_codes.NO_CODE): + constellation = digital.constellation_dqpsk() + if mod_code not in set([mod_codes.GRAY_CODE, mod_codes.NO_CODE]): raise ValueError("That mod_code is not supported for DQPSK mod/demod.") if mod_code == mod_codes.NO_CODE: pre_diff_code = False @@ -98,12 +98,12 @@ class qpsk_demod(generic_demod): pre_diff_code = True if not differential: - constellation = digital_swig.constellation_qpsk() + constellation = digital.constellation_qpsk() if mod_code != mod_codes.GRAY_CODE: raise ValueError("This QPSK mod/demod works only for gray-coded constellations.") else: - constellation = digital_swig.constellation_dqpsk() - if mod_code not in (mod_codes.GRAY_CODE or mod_codes.NO_CODE): + constellation = digital.constellation_dqpsk() + if mod_code not in set([mod_codes.GRAY_CODE, mod_codes.NO_CODE]): raise ValueError("That mod_code is not supported for DQPSK mod/demod.") if mod_code == mod_codes.NO_CODE: pre_diff_code = False @@ -121,7 +121,7 @@ class qpsk_demod(generic_demod): def dqpsk_constellation(mod_code=_def_mod_code): if mod_code != mod_codes.GRAY_CODE: raise ValueError("The DQPSK constellation is only generated for gray_coding. But it can be used for non-grayed coded modulation if one doesn't use the pre-differential code.") - return digital_swig.constellation_dqpsk() + return digital.constellation_dqpsk() # ///////////////////////////////////////////////////////////////////////////// # DQPSK modulator @@ -138,7 +138,7 @@ class dqpsk_mod(qpsk_mod): See generic_mod block for list of parameters. """ - super(dqpsk_mod, self).__init__(mod_code, differential=True, + super(dqpsk_mod, self).__init__(mod_code, *args, **kwargs) # ///////////////////////////////////////////////////////////////////////////// @@ -158,7 +158,7 @@ class dqpsk_demod(qpsk_demod): See generic_demod block for list of parameters. """ - super(dqpsk_demod, self).__init__(mod_code, differential=True, + super(dqpsk_demod, self).__init__(mod_code, *args, **kwargs) # |