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