From: Johnathan Corgan Date: Thu, 29 Oct 2009 18:07:15 +0000 (-0700) Subject: Added GRC block wrappers for pager blocks X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=34c64290e3146b50053494839847e9f894d98493;p=debian%2Fgnuradio Added GRC block wrappers for pager blocks pager.slicer_fb pager.flex_sync pager.flex_deinterleave --- diff --git a/config/grc_gr_pager.m4 b/config/grc_gr_pager.m4 index 3f36dfff..cdd6177a 100644 --- a/config/grc_gr_pager.m4 +++ b/config/grc_gr_pager.m4 @@ -27,6 +27,7 @@ AC_DEFUN([GRC_GR_PAGER],[ gr-pager/Makefile \ gr-pager/gnuradio-pager.pc \ gr-pager/apps/Makefile \ + gr-pager/grc/Makefile \ gr-pager/lib/Makefile \ gr-pager/python/Makefile \ gr-pager/python/run_tests \ diff --git a/gr-pager/Makefile.am b/gr-pager/Makefile.am index c302cd5d..002387c0 100644 --- a/gr-pager/Makefile.am +++ b/gr-pager/Makefile.am @@ -24,7 +24,7 @@ include $(top_srcdir)/Makefile.common SUBDIRS = lib if PYTHON -SUBDIRS += swig python apps +SUBDIRS += swig python apps grc endif pkgconfigdir = $(libdir)/pkgconfig diff --git a/gr-pager/apps/usrp_rx_flex.grc b/gr-pager/apps/usrp_rx_flex.grc index bf3d9abc..b9461a57 100644 --- a/gr-pager/apps/usrp_rx_flex.grc +++ b/gr-pager/apps/usrp_rx_flex.grc @@ -1,6 +1,6 @@ - Thu Oct 29 08:08:45 2009 + Thu Oct 29 11:01:22 2009 options @@ -368,73 +368,6 @@ 0 - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - Channel Waveform - - - samp_rate - channel_rate - - - v_scale - 8e3 - - - v_offset - 0 - - - t_scale - 20.0/channel_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - win_size - - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (594, 620) - - - _rotation - 0 - - wxgui_fftsink2 @@ -1152,6 +1085,75 @@ 0 + + gr_quadrature_demod_cf + + id + fm_demod + + + _enabled + True + + + gain + demod_k + + + _coordinate + (599, 774) + + + _rotation + 0 + + + + variable + + id + baseband_rate + + + _enabled + True + + + value + 16000 + + + _coordinate + (1019, 17) + + + _rotation + 0 + + + + variable + + id + nchan_taps + + + _enabled + True + + + value + len(channel_taps) + + + _coordinate + (412, 931) + + + _rotation + 0 + + variable @@ -1164,11 +1166,119 @@ value - channel_rate/symbol_rate + int(channel_rate/symbol_rate) + + + _coordinate + (850, 863) + + + _rotation + 0 + + + + variable + + id + bb_interp + + + _enabled + True + + + value + 5 + + + _coordinate + (938, 862) + + + _rotation + 0 + + + + virtual_sink + + id + virtual_sink_0 + + + _enabled + True + + + stream_id + baseband + + + _coordinate + (1100, 774) + + + _rotation + 0 + + + + blks2_rational_resampler_xxx + + id + resampler + + + _enabled + True + + + type + fff + + + decim + bb_decim + + + interp + bb_interp + + + taps + [1.0/ma_ntaps,]*ma_ntaps*bb_interp + + + fractional_bw + 0 + + + _coordinate + (851, 750) + + + _rotation + 0 + + + + variable + + id + bb_decim + + + _enabled + True + + + value + 8 _coordinate - (833, 851) + (1027, 864) _rotation @@ -1227,7 +1337,7 @@ grid_pos - 1, 0, 1, 1 + 0, 0, 1, 1 notebook @@ -1235,7 +1345,7 @@ _coordinate - (1029, 586) + (851, 586) _rotation @@ -1243,22 +1353,45 @@ - gr_quadrature_demod_cf + virtual_source id - fm_demod + virtual_source_0 _enabled True - gain - demod_k + stream_id + baseband _coordinate - (599, 774) + (79, 1186) + + + _rotation + 0 + + + + pager_slicer_fb + + id + pager_slicer_fb_0 + + + _enabled + True + + + alpha + 1e-6 + + + _coordinate + (304, 1186) _rotation @@ -1266,10 +1399,10 @@ - gr_moving_average_xx + wxgui_scopesink2 id - gr_moving_average_xx_0 + wxgui_scopesink2_0 _enabled @@ -1280,20 +1413,90 @@ float - length - 8 + title + Slicer Output - scale - 1.0/8.0 + samp_rate + baseband_rate - max_iter - 4000 + v_scale + 1 + + + v_offset + 0 + + + t_scale + 40.0/baseband_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + win_size + + + + grid_pos + 1,0,1,1 + + + notebook + displays, 1 + + + _coordinate + (75, 1044) + + + _rotation + 180 + + + + gr_char_to_float + + id + gr_char_to_float_0 + + + _enabled + False + + + _coordinate + (325, 1088) + + + _rotation + 180 + + + + pager_flex_sync + + id + pager_flex_sync_0 + + + _enabled + True _coordinate - (815, 676) + (529, 1139) _rotation @@ -1301,10 +1504,29 @@ - blks2_rational_resampler_xxx + pager_flex_deinterleave id - blks2_rational_resampler_xxx_0 + pager_flex_deinterleave_0 + + + _enabled + True + + + _coordinate + (777, 1116) + + + _rotation + 0 + + + + gr_null_sink + + id + gr_null_sink_0 _enabled @@ -1312,27 +1534,53 @@ type - fff + int - decim - 8 + vlen + 1 - interp - 5 + _coordinate + (1042, 1116) - taps - [1.0/8.0,]*40 + _rotation + 0 + + + pager_flex_deinterleave - fractional_bw + id + pager_flex_deinterleave_0_1_0 + + + _enabled + True + + + _coordinate + (778, 1168) + + + _rotation 0 + + + pager_flex_deinterleave + + id + pager_flex_deinterleave_0_1 + + + _enabled + True + _coordinate - (1029, 750) + (776, 1225) _rotation @@ -1340,22 +1588,45 @@ - virtual_sink + pager_flex_deinterleave id - virtual_sink_0 + pager_flex_deinterleave_0_0 _enabled True - stream_id - baseband + _coordinate + (776, 1273) + + + _rotation + 0 + + + + gr_null_sink + + id + gr_null_sink_0_0 + + + _enabled + True + + + type + int + + + vlen + 1 _coordinate - (1260, 774) + (1042, 1168) _rotation @@ -1363,22 +1634,26 @@ - variable + gr_null_sink id - baseband_rate + gr_null_sink_0_1 _enabled True - value - 16000 + type + int + + + vlen + 1 _coordinate - (1019, 17) + (1041, 1225) _rotation @@ -1386,22 +1661,26 @@ - variable + gr_null_sink id - nchan_taps + gr_null_sink_0_2 _enabled True - value - len(channel_taps) + type + int + + + vlen + 1 _coordinate - (412, 931) + (1040, 1273) _rotation @@ -1428,43 +1707,97 @@ gr_freq_xlating_fir_filter_xxx_0 - wxgui_scopesink2_0 + fm_demod 0 0 - gr_freq_xlating_fir_filter_xxx_0 - fm_demod + resampler + wxgui_scopesink2_0_0 0 0 fm_demod - gr_moving_average_xx_0 + resampler 0 0 - gr_moving_average_xx_0 - blks2_rational_resampler_xxx_0 + resampler + virtual_sink_0 0 0 - blks2_rational_resampler_xxx_0 - wxgui_scopesink2_0_0 + pager_slicer_fb_0 + pager_flex_sync_0 0 0 - fm_demod - blks2_rational_resampler_xxx_0 + virtual_source_0 + pager_slicer_fb_0 0 0 - blks2_rational_resampler_xxx_0 - virtual_sink_0 + pager_slicer_fb_0 + gr_char_to_float_0 + 0 + 0 + + + gr_char_to_float_0 + wxgui_scopesink2_0 + 0 + 0 + + + pager_flex_sync_0 + pager_flex_deinterleave_0_1_0 + 1 + 0 + + + pager_flex_sync_0 + pager_flex_deinterleave_0_1 + 2 + 0 + + + pager_flex_sync_0 + pager_flex_deinterleave_0 + 0 + 0 + + + pager_flex_sync_0 + pager_flex_deinterleave_0_0 + 3 + 0 + + + pager_flex_deinterleave_0 + gr_null_sink_0 + 0 + 0 + + + pager_flex_deinterleave_0_1_0 + gr_null_sink_0_0 + 0 + 0 + + + pager_flex_deinterleave_0_1 + gr_null_sink_0_1 + 0 + 0 + + + pager_flex_deinterleave_0_0 + gr_null_sink_0_2 0 0 diff --git a/gr-pager/apps/usrp_rx_flex.py b/gr-pager/apps/usrp_rx_flex.py index cdc5da20..47bf5a3d 100755 --- a/gr-pager/apps/usrp_rx_flex.py +++ b/gr-pager/apps/usrp_rx_flex.py @@ -2,12 +2,13 @@ ################################################## # Gnuradio Python Flow Graph # Title: USRP FLEX Pager Receiver (Single Channel) -# Generated: Thu Oct 29 08:04:51 2009 +# Generated: Thu Oct 29 11:03:16 2009 ################################################## from gnuradio import blks2 from gnuradio import eng_notation from gnuradio import gr +from gnuradio import pager from gnuradio import window from gnuradio.eng_option import eng_option from gnuradio.gr import firdes @@ -64,10 +65,13 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): self.rx_gain = rx_gain = saved_rx_gain self.offset = offset = saved_offset self.nchan_taps = nchan_taps = len(channel_taps) - self.ma_ntaps = ma_ntaps = channel_rate/symbol_rate + self.ma_ntaps = ma_ntaps = int(channel_rate/symbol_rate) self.freq_text = freq_text = freq self.demod_k = demod_k = 3*channel_rate/(2*math.pi*deviation) self.channel_decim = channel_decim = int(sample_rate/channel_rate) + self.bb_interp = bb_interp = 5 + self.bb_decim = bb_decim = 8 + self.baseband_rate = baseband_rate = 16000 ################################################## # Notebooks @@ -169,14 +173,24 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): ################################################## # Blocks ################################################## - self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_fff( - interpolation=5, - decimation=8, - taps=([1.0/8.0,]*40), - fractional_bw=None, - ) self.fm_demod = gr.quadrature_demod_cf(demod_k) self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(channel_decim, (channel_taps), band_freq-freq+offset, sample_rate) + self.gr_null_sink_0 = gr.null_sink(gr.sizeof_int*1) + self.gr_null_sink_0_0 = gr.null_sink(gr.sizeof_int*1) + self.gr_null_sink_0_1 = gr.null_sink(gr.sizeof_int*1) + self.gr_null_sink_0_2 = gr.null_sink(gr.sizeof_int*1) + self.pager_flex_deinterleave_0 = pager.flex_deinterleave() + self.pager_flex_deinterleave_0_0 = pager.flex_deinterleave() + self.pager_flex_deinterleave_0_1 = pager.flex_deinterleave() + self.pager_flex_deinterleave_0_1_0 = pager.flex_deinterleave() + self.pager_flex_sync_0 = pager.flex_sync() + self.pager_slicer_fb_0 = pager.slicer_fb(1e-6) + self.resampler = blks2.rational_resampler_fff( + interpolation=bb_interp, + decimation=bb_decim, + taps=([1.0/ma_ntaps,]*ma_ntaps*bb_interp), + fractional_bw=None, + ) self.usrp_source = grc_usrp.simple_source_c(which=0, side="A", rx_ant="RXA") self.usrp_source.set_decim_rate(decim) self.usrp_source.set_frequency(band_freq, verbose=True) @@ -213,18 +227,6 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): peak_hold=False, ) self.displays.GetPage(0).GridAdd(self.wxgui_fftsink2_1.win, 1, 0, 1, 1) - self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( - self.displays.GetPage(1).GetWin(), - title="Channel Waveform", - sample_rate=channel_rate, - v_scale=8e3, - v_offset=0, - t_scale=20.0/channel_rate, - ac_couple=False, - xy_mode=False, - num_inputs=1, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0.win, 0, 0, 1, 1) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_f( self.displays.GetPage(1).GetWin(), title="Baseband", @@ -236,7 +238,7 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): xy_mode=False, num_inputs=1, ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 1, 0, 1, 1) + self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) ################################################## # Connections @@ -244,10 +246,19 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_1, 0)) self.connect((self.usrp_source, 0), (self.gr_freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.usrp_source, 0), (self.wxgui_fftsink2_0, 0)) - self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_scopesink2_0, 0)) self.connect((self.gr_freq_xlating_fir_filter_xxx_0, 0), (self.fm_demod, 0)) - self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.wxgui_scopesink2_0_0, 0)) - self.connect((self.fm_demod, 0), (self.blks2_rational_resampler_xxx_0, 0)) + self.connect((self.resampler, 0), (self.wxgui_scopesink2_0_0, 0)) + self.connect((self.fm_demod, 0), (self.resampler, 0)) + self.connect((self.pager_slicer_fb_0, 0), (self.pager_flex_sync_0, 0)) + self.connect((self.resampler, 0), (self.pager_slicer_fb_0, 0)) + self.connect((self.pager_flex_sync_0, 1), (self.pager_flex_deinterleave_0_1_0, 0)) + self.connect((self.pager_flex_sync_0, 2), (self.pager_flex_deinterleave_0_1, 0)) + self.connect((self.pager_flex_sync_0, 0), (self.pager_flex_deinterleave_0, 0)) + self.connect((self.pager_flex_sync_0, 3), (self.pager_flex_deinterleave_0_0, 0)) + self.connect((self.pager_flex_deinterleave_0, 0), (self.gr_null_sink_0, 0)) + self.connect((self.pager_flex_deinterleave_0_1_0, 0), (self.gr_null_sink_0_0, 0)) + self.connect((self.pager_flex_deinterleave_0_1, 0), (self.gr_null_sink_0_1, 0)) + self.connect((self.pager_flex_deinterleave_0_0, 0), (self.gr_null_sink_0_2, 0)) def set_config_filename(self, config_filename): self.config_filename = config_filename @@ -279,7 +290,7 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): def set_symbol_rate(self, symbol_rate): self.symbol_rate = symbol_rate self.set_passband(2*(self.deviation+self.symbol_rate)) - self.set_ma_ntaps(self.channel_rate/self.symbol_rate) + self.set_ma_ntaps(int(self.channel_rate/self.symbol_rate)) def set_saved_channel(self, saved_channel): self.saved_channel = saved_channel @@ -315,12 +326,11 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): def set_channel_rate(self, channel_rate): self.channel_rate = channel_rate - self.wxgui_scopesink2_0.set_sample_rate(self.channel_rate) self.wxgui_fftsink2_1.set_sample_rate(self.channel_rate) self.set_channel_decim(int(self.sample_rate/self.channel_rate)) self.set_demod_k(3*self.channel_rate/(2*math.pi*self.deviation)) self.set_channel_taps(firdes.low_pass(10, self.sample_rate, self.passband/2.0, (self.channel_rate-self.passband)/2.0)) - self.set_ma_ntaps(self.channel_rate/self.symbol_rate) + self.set_ma_ntaps(int(self.channel_rate/self.symbol_rate)) def set_channel(self, channel): self.channel = channel @@ -407,6 +417,15 @@ class usrp_rx_flex(grc_wxgui.top_block_gui): def set_channel_decim(self, channel_decim): self.channel_decim = channel_decim + def set_bb_interp(self, bb_interp): + self.bb_interp = bb_interp + + def set_bb_decim(self, bb_decim): + self.bb_decim = bb_decim + + def set_baseband_rate(self, baseband_rate): + self.baseband_rate = baseband_rate + if __name__ == '__main__': parser = OptionParser(option_class=eng_option, usage="%prog: [options]") (options, args) = parser.parse_args() diff --git a/gr-pager/grc/.gitignore b/gr-pager/grc/.gitignore new file mode 100644 index 00000000..70845e08 --- /dev/null +++ b/gr-pager/grc/.gitignore @@ -0,0 +1 @@ +Makefile.in diff --git a/gr-pager/grc/Makefile.am b/gr-pager/grc/Makefile.am new file mode 100644 index 00000000..8c84f89a --- /dev/null +++ b/gr-pager/grc/Makefile.am @@ -0,0 +1,29 @@ +# +# Copyright 2009 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +include $(top_srcdir)/Makefile.common + +grcblocksdir = $(grc_blocksdir) + +dist_grcblocks_DATA = \ + pager_slicer_fb.xml \ + pager_flex_sync.xml \ + pager_flex_deinterleave.xml diff --git a/gr-pager/grc/pager_flex_deinterleave.xml b/gr-pager/grc/pager_flex_deinterleave.xml new file mode 100644 index 00000000..14e5782d --- /dev/null +++ b/gr-pager/grc/pager_flex_deinterleave.xml @@ -0,0 +1,23 @@ + + + + FLEX Deinterleave + pager_flex_deinterleave + Pager + from gnuradio import pager + pager.flex_deinterleave() + + + bits + byte + + + + codes + int + + diff --git a/gr-pager/grc/pager_flex_sync.xml b/gr-pager/grc/pager_flex_sync.xml new file mode 100644 index 00000000..ec22321a --- /dev/null +++ b/gr-pager/grc/pager_flex_sync.xml @@ -0,0 +1,36 @@ + + + + FLEX Synchronizer + pager_flex_sync + Pager + from gnuradio import pager + pager.flex_sync() + + + dibits + byte + + + + A + byte + + + B + byte + + + C + byte + + + D + byte + + + diff --git a/gr-pager/grc/pager_slicer_fb.xml b/gr-pager/grc/pager_slicer_fb.xml new file mode 100644 index 00000000..25642cb4 --- /dev/null +++ b/gr-pager/grc/pager_slicer_fb.xml @@ -0,0 +1,31 @@ + + + + 4-Level Slicer/DCR + pager_slicer_fb + Pager + from gnuradio import pager + pager.slicer_fb($alpha) + + + Alpha + alpha + 1e-6 + real + + + + bb + float + + + + dibits + byte + + +