From b6101982e270948b4a3185ee745ed76bb8661552 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sat, 15 Aug 2009 12:30:45 -0700 Subject: Created new gr-noaa top-level component. Initial work: - Carrier recovery/mixer PLL block - Start of POES grc pipeline, recovers Manchester symbols only - Start of GOES grc pipeline, recovers BPSK symbols only --- gr-noaa/grc/.gitignore | 1 + gr-noaa/grc/Makefile.am | 30 + gr-noaa/grc/noaa_carrier_pll_cc.xml | 34 + gr-noaa/grc/rx_goes.grc | 1454 +++++++++++++++++++++++++++++++++++ gr-noaa/grc/rx_poes.grc | 845 ++++++++++++++++++++ 5 files changed, 2364 insertions(+) create mode 100644 gr-noaa/grc/.gitignore create mode 100644 gr-noaa/grc/Makefile.am create mode 100644 gr-noaa/grc/noaa_carrier_pll_cc.xml create mode 100755 gr-noaa/grc/rx_goes.grc create mode 100755 gr-noaa/grc/rx_poes.grc (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/.gitignore b/gr-noaa/grc/.gitignore new file mode 100644 index 000000000..70845e08e --- /dev/null +++ b/gr-noaa/grc/.gitignore @@ -0,0 +1 @@ +Makefile.in diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am new file mode 100644 index 000000000..18144040d --- /dev/null +++ b/gr-noaa/grc/Makefile.am @@ -0,0 +1,30 @@ +# +# 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 = $(prefix)/share/gnuradio/grc/blocks +dist_grcblocks_DATA = \ + noaa_carrier_pll_cc.xml + +EXTRA_DIST = \ + rx_goes.grc \ + rx_poes.grc diff --git a/gr-noaa/grc/noaa_carrier_pll_cc.xml b/gr-noaa/grc/noaa_carrier_pll_cc.xml new file mode 100644 index 000000000..7b1fdc8f2 --- /dev/null +++ b/gr-noaa/grc/noaa_carrier_pll_cc.xml @@ -0,0 +1,34 @@ + + + Carrier PLL + noaa_carrier_pll_cc + NOAA + from gnuradio import noaa + noaa.carrier_pll_cc($alpha, $beta, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Max Offset + max_offset + real + + + in + complex + + + out + complex + + diff --git a/gr-noaa/grc/rx_goes.grc b/gr-noaa/grc/rx_goes.grc new file mode 100755 index 000000000..ebd21da40 --- /dev/null +++ b/gr-noaa/grc/rx_goes.grc @@ -0,0 +1,1454 @@ + + + Sat Aug 1 22:58:41 2009 + + options + + id + rx_goes + + + _enabled + True + + + title + USRP GOES Receiver + + + author + + + + description + + + + window_size + 4095, 4095 + + + generate_options + wx_gui + + + category + Custom + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 64e6/decim + + + _coordinate + (10, 81) + + + _rotation + 0 + + + + variable + + id + symbol_rate + + + _enabled + True + + + value + 293e3 + + + _coordinate + (11, 148) + + + _rotation + 0 + + + + variable + + id + sps + + + _enabled + True + + + value + samp_rate/symbol_rate + + + _coordinate + (12, 214) + + + _rotation + 0 + + + + variable_slider + + id + gain + + + _enabled + True + + + label + Gain + + + value + saved_gain + + + min + 0 + + + max + 115 + + + num_steps + 115 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 1, 1, 1 + + + notebook + + + + _coordinate + (392, 12) + + + _rotation + 0 + + + + variable_config + + id + saved_gain + + + _enabled + True + + + value + 33 + + + type + real + + + config_file + rx_goes.cfg + + + section + main + + + option + gain + + + writeback + gain + + + _coordinate + (392, 163) + + + _rotation + 0 + + + + variable_config + + id + saved_gain_mu + + + _enabled + True + + + value + 0.005 + + + type + real + + + config_file + rx_goes.cfg + + + section + main + + + option + gain_mu + + + writeback + gain_mu + + + _coordinate + (835, 162) + + + _rotation + 0 + + + + variable_config + + id + saved_costas_alpha + + + _enabled + True + + + value + 0.005 + + + type + real + + + config_file + rx_goes.cfg + + + section + main + + + option + costas_alpha + + + writeback + costas_alpha + + + _coordinate + (688, 162) + + + _rotation + 0 + + + + variable_slider + + id + gain_mu + + + _enabled + True + + + label + Gain Mu + + + value + saved_gain_mu + + + min + 0 + + + max + 0.5 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 1, 1, 1, 1 + + + notebook + + + + _coordinate + (833, 14) + + + _rotation + 0 + + + + variable_slider + + id + costas_alpha + + + _enabled + True + + + label + Costas Alpha + + + value + saved_costas_alpha + + + min + 0 + + + max + 0.5 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 1, 0, 1, 1 + + + notebook + + + + _coordinate + (688, 13) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency + + + value + saved_freq + + + min + 135e6 + + + max + 139e6 + + + num_steps + 400 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 2, 1, 1 + + + notebook + + + + _coordinate + (540, 13) + + + _rotation + 0 + + + + variable_config + + id + saved_freq + + + _enabled + True + + + value + 137e6 + + + type + real + + + config_file + rx_goes.cfg + + + section + main + + + option + freq + + + writeback + freq + + + _coordinate + (541, 162) + + + _rotation + 0 + + + + variable_config + + id + saved_decim + + + _enabled + True + + + value + 160 + + + type + int + + + config_file + rx_goes.cfg + + + section + main + + + option + decim + + + writeback + decim + + + _coordinate + (245, 161) + + + _rotation + 0 + + + + variable_text_box + + id + decim + + + _enabled + True + + + label + Decim + + + value + saved_decim + + + converver + int_converter + + + formatter + None + + + grid_pos + 0, 0, 1, 1 + + + notebook + + + + _coordinate + (243, 13) + + + _rotation + 0 + + + + notebook + + id + displays + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['USRP RX', 'Costas Output'] + + + grid_pos + 2, 0, 1, 3 + + + notebook + + + + _coordinate + (12, 287) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + Waveform + + + samp_rate + samp_rate + + + v_scale + 0.5 + + + t_scale + 20.0/samp_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (434, 551) + + + _rotation + 0 + + + + gr_agc_xx + + id + gr_agc_xx_0 + + + _enabled + True + + + type + complex + + + rate + 1e-6 + + + reference + 1.0 + + + gain + 1.0/32767.0 + + + max_gain + 1.0 + + + _coordinate + (261, 493) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + False + + + type + fir_filter_ccf + + + decim + 1 + + + interp + 1 + + + gain + 1 + + + samp_rate + samp_rate + + + sym_rate + symbol_rate + + + alpha + 0.5 + + + ntaps + 50 + + + _coordinate + (618, 373) + + + _rotation + 0 + + + + usrp_simple_source_x + + id + usrp_simple_source_x_0 + + + _enabled + False + + + type + complex + + + format + + + + which + 0 + + + decimation + decim + + + frequency + freq + + + lo_offset + float('inf') + + + gain + gain + + + side + B + + + rx_ant + RXA + + + hb_filters + + + + _coordinate + (11, 477) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + Spectrum + + + samp_rate + samp_rate + + + baseband_freq + freq + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (434, 337) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (181, 663) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_1 + + + _enabled + True + + + type + complex + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0.4 + + + t_scale + 20.0/samp_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1126, 251) + + + _rotation + 0 + + + + gr_probe_mpsk_snr_c + + id + gr_probe_mpsk_snr_c_0 + + + _enabled + True + + + type + snr + + + alpha + 0.0001 + + + probe_rate + 10 + + + _coordinate + (1126, 723) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_0 + + + _enabled + True + + + type + float + + + title + SNR + + + units + dB + + + samp_rate + 10 + + + min_value + 0 + + + max_value + 30 + + + factor + 1.0 + + + decimal_places + 1 + + + ref_level + 0 + + + number_rate + 10 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + show_gauge + True + + + grid_pos + 2, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1335, 651) + + + _rotation + 0 + + + + gr_mpsk_receiver_cc + + id + gr_mpsk_receiver_cc_0 + + + _enabled + True + + + M + 2 + + + theta + 0 + + + alpha + costas_alpha + + + beta + costas_alpha*costas_alpha/4.0 + + + fmin + -0.05 + + + fmax + 0.05 + + + mu + 0.5 + + + gain_mu + gain_mu + + + omega + sps + + + gain_omega + gain_mu*gain_mu/4.0 + + + omega_relative_limit + 0.05 + + + _coordinate + (881, 437) + + + _rotation + 0 + + + + gr_complex_to_real + + id + gr_complex_to_real_0 + + + _enabled + True + + + vlen + 1 + + + _coordinate + (1133, 521) + + + _rotation + 0 + + + + gr_char_to_float + + id + gr_char_to_float_0 + + + _enabled + True + + + _coordinate + (1523, 521) + + + _rotation + 0 + + + + gr_binary_slicer_fb + + id + gr_binary_slicer_fb_0 + + + _enabled + True + + + _coordinate + (1343, 521) + + + _rotation + 0 + + + + gr_add_const_vxx + + id + gr_add_const_vxx_0 + + + _enabled + True + + + type + float + + + const + 48.0 + + + vlen + 1 + + + _coordinate + (1707, 517) + + + _rotation + 0 + + + + gr_float_to_char + + id + gr_float_to_char_0 + + + _enabled + True + + + _coordinate + (1878, 521) + + + _rotation + 0 + + + + gr_file_sink + + id + gr_file_sink_0 + + + _enabled + True + + + file + bits.dat + + + type + byte + + + vlen + 1 + + + _coordinate + (2059, 517) + + + _rotation + 0 + + + + gr_file_source + + id + gr_file_source_0 + + + _enabled + True + + + file + lrit.dat + + + type + complex + + + repeat + False + + + vlen + 1 + + + _coordinate + (11, 655) + + + _rotation + 0 + + + + usrp_simple_source_x_0 + gr_agc_xx_0 + 0 + 0 + + + gr_agc_xx_0 + wxgui_scopesink2_0 + 0 + 0 + + + gr_file_source_0 + gr_throttle_0 + 0 + 0 + + + gr_throttle_0 + gr_agc_xx_0 + 0 + 0 + + + gr_probe_mpsk_snr_c_0 + wxgui_numbersink2_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + gr_probe_mpsk_snr_c_0 + 0 + 0 + + + gr_agc_xx_0 + gr_mpsk_receiver_cc_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + wxgui_scopesink2_1 + 0 + 0 + + + gr_agc_xx_0 + wxgui_fftsink2_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + gr_complex_to_real_0 + 0 + 0 + + + gr_complex_to_real_0 + gr_binary_slicer_fb_0 + 0 + 0 + + + gr_binary_slicer_fb_0 + gr_char_to_float_0 + 0 + 0 + + + gr_char_to_float_0 + gr_add_const_vxx_0 + 0 + 0 + + + gr_add_const_vxx_0 + gr_float_to_char_0 + 0 + 0 + + + gr_float_to_char_0 + gr_file_sink_0 + 0 + 0 + + diff --git a/gr-noaa/grc/rx_poes.grc b/gr-noaa/grc/rx_poes.grc new file mode 100755 index 000000000..f3a483e66 --- /dev/null +++ b/gr-noaa/grc/rx_poes.grc @@ -0,0 +1,845 @@ + + + Sun Aug 9 17:39:05 2009 + + options + + id + rx_poes + + + _enabled + True + + + title + + + + author + + + + description + + + + window_size + 4096,4096 + + + generate_options + wx_gui + + + category + Custom + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + decim + + + _enabled + True + + + value + 16 + + + _coordinate + (97, 10) + + + _rotation + 0 + + + + variable + + id + sym_rate + + + _enabled + True + + + value + 600*1109 + + + _coordinate + (286, 10) + + + _rotation + 0 + + + + variable + + id + sample_rate + + + _enabled + True + + + value + 64e6/decim + + + _coordinate + (176, 12) + + + _rotation + 0 + + + + variable + + id + sps + + + _enabled + True + + + value + sample_rate/sym_rate + + + _coordinate + (382, 14) + + + _rotation + 0 + + + + variable + + id + hs + + + _enabled + True + + + value + int(sps/2.0) + + + _coordinate + (492, 16) + + + _rotation + 0 + + + + variable + + id + mf_taps + + + _enabled + True + + + value + [0.5/hs,]*hs+[-0.5/hs,]*hs + + + _coordinate + (573, 15) + + + _rotation + 0 + + + + notebook + + id + displays + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['RX','Manchester'] + + + grid_pos + 1, 0, 1, 1 + + + notebook + + + + _coordinate + (9, 99) + + + _rotation + 0 + + + + gr_throttle + + id + throttle + + + _enabled + True + + + type + complex + + + samples_per_second + sample_rate + + + vlen + 1 + + + _coordinate + (79, 518) + + + _rotation + 0 + + + + import + + id + import_0 + + + _enabled + True + + + import + import math + + + _coordinate + (9, 202) + + + _rotation + 0 + + + + gr_file_source + + id + src + + + _enabled + True + + + file + /home/jcorgan/test/poes/poes-d16.dat + + + type + complex + + + repeat + True + + + vlen + 1 + + + _coordinate + (34, 423) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + RX Waveform + + + samp_rate + sample_rate + + + v_scale + 0 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (438, 612) + + + _rotation + 0 + + + + variable + + id + max_offset + + + _enabled + True + + + value + 2*math.pi*100e3/sample_rate + + + _coordinate + (307, 93) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + rx_fftsink + + + _enabled + True + + + type + complex + + + title + RX Spectrum + + + samp_rate + sample_rate + + + baseband_freq + 1698e6 + + + y_per_div + 5 + + + y_divs + 8 + + + ref_level + 20 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + True + + + avg_alpha + 0.1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (438, 244) + + + _rotation + 0 + + + + gr_agc_xx + + id + agr + + + _enabled + True + + + type + complex + + + rate + 1e-6 + + + reference + 1.0 + + + gain + 1.0 + + + max_gain + 1.0 + + + _coordinate + (270, 494) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + rx_fftsink_0 + + + _enabled + True + + + type + float + + + title + Baseband Spectrum + + + samp_rate + sample_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 8 + + + ref_level + 10 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + True + + + avg_alpha + 0.1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1069, 243) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0 + + + _enabled + True + + + type + float + + + title + Baseband Waveform + + + samp_rate + sample_rate + + + v_scale + 0 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1069, 624) + + + _rotation + 0 + + + + gr_moving_average_xx + + id + gr_moving_average_xx_0 + + + _enabled + True + + + type + complex + + + length + hs + + + scale + 1.0/hs + + + max_iter + 4000 + + + _coordinate + (437, 502) + + + _rotation + 0 + + + + gr_complex_to_imag + + id + gr_complex_to_imag_0 + + + _enabled + True + + + vlen + 1 + + + _coordinate + (866, 522) + + + _rotation + 0 + + + + variable_slider + + id + pll_alpha + + + _enabled + True + + + label + PLL Alpha + + + value + 0.005 + + + min + 0.0 + + + max + 0.5 + + + num_steps + 500 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 0, 1, 1 + + + notebook + + + + _coordinate + (157, 94) + + + _rotation + 0 + + + + noaa_carrier_pll_cc + + id + noaa_carrier_pll_cc_0 + + + _enabled + True + + + alpha + pll_alpha + + + beta + pll_alpha**2/4.0 + + + max_offset + max_offset + + + _coordinate + (645, 502) + + + _rotation + 0 + + + + agr + wxgui_scopesink2_0 + 0 + 0 + + + agr + rx_fftsink + 0 + 0 + + + throttle + agr + 0 + 0 + + + src + throttle + 0 + 0 + + + agr + gr_moving_average_xx_0 + 0 + 0 + + + gr_complex_to_imag_0 + rx_fftsink_0 + 0 + 0 + + + gr_complex_to_imag_0 + wxgui_scopesink2_0_0 + 0 + 0 + + + gr_moving_average_xx_0 + noaa_carrier_pll_cc_0 + 0 + 0 + + + noaa_carrier_pll_cc_0 + gr_complex_to_imag_0 + 0 + 0 + + -- cgit From a02a0e43d49d3bbb9a76ab8333f1bf8e25c48556 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sat, 22 Aug 2009 13:10:08 -0700 Subject: Update rx_poes script to filter prior to PLL. --- gr-noaa/grc/rx_poes.grc | 407 ++++++++++++++++++++++-------------------------- 1 file changed, 184 insertions(+), 223 deletions(-) (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/rx_poes.grc b/gr-noaa/grc/rx_poes.grc index f3a483e66..1001049a2 100755 --- a/gr-noaa/grc/rx_poes.grc +++ b/gr-noaa/grc/rx_poes.grc @@ -1,6 +1,6 @@ - Sun Aug 9 17:39:05 2009 + Sat Aug 22 13:06:22 2009 options @@ -167,11 +167,34 @@ 0 + + import + + id + import_0 + + + _enabled + True + + + import + import math + + + _coordinate + (9, 202) + + + _rotation + 0 + + variable id - mf_taps + max_offset _enabled @@ -179,11 +202,11 @@ value - [0.5/hs,]*hs+[-0.5/hs,]*hs + 2*math.pi*100e3/sample_rate _coordinate - (573, 15) + (342, 95) _rotation @@ -191,26 +214,46 @@ - notebook + variable_slider id - displays + pll_alpha _enabled True + + label + PLL Alpha + + + value + 0.005 + + + min + 0.0 + + + max + 0.5 + + + num_steps + 500 + style - wx.NB_TOP + wx.SL_HORIZONTAL - labels - ['RX','Manchester'] + converver + float_converter grid_pos - 1, 0, 1, 1 + 0, 0, 1, 1 notebook @@ -218,7 +261,7 @@ _coordinate - (9, 99) + (192, 100) _rotation @@ -257,22 +300,38 @@ - import + gr_agc_xx id - import_0 + agr _enabled True - import - import math + type + complex + + + rate + 1e-6 + + + reference + 1.0 + + + gain + 1.0 + + + max_gain + 1.0 _coordinate - (9, 202) + (261, 494) _rotation @@ -280,34 +339,65 @@ - gr_file_source + gr_moving_average_xx id - src + gr_moving_average_xx_0 _enabled True - - file - /home/jcorgan/test/poes/poes-d16.dat - type complex - repeat + length + hs + + + scale + 1.0/hs + + + max_iter + 4000 + + + _coordinate + (429, 502) + + + _rotation + 0 + + + + noaa_carrier_pll_cc + + id + noaa_carrier_pll_cc_0 + + + _enabled True - vlen - 1 + alpha + pll_alpha + + + beta + pll_alpha**2/4.0 + + + max_offset + max_offset _coordinate - (34, 423) + (636, 502) _rotation @@ -366,30 +456,7 @@ _coordinate - (438, 612) - - - _rotation - 0 - - - - variable - - id - max_offset - - - _enabled - True - - - value - 2*math.pi*100e3/sample_rate - - - _coordinate - (307, 93) + (433, 612) _rotation @@ -464,7 +531,7 @@ _coordinate - (438, 244) + (433, 241) _rotation @@ -472,38 +539,22 @@ - gr_agc_xx + gr_complex_to_imag id - agr + gr_complex_to_imag_0 _enabled True - type - complex - - - rate - 1e-6 - - - reference - 1.0 - - - gain - 1.0 - - - max_gain - 1.0 + vlen + 1 _coordinate - (270, 494) + (877, 522) _rotation @@ -511,74 +562,34 @@ - wxgui_fftsink2 + notebook id - rx_fftsink_0 + displays _enabled True - type - float - - - title - Baseband Spectrum - - - samp_rate - sample_rate - - - baseband_freq - 0 - - - y_per_div - 10 - - - y_divs - 8 - - - ref_level - 10 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - True + style + wx.NB_TOP - avg_alpha - 0.1 + labels + ['RX','Baseband'] grid_pos - 0, 0, 1, 1 + 1, 0, 1, 1 notebook - displays, 1 + _coordinate - (1069, 243) + (9, 99) _rotation @@ -589,7 +600,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0 + wxgui_scopesink2_0_1_0_1 _enabled @@ -601,7 +612,7 @@ title - Baseband Waveform + Manchester Symbols samp_rate @@ -609,11 +620,11 @@ v_scale - 0 + 0.5 t_scale - 20.0/sample_rate + 5.0/sym_rate ac_couple @@ -637,18 +648,18 @@ _coordinate - (1069, 624) + (856, 343) _rotation - 0 + 180 - gr_moving_average_xx + wxgui_scopesink2 id - gr_moving_average_xx_0 + wxgui_scopesink2_0_0 _enabled @@ -659,129 +670,79 @@ complex - length - hs - - - scale - 1.0/hs + title + Post-Filter/PLL - max_iter - 4000 + samp_rate + sample_rate - _coordinate - (437, 502) + v_scale + 0.5 - _rotation - 0 + t_scale + 20.0/sample_rate - - - gr_complex_to_imag - id - gr_complex_to_imag_0 + ac_couple + False - _enabled - True + xy_mode + False - vlen + num_inputs 1 - - _coordinate - (866, 522) - - - _rotation - 0 - - - - variable_slider - - id - pll_alpha - - - _enabled - True - - - label - PLL Alpha - - - value - 0.005 - - - min - 0.0 - - - max - 0.5 - - - num_steps - 500 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - grid_pos 0, 0, 1, 1 notebook - + displays, 1 _coordinate - (157, 94) + (634, 335) _rotation - 0 + 180 - noaa_carrier_pll_cc + gr_file_source id - noaa_carrier_pll_cc_0 + src _enabled True - alpha - pll_alpha + file + poes-d16.dat - beta - pll_alpha**2/4.0 + type + complex - max_offset - max_offset + repeat + True + + + vlen + 1 _coordinate - (645, 502) + (34, 423) _rotation @@ -789,14 +750,14 @@ - agr - wxgui_scopesink2_0 + src + throttle 0 0 - agr - rx_fftsink + noaa_carrier_pll_cc_0 + gr_complex_to_imag_0 0 0 @@ -806,12 +767,6 @@ 0 0 - - src - throttle - 0 - 0 - agr gr_moving_average_xx_0 @@ -819,14 +774,14 @@ 0 - gr_complex_to_imag_0 - rx_fftsink_0 + agr + rx_fftsink 0 0 - gr_complex_to_imag_0 - wxgui_scopesink2_0_0 + agr + wxgui_scopesink2_0 0 0 @@ -838,7 +793,13 @@ noaa_carrier_pll_cc_0 - gr_complex_to_imag_0 + wxgui_scopesink2_0_0 + 0 + 0 + + + gr_complex_to_imag_0 + wxgui_scopesink2_0_1_0_1 0 0 -- cgit From 6b6a5522e0b1d12ef5d697b1067a87dfe584cec6 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sat, 29 Aug 2009 11:12:37 -0700 Subject: Work in progress, incomplete * Renamed noaa.carrier_pll_cc to noaa.hrpt_pll_cc * Added nop noaa.hrpt_sync_cc * Renamed grc apps to use usrp_ prefix and protocol name * Installed grc generated scripts to path --- gr-noaa/grc/Makefile.am | 12 +- gr-noaa/grc/noaa_carrier_pll_cc.xml | 34 - gr-noaa/grc/noaa_hrpt_pll_cc.xml | 34 + gr-noaa/grc/noaa_hrpt_sync_cc.xml | 39 + gr-noaa/grc/rx_goes.grc | 1454 ---------------------------------- gr-noaa/grc/rx_poes.grc | 806 ------------------- gr-noaa/grc/usrp_rx_hrpt.grc | 1026 ++++++++++++++++++++++++ gr-noaa/grc/usrp_rx_hrpt.py | 245 ++++++ gr-noaa/grc/usrp_rx_lrit.grc | 1477 +++++++++++++++++++++++++++++++++++ gr-noaa/grc/usrp_rx_lrit.py | 399 ++++++++++ 10 files changed, 3229 insertions(+), 2297 deletions(-) delete mode 100644 gr-noaa/grc/noaa_carrier_pll_cc.xml create mode 100644 gr-noaa/grc/noaa_hrpt_pll_cc.xml create mode 100644 gr-noaa/grc/noaa_hrpt_sync_cc.xml delete mode 100755 gr-noaa/grc/rx_goes.grc delete mode 100755 gr-noaa/grc/rx_poes.grc create mode 100644 gr-noaa/grc/usrp_rx_hrpt.grc create mode 100755 gr-noaa/grc/usrp_rx_hrpt.py create mode 100644 gr-noaa/grc/usrp_rx_lrit.grc create mode 100755 gr-noaa/grc/usrp_rx_lrit.py (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index 18144040d..c75529778 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -22,9 +22,15 @@ include $(top_srcdir)/Makefile.common grcblocksdir = $(prefix)/share/gnuradio/grc/blocks + +dist_bin_SCRIPTS = \ + usrp_rx_hrpt.py \ + usrp_rx_lrit.py + dist_grcblocks_DATA = \ - noaa_carrier_pll_cc.xml + noaa_hrpt_pll_cc.xml \ + noaa_hrpt_sync_cc.xml EXTRA_DIST = \ - rx_goes.grc \ - rx_poes.grc + usrp_rx_hrpt.grc \ + usrp_rx_lrit.grc diff --git a/gr-noaa/grc/noaa_carrier_pll_cc.xml b/gr-noaa/grc/noaa_carrier_pll_cc.xml deleted file mode 100644 index 7b1fdc8f2..000000000 --- a/gr-noaa/grc/noaa_carrier_pll_cc.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - Carrier PLL - noaa_carrier_pll_cc - NOAA - from gnuradio import noaa - noaa.carrier_pll_cc($alpha, $beta, $max_offset) - set_alpha($alpha) - set_beta($beta) - set_max_offset($max_offset) - - Alpha - alpha - real - - - Beta - beta - real - - - Max Offset - max_offset - real - - - in - complex - - - out - complex - - diff --git a/gr-noaa/grc/noaa_hrpt_pll_cc.xml b/gr-noaa/grc/noaa_hrpt_pll_cc.xml new file mode 100644 index 000000000..e56e0b056 --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_pll_cc.xml @@ -0,0 +1,34 @@ + + + HRPT PLL + noaa_hrpt_pll_cc + NOAA + from gnuradio import noaa + noaa.hrpt_pll_cc($alpha, $beta, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Max Offset + max_offset + real + + + in + complex + + + out + complex + + diff --git a/gr-noaa/grc/noaa_hrpt_sync_cc.xml b/gr-noaa/grc/noaa_hrpt_sync_cc.xml new file mode 100644 index 000000000..d311aa946 --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_sync_cc.xml @@ -0,0 +1,39 @@ + + + HRPT SYNC + noaa_hrpt_sync_cc + NOAA + from gnuradio import noaa + noaa.hrpt_sync_cc($alpha, $beta, $sps, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Samples/Symbol + sps + real + + + Max Offset + max_offset + real + + + in + complex + + + out + complex + + diff --git a/gr-noaa/grc/rx_goes.grc b/gr-noaa/grc/rx_goes.grc deleted file mode 100755 index ebd21da40..000000000 --- a/gr-noaa/grc/rx_goes.grc +++ /dev/null @@ -1,1454 +0,0 @@ - - - Sat Aug 1 22:58:41 2009 - - options - - id - rx_goes - - - _enabled - True - - - title - USRP GOES Receiver - - - author - - - - description - - - - window_size - 4095, 4095 - - - generate_options - wx_gui - - - category - Custom - - - run - True - - - realtime_scheduling - - - - _coordinate - (10, 10) - - - _rotation - 0 - - - - variable - - id - samp_rate - - - _enabled - True - - - value - 64e6/decim - - - _coordinate - (10, 81) - - - _rotation - 0 - - - - variable - - id - symbol_rate - - - _enabled - True - - - value - 293e3 - - - _coordinate - (11, 148) - - - _rotation - 0 - - - - variable - - id - sps - - - _enabled - True - - - value - samp_rate/symbol_rate - - - _coordinate - (12, 214) - - - _rotation - 0 - - - - variable_slider - - id - gain - - - _enabled - True - - - label - Gain - - - value - saved_gain - - - min - 0 - - - max - 115 - - - num_steps - 115 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 1, 1, 1 - - - notebook - - - - _coordinate - (392, 12) - - - _rotation - 0 - - - - variable_config - - id - saved_gain - - - _enabled - True - - - value - 33 - - - type - real - - - config_file - rx_goes.cfg - - - section - main - - - option - gain - - - writeback - gain - - - _coordinate - (392, 163) - - - _rotation - 0 - - - - variable_config - - id - saved_gain_mu - - - _enabled - True - - - value - 0.005 - - - type - real - - - config_file - rx_goes.cfg - - - section - main - - - option - gain_mu - - - writeback - gain_mu - - - _coordinate - (835, 162) - - - _rotation - 0 - - - - variable_config - - id - saved_costas_alpha - - - _enabled - True - - - value - 0.005 - - - type - real - - - config_file - rx_goes.cfg - - - section - main - - - option - costas_alpha - - - writeback - costas_alpha - - - _coordinate - (688, 162) - - - _rotation - 0 - - - - variable_slider - - id - gain_mu - - - _enabled - True - - - label - Gain Mu - - - value - saved_gain_mu - - - min - 0 - - - max - 0.5 - - - num_steps - 100 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 1, 1, 1, 1 - - - notebook - - - - _coordinate - (833, 14) - - - _rotation - 0 - - - - variable_slider - - id - costas_alpha - - - _enabled - True - - - label - Costas Alpha - - - value - saved_costas_alpha - - - min - 0 - - - max - 0.5 - - - num_steps - 100 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 1, 0, 1, 1 - - - notebook - - - - _coordinate - (688, 13) - - - _rotation - 0 - - - - variable_slider - - id - freq - - - _enabled - True - - - label - Frequency - - - value - saved_freq - - - min - 135e6 - - - max - 139e6 - - - num_steps - 400 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 2, 1, 1 - - - notebook - - - - _coordinate - (540, 13) - - - _rotation - 0 - - - - variable_config - - id - saved_freq - - - _enabled - True - - - value - 137e6 - - - type - real - - - config_file - rx_goes.cfg - - - section - main - - - option - freq - - - writeback - freq - - - _coordinate - (541, 162) - - - _rotation - 0 - - - - variable_config - - id - saved_decim - - - _enabled - True - - - value - 160 - - - type - int - - - config_file - rx_goes.cfg - - - section - main - - - option - decim - - - writeback - decim - - - _coordinate - (245, 161) - - - _rotation - 0 - - - - variable_text_box - - id - decim - - - _enabled - True - - - label - Decim - - - value - saved_decim - - - converver - int_converter - - - formatter - None - - - grid_pos - 0, 0, 1, 1 - - - notebook - - - - _coordinate - (243, 13) - - - _rotation - 0 - - - - notebook - - id - displays - - - _enabled - True - - - style - wx.NB_TOP - - - labels - ['USRP RX', 'Costas Output'] - - - grid_pos - 2, 0, 1, 3 - - - notebook - - - - _coordinate - (12, 287) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - Waveform - - - samp_rate - samp_rate - - - v_scale - 0.5 - - - t_scale - 20.0/samp_rate - - - ac_couple - False - - - xy_mode - True - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 551) - - - _rotation - 0 - - - - gr_agc_xx - - id - gr_agc_xx_0 - - - _enabled - True - - - type - complex - - - rate - 1e-6 - - - reference - 1.0 - - - gain - 1.0/32767.0 - - - max_gain - 1.0 - - - _coordinate - (261, 493) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - False - - - type - fir_filter_ccf - - - decim - 1 - - - interp - 1 - - - gain - 1 - - - samp_rate - samp_rate - - - sym_rate - symbol_rate - - - alpha - 0.5 - - - ntaps - 50 - - - _coordinate - (618, 373) - - - _rotation - 0 - - - - usrp_simple_source_x - - id - usrp_simple_source_x_0 - - - _enabled - False - - - type - complex - - - format - - - - which - 0 - - - decimation - decim - - - frequency - freq - - - lo_offset - float('inf') - - - gain - gain - - - side - B - - - rx_ant - RXA - - - hb_filters - - - - _coordinate - (11, 477) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - wxgui_fftsink2_0 - - - _enabled - True - - - type - complex - - - title - Spectrum - - - samp_rate - samp_rate - - - baseband_freq - freq - - - y_per_div - 10 - - - y_divs - 10 - - - ref_level - 50 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 337) - - - _rotation - 0 - - - - gr_throttle - - id - gr_throttle_0 - - - _enabled - True - - - type - complex - - - samples_per_second - samp_rate - - - vlen - 1 - - - _coordinate - (181, 663) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_1 - - - _enabled - True - - - type - complex - - - title - Scope Plot - - - samp_rate - samp_rate - - - v_scale - 0.4 - - - t_scale - 20.0/samp_rate - - - ac_couple - False - - - xy_mode - True - - - num_inputs - 1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (1126, 251) - - - _rotation - 0 - - - - gr_probe_mpsk_snr_c - - id - gr_probe_mpsk_snr_c_0 - - - _enabled - True - - - type - snr - - - alpha - 0.0001 - - - probe_rate - 10 - - - _coordinate - (1126, 723) - - - _rotation - 0 - - - - wxgui_numbersink2 - - id - wxgui_numbersink2_0 - - - _enabled - True - - - type - float - - - title - SNR - - - units - dB - - - samp_rate - 10 - - - min_value - 0 - - - max_value - 30 - - - factor - 1.0 - - - decimal_places - 1 - - - ref_level - 0 - - - number_rate - 10 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - show_gauge - True - - - grid_pos - 2, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (1335, 651) - - - _rotation - 0 - - - - gr_mpsk_receiver_cc - - id - gr_mpsk_receiver_cc_0 - - - _enabled - True - - - M - 2 - - - theta - 0 - - - alpha - costas_alpha - - - beta - costas_alpha*costas_alpha/4.0 - - - fmin - -0.05 - - - fmax - 0.05 - - - mu - 0.5 - - - gain_mu - gain_mu - - - omega - sps - - - gain_omega - gain_mu*gain_mu/4.0 - - - omega_relative_limit - 0.05 - - - _coordinate - (881, 437) - - - _rotation - 0 - - - - gr_complex_to_real - - id - gr_complex_to_real_0 - - - _enabled - True - - - vlen - 1 - - - _coordinate - (1133, 521) - - - _rotation - 0 - - - - gr_char_to_float - - id - gr_char_to_float_0 - - - _enabled - True - - - _coordinate - (1523, 521) - - - _rotation - 0 - - - - gr_binary_slicer_fb - - id - gr_binary_slicer_fb_0 - - - _enabled - True - - - _coordinate - (1343, 521) - - - _rotation - 0 - - - - gr_add_const_vxx - - id - gr_add_const_vxx_0 - - - _enabled - True - - - type - float - - - const - 48.0 - - - vlen - 1 - - - _coordinate - (1707, 517) - - - _rotation - 0 - - - - gr_float_to_char - - id - gr_float_to_char_0 - - - _enabled - True - - - _coordinate - (1878, 521) - - - _rotation - 0 - - - - gr_file_sink - - id - gr_file_sink_0 - - - _enabled - True - - - file - bits.dat - - - type - byte - - - vlen - 1 - - - _coordinate - (2059, 517) - - - _rotation - 0 - - - - gr_file_source - - id - gr_file_source_0 - - - _enabled - True - - - file - lrit.dat - - - type - complex - - - repeat - False - - - vlen - 1 - - - _coordinate - (11, 655) - - - _rotation - 0 - - - - usrp_simple_source_x_0 - gr_agc_xx_0 - 0 - 0 - - - gr_agc_xx_0 - wxgui_scopesink2_0 - 0 - 0 - - - gr_file_source_0 - gr_throttle_0 - 0 - 0 - - - gr_throttle_0 - gr_agc_xx_0 - 0 - 0 - - - gr_probe_mpsk_snr_c_0 - wxgui_numbersink2_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - gr_probe_mpsk_snr_c_0 - 0 - 0 - - - gr_agc_xx_0 - gr_mpsk_receiver_cc_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - wxgui_scopesink2_1 - 0 - 0 - - - gr_agc_xx_0 - wxgui_fftsink2_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - gr_complex_to_real_0 - 0 - 0 - - - gr_complex_to_real_0 - gr_binary_slicer_fb_0 - 0 - 0 - - - gr_binary_slicer_fb_0 - gr_char_to_float_0 - 0 - 0 - - - gr_char_to_float_0 - gr_add_const_vxx_0 - 0 - 0 - - - gr_add_const_vxx_0 - gr_float_to_char_0 - 0 - 0 - - - gr_float_to_char_0 - gr_file_sink_0 - 0 - 0 - - diff --git a/gr-noaa/grc/rx_poes.grc b/gr-noaa/grc/rx_poes.grc deleted file mode 100755 index 1001049a2..000000000 --- a/gr-noaa/grc/rx_poes.grc +++ /dev/null @@ -1,806 +0,0 @@ - - - Sat Aug 22 13:06:22 2009 - - options - - id - rx_poes - - - _enabled - True - - - title - - - - author - - - - description - - - - window_size - 4096,4096 - - - generate_options - wx_gui - - - category - Custom - - - run - True - - - realtime_scheduling - - - - _coordinate - (10, 10) - - - _rotation - 0 - - - - variable - - id - decim - - - _enabled - True - - - value - 16 - - - _coordinate - (97, 10) - - - _rotation - 0 - - - - variable - - id - sym_rate - - - _enabled - True - - - value - 600*1109 - - - _coordinate - (286, 10) - - - _rotation - 0 - - - - variable - - id - sample_rate - - - _enabled - True - - - value - 64e6/decim - - - _coordinate - (176, 12) - - - _rotation - 0 - - - - variable - - id - sps - - - _enabled - True - - - value - sample_rate/sym_rate - - - _coordinate - (382, 14) - - - _rotation - 0 - - - - variable - - id - hs - - - _enabled - True - - - value - int(sps/2.0) - - - _coordinate - (492, 16) - - - _rotation - 0 - - - - import - - id - import_0 - - - _enabled - True - - - import - import math - - - _coordinate - (9, 202) - - - _rotation - 0 - - - - variable - - id - max_offset - - - _enabled - True - - - value - 2*math.pi*100e3/sample_rate - - - _coordinate - (342, 95) - - - _rotation - 0 - - - - variable_slider - - id - pll_alpha - - - _enabled - True - - - label - PLL Alpha - - - value - 0.005 - - - min - 0.0 - - - max - 0.5 - - - num_steps - 500 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 0, 1, 1 - - - notebook - - - - _coordinate - (192, 100) - - - _rotation - 0 - - - - gr_throttle - - id - throttle - - - _enabled - True - - - type - complex - - - samples_per_second - sample_rate - - - vlen - 1 - - - _coordinate - (79, 518) - - - _rotation - 0 - - - - gr_agc_xx - - id - agr - - - _enabled - True - - - type - complex - - - rate - 1e-6 - - - reference - 1.0 - - - gain - 1.0 - - - max_gain - 1.0 - - - _coordinate - (261, 494) - - - _rotation - 0 - - - - gr_moving_average_xx - - id - gr_moving_average_xx_0 - - - _enabled - True - - - type - complex - - - length - hs - - - scale - 1.0/hs - - - max_iter - 4000 - - - _coordinate - (429, 502) - - - _rotation - 0 - - - - noaa_carrier_pll_cc - - id - noaa_carrier_pll_cc_0 - - - _enabled - True - - - alpha - pll_alpha - - - beta - pll_alpha**2/4.0 - - - max_offset - max_offset - - - _coordinate - (636, 502) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - RX Waveform - - - samp_rate - sample_rate - - - v_scale - 0 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (433, 612) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - rx_fftsink - - - _enabled - True - - - type - complex - - - title - RX Spectrum - - - samp_rate - sample_rate - - - baseband_freq - 1698e6 - - - y_per_div - 5 - - - y_divs - 8 - - - ref_level - 20 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - True - - - avg_alpha - 0.1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (433, 241) - - - _rotation - 0 - - - - gr_complex_to_imag - - id - gr_complex_to_imag_0 - - - _enabled - True - - - vlen - 1 - - - _coordinate - (877, 522) - - - _rotation - 0 - - - - notebook - - id - displays - - - _enabled - True - - - style - wx.NB_TOP - - - labels - ['RX','Baseband'] - - - grid_pos - 1, 0, 1, 1 - - - notebook - - - - _coordinate - (9, 99) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0_1_0_1 - - - _enabled - True - - - type - float - - - title - Manchester Symbols - - - samp_rate - sample_rate - - - v_scale - 0.5 - - - t_scale - 5.0/sym_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (856, 343) - - - _rotation - 180 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0_0 - - - _enabled - True - - - type - complex - - - title - Post-Filter/PLL - - - samp_rate - sample_rate - - - v_scale - 0.5 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (634, 335) - - - _rotation - 180 - - - - gr_file_source - - id - src - - - _enabled - True - - - file - poes-d16.dat - - - type - complex - - - repeat - True - - - vlen - 1 - - - _coordinate - (34, 423) - - - _rotation - 0 - - - - src - throttle - 0 - 0 - - - noaa_carrier_pll_cc_0 - gr_complex_to_imag_0 - 0 - 0 - - - throttle - agr - 0 - 0 - - - agr - gr_moving_average_xx_0 - 0 - 0 - - - agr - rx_fftsink - 0 - 0 - - - agr - wxgui_scopesink2_0 - 0 - 0 - - - gr_moving_average_xx_0 - noaa_carrier_pll_cc_0 - 0 - 0 - - - noaa_carrier_pll_cc_0 - wxgui_scopesink2_0_0 - 0 - 0 - - - gr_complex_to_imag_0 - wxgui_scopesink2_0_1_0_1 - 0 - 0 - - diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc new file mode 100644 index 000000000..d3c6603ad --- /dev/null +++ b/gr-noaa/grc/usrp_rx_hrpt.grc @@ -0,0 +1,1026 @@ + + + Sat Aug 29 11:48:56 2009 + + options + + id + usrp_rx_hrpt + + + _enabled + True + + + title + USRP HRPT Receiver + + + author + + + + description + + + + window_size + 4096,4096 + + + generate_options + wx_gui + + + category + Custom + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + import + + id + import_0 + + + _enabled + True + + + import + import math + + + _coordinate + (9, 202) + + + _rotation + 0 + + + + gr_throttle + + id + throttle + + + _enabled + True + + + type + complex + + + samples_per_second + sample_rate + + + vlen + 1 + + + _coordinate + (79, 518) + + + _rotation + 0 + + + + gr_file_source + + id + src + + + _enabled + True + + + file + poes-d16.dat + + + type + complex + + + repeat + True + + + vlen + 1 + + + _coordinate + (34, 423) + + + _rotation + 0 + + + + variable + + id + decim + + + _enabled + True + + + value + 16 + + + _coordinate + (186, 10) + + + _rotation + 0 + + + + variable + + id + hs + + + _enabled + True + + + value + int(sps/2.0) + + + _coordinate + (589, 13) + + + _rotation + 0 + + + + variable + + id + sym_rate + + + _enabled + True + + + value + 600*1109 + + + _coordinate + (383, 7) + + + _rotation + 0 + + + + variable + + id + sps + + + _enabled + True + + + value + sample_rate/sym_rate + + + _coordinate + (479, 11) + + + _rotation + 0 + + + + variable + + id + sample_rate + + + _enabled + True + + + value + 64e6/decim + + + _coordinate + (273, 9) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + rx_fftsink + + + _enabled + True + + + type + complex + + + title + RX Spectrum + + + samp_rate + sample_rate + + + baseband_freq + 1698e6 + + + y_per_div + 5 + + + y_divs + 8 + + + ref_level + 20 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + True + + + avg_alpha + 0.1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (194, 263) + + + _rotation + 180 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + RX Waveform + + + samp_rate + sample_rate + + + v_scale + 0 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (198, 609) + + + _rotation + 180 + + + + gr_agc_xx + + id + agr + + + _enabled + True + + + type + complex + + + rate + 1e-6 + + + reference + 1.0 + + + gain + 1.0 + + + max_gain + 1.0 + + + _coordinate + (261, 494) + + + _rotation + 0 + + + + gr_moving_average_xx + + id + gr_moving_average_xx_0 + + + _enabled + True + + + type + complex + + + length + hs + + + scale + 1.0/hs + + + max_iter + 4000 + + + _coordinate + (434, 502) + + + _rotation + 0 + + + + variable + + id + max_carrier_offset + + + _enabled + True + + + value + 2*math.pi*100e3/sample_rate + + + _coordinate + (668, 107) + + + _rotation + 0 + + + + variable + + id + max_sync_offset + + + _enabled + True + + + value + 0.01 + + + _coordinate + (665, 173) + + + _rotation + 0 + + + + variable_slider + + id + pll_alpha + + + _enabled + True + + + label + PLL Alpha + + + value + 0.005 + + + min + 0.0 + + + max + 0.5 + + + num_steps + 500 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 0, 1, 1 + + + notebook + + + + _coordinate + (192, 100) + + + _rotation + 0 + + + + variable_slider + + id + sync_alpha + + + _enabled + True + + + label + SYNC Alpha + + + value + 0.005 + + + min + 0.0 + + + max + 0.5 + + + num_steps + 500 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 1, 1, 1 + + + notebook + + + + _coordinate + (344, 101) + + + _rotation + 0 + + + + noaa_hrpt_pll_cc + + id + noaa_hrpt_pll_cc_0 + + + _enabled + True + + + alpha + pll_alpha + + + beta + pll_alpha**2/4.0 + + + max_offset + max_carrier_offset + + + _coordinate + (628, 502) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0 + + + _enabled + True + + + type + complex + + + title + Post-PLL + + + samp_rate + sample_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (618, 335) + + + _rotation + 180 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0_1 + + + _enabled + True + + + type + complex + + + title + Post-SYNC + + + samp_rate + sample_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 2 + + + _coordinate + (872, 341) + + + _rotation + 180 + + + + notebook + + id + displays + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['RX','PLL','SYNC'] + + + grid_pos + 1, 0, 1, 2 + + + notebook + + + + _coordinate + (9, 99) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0_0 + + + _enabled + True + + + type + complex + + + title + Post-PLL + + + samp_rate + sample_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (618, 614) + + + _rotation + 180 + + + + noaa_hrpt_sync_cc + + id + sync + + + _enabled + True + + + alpha + sync_alpha + + + beta + sync_alpha**2/4.0 + + + sps + sps + + + max_offset + max_sync_offset + + + _coordinate + (865, 494) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0_0_0 + + + _enabled + True + + + type + complex + + + title + Post-SYNC + + + samp_rate + sample_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 2 + + + _coordinate + (872, 607) + + + _rotation + 180 + + + + src + throttle + 0 + 0 + + + throttle + agr + 0 + 0 + + + agr + gr_moving_average_xx_0 + 0 + 0 + + + agr + rx_fftsink + 0 + 0 + + + agr + wxgui_scopesink2_0 + 0 + 0 + + + gr_moving_average_xx_0 + noaa_hrpt_pll_cc_0 + 0 + 0 + + + noaa_hrpt_pll_cc_0 + wxgui_scopesink2_0_0 + 0 + 0 + + + noaa_hrpt_pll_cc_0 + wxgui_scopesink2_0_0_0 + 0 + 0 + + + noaa_hrpt_pll_cc_0 + sync + 0 + 0 + + + sync + wxgui_scopesink2_0_0_1 + 0 + 0 + + + sync + wxgui_scopesink2_0_0_0_0 + 0 + 0 + + diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py new file mode 100755 index 000000000..ed6417335 --- /dev/null +++ b/gr-noaa/grc/usrp_rx_hrpt.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python +################################################## +# Gnuradio Python Flow Graph +# Title: USRP HRPT Receiver +# Generated: Sat Aug 29 11:48:57 2009 +################################################## + +from gnuradio import gr +from gnuradio import noaa +from gnuradio.eng_option import eng_option +from gnuradio.wxgui import fftsink2 +from gnuradio.wxgui import forms +from gnuradio.wxgui import scopesink2 +from grc_gnuradio import wxgui as grc_wxgui +from optparse import OptionParser +import math +import wx + +class usrp_rx_hrpt(grc_wxgui.top_block_gui): + + def __init__(self): + grc_wxgui.top_block_gui.__init__(self, title="USRP HRPT Receiver") + + ################################################## + # Variables + ################################################## + self.decim = decim = 16 + self.sym_rate = sym_rate = 600*1109 + self.sample_rate = sample_rate = 64e6/decim + self.sps = sps = sample_rate/sym_rate + self.sync_alpha = sync_alpha = 0.005 + self.pll_alpha = pll_alpha = 0.005 + self.max_sync_offset = max_sync_offset = 0.01 + self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate + self.hs = hs = int(sps/2.0) + + ################################################## + # Notebooks + ################################################## + self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) + self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX") + self.displays.AddPage(grc_wxgui.Panel(self.displays), "PLL") + self.displays.AddPage(grc_wxgui.Panel(self.displays), "SYNC") + self.GridAdd(self.displays, 1, 0, 1, 2) + + ################################################## + # Controls + ################################################## + _sync_alpha_sizer = wx.BoxSizer(wx.VERTICAL) + self._sync_alpha_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_sync_alpha_sizer, + value=self.sync_alpha, + callback=self.set_sync_alpha, + label="SYNC Alpha", + converter=forms.float_converter(), + proportion=0, + ) + self._sync_alpha_slider = forms.slider( + parent=self.GetWin(), + sizer=_sync_alpha_sizer, + value=self.sync_alpha, + callback=self.set_sync_alpha, + minimum=0.0, + maximum=0.5, + num_steps=500, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_sync_alpha_sizer, 0, 1, 1, 1) + _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) + self._pll_alpha_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_pll_alpha_sizer, + value=self.pll_alpha, + callback=self.set_pll_alpha, + label="PLL Alpha", + converter=forms.float_converter(), + proportion=0, + ) + self._pll_alpha_slider = forms.slider( + parent=self.GetWin(), + sizer=_pll_alpha_sizer, + value=self.pll_alpha, + callback=self.set_pll_alpha, + minimum=0.0, + maximum=0.5, + num_steps=500, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_pll_alpha_sizer, 0, 0, 1, 1) + + ################################################## + # Blocks + ################################################## + self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) + self.gr_moving_average_xx_0 = gr.moving_average_cc(hs, 1.0/hs, 4000) + self.noaa_hrpt_pll_cc_0 = noaa.hrpt_pll_cc(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) + self.rx_fftsink = fftsink2.fft_sink_c( + self.displays.GetPage(0).GetWin(), + baseband_freq=1698e6, + y_per_div=5, + y_divs=8, + ref_level=20, + sample_rate=sample_rate, + fft_size=1024, + fft_rate=30, + average=True, + avg_alpha=0.1, + title="RX Spectrum", + peak_hold=False, + ) + self.displays.GetPage(0).GridAdd(self.rx_fftsink.win, 0, 0, 1, 1) + self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", True) + self.sync = noaa.hrpt_sync_cc(sync_alpha, sync_alpha**2/4.0, sps, max_sync_offset) + self.throttle = gr.throttle(gr.sizeof_gr_complex*1, sample_rate) + self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( + self.displays.GetPage(0).GetWin(), + title="RX Waveform", + sample_rate=sample_rate, + v_scale=0, + t_scale=20.0/sample_rate, + ac_couple=False, + xy_mode=False, + num_inputs=1, + ) + self.displays.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 0, 1, 1) + self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( + self.displays.GetPage(1).GetWin(), + title="Post-PLL", + sample_rate=sample_rate, + v_scale=0.5, + t_scale=20.0/sample_rate, + ac_couple=False, + xy_mode=False, + num_inputs=1, + ) + self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) + self.wxgui_scopesink2_0_0_0 = scopesink2.scope_sink_c( + self.displays.GetPage(1).GetWin(), + title="Post-PLL", + sample_rate=sample_rate, + v_scale=0.5, + t_scale=20.0/sample_rate, + ac_couple=False, + xy_mode=True, + num_inputs=1, + ) + self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0_0.win, 1, 0, 1, 1) + self.wxgui_scopesink2_0_0_0_0 = scopesink2.scope_sink_c( + self.displays.GetPage(2).GetWin(), + title="Post-SYNC", + sample_rate=sample_rate, + v_scale=0.5, + t_scale=20.0/sample_rate, + ac_couple=False, + xy_mode=True, + num_inputs=1, + ) + self.displays.GetPage(2).GridAdd(self.wxgui_scopesink2_0_0_0_0.win, 1, 0, 1, 1) + self.wxgui_scopesink2_0_0_1 = scopesink2.scope_sink_c( + self.displays.GetPage(2).GetWin(), + title="Post-SYNC", + sample_rate=sample_rate, + v_scale=0.5, + t_scale=20.0/sample_rate, + ac_couple=False, + xy_mode=False, + num_inputs=1, + ) + self.displays.GetPage(2).GridAdd(self.wxgui_scopesink2_0_0_1.win, 0, 0, 1, 1) + + ################################################## + # Connections + ################################################## + self.connect((self.src, 0), (self.throttle, 0)) + self.connect((self.throttle, 0), (self.agr, 0)) + self.connect((self.agr, 0), (self.gr_moving_average_xx_0, 0)) + self.connect((self.agr, 0), (self.rx_fftsink, 0)) + self.connect((self.agr, 0), (self.wxgui_scopesink2_0, 0)) + self.connect((self.gr_moving_average_xx_0, 0), (self.noaa_hrpt_pll_cc_0, 0)) + self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0, 0)) + self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0_0, 0)) + self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.sync, 0)) + self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_1, 0)) + self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) + + def set_decim(self, decim): + self.decim = decim + self.set_sample_rate(64e6/self.decim) + + def set_sym_rate(self, sym_rate): + self.sym_rate = sym_rate + self.set_sps(self.sample_rate/self.sym_rate) + + def set_sample_rate(self, sample_rate): + self.sample_rate = sample_rate + self.set_sps(self.sample_rate/self.sym_rate) + self.rx_fftsink.set_sample_rate(self.sample_rate) + self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) + self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) + self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) + self.wxgui_scopesink2_0_0_1.set_sample_rate(self.sample_rate) + self.wxgui_scopesink2_0_0_0.set_sample_rate(self.sample_rate) + self.wxgui_scopesink2_0_0_0_0.set_sample_rate(self.sample_rate) + + def set_sps(self, sps): + self.sps = sps + self.set_hs(int(self.sps/2.0)) + + def set_sync_alpha(self, sync_alpha): + self.sync_alpha = sync_alpha + self._sync_alpha_slider.set_value(self.sync_alpha) + self._sync_alpha_text_box.set_value(self.sync_alpha) + self.sync.set_alpha(self.sync_alpha) + self.sync.set_beta(self.sync_alpha**2/4.0) + + def set_pll_alpha(self, pll_alpha): + self.pll_alpha = pll_alpha + self._pll_alpha_slider.set_value(self.pll_alpha) + self._pll_alpha_text_box.set_value(self.pll_alpha) + self.noaa_hrpt_pll_cc_0.set_alpha(self.pll_alpha) + self.noaa_hrpt_pll_cc_0.set_beta(self.pll_alpha**2/4.0) + + def set_max_sync_offset(self, max_sync_offset): + self.max_sync_offset = max_sync_offset + self.sync.set_max_offset(self.max_sync_offset) + + def set_max_carrier_offset(self, max_carrier_offset): + self.max_carrier_offset = max_carrier_offset + self.noaa_hrpt_pll_cc_0.set_max_offset(self.max_carrier_offset) + + def set_hs(self, hs): + self.hs = hs + self.gr_moving_average_xx_0.set_length_and_scale(self.hs, 1.0/self.hs) + +if __name__ == '__main__': + parser = OptionParser(option_class=eng_option, usage="%prog: [options]") + (options, args) = parser.parse_args() + tb = usrp_rx_hrpt() + tb.Run(True) + diff --git a/gr-noaa/grc/usrp_rx_lrit.grc b/gr-noaa/grc/usrp_rx_lrit.grc new file mode 100644 index 000000000..55fe39787 --- /dev/null +++ b/gr-noaa/grc/usrp_rx_lrit.grc @@ -0,0 +1,1477 @@ + + + Sat Aug 29 11:26:03 2009 + + options + + id + usrp_rx_lrit + + + _enabled + True + + + title + USRP LRIT Receiver + + + author + + + + description + + + + window_size + 4095, 4095 + + + generate_options + wx_gui + + + category + Custom + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 64e6/decim + + + _coordinate + (10, 81) + + + _rotation + 0 + + + + variable + + id + symbol_rate + + + _enabled + True + + + value + 293e3 + + + _coordinate + (11, 148) + + + _rotation + 0 + + + + variable + + id + sps + + + _enabled + True + + + value + samp_rate/symbol_rate + + + _coordinate + (12, 214) + + + _rotation + 0 + + + + variable_text_box + + id + decim + + + _enabled + True + + + label + Decim + + + value + saved_decim + + + converver + int_converter + + + formatter + None + + + grid_pos + 0, 0, 1, 1 + + + notebook + + + + _coordinate + (243, 13) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + Waveform + + + samp_rate + samp_rate + + + v_scale + 0.5 + + + t_scale + 20.0/samp_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (434, 551) + + + _rotation + 0 + + + + gr_agc_xx + + id + gr_agc_xx_0 + + + _enabled + True + + + type + complex + + + rate + 1e-6 + + + reference + 1.0 + + + gain + 1.0/32767.0 + + + max_gain + 1.0 + + + _coordinate + (261, 493) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + False + + + type + fir_filter_ccf + + + decim + 1 + + + interp + 1 + + + gain + 1 + + + samp_rate + samp_rate + + + sym_rate + symbol_rate + + + alpha + 0.5 + + + ntaps + 50 + + + _coordinate + (618, 373) + + + _rotation + 0 + + + + usrp_simple_source_x + + id + usrp_simple_source_x_0 + + + _enabled + False + + + type + complex + + + format + + + + which + 0 + + + decimation + decim + + + frequency + freq + + + lo_offset + float('inf') + + + gain + gain + + + side + B + + + rx_ant + RXA + + + hb_filters + + + + _coordinate + (11, 477) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + Spectrum + + + samp_rate + samp_rate + + + baseband_freq + freq + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (434, 337) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (181, 663) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_1 + + + _enabled + True + + + type + complex + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0.4 + + + t_scale + 20.0/samp_rate + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1126, 251) + + + _rotation + 0 + + + + gr_probe_mpsk_snr_c + + id + gr_probe_mpsk_snr_c_0 + + + _enabled + True + + + type + snr + + + alpha + 0.0001 + + + probe_rate + 10 + + + _coordinate + (1126, 723) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_0 + + + _enabled + True + + + type + float + + + title + SNR + + + units + dB + + + samp_rate + 10 + + + min_value + 0 + + + max_value + 30 + + + factor + 1.0 + + + decimal_places + 1 + + + ref_level + 0 + + + number_rate + 10 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + show_gauge + True + + + grid_pos + 2, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (1335, 651) + + + _rotation + 0 + + + + gr_mpsk_receiver_cc + + id + gr_mpsk_receiver_cc_0 + + + _enabled + True + + + M + 2 + + + theta + 0 + + + alpha + costas_alpha + + + beta + costas_alpha*costas_alpha/4.0 + + + fmin + -0.05 + + + fmax + 0.05 + + + mu + 0.5 + + + gain_mu + gain_mu + + + omega + sps + + + gain_omega + gain_mu*gain_mu/4.0 + + + omega_relative_limit + 0.05 + + + _coordinate + (881, 437) + + + _rotation + 0 + + + + gr_complex_to_real + + id + gr_complex_to_real_0 + + + _enabled + True + + + vlen + 1 + + + _coordinate + (1133, 521) + + + _rotation + 0 + + + + gr_char_to_float + + id + gr_char_to_float_0 + + + _enabled + True + + + _coordinate + (1523, 521) + + + _rotation + 0 + + + + gr_binary_slicer_fb + + id + gr_binary_slicer_fb_0 + + + _enabled + True + + + _coordinate + (1343, 521) + + + _rotation + 0 + + + + gr_add_const_vxx + + id + gr_add_const_vxx_0 + + + _enabled + True + + + type + float + + + const + 48.0 + + + vlen + 1 + + + _coordinate + (1707, 517) + + + _rotation + 0 + + + + gr_float_to_char + + id + gr_float_to_char_0 + + + _enabled + True + + + _coordinate + (1878, 521) + + + _rotation + 0 + + + + gr_file_sink + + id + gr_file_sink_0 + + + _enabled + True + + + file + bits.dat + + + type + byte + + + vlen + 1 + + + _coordinate + (2059, 517) + + + _rotation + 0 + + + + gr_file_source + + id + gr_file_source_0 + + + _enabled + True + + + file + lrit.dat + + + type + complex + + + repeat + False + + + vlen + 1 + + + _coordinate + (11, 655) + + + _rotation + 0 + + + + notebook + + id + displays + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['USRP RX', 'Costas Output'] + + + grid_pos + 2, 0, 1, 3 + + + notebook + + + + _coordinate + (14, 351) + + + _rotation + 0 + + + + variable_config + + id + saved_decim + + + _enabled + True + + + value + 160 + + + type + int + + + config_file + config_filename + + + section + main + + + option + decim + + + writeback + decim + + + _coordinate + (246, 172) + + + _rotation + 0 + + + + variable_slider + + id + gain + + + _enabled + True + + + label + Gain + + + value + saved_gain + + + min + 0 + + + max + 115 + + + num_steps + 115 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 1, 1, 1 + + + notebook + + + + _coordinate + (411, 11) + + + _rotation + 0 + + + + variable_config + + id + saved_gain + + + _enabled + True + + + value + 33 + + + type + real + + + config_file + config_filename + + + section + main + + + option + gain + + + writeback + gain + + + _coordinate + (412, 172) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency + + + value + saved_freq + + + min + 135e6 + + + max + 139e6 + + + num_steps + 400 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 2, 1, 1 + + + notebook + + + + _coordinate + (574, 12) + + + _rotation + 0 + + + + variable_config + + id + saved_freq + + + _enabled + True + + + value + 137e6 + + + type + real + + + config_file + config_filename + + + section + main + + + option + freq + + + writeback + freq + + + _coordinate + (576, 170) + + + _rotation + 0 + + + + variable_slider + + id + costas_alpha + + + _enabled + True + + + label + Costas Alpha + + + value + saved_costas_alpha + + + min + 0 + + + max + 0.5 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 1, 0, 1, 1 + + + notebook + + + + _coordinate + (738, 13) + + + _rotation + 0 + + + + variable_config + + id + saved_costas_alpha + + + _enabled + True + + + value + 0.005 + + + type + real + + + config_file + config_filename + + + section + main + + + option + costas_alpha + + + writeback + costas_alpha + + + _coordinate + (739, 170) + + + _rotation + 0 + + + + variable_config + + id + saved_gain_mu + + + _enabled + True + + + value + 0.005 + + + type + real + + + config_file + config_filename + + + section + main + + + option + gain_mu + + + writeback + gain_mu + + + _coordinate + (900, 170) + + + _rotation + 0 + + + + variable_slider + + id + gain_mu + + + _enabled + True + + + label + Gain Mu + + + value + saved_gain_mu + + + min + 0 + + + max + 0.5 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 1, 1, 1, 1 + + + notebook + + + + _coordinate + (902, 13) + + + _rotation + 0 + + + + variable + + id + config_filename + + + _enabled + True + + + value + "usrp_rx_lrit.cfg" + + + _coordinate + (13, 283) + + + _rotation + 0 + + + + usrp_simple_source_x_0 + gr_agc_xx_0 + 0 + 0 + + + gr_agc_xx_0 + wxgui_scopesink2_0 + 0 + 0 + + + gr_file_source_0 + gr_throttle_0 + 0 + 0 + + + gr_throttle_0 + gr_agc_xx_0 + 0 + 0 + + + gr_probe_mpsk_snr_c_0 + wxgui_numbersink2_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + gr_probe_mpsk_snr_c_0 + 0 + 0 + + + gr_agc_xx_0 + gr_mpsk_receiver_cc_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + wxgui_scopesink2_1 + 0 + 0 + + + gr_agc_xx_0 + wxgui_fftsink2_0 + 0 + 0 + + + gr_mpsk_receiver_cc_0 + gr_complex_to_real_0 + 0 + 0 + + + gr_complex_to_real_0 + gr_binary_slicer_fb_0 + 0 + 0 + + + gr_binary_slicer_fb_0 + gr_char_to_float_0 + 0 + 0 + + + gr_char_to_float_0 + gr_add_const_vxx_0 + 0 + 0 + + + gr_add_const_vxx_0 + gr_float_to_char_0 + 0 + 0 + + + gr_float_to_char_0 + gr_file_sink_0 + 0 + 0 + + diff --git a/gr-noaa/grc/usrp_rx_lrit.py b/gr-noaa/grc/usrp_rx_lrit.py new file mode 100755 index 000000000..bc313e3af --- /dev/null +++ b/gr-noaa/grc/usrp_rx_lrit.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python +################################################## +# Gnuradio Python Flow Graph +# Title: USRP LRIT Receiver +# Generated: Sat Aug 29 11:26:03 2009 +################################################## + +from gnuradio import gr +from gnuradio.eng_option import eng_option +from gnuradio.wxgui import fftsink2 +from gnuradio.wxgui import forms +from gnuradio.wxgui import numbersink2 +from gnuradio.wxgui import scopesink2 +from grc_gnuradio import blks2 as grc_blks2 +from grc_gnuradio import wxgui as grc_wxgui +from optparse import OptionParser +import ConfigParser +import wx + +class usrp_rx_lrit(grc_wxgui.top_block_gui): + + def __init__(self): + grc_wxgui.top_block_gui.__init__(self, title="USRP LRIT Receiver") + + ################################################## + # Variables + ################################################## + self.config_filename = config_filename = "usrp_rx_lrit.cfg" + self._saved_decim_config = ConfigParser.ConfigParser() + self._saved_decim_config.read(config_filename) + try: saved_decim = self._saved_decim_config.getint("main", "decim") + except: saved_decim = 160 + self.saved_decim = saved_decim + self.decim = decim = saved_decim + self.symbol_rate = symbol_rate = 293e3 + self._saved_gain_mu_config = ConfigParser.ConfigParser() + self._saved_gain_mu_config.read(config_filename) + try: saved_gain_mu = self._saved_gain_mu_config.getfloat("main", "gain_mu") + except: saved_gain_mu = 0.005 + self.saved_gain_mu = saved_gain_mu + self._saved_gain_config = ConfigParser.ConfigParser() + self._saved_gain_config.read(config_filename) + try: saved_gain = self._saved_gain_config.getfloat("main", "gain") + except: saved_gain = 33 + self.saved_gain = saved_gain + self._saved_freq_config = ConfigParser.ConfigParser() + self._saved_freq_config.read(config_filename) + try: saved_freq = self._saved_freq_config.getfloat("main", "freq") + except: saved_freq = 137e6 + self.saved_freq = saved_freq + self._saved_costas_alpha_config = ConfigParser.ConfigParser() + self._saved_costas_alpha_config.read(config_filename) + try: saved_costas_alpha = self._saved_costas_alpha_config.getfloat("main", "costas_alpha") + except: saved_costas_alpha = 0.005 + self.saved_costas_alpha = saved_costas_alpha + self.samp_rate = samp_rate = 64e6/decim + self.sps = sps = samp_rate/symbol_rate + self.gain_mu = gain_mu = saved_gain_mu + self.gain = gain = saved_gain + self.freq = freq = saved_freq + self.costas_alpha = costas_alpha = saved_costas_alpha + + ################################################## + # Notebooks + ################################################## + self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) + self.displays.AddPage(grc_wxgui.Panel(self.displays), "USRP RX") + self.displays.AddPage(grc_wxgui.Panel(self.displays), "Costas Output") + self.GridAdd(self.displays, 2, 0, 1, 3) + + ################################################## + # Controls + ################################################## + self._decim_text_box = forms.text_box( + parent=self.GetWin(), + value=self.decim, + callback=self.set_decim, + label="Decim", + converter=forms.int_converter(), + ) + self.GridAdd(self._decim_text_box, 0, 0, 1, 1) + _gain_mu_sizer = wx.BoxSizer(wx.VERTICAL) + self._gain_mu_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_gain_mu_sizer, + value=self.gain_mu, + callback=self.set_gain_mu, + label="Gain Mu", + converter=forms.float_converter(), + proportion=0, + ) + self._gain_mu_slider = forms.slider( + parent=self.GetWin(), + sizer=_gain_mu_sizer, + value=self.gain_mu, + callback=self.set_gain_mu, + minimum=0, + maximum=0.5, + num_steps=100, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_gain_mu_sizer, 1, 1, 1, 1) + _gain_sizer = wx.BoxSizer(wx.VERTICAL) + self._gain_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_gain_sizer, + value=self.gain, + callback=self.set_gain, + label="Gain", + converter=forms.float_converter(), + proportion=0, + ) + self._gain_slider = forms.slider( + parent=self.GetWin(), + sizer=_gain_sizer, + value=self.gain, + callback=self.set_gain, + minimum=0, + maximum=115, + num_steps=115, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_gain_sizer, 0, 1, 1, 1) + _freq_sizer = wx.BoxSizer(wx.VERTICAL) + self._freq_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_freq_sizer, + value=self.freq, + callback=self.set_freq, + label="Frequency", + converter=forms.float_converter(), + proportion=0, + ) + self._freq_slider = forms.slider( + parent=self.GetWin(), + sizer=_freq_sizer, + value=self.freq, + callback=self.set_freq, + minimum=135e6, + maximum=139e6, + num_steps=400, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_freq_sizer, 0, 2, 1, 1) + _costas_alpha_sizer = wx.BoxSizer(wx.VERTICAL) + self._costas_alpha_text_box = forms.text_box( + parent=self.GetWin(), + sizer=_costas_alpha_sizer, + value=self.costas_alpha, + callback=self.set_costas_alpha, + label="Costas Alpha", + converter=forms.float_converter(), + proportion=0, + ) + self._costas_alpha_slider = forms.slider( + parent=self.GetWin(), + sizer=_costas_alpha_sizer, + value=self.costas_alpha, + callback=self.set_costas_alpha, + minimum=0, + maximum=0.5, + num_steps=100, + style=wx.SL_HORIZONTAL, + cast=float, + proportion=1, + ) + self.GridAdd(_costas_alpha_sizer, 1, 0, 1, 1) + + ################################################## + # Blocks + ################################################## + self.gr_add_const_vxx_0 = gr.add_const_vff((48.0, )) + self.gr_agc_xx_0 = gr.agc_cc(1e-6, 1.0, 1.0/32767.0, 1.0) + self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() + self.gr_char_to_float_0 = gr.char_to_float() + self.gr_complex_to_real_0 = gr.complex_to_real(1) + self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "bits.dat") + self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "lrit.dat", False) + self.gr_float_to_char_0 = gr.float_to_char() + self.gr_mpsk_receiver_cc_0 = gr.mpsk_receiver_cc(2, 0, costas_alpha, costas_alpha*costas_alpha/4.0, -0.05, 0.05, 0.5, gain_mu, sps, gain_mu*gain_mu/4.0, 0.05) + self.gr_probe_mpsk_snr_c_0 = grc_blks2.probe_mpsk_snr_c( + type='snr', + alpha=0.0001, + probe_rate=10, + ) + self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) + self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( + self.displays.GetPage(0).GetWin(), + baseband_freq=freq, + y_per_div=10, + y_divs=10, + ref_level=50, + sample_rate=samp_rate, + fft_size=1024, + fft_rate=30, + average=False, + avg_alpha=None, + title="Spectrum", + peak_hold=False, + ) + self.displays.GetPage(0).GridAdd(self.wxgui_fftsink2_0.win, 0, 0, 1, 1) + self.wxgui_numbersink2_0 = numbersink2.number_sink_f( + self.displays.GetPage(1).GetWin(), + unit="dB", + minval=0, + maxval=30, + factor=1.0, + decimal_places=1, + ref_level=0, + sample_rate=10, + number_rate=10, + average=False, + avg_alpha=None, + label="SNR", + peak_hold=False, + show_gauge=True, + ) + self.displays.GetPage(1).GridAdd(self.wxgui_numbersink2_0.win, 2, 0, 1, 1) + self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( + self.displays.GetPage(0).GetWin(), + title="Waveform", + sample_rate=samp_rate, + v_scale=0.5, + t_scale=20.0/samp_rate, + ac_couple=False, + xy_mode=True, + num_inputs=1, + ) + self.displays.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 0, 1, 1) + self.wxgui_scopesink2_1 = scopesink2.scope_sink_c( + self.displays.GetPage(1).GetWin(), + title="Scope Plot", + sample_rate=samp_rate, + v_scale=0.4, + t_scale=20.0/samp_rate, + ac_couple=False, + xy_mode=True, + num_inputs=1, + ) + self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_1.win, 0, 0, 1, 1) + + ################################################## + # Connections + ################################################## + self.connect((self.gr_agc_xx_0, 0), (self.wxgui_scopesink2_0, 0)) + self.connect((self.gr_file_source_0, 0), (self.gr_throttle_0, 0)) + self.connect((self.gr_throttle_0, 0), (self.gr_agc_xx_0, 0)) + self.connect((self.gr_probe_mpsk_snr_c_0, 0), (self.wxgui_numbersink2_0, 0)) + self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.gr_probe_mpsk_snr_c_0, 0)) + self.connect((self.gr_agc_xx_0, 0), (self.gr_mpsk_receiver_cc_0, 0)) + self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.wxgui_scopesink2_1, 0)) + self.connect((self.gr_agc_xx_0, 0), (self.wxgui_fftsink2_0, 0)) + self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.gr_complex_to_real_0, 0)) + self.connect((self.gr_complex_to_real_0, 0), (self.gr_binary_slicer_fb_0, 0)) + self.connect((self.gr_binary_slicer_fb_0, 0), (self.gr_char_to_float_0, 0)) + self.connect((self.gr_char_to_float_0, 0), (self.gr_add_const_vxx_0, 0)) + self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) + self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) + + def set_config_filename(self, config_filename): + self.config_filename = config_filename + self._saved_decim_config = ConfigParser.ConfigParser() + self._saved_decim_config.read(self.config_filename) + if not self._saved_decim_config.has_section("main"): + self._saved_decim_config.add_section("main") + self._saved_decim_config.set("main", "decim", str(self.decim)) + self._saved_decim_config.write(open(self.config_filename, 'w')) + self._saved_gain_config = ConfigParser.ConfigParser() + self._saved_gain_config.read(self.config_filename) + if not self._saved_gain_config.has_section("main"): + self._saved_gain_config.add_section("main") + self._saved_gain_config.set("main", "gain", str(self.gain)) + self._saved_gain_config.write(open(self.config_filename, 'w')) + self._saved_freq_config = ConfigParser.ConfigParser() + self._saved_freq_config.read(self.config_filename) + if not self._saved_freq_config.has_section("main"): + self._saved_freq_config.add_section("main") + self._saved_freq_config.set("main", "freq", str(self.freq)) + self._saved_freq_config.write(open(self.config_filename, 'w')) + self._saved_costas_alpha_config = ConfigParser.ConfigParser() + self._saved_costas_alpha_config.read(self.config_filename) + if not self._saved_costas_alpha_config.has_section("main"): + self._saved_costas_alpha_config.add_section("main") + self._saved_costas_alpha_config.set("main", "costas_alpha", str(self.costas_alpha)) + self._saved_costas_alpha_config.write(open(self.config_filename, 'w')) + self._saved_gain_mu_config = ConfigParser.ConfigParser() + self._saved_gain_mu_config.read(self.config_filename) + if not self._saved_gain_mu_config.has_section("main"): + self._saved_gain_mu_config.add_section("main") + self._saved_gain_mu_config.set("main", "gain_mu", str(self.gain_mu)) + self._saved_gain_mu_config.write(open(self.config_filename, 'w')) + + def set_saved_decim(self, saved_decim): + self.saved_decim = saved_decim + self.set_decim(self.saved_decim) + + def set_decim(self, decim): + self.decim = decim + self.set_samp_rate(64e6/self.decim) + self._decim_text_box.set_value(self.decim) + self._saved_decim_config = ConfigParser.ConfigParser() + self._saved_decim_config.read(self.config_filename) + if not self._saved_decim_config.has_section("main"): + self._saved_decim_config.add_section("main") + self._saved_decim_config.set("main", "decim", str(self.decim)) + self._saved_decim_config.write(open(self.config_filename, 'w')) + + def set_symbol_rate(self, symbol_rate): + self.symbol_rate = symbol_rate + self.set_sps(self.samp_rate/self.symbol_rate) + + def set_saved_gain_mu(self, saved_gain_mu): + self.saved_gain_mu = saved_gain_mu + self.set_gain_mu(self.saved_gain_mu) + + def set_saved_gain(self, saved_gain): + self.saved_gain = saved_gain + self.set_gain(self.saved_gain) + + def set_saved_freq(self, saved_freq): + self.saved_freq = saved_freq + self.set_freq(self.saved_freq) + + def set_saved_costas_alpha(self, saved_costas_alpha): + self.saved_costas_alpha = saved_costas_alpha + self.set_costas_alpha(self.saved_costas_alpha) + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.set_sps(self.samp_rate/self.symbol_rate) + self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate) + self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate) + self.wxgui_scopesink2_1.set_sample_rate(self.samp_rate) + + def set_sps(self, sps): + self.sps = sps + self.gr_mpsk_receiver_cc_0.set_omega(self.sps) + + def set_gain_mu(self, gain_mu): + self.gain_mu = gain_mu + self.gr_mpsk_receiver_cc_0.set_gain_mu(self.gain_mu) + self.gr_mpsk_receiver_cc_0.set_gain_omega(self.gain_mu*self.gain_mu/4.0) + self._saved_gain_mu_config = ConfigParser.ConfigParser() + self._saved_gain_mu_config.read(self.config_filename) + if not self._saved_gain_mu_config.has_section("main"): + self._saved_gain_mu_config.add_section("main") + self._saved_gain_mu_config.set("main", "gain_mu", str(self.gain_mu)) + self._saved_gain_mu_config.write(open(self.config_filename, 'w')) + self._gain_mu_slider.set_value(self.gain_mu) + self._gain_mu_text_box.set_value(self.gain_mu) + + def set_gain(self, gain): + self.gain = gain + self._gain_slider.set_value(self.gain) + self._gain_text_box.set_value(self.gain) + self._saved_gain_config = ConfigParser.ConfigParser() + self._saved_gain_config.read(self.config_filename) + if not self._saved_gain_config.has_section("main"): + self._saved_gain_config.add_section("main") + self._saved_gain_config.set("main", "gain", str(self.gain)) + self._saved_gain_config.write(open(self.config_filename, 'w')) + + def set_freq(self, freq): + self.freq = freq + self.wxgui_fftsink2_0.set_baseband_freq(self.freq) + self._freq_slider.set_value(self.freq) + self._freq_text_box.set_value(self.freq) + self._saved_freq_config = ConfigParser.ConfigParser() + self._saved_freq_config.read(self.config_filename) + if not self._saved_freq_config.has_section("main"): + self._saved_freq_config.add_section("main") + self._saved_freq_config.set("main", "freq", str(self.freq)) + self._saved_freq_config.write(open(self.config_filename, 'w')) + + def set_costas_alpha(self, costas_alpha): + self.costas_alpha = costas_alpha + self.gr_mpsk_receiver_cc_0.set_alpha(self.costas_alpha) + self.gr_mpsk_receiver_cc_0.set_beta(self.costas_alpha*self.costas_alpha/4.0) + self._costas_alpha_slider.set_value(self.costas_alpha) + self._costas_alpha_text_box.set_value(self.costas_alpha) + self._saved_costas_alpha_config = ConfigParser.ConfigParser() + self._saved_costas_alpha_config.read(self.config_filename) + if not self._saved_costas_alpha_config.has_section("main"): + self._saved_costas_alpha_config.add_section("main") + self._saved_costas_alpha_config.set("main", "costas_alpha", str(self.costas_alpha)) + self._saved_costas_alpha_config.write(open(self.config_filename, 'w')) + +if __name__ == '__main__': + parser = OptionParser(option_class=eng_option, usage="%prog: [options]") + (options, args) = parser.parse_args() + tb = usrp_rx_lrit() + tb.Run(True) + -- cgit From 225d3141a7f4754eae5a1a041e1d18dc38131772 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sat, 29 Aug 2009 13:24:58 -0700 Subject: Implemented crude timing recovery using zero crossings but no resampling --- gr-noaa/grc/usrp_rx_hrpt.grc | 513 ++++++++++++++++++++----------------------- gr-noaa/grc/usrp_rx_hrpt.py | 35 ++- 2 files changed, 252 insertions(+), 296 deletions(-) (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc index d3c6603ad..b304bd359 100644 --- a/gr-noaa/grc/usrp_rx_hrpt.grc +++ b/gr-noaa/grc/usrp_rx_hrpt.grc @@ -1,6 +1,6 @@ - Sat Aug 29 11:48:56 2009 + Sat Aug 29 13:16:19 2009 options @@ -257,85 +257,56 @@ - wxgui_fftsink2 + variable id - rx_fftsink + max_carrier_offset _enabled True - type - complex - - - title - RX Spectrum - - - samp_rate - sample_rate - - - baseband_freq - 1698e6 - - - y_per_div - 5 - - - y_divs - 8 - - - ref_level - 20 + value + 2*math.pi*100e3/sample_rate - fft_size - 1024 + _coordinate + (668, 107) - fft_rate - 30 + _rotation + 0 + + + variable - peak_hold - False + id + max_sync_offset - average + _enabled True - avg_alpha - 0.1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 + value + 0.01 _coordinate - (194, 263) + (665, 173) _rotation - 180 + 0 wxgui_scopesink2 id - wxgui_scopesink2_0 + wxgui_scopesink2_0_0 _enabled @@ -347,7 +318,7 @@ title - RX Waveform + Post-PLL samp_rate @@ -355,7 +326,7 @@ v_scale - 0 + 0.5 t_scale @@ -375,15 +346,15 @@ grid_pos - 1, 0, 1, 1 + 0, 0, 1, 1 notebook - displays, 0 + displays, 1 _coordinate - (198, 609) + (618, 335) _rotation @@ -391,38 +362,34 @@ - gr_agc_xx + notebook id - agr + displays _enabled True - type - complex - - - rate - 1e-6 + style + wx.NB_TOP - reference - 1.0 + labels + ['RX','PLL','SYNC'] - gain - 1.0 + grid_pos + 1, 0, 1, 2 - max_gain - 1.0 + notebook + _coordinate - (261, 494) + (9, 99) _rotation @@ -430,10 +397,10 @@ - gr_moving_average_xx + wxgui_scopesink2 id - gr_moving_average_xx_0 + wxgui_scopesink2_0_0_0 _enabled @@ -444,66 +411,79 @@ complex - length - hs + title + Post-PLL - scale - 1.0/hs + samp_rate + sample_rate - max_iter - 4000 + v_scale + 0.5 - _coordinate - (434, 502) + t_scale + 20.0/sample_rate - _rotation - 0 + ac_couple + False - - - variable - id - max_carrier_offset + xy_mode + True - _enabled - True + num_inputs + 1 - value - 2*math.pi*100e3/sample_rate + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 _coordinate - (668, 107) + (618, 614) _rotation - 0 + 180 - variable + noaa_hrpt_sync_cc id - max_sync_offset + sync _enabled True - value - 0.01 + alpha + sync_alpha + + + beta + sync_alpha**2/4.0 + + + sps + sps + + + max_offset + max_sync_offset _coordinate - (665, 173) + (865, 494) _rotation @@ -511,140 +491,156 @@ - variable_slider + wxgui_scopesink2 id - pll_alpha + wxgui_scopesink2_0_0_0_0 _enabled True - label - PLL Alpha + type + complex - value - 0.005 + title + Post-SYNC - min - 0.0 + samp_rate + sym_rate - max + v_scale 0.5 - num_steps - 500 + t_scale + 20.0/sym_rate - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + True + + + num_inputs + 1 grid_pos - 0, 0, 1, 1 + 1, 0, 1, 1 notebook - + displays, 2 _coordinate - (192, 100) + (872, 607) _rotation - 0 + 180 - variable_slider + wxgui_scopesink2 id - sync_alpha + wxgui_scopesink2_0_0_1 _enabled True - label - SYNC Alpha + type + complex - value - 0.005 + title + Post-SYNC - min - 0.0 + samp_rate + sym_rate - max + v_scale 0.5 - num_steps - 500 + t_scale + 20.0/sym_rate - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + False + + + num_inputs + 1 grid_pos - 0, 1, 1, 1 + 0, 0, 1, 1 notebook - + displays, 2 _coordinate - (344, 101) + (872, 341) _rotation - 0 + 180 - noaa_hrpt_pll_cc + gr_agc_xx id - noaa_hrpt_pll_cc_0 + agr _enabled True - alpha - pll_alpha + type + complex - beta - pll_alpha**2/4.0 + rate + 1e-6 - max_offset - max_carrier_offset + reference + 1.0 + + + gain + 1.0 + + + max_gain + 1.0 _coordinate - (628, 502) + (261, 494) _rotation @@ -652,69 +648,41 @@ - wxgui_scopesink2 + noaa_hrpt_pll_cc id - wxgui_scopesink2_0_0 + noaa_hrpt_pll_cc_0 _enabled True - type - complex - - - title - Post-PLL - - - samp_rate - sample_rate - - - v_scale - 0.5 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 + alpha + pll_alpha - grid_pos - 0, 0, 1, 1 + beta + pll_alpha**2/4.0 - notebook - displays, 1 + max_offset + max_carrier_offset _coordinate - (618, 335) + (628, 502) _rotation - 180 + 0 - wxgui_scopesink2 + wxgui_fftsink2 id - wxgui_scopesink2_0_0_1 + rx_fftsink _enabled @@ -726,78 +694,59 @@ title - Post-SYNC + RX Spectrum samp_rate sample_rate - v_scale - 0.5 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False + baseband_freq + 1698e6 - num_inputs - 1 + y_per_div + 5 - grid_pos - 0, 0, 1, 1 + y_divs + 8 - notebook - displays, 2 + ref_level + 20 - _coordinate - (872, 341) + fft_size + 1024 - _rotation - 180 + fft_rate + 30 - - - notebook - id - displays + peak_hold + False - _enabled + average True - style - wx.NB_TOP - - - labels - ['RX','PLL','SYNC'] + avg_alpha + 0.1 grid_pos - 1, 0, 1, 2 + 0, 0, 1, 1 notebook - + displays, 0 _coordinate - (9, 99) + (433, 297) _rotation @@ -808,7 +757,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0_0 + wxgui_scopesink2_0 _enabled @@ -820,7 +769,7 @@ title - Post-PLL + RX Waveform samp_rate @@ -828,7 +777,7 @@ v_scale - 0.5 + 0 t_scale @@ -840,7 +789,7 @@ xy_mode - True + False num_inputs @@ -852,46 +801,66 @@ notebook - displays, 1 + displays, 0 _coordinate - (618, 614) + (434, 603) _rotation - 180 + 0 - noaa_hrpt_sync_cc + variable_slider id - sync + pll_alpha _enabled True - alpha - sync_alpha + label + PLL Alpha - beta - sync_alpha**2/4.0 + value + 0.001 - sps - sps + min + 0.0 - max_offset - max_sync_offset + max + 0.5 + + + num_steps + 500 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 0, 1, 1 + + + notebook + _coordinate - (865, 494) + (192, 100) _rotation @@ -899,62 +868,58 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_0_0 + sync_alpha _enabled True - type - complex + label + SYNC Alpha - title - Post-SYNC + value + 0.001 - samp_rate - sample_rate + min + 0.0 - v_scale + max 0.5 - t_scale - 20.0/sample_rate - - - ac_couple - False + num_steps + 500 - xy_mode - True + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos - 1, 0, 1, 1 + 0, 1, 1, 1 notebook - displays, 2 + _coordinate - (872, 607) + (344, 101) _rotation - 180 + 0 @@ -969,12 +934,6 @@ 0 0 - - agr - gr_moving_average_xx_0 - 0 - 0 - agr rx_fftsink @@ -987,12 +946,6 @@ 0 0 - - gr_moving_average_xx_0 - noaa_hrpt_pll_cc_0 - 0 - 0 - noaa_hrpt_pll_cc_0 wxgui_scopesink2_0_0 @@ -1023,4 +976,10 @@ 0 0 + + agr + noaa_hrpt_pll_cc_0 + 0 + 0 + diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py index ed6417335..5cfaf7842 100755 --- a/gr-noaa/grc/usrp_rx_hrpt.py +++ b/gr-noaa/grc/usrp_rx_hrpt.py @@ -2,7 +2,7 @@ ################################################## # Gnuradio Python Flow Graph # Title: USRP HRPT Receiver -# Generated: Sat Aug 29 11:48:57 2009 +# Generated: Sat Aug 29 13:16:19 2009 ################################################## from gnuradio import gr @@ -28,8 +28,8 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.sym_rate = sym_rate = 600*1109 self.sample_rate = sample_rate = 64e6/decim self.sps = sps = sample_rate/sym_rate - self.sync_alpha = sync_alpha = 0.005 - self.pll_alpha = pll_alpha = 0.005 + self.sync_alpha = sync_alpha = 0.001 + self.pll_alpha = pll_alpha = 0.001 self.max_sync_offset = max_sync_offset = 0.01 self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate self.hs = hs = int(sps/2.0) @@ -97,7 +97,6 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): # Blocks ################################################## self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) - self.gr_moving_average_xx_0 = gr.moving_average_cc(hs, 1.0/hs, 4000) self.noaa_hrpt_pll_cc_0 = noaa.hrpt_pll_cc(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) self.rx_fftsink = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), @@ -153,9 +152,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.wxgui_scopesink2_0_0_0_0 = scopesink2.scope_sink_c( self.displays.GetPage(2).GetWin(), title="Post-SYNC", - sample_rate=sample_rate, + sample_rate=sym_rate, v_scale=0.5, - t_scale=20.0/sample_rate, + t_scale=20.0/sym_rate, ac_couple=False, xy_mode=True, num_inputs=1, @@ -164,9 +163,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.wxgui_scopesink2_0_0_1 = scopesink2.scope_sink_c( self.displays.GetPage(2).GetWin(), title="Post-SYNC", - sample_rate=sample_rate, + sample_rate=sym_rate, v_scale=0.5, - t_scale=20.0/sample_rate, + t_scale=20.0/sym_rate, ac_couple=False, xy_mode=False, num_inputs=1, @@ -178,15 +177,14 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): ################################################## self.connect((self.src, 0), (self.throttle, 0)) self.connect((self.throttle, 0), (self.agr, 0)) - self.connect((self.agr, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.agr, 0), (self.rx_fftsink, 0)) self.connect((self.agr, 0), (self.wxgui_scopesink2_0, 0)) - self.connect((self.gr_moving_average_xx_0, 0), (self.noaa_hrpt_pll_cc_0, 0)) self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0, 0)) self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0_0, 0)) self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.sync, 0)) self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_1, 0)) self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) + self.connect((self.agr, 0), (self.noaa_hrpt_pll_cc_0, 0)) def set_decim(self, decim): self.decim = decim @@ -195,17 +193,17 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_sym_rate(self, sym_rate): self.sym_rate = sym_rate self.set_sps(self.sample_rate/self.sym_rate) + self.wxgui_scopesink2_0_0_0_0.set_sample_rate(self.sym_rate) + self.wxgui_scopesink2_0_0_1.set_sample_rate(self.sym_rate) def set_sample_rate(self, sample_rate): self.sample_rate = sample_rate self.set_sps(self.sample_rate/self.sym_rate) - self.rx_fftsink.set_sample_rate(self.sample_rate) - self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) - self.wxgui_scopesink2_0_0_1.set_sample_rate(self.sample_rate) self.wxgui_scopesink2_0_0_0.set_sample_rate(self.sample_rate) - self.wxgui_scopesink2_0_0_0_0.set_sample_rate(self.sample_rate) + self.rx_fftsink.set_sample_rate(self.sample_rate) + self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) def set_sps(self, sps): self.sps = sps @@ -213,17 +211,17 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_sync_alpha(self, sync_alpha): self.sync_alpha = sync_alpha - self._sync_alpha_slider.set_value(self.sync_alpha) - self._sync_alpha_text_box.set_value(self.sync_alpha) self.sync.set_alpha(self.sync_alpha) self.sync.set_beta(self.sync_alpha**2/4.0) + self._sync_alpha_slider.set_value(self.sync_alpha) + self._sync_alpha_text_box.set_value(self.sync_alpha) def set_pll_alpha(self, pll_alpha): self.pll_alpha = pll_alpha - self._pll_alpha_slider.set_value(self.pll_alpha) - self._pll_alpha_text_box.set_value(self.pll_alpha) self.noaa_hrpt_pll_cc_0.set_alpha(self.pll_alpha) self.noaa_hrpt_pll_cc_0.set_beta(self.pll_alpha**2/4.0) + self._pll_alpha_slider.set_value(self.pll_alpha) + self._pll_alpha_text_box.set_value(self.pll_alpha) def set_max_sync_offset(self, max_sync_offset): self.max_sync_offset = max_sync_offset @@ -235,7 +233,6 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_hs(self, hs): self.hs = hs - self.gr_moving_average_xx_0.set_length_and_scale(self.hs, 1.0/self.hs) if __name__ == '__main__': parser = OptionParser(option_class=eng_option, usage="%prog: [options]") -- cgit From 65bcd58b65219408268e5db1b8fbafb2d3ccc215 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Mon, 7 Sep 2009 13:22:16 -0700 Subject: Updated HRPT blocks/scripts for testing. Seeing good minor frame sync's. * Change PLL and SYNC blocks to output floats * Correct bit sense * Update RX script to record ascii bits --- gr-noaa/grc/Makefile.am | 4 +- gr-noaa/grc/noaa_hrpt_pll_cc.xml | 34 --- gr-noaa/grc/noaa_hrpt_pll_cf.xml | 34 +++ gr-noaa/grc/noaa_hrpt_sync_cc.xml | 39 --- gr-noaa/grc/noaa_hrpt_sync_ff.xml | 39 +++ gr-noaa/grc/usrp_rx_hrpt.grc | 599 +++++++++++++++++++++----------------- gr-noaa/grc/usrp_rx_hrpt.py | 78 ++--- 7 files changed, 443 insertions(+), 384 deletions(-) delete mode 100644 gr-noaa/grc/noaa_hrpt_pll_cc.xml create mode 100644 gr-noaa/grc/noaa_hrpt_pll_cf.xml delete mode 100644 gr-noaa/grc/noaa_hrpt_sync_cc.xml create mode 100644 gr-noaa/grc/noaa_hrpt_sync_ff.xml (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index c75529778..fa2c40c88 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -28,8 +28,8 @@ dist_bin_SCRIPTS = \ usrp_rx_lrit.py dist_grcblocks_DATA = \ - noaa_hrpt_pll_cc.xml \ - noaa_hrpt_sync_cc.xml + noaa_hrpt_pll_cf.xml \ + noaa_hrpt_sync_ff.xml EXTRA_DIST = \ usrp_rx_hrpt.grc \ diff --git a/gr-noaa/grc/noaa_hrpt_pll_cc.xml b/gr-noaa/grc/noaa_hrpt_pll_cc.xml deleted file mode 100644 index e56e0b056..000000000 --- a/gr-noaa/grc/noaa_hrpt_pll_cc.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - HRPT PLL - noaa_hrpt_pll_cc - NOAA - from gnuradio import noaa - noaa.hrpt_pll_cc($alpha, $beta, $max_offset) - set_alpha($alpha) - set_beta($beta) - set_max_offset($max_offset) - - Alpha - alpha - real - - - Beta - beta - real - - - Max Offset - max_offset - real - - - in - complex - - - out - complex - - diff --git a/gr-noaa/grc/noaa_hrpt_pll_cf.xml b/gr-noaa/grc/noaa_hrpt_pll_cf.xml new file mode 100644 index 000000000..bbe15e8c3 --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_pll_cf.xml @@ -0,0 +1,34 @@ + + + HRPT PLL + noaa_hrpt_pll_cf + NOAA + from gnuradio import noaa + noaa.hrpt_pll_cf($alpha, $beta, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Max Offset + max_offset + real + + + in + complex + + + out + float + + diff --git a/gr-noaa/grc/noaa_hrpt_sync_cc.xml b/gr-noaa/grc/noaa_hrpt_sync_cc.xml deleted file mode 100644 index d311aa946..000000000 --- a/gr-noaa/grc/noaa_hrpt_sync_cc.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - HRPT SYNC - noaa_hrpt_sync_cc - NOAA - from gnuradio import noaa - noaa.hrpt_sync_cc($alpha, $beta, $sps, $max_offset) - set_alpha($alpha) - set_beta($beta) - set_max_offset($max_offset) - - Alpha - alpha - real - - - Beta - beta - real - - - Samples/Symbol - sps - real - - - Max Offset - max_offset - real - - - in - complex - - - out - complex - - diff --git a/gr-noaa/grc/noaa_hrpt_sync_ff.xml b/gr-noaa/grc/noaa_hrpt_sync_ff.xml new file mode 100644 index 000000000..91b83ad5d --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_sync_ff.xml @@ -0,0 +1,39 @@ + + + HRPT SYNC + noaa_hrpt_sync_ff + NOAA + from gnuradio import noaa + noaa.hrpt_sync_ff($alpha, $beta, $sps, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Samples/Symbol + sps + real + + + Max Offset + max_offset + real + + + in + float + + + out + float + + diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc index b304bd359..41aa1958e 100644 --- a/gr-noaa/grc/usrp_rx_hrpt.grc +++ b/gr-noaa/grc/usrp_rx_hrpt.grc @@ -1,6 +1,6 @@ - Sat Aug 29 13:16:19 2009 + Mon Sep 7 13:05:09 2009 options @@ -106,41 +106,6 @@ 0 - - gr_file_source - - id - src - - - _enabled - True - - - file - poes-d16.dat - - - type - complex - - - repeat - True - - - vlen - 1 - - - _coordinate - (34, 423) - - - _rotation - 0 - - variable @@ -257,45 +222,78 @@ - variable + wxgui_fftsink2 id - max_carrier_offset + rx_fftsink _enabled True - value - 2*math.pi*100e3/sample_rate + type + complex - _coordinate - (668, 107) + title + RX Spectrum - _rotation - 0 + samp_rate + sample_rate - - - variable - id - max_sync_offset + baseband_freq + 1698e6 - _enabled + y_per_div + 5 + + + y_divs + 8 + + + ref_level + 20 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average True - value - 0.01 + avg_alpha + 0.1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 _coordinate - (665, 173) + (433, 297) _rotation @@ -306,7 +304,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0 + wxgui_scopesink2_0 _enabled @@ -318,7 +316,7 @@ title - Post-PLL + RX Waveform samp_rate @@ -326,7 +324,7 @@ v_scale - 0.5 + 0 t_scale @@ -346,42 +344,62 @@ grid_pos - 0, 0, 1, 1 + 1, 0, 1, 1 notebook - displays, 1 + displays, 0 _coordinate - (618, 335) + (434, 603) _rotation - 180 + 0 - notebook + variable_slider id - displays + pll_alpha _enabled True + + label + PLL Alpha + + + value + 0.001 + + + min + 0.0 + + + max + 0.5 + + + num_steps + 500 + style - wx.NB_TOP + wx.SL_HORIZONTAL - labels - ['RX','PLL','SYNC'] + converver + float_converter grid_pos - 1, 0, 1, 2 + 0, 0, 1, 1 notebook @@ -389,7 +407,7 @@ _coordinate - (9, 99) + (192, 100) _rotation @@ -397,93 +415,100 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_0 + sync_alpha _enabled True - type - complex + label + SYNC Alpha - title - Post-PLL + value + 0.001 - samp_rate - sample_rate + min + 0.0 - v_scale + max 0.5 - t_scale - 20.0/sample_rate - - - ac_couple - False + num_steps + 500 - xy_mode - True + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos - 1, 0, 1, 1 + 0, 1, 1, 1 notebook - displays, 1 + _coordinate - (618, 614) + (344, 101) _rotation - 180 + 0 - noaa_hrpt_sync_cc + variable id - sync + max_carrier_offset _enabled True - alpha - sync_alpha + value + 2*math.pi*100e3/sample_rate - beta - sync_alpha**2/4.0 + _coordinate + (671, 14) - sps - sps + _rotation + 0 + + + variable - max_offset + id max_sync_offset + + _enabled + True + + + value + 0.01 + _coordinate - (865, 494) + (805, 13) _rotation @@ -491,69 +516,84 @@ - wxgui_scopesink2 + gr_file_source id - wxgui_scopesink2_0_0_0_0 + src _enabled True + + file + poes-d16.dat + type complex - title - Post-SYNC + repeat + False - samp_rate - sym_rate + vlen + 1 - v_scale - 0.5 + _coordinate + (34, 423) - t_scale - 20.0/sym_rate + _rotation + 0 + + + gr_agc_xx - ac_couple - False + id + agr - xy_mode + _enabled True - num_inputs - 1 + type + complex - grid_pos - 1, 0, 1, 1 + rate + 1e-6 - notebook - displays, 2 + reference + 1.0 + + + gain + 1.0 + + + max_gain + 1.0 _coordinate - (872, 607) + (261, 494) _rotation - 180 + 0 wxgui_scopesink2 id - wxgui_scopesink2_0_0_1 + wxgui_scopesink2_0_0 _enabled @@ -561,15 +601,15 @@ type - complex + float title - Post-SYNC + Post-PLL samp_rate - sym_rate + sample_rate v_scale @@ -577,7 +617,7 @@ t_scale - 20.0/sym_rate + 20.0/sample_rate ac_couple @@ -597,11 +637,11 @@ notebook - displays, 2 + displays, 1 _coordinate - (872, 341) + (618, 335) _rotation @@ -609,38 +649,30 @@ - gr_agc_xx + noaa_hrpt_pll_cf id - agr + noaa_hrpt_pll_cf_0 _enabled True - type - complex - - - rate - 1e-6 - - - reference - 1.0 + alpha + pll_alpha - gain - 1.0 + beta + pll_alpha**2/4.0 - max_gain - 1.0 + max_offset + max_carrier_offset _coordinate - (261, 494) + (639, 502) _rotation @@ -648,10 +680,10 @@ - noaa_hrpt_pll_cc + noaa_hrpt_sync_ff id - noaa_hrpt_pll_cc_0 + noaa_hrpt_sync_ff_0 _enabled @@ -659,19 +691,23 @@ alpha - pll_alpha + .005 beta - pll_alpha**2/4.0 + .005*.005/4.0 + + + sps + sps max_offset - max_carrier_offset + max_sync_offset _coordinate - (628, 502) + (876, 494) _rotation @@ -679,74 +715,91 @@ - wxgui_fftsink2 + gr_binary_slicer_fb id - rx_fftsink + gr_binary_slicer_fb_0 _enabled True - type - complex + _coordinate + (1108, 522) - title - RX Spectrum + _rotation + 0 + + + virtual_sink - samp_rate - sample_rate + id + virtual_sink_1 - baseband_freq - 1698e6 + _enabled + True - y_per_div - 5 + stream_id + bits - y_divs - 8 + _coordinate + (1289, 518) - ref_level - 20 + _rotation + 0 + + + gr_file_sink - fft_size - 1024 + id + gr_file_sink_0 - fft_rate - 30 + _enabled + True - peak_hold - False + file + bits.dat - average - True + type + byte - avg_alpha - 0.1 + vlen + 1 - grid_pos - 0, 0, 1, 1 + _coordinate + (981, 919) - notebook - displays, 0 + _rotation + 0 + + + + gr_char_to_float + + id + gr_char_to_float_0 + + + _enabled + True _coordinate - (433, 297) + (477, 923) _rotation @@ -754,58 +807,72 @@ - wxgui_scopesink2 + gr_float_to_char id - wxgui_scopesink2_0 + gr_float_to_char_0 _enabled True - type - complex + _coordinate + (809, 923) - title - RX Waveform + _rotation + 0 + + + gr_add_const_vxx - samp_rate - sample_rate + id + gr_add_const_vxx_0 - v_scale - 0 + _enabled + True - t_scale - 20.0/sample_rate + type + float - ac_couple - False + const + 48.0 - xy_mode - False + vlen + 1 - num_inputs - 1 + _coordinate + (653, 919) - grid_pos - 1, 0, 1, 1 + _rotation + 0 + + + virtual_source - notebook - displays, 0 + id + virtual_source_0 + + + _enabled + True + + + stream_id + bits _coordinate - (434, 603) + (283, 919) _rotation @@ -813,101 +880,85 @@ - variable_slider + wxgui_scopesink2 id - pll_alpha + wxgui_scopesink2_0_0_0_0 _enabled True - label - PLL Alpha + type + float - value - 0.001 + title + Post-SYNC - min - 0.0 + samp_rate + sym_rate - max + v_scale 0.5 - num_steps - 500 + t_scale + 20.0/sym_rate - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + False + + + num_inputs + 1 grid_pos - 0, 0, 1, 1 + 1, 0, 1, 1 notebook - + displays, 1 _coordinate - (192, 100) + (872, 607) _rotation - 0 + 180 - variable_slider + notebook id - sync_alpha + displays _enabled True - - label - SYNC Alpha - - - value - 0.001 - - - min - 0.0 - - - max - 0.5 - - - num_steps - 500 - style - wx.SL_HORIZONTAL + wx.NB_TOP - converver - float_converter + labels + ['RX','PLL/SYNC'] grid_pos - 0, 1, 1, 1 + 1, 0, 1, 2 notebook @@ -915,7 +966,7 @@ _coordinate - (344, 101) + (9, 99) _rotation @@ -947,38 +998,62 @@ 0 - noaa_hrpt_pll_cc_0 - wxgui_scopesink2_0_0 + gr_binary_slicer_fb_0 + virtual_sink_1 0 0 - noaa_hrpt_pll_cc_0 - wxgui_scopesink2_0_0_0 + agr + noaa_hrpt_pll_cf_0 0 0 - noaa_hrpt_pll_cc_0 - sync + noaa_hrpt_pll_cf_0 + wxgui_scopesink2_0_0 0 0 - sync - wxgui_scopesink2_0_0_1 + noaa_hrpt_pll_cf_0 + noaa_hrpt_sync_ff_0 0 0 - sync + noaa_hrpt_sync_ff_0 + gr_binary_slicer_fb_0 + 0 + 0 + + + noaa_hrpt_sync_ff_0 wxgui_scopesink2_0_0_0_0 0 0 - agr - noaa_hrpt_pll_cc_0 + virtual_source_0 + gr_char_to_float_0 + 0 + 0 + + + gr_float_to_char_0 + gr_file_sink_0 + 0 + 0 + + + gr_add_const_vxx_0 + gr_float_to_char_0 + 0 + 0 + + + gr_char_to_float_0 + gr_add_const_vxx_0 0 0 diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py index 5cfaf7842..74e352670 100755 --- a/gr-noaa/grc/usrp_rx_hrpt.py +++ b/gr-noaa/grc/usrp_rx_hrpt.py @@ -2,12 +2,14 @@ ################################################## # Gnuradio Python Flow Graph # Title: USRP HRPT Receiver -# Generated: Sat Aug 29 13:16:19 2009 +# Generated: Mon Sep 7 13:05:09 2009 ################################################## +from gnuradio import eng_notation from gnuradio import gr from gnuradio import noaa from gnuradio.eng_option import eng_option +from gnuradio.gr import firdes from gnuradio.wxgui import fftsink2 from gnuradio.wxgui import forms from gnuradio.wxgui import scopesink2 @@ -39,8 +41,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): ################################################## self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX") - self.displays.AddPage(grc_wxgui.Panel(self.displays), "PLL") - self.displays.AddPage(grc_wxgui.Panel(self.displays), "SYNC") + self.displays.AddPage(grc_wxgui.Panel(self.displays), "PLL/SYNC") self.GridAdd(self.displays, 1, 0, 1, 2) ################################################## @@ -97,13 +98,20 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): # Blocks ################################################## self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) - self.noaa_hrpt_pll_cc_0 = noaa.hrpt_pll_cc(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) + self.gr_add_const_vxx_0 = gr.add_const_vff((48.0, )) + self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() + self.gr_char_to_float_0 = gr.char_to_float() + self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "bits.dat") + self.gr_float_to_char_0 = gr.float_to_char() + self.noaa_hrpt_pll_cf_0 = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) + self.noaa_hrpt_sync_ff_0 = noaa.hrpt_sync_ff(.005, .005*.005/4.0, sps, max_sync_offset) self.rx_fftsink = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=1698e6, y_per_div=5, y_divs=8, ref_level=20, + ref_scale=2.0, sample_rate=sample_rate, fft_size=1024, fft_rate=30, @@ -113,8 +121,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): peak_hold=False, ) self.displays.GetPage(0).GridAdd(self.rx_fftsink.win, 0, 0, 1, 1) - self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", True) - self.sync = noaa.hrpt_sync_cc(sync_alpha, sync_alpha**2/4.0, sps, max_sync_offset) + self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", False) self.throttle = gr.throttle(gr.sizeof_gr_complex*1, sample_rate) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.displays.GetPage(0).GetWin(), @@ -127,7 +134,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): num_inputs=1, ) self.displays.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 0, 1, 1) - self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( + self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_f( self.displays.GetPage(1).GetWin(), title="Post-PLL", sample_rate=sample_rate, @@ -138,30 +145,8 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): num_inputs=1, ) self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) - self.wxgui_scopesink2_0_0_0 = scopesink2.scope_sink_c( + self.wxgui_scopesink2_0_0_0_0 = scopesink2.scope_sink_f( self.displays.GetPage(1).GetWin(), - title="Post-PLL", - sample_rate=sample_rate, - v_scale=0.5, - t_scale=20.0/sample_rate, - ac_couple=False, - xy_mode=True, - num_inputs=1, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0_0.win, 1, 0, 1, 1) - self.wxgui_scopesink2_0_0_0_0 = scopesink2.scope_sink_c( - self.displays.GetPage(2).GetWin(), - title="Post-SYNC", - sample_rate=sym_rate, - v_scale=0.5, - t_scale=20.0/sym_rate, - ac_couple=False, - xy_mode=True, - num_inputs=1, - ) - self.displays.GetPage(2).GridAdd(self.wxgui_scopesink2_0_0_0_0.win, 1, 0, 1, 1) - self.wxgui_scopesink2_0_0_1 = scopesink2.scope_sink_c( - self.displays.GetPage(2).GetWin(), title="Post-SYNC", sample_rate=sym_rate, v_scale=0.5, @@ -170,7 +155,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): xy_mode=False, num_inputs=1, ) - self.displays.GetPage(2).GridAdd(self.wxgui_scopesink2_0_0_1.win, 0, 0, 1, 1) + self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0_0_0.win, 1, 0, 1, 1) ################################################## # Connections @@ -179,12 +164,15 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.connect((self.throttle, 0), (self.agr, 0)) self.connect((self.agr, 0), (self.rx_fftsink, 0)) self.connect((self.agr, 0), (self.wxgui_scopesink2_0, 0)) - self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0, 0)) - self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.wxgui_scopesink2_0_0_0, 0)) - self.connect((self.noaa_hrpt_pll_cc_0, 0), (self.sync, 0)) - self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_1, 0)) - self.connect((self.sync, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) - self.connect((self.agr, 0), (self.noaa_hrpt_pll_cc_0, 0)) + self.connect((self.agr, 0), (self.noaa_hrpt_pll_cf_0, 0)) + self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.wxgui_scopesink2_0_0, 0)) + self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.noaa_hrpt_sync_ff_0, 0)) + self.connect((self.noaa_hrpt_sync_ff_0, 0), (self.gr_binary_slicer_fb_0, 0)) + self.connect((self.noaa_hrpt_sync_ff_0, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) + self.connect((self.gr_binary_slicer_fb_0, 0), (self.gr_char_to_float_0, 0)) + self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) + self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) + self.connect((self.gr_char_to_float_0, 0), (self.gr_add_const_vxx_0, 0)) def set_decim(self, decim): self.decim = decim @@ -194,16 +182,14 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.sym_rate = sym_rate self.set_sps(self.sample_rate/self.sym_rate) self.wxgui_scopesink2_0_0_0_0.set_sample_rate(self.sym_rate) - self.wxgui_scopesink2_0_0_1.set_sample_rate(self.sym_rate) def set_sample_rate(self, sample_rate): self.sample_rate = sample_rate self.set_sps(self.sample_rate/self.sym_rate) - self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) - self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) - self.wxgui_scopesink2_0_0_0.set_sample_rate(self.sample_rate) self.rx_fftsink.set_sample_rate(self.sample_rate) self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) + self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) + self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) def set_sps(self, sps): self.sps = sps @@ -211,25 +197,23 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_sync_alpha(self, sync_alpha): self.sync_alpha = sync_alpha - self.sync.set_alpha(self.sync_alpha) - self.sync.set_beta(self.sync_alpha**2/4.0) self._sync_alpha_slider.set_value(self.sync_alpha) self._sync_alpha_text_box.set_value(self.sync_alpha) def set_pll_alpha(self, pll_alpha): self.pll_alpha = pll_alpha - self.noaa_hrpt_pll_cc_0.set_alpha(self.pll_alpha) - self.noaa_hrpt_pll_cc_0.set_beta(self.pll_alpha**2/4.0) self._pll_alpha_slider.set_value(self.pll_alpha) self._pll_alpha_text_box.set_value(self.pll_alpha) + self.noaa_hrpt_pll_cf_0.set_alpha(self.pll_alpha) + self.noaa_hrpt_pll_cf_0.set_beta(self.pll_alpha**2/4.0) def set_max_sync_offset(self, max_sync_offset): self.max_sync_offset = max_sync_offset - self.sync.set_max_offset(self.max_sync_offset) + self.noaa_hrpt_sync_ff_0.set_max_offset(self.max_sync_offset) def set_max_carrier_offset(self, max_carrier_offset): self.max_carrier_offset = max_carrier_offset - self.noaa_hrpt_pll_cc_0.set_max_offset(self.max_carrier_offset) + self.noaa_hrpt_pll_cf_0.set_max_offset(self.max_carrier_offset) def set_hs(self, hs): self.hs = hs -- cgit From b7d1c551fb374a0e5219fbb4d118f3f19f448393 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Tue, 8 Sep 2009 16:52:37 -0700 Subject: Changed synchronizer to output sliced bits. --- gr-noaa/grc/Makefile.am | 2 +- gr-noaa/grc/noaa_hrpt_sync_fb.xml | 39 ++++ gr-noaa/grc/noaa_hrpt_sync_ff.xml | 39 ---- gr-noaa/grc/usrp_rx_hrpt.grc | 455 ++++++++++++++++++-------------------- gr-noaa/grc/usrp_rx_hrpt.py | 20 +- 5 files changed, 264 insertions(+), 291 deletions(-) create mode 100644 gr-noaa/grc/noaa_hrpt_sync_fb.xml delete mode 100644 gr-noaa/grc/noaa_hrpt_sync_ff.xml (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index fa2c40c88..e56bd354d 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -29,7 +29,7 @@ dist_bin_SCRIPTS = \ dist_grcblocks_DATA = \ noaa_hrpt_pll_cf.xml \ - noaa_hrpt_sync_ff.xml + noaa_hrpt_sync_fb.xml EXTRA_DIST = \ usrp_rx_hrpt.grc \ diff --git a/gr-noaa/grc/noaa_hrpt_sync_fb.xml b/gr-noaa/grc/noaa_hrpt_sync_fb.xml new file mode 100644 index 000000000..e066e3489 --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_sync_fb.xml @@ -0,0 +1,39 @@ + + + HRPT SYNC + noaa_hrpt_sync_fb + NOAA + from gnuradio import noaa + noaa.hrpt_sync_fb($alpha, $beta, $sps, $max_offset) + set_alpha($alpha) + set_beta($beta) + set_max_offset($max_offset) + + Alpha + alpha + real + + + Beta + beta + real + + + Samples/Symbol + sps + real + + + Max Offset + max_offset + real + + + in + float + + + out + byte + + diff --git a/gr-noaa/grc/noaa_hrpt_sync_ff.xml b/gr-noaa/grc/noaa_hrpt_sync_ff.xml deleted file mode 100644 index 91b83ad5d..000000000 --- a/gr-noaa/grc/noaa_hrpt_sync_ff.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - HRPT SYNC - noaa_hrpt_sync_ff - NOAA - from gnuradio import noaa - noaa.hrpt_sync_ff($alpha, $beta, $sps, $max_offset) - set_alpha($alpha) - set_beta($beta) - set_max_offset($max_offset) - - Alpha - alpha - real - - - Beta - beta - real - - - Samples/Symbol - sps - real - - - Max Offset - max_offset - real - - - in - float - - - out - float - - diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc index 41aa1958e..25b133532 100644 --- a/gr-noaa/grc/usrp_rx_hrpt.grc +++ b/gr-noaa/grc/usrp_rx_hrpt.grc @@ -1,6 +1,6 @@ - Mon Sep 7 13:05:09 2009 + Tue Sep 8 14:57:48 2009 options @@ -221,144 +221,6 @@ 0 - - wxgui_fftsink2 - - id - rx_fftsink - - - _enabled - True - - - type - complex - - - title - RX Spectrum - - - samp_rate - sample_rate - - - baseband_freq - 1698e6 - - - y_per_div - 5 - - - y_divs - 8 - - - ref_level - 20 - - - ref_scale - 2.0 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - True - - - avg_alpha - 0.1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (433, 297) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - RX Waveform - - - samp_rate - sample_rate - - - v_scale - 0 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 603) - - - _rotation - 0 - - variable_slider @@ -590,62 +452,61 @@ - wxgui_scopesink2 + virtual_source id - wxgui_scopesink2_0_0 + virtual_source_0 _enabled True - type - float - - - title - Post-PLL + stream_id + bits - samp_rate - sample_rate + _coordinate + (283, 919) - v_scale - 0.5 + _rotation + 0 + + + notebook - t_scale - 20.0/sample_rate + id + displays - ac_couple - False + _enabled + True - xy_mode - False + style + wx.NB_TOP - num_inputs - 1 + labels + ['RX','PLL/SYNC'] grid_pos - 0, 0, 1, 1 + 1, 0, 1, 2 notebook - displays, 1 + _coordinate - (618, 335) + (9, 99) _rotation - 180 + 0 @@ -680,10 +541,10 @@ - noaa_hrpt_sync_ff + noaa_hrpt_sync_fb id - noaa_hrpt_sync_ff_0 + noaa_hrpt_sync_fb_0 _enabled @@ -691,11 +552,11 @@ alpha - .005 + 0.001 beta - .005*.005/4.0 + 0.001**2/4.0 sps @@ -707,7 +568,7 @@ _coordinate - (876, 494) + (856, 494) _rotation @@ -715,18 +576,22 @@ - gr_binary_slicer_fb + virtual_sink id - gr_binary_slicer_fb_0 + virtual_sink_1 _enabled True + + stream_id + bits + _coordinate - (1108, 522) + (1126, 518) _rotation @@ -734,22 +599,18 @@ - virtual_sink + gr_char_to_float id - virtual_sink_1 + gr_char_to_float_0 _enabled True - - stream_id - bits - _coordinate - (1289, 518) + (477, 923) _rotation @@ -757,22 +618,22 @@ - gr_file_sink + gr_add_const_vxx id - gr_file_sink_0 + gr_add_const_vxx_0 _enabled True - file - bits.dat + type + float - type - byte + const + 48.0 vlen @@ -780,7 +641,7 @@ _coordinate - (981, 919) + (692, 919) _rotation @@ -788,10 +649,10 @@ - gr_char_to_float + gr_float_to_char id - gr_char_to_float_0 + gr_float_to_char_0 _enabled @@ -799,7 +660,7 @@ _coordinate - (477, 923) + (848, 923) _rotation @@ -807,18 +668,30 @@ - gr_float_to_char + gr_file_sink id - gr_float_to_char_0 + gr_file_sink_0 _enabled True + + file + bits.dat + + + type + byte + + + vlen + 1 + _coordinate - (809, 923) + (1020, 919) _rotation @@ -826,10 +699,10 @@ - gr_add_const_vxx + wxgui_scopesink2 id - gr_add_const_vxx_0 + wxgui_scopesink2_0_0_0_0 _enabled @@ -840,39 +713,123 @@ float - const - 48.0 + title + Post-SYNC - vlen + samp_rate + sym_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sym_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs 1 + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 + _coordinate - (653, 919) + (452, 990) _rotation - 0 + 180 - virtual_source + wxgui_fftsink2 id - virtual_source_0 + rx_fftsink _enabled True - stream_id - bits + type + complex + + + title + RX Spectrum + + + samp_rate + sample_rate + + + baseband_freq + 1698e6 + + + y_per_div + 5 + + + y_divs + 8 + + + ref_level + 20 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + True + + + avg_alpha + 0.1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 _coordinate - (283, 919) + (434, 269) _rotation @@ -883,7 +840,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0_0_0 + wxgui_scopesink2_0 _enabled @@ -891,23 +848,23 @@ type - float + complex title - Post-SYNC + RX Waveform samp_rate - sym_rate + sample_rate v_scale - 0.5 + 0 t_scale - 20.0/sym_rate + 20.0/sample_rate ac_couple @@ -927,50 +884,74 @@ notebook - displays, 1 + displays, 0 _coordinate - (872, 607) + (433, 570) _rotation - 180 + 0 - notebook + wxgui_scopesink2 id - displays + wxgui_scopesink2_0_0 _enabled True - style - wx.NB_TOP + type + float - labels - ['RX','PLL/SYNC'] + title + Post-PLL + + + samp_rate + sample_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sample_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 grid_pos - 1, 0, 1, 2 + 0, 0, 1, 1 notebook - + displays, 1 _coordinate - (9, 99) + (618, 335) _rotation - 0 + 180 @@ -997,12 +978,6 @@ 0 0 - - gr_binary_slicer_fb_0 - virtual_sink_1 - 0 - 0 - agr noaa_hrpt_pll_cf_0 @@ -1016,32 +991,32 @@ 0 - noaa_hrpt_pll_cf_0 - noaa_hrpt_sync_ff_0 + virtual_source_0 + gr_char_to_float_0 0 0 - noaa_hrpt_sync_ff_0 - gr_binary_slicer_fb_0 + noaa_hrpt_pll_cf_0 + noaa_hrpt_sync_fb_0 0 0 - noaa_hrpt_sync_ff_0 - wxgui_scopesink2_0_0_0_0 + noaa_hrpt_sync_fb_0 + virtual_sink_1 0 0 - virtual_source_0 - gr_char_to_float_0 + gr_char_to_float_0 + wxgui_scopesink2_0_0_0_0 0 0 - gr_float_to_char_0 - gr_file_sink_0 + gr_char_to_float_0 + gr_add_const_vxx_0 0 0 @@ -1052,8 +1027,8 @@ 0 - gr_char_to_float_0 - gr_add_const_vxx_0 + gr_float_to_char_0 + gr_file_sink_0 0 0 diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py index 74e352670..10e2f31c0 100755 --- a/gr-noaa/grc/usrp_rx_hrpt.py +++ b/gr-noaa/grc/usrp_rx_hrpt.py @@ -2,7 +2,7 @@ ################################################## # Gnuradio Python Flow Graph # Title: USRP HRPT Receiver -# Generated: Mon Sep 7 13:05:09 2009 +# Generated: Tue Sep 8 14:58:57 2009 ################################################## from gnuradio import eng_notation @@ -99,12 +99,11 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): ################################################## self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) self.gr_add_const_vxx_0 = gr.add_const_vff((48.0, )) - self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_char_to_float_0 = gr.char_to_float() self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "bits.dat") self.gr_float_to_char_0 = gr.float_to_char() self.noaa_hrpt_pll_cf_0 = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) - self.noaa_hrpt_sync_ff_0 = noaa.hrpt_sync_ff(.005, .005*.005/4.0, sps, max_sync_offset) + self.noaa_hrpt_sync_fb_0 = noaa.hrpt_sync_fb(0.001, 0.001**2/4.0, sps, max_sync_offset) self.rx_fftsink = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=1698e6, @@ -166,13 +165,12 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.connect((self.agr, 0), (self.wxgui_scopesink2_0, 0)) self.connect((self.agr, 0), (self.noaa_hrpt_pll_cf_0, 0)) self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.wxgui_scopesink2_0_0, 0)) - self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.noaa_hrpt_sync_ff_0, 0)) - self.connect((self.noaa_hrpt_sync_ff_0, 0), (self.gr_binary_slicer_fb_0, 0)) - self.connect((self.noaa_hrpt_sync_ff_0, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) - self.connect((self.gr_binary_slicer_fb_0, 0), (self.gr_char_to_float_0, 0)) - self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) - self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) + self.connect((self.noaa_hrpt_sync_fb_0, 0), (self.gr_char_to_float_0, 0)) + self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.noaa_hrpt_sync_fb_0, 0)) + self.connect((self.gr_char_to_float_0, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) self.connect((self.gr_char_to_float_0, 0), (self.gr_add_const_vxx_0, 0)) + self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) + self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) def set_decim(self, decim): self.decim = decim @@ -186,9 +184,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_sample_rate(self, sample_rate): self.sample_rate = sample_rate self.set_sps(self.sample_rate/self.sym_rate) + self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) self.rx_fftsink.set_sample_rate(self.sample_rate) self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) - self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) def set_sps(self, sps): @@ -209,7 +207,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): def set_max_sync_offset(self, max_sync_offset): self.max_sync_offset = max_sync_offset - self.noaa_hrpt_sync_ff_0.set_max_offset(self.max_sync_offset) + self.noaa_hrpt_sync_fb_0.set_max_offset(self.max_sync_offset) def set_max_carrier_offset(self, max_carrier_offset): self.max_carrier_offset = max_carrier_offset -- cgit From ce9a41e69f5e3b9e0280d22fa778d167c3982db7 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Tue, 8 Sep 2009 21:08:29 -0700 Subject: Added HRPT deframer block --- gr-noaa/grc/Makefile.am | 1 + gr-noaa/grc/noaa_hrpt_deframer.xml | 12 ++ gr-noaa/grc/usrp_rx_hrpt.grc | 367 ++++++++++++++++++++----------------- gr-noaa/grc/usrp_rx_hrpt.py | 16 +- 4 files changed, 215 insertions(+), 181 deletions(-) create mode 100644 gr-noaa/grc/noaa_hrpt_deframer.xml (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index e56bd354d..4e4c0bae0 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -28,6 +28,7 @@ dist_bin_SCRIPTS = \ usrp_rx_lrit.py dist_grcblocks_DATA = \ + noaa_hrpt_deframer.xml \ noaa_hrpt_pll_cf.xml \ noaa_hrpt_sync_fb.xml diff --git a/gr-noaa/grc/noaa_hrpt_deframer.xml b/gr-noaa/grc/noaa_hrpt_deframer.xml new file mode 100644 index 000000000..bc68f71d3 --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_deframer.xml @@ -0,0 +1,12 @@ + + + HRPT Deframer + noaa_hrpt_deframer + NOAA + from gnuradio import noaa + noaa.hrpt_deframer() + + in + byte + + diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc index 25b133532..715846743 100644 --- a/gr-noaa/grc/usrp_rx_hrpt.grc +++ b/gr-noaa/grc/usrp_rx_hrpt.grc @@ -1,6 +1,6 @@ - Tue Sep 8 14:57:48 2009 + Tue Sep 8 21:03:12 2009 options @@ -377,41 +377,6 @@ 0 - - gr_file_source - - id - src - - - _enabled - True - - - file - poes-d16.dat - - - type - complex - - - repeat - False - - - vlen - 1 - - - _coordinate - (34, 423) - - - _rotation - 0 - - gr_agc_xx @@ -540,41 +505,6 @@ 0 - - noaa_hrpt_sync_fb - - id - noaa_hrpt_sync_fb_0 - - - _enabled - True - - - alpha - 0.001 - - - beta - 0.001**2/4.0 - - - sps - sps - - - max_offset - max_sync_offset - - - _coordinate - (856, 494) - - - _rotation - 0 - - virtual_sink @@ -618,10 +548,10 @@ - gr_add_const_vxx + wxgui_scopesink2 id - gr_add_const_vxx_0 + wxgui_scopesink2_0_0_0_0 _enabled @@ -632,66 +562,103 @@ float - const - 48.0 + title + Post-SYNC - vlen + samp_rate + sym_rate + + + v_scale + 0.5 + + + t_scale + 20.0/sym_rate + + + ac_couple + False + + + xy_mode + False + + + num_inputs 1 + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 + _coordinate - (692, 919) + (452, 990) _rotation - 0 + 180 - gr_float_to_char + wxgui_scopesink2 id - gr_float_to_char_0 + wxgui_scopesink2_0 _enabled True - _coordinate - (848, 923) + type + complex - _rotation - 0 + title + RX Waveform - - - gr_file_sink - id - gr_file_sink_0 + samp_rate + sample_rate - _enabled - True + v_scale + 0 - file - bits.dat + t_scale + 20.0/sample_rate - type - byte + ac_couple + False - vlen + xy_mode + False + + + num_inputs 1 + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + _coordinate - (1020, 919) + (433, 570) _rotation @@ -702,7 +669,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0_0_0 + wxgui_scopesink2_0_0 _enabled @@ -714,11 +681,11 @@ title - Post-SYNC + Post-PLL samp_rate - sym_rate + sample_rate v_scale @@ -726,7 +693,7 @@ t_scale - 20.0/sym_rate + 20.0/sample_rate ac_couple @@ -742,7 +709,7 @@ grid_pos - 1, 0, 1, 1 + 0, 0, 1, 1 notebook @@ -750,7 +717,7 @@ _coordinate - (452, 990) + (618, 335) _rotation @@ -758,78 +725,88 @@ - wxgui_fftsink2 + noaa_hrpt_sync_fb id - rx_fftsink + noaa_hrpt_sync_fb_0 _enabled True - type - complex + alpha + 0.001 - title - RX Spectrum + beta + 0.001**2/4.0 - samp_rate - sample_rate + sps + sps - baseband_freq - 1698e6 + max_offset + max_sync_offset - y_per_div - 5 + _coordinate + (856, 494) - y_divs - 8 + _rotation + 0 + + + noaa_hrpt_deframer - ref_level - 20 + id + noaa_hrpt_deframer_0 - ref_scale - 2.0 + _enabled + True - fft_size - 1024 + _coordinate + (1110, 631) - fft_rate - 30 + _rotation + 0 + + + gr_file_source - peak_hold - False + id + src - average + _enabled True - avg_alpha - 0.1 + file + poes-d16.dat - grid_pos - 0, 0, 1, 1 + type + complex - notebook - displays, 0 + repeat + True + + + vlen + 1 _coordinate - (434, 269) + (34, 423) _rotation @@ -837,58 +814,80 @@ - wxgui_scopesink2 + gr_add_const_vxx id - wxgui_scopesink2_0 + gr_add_const_vxx_0 _enabled - True + False type - complex + float - title - RX Waveform + const + 48.0 - samp_rate - sample_rate + vlen + 1 - v_scale + _coordinate + (692, 919) + + + _rotation 0 + + + gr_float_to_char - t_scale - 20.0/sample_rate + id + gr_float_to_char_0 - ac_couple + _enabled False - xy_mode + _coordinate + (848, 923) + + + _rotation + 0 + + + + gr_file_sink + + id + gr_file_sink_0 + + + _enabled False - num_inputs - 1 + file + bits.dat - grid_pos - 1, 0, 1, 1 + type + byte - notebook - displays, 0 + vlen + 1 _coordinate - (433, 570) + (1020, 919) _rotation @@ -896,10 +895,10 @@ - wxgui_scopesink2 + wxgui_fftsink2 id - wxgui_scopesink2_0_0 + rx_fftsink _enabled @@ -907,35 +906,55 @@ type - float + complex title - Post-PLL + RX Spectrum samp_rate sample_rate - v_scale - 0.5 + baseband_freq + 1698e6 - t_scale - 20.0/sample_rate + y_per_div + 5 - ac_couple - False + y_divs + 8 - xy_mode + ref_level + -5 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold False - num_inputs - 1 + average + True + + + avg_alpha + 0.1 grid_pos @@ -943,15 +962,15 @@ notebook - displays, 1 + displays, 0 _coordinate - (618, 335) + (434, 269) _rotation - 180 + 0 @@ -1032,4 +1051,10 @@ 0 0 + + noaa_hrpt_sync_fb_0 + noaa_hrpt_deframer_0 + 0 + 0 + diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py index 10e2f31c0..40cc517fc 100755 --- a/gr-noaa/grc/usrp_rx_hrpt.py +++ b/gr-noaa/grc/usrp_rx_hrpt.py @@ -2,7 +2,7 @@ ################################################## # Gnuradio Python Flow Graph # Title: USRP HRPT Receiver -# Generated: Tue Sep 8 14:58:57 2009 +# Generated: Tue Sep 8 21:03:12 2009 ################################################## from gnuradio import eng_notation @@ -98,10 +98,8 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): # Blocks ################################################## self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) - self.gr_add_const_vxx_0 = gr.add_const_vff((48.0, )) self.gr_char_to_float_0 = gr.char_to_float() - self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "bits.dat") - self.gr_float_to_char_0 = gr.float_to_char() + self.noaa_hrpt_deframer_0 = noaa.hrpt_deframer() self.noaa_hrpt_pll_cf_0 = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) self.noaa_hrpt_sync_fb_0 = noaa.hrpt_sync_fb(0.001, 0.001**2/4.0, sps, max_sync_offset) self.rx_fftsink = fftsink2.fft_sink_c( @@ -109,7 +107,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): baseband_freq=1698e6, y_per_div=5, y_divs=8, - ref_level=20, + ref_level=-5, ref_scale=2.0, sample_rate=sample_rate, fft_size=1024, @@ -120,7 +118,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): peak_hold=False, ) self.displays.GetPage(0).GridAdd(self.rx_fftsink.win, 0, 0, 1, 1) - self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", False) + self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", True) self.throttle = gr.throttle(gr.sizeof_gr_complex*1, sample_rate) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.displays.GetPage(0).GetWin(), @@ -168,9 +166,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.connect((self.noaa_hrpt_sync_fb_0, 0), (self.gr_char_to_float_0, 0)) self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.noaa_hrpt_sync_fb_0, 0)) self.connect((self.gr_char_to_float_0, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) - self.connect((self.gr_char_to_float_0, 0), (self.gr_add_const_vxx_0, 0)) - self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) - self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) + self.connect((self.noaa_hrpt_sync_fb_0, 0), (self.noaa_hrpt_deframer_0, 0)) def set_decim(self, decim): self.decim = decim @@ -185,9 +181,9 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui): self.sample_rate = sample_rate self.set_sps(self.sample_rate/self.sym_rate) self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) - self.rx_fftsink.set_sample_rate(self.sample_rate) self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) + self.rx_fftsink.set_sample_rate(self.sample_rate) def set_sps(self, sps): self.sps = sps -- cgit From e2216220f85d3e9d93db3946aa0e68e59309d1c2 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sun, 20 Sep 2009 09:49:10 -0700 Subject: Reorganization of directories Moved apps into own directory Added (empty) python directory --- gr-noaa/grc/Makefile.am | 7 - gr-noaa/grc/usrp_rx_hrpt.grc | 1060 ------------------------------ gr-noaa/grc/usrp_rx_hrpt.py | 220 ------- gr-noaa/grc/usrp_rx_lrit.grc | 1477 ------------------------------------------ gr-noaa/grc/usrp_rx_lrit.py | 399 ------------ 5 files changed, 3163 deletions(-) delete mode 100644 gr-noaa/grc/usrp_rx_hrpt.grc delete mode 100755 gr-noaa/grc/usrp_rx_hrpt.py delete mode 100644 gr-noaa/grc/usrp_rx_lrit.grc delete mode 100755 gr-noaa/grc/usrp_rx_lrit.py (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index 4e4c0bae0..9f1f88195 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -23,15 +23,8 @@ include $(top_srcdir)/Makefile.common grcblocksdir = $(prefix)/share/gnuradio/grc/blocks -dist_bin_SCRIPTS = \ - usrp_rx_hrpt.py \ - usrp_rx_lrit.py - dist_grcblocks_DATA = \ noaa_hrpt_deframer.xml \ noaa_hrpt_pll_cf.xml \ noaa_hrpt_sync_fb.xml -EXTRA_DIST = \ - usrp_rx_hrpt.grc \ - usrp_rx_lrit.grc diff --git a/gr-noaa/grc/usrp_rx_hrpt.grc b/gr-noaa/grc/usrp_rx_hrpt.grc deleted file mode 100644 index 715846743..000000000 --- a/gr-noaa/grc/usrp_rx_hrpt.grc +++ /dev/null @@ -1,1060 +0,0 @@ - - - Tue Sep 8 21:03:12 2009 - - options - - id - usrp_rx_hrpt - - - _enabled - True - - - title - USRP HRPT Receiver - - - author - - - - description - - - - window_size - 4096,4096 - - - generate_options - wx_gui - - - category - Custom - - - run - True - - - realtime_scheduling - - - - _coordinate - (10, 10) - - - _rotation - 0 - - - - import - - id - import_0 - - - _enabled - True - - - import - import math - - - _coordinate - (9, 202) - - - _rotation - 0 - - - - gr_throttle - - id - throttle - - - _enabled - True - - - type - complex - - - samples_per_second - sample_rate - - - vlen - 1 - - - _coordinate - (79, 518) - - - _rotation - 0 - - - - variable - - id - decim - - - _enabled - True - - - value - 16 - - - _coordinate - (186, 10) - - - _rotation - 0 - - - - variable - - id - hs - - - _enabled - True - - - value - int(sps/2.0) - - - _coordinate - (589, 13) - - - _rotation - 0 - - - - variable - - id - sym_rate - - - _enabled - True - - - value - 600*1109 - - - _coordinate - (383, 7) - - - _rotation - 0 - - - - variable - - id - sps - - - _enabled - True - - - value - sample_rate/sym_rate - - - _coordinate - (479, 11) - - - _rotation - 0 - - - - variable - - id - sample_rate - - - _enabled - True - - - value - 64e6/decim - - - _coordinate - (273, 9) - - - _rotation - 0 - - - - variable_slider - - id - pll_alpha - - - _enabled - True - - - label - PLL Alpha - - - value - 0.001 - - - min - 0.0 - - - max - 0.5 - - - num_steps - 500 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 0, 1, 1 - - - notebook - - - - _coordinate - (192, 100) - - - _rotation - 0 - - - - variable_slider - - id - sync_alpha - - - _enabled - True - - - label - SYNC Alpha - - - value - 0.001 - - - min - 0.0 - - - max - 0.5 - - - num_steps - 500 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 1, 1, 1 - - - notebook - - - - _coordinate - (344, 101) - - - _rotation - 0 - - - - variable - - id - max_carrier_offset - - - _enabled - True - - - value - 2*math.pi*100e3/sample_rate - - - _coordinate - (671, 14) - - - _rotation - 0 - - - - variable - - id - max_sync_offset - - - _enabled - True - - - value - 0.01 - - - _coordinate - (805, 13) - - - _rotation - 0 - - - - gr_agc_xx - - id - agr - - - _enabled - True - - - type - complex - - - rate - 1e-6 - - - reference - 1.0 - - - gain - 1.0 - - - max_gain - 1.0 - - - _coordinate - (261, 494) - - - _rotation - 0 - - - - virtual_source - - id - virtual_source_0 - - - _enabled - True - - - stream_id - bits - - - _coordinate - (283, 919) - - - _rotation - 0 - - - - notebook - - id - displays - - - _enabled - True - - - style - wx.NB_TOP - - - labels - ['RX','PLL/SYNC'] - - - grid_pos - 1, 0, 1, 2 - - - notebook - - - - _coordinate - (9, 99) - - - _rotation - 0 - - - - noaa_hrpt_pll_cf - - id - noaa_hrpt_pll_cf_0 - - - _enabled - True - - - alpha - pll_alpha - - - beta - pll_alpha**2/4.0 - - - max_offset - max_carrier_offset - - - _coordinate - (639, 502) - - - _rotation - 0 - - - - virtual_sink - - id - virtual_sink_1 - - - _enabled - True - - - stream_id - bits - - - _coordinate - (1126, 518) - - - _rotation - 0 - - - - gr_char_to_float - - id - gr_char_to_float_0 - - - _enabled - True - - - _coordinate - (477, 923) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0_0_0_0 - - - _enabled - True - - - type - float - - - title - Post-SYNC - - - samp_rate - sym_rate - - - v_scale - 0.5 - - - t_scale - 20.0/sym_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (452, 990) - - - _rotation - 180 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - RX Waveform - - - samp_rate - sample_rate - - - v_scale - 0 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (433, 570) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0_0 - - - _enabled - True - - - type - float - - - title - Post-PLL - - - samp_rate - sample_rate - - - v_scale - 0.5 - - - t_scale - 20.0/sample_rate - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (618, 335) - - - _rotation - 180 - - - - noaa_hrpt_sync_fb - - id - noaa_hrpt_sync_fb_0 - - - _enabled - True - - - alpha - 0.001 - - - beta - 0.001**2/4.0 - - - sps - sps - - - max_offset - max_sync_offset - - - _coordinate - (856, 494) - - - _rotation - 0 - - - - noaa_hrpt_deframer - - id - noaa_hrpt_deframer_0 - - - _enabled - True - - - _coordinate - (1110, 631) - - - _rotation - 0 - - - - gr_file_source - - id - src - - - _enabled - True - - - file - poes-d16.dat - - - type - complex - - - repeat - True - - - vlen - 1 - - - _coordinate - (34, 423) - - - _rotation - 0 - - - - gr_add_const_vxx - - id - gr_add_const_vxx_0 - - - _enabled - False - - - type - float - - - const - 48.0 - - - vlen - 1 - - - _coordinate - (692, 919) - - - _rotation - 0 - - - - gr_float_to_char - - id - gr_float_to_char_0 - - - _enabled - False - - - _coordinate - (848, 923) - - - _rotation - 0 - - - - gr_file_sink - - id - gr_file_sink_0 - - - _enabled - False - - - file - bits.dat - - - type - byte - - - vlen - 1 - - - _coordinate - (1020, 919) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - rx_fftsink - - - _enabled - True - - - type - complex - - - title - RX Spectrum - - - samp_rate - sample_rate - - - baseband_freq - 1698e6 - - - y_per_div - 5 - - - y_divs - 8 - - - ref_level - -5 - - - ref_scale - 2.0 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - True - - - avg_alpha - 0.1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 269) - - - _rotation - 0 - - - - src - throttle - 0 - 0 - - - throttle - agr - 0 - 0 - - - agr - rx_fftsink - 0 - 0 - - - agr - wxgui_scopesink2_0 - 0 - 0 - - - agr - noaa_hrpt_pll_cf_0 - 0 - 0 - - - noaa_hrpt_pll_cf_0 - wxgui_scopesink2_0_0 - 0 - 0 - - - virtual_source_0 - gr_char_to_float_0 - 0 - 0 - - - noaa_hrpt_pll_cf_0 - noaa_hrpt_sync_fb_0 - 0 - 0 - - - noaa_hrpt_sync_fb_0 - virtual_sink_1 - 0 - 0 - - - gr_char_to_float_0 - wxgui_scopesink2_0_0_0_0 - 0 - 0 - - - gr_char_to_float_0 - gr_add_const_vxx_0 - 0 - 0 - - - gr_add_const_vxx_0 - gr_float_to_char_0 - 0 - 0 - - - gr_float_to_char_0 - gr_file_sink_0 - 0 - 0 - - - noaa_hrpt_sync_fb_0 - noaa_hrpt_deframer_0 - 0 - 0 - - diff --git a/gr-noaa/grc/usrp_rx_hrpt.py b/gr-noaa/grc/usrp_rx_hrpt.py deleted file mode 100755 index 40cc517fc..000000000 --- a/gr-noaa/grc/usrp_rx_hrpt.py +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/env python -################################################## -# Gnuradio Python Flow Graph -# Title: USRP HRPT Receiver -# Generated: Tue Sep 8 21:03:12 2009 -################################################## - -from gnuradio import eng_notation -from gnuradio import gr -from gnuradio import noaa -from gnuradio.eng_option import eng_option -from gnuradio.gr import firdes -from gnuradio.wxgui import fftsink2 -from gnuradio.wxgui import forms -from gnuradio.wxgui import scopesink2 -from grc_gnuradio import wxgui as grc_wxgui -from optparse import OptionParser -import math -import wx - -class usrp_rx_hrpt(grc_wxgui.top_block_gui): - - def __init__(self): - grc_wxgui.top_block_gui.__init__(self, title="USRP HRPT Receiver") - - ################################################## - # Variables - ################################################## - self.decim = decim = 16 - self.sym_rate = sym_rate = 600*1109 - self.sample_rate = sample_rate = 64e6/decim - self.sps = sps = sample_rate/sym_rate - self.sync_alpha = sync_alpha = 0.001 - self.pll_alpha = pll_alpha = 0.001 - self.max_sync_offset = max_sync_offset = 0.01 - self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate - self.hs = hs = int(sps/2.0) - - ################################################## - # Notebooks - ################################################## - self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) - self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX") - self.displays.AddPage(grc_wxgui.Panel(self.displays), "PLL/SYNC") - self.GridAdd(self.displays, 1, 0, 1, 2) - - ################################################## - # Controls - ################################################## - _sync_alpha_sizer = wx.BoxSizer(wx.VERTICAL) - self._sync_alpha_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_sync_alpha_sizer, - value=self.sync_alpha, - callback=self.set_sync_alpha, - label="SYNC Alpha", - converter=forms.float_converter(), - proportion=0, - ) - self._sync_alpha_slider = forms.slider( - parent=self.GetWin(), - sizer=_sync_alpha_sizer, - value=self.sync_alpha, - callback=self.set_sync_alpha, - minimum=0.0, - maximum=0.5, - num_steps=500, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_sync_alpha_sizer, 0, 1, 1, 1) - _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) - self._pll_alpha_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_pll_alpha_sizer, - value=self.pll_alpha, - callback=self.set_pll_alpha, - label="PLL Alpha", - converter=forms.float_converter(), - proportion=0, - ) - self._pll_alpha_slider = forms.slider( - parent=self.GetWin(), - sizer=_pll_alpha_sizer, - value=self.pll_alpha, - callback=self.set_pll_alpha, - minimum=0.0, - maximum=0.5, - num_steps=500, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_pll_alpha_sizer, 0, 0, 1, 1) - - ################################################## - # Blocks - ################################################## - self.agr = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) - self.gr_char_to_float_0 = gr.char_to_float() - self.noaa_hrpt_deframer_0 = noaa.hrpt_deframer() - self.noaa_hrpt_pll_cf_0 = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) - self.noaa_hrpt_sync_fb_0 = noaa.hrpt_sync_fb(0.001, 0.001**2/4.0, sps, max_sync_offset) - self.rx_fftsink = fftsink2.fft_sink_c( - self.displays.GetPage(0).GetWin(), - baseband_freq=1698e6, - y_per_div=5, - y_divs=8, - ref_level=-5, - ref_scale=2.0, - sample_rate=sample_rate, - fft_size=1024, - fft_rate=30, - average=True, - avg_alpha=0.1, - title="RX Spectrum", - peak_hold=False, - ) - self.displays.GetPage(0).GridAdd(self.rx_fftsink.win, 0, 0, 1, 1) - self.src = gr.file_source(gr.sizeof_gr_complex*1, "poes-d16.dat", True) - self.throttle = gr.throttle(gr.sizeof_gr_complex*1, sample_rate) - self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( - self.displays.GetPage(0).GetWin(), - title="RX Waveform", - sample_rate=sample_rate, - v_scale=0, - t_scale=20.0/sample_rate, - ac_couple=False, - xy_mode=False, - num_inputs=1, - ) - self.displays.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 0, 1, 1) - self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_f( - self.displays.GetPage(1).GetWin(), - title="Post-PLL", - sample_rate=sample_rate, - v_scale=0.5, - t_scale=20.0/sample_rate, - ac_couple=False, - xy_mode=False, - num_inputs=1, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) - self.wxgui_scopesink2_0_0_0_0 = scopesink2.scope_sink_f( - self.displays.GetPage(1).GetWin(), - title="Post-SYNC", - sample_rate=sym_rate, - v_scale=0.5, - t_scale=20.0/sym_rate, - ac_couple=False, - xy_mode=False, - num_inputs=1, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_0_0_0_0.win, 1, 0, 1, 1) - - ################################################## - # Connections - ################################################## - self.connect((self.src, 0), (self.throttle, 0)) - self.connect((self.throttle, 0), (self.agr, 0)) - self.connect((self.agr, 0), (self.rx_fftsink, 0)) - self.connect((self.agr, 0), (self.wxgui_scopesink2_0, 0)) - self.connect((self.agr, 0), (self.noaa_hrpt_pll_cf_0, 0)) - self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.wxgui_scopesink2_0_0, 0)) - self.connect((self.noaa_hrpt_sync_fb_0, 0), (self.gr_char_to_float_0, 0)) - self.connect((self.noaa_hrpt_pll_cf_0, 0), (self.noaa_hrpt_sync_fb_0, 0)) - self.connect((self.gr_char_to_float_0, 0), (self.wxgui_scopesink2_0_0_0_0, 0)) - self.connect((self.noaa_hrpt_sync_fb_0, 0), (self.noaa_hrpt_deframer_0, 0)) - - def set_decim(self, decim): - self.decim = decim - self.set_sample_rate(64e6/self.decim) - - def set_sym_rate(self, sym_rate): - self.sym_rate = sym_rate - self.set_sps(self.sample_rate/self.sym_rate) - self.wxgui_scopesink2_0_0_0_0.set_sample_rate(self.sym_rate) - - def set_sample_rate(self, sample_rate): - self.sample_rate = sample_rate - self.set_sps(self.sample_rate/self.sym_rate) - self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate) - self.wxgui_scopesink2_0.set_sample_rate(self.sample_rate) - self.wxgui_scopesink2_0_0.set_sample_rate(self.sample_rate) - self.rx_fftsink.set_sample_rate(self.sample_rate) - - def set_sps(self, sps): - self.sps = sps - self.set_hs(int(self.sps/2.0)) - - def set_sync_alpha(self, sync_alpha): - self.sync_alpha = sync_alpha - self._sync_alpha_slider.set_value(self.sync_alpha) - self._sync_alpha_text_box.set_value(self.sync_alpha) - - def set_pll_alpha(self, pll_alpha): - self.pll_alpha = pll_alpha - self._pll_alpha_slider.set_value(self.pll_alpha) - self._pll_alpha_text_box.set_value(self.pll_alpha) - self.noaa_hrpt_pll_cf_0.set_alpha(self.pll_alpha) - self.noaa_hrpt_pll_cf_0.set_beta(self.pll_alpha**2/4.0) - - def set_max_sync_offset(self, max_sync_offset): - self.max_sync_offset = max_sync_offset - self.noaa_hrpt_sync_fb_0.set_max_offset(self.max_sync_offset) - - def set_max_carrier_offset(self, max_carrier_offset): - self.max_carrier_offset = max_carrier_offset - self.noaa_hrpt_pll_cf_0.set_max_offset(self.max_carrier_offset) - - def set_hs(self, hs): - self.hs = hs - -if __name__ == '__main__': - parser = OptionParser(option_class=eng_option, usage="%prog: [options]") - (options, args) = parser.parse_args() - tb = usrp_rx_hrpt() - tb.Run(True) - diff --git a/gr-noaa/grc/usrp_rx_lrit.grc b/gr-noaa/grc/usrp_rx_lrit.grc deleted file mode 100644 index 55fe39787..000000000 --- a/gr-noaa/grc/usrp_rx_lrit.grc +++ /dev/null @@ -1,1477 +0,0 @@ - - - Sat Aug 29 11:26:03 2009 - - options - - id - usrp_rx_lrit - - - _enabled - True - - - title - USRP LRIT Receiver - - - author - - - - description - - - - window_size - 4095, 4095 - - - generate_options - wx_gui - - - category - Custom - - - run - True - - - realtime_scheduling - - - - _coordinate - (10, 10) - - - _rotation - 0 - - - - variable - - id - samp_rate - - - _enabled - True - - - value - 64e6/decim - - - _coordinate - (10, 81) - - - _rotation - 0 - - - - variable - - id - symbol_rate - - - _enabled - True - - - value - 293e3 - - - _coordinate - (11, 148) - - - _rotation - 0 - - - - variable - - id - sps - - - _enabled - True - - - value - samp_rate/symbol_rate - - - _coordinate - (12, 214) - - - _rotation - 0 - - - - variable_text_box - - id - decim - - - _enabled - True - - - label - Decim - - - value - saved_decim - - - converver - int_converter - - - formatter - None - - - grid_pos - 0, 0, 1, 1 - - - notebook - - - - _coordinate - (243, 13) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - complex - - - title - Waveform - - - samp_rate - samp_rate - - - v_scale - 0.5 - - - t_scale - 20.0/samp_rate - - - ac_couple - False - - - xy_mode - True - - - num_inputs - 1 - - - grid_pos - 1, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 551) - - - _rotation - 0 - - - - gr_agc_xx - - id - gr_agc_xx_0 - - - _enabled - True - - - type - complex - - - rate - 1e-6 - - - reference - 1.0 - - - gain - 1.0/32767.0 - - - max_gain - 1.0 - - - _coordinate - (261, 493) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - False - - - type - fir_filter_ccf - - - decim - 1 - - - interp - 1 - - - gain - 1 - - - samp_rate - samp_rate - - - sym_rate - symbol_rate - - - alpha - 0.5 - - - ntaps - 50 - - - _coordinate - (618, 373) - - - _rotation - 0 - - - - usrp_simple_source_x - - id - usrp_simple_source_x_0 - - - _enabled - False - - - type - complex - - - format - - - - which - 0 - - - decimation - decim - - - frequency - freq - - - lo_offset - float('inf') - - - gain - gain - - - side - B - - - rx_ant - RXA - - - hb_filters - - - - _coordinate - (11, 477) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - wxgui_fftsink2_0 - - - _enabled - True - - - type - complex - - - title - Spectrum - - - samp_rate - samp_rate - - - baseband_freq - freq - - - y_per_div - 10 - - - y_divs - 10 - - - ref_level - 50 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 0 - - - _coordinate - (434, 337) - - - _rotation - 0 - - - - gr_throttle - - id - gr_throttle_0 - - - _enabled - True - - - type - complex - - - samples_per_second - samp_rate - - - vlen - 1 - - - _coordinate - (181, 663) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_1 - - - _enabled - True - - - type - complex - - - title - Scope Plot - - - samp_rate - samp_rate - - - v_scale - 0.4 - - - t_scale - 20.0/samp_rate - - - ac_couple - False - - - xy_mode - True - - - num_inputs - 1 - - - grid_pos - 0, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (1126, 251) - - - _rotation - 0 - - - - gr_probe_mpsk_snr_c - - id - gr_probe_mpsk_snr_c_0 - - - _enabled - True - - - type - snr - - - alpha - 0.0001 - - - probe_rate - 10 - - - _coordinate - (1126, 723) - - - _rotation - 0 - - - - wxgui_numbersink2 - - id - wxgui_numbersink2_0 - - - _enabled - True - - - type - float - - - title - SNR - - - units - dB - - - samp_rate - 10 - - - min_value - 0 - - - max_value - 30 - - - factor - 1.0 - - - decimal_places - 1 - - - ref_level - 0 - - - number_rate - 10 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - show_gauge - True - - - grid_pos - 2, 0, 1, 1 - - - notebook - displays, 1 - - - _coordinate - (1335, 651) - - - _rotation - 0 - - - - gr_mpsk_receiver_cc - - id - gr_mpsk_receiver_cc_0 - - - _enabled - True - - - M - 2 - - - theta - 0 - - - alpha - costas_alpha - - - beta - costas_alpha*costas_alpha/4.0 - - - fmin - -0.05 - - - fmax - 0.05 - - - mu - 0.5 - - - gain_mu - gain_mu - - - omega - sps - - - gain_omega - gain_mu*gain_mu/4.0 - - - omega_relative_limit - 0.05 - - - _coordinate - (881, 437) - - - _rotation - 0 - - - - gr_complex_to_real - - id - gr_complex_to_real_0 - - - _enabled - True - - - vlen - 1 - - - _coordinate - (1133, 521) - - - _rotation - 0 - - - - gr_char_to_float - - id - gr_char_to_float_0 - - - _enabled - True - - - _coordinate - (1523, 521) - - - _rotation - 0 - - - - gr_binary_slicer_fb - - id - gr_binary_slicer_fb_0 - - - _enabled - True - - - _coordinate - (1343, 521) - - - _rotation - 0 - - - - gr_add_const_vxx - - id - gr_add_const_vxx_0 - - - _enabled - True - - - type - float - - - const - 48.0 - - - vlen - 1 - - - _coordinate - (1707, 517) - - - _rotation - 0 - - - - gr_float_to_char - - id - gr_float_to_char_0 - - - _enabled - True - - - _coordinate - (1878, 521) - - - _rotation - 0 - - - - gr_file_sink - - id - gr_file_sink_0 - - - _enabled - True - - - file - bits.dat - - - type - byte - - - vlen - 1 - - - _coordinate - (2059, 517) - - - _rotation - 0 - - - - gr_file_source - - id - gr_file_source_0 - - - _enabled - True - - - file - lrit.dat - - - type - complex - - - repeat - False - - - vlen - 1 - - - _coordinate - (11, 655) - - - _rotation - 0 - - - - notebook - - id - displays - - - _enabled - True - - - style - wx.NB_TOP - - - labels - ['USRP RX', 'Costas Output'] - - - grid_pos - 2, 0, 1, 3 - - - notebook - - - - _coordinate - (14, 351) - - - _rotation - 0 - - - - variable_config - - id - saved_decim - - - _enabled - True - - - value - 160 - - - type - int - - - config_file - config_filename - - - section - main - - - option - decim - - - writeback - decim - - - _coordinate - (246, 172) - - - _rotation - 0 - - - - variable_slider - - id - gain - - - _enabled - True - - - label - Gain - - - value - saved_gain - - - min - 0 - - - max - 115 - - - num_steps - 115 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 1, 1, 1 - - - notebook - - - - _coordinate - (411, 11) - - - _rotation - 0 - - - - variable_config - - id - saved_gain - - - _enabled - True - - - value - 33 - - - type - real - - - config_file - config_filename - - - section - main - - - option - gain - - - writeback - gain - - - _coordinate - (412, 172) - - - _rotation - 0 - - - - variable_slider - - id - freq - - - _enabled - True - - - label - Frequency - - - value - saved_freq - - - min - 135e6 - - - max - 139e6 - - - num_steps - 400 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 0, 2, 1, 1 - - - notebook - - - - _coordinate - (574, 12) - - - _rotation - 0 - - - - variable_config - - id - saved_freq - - - _enabled - True - - - value - 137e6 - - - type - real - - - config_file - config_filename - - - section - main - - - option - freq - - - writeback - freq - - - _coordinate - (576, 170) - - - _rotation - 0 - - - - variable_slider - - id - costas_alpha - - - _enabled - True - - - label - Costas Alpha - - - value - saved_costas_alpha - - - min - 0 - - - max - 0.5 - - - num_steps - 100 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 1, 0, 1, 1 - - - notebook - - - - _coordinate - (738, 13) - - - _rotation - 0 - - - - variable_config - - id - saved_costas_alpha - - - _enabled - True - - - value - 0.005 - - - type - real - - - config_file - config_filename - - - section - main - - - option - costas_alpha - - - writeback - costas_alpha - - - _coordinate - (739, 170) - - - _rotation - 0 - - - - variable_config - - id - saved_gain_mu - - - _enabled - True - - - value - 0.005 - - - type - real - - - config_file - config_filename - - - section - main - - - option - gain_mu - - - writeback - gain_mu - - - _coordinate - (900, 170) - - - _rotation - 0 - - - - variable_slider - - id - gain_mu - - - _enabled - True - - - label - Gain Mu - - - value - saved_gain_mu - - - min - 0 - - - max - 0.5 - - - num_steps - 100 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - 1, 1, 1, 1 - - - notebook - - - - _coordinate - (902, 13) - - - _rotation - 0 - - - - variable - - id - config_filename - - - _enabled - True - - - value - "usrp_rx_lrit.cfg" - - - _coordinate - (13, 283) - - - _rotation - 0 - - - - usrp_simple_source_x_0 - gr_agc_xx_0 - 0 - 0 - - - gr_agc_xx_0 - wxgui_scopesink2_0 - 0 - 0 - - - gr_file_source_0 - gr_throttle_0 - 0 - 0 - - - gr_throttle_0 - gr_agc_xx_0 - 0 - 0 - - - gr_probe_mpsk_snr_c_0 - wxgui_numbersink2_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - gr_probe_mpsk_snr_c_0 - 0 - 0 - - - gr_agc_xx_0 - gr_mpsk_receiver_cc_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - wxgui_scopesink2_1 - 0 - 0 - - - gr_agc_xx_0 - wxgui_fftsink2_0 - 0 - 0 - - - gr_mpsk_receiver_cc_0 - gr_complex_to_real_0 - 0 - 0 - - - gr_complex_to_real_0 - gr_binary_slicer_fb_0 - 0 - 0 - - - gr_binary_slicer_fb_0 - gr_char_to_float_0 - 0 - 0 - - - gr_char_to_float_0 - gr_add_const_vxx_0 - 0 - 0 - - - gr_add_const_vxx_0 - gr_float_to_char_0 - 0 - 0 - - - gr_float_to_char_0 - gr_file_sink_0 - 0 - 0 - - diff --git a/gr-noaa/grc/usrp_rx_lrit.py b/gr-noaa/grc/usrp_rx_lrit.py deleted file mode 100755 index bc313e3af..000000000 --- a/gr-noaa/grc/usrp_rx_lrit.py +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env python -################################################## -# Gnuradio Python Flow Graph -# Title: USRP LRIT Receiver -# Generated: Sat Aug 29 11:26:03 2009 -################################################## - -from gnuradio import gr -from gnuradio.eng_option import eng_option -from gnuradio.wxgui import fftsink2 -from gnuradio.wxgui import forms -from gnuradio.wxgui import numbersink2 -from gnuradio.wxgui import scopesink2 -from grc_gnuradio import blks2 as grc_blks2 -from grc_gnuradio import wxgui as grc_wxgui -from optparse import OptionParser -import ConfigParser -import wx - -class usrp_rx_lrit(grc_wxgui.top_block_gui): - - def __init__(self): - grc_wxgui.top_block_gui.__init__(self, title="USRP LRIT Receiver") - - ################################################## - # Variables - ################################################## - self.config_filename = config_filename = "usrp_rx_lrit.cfg" - self._saved_decim_config = ConfigParser.ConfigParser() - self._saved_decim_config.read(config_filename) - try: saved_decim = self._saved_decim_config.getint("main", "decim") - except: saved_decim = 160 - self.saved_decim = saved_decim - self.decim = decim = saved_decim - self.symbol_rate = symbol_rate = 293e3 - self._saved_gain_mu_config = ConfigParser.ConfigParser() - self._saved_gain_mu_config.read(config_filename) - try: saved_gain_mu = self._saved_gain_mu_config.getfloat("main", "gain_mu") - except: saved_gain_mu = 0.005 - self.saved_gain_mu = saved_gain_mu - self._saved_gain_config = ConfigParser.ConfigParser() - self._saved_gain_config.read(config_filename) - try: saved_gain = self._saved_gain_config.getfloat("main", "gain") - except: saved_gain = 33 - self.saved_gain = saved_gain - self._saved_freq_config = ConfigParser.ConfigParser() - self._saved_freq_config.read(config_filename) - try: saved_freq = self._saved_freq_config.getfloat("main", "freq") - except: saved_freq = 137e6 - self.saved_freq = saved_freq - self._saved_costas_alpha_config = ConfigParser.ConfigParser() - self._saved_costas_alpha_config.read(config_filename) - try: saved_costas_alpha = self._saved_costas_alpha_config.getfloat("main", "costas_alpha") - except: saved_costas_alpha = 0.005 - self.saved_costas_alpha = saved_costas_alpha - self.samp_rate = samp_rate = 64e6/decim - self.sps = sps = samp_rate/symbol_rate - self.gain_mu = gain_mu = saved_gain_mu - self.gain = gain = saved_gain - self.freq = freq = saved_freq - self.costas_alpha = costas_alpha = saved_costas_alpha - - ################################################## - # Notebooks - ################################################## - self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) - self.displays.AddPage(grc_wxgui.Panel(self.displays), "USRP RX") - self.displays.AddPage(grc_wxgui.Panel(self.displays), "Costas Output") - self.GridAdd(self.displays, 2, 0, 1, 3) - - ################################################## - # Controls - ################################################## - self._decim_text_box = forms.text_box( - parent=self.GetWin(), - value=self.decim, - callback=self.set_decim, - label="Decim", - converter=forms.int_converter(), - ) - self.GridAdd(self._decim_text_box, 0, 0, 1, 1) - _gain_mu_sizer = wx.BoxSizer(wx.VERTICAL) - self._gain_mu_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_gain_mu_sizer, - value=self.gain_mu, - callback=self.set_gain_mu, - label="Gain Mu", - converter=forms.float_converter(), - proportion=0, - ) - self._gain_mu_slider = forms.slider( - parent=self.GetWin(), - sizer=_gain_mu_sizer, - value=self.gain_mu, - callback=self.set_gain_mu, - minimum=0, - maximum=0.5, - num_steps=100, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_gain_mu_sizer, 1, 1, 1, 1) - _gain_sizer = wx.BoxSizer(wx.VERTICAL) - self._gain_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_gain_sizer, - value=self.gain, - callback=self.set_gain, - label="Gain", - converter=forms.float_converter(), - proportion=0, - ) - self._gain_slider = forms.slider( - parent=self.GetWin(), - sizer=_gain_sizer, - value=self.gain, - callback=self.set_gain, - minimum=0, - maximum=115, - num_steps=115, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_gain_sizer, 0, 1, 1, 1) - _freq_sizer = wx.BoxSizer(wx.VERTICAL) - self._freq_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_freq_sizer, - value=self.freq, - callback=self.set_freq, - label="Frequency", - converter=forms.float_converter(), - proportion=0, - ) - self._freq_slider = forms.slider( - parent=self.GetWin(), - sizer=_freq_sizer, - value=self.freq, - callback=self.set_freq, - minimum=135e6, - maximum=139e6, - num_steps=400, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_freq_sizer, 0, 2, 1, 1) - _costas_alpha_sizer = wx.BoxSizer(wx.VERTICAL) - self._costas_alpha_text_box = forms.text_box( - parent=self.GetWin(), - sizer=_costas_alpha_sizer, - value=self.costas_alpha, - callback=self.set_costas_alpha, - label="Costas Alpha", - converter=forms.float_converter(), - proportion=0, - ) - self._costas_alpha_slider = forms.slider( - parent=self.GetWin(), - sizer=_costas_alpha_sizer, - value=self.costas_alpha, - callback=self.set_costas_alpha, - minimum=0, - maximum=0.5, - num_steps=100, - style=wx.SL_HORIZONTAL, - cast=float, - proportion=1, - ) - self.GridAdd(_costas_alpha_sizer, 1, 0, 1, 1) - - ################################################## - # Blocks - ################################################## - self.gr_add_const_vxx_0 = gr.add_const_vff((48.0, )) - self.gr_agc_xx_0 = gr.agc_cc(1e-6, 1.0, 1.0/32767.0, 1.0) - self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() - self.gr_char_to_float_0 = gr.char_to_float() - self.gr_complex_to_real_0 = gr.complex_to_real(1) - self.gr_file_sink_0 = gr.file_sink(gr.sizeof_char*1, "bits.dat") - self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "lrit.dat", False) - self.gr_float_to_char_0 = gr.float_to_char() - self.gr_mpsk_receiver_cc_0 = gr.mpsk_receiver_cc(2, 0, costas_alpha, costas_alpha*costas_alpha/4.0, -0.05, 0.05, 0.5, gain_mu, sps, gain_mu*gain_mu/4.0, 0.05) - self.gr_probe_mpsk_snr_c_0 = grc_blks2.probe_mpsk_snr_c( - type='snr', - alpha=0.0001, - probe_rate=10, - ) - self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) - self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( - self.displays.GetPage(0).GetWin(), - baseband_freq=freq, - y_per_div=10, - y_divs=10, - ref_level=50, - sample_rate=samp_rate, - fft_size=1024, - fft_rate=30, - average=False, - avg_alpha=None, - title="Spectrum", - peak_hold=False, - ) - self.displays.GetPage(0).GridAdd(self.wxgui_fftsink2_0.win, 0, 0, 1, 1) - self.wxgui_numbersink2_0 = numbersink2.number_sink_f( - self.displays.GetPage(1).GetWin(), - unit="dB", - minval=0, - maxval=30, - factor=1.0, - decimal_places=1, - ref_level=0, - sample_rate=10, - number_rate=10, - average=False, - avg_alpha=None, - label="SNR", - peak_hold=False, - show_gauge=True, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_numbersink2_0.win, 2, 0, 1, 1) - self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( - self.displays.GetPage(0).GetWin(), - title="Waveform", - sample_rate=samp_rate, - v_scale=0.5, - t_scale=20.0/samp_rate, - ac_couple=False, - xy_mode=True, - num_inputs=1, - ) - self.displays.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 0, 1, 1) - self.wxgui_scopesink2_1 = scopesink2.scope_sink_c( - self.displays.GetPage(1).GetWin(), - title="Scope Plot", - sample_rate=samp_rate, - v_scale=0.4, - t_scale=20.0/samp_rate, - ac_couple=False, - xy_mode=True, - num_inputs=1, - ) - self.displays.GetPage(1).GridAdd(self.wxgui_scopesink2_1.win, 0, 0, 1, 1) - - ################################################## - # Connections - ################################################## - self.connect((self.gr_agc_xx_0, 0), (self.wxgui_scopesink2_0, 0)) - self.connect((self.gr_file_source_0, 0), (self.gr_throttle_0, 0)) - self.connect((self.gr_throttle_0, 0), (self.gr_agc_xx_0, 0)) - self.connect((self.gr_probe_mpsk_snr_c_0, 0), (self.wxgui_numbersink2_0, 0)) - self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.gr_probe_mpsk_snr_c_0, 0)) - self.connect((self.gr_agc_xx_0, 0), (self.gr_mpsk_receiver_cc_0, 0)) - self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.wxgui_scopesink2_1, 0)) - self.connect((self.gr_agc_xx_0, 0), (self.wxgui_fftsink2_0, 0)) - self.connect((self.gr_mpsk_receiver_cc_0, 0), (self.gr_complex_to_real_0, 0)) - self.connect((self.gr_complex_to_real_0, 0), (self.gr_binary_slicer_fb_0, 0)) - self.connect((self.gr_binary_slicer_fb_0, 0), (self.gr_char_to_float_0, 0)) - self.connect((self.gr_char_to_float_0, 0), (self.gr_add_const_vxx_0, 0)) - self.connect((self.gr_add_const_vxx_0, 0), (self.gr_float_to_char_0, 0)) - self.connect((self.gr_float_to_char_0, 0), (self.gr_file_sink_0, 0)) - - def set_config_filename(self, config_filename): - self.config_filename = config_filename - self._saved_decim_config = ConfigParser.ConfigParser() - self._saved_decim_config.read(self.config_filename) - if not self._saved_decim_config.has_section("main"): - self._saved_decim_config.add_section("main") - self._saved_decim_config.set("main", "decim", str(self.decim)) - self._saved_decim_config.write(open(self.config_filename, 'w')) - self._saved_gain_config = ConfigParser.ConfigParser() - self._saved_gain_config.read(self.config_filename) - if not self._saved_gain_config.has_section("main"): - self._saved_gain_config.add_section("main") - self._saved_gain_config.set("main", "gain", str(self.gain)) - self._saved_gain_config.write(open(self.config_filename, 'w')) - self._saved_freq_config = ConfigParser.ConfigParser() - self._saved_freq_config.read(self.config_filename) - if not self._saved_freq_config.has_section("main"): - self._saved_freq_config.add_section("main") - self._saved_freq_config.set("main", "freq", str(self.freq)) - self._saved_freq_config.write(open(self.config_filename, 'w')) - self._saved_costas_alpha_config = ConfigParser.ConfigParser() - self._saved_costas_alpha_config.read(self.config_filename) - if not self._saved_costas_alpha_config.has_section("main"): - self._saved_costas_alpha_config.add_section("main") - self._saved_costas_alpha_config.set("main", "costas_alpha", str(self.costas_alpha)) - self._saved_costas_alpha_config.write(open(self.config_filename, 'w')) - self._saved_gain_mu_config = ConfigParser.ConfigParser() - self._saved_gain_mu_config.read(self.config_filename) - if not self._saved_gain_mu_config.has_section("main"): - self._saved_gain_mu_config.add_section("main") - self._saved_gain_mu_config.set("main", "gain_mu", str(self.gain_mu)) - self._saved_gain_mu_config.write(open(self.config_filename, 'w')) - - def set_saved_decim(self, saved_decim): - self.saved_decim = saved_decim - self.set_decim(self.saved_decim) - - def set_decim(self, decim): - self.decim = decim - self.set_samp_rate(64e6/self.decim) - self._decim_text_box.set_value(self.decim) - self._saved_decim_config = ConfigParser.ConfigParser() - self._saved_decim_config.read(self.config_filename) - if not self._saved_decim_config.has_section("main"): - self._saved_decim_config.add_section("main") - self._saved_decim_config.set("main", "decim", str(self.decim)) - self._saved_decim_config.write(open(self.config_filename, 'w')) - - def set_symbol_rate(self, symbol_rate): - self.symbol_rate = symbol_rate - self.set_sps(self.samp_rate/self.symbol_rate) - - def set_saved_gain_mu(self, saved_gain_mu): - self.saved_gain_mu = saved_gain_mu - self.set_gain_mu(self.saved_gain_mu) - - def set_saved_gain(self, saved_gain): - self.saved_gain = saved_gain - self.set_gain(self.saved_gain) - - def set_saved_freq(self, saved_freq): - self.saved_freq = saved_freq - self.set_freq(self.saved_freq) - - def set_saved_costas_alpha(self, saved_costas_alpha): - self.saved_costas_alpha = saved_costas_alpha - self.set_costas_alpha(self.saved_costas_alpha) - - def set_samp_rate(self, samp_rate): - self.samp_rate = samp_rate - self.set_sps(self.samp_rate/self.symbol_rate) - self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate) - self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate) - self.wxgui_scopesink2_1.set_sample_rate(self.samp_rate) - - def set_sps(self, sps): - self.sps = sps - self.gr_mpsk_receiver_cc_0.set_omega(self.sps) - - def set_gain_mu(self, gain_mu): - self.gain_mu = gain_mu - self.gr_mpsk_receiver_cc_0.set_gain_mu(self.gain_mu) - self.gr_mpsk_receiver_cc_0.set_gain_omega(self.gain_mu*self.gain_mu/4.0) - self._saved_gain_mu_config = ConfigParser.ConfigParser() - self._saved_gain_mu_config.read(self.config_filename) - if not self._saved_gain_mu_config.has_section("main"): - self._saved_gain_mu_config.add_section("main") - self._saved_gain_mu_config.set("main", "gain_mu", str(self.gain_mu)) - self._saved_gain_mu_config.write(open(self.config_filename, 'w')) - self._gain_mu_slider.set_value(self.gain_mu) - self._gain_mu_text_box.set_value(self.gain_mu) - - def set_gain(self, gain): - self.gain = gain - self._gain_slider.set_value(self.gain) - self._gain_text_box.set_value(self.gain) - self._saved_gain_config = ConfigParser.ConfigParser() - self._saved_gain_config.read(self.config_filename) - if not self._saved_gain_config.has_section("main"): - self._saved_gain_config.add_section("main") - self._saved_gain_config.set("main", "gain", str(self.gain)) - self._saved_gain_config.write(open(self.config_filename, 'w')) - - def set_freq(self, freq): - self.freq = freq - self.wxgui_fftsink2_0.set_baseband_freq(self.freq) - self._freq_slider.set_value(self.freq) - self._freq_text_box.set_value(self.freq) - self._saved_freq_config = ConfigParser.ConfigParser() - self._saved_freq_config.read(self.config_filename) - if not self._saved_freq_config.has_section("main"): - self._saved_freq_config.add_section("main") - self._saved_freq_config.set("main", "freq", str(self.freq)) - self._saved_freq_config.write(open(self.config_filename, 'w')) - - def set_costas_alpha(self, costas_alpha): - self.costas_alpha = costas_alpha - self.gr_mpsk_receiver_cc_0.set_alpha(self.costas_alpha) - self.gr_mpsk_receiver_cc_0.set_beta(self.costas_alpha*self.costas_alpha/4.0) - self._costas_alpha_slider.set_value(self.costas_alpha) - self._costas_alpha_text_box.set_value(self.costas_alpha) - self._saved_costas_alpha_config = ConfigParser.ConfigParser() - self._saved_costas_alpha_config.read(self.config_filename) - if not self._saved_costas_alpha_config.has_section("main"): - self._saved_costas_alpha_config.add_section("main") - self._saved_costas_alpha_config.set("main", "costas_alpha", str(self.costas_alpha)) - self._saved_costas_alpha_config.write(open(self.config_filename, 'w')) - -if __name__ == '__main__': - parser = OptionParser(option_class=eng_option, usage="%prog: [options]") - (options, args) = parser.parse_args() - tb = usrp_rx_lrit() - tb.Run(True) - -- cgit From 2628e9cddc43d57a3346e240c8f7e58722bc61f1 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sun, 20 Sep 2009 12:47:34 -0700 Subject: Add HRPT word output to deframer Put in half bit width matched filter Change default sync_alpha to 0.05 --- gr-noaa/grc/noaa_hrpt_deframer.xml | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/noaa_hrpt_deframer.xml b/gr-noaa/grc/noaa_hrpt_deframer.xml index bc68f71d3..af36abf2a 100644 --- a/gr-noaa/grc/noaa_hrpt_deframer.xml +++ b/gr-noaa/grc/noaa_hrpt_deframer.xml @@ -9,4 +9,8 @@ in byte + + out + short + -- cgit From f8fcb642dabca11870886c53dfdff66c86774db0 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sun, 20 Sep 2009 19:32:30 -0700 Subject: Added skeleton HRPT decoder block --- gr-noaa/grc/Makefile.am | 1 + gr-noaa/grc/noaa_hrpt_decoder.xml | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 gr-noaa/grc/noaa_hrpt_decoder.xml (limited to 'gr-noaa/grc') diff --git a/gr-noaa/grc/Makefile.am b/gr-noaa/grc/Makefile.am index 9f1f88195..1f056473c 100644 --- a/gr-noaa/grc/Makefile.am +++ b/gr-noaa/grc/Makefile.am @@ -24,6 +24,7 @@ include $(top_srcdir)/Makefile.common grcblocksdir = $(prefix)/share/gnuradio/grc/blocks dist_grcblocks_DATA = \ + noaa_hrpt_decoder.xml \ noaa_hrpt_deframer.xml \ noaa_hrpt_pll_cf.xml \ noaa_hrpt_sync_fb.xml diff --git a/gr-noaa/grc/noaa_hrpt_decoder.xml b/gr-noaa/grc/noaa_hrpt_decoder.xml new file mode 100644 index 000000000..183d72aba --- /dev/null +++ b/gr-noaa/grc/noaa_hrpt_decoder.xml @@ -0,0 +1,12 @@ + + + HRPT Decoder + noaa_hrpt_decoder + NOAA + from gnuradio import noaa + noaa.hrpt_decoder() + + in + short + + -- cgit