From cf015f49e79e9f5add28121516418eb39c46cad4 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Mon, 5 Oct 2009 14:55:28 -0400 Subject: Adding ability to easily reload/reset file --- gr-utils/src/python/gr_plot_qt.py | 8 ++ gr-utils/src/python/pyqt_plot.py | 11 +- gr-utils/src/python/pyqt_plot.ui | 262 ++++++++++++++++++++------------------ 3 files changed, 152 insertions(+), 129 deletions(-) diff --git a/gr-utils/src/python/gr_plot_qt.py b/gr-utils/src/python/gr_plot_qt.py index a5e3463c8e..5e2b3065c7 100755 --- a/gr-utils/src/python/gr_plot_qt.py +++ b/gr-utils/src/python/gr_plot_qt.py @@ -154,6 +154,10 @@ class gr_plot_qt(QtGui.QMainWindow): Qt.SIGNAL("activated()"), self.open_file) + self.connect(self.gui.action_reload, + Qt.SIGNAL("activated()"), + self.reload_file) + # Set up file position boxes to update current figure self.connect(self.gui.filePosStartLineEdit, Qt.SIGNAL("editingFinished()"), @@ -225,7 +229,11 @@ class gr_plot_qt(QtGui.QMainWindow): print filename self.initialize(filename) + def reload_file(self): + initialize(self.filename) + def initialize(self, filename): + self.filename = filename self.hfile = open(filename, "r") self.setWindowTitle(("GNU Radio File Plot Utility: %s" % filename)) diff --git a/gr-utils/src/python/pyqt_plot.py b/gr-utils/src/python/pyqt_plot.py index 74c43c3ebe..3b8b4c9e86 100644 --- a/gr-utils/src/python/pyqt_plot.py +++ b/gr-utils/src/python/pyqt_plot.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'pyqt_plot.ui' # -# Created: Tue Aug 25 18:18:14 2009 -# by: PyQt4 UI code generator 4.4.3 +# Created: Mon Aug 31 22:12:05 2009 +# by: PyQt4 UI code generator 4.4.4 # # WARNING! All changes made in this file will be lost! @@ -158,7 +158,7 @@ class Ui_MainWindow(object): self.gridLayout.addWidget(self.filePosBox, 3, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 927, 24)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 927, 25)) self.menubar.setObjectName("menubar") self.menu_File = QtGui.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") @@ -170,7 +170,10 @@ class Ui_MainWindow(object): self.action_open.setObjectName("action_open") self.action_exit = QtGui.QAction(MainWindow) self.action_exit.setObjectName("action_exit") + self.action_reload = QtGui.QAction(MainWindow) + self.action_reload.setObjectName("action_reload") self.menu_File.addAction(self.action_open) + self.menu_File.addAction(self.action_reload) self.menu_File.addAction(self.action_exit) self.menubar.addAction(self.menu_File.menuAction()) @@ -202,5 +205,7 @@ class Ui_MainWindow(object): self.action_open.setText(QtGui.QApplication.translate("MainWindow", "&Open", None, QtGui.QApplication.UnicodeUTF8)) self.action_open.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) self.action_exit.setText(QtGui.QApplication.translate("MainWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) + self.action_reload.setText(QtGui.QApplication.translate("MainWindow", "&Reload", None, QtGui.QApplication.UnicodeUTF8)) + self.action_reload.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+R", None, QtGui.QApplication.UnicodeUTF8)) from PyQt4 import Qwt5 diff --git a/gr-utils/src/python/pyqt_plot.ui b/gr-utils/src/python/pyqt_plot.ui index 19a62adf54..55c72fda26 100644 --- a/gr-utils/src/python/pyqt_plot.ui +++ b/gr-utils/src/python/pyqt_plot.ui @@ -1,7 +1,8 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>MainWindow</class> - <widget class="QMainWindow" name="MainWindow" > - <property name="geometry" > + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> @@ -9,62 +10,62 @@ <height>696</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>MainWindow</string> </property> - <widget class="QWidget" name="centralwidget" > - <layout class="QGridLayout" name="gridLayout" > - <item row="2" column="0" colspan="2" > - <widget class="QScrollBar" name="plotHBar" > - <property name="orientation" > + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="0" colspan="2"> + <widget class="QScrollBar" name="plotHBar"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QTabWidget" name="tabGroup" > - <property name="currentIndex" > + <item row="1" column="0"> + <widget class="QTabWidget" name="tabGroup"> + <property name="currentIndex"> <number>0</number> </property> - <widget class="QWidget" name="timeTab" > - <attribute name="title" > + <widget class="QWidget" name="timeTab"> + <attribute name="title"> <string>Time Domain</string> </attribute> - <layout class="QHBoxLayout" name="horizontalLayout" > + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QwtPlot" name="timePlot" /> + <widget class="QwtPlot" name="timePlot"/> </item> </layout> </widget> - <widget class="QWidget" name="freqTab" > - <attribute name="title" > + <widget class="QWidget" name="freqTab"> + <attribute name="title"> <string>Frequency Domain</string> </attribute> - <layout class="QHBoxLayout" name="horizontalLayout_2" > + <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="QGroupBox" name="fftPropBox" > - <property name="minimumSize" > + <widget class="QGroupBox" name="fftPropBox"> + <property name="minimumSize"> <size> <width>160</width> <height>0</height> </size> </property> - <property name="title" > + <property name="title"> <string>FFT Properties</string> </property> - <layout class="QFormLayout" name="formLayout_4" > - <property name="fieldGrowthPolicy" > + <layout class="QFormLayout" name="formLayout_4"> + <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> </property> - <item row="0" column="1" > - <widget class="QComboBox" name="psdFFTComboBox" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QComboBox" name="psdFFTComboBox"> + <property name="minimumSize"> <size> <width>96</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>96</width> <height>16777215</height> @@ -72,9 +73,9 @@ </property> </widget> </item> - <item row="0" column="0" > - <widget class="QLabel" name="psdFFTSizeLabel" > - <property name="text" > + <item row="0" column="0"> + <widget class="QLabel" name="psdFFTSizeLabel"> + <property name="text"> <string>FFT Size</string> </property> </widget> @@ -83,37 +84,37 @@ </widget> </item> <item> - <widget class="QwtPlot" name="freqPlot" /> + <widget class="QwtPlot" name="freqPlot"/> </item> </layout> </widget> - <widget class="QWidget" name="specTab" > - <attribute name="title" > + <widget class="QWidget" name="specTab"> + <attribute name="title"> <string>Spectrogram</string> </attribute> - <layout class="QHBoxLayout" name="horizontalLayout_3" > + <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <widget class="QGroupBox" name="groupBox" > - <property name="title" > + <widget class="QGroupBox" name="groupBox"> + <property name="title"> <string>Spectrogram Properties</string> </property> - <layout class="QFormLayout" name="formLayout_3" > - <item row="1" column="0" > - <widget class="QLabel" name="specFFTLabel" > - <property name="text" > + <layout class="QFormLayout" name="formLayout_3"> + <item row="1" column="0"> + <widget class="QLabel" name="specFFTLabel"> + <property name="text"> <string>FFT Size</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QComboBox" name="specFFTComboBox" > - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QComboBox" name="specFFTComboBox"> + <property name="minimumSize"> <size> <width>96</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>96</width> <height>16777215</height> @@ -125,7 +126,7 @@ </widget> </item> <item> - <widget class="QwtPlot" name="specPlot" /> + <widget class="QwtPlot" name="specPlot"/> </item> </layout> <zorder>specPlot</zorder> @@ -133,19 +134,19 @@ </widget> </widget> </item> - <item row="3" column="0" > - <widget class="QGroupBox" name="filePosBox" > - <property name="minimumSize" > + <item row="3" column="0"> + <widget class="QGroupBox" name="filePosBox"> + <property name="minimumSize"> <size> <width>0</width> <height>120</height> </size> </property> - <property name="title" > + <property name="title"> <string>File Position</string> </property> - <widget class="QWidget" name="formLayoutWidget_2" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_2"> + <property name="geometry"> <rect> <x>0</x> <y>20</y> @@ -153,41 +154,41 @@ <height>92</height> </rect> </property> - <layout class="QFormLayout" name="filePosLayout" > - <item row="0" column="0" > - <widget class="QLabel" name="filePosStartLabel" > - <property name="text" > + <layout class="QFormLayout" name="filePosLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="filePosStartLabel"> + <property name="text"> <string>Start</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="filePosStartLineEdit" /> + <item row="0" column="1"> + <widget class="QLineEdit" name="filePosStartLineEdit"/> </item> - <item row="1" column="0" > - <widget class="QLabel" name="filePosStopLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="filePosStopLabel"> + <property name="text"> <string>Stop</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="filePosStopLineEdit" /> + <item row="1" column="1"> + <widget class="QLineEdit" name="filePosStopLineEdit"/> </item> - <item row="2" column="0" > - <widget class="QLabel" name="filePosLengthLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="filePosLengthLabel"> + <property name="text"> <string>Length</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="filePosLengthLineEdit" /> + <item row="2" column="1"> + <widget class="QLineEdit" name="filePosLengthLineEdit"/> </item> </layout> </widget> - <widget class="QWidget" name="formLayoutWidget_4" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_4"> + <property name="geometry"> <rect> <x>180</x> <y>20</y> @@ -195,41 +196,41 @@ <height>92</height> </rect> </property> - <layout class="QFormLayout" name="fileTimeLayout" > - <item row="0" column="0" > - <widget class="QLabel" name="fileTimeStartLabel" > - <property name="text" > + <layout class="QFormLayout" name="fileTimeLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="fileTimeStartLabel"> + <property name="text"> <string>time start (sec)</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="fileTimeStartLineEdit" /> + <item row="0" column="1"> + <widget class="QLineEdit" name="fileTimeStartLineEdit"/> </item> - <item row="1" column="0" > - <widget class="QLabel" name="fileTimeStopLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="fileTimeStopLabel"> + <property name="text"> <string>time stop (sec)</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="fileTimeStopLineEdit" /> + <item row="1" column="1"> + <widget class="QLineEdit" name="fileTimeStopLineEdit"/> </item> - <item row="2" column="0" > - <widget class="QLabel" name="fileTimeLengthLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="fileTimeLengthLabel"> + <property name="text"> <string>time length (sec)</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="fileTimeLengthLineEdit" /> + <item row="2" column="1"> + <widget class="QLineEdit" name="fileTimeLengthLineEdit"/> </item> </layout> </widget> - <widget class="QGroupBox" name="sysGroupBox" > - <property name="geometry" > + <widget class="QGroupBox" name="sysGroupBox"> + <property name="geometry"> <rect> <x>530</x> <y>0</y> @@ -237,17 +238,17 @@ <height>120</height> </rect> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="title" > + <property name="title"> <string>System Properties</string> </property> - <widget class="QWidget" name="formLayoutWidget_3" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_3"> + <property name="geometry"> <rect> <x>0</x> <y>20</y> @@ -255,17 +256,17 @@ <height>91</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_2" > - <item row="0" column="0" > - <widget class="QLabel" name="sampleRateLabel" > - <property name="text" > + <layout class="QFormLayout" name="formLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="sampleRateLabel"> + <property name="text"> <string>Sample Rate</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="sampleRateLineEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="sampleRateLineEdit"> + <property name="minimumSize"> <size> <width>0</width> <height>0</height> @@ -276,8 +277,8 @@ </layout> </widget> </widget> - <widget class="QGroupBox" name="displayGroupBox" > - <property name="geometry" > + <widget class="QGroupBox" name="displayGroupBox"> + <property name="geometry"> <rect> <x>730</x> <y>0</y> @@ -285,17 +286,17 @@ <height>120</height> </rect> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>170</width> <height>0</height> </size> </property> - <property name="title" > + <property name="title"> <string>Display Properties</string> </property> - <widget class="QWidget" name="verticalLayoutWidget" > - <property name="geometry" > + <widget class="QWidget" name="verticalLayoutWidget"> + <property name="geometry"> <rect> <x>0</x> <y>20</y> @@ -303,16 +304,16 @@ <height>91</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout" > + <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QComboBox" name="colorComboBox" /> + <widget class="QComboBox" name="colorComboBox"/> </item> <item> - <spacer name="verticalSpacer" > - <property name="orientation" > + <spacer name="verticalSpacer"> + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> @@ -327,38 +328,47 @@ </item> </layout> </widget> - <widget class="QMenuBar" name="menubar" > - <property name="geometry" > + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>927</width> - <height>24</height> + <height>25</height> </rect> </property> - <widget class="QMenu" name="menu_File" > - <property name="title" > + <widget class="QMenu" name="menu_File"> + <property name="title"> <string>&File</string> </property> - <addaction name="action_open" /> - <addaction name="action_exit" /> + <addaction name="action_open"/> + <addaction name="action_reload"/> + <addaction name="action_exit"/> </widget> - <addaction name="menu_File" /> + <addaction name="menu_File"/> </widget> - <widget class="QStatusBar" name="statusbar" /> - <action name="action_open" > - <property name="text" > + <widget class="QStatusBar" name="statusbar"/> + <action name="action_open"> + <property name="text"> <string>&Open</string> </property> - <property name="shortcut" > + <property name="shortcut"> <string>Ctrl+O</string> </property> </action> - <action name="action_exit" > - <property name="text" > + <action name="action_exit"> + <property name="text"> <string>E&xit</string> </property> </action> + <action name="action_reload"> + <property name="text"> + <string>&Reload</string> + </property> + <property name="shortcut"> + <string>Ctrl+R</string> + </property> + </action> </widget> <customwidgets> <customwidget> @@ -375,11 +385,11 @@ <receiver>MainWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>-1</x> <y>-1</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>399</x> <y>347</y> </hint> -- cgit v1.2.3 From b3bb6afe5311a915a1e13ac70629a477a5783da5 Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Mon, 5 Oct 2009 18:27:10 -0700 Subject: added mpsk demod example --- grc/examples/Makefile.am | 4 + grc/examples/demod/mpsk_demod.grc | 496 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 500 insertions(+) create mode 100644 grc/examples/demod/mpsk_demod.grc diff --git a/grc/examples/Makefile.am b/grc/examples/Makefile.am index 78321ce0a8..54620e1563 100644 --- a/grc/examples/Makefile.am +++ b/grc/examples/Makefile.am @@ -28,6 +28,10 @@ dist_audiodata_DATA = \ audio/dial_tone.grc \ audio/cvsd_sweep.grc +demoddatadir = $(grc_examples_prefix)/demod +dist_demoddata_DATA = \ + demod/mpsk_demod.grc + simpledatadir = $(grc_examples_prefix)/simple dist_simpledata_DATA = \ simple/ber_simulation.grc \ diff --git a/grc/examples/demod/mpsk_demod.grc b/grc/examples/demod/mpsk_demod.grc new file mode 100644 index 0000000000..d93591e13b --- /dev/null +++ b/grc/examples/demod/mpsk_demod.grc @@ -0,0 +1,496 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Mon Oct 5 18:26:32 2009</timestamp> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2**8</value> + </param> + <param> + <key>num_samps</key> + <value>10000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(155, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_constellationsink2</key> + <param> + <key>id</key> + <value>wxgui_constellationsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Constellation Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>frame_rate</key> + <value>5</value> + </param> + <param> + <key>const_size</key> + <value>2048</value> + </param> + <param> + <key>M</key> + <value>4</value> + </param> + <param> + <key>theta</key> + <value>0</value> + </param> + <param> + <key>alpha</key> + <value>0.005</value> + </param> + <param> + <key>fmax</key> + <value>0.06</value> + </param> + <param> + <key>mu</key> + <value>0.5</value> + </param> + <param> + <key>gain_mu</key> + <value>0.005</value> + </param> + <param> + <key>symbol_rate</key> + <value>samp_rate/4.</value> + </param> + <param> + <key>omega_limit</key> + <value>0.005</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(824, 212)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(847, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samps_per_sym</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 278)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_dxpsk_mod</key> + <param> + <key>id</key> + <value>blks2_dxpsk_mod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dqpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>gray_code</key> + <value>True</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(391, 54)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(654, 142)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_channel_model</key> + <param> + <key>id</key> + <value>gr_channel_model_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>noise_voltage</key> + <value>noise</value> + </param> + <param> + <key>freq_offset</key> + <value>0.0</value> + </param> + <param> + <key>epsilon</key> + <value>1.0</value> + </param> + <param> + <key>taps</key> + <value>1.0</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(487, 282)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>.1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(234, 324)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>options</key> + <param> + <key>id</key> + <value>mpsk_demod</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>MPSK Demod Demo</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_constellationsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_dxpsk_mod_0</source_block_id> + <sink_block_id>gr_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_channel_model_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> -- cgit v1.2.3 From 69dd1eedb8f5139589695c921f13ac7d14897ff6 Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Mon, 5 Oct 2009 18:36:38 -0700 Subject: added freq offset slider --- grc/examples/demod/mpsk_demod.grc | 418 +++++++++++++++++++++++--------------- 1 file changed, 254 insertions(+), 164 deletions(-) diff --git a/grc/examples/demod/mpsk_demod.grc b/grc/examples/demod/mpsk_demod.grc index d93591e13b..08108dcba0 100644 --- a/grc/examples/demod/mpsk_demod.grc +++ b/grc/examples/demod/mpsk_demod.grc @@ -1,6 +1,61 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Oct 5 18:26:32 2009</timestamp> + <timestamp>Mon Oct 5 18:34:52 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>mpsk_demod</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>MPSK Demod Demo</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <block> <key>variable</key> <param> @@ -64,74 +119,96 @@ </param> </block> <block> - <key>wxgui_constellationsink2</key> + <key>blks2_dxpsk_mod</key> <param> <key>id</key> - <value>wxgui_constellationsink2_0</value> + <value>blks2_dxpsk_mod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value>Constellation Plot</value> + <key>type</key> + <value>dqpsk</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> </param> <param> - <key>frame_rate</key> - <value>5</value> + <key>excess_bw</key> + <value>0.35</value> </param> <param> - <key>const_size</key> - <value>2048</value> + <key>gray_code</key> + <value>True</value> </param> <param> - <key>M</key> - <value>4</value> + <key>verbose</key> + <value>False</value> </param> <param> - <key>theta</key> + <key>log</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(391, 54)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_throttle</key> <param> - <key>alpha</key> - <value>0.005</value> + <key>id</key> + <value>gr_throttle_0</value> </param> <param> - <key>fmax</key> - <value>0.06</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>mu</key> - <value>0.5</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>gain_mu</key> - <value>0.005</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>symbol_rate</key> - <value>samp_rate/4.</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>omega_limit</key> - <value>0.005</value> + <key>_coordinate</key> + <value>(654, 142)</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>notebook</key> - <value></value> + <key>id</key> + <value>samps_per_sym</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(824, 212)</value> + <value>(7, 89)</value> </param> <param> <key>_rotation</key> @@ -139,66 +216,81 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>gr_channel_model</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>gr_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>noise_voltage</key> + <value>noise</value> </param> <param> - <key>title</key> - <value>FFT Plot</value> + <key>freq_offset</key> + <value>freq_off</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>epsilon</key> + <value>1.0</value> </param> <param> - <key>baseband_freq</key> + <key>taps</key> + <value>1.0</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(487, 282)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable_slider</key> <param> - <key>y_per_div</key> - <value>10</value> + <key>id</key> + <value>noise</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>ref_level</key> - <value>50</value> + <key>label</key> + <value>Noise</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>value</key> + <value>.1</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>min</key> + <value>0</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>max</key> + <value>1</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>num_steps</key> + <value>100</value> </param> <param> - <key>average</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -210,7 +302,7 @@ </param> <param> <key>_coordinate</key> - <value>(847, 10)</value> + <value>(259, 353)</value> </param> <param> <key>_rotation</key> @@ -218,65 +310,54 @@ </param> </block> <block> - <key>variable</key> + <key>variable_slider</key> <param> <key>id</key> - <value>samps_per_sym</value> + <value>freq_off</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>4</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 278)</value> + <key>label</key> + <value>Freq Offset</value> </param> <param> - <key>_rotation</key> + <key>value</key> <value>0</value> </param> - </block> - <block> - <key>blks2_dxpsk_mod</key> - <param> - <key>id</key> - <value>blks2_dxpsk_mod_0</value> - </param> <param> - <key>_enabled</key> - <value>True</value> + <key>min</key> + <value>-.5</value> </param> <param> - <key>type</key> - <value>dqpsk</value> + <key>max</key> + <value>.5</value> </param> <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>gray_code</key> - <value>True</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>log</key> - <value>False</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(391, 54)</value> + <value>(126, 345)</value> </param> <param> <key>_rotation</key> @@ -284,30 +365,34 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>notebook</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>notebook</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>style</key> + <value>wx.NB_TOP</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>labels</key> + <value>['Constellation', 'Spectrum']</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(654, 142)</value> + <value>(520, 407)</value> </param> <param> <key>_rotation</key> @@ -315,81 +400,62 @@ </param> </block> <block> - <key>gr_channel_model</key> + <key>wxgui_constellationsink2</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>wxgui_constellationsink2_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>noise_voltage</key> - <value>noise</value> - </param> - <param> - <key>freq_offset</key> - <value>0.0</value> + <key>title</key> + <value>Constellation Plot</value> </param> <param> - <key>epsilon</key> - <value>1.0</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>taps</key> - <value>1.0</value> + <key>frame_rate</key> + <value>5</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>const_size</key> + <value>2048</value> </param> <param> - <key>_coordinate</key> - <value>(487, 282)</value> + <key>M</key> + <value>4</value> </param> <param> - <key>_rotation</key> + <key>theta</key> <value>0</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>noise</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>.1</value> + <key>alpha</key> + <value>0.005</value> </param> <param> - <key>min</key> - <value>0</value> + <key>fmax</key> + <value>0.06</value> </param> <param> - <key>max</key> - <value>1</value> + <key>mu</key> + <value>0.5</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>gain_mu</key> + <value>0.005</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>symbol_rate</key> + <value>samp_rate/4.</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>omega_limit</key> + <value>0.005</value> </param> <param> <key>grid_pos</key> @@ -397,11 +463,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook, 0</value> </param> <param> <key>_coordinate</key> - <value>(234, 324)</value> + <value>(824, 212)</value> </param> <param> <key>_rotation</key> @@ -409,54 +475,78 @@ </param> </block> <block> - <key>options</key> + <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>mpsk_demod</value> + <value>wxgui_fftsink2_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>type</key> + <value>complex</value> + </param> <param> <key>title</key> - <value>MPSK Demod Demo</value> + <value>FFT Plot</value> </param> <param> - <key>author</key> - <value></value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>description</key> - <value></value> + <key>baseband_freq</key> + <value>0</value> </param> <param> - <key>window_size</key> - <value>1280, 1024</value> + <key>y_per_div</key> + <value>10</value> </param> <param> - <key>generate_options</key> - <value>wx_gui</value> + <key>y_divs</key> + <value>10</value> </param> <param> - <key>category</key> - <value>Custom</value> + <key>ref_level</key> + <value>50</value> </param> <param> - <key>run_options</key> - <value>prompt</value> + <key>ref_scale</key> + <value>2.0</value> </param> <param> - <key>run</key> - <value>True</value> + <key>fft_size</key> + <value>1024</value> </param> <param> - <key>realtime_scheduling</key> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> <value></value> </param> + <param> + <key>notebook</key> + <value>notebook, 1</value> + </param> <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(847, 10)</value> </param> <param> <key>_rotation</key> -- cgit v1.2.3 From 271412d1781d875e31e7c851752ffacfedb9c325 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 10:21:17 -0700 Subject: Updating display for better viewing on small screens --- .../python/digital/qt_digital_window.py | 264 ++++----- .../python/digital/qt_digital_window.ui | 589 ++++++++++----------- gr-qtgui/src/lib/spectrumdisplayform.ui | 557 ++++++++++--------- 3 files changed, 699 insertions(+), 711 deletions(-) diff --git a/gnuradio-examples/python/digital/qt_digital_window.py b/gnuradio-examples/python/digital/qt_digital_window.py index e3feb57c93..6e0f25212e 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.py +++ b/gnuradio-examples/python/digital/qt_digital_window.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'qt_digital_window.ui' # -# Created: Fri Jul 3 10:03:54 2009 -# by: PyQt4 UI code generator 4.4.3 +# Created: Tue Oct 6 11:27:37 2009 +# by: PyQt4 UI code generator 4.4.4 # # WARNING! All changes made in this file will be lost! @@ -12,53 +12,63 @@ from PyQt4 import QtCore, QtGui class Ui_DigitalWindow(object): def setupUi(self, DigitalWindow): DigitalWindow.setObjectName("DigitalWindow") - DigitalWindow.resize(1050, 752) + DigitalWindow.resize(1019, 754) self.centralwidget = QtGui.QWidget(DigitalWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") - self.verticalLayout_2 = QtGui.QVBoxLayout() - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.sysBox = QtGui.QGroupBox(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) - self.sysBox.setSizePolicy(sizePolicy) - self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) - self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) - self.sysBox.setObjectName("sysBox") - self.formLayoutWidget = QtGui.QWidget(self.sysBox) - self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 221, 31)) - self.formLayoutWidget.setObjectName("formLayoutWidget") - self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) - self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) - self.formLayout.setVerticalSpacing(20) - self.formLayout.setObjectName("formLayout") - self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) - self.sampleRateEdit.setSizePolicy(sizePolicy) - self.sampleRateEdit.setMinimumSize(QtCore.QSize(100, 26)) - self.sampleRateEdit.setMaximumSize(QtCore.QSize(100, 26)) - self.sampleRateEdit.setObjectName("sampleRateEdit") - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) - self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.rxBox = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) - self.sampleRateLabel.setSizePolicy(sizePolicy) - self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) - self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) - self.sampleRateLabel.setObjectName("sampleRateLabel") - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) - self.verticalLayout_2.addWidget(self.sysBox) - spacerItem = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout_2.addItem(spacerItem) - self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) + sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) + self.rxBox.setSizePolicy(sizePolicy) + self.rxBox.setMinimumSize(QtCore.QSize(180, 90)) + self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) + self.rxBox.setObjectName("rxBox") + self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) + self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 141, 61)) + self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") + self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) + self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_3.setObjectName("formLayout_3") + self.gainMuLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.gainMuLabel.setObjectName("gainMuLabel") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainMuLabel) + self.alphaLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.alphaLabel.setObjectName("alphaLabel") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.alphaLabel) + self.gainMuEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.gainMuEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.gainMuEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.gainMuEdit.setObjectName("gainMuEdit") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainMuEdit) + self.alphaEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.alphaEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.alphaEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.alphaEdit.setObjectName("alphaEdit") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.alphaEdit) + self.verticalLayout_3.addWidget(self.rxBox) + spacerItem = QtGui.QSpacerItem(20, 30, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_3.addItem(spacerItem) + self.gridLayout.addLayout(self.verticalLayout_3, 2, 2, 1, 1) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.pauseButton = QtGui.QPushButton(self.centralwidget) + self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) + self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pauseButton.setObjectName("pauseButton") + self.verticalLayout.addWidget(self.pauseButton) + spacerItem1 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout.addItem(spacerItem1) + self.closeButton = QtGui.QPushButton(self.centralwidget) + self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) + self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.closeButton.setObjectName("closeButton") + self.verticalLayout.addWidget(self.closeButton) + self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) self.channelModeBox = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -69,7 +79,7 @@ class Ui_DigitalWindow(object): self.channelModeBox.setMaximumSize(QtCore.QSize(245, 16777215)) self.channelModeBox.setObjectName("channelModeBox") self.formLayoutWidget_2 = QtGui.QWidget(self.channelModeBox) - self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 231, 98)) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 221, 98)) self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2) self.formLayout_2.setSizeConstraint(QtGui.QLayout.SetFixedSize) @@ -79,83 +89,69 @@ class Ui_DigitalWindow(object): self.snrLabel.setObjectName("snrLabel") self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.snrLabel) self.snrEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.snrEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.snrEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.snrEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.snrEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.snrEdit.setObjectName("snrEdit") self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.snrEdit) self.freqLabel = QtGui.QLabel(self.formLayoutWidget_2) self.freqLabel.setObjectName("freqLabel") self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.freqLabel) self.freqEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.freqEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.freqEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.freqEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.freqEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.freqEdit.setObjectName("freqEdit") self.formLayout_2.setWidget(1, QtGui.QFormLayout.FieldRole, self.freqEdit) self.timeLabel = QtGui.QLabel(self.formLayoutWidget_2) self.timeLabel.setObjectName("timeLabel") self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.timeLabel) self.timeEdit = QtGui.QLineEdit(self.formLayoutWidget_2) - self.timeEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.timeEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.timeEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.timeEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.timeEdit.setObjectName("timeEdit") self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.timeEdit) self.gridLayout.addWidget(self.channelModeBox, 2, 1, 1, 1) - self.verticalLayout_5 = QtGui.QVBoxLayout() - self.verticalLayout_5.setObjectName("verticalLayout_5") - self.sinkFrame = QtGui.QFrame(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + self.verticalLayout_2 = QtGui.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.sysBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) - self.sinkFrame.setSizePolicy(sizePolicy) - self.sinkFrame.setMinimumSize(QtCore.QSize(1000, 550)) - self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) - self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) - self.sinkFrame.setObjectName("sinkFrame") - self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) - self.gridLayout_2.setObjectName("gridLayout_2") - self.sinkLayout = QtGui.QHBoxLayout() - self.sinkLayout.setObjectName("sinkLayout") - self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) - self.verticalLayout_5.addWidget(self.sinkFrame) - self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) - self.verticalLayout_3 = QtGui.QVBoxLayout() - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.rxBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) + self.sysBox.setSizePolicy(sizePolicy) + self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) + self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) + self.sysBox.setObjectName("sysBox") + self.formLayoutWidget = QtGui.QWidget(self.sysBox) + self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 211, 31)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) + self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout.setVerticalSpacing(20) + self.formLayout.setObjectName("formLayout") + self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) - self.rxBox.setSizePolicy(sizePolicy) - self.rxBox.setMinimumSize(QtCore.QSize(180, 90)) - self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) - self.rxBox.setObjectName("rxBox") - self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) - self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 161, 61)) - self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") - self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) - self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) - self.formLayout_3.setObjectName("formLayout_3") - self.gainMuLabel = QtGui.QLabel(self.formLayoutWidget_3) - self.gainMuLabel.setObjectName("gainMuLabel") - self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainMuLabel) - self.alphaLabel = QtGui.QLabel(self.formLayoutWidget_3) - self.alphaLabel.setObjectName("alphaLabel") - self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.alphaLabel) - self.gainMuEdit = QtGui.QLineEdit(self.formLayoutWidget_3) - self.gainMuEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.gainMuEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.gainMuEdit.setObjectName("gainMuEdit") - self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainMuEdit) - self.alphaEdit = QtGui.QLineEdit(self.formLayoutWidget_3) - self.alphaEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.alphaEdit.setMaximumSize(QtCore.QSize(100, 16777215)) - self.alphaEdit.setObjectName("alphaEdit") - self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.alphaEdit) - self.verticalLayout_3.addWidget(self.rxBox) - spacerItem1 = QtGui.QSpacerItem(20, 30, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout_3.addItem(spacerItem1) - self.gridLayout.addLayout(self.verticalLayout_3, 2, 2, 1, 1) + sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) + self.sampleRateEdit.setSizePolicy(sizePolicy) + self.sampleRateEdit.setMinimumSize(QtCore.QSize(60, 26)) + self.sampleRateEdit.setMaximumSize(QtCore.QSize(80, 26)) + self.sampleRateEdit.setObjectName("sampleRateEdit") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) + self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) + self.sampleRateLabel.setSizePolicy(sizePolicy) + self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) + self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) + self.sampleRateLabel.setObjectName("sampleRateLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) + self.verticalLayout_2.addWidget(self.sysBox) + spacerItem2 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_2.addItem(spacerItem2) + self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) self.rxBox_2 = QtGui.QGroupBox(self.centralwidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -166,7 +162,7 @@ class Ui_DigitalWindow(object): self.rxBox_2.setMaximumSize(QtCore.QSize(265, 125)) self.rxBox_2.setObjectName("rxBox_2") self.formLayoutWidget_4 = QtGui.QWidget(self.rxBox_2) - self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 201, 92)) + self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 181, 92)) self.formLayoutWidget_4.setObjectName("formLayoutWidget_4") self.formLayout_4 = QtGui.QFormLayout(self.formLayoutWidget_4) self.formLayout_4.setSizeConstraint(QtGui.QLayout.SetFixedSize) @@ -181,41 +177,45 @@ class Ui_DigitalWindow(object): self.perLabel.setObjectName("perLabel") self.formLayout_4.setWidget(2, QtGui.QFormLayout.LabelRole, self.perLabel) self.pktsRcvdEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.pktsRcvdEdit) self.pktsCorrectEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.pktsCorrectEdit) self.perEdit = QtGui.QLineEdit(self.formLayoutWidget_4) - self.perEdit.setMinimumSize(QtCore.QSize(100, 0)) - self.perEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.perEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.perEdit.setMaximumSize(QtCore.QSize(80, 16777215)) self.perEdit.setObjectName("perEdit") self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.perEdit) self.gridLayout.addWidget(self.rxBox_2, 2, 3, 1, 1) - spacerItem2 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout.addItem(spacerItem2, 2, 4, 1, 1) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName("verticalLayout") - self.pauseButton = QtGui.QPushButton(self.centralwidget) - self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) - self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) - self.pauseButton.setObjectName("pauseButton") - self.verticalLayout.addWidget(self.pauseButton) - spacerItem3 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.verticalLayout.addItem(spacerItem3) - self.closeButton = QtGui.QPushButton(self.centralwidget) - self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) - self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) - self.closeButton.setObjectName("closeButton") - self.verticalLayout.addWidget(self.closeButton) - self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) + spacerItem3 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem3, 2, 4, 1, 1) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.sinkFrame = QtGui.QFrame(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) + self.sinkFrame.setSizePolicy(sizePolicy) + self.sinkFrame.setMinimumSize(QtCore.QSize(500, 550)) + self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) + self.sinkFrame.setObjectName("sinkFrame") + self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) + self.gridLayout_2.setObjectName("gridLayout_2") + self.sinkLayout = QtGui.QHBoxLayout() + self.sinkLayout.setObjectName("sinkLayout") + self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) + self.verticalLayout_5.addWidget(self.sinkFrame) + self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) DigitalWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(DigitalWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1050, 24)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1019, 25)) self.menubar.setObjectName("menubar") self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") @@ -237,21 +237,21 @@ class Ui_DigitalWindow(object): def retranslateUi(self, DigitalWindow): DigitalWindow.setWindowTitle(QtGui.QApplication.translate("DigitalWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) - self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) + self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain mu", None, QtGui.QApplication.UnicodeUTF8)) + self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) + self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.channelModeBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Channel Model Parameters", None, QtGui.QApplication.UnicodeUTF8)) self.snrLabel.setText(QtGui.QApplication.translate("DigitalWindow", "SNR (dB)", None, QtGui.QApplication.UnicodeUTF8)) self.freqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Frequency Offset (Hz)", None, QtGui.QApplication.UnicodeUTF8)) self.timeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Timing Offset", None, QtGui.QApplication.UnicodeUTF8)) - self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain mu", None, QtGui.QApplication.UnicodeUTF8)) - self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) + self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) self.rxBox_2.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) self.pktsRcvdLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Rcvd.", None, QtGui.QApplication.UnicodeUTF8)) self.pktsCorrectLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Correct", None, QtGui.QApplication.UnicodeUTF8)) self.perLabel.setText(QtGui.QApplication.translate("DigitalWindow", "PER", None, QtGui.QApplication.UnicodeUTF8)) - self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) - self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.menuFile.setTitle(QtGui.QApplication.translate("DigitalWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setText(QtGui.QApplication.translate("DigitalWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/gnuradio-examples/python/digital/qt_digital_window.ui b/gnuradio-examples/python/digital/qt_digital_window.ui index 413801ec71..a0af196edc 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.ui +++ b/gnuradio-examples/python/digital/qt_digital_window.ui @@ -1,105 +1,102 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>DigitalWindow</class> - <widget class="QMainWindow" name="DigitalWindow" > - <property name="geometry" > + <widget class="QMainWindow" name="DigitalWindow"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>1050</width> - <height>752</height> + <width>1019</width> + <height>754</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>MainWindow</string> </property> - <widget class="QWidget" name="centralwidget" > - <layout class="QGridLayout" name="gridLayout" > - <item row="2" column="0" > - <layout class="QVBoxLayout" name="verticalLayout_2" > + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="2"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QGroupBox" name="sysBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QGroupBox" name="rxBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>240</width> - <height>60</height> + <width>180</width> + <height>90</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>240</width> + <width>180</width> <height>16777215</height> </size> </property> - <property name="title" > - <string>System Parameters</string> + <property name="title"> + <string>Receiver Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_3"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>221</width> - <height>31</height> + <width>141</width> + <height>61</height> </rect> </property> - <layout class="QFormLayout" name="formLayout" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_3"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <property name="verticalSpacing" > - <number>20</number> - </property> - <item row="0" column="1" > - <widget class="QLineEdit" name="sampleRateEdit" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <item row="0" column="0"> + <widget class="QLabel" name="gainMuLabel"> + <property name="text"> + <string>Gain mu</string> </property> - <property name="minimumSize" > + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="alphaLabel"> + <property name="text"> + <string>Alpha</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="gainMuEdit"> + <property name="minimumSize"> <size> - <width>100</width> - <height>26</height> + <width>60</width> + <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>26</height> + <width>80</width> + <height>16777215</height> </size> </property> </widget> </item> - <item row="0" column="0" > - <widget class="QLabel" name="sampleRateLabel" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="alphaEdit"> + <property name="minimumSize"> <size> - <width>0</width> - <height>20</height> + <width>60</width> + <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>16777215</width> - <height>20</height> + <width>80</width> + <height>16777215</height> </size> </property> - <property name="text" > - <string>Sample Rate (sps)</string> - </property> </widget> </item> </layout> @@ -107,14 +104,53 @@ </widget> </item> <item> - <spacer name="verticalSpacer_2" > - <property name="orientation" > + <spacer name="verticalSpacer_4"> + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeType" > + <property name="sizeType"> <enum>QSizePolicy::Fixed</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>30</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="5"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="pauseButton"> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text"> + <string>Pause</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>60</height> @@ -122,111 +158,130 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="closeButton"> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text"> + <string>Close</string> + </property> + </widget> + </item> </layout> </item> - <item row="2" column="1" > - <widget class="QGroupBox" name="channelModeBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="1"> + <widget class="QGroupBox" name="channelModeBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>245</width> <height>130</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>245</width> <height>16777215</height> </size> </property> - <property name="title" > + <property name="title"> <string>Channel Model Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget_2" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_2"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>231</width> + <width>221</width> <height>98</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_2" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_2"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <property name="fieldGrowthPolicy" > + <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="snrLabel" > - <property name="text" > + <item row="0" column="0"> + <widget class="QLabel" name="snrLabel"> + <property name="text"> <string>SNR (dB)</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="snrEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="snrEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QLabel" name="freqLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="freqLabel"> + <property name="text"> <string>Frequency Offset (Hz)</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="freqEdit" > - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="freqEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="timeLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="timeLabel"> + <property name="text"> <string>Timing Offset</string> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="timeEdit" > - <property name="minimumSize" > + <item row="2" column="1"> + <widget class="QLineEdit" name="timeEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> @@ -236,121 +291,92 @@ </widget> </widget> </item> - <item row="0" column="0" colspan="6" > - <layout class="QVBoxLayout" name="verticalLayout_5" > - <item> - <widget class="QFrame" name="sinkFrame" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize" > - <size> - <width>1000</width> - <height>550</height> - </size> - </property> - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_2" > - <item row="1" column="0" > - <layout class="QHBoxLayout" name="sinkLayout" /> - </item> - </layout> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - </widget> - </item> - </layout> - </item> - <item row="2" column="2" > - <layout class="QVBoxLayout" name="verticalLayout_3" > + <item row="2" column="0"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QGroupBox" name="rxBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QGroupBox" name="sysBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>180</width> - <height>90</height> + <width>240</width> + <height>60</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>180</width> + <width>240</width> <height>16777215</height> </size> </property> - <property name="title" > - <string>Receiver Parameters</string> + <property name="title"> + <string>System Parameters</string> </property> - <widget class="QWidget" name="formLayoutWidget_3" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>161</width> - <height>61</height> + <width>211</width> + <height>31</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_3" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="gainMuLabel" > - <property name="text" > - <string>Gain mu</string> - </property> - </widget> - </item> - <item row="1" column="0" > - <widget class="QLabel" name="alphaLabel" > - <property name="text" > - <string>Alpha</string> + <property name="verticalSpacing"> + <number>20</number> + </property> + <item row="0" column="1"> + <widget class="QLineEdit" name="sampleRateEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="gainMuEdit" > - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>100</width> - <height>0</height> + <width>60</width> + <height>26</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>16777215</height> + <width>80</width> + <height>26</height> </size> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="alphaEdit" > - <property name="minimumSize" > + <item row="0" column="0"> + <widget class="QLabel" name="sampleRateLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> <size> - <width>100</width> - <height>0</height> + <width>0</width> + <height>20</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> - <height>16777215</height> + <width>16777215</width> + <height>20</height> </size> </property> + <property name="text"> + <string>Sample Rate (sps)</string> + </property> </widget> </item> </layout> @@ -358,123 +384,123 @@ </widget> </item> <item> - <spacer name="verticalSpacer_4" > - <property name="orientation" > + <spacer name="verticalSpacer_2"> + <property name="orientation"> <enum>Qt::Vertical</enum> </property> - <property name="sizeType" > + <property name="sizeType"> <enum>QSizePolicy::Fixed</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> - <height>30</height> + <height>60</height> </size> </property> </spacer> </item> </layout> </item> - <item row="2" column="3" > - <widget class="QGroupBox" name="rxBox_2" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="3"> + <widget class="QGroupBox" name="rxBox_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>220</width> <height>125</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>265</width> <height>125</height> </size> </property> - <property name="title" > + <property name="title"> <string>Received Packet Info</string> </property> - <widget class="QWidget" name="formLayoutWidget_4" > - <property name="geometry" > + <widget class="QWidget" name="formLayoutWidget_4"> + <property name="geometry"> <rect> <x>10</x> <y>20</y> - <width>201</width> + <width>181</width> <height>92</height> </rect> </property> - <layout class="QFormLayout" name="formLayout_4" > - <property name="sizeConstraint" > + <layout class="QFormLayout" name="formLayout_4"> + <property name="sizeConstraint"> <enum>QLayout::SetFixedSize</enum> </property> - <item row="0" column="0" > - <widget class="QLabel" name="pktsRcvdLabel" > - <property name="text" > + <item row="0" column="0"> + <widget class="QLabel" name="pktsRcvdLabel"> + <property name="text"> <string>Packets Rcvd.</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QLabel" name="pktsCorrectLabel" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="pktsCorrectLabel"> + <property name="text"> <string>Packets Correct</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="perLabel" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="perLabel"> + <property name="text"> <string>PER</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="pktsRcvdEdit" > - <property name="minimumSize" > + <item row="0" column="1"> + <widget class="QLineEdit" name="pktsRcvdEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QLineEdit" name="pktsCorrectEdit" > - <property name="minimumSize" > + <item row="1" column="1"> + <widget class="QLineEdit" name="pktsCorrectEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QLineEdit" name="perEdit" > - <property name="minimumSize" > + <item row="2" column="1"> + <widget class="QLineEdit" name="perEdit"> + <property name="minimumSize"> <size> - <width>100</width> + <width>60</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> - <width>100</width> + <width>80</width> <height>16777215</height> </size> </property> @@ -484,12 +510,12 @@ </widget> </widget> </item> - <item row="2" column="4" > - <spacer name="horizontalSpacer" > - <property name="orientation" > + <item row="2" column="4"> + <spacer name="horizontalSpacer"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>20</height> @@ -497,95 +523,64 @@ </property> </spacer> </item> - <item row="2" column="5" > - <layout class="QVBoxLayout" name="verticalLayout" > + <item row="0" column="0" colspan="6"> + <layout class="QVBoxLayout" name="verticalLayout_5"> <item> - <widget class="QPushButton" name="pauseButton" > - <property name="minimumSize" > - <size> - <width>80</width> - <height>0</height> - </size> - </property> - <property name="maximumSize" > - <size> - <width>80</width> - <height>16777215</height> - </size> - </property> - <property name="text" > - <string>Pause</string> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer" > - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType" > - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0" > - <size> - <width>20</width> - <height>60</height> - </size> + <widget class="QFrame" name="sinkFrame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="closeButton" > - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>80</width> - <height>0</height> + <width>500</width> + <height>550</height> </size> </property> - <property name="maximumSize" > - <size> - <width>80</width> - <height>16777215</height> - </size> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> </property> - <property name="text" > - <string>Close</string> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="sinkLayout"/> + </item> + </layout> </widget> </item> </layout> </item> </layout> - <zorder>sinkFrame</zorder> <zorder>channelModeBox</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>rxBox</zorder> <zorder></zorder> <zorder>rxBox_2</zorder> <zorder>horizontalSpacer</zorder> <zorder></zorder> </widget> - <widget class="QMenuBar" name="menubar" > - <property name="geometry" > + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>1050</width> - <height>24</height> + <width>1019</width> + <height>25</height> </rect> </property> - <widget class="QMenu" name="menuFile" > - <property name="title" > + <widget class="QMenu" name="menuFile"> + <property name="title"> <string>&File</string> </property> - <addaction name="actionExit" /> + <addaction name="actionExit"/> </widget> - <addaction name="menuFile" /> + <addaction name="menuFile"/> </widget> - <widget class="QStatusBar" name="statusbar" /> - <action name="actionExit" > - <property name="text" > + <widget class="QStatusBar" name="statusbar"/> + <action name="actionExit"> + <property name="text"> <string>E&xit</string> </property> </action> @@ -603,11 +598,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>322</x> <y>623</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>66</x> <y>561</y> </hint> @@ -619,11 +614,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>-1</x> <y>-1</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>617</x> <y>327</y> </hint> diff --git a/gr-qtgui/src/lib/spectrumdisplayform.ui b/gr-qtgui/src/lib/spectrumdisplayform.ui index 1458488a0d..cb7b4f9967 100644 --- a/gr-qtgui/src/lib/spectrumdisplayform.ui +++ b/gr-qtgui/src/lib/spectrumdisplayform.ui @@ -1,157 +1,158 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>SpectrumDisplayForm</class> - <widget class="QWidget" name="SpectrumDisplayForm" > - <property name="geometry" > + <widget class="QWidget" name="SpectrumDisplayForm"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>657</width> - <height>536</height> + <height>543</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Spectrum Display</string> </property> - <layout class="QGridLayout" name="gridLayout" > - <item row="1" column="3" > - <widget class="QComboBox" name="FFTSizeComboBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="3"> + <widget class="QComboBox" name="FFTSizeComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>120</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>1024</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>2048</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>4096</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>8192</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>16384</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>32768</string> </property> </item> </widget> </item> - <item row="1" column="2" > - <widget class="QLabel" name="FFTSizeLabel" > - <property name="text" > + <item row="1" column="2"> + <widget class="QLabel" name="FFTSizeLabel"> + <property name="text"> <string>FFT Size:</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QCheckBox" name="UseRFFrequenciesCheckBox" > - <property name="text" > + <item row="1" column="0"> + <widget class="QCheckBox" name="UseRFFrequenciesCheckBox"> + <property name="text"> <string>Display RF Frequencies</string> </property> </widget> </item> - <item row="3" column="0" > - <layout class="QHBoxLayout" name="horizontalLayout" > + <item row="3" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QLabel" name="WindowLbl" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QLabel" name="WindowLbl"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text" > + <property name="text"> <string>Window:</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item> - <widget class="QComboBox" name="WindowComboBox" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <widget class="QComboBox" name="WindowComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>120</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>120</width> <height>16777215</height> </size> </property> - <property name="font" > + <property name="font"> <font> <pointsize>9</pointsize> </font> </property> <item> - <property name="text" > + <property name="text"> <string>Hamming</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Hann</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Blackman</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Rectangular</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Kaiser</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Blackman-harris</string> </property> </item> @@ -159,180 +160,180 @@ </item> </layout> </item> - <item row="0" column="0" colspan="4" > - <widget class="QTabWidget" name="SpectrumTypeTab" > - <property name="currentIndex" > + <item row="0" column="0" colspan="4"> + <widget class="QTabWidget" name="SpectrumTypeTab"> + <property name="currentIndex"> <number>0</number> </property> - <widget class="QWidget" name="FrequencyPage" > - <attribute name="title" > + <widget class="QWidget" name="FrequencyPage"> + <attribute name="title"> <string>Frequency Display</string> </attribute> - <layout class="QVBoxLayout" name="verticalLayout" > + <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QVBoxLayout" name="verticalLayout_2" > + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QFrame" name="FrequencyPlotDisplayFrame" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <widget class="QFrame" name="FrequencyPlotDisplayFrame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> - <width>615</width> + <width>400</width> <height>332</height> </size> </property> - <property name="sizeIncrement" > + <property name="sizeIncrement"> <size> <width>1</width> <height>1</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> <item> - <layout class="QGridLayout" name="gridLayout_2" > - <item row="1" column="0" > - <widget class="QCheckBox" name="MaxHoldCheckBox" > - <property name="text" > + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0"> + <widget class="QCheckBox" name="MaxHoldCheckBox"> + <property name="text"> <string>Max Hold</string> </property> - <property name="checked" > + <property name="checked"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QCheckBox" name="MinHoldCheckBox" > - <property name="text" > + <item row="2" column="0"> + <widget class="QCheckBox" name="MinHoldCheckBox"> + <property name="text"> <string>Min Hold</string> </property> - <property name="checked" > + <property name="checked"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="3" > - <widget class="QLabel" name="PowerLabel" > - <property name="minimumSize" > + <item row="1" column="3"> + <widget class="QLabel" name="PowerLabel"> + <property name="minimumSize"> <size> <width>50</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Power</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QPushButton" name="MaxHoldResetBtn" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="1" column="1"> + <widget class="QPushButton" name="MaxHoldResetBtn"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>25</width> <height>0</height> </size> </property> - <property name="text" > + <property name="text"> <string>Reset</string> </property> </widget> </item> - <item row="1" column="4" > - <widget class="QLabel" name="AvgLabel" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="1" column="4"> + <widget class="QLabel" name="AvgLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>62</width> <height>0</height> </size> </property> - <property name="text" > + <property name="text"> <string>Average</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignCenter</set> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="1" > - <widget class="QPushButton" name="MinHoldResetBtn" > - <property name="text" > + <item row="2" column="1"> + <widget class="QPushButton" name="MinHoldResetBtn"> + <property name="text"> <string>Reset</string> </property> </widget> </item> - <item row="2" column="4" > - <widget class="QSpinBox" name="AvgLineEdit" /> + <item row="2" column="4"> + <widget class="QSpinBox" name="AvgLineEdit"/> </item> - <item row="2" column="3" > - <widget class="QLineEdit" name="PowerLineEdit" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <item row="2" column="3"> + <widget class="QLineEdit" name="PowerLineEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="minimumSize" > + <property name="minimumSize"> <size> <width>50</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>1</string> </property> </widget> </item> - <item row="1" column="2" > - <spacer name="horizontalSpacer_2" > - <property name="orientation" > + <item row="1" column="2"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> - <width>325</width> + <width>200</width> <height>20</height> </size> </property> @@ -344,410 +345,402 @@ </item> </layout> </widget> - <widget class="QWidget" name="WaterfallPage" > - <attribute name="title" > + <widget class="QWidget" name="WaterfallPage"> + <attribute name="title"> <string>Waterfall Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_3" > - <item row="0" column="0" > - <widget class="QLabel" name="textLabel1" > - <property name="maximumSize" > + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Intensity Display:</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="0" column="2" > - <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel" > - <property name="minimumSize" > + <item row="0" column="2"> + <widget class="QwtWheel" name="WaterfallMaximumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="mouseTracking" > + <property name="mouseTracking"> <bool>true</bool> </property> - <property name="focusPolicy" > + <property name="focusPolicy"> <enum>Qt::WheelFocus</enum> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="0" column="3" > - <widget class="QLabel" name="WaterfallMaximumIntensityLabel" > - <property name="maximumSize" > + <item row="0" column="3"> + <widget class="QLabel" name="WaterfallMaximumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" colspan="4" > - <widget class="QFrame" name="WaterfallPlotDisplayFrame" > - <property name="minimumSize" > + <item row="1" column="0" colspan="4"> + <widget class="QFrame" name="WaterfallPlotDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>338</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> - <item row="2" column="2" > - <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel" > - <property name="minimumSize" > + <item row="2" column="2"> + <widget class="QwtWheel" name="WaterfallMinimumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="2" column="3" > - <widget class="QLabel" name="WaterfallMinimumIntensityLabel" > - <property name="maximumSize" > + <item row="2" column="3"> + <widget class="QLabel" name="WaterfallMinimumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>-100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="2" column="0" colspan="2" > - <widget class="QPushButton" name="WaterfallAutoScaleBtn" > - <property name="maximumSize" > + <item row="2" column="0" colspan="2"> + <widget class="QPushButton" name="WaterfallAutoScaleBtn"> + <property name="maximumSize"> <size> <width>80</width> <height>16777215</height> </size> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Scales the Intensity to the current data extremes.</string> </property> - <property name="text" > + <property name="text"> <string>Auto Scale</string> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QComboBox" name="WaterfallIntensityComboBox" > - <property name="maximumSize" > + <item row="0" column="1"> + <widget class="QComboBox" name="WaterfallIntensityComboBox"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>Color</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>White Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Black Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Incandescent</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>User Defined</string> </property> </item> </widget> </item> </layout> - <zorder>textLabel1</zorder> - <zorder>WaterfallMaximumIntensityWheel</zorder> - <zorder>WaterfallMaximumIntensityLabel</zorder> - <zorder>WaterfallPlotDisplayFrame</zorder> - <zorder>WaterfallMinimumIntensityWheel</zorder> - <zorder>WaterfallMinimumIntensityLabel</zorder> - <zorder>WaterfallAutoScaleBtn</zorder> - <zorder>WaterfallIntensityComboBox</zorder> </widget> - <widget class="QWidget" name="Waterfall3DPage" > - <attribute name="title" > + <widget class="QWidget" name="Waterfall3DPage"> + <attribute name="title"> <string>3D Waterfall Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_6" > - <item row="0" column="0" > - <widget class="QLabel" name="textLabel1_2" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_6"> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1_2"> + <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>Intensity Display:</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QComboBox" name="Waterfall3DIntensityComboBox" > - <property name="maximumSize" > + <item row="0" column="1"> + <widget class="QComboBox" name="Waterfall3DIntensityComboBox"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> <item> - <property name="text" > + <property name="text"> <string>Color</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>White Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Black Hot</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>Incandescent</string> </property> </item> <item> - <property name="text" > + <property name="text"> <string>User Defined</string> </property> </item> </widget> </item> - <item row="0" column="2" > - <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel" > - <property name="minimumSize" > + <item row="0" column="2"> + <widget class="QwtWheel" name="Waterfall3DMaximumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="mouseTracking" > + <property name="mouseTracking"> <bool>true</bool> </property> - <property name="focusPolicy" > + <property name="focusPolicy"> <enum>Qt::WheelFocus</enum> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="0" column="3" > - <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel" > - <property name="maximumSize" > + <item row="0" column="3"> + <widget class="QLabel" name="Waterfall3DMaximumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" colspan="4" > - <widget class="QFrame" name="Waterfall3DPlotDisplayFrame" > - <property name="frameShape" > + <item row="1" column="0" colspan="4"> + <widget class="QFrame" name="Waterfall3DPlotDisplayFrame"> + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> - <item row="2" column="0" colspan="2" > - <widget class="QPushButton" name="Waterfall3DAutoScaleBtn" > - <property name="minimumSize" > + <item row="2" column="0" colspan="2"> + <widget class="QPushButton" name="Waterfall3DAutoScaleBtn"> + <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="maximumSize" > + <property name="maximumSize"> <size> <width>80</width> <height>16777215</height> </size> </property> - <property name="sizeIncrement" > + <property name="sizeIncrement"> <size> <width>0</width> <height>0</height> </size> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Scales the Intensity to the current data extremes.</string> </property> - <property name="text" > + <property name="text"> <string>Auto Scale</string> </property> </widget> </item> - <item row="2" column="2" > - <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel" > - <property name="minimumSize" > + <item row="2" column="2"> + <widget class="QwtWheel" name="Waterfall3DMinimumIntensityWheel"> + <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> - <property name="valid" > + <property name="valid"> <bool>true</bool> </property> - <property name="totalAngle" > + <property name="totalAngle"> <double>200.000000000000000</double> </property> - <property name="viewAngle" > + <property name="viewAngle"> <double>20.000000000000000</double> </property> - <property name="mass" > + <property name="mass"> <double>0.000000000000000</double> </property> </widget> </item> - <item row="2" column="3" > - <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel" > - <property name="maximumSize" > + <item row="2" column="3"> + <widget class="QLabel" name="Waterfall3DMinimumIntensityLabel"> + <property name="maximumSize"> <size> <width>100</width> <height>16777215</height> </size> </property> - <property name="text" > + <property name="text"> <string>-100 dB</string> </property> - <property name="wordWrap" > + <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> </layout> </widget> - <widget class="QWidget" name="TimeDomainPage" > - <attribute name="title" > + <widget class="QWidget" name="TimeDomainPage"> + <attribute name="title"> <string>Time Domain Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_4" > - <item row="0" column="0" > - <widget class="QFrame" name="TimeDomainDisplayFrame" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QFrame" name="TimeDomainDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>404</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> </widget> </item> </layout> </widget> - <widget class="QWidget" name="ConstellationPage" > - <attribute name="title" > + <widget class="QWidget" name="ConstellationPage"> + <attribute name="title"> <string>Constellation Display</string> </attribute> - <layout class="QGridLayout" name="gridLayout_5" > - <item row="0" column="0" > - <widget class="QFrame" name="ConstellationDisplayFrame" > - <property name="minimumSize" > + <layout class="QGridLayout" name="gridLayout_5"> + <item row="0" column="0"> + <widget class="QFrame" name="ConstellationDisplayFrame"> + <property name="minimumSize"> <size> <width>617</width> <height>406</height> </size> </property> - <property name="frameShape" > + <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> - <property name="frameShadow" > + <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> @@ -758,7 +751,7 @@ </item> </layout> </widget> - <layoutdefault spacing="6" margin="11" /> + <layoutdefault spacing="6" margin="11"/> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <customwidgets> <customwidget> @@ -775,14 +768,14 @@ <tabstop>WaterfallMinimumIntensityWheel</tabstop> </tabstops> <includes> - <include location="global" >SpectrumGUIClass.h</include> - <include location="global" >FrequencyDisplayPlot.h</include> - <include location="global" >WaterfallDisplayPlot.h</include> - <include location="global" >Waterfall3DDisplayPlot.h</include> - <include location="global" >TimeDomainDisplayPlot.h</include> - <include location="global" >qvalidator.h</include> - <include location="global" >vector</include> - <include location="local" >qwt_wheel.h</include> + <include location="global">SpectrumGUIClass.h</include> + <include location="global">FrequencyDisplayPlot.h</include> + <include location="global">WaterfallDisplayPlot.h</include> + <include location="global">Waterfall3DDisplayPlot.h</include> + <include location="global">TimeDomainDisplayPlot.h</include> + <include location="global">qvalidator.h</include> + <include location="global">vector</include> + <include location="local">qwt_wheel.h</include> </includes> <resources/> <connections> @@ -792,11 +785,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MaxHoldCheckBox_toggled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>324</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -808,11 +801,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MaxHoldResetBtn_clicked()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>107</x> <y>324</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -824,11 +817,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MinHoldCheckBox_toggled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -840,11 +833,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>MinHoldResetBtn_clicked()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>107</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -856,11 +849,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>PowerLineEdit_textChanged(QString)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>482</x> <y>344</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -872,11 +865,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WindowTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -888,11 +881,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>UseRFFrequenciesCB(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -904,11 +897,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfallMaximumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -920,11 +913,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfallMinimumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -936,11 +929,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfall3DMaximumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -952,11 +945,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>waterfall3DMinimumIntensityChangedCB(double)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>217</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -968,11 +961,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>FFTComboBoxSelectedCB(QString)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>20</x> <y>20</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -984,11 +977,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WaterfallAutoScaleBtnCB()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1000,11 +993,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>Waterfall3DAutoScaleBtnCB()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>22</x> <y>349</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1016,11 +1009,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>WaterfallIntensityColorTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>92</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1032,11 +1025,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>Waterfall3DIntensityColorTypeChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>92</x> <y>44</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>20</x> <y>20</y> </hint> @@ -1048,11 +1041,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>TabChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>314</x> <y>189</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>316</x> <y>217</y> </hint> @@ -1064,11 +1057,11 @@ <receiver>SpectrumDisplayForm</receiver> <slot>AvgLineEdit_valueChanged(int)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>604</x> <y>421</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>328</x> <y>260</y> </hint> -- cgit v1.2.3 From 28bcffdea069764716a769eb3e344c748bc705f6 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 10:23:47 -0700 Subject: wip on clock sync block; exposing set gain function --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 36 ++++++++++++---------- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 9 ++++-- .../src/lib/filter/gr_pfb_clock_sync_ccf.i | 1 + 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 91cbf74c6b..5577e42c8a 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -60,7 +60,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, // set it here to the fractional difference based on the initial phaes // assert(init_phase <= 2*M_PI); float x = init_phase / (2*M_PI); //normalize initial phase - d_acc = x*(d_nfilters-1); + d_acc = 0.5; //x*(d_nfilters-1); d_last_filter = (int)floor(d_acc); d_acc = fmodf(d_acc, 1); d_start_count = 0; @@ -133,12 +133,22 @@ void gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps) { + float maxtap = -1e12; difftaps.clear(); difftaps.push_back(0); //newtaps[0]); for(unsigned int i = 1; i < newtaps.size()-1; i++) { - difftaps.push_back(newtaps[i+1] - newtaps[i-1]); + float tap = newtaps[i+1] - newtaps[i-1]; + if(tap > maxtap) { + maxtap = tap; + } + //maxtap += tap; + difftaps.push_back(tap); } difftaps.push_back(0);//-newtaps[newtaps.size()-1]); + + for(unsigned int i = 0; i < difftaps.size(); i++) { + difftaps[i] /= 1;//maxtap; + } } void @@ -219,24 +229,18 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, err[i] = error; d_acc += d_alpha*error; - gr_branchless_clip(d_acc, 1); - - int newfilter; - newfilter = (int)((float)d_last_filter + d_acc); - if(newfilter != (int)d_last_filter) - d_acc = 0.5; - - if(newfilter >= (int)d_nfilters) { - d_last_filter = newfilter - d_nfilters; + if(d_acc >= (int)d_nfilters) { + d_acc -= d_nfilters; count++; } - else if(newfilter < 0) { - d_last_filter = d_nfilters + newfilter; + else if(d_acc < 0) { + d_acc += d_nfilters-1; count--; } - else { - d_last_filter = newfilter; - } + + d_last_filter = (int)floor(d_acc); + printf("error: %e d_acc: %e filter: %d\n", + error, d_acc, d_last_filter); i++; count += d_sps; diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 1a04e55c75..d99bd6fe71 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -29,9 +29,9 @@ class gr_pfb_clock_sync_ccf; typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr; gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, - const std::vector<float> &taps, - unsigned int filter_size=32, - float init_phase=0); + const std::vector<float> &taps, + unsigned int filter_size=32, + float init_phase=0); class gr_fir_ccf; @@ -96,6 +96,9 @@ public: */ void print_taps(); void print_diff_taps(); + + void set_gain(float gain) + { d_alpha = gain; } int general_work (int noutput_items, gr_vector_int &ninput_items, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i index 729d4a1aa9..9defbc7cd0 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i @@ -46,4 +46,5 @@ class gr_pfb_clock_sync_ccf : public gr_block std::vector<float> diff_channel_taps(int channel); void print_taps(); void print_diff_taps(); + void set_gain(float gain); }; -- cgit v1.2.3 From eee064ca72cbc9779eaae2f20e18f74ff7925574 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 10:24:38 -0700 Subject: Using PFB clock recovery for testing --- .../src/python/gnuradio/blks2impl/dbpsk.py | 40 ++++++++++++++++------ .../src/python/gnuradio/blks2impl/dqpsk.py | 37 ++++++++++++++------ 2 files changed, 57 insertions(+), 20 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py index 3147bfa2ab..ac2e9323fb 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py @@ -255,16 +255,34 @@ class dbpsk_demod(gr.hier_block2): self._mm_omega = self._samples_per_symbol self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha - fmin = -0.1 - fmax = 0.1 + fmin = -0.25 + fmax = 0.25 - self.receiver=gr.mpsk_receiver_cc(arity, 0, - self._costas_alpha, self._costas_beta, - fmin, fmax, - self._mm_mu, self._mm_gain_mu, - self._mm_omega, self._mm_gain_omega, - self._mm_omega_relative_limit) - + #self.receiver=gr.mpsk_receiver_cc(arity, 0, + # self._costas_alpha, self._costas_beta, + # fmin, fmax, + # self._mm_mu, self._mm_gain_mu, + # self._mm_omega, self._mm_gain_omega, + # self._mm_omega_relative_limit) + + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + if 0: + self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, + self._mm_gain_omega, + self._mm_mu, + self._mm_gain_mu, + self._mm_omega_relative_limit) + else: + nfilts = 8 + ntaps = nfilts*ntaps + taps = gr.firdes.root_raised_cosine( + nfilts, 1.0, 0.25/nfilts, self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, + self._mm_gain_mu, + taps, nfilts) + # Do differential decoding based on phase change of symbols self.diffdec = gr.diff_phasor_cc() @@ -288,7 +306,9 @@ class dbpsk_demod(gr.hier_block2): self._setup_logging() # Connect and Initialize base class - self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, self.receiver, + #self.clock_recov, + self.time_recov, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py index 8c15d21734..34e6581bf7 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py @@ -255,16 +255,32 @@ class dqpsk_demod(gr.hier_block2): self._mm_omega = self._samples_per_symbol self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha - fmin = -0.025 - fmax = 0.025 + fmin = -0.25 + fmax = 0.25 + + #self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, + # self._costas_alpha, self._costas_beta, + # fmin, fmax, + # self._mm_mu, self._mm_gain_mu, + # self._mm_omega, self._mm_gain_omega, + # self._mm_omega_relative_limit) + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + if 0: + self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, + self._mm_gain_omega, + self._mm_mu, + self._mm_gain_mu, + self._mm_omega_relative_limit) + else: + ntaps = 32*ntaps + taps = gr.firdes.root_raised_cosine( + 32, 1.0, 0.25/32.0, self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, + self._mm_gain_mu, + taps) - self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, - self._costas_alpha, self._costas_beta, - fmin, fmax, - self._mm_mu, self._mm_gain_mu, - self._mm_omega, self._mm_gain_omega, - self._mm_omega_relative_limit) - # Perform Differential decoding on the constellation self.diffdec = gr.diff_phasor_cc() @@ -288,7 +304,8 @@ class dqpsk_demod(gr.hier_block2): self._setup_logging() # Connect & Initialize base class - self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, + self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, #self.receiver, + self.clock_recov, self.time_recov, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): -- cgit v1.2.3 From 7f994ec592ba721dae56f08cea92441c7f572797 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 10:26:57 -0700 Subject: Working with PFB clock recovery block. --- .../python/digital/benchmark_qt_loopback.py | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index e43bffa263..1bfda4a96c 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback.py @@ -234,22 +234,30 @@ class my_top_block(gr.top_block): self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, 0, 1, "Rx", True, True, False, True, True) + self.snk_err = qtgui.sink_f(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + 0, 1, + "Error", True, True, False, False, False) self.snk_tx.set_frequency_axis(-80, 0) self.snk_rx.set_frequency_axis(-60, 20) # Connect to the QT sinks # FIXME: make better exposure to receiver from rxpath - self.receiver = self.rxpath.packet_receiver._demodulator.receiver + #self.freq_recov = self.rxpath.packet_receiver._demodulator.clock_recov + self.time_recov = self.rxpath.packet_receiver._demodulator.time_recov self.connect(self.channel, self.snk_tx) - self.connect(self.receiver, self.snk_rx) + self.connect(self.time_recov, self.snk_rx) + self.connect((self.time_recov, 1), self.snk_err) pyTxQt = self.snk_tx.pyqwidget() pyTx = sip.wrapinstance(pyTxQt, QtGui.QWidget) - + pyRxQt = self.snk_rx.pyqwidget() pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget) - + + pyErrQt = self.snk_err.pyqwidget() + pyErr = sip.wrapinstance(pyRxQt, QtGui.QWidget) + self.main_box = dialog_box(pyTx, pyRx, self) self.main_box.show() @@ -308,8 +316,9 @@ class my_top_block(gr.top_block): def set_rx_gain_mu(self, gain): self._gain_mu = gain self.gain_omega = .25 * self._gain_mu * self._gain_mu - self.receiver.set_gain_mu(self._gain_mu) - self.receiver.set_gain_omega(self.gain_omega) + #self.time_recov.set_gain_mu(self._gain_mu) + #self.time_recov.set_gain_omega(self.gain_omega) + self.time_recov.set_gain(self._gain_mu) def rx_alpha(self): return self._alpha @@ -320,8 +329,8 @@ class my_top_block(gr.top_block): def set_rx_alpha(self, alpha): self._alpha = alpha self.beta = .25 * self._alpha * self._alpha - self.receiver.set_alpha(self._alpha) - self.receiver.set_beta(self.beta) + #self.freq_recov.set_alpha(self._alpha) + #self.freq_recov.set_beta(self.beta) -- cgit v1.2.3 From 314726ae7457b37f442a2751285b75b0d616c0f4 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 10:29:06 -0700 Subject: Should not be clipping the error here. --- gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc index 49bbb8d360..89ea4a232c 100644 --- a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc +++ b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc @@ -35,7 +35,7 @@ #define M_TWOPI (2*M_PI) #define VERBOSE_MM 0 // Used for debugging symbol timing loop -#define VERBOSE_COSTAS 0 // Used for debugging phase and frequency tracking +#define VERBOSE_COSTAS 1 // Used for debugging phase and frequency tracking // Public constructor @@ -265,8 +265,6 @@ gr_mpsk_receiver_cc::phase_error_tracking(gr_complex sample) // Make phase and frequency corrections based on sampled value phase_error = (*this.*d_phase_error_detector)(sample); - - phase_error = gr_branchless_clip(phase_error, 1.0); d_freq += d_beta*phase_error; // adjust frequency based on error d_phase += d_freq + d_alpha*phase_error; // adjust phase based on error -- cgit v1.2.3 From c014a0926d24d0edf10ced7ce122d154b7e33f18 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 13:50:54 -0700 Subject: Making second output port of PFB clock recovery optional. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 5577e42c8a..f7dd946855 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -50,7 +50,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, float init_phase) : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), - gr_make_io_signature2 (2, 2, sizeof(gr_complex), sizeof(float))), + gr_make_io_signature2 (1, 2, sizeof(gr_complex), sizeof(float))), d_updated (false), d_sps(sps), d_alpha(gain) { d_nfilters = filter_size; @@ -209,7 +209,10 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, { gr_complex *in = (gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) output_items[0]; - float *err = (float *) output_items[1]; + + float *err; + if(ninput_items.size() == 2) + err = (float *) output_items[1]; if (d_updated) { d_updated = false; @@ -226,7 +229,9 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, while((i < noutput_items) && (count < nrequired)) { out[i] = d_filters[d_last_filter]->filter(&in[count]); error = (out[i] * d_diff_filters[d_last_filter]->filter(&in[count])).real(); - err[i] = error; + + if(ninput_items.size() == 2) + err[i] = error; d_acc += d_alpha*error; if(d_acc >= (int)d_nfilters) { -- cgit v1.2.3 From 3087d962fb0bbd58a5ae7242ec5b638badb1f2c7 Mon Sep 17 00:00:00 2001 From: Matt Ettus <matt@ettus.com> Date: Tue, 6 Oct 2009 14:22:09 -0700 Subject: no timing recovery yet, but creates RRC-PAM --- gnuradio-examples/grc/pam_timing.grc | 616 +++++++++++++++++++++++++++++++++++ 1 file changed, 616 insertions(+) create mode 100644 gnuradio-examples/grc/pam_timing.grc diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc new file mode 100644 index 0000000000..989c795a9e --- /dev/null +++ b/gnuradio-examples/grc/pam_timing.grc @@ -0,0 +1,616 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Oct 6 14:19:10 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>top_block</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(128, 9)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_uchar_to_float</key> + <param> + <key>id</key> + <value>gr_uchar_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(270, 115)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 80)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>const_source_x</key> + <param> + <key>id</key> + <value>const_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> + </param> + <param> + <key>_coordinate</key> + <value>(179, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>spb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Samples Per Bit</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>choices</key> + <value>[1, 2, 3, 4, 5, 6, 7, 8]</value> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 834)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(750, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(505, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_amp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>noise_amp</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(600, -1)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(561, 284)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_amp</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(45, 497)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>2*spb</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(50, 295)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(374, 389)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(376, 598)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_uchar_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_uchar_to_float_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>const_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> -- cgit v1.2.3 From 3159eba60cbf3a8ed2fee798e2bc0c557a284984 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan <jcorgan@corganenterprises.com> Date: Tue, 6 Oct 2009 14:56:43 -0700 Subject: Add gr.pfb_clock_recovery to GRC --- grc/blocks/Makefile.am | 1 + grc/blocks/block_tree.xml | 5 ++-- grc/blocks/gr_pfb_clock_recovery.xml | 52 ++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 grc/blocks/gr_pfb_clock_recovery.xml diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am index 617a3bf608..0ee9be6ca2 100644 --- a/grc/blocks/Makefile.am +++ b/grc/blocks/Makefile.am @@ -144,6 +144,7 @@ dist_ourdata_DATA = \ gr_packed_to_unpacked_xx.xml \ gr_peak_detector2_fb.xml \ gr_peak_detector_xb.xml \ + gr_pfb_clock_recovery.xml \ gr_phase_modulator_fc.xml \ gr_pll_carriertracking_cc.xml \ gr_pll_freqdet_cf.xml \ diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml index 296f0ee911..5b10d1f12c 100644 --- a/grc/blocks/block_tree.xml +++ b/grc/blocks/block_tree.xml @@ -124,6 +124,7 @@ <cat> <name>Synchronizers</name> <block>gr_clock_recovery_mm_xx</block> + <block>gr_pfb_clock_recovery_ccf</block> <block>gr_costas_loop_cc</block> <block>gr_dd_mpsk_sync_cc</block> @@ -167,7 +168,7 @@ <block>band_pass_filter</block> <block>band_reject_filter</block> <block>root_raised_cosine_filter</block> - <!-- Filters that take taps as aruments --> + <!-- Filters that take taps as arguments --> <block>gr_fir_filter_xxx</block> <block>gr_interp_fir_filter_xxx</block> <block>gr_fft_filter_xxx</block> @@ -178,7 +179,7 @@ <!-- Filter banks --> <block>blks2_synthesis_filterbank</block> <block>blks2_analysis_filterbank</block> - <!-- Polyphase filers --> + <!-- Polyphase filters --> <block>blks2_pfb_arb_resampler_ccf</block> <!-- Other filters --> <block>gr_single_pole_iir_filter_xx</block> diff --git a/grc/blocks/gr_pfb_clock_recovery.xml b/grc/blocks/gr_pfb_clock_recovery.xml new file mode 100644 index 0000000000..90ecfcf41c --- /dev/null +++ b/grc/blocks/gr_pfb_clock_recovery.xml @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<!-- +################################################### +## Polyphase Filter based Clock Recovery +################################################### + --> +<block> + <name>Polyphase Clock Recovery</name> + <key>gr_pfb_clock_recovery_ccf</key> + <import>from gnuradio import gr</import> + <make>gr.pfb_clock_recovery_ccf($sps, $gain, $taps, $filter_size, $init_phase)</make> + <callback>set_taps($taps)</callback> + <callback>set_gain($gain)</callback> + + <param> + <name>Samples/Symbol</name> + <key>sps</key> + <type>real</type> + </param> + <param> + <name>Gain</name> + <key>gain</key> + <type>real</type> + </param> + <param> + <name>Taps</name> + <key>taps</key> + <type>real_vector</type> + </param> + <param> + <name>Filter Size</name> + <key>filter_size</key> + <type>int</type> + </param> + <param> + <name>Initial Phase</name> + <key>init_phase</key> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>complex</type> + </source> + <source> + <name>err</name> + <type>float</type> + </source> +</block> -- cgit v1.2.3 From 9d3f297ded7d78e49760c17696df49a5a7f920f8 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 15:19:12 -0700 Subject: Changinging behavior of parameter update for PFB clock recovery alg. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 32 +++++++++++----------- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 10 +++++-- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index f7dd946855..b67efc52d4 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -51,7 +51,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), gr_make_io_signature2 (1, 2, sizeof(gr_complex), sizeof(float))), - d_updated (false), d_sps(sps), d_alpha(gain) + d_updated (false), d_sps(sps) { d_nfilters = filter_size; @@ -59,10 +59,9 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, // The accumulator keeps track of overflow to increment the stride correctly. // set it here to the fractional difference based on the initial phaes // assert(init_phase <= 2*M_PI); - float x = init_phase / (2*M_PI); //normalize initial phase - d_acc = 0.5; //x*(d_nfilters-1); - d_last_filter = (int)floor(d_acc); - d_acc = fmodf(d_acc, 1); + set_gain(gain); + d_k = d_nfilters / 2; + d_rate = 0; d_start_count = 0; @@ -227,28 +226,29 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - out[i] = d_filters[d_last_filter]->filter(&in[count]); - error = (out[i] * d_diff_filters[d_last_filter]->filter(&in[count])).real(); + int filtnum = (int)d_k; + out[i] = d_filters[filtnum]->filter(&in[count]); + error = (out[i] * d_diff_filters[filtnum]->filter(&in[count])).real(); if(ninput_items.size() == 2) err[i] = error; - d_acc += d_alpha*error; - if(d_acc >= (int)d_nfilters) { - d_acc -= d_nfilters; + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; + while(d_k >= d_nfilters) { + d_k -= d_nfilters; count++; } - else if(d_acc < 0) { - d_acc += d_nfilters-1; + while(d_k < 0) { + d_k += d_nfilters; count--; } - d_last_filter = (int)floor(d_acc); - printf("error: %e d_acc: %e filter: %d\n", - error, d_acc, d_last_filter); - i++; count += d_sps; + + printf("error: %f k: %f rate: %f\n", + error, d_k, d_rate); } // Set the start index at the next entrance to the work function diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index d99bd6fe71..b8e0f83b68 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -58,13 +58,14 @@ class gr_pfb_clock_sync_ccf : public gr_block bool d_updated; unsigned int d_sps; float d_alpha; + float d_beta; unsigned int d_nfilters; std::vector<gr_fir_ccf*> d_filters; std::vector<gr_fir_ccf*> d_diff_filters; std::vector< std::vector<float> > d_taps; std::vector< std::vector<float> > d_dtaps; - float d_acc; - unsigned int d_last_filter; + float d_k; + float d_rate; unsigned int d_start_count; unsigned int d_taps_per_filter; @@ -98,7 +99,10 @@ public: void print_diff_taps(); void set_gain(float gain) - { d_alpha = gain; } + { + d_alpha = gain; + d_beta = 0.25*d_alpha*d_alpha; + } int general_work (int noutput_items, gr_vector_int &ninput_items, -- cgit v1.2.3 From 2d93968cd63aa89cbd218f7d70ed2ae44393bab1 Mon Sep 17 00:00:00 2001 From: Matt Ettus <matt@ettus.com> Date: Tue, 6 Oct 2009 15:37:30 -0700 Subject: rename and make output optional --- grc/blocks/Makefile.am | 2 +- grc/blocks/block_tree.xml | 2 +- grc/blocks/gr_pfb_clock_recovery.xml | 52 ----------------------------------- grc/blocks/gr_pfb_clock_sync.xml | 53 ++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 54 deletions(-) delete mode 100644 grc/blocks/gr_pfb_clock_recovery.xml create mode 100644 grc/blocks/gr_pfb_clock_sync.xml diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am index 0ee9be6ca2..7c769c4b45 100644 --- a/grc/blocks/Makefile.am +++ b/grc/blocks/Makefile.am @@ -144,7 +144,7 @@ dist_ourdata_DATA = \ gr_packed_to_unpacked_xx.xml \ gr_peak_detector2_fb.xml \ gr_peak_detector_xb.xml \ - gr_pfb_clock_recovery.xml \ + gr_pfb_clock_sync.xml \ gr_phase_modulator_fc.xml \ gr_pll_carriertracking_cc.xml \ gr_pll_freqdet_cf.xml \ diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml index 5b10d1f12c..509956d3bc 100644 --- a/grc/blocks/block_tree.xml +++ b/grc/blocks/block_tree.xml @@ -124,7 +124,7 @@ <cat> <name>Synchronizers</name> <block>gr_clock_recovery_mm_xx</block> - <block>gr_pfb_clock_recovery_ccf</block> + <block>gr_pfb_clock_sync_ccf</block> <block>gr_costas_loop_cc</block> <block>gr_dd_mpsk_sync_cc</block> diff --git a/grc/blocks/gr_pfb_clock_recovery.xml b/grc/blocks/gr_pfb_clock_recovery.xml deleted file mode 100644 index 90ecfcf41c..0000000000 --- a/grc/blocks/gr_pfb_clock_recovery.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0"?> -<!-- -################################################### -## Polyphase Filter based Clock Recovery -################################################### - --> -<block> - <name>Polyphase Clock Recovery</name> - <key>gr_pfb_clock_recovery_ccf</key> - <import>from gnuradio import gr</import> - <make>gr.pfb_clock_recovery_ccf($sps, $gain, $taps, $filter_size, $init_phase)</make> - <callback>set_taps($taps)</callback> - <callback>set_gain($gain)</callback> - - <param> - <name>Samples/Symbol</name> - <key>sps</key> - <type>real</type> - </param> - <param> - <name>Gain</name> - <key>gain</key> - <type>real</type> - </param> - <param> - <name>Taps</name> - <key>taps</key> - <type>real_vector</type> - </param> - <param> - <name>Filter Size</name> - <key>filter_size</key> - <type>int</type> - </param> - <param> - <name>Initial Phase</name> - <key>init_phase</key> - <type>real</type> - </param> - <sink> - <name>in</name> - <type>complex</type> - </sink> - <source> - <name>out</name> - <type>complex</type> - </source> - <source> - <name>err</name> - <type>float</type> - </source> -</block> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml new file mode 100644 index 0000000000..9e2f3fa9c7 --- /dev/null +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<!-- +################################################### +## Polyphase Filter based Clock Sync +################################################### + --> +<block> + <name>Polyphase Clock Sync</name> + <key>gr_pfb_clock_sync_ccf</key> + <import>from gnuradio import gr</import> + <make>gr.pfb_clock_sync_ccf($sps, $gain, $taps, $filter_size, $init_phase)</make> + <callback>set_taps($taps)</callback> + <callback>set_gain($gain)</callback> + + <param> + <name>Samples/Symbol</name> + <key>sps</key> + <type>real</type> + </param> + <param> + <name>Gain</name> + <key>gain</key> + <type>real</type> + </param> + <param> + <name>Taps</name> + <key>taps</key> + <type>real_vector</type> + </param> + <param> + <name>Filter Size</name> + <key>filter_size</key> + <type>int</type> + </param> + <param> + <name>Initial Phase</name> + <key>init_phase</key> + <type>real</type> + </param> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <source> + <name>out</name> + <type>complex</type> + </source> + <source> + <name>err</name> + <type>float</type> + <optional>1</optional> + </source> +</block> -- cgit v1.2.3 From d887d011b17c10da0ba1513bfbd7067146ac2a33 Mon Sep 17 00:00:00 2001 From: Matt Ettus <matt@ettus.com> Date: Tue, 6 Oct 2009 17:44:56 -0700 Subject: with frac delay --- gnuradio-examples/grc/pam_timing.grc | 505 +++++++++++++++++++++++++---------- 1 file changed, 365 insertions(+), 140 deletions(-) diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index 989c795a9e..d357a1b550 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 14:19:10 2009</timestamp> + <timestamp>Tue Oct 6 17:40:15 2009</timestamp> <block> <key>options</key> <param> @@ -57,22 +57,38 @@ </param> </block> <block> - <key>variable</key> + <key>random_source_x</key> <param> <key>id</key> - <value>samp_rate</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>32000</value> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(128, 9)</value> + <value>(13, 80)</value> </param> <param> <key>_rotation</key> @@ -80,18 +96,26 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>const_source_x</key> <param> <key>id</key> - <value>gr_uchar_to_float_0</value> + <value>const_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> + </param> <param> <key>_coordinate</key> - <value>(270, 115)</value> + <value>(179, 160)</value> </param> <param> <key>_rotation</key> @@ -99,10 +123,10 @@ </param> </block> <block> - <key>random_source_x</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>random_source_x_0</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> @@ -110,7 +134,42 @@ </param> <param> <key>type</key> - <value>byte</value> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(505, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_amp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>noise_amp</value> + </param> + <param> + <key>value</key> + <value>0</value> </param> <param> <key>min</key> @@ -118,19 +177,31 @@ </param> <param> <key>max</key> - <value>2</value> + <value>1.0</value> </param> <param> - <key>num_samps</key> + <key>num_steps</key> <value>1000</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(13, 80)</value> + <value>(600, -1)</value> </param> <param> <key>_rotation</key> @@ -138,10 +209,10 @@ </param> </block> <block> - <key>const_source_x</key> + <key>gr_noise_source_x</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>gr_noise_source_x_0</value> </param> <param> <key>_enabled</key> @@ -152,12 +223,20 @@ <value>float</value> </param> <param> - <key>const</key> - <value>-0.5</value> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_amp</value> + </param> + <param> + <key>seed</key> + <value>42</value> </param> <param> <key>_coordinate</key> - <value>(179, 160)</value> + <value>(45, 497)</value> </param> <param> <key>_rotation</key> @@ -165,50 +244,50 @@ </param> </block> <block> - <key>variable_chooser</key> + <key>root_raised_cosine_filter</key> <param> <key>id</key> - <value>spb</value> + <value>root_raised_cosine_filter_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Samples Per Bit</value> + <key>type</key> + <value>interp_fir_filter_fff</value> </param> <param> - <key>value</key> - <value>4</value> + <key>decim</key> + <value>1</value> </param> <param> - <key>choices</key> - <value>[1, 2, 3, 4, 5, 6, 7, 8]</value> + <key>interp</key> + <value>spb</value> </param> <param> - <key>labels</key> - <value>[]</value> + <key>gain</key> + <value>2*spb</value> </param> <param> - <key>type</key> - <value>drop_down</value> + <key>samp_rate</key> + <value>1.0</value> </param> <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> + <key>sym_rate</key> + <value>1./spb</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>alpha</key> + <value>0.35</value> </param> <param> - <key>notebook</key> - <value></value> + <key>ntaps</key> + <value>11*spb</value> </param> <param> <key>_coordinate</key> - <value>(0, 834)</value> + <value>(50, 295)</value> </param> <param> <key>_rotation</key> @@ -216,10 +295,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>gr_add_xx_0_0</value> </param> <param> <key>_enabled</key> @@ -230,44 +309,66 @@ <value>float</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_scale</key> + <key>_coordinate</key> + <value>(375, 390)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>const_source_x</key> <param> - <key>t_scale</key> + <key>id</key> + <value>const_source_x_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> <value>0</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>_coordinate</key> + <value>(36, 723)</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>num_inputs</key> - <value>1</value> + <key>id</key> + <value>spb</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(750, 128)</value> + <value>(34, 915)</value> </param> <param> <key>_rotation</key> @@ -275,10 +376,56 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>variable</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>nfilts</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + <param> + <key>_coordinate</key> + <value>(31, 828)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>rrctaps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts)</value> + </param> + <param> + <key>_coordinate</key> + <value>(180, 935)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> @@ -286,11 +433,11 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> <key>vlen</key> @@ -298,7 +445,7 @@ </param> <param> <key>_coordinate</key> - <value>(505, 128)</value> + <value>(757, 418)</value> </param> <param> <key>_rotation</key> @@ -309,7 +456,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>noise_amp</value> + <value>gain</value> </param> <param> <key>_enabled</key> @@ -317,7 +464,7 @@ </param> <param> <key>label</key> - <value>noise_amp</value> + <value>Gain</value> </param> <param> <key>value</key> @@ -329,7 +476,7 @@ </param> <param> <key>max</key> - <value>1.0</value> + <value>1</value> </param> <param> <key>num_steps</key> @@ -353,7 +500,7 @@ </param> <param> <key>_coordinate</key> - <value>(600, -1)</value> + <value>(537, 278)</value> </param> <param> <key>_rotation</key> @@ -361,30 +508,18 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>gr_uchar_to_float_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> <param> <key>_coordinate</key> - <value>(561, 284)</value> + <value>(261, 107)</value> </param> <param> <key>_rotation</key> @@ -392,10 +527,10 @@ </param> </block> <block> - <key>gr_noise_source_x</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_noise_source_x_0</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> @@ -403,23 +538,47 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>amp</key> - <value>noise_amp</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(45, 497)</value> + <value>(750, 128)</value> </param> <param> <key>_rotation</key> @@ -427,10 +586,10 @@ </param> </block> <block> - <key>root_raised_cosine_filter</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>root_raised_cosine_filter_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> @@ -438,39 +597,70 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> + <value>float</value> </param> <param> - <key>decim</key> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> <value>1</value> </param> <param> - <key>interp</key> - <value>spb</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>gain</key> - <value>2*spb</value> + <key>notebook</key> + <value></value> </param> <param> - <key>samp_rate</key> - <value>1.0</value> + <key>_coordinate</key> + <value>(643, 853)</value> </param> <param> - <key>sym_rate</key> - <value>1./spb</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>gr_float_to_complex</key> <param> - <key>alpha</key> - <value>0.35</value> + <key>id</key> + <value>gr_float_to_complex_0</value> </param> <param> - <key>ntaps</key> - <value>11*spb</value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(50, 295)</value> + <value>(380, 553)</value> </param> <param> <key>_rotation</key> @@ -478,30 +668,38 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> - <value>gr_add_xx_0_0</value> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>gain</key> + <value>gain</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> </param> <param> <key>_coordinate</key> - <value>(374, 389)</value> + <value>(341, 777)</value> </param> <param> <key>_rotation</key> @@ -509,10 +707,10 @@ </param> </block> <block> - <key>root_raised_cosine_filter</key> + <key>gr_fractional_interpolator_xx</key> <param> <key>id</key> - <value>root_raised_cosine_filter_0_0</value> + <value>gr_fractional_interpolator_xx_0</value> </param> <param> <key>_enabled</key> @@ -520,39 +718,42 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> + <value>complex</value> </param> <param> - <key>decim</key> - <value>1</value> + <key>phase_shift</key> + <value>0.5</value> </param> <param> - <key>interp</key> + <key>interp_ratio</key> <value>1</value> </param> <param> - <key>gain</key> - <value>1</value> + <key>_coordinate</key> + <value>(349, 662)</value> </param> <param> - <key>samp_rate</key> - <value>1.0</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>sym_rate</key> - <value>1./spb</value> + <key>id</key> + <value>samp_rate</value> </param> <param> - <key>alpha</key> - <value>0.35</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>ntaps</key> - <value>11*spb</value> + <key>value</key> + <value>320000</value> </param> <param> <key>_coordinate</key> - <value>(376, 598)</value> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -603,14 +804,38 @@ </connection> <connection> <source_block_id>gr_add_xx_0_0</source_block_id> - <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <source_block_id>const_source_x_1</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_float_to_complex_0</source_block_id> + <sink_block_id>gr_fractional_interpolator_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_fractional_interpolator_xx_0</source_block_id> + <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> -- cgit v1.2.3 From af609b2ba2abcff069412e1348156dcec7981ff8 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 17:49:49 -0700 Subject: Adding more outputs for debugging. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index b67efc52d4..79779c91cf 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -209,9 +209,12 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, gr_complex *in = (gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) output_items[0]; - float *err; - if(ninput_items.size() == 2) + float *err, *outrate, *outk; + if(output_items.size() > 2) { err = (float *) output_items[1]; + outrate = (float*)output_items[2]; + outk = (float*)output_items[3]; + } if (d_updated) { d_updated = false; @@ -230,9 +233,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, out[i] = d_filters[filtnum]->filter(&in[count]); error = (out[i] * d_diff_filters[filtnum]->filter(&in[count])).real(); - if(ninput_items.size() == 2) - err[i] = error; - d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; while(d_k >= d_nfilters) { @@ -247,8 +247,14 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, i++; count += d_sps; - printf("error: %f k: %f rate: %f\n", - error, d_k, d_rate); + if(output_items.size() > 2) { + err[i] = error; + outrate[i] = d_rate; + outk[i] = d_k; + } + + //printf("error: %f k: %f rate: %f\n", + // error, d_k, d_rate); } // Set the start index at the next entrance to the work function -- cgit v1.2.3 From d3c44ab5ea730c973588e5a590543df01372109c Mon Sep 17 00:00:00 2001 From: Matt Ettus <matt@ettus.com> Date: Tue, 6 Oct 2009 17:56:20 -0700 Subject: added more ports --- gnuradio-examples/grc/pam_timing.grc | 261 ++++++++++++++++++++--------------- grc/blocks/gr_pfb_clock_sync.xml | 10 ++ 2 files changed, 158 insertions(+), 113 deletions(-) diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index d357a1b550..45fcbc0ec3 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 17:40:15 2009</timestamp> + <timestamp>Tue Oct 6 17:50:59 2009</timestamp> <block> <key>options</key> <param> @@ -122,37 +122,6 @@ <value>0</value> </param> </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(505, 128)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable_slider</key> <param> @@ -453,54 +422,80 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>gain</value> + <value>gr_uchar_to_float_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Gain</value> + <key>_coordinate</key> + <value>(261, 107)</value> </param> <param> - <key>value</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_float_to_complex</key> <param> - <key>min</key> - <value>0</value> + <key>id</key> + <value>gr_float_to_complex_0</value> </param> <param> - <key>max</key> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> <value>1</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>_coordinate</key> + <value>(380, 553)</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>gr_pfb_clock_sync_ccf</key> <param> - <key>converver</key> - <value>float_converter</value> + <key>id</key> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>sps</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>gain</value> + </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> </param> <param> <key>_coordinate</key> - <value>(537, 278)</value> + <value>(341, 777)</value> </param> <param> <key>_rotation</key> @@ -508,18 +503,53 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>gr_fractional_interpolator_xx</key> <param> <key>id</key> - <value>gr_uchar_to_float_0</value> + <value>gr_fractional_interpolator_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>phase_shift</key> + <value>0.5</value> + </param> + <param> + <key>interp_ratio</key> + <value>1</value> + </param> <param> <key>_coordinate</key> - <value>(261, 107)</value> + <value>(349, 662)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>320000</value> + </param> + <param> + <key>_coordinate</key> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -578,7 +608,7 @@ </param> <param> <key>_coordinate</key> - <value>(750, 128)</value> + <value>(789, 258)</value> </param> <param> <key>_rotation</key> @@ -586,46 +616,42 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>gain</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> + <key>label</key> + <value>Gain</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>0</value> </param> <param> - <key>v_scale</key> + <key>min</key> <value>0</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>max</key> + <value>1</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -637,7 +663,7 @@ </param> <param> <key>_coordinate</key> - <value>(643, 853)</value> + <value>(757, -1)</value> </param> <param> <key>_rotation</key> @@ -645,22 +671,30 @@ </param> </block> <block> - <key>gr_float_to_complex</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>gr_float_to_complex_0</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> <param> <key>vlen</key> <value>1</value> </param> <param> <key>_coordinate</key> - <value>(380, 553)</value> + <value>(482, 130)</value> </param> <param> <key>_rotation</key> @@ -668,38 +702,34 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>notebook</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>gain</value> + <key>style</key> + <value>wx.NB_TOP</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>labels</key> + <value>['error', 'phase', 'freq']</value> </param> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>init_phase</key> - <value>14</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(341, 777)</value> + <value>(851, 531)</value> </param> <param> <key>_rotation</key> @@ -707,10 +737,10 @@ </param> </block> <block> - <key>gr_fractional_interpolator_xx</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_fractional_interpolator_xx_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> @@ -718,42 +748,47 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> - <key>phase_shift</key> - <value>0.5</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>interp_ratio</key> - <value>1</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(349, 662)</value> + <key>v_scale</key> + <value>0</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>samp_rate</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>value</key> - <value>320000</value> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,0</value> </param> <param> <key>_coordinate</key> - <value>(128, 9)</value> + <value>(724, 796)</value> </param> <param> <key>_rotation</key> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index 9e2f3fa9c7..3a066c23c1 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -50,4 +50,14 @@ <type>float</type> <optional>1</optional> </source> + <source> + <name>rate</name> + <type>float</type> + <optional>1</optional> + </source> + <source> + <name>phase</name> + <type>float</type> + <optional>1</optional> + </source> </block> -- cgit v1.2.3 From 10a573eb24a2c78c090a7a62614a8610f4ee17e1 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 17:56:25 -0700 Subject: Adding ports to GRC file for new debug outputs --- grc/blocks/gr_pfb_clock_sync.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index 9e2f3fa9c7..3a066c23c1 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -50,4 +50,14 @@ <type>float</type> <optional>1</optional> </source> + <source> + <name>rate</name> + <type>float</type> + <optional>1</optional> + </source> + <source> + <name>phase</name> + <type>float</type> + <optional>1</optional> + </source> </block> -- cgit v1.2.3 From ccca4c7d043bd5e14e48c67880da498c7d578734 Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Tue, 6 Oct 2009 18:00:21 -0700 Subject: moved grc examples to gnuradio-examples/grc --- config/grc_gnuradio_examples.m4 | 11 +- config/grc_grc.m4 | 1 - gnuradio-examples/Makefile.am | 4 +- gnuradio-examples/grc/.gitignore | 2 + gnuradio-examples/grc/Makefile.am | 61 + gnuradio-examples/grc/audio/.gitignore | 2 + gnuradio-examples/grc/audio/cvsd_sweep.grc | 918 +++++++++ gnuradio-examples/grc/audio/dial_tone.grc | 375 ++++ gnuradio-examples/grc/demod/mpsk_demod.grc | 586 ++++++ gnuradio-examples/grc/demod/pam_timing.grc | 616 ++++++ gnuradio-examples/grc/pam_timing.grc | 616 ------ gnuradio-examples/grc/simple/.gitignore | 2 + gnuradio-examples/grc/simple/ber_simulation.grc | 564 ++++++ gnuradio-examples/grc/simple/dpsk_loopback.grc | 450 +++++ gnuradio-examples/grc/simple/var_sink_taps.grc | 488 +++++ gnuradio-examples/grc/simple/variable_config.grc | 329 ++++ gnuradio-examples/grc/trellis/.gitignore | 2 + .../grc/trellis/interference_cancellation.grc | 2072 ++++++++++++++++++++ gnuradio-examples/grc/trellis/readme.txt | 16 + gnuradio-examples/grc/usrp/.gitignore | 2 + gnuradio-examples/grc/usrp/usrp2_const_wave.grc | 252 +++ gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc | 693 +++++++ gnuradio-examples/grc/usrp/usrp2_fft.grc | 264 +++ .../grc/usrp/usrp_two_tone_loopback.grc | 749 +++++++ gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc | 466 +++++ gnuradio-examples/grc/xmlrpc/.gitignore | 2 + gnuradio-examples/grc/xmlrpc/readme.txt | 18 + gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc | 312 +++ .../grc/xmlrpc/xmlrpc_client_script.py | 23 + gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc | 384 ++++ grc/Makefile.am | 1 - grc/examples/.gitignore | 2 - grc/examples/Makefile.am | 60 - grc/examples/audio/.gitignore | 2 - grc/examples/audio/cvsd_sweep.grc | 918 --------- grc/examples/audio/dial_tone.grc | 375 ---- grc/examples/demod/mpsk_demod.grc | 586 ------ grc/examples/simple/.gitignore | 2 - grc/examples/simple/ber_simulation.grc | 564 ------ grc/examples/simple/dpsk_loopback.grc | 450 ----- grc/examples/simple/var_sink_taps.grc | 488 ----- grc/examples/simple/variable_config.grc | 329 ---- grc/examples/trellis/.gitignore | 2 - grc/examples/trellis/interference_cancellation.grc | 2072 -------------------- grc/examples/trellis/readme.txt | 16 - grc/examples/usrp/.gitignore | 2 - grc/examples/usrp/usrp2_const_wave.grc | 252 --- grc/examples/usrp/usrp2_dpsk_mod.grc | 693 ------- grc/examples/usrp/usrp2_fft.grc | 264 --- grc/examples/usrp/usrp_two_tone_loopback.grc | 749 ------- grc/examples/usrp/usrp_wbfm_receive.grc | 466 ----- grc/examples/xmlrpc/.gitignore | 2 - grc/examples/xmlrpc/readme.txt | 18 - grc/examples/xmlrpc/xmlrpc_client.grc | 312 --- grc/examples/xmlrpc/xmlrpc_client_script.py | 23 - grc/examples/xmlrpc/xmlrpc_server.grc | 384 ---- 56 files changed, 9656 insertions(+), 9656 deletions(-) create mode 100644 gnuradio-examples/grc/.gitignore create mode 100644 gnuradio-examples/grc/Makefile.am create mode 100644 gnuradio-examples/grc/audio/.gitignore create mode 100644 gnuradio-examples/grc/audio/cvsd_sweep.grc create mode 100644 gnuradio-examples/grc/audio/dial_tone.grc create mode 100644 gnuradio-examples/grc/demod/mpsk_demod.grc create mode 100644 gnuradio-examples/grc/demod/pam_timing.grc delete mode 100644 gnuradio-examples/grc/pam_timing.grc create mode 100644 gnuradio-examples/grc/simple/.gitignore create mode 100644 gnuradio-examples/grc/simple/ber_simulation.grc create mode 100644 gnuradio-examples/grc/simple/dpsk_loopback.grc create mode 100644 gnuradio-examples/grc/simple/var_sink_taps.grc create mode 100644 gnuradio-examples/grc/simple/variable_config.grc create mode 100644 gnuradio-examples/grc/trellis/.gitignore create mode 100644 gnuradio-examples/grc/trellis/interference_cancellation.grc create mode 100644 gnuradio-examples/grc/trellis/readme.txt create mode 100644 gnuradio-examples/grc/usrp/.gitignore create mode 100644 gnuradio-examples/grc/usrp/usrp2_const_wave.grc create mode 100644 gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc create mode 100644 gnuradio-examples/grc/usrp/usrp2_fft.grc create mode 100644 gnuradio-examples/grc/usrp/usrp_two_tone_loopback.grc create mode 100644 gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc create mode 100644 gnuradio-examples/grc/xmlrpc/.gitignore create mode 100644 gnuradio-examples/grc/xmlrpc/readme.txt create mode 100644 gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc create mode 100644 gnuradio-examples/grc/xmlrpc/xmlrpc_client_script.py create mode 100644 gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc delete mode 100644 grc/examples/.gitignore delete mode 100644 grc/examples/Makefile.am delete mode 100644 grc/examples/audio/.gitignore delete mode 100644 grc/examples/audio/cvsd_sweep.grc delete mode 100644 grc/examples/audio/dial_tone.grc delete mode 100644 grc/examples/demod/mpsk_demod.grc delete mode 100644 grc/examples/simple/.gitignore delete mode 100644 grc/examples/simple/ber_simulation.grc delete mode 100644 grc/examples/simple/dpsk_loopback.grc delete mode 100644 grc/examples/simple/var_sink_taps.grc delete mode 100644 grc/examples/simple/variable_config.grc delete mode 100644 grc/examples/trellis/.gitignore delete mode 100644 grc/examples/trellis/interference_cancellation.grc delete mode 100644 grc/examples/trellis/readme.txt delete mode 100644 grc/examples/usrp/.gitignore delete mode 100644 grc/examples/usrp/usrp2_const_wave.grc delete mode 100644 grc/examples/usrp/usrp2_dpsk_mod.grc delete mode 100644 grc/examples/usrp/usrp2_fft.grc delete mode 100644 grc/examples/usrp/usrp_two_tone_loopback.grc delete mode 100644 grc/examples/usrp/usrp_wbfm_receive.grc delete mode 100644 grc/examples/xmlrpc/.gitignore delete mode 100644 grc/examples/xmlrpc/readme.txt delete mode 100644 grc/examples/xmlrpc/xmlrpc_client.grc delete mode 100644 grc/examples/xmlrpc/xmlrpc_client_script.py delete mode 100644 grc/examples/xmlrpc/xmlrpc_server.grc diff --git a/config/grc_gnuradio_examples.m4 b/config/grc_gnuradio_examples.m4 index 3225f3ab51..685761ff36 100644 --- a/config/grc_gnuradio_examples.m4 +++ b/config/grc_gnuradio_examples.m4 @@ -25,15 +25,16 @@ AC_DEFUN([GRC_GNURADIO_EXAMPLES],[ AC_CONFIG_FILES([ \ gnuradio-examples/Makefile \ - gnuradio-examples/c++/Makefile \ - gnuradio-examples/python/Makefile \ - gnuradio-examples/python/apps/hf_explorer/Makefile \ + gnuradio-examples/c++/Makefile \ + gnuradio-examples/python/Makefile \ + gnuradio-examples/grc/Makefile \ + gnuradio-examples/python/apps/hf_explorer/Makefile \ gnuradio-examples/python/apps/hf_radio/Makefile \ gnuradio-examples/python/apps/Makefile \ gnuradio-examples/python/audio/Makefile \ gnuradio-examples/python/digital/Makefile \ gnuradio-examples/python/digital_voice/Makefile \ - gnuradio-examples/python/digital-bert/Makefile \ + gnuradio-examples/python/digital-bert/Makefile \ gnuradio-examples/python/mp-sched/Makefile \ gnuradio-examples/python/multi-antenna/Makefile \ gnuradio-examples/python/multi_usrp/Makefile \ @@ -41,7 +42,7 @@ AC_DEFUN([GRC_GNURADIO_EXAMPLES],[ gnuradio-examples/python/ofdm/Makefile \ gnuradio-examples/python/pfb/Makefile \ gnuradio-examples/python/usrp/Makefile \ - gnuradio-examples/python/usrp2/Makefile \ + gnuradio-examples/python/usrp2/Makefile \ ]) GRC_BUILD_CONDITIONAL(gnuradio-examples) diff --git a/config/grc_grc.m4 b/config/grc_grc.m4 index 7ee009faee..16720b8fed 100644 --- a/config/grc_grc.m4 +++ b/config/grc_grc.m4 @@ -50,7 +50,6 @@ AC_DEFUN([GRC_GRC],[ grc/Makefile \ grc/base/Makefile \ grc/blocks/Makefile \ - grc/examples/Makefile \ grc/freedesktop/Makefile \ grc/grc_gnuradio/Makefile \ grc/gui/Makefile \ diff --git a/gnuradio-examples/Makefile.am b/gnuradio-examples/Makefile.am index 360ae8b41f..9ea890c120 100644 --- a/gnuradio-examples/Makefile.am +++ b/gnuradio-examples/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2007 Free Software Foundation, Inc. +# Copyright 2004,2007,2009 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -23,5 +23,5 @@ include $(top_srcdir)/Makefile.common SUBDIRS = c++ if PYTHON -SUBDIRS += python +SUBDIRS += python grc endif diff --git a/gnuradio-examples/grc/.gitignore b/gnuradio-examples/grc/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/Makefile.am b/gnuradio-examples/grc/Makefile.am new file mode 100644 index 0000000000..97417c5a22 --- /dev/null +++ b/gnuradio-examples/grc/Makefile.am @@ -0,0 +1,61 @@ +# +# 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 + +grc_examples_prefix = $(exampledir)/grc + +audiodatadir = $(grc_examples_prefix)/audio +dist_audiodata_DATA = \ + audio/dial_tone.grc \ + audio/cvsd_sweep.grc + +demoddatadir = $(grc_examples_prefix)/demod +dist_demoddata_DATA = \ + demod/mpsk_demod.grc \ + demod/pam_timing.grc + +simpledatadir = $(grc_examples_prefix)/simple +dist_simpledata_DATA = \ + simple/ber_simulation.grc \ + simple/dpsk_loopback.grc \ + simple/variable_config.grc \ + simple/var_sink_taps.grc + +trellisdatadir = $(grc_examples_prefix)/trellis +dist_trellisdata_DATA = \ + trellis/readme.txt \ + trellis/interference_cancellation.grc + +usrpdatadir = $(grc_examples_prefix)/usrp +dist_usrpdata_DATA = \ + usrp/usrp2_const_wave.grc \ + usrp/usrp2_dpsk_mod.grc \ + usrp/usrp2_fft.grc \ + usrp/usrp_two_tone_loopback.grc \ + usrp/usrp_wbfm_receive.grc + +xmlrpcdatadir = $(grc_examples_prefix)/xmlrpc +dist_xmlrpcdata_DATA = \ + xmlrpc/readme.txt \ + xmlrpc/xmlrpc_client.grc \ + xmlrpc/xmlrpc_client_script.py\ + xmlrpc/xmlrpc_server.grc diff --git a/gnuradio-examples/grc/audio/.gitignore b/gnuradio-examples/grc/audio/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/audio/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/audio/cvsd_sweep.grc b/gnuradio-examples/grc/audio/cvsd_sweep.grc new file mode 100644 index 0000000000..8d0b385cef --- /dev/null +++ b/gnuradio-examples/grc/audio/cvsd_sweep.grc @@ -0,0 +1,918 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Sat Sep 19 20:30:08 2009</timestamp> + <block> + <key>import</key> + <param> + <key>id</key> + <value>import_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>import math</value> + </param> + <param> + <key>_coordinate</key> + <value>(157, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_cvsd_decode</key> + <param> + <key>id</key> + <value>blks2_cvsd_decode_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>resample</key> + <value>resample</value> + </param> + <param> + <key>bw</key> + <value>bw</value> + </param> + <param> + <key>_coordinate</key> + <value>(887, 340)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>tri_source</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_TRI_WAVE</value> + </param> + <param> + <key>freq</key> + <value>0.05</value> + </param> + <param> + <key>amp</key> + <value>0.5</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(44, 316)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>throttle</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>audio_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(238, 348)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_vco_f</key> + <param> + <key>id</key> + <value>vco</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>sensitivity</key> + <value>audio_rate*2*math.pi</value> + </param> + <param> + <key>amplitude</key> + <value>0.9</value> + </param> + <param> + <key>_coordinate</key> + <value>(427, 332)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_cvsd_encode</key> + <param> + <key>id</key> + <value>enc</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>resample</key> + <value>resample</value> + </param> + <param> + <key>bw</key> + <value>bw</value> + </param> + <param> + <key>_coordinate</key> + <value>(655, 340)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_packed_to_unpacked_xx</key> + <param> + <key>id</key> + <value>p2u</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>bits_per_chunk</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_MSB_FIRST</value> + </param> + <param> + <key>_coordinate</key> + <value>(648, 415)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>gr_char_to_float</key> + <param> + <key>id</key> + <value>c2f</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(676, 483)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_sink</key> + <param> + <key>id</key> + <value>audio_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>device_name</key> + <value>plughw:0,0</value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1127, 340)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>audio_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>8000</value> + </param> + <param> + <key>_coordinate</key> + <value>(251, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>resample</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>8</value> + </param> + <param> + <key>_coordinate</key> + <value>(344, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>bw</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>0.5</value> + </param> + <param> + <key>_coordinate</key> + <value>(431, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>notebook</key> + <param> + <key>id</key> + <value>displays</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>style</key> + <value>wx.NB_TOP</value> + </param> + <param> + <key>labels</key> + <value>['Original','Encoded','Decoded']</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(12, 106)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>orig_fft</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Original Spectrum</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 0</value> + </param> + <param> + <key>_coordinate</key> + <value>(415, 97)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>orig_scope</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Original Waveform</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 0</value> + </param> + <param> + <key>_coordinate</key> + <value>(414, 425)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>enc_fft</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Encoded Spectrum</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate*resample</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>8</value> + </param> + <param> + <key>ref_level</key> + <value>10</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(610, 551)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>enc_scope</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Encoded Waveform</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate*resample</value> + </param> + <param> + <key>v_scale</key> + <value>0.5</value> + </param> + <param> + <key>t_scale</key> + <value>20.0/(audio_rate*resample)</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(858, 591)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>dec_fft</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Decoded Spectrum</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>5</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>10</value> + </param> + <param> + <key>ref_scale</key> + <value>0.1</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(891, 98)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>dec_scope</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Decoded Waveform</value> + </param> + <param> + <key>samp_rate</key> + <value>audio_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 1</value> + </param> + <param> + <key>notebook</key> + <value>displays, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(889, 422)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>options</key> + <param> + <key>id</key> + <value>cvsd_sweep</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>CVSD Vocoder Test</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>vco</source_block_id> + <sink_block_id>orig_fft</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>tri_source</source_block_id> + <sink_block_id>throttle</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>throttle</source_block_id> + <sink_block_id>vco</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>vco</source_block_id> + <sink_block_id>enc</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>enc</source_block_id> + <sink_block_id>blks2_cvsd_decode_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>vco</source_block_id> + <sink_block_id>orig_scope</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_cvsd_decode_0</source_block_id> + <sink_block_id>dec_fft</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_cvsd_decode_0</source_block_id> + <sink_block_id>dec_scope</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_cvsd_decode_0</source_block_id> + <sink_block_id>audio_sink</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>enc</source_block_id> + <sink_block_id>p2u</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>p2u</source_block_id> + <sink_block_id>c2f</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>c2f</source_block_id> + <sink_block_id>enc_fft</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>c2f</source_block_id> + <sink_block_id>enc_scope</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/audio/dial_tone.grc b/gnuradio-examples/grc/audio/dial_tone.grc new file mode 100644 index 0000000000..ac8cbef279 --- /dev/null +++ b/gnuradio-examples/grc/audio/dial_tone.grc @@ -0,0 +1,375 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Jul 24 14:27:48 2008</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>dial_tone</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Dial Tone</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>example flow graph</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>3</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(513, 277)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_sink</key> + <param> + <key>id</key> + <value>audio_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>32000</value> + </param> + <param> + <key>device_name</key> + <value/> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(699, 112)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(238, 380)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>440</value> + </param> + <param> + <key>amp</key> + <value>ampl</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 208)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>350</value> + </param> + <param> + <key>amp</key> + <value>ampl</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(240, 38)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Volume</value> + </param> + <param> + <key>value</key> + <value>.4</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>.5</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(634, 413)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Noise</value> + </param> + <param> + <key>value</key> + <value>.005</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>.2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(443, 412)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(11, 171)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>gr_sig_source_x0</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sig_source_x</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>2</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx</source_block_id> + <sink_block_id>audio_sink</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/demod/mpsk_demod.grc b/gnuradio-examples/grc/demod/mpsk_demod.grc new file mode 100644 index 0000000000..08108dcba0 --- /dev/null +++ b/gnuradio-examples/grc/demod/mpsk_demod.grc @@ -0,0 +1,586 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Mon Oct 5 18:34:52 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>mpsk_demod</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>MPSK Demod Demo</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2**8</value> + </param> + <param> + <key>num_samps</key> + <value>10000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(155, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_dxpsk_mod</key> + <param> + <key>id</key> + <value>blks2_dxpsk_mod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dqpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>gray_code</key> + <value>True</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(391, 54)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(654, 142)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samps_per_sym</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>_coordinate</key> + <value>(7, 89)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_channel_model</key> + <param> + <key>id</key> + <value>gr_channel_model_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>noise_voltage</key> + <value>noise</value> + </param> + <param> + <key>freq_offset</key> + <value>freq_off</value> + </param> + <param> + <key>epsilon</key> + <value>1.0</value> + </param> + <param> + <key>taps</key> + <value>1.0</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(487, 282)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Noise</value> + </param> + <param> + <key>value</key> + <value>.1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(259, 353)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq_off</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Freq Offset</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>-.5</value> + </param> + <param> + <key>max</key> + <value>.5</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(126, 345)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>notebook</key> + <param> + <key>id</key> + <value>notebook</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>style</key> + <value>wx.NB_TOP</value> + </param> + <param> + <key>labels</key> + <value>['Constellation', 'Spectrum']</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(520, 407)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_constellationsink2</key> + <param> + <key>id</key> + <value>wxgui_constellationsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Constellation Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>frame_rate</key> + <value>5</value> + </param> + <param> + <key>const_size</key> + <value>2048</value> + </param> + <param> + <key>M</key> + <value>4</value> + </param> + <param> + <key>theta</key> + <value>0</value> + </param> + <param> + <key>alpha</key> + <value>0.005</value> + </param> + <param> + <key>fmax</key> + <value>0.06</value> + </param> + <param> + <key>mu</key> + <value>0.5</value> + </param> + <param> + <key>gain_mu</key> + <value>0.005</value> + </param> + <param> + <key>symbol_rate</key> + <value>samp_rate/4.</value> + </param> + <param> + <key>omega_limit</key> + <value>0.005</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook, 0</value> + </param> + <param> + <key>_coordinate</key> + <value>(824, 212)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(847, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_constellationsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_dxpsk_mod_0</source_block_id> + <sink_block_id>gr_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_channel_model_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc new file mode 100644 index 0000000000..989c795a9e --- /dev/null +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -0,0 +1,616 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Oct 6 14:19:10 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>top_block</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value></value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value></value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(128, 9)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_uchar_to_float</key> + <param> + <key>id</key> + <value>gr_uchar_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(270, 115)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 80)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>const_source_x</key> + <param> + <key>id</key> + <value>const_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> + </param> + <param> + <key>_coordinate</key> + <value>(179, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>spb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Samples Per Bit</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>choices</key> + <value>[1, 2, 3, 4, 5, 6, 7, 8]</value> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <key>type</key> + <value>drop_down</value> + </param> + <param> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 834)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(750, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(505, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_amp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>noise_amp</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(600, -1)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(561, 284)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_amp</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(45, 497)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>2*spb</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(50, 295)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(374, 389)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>1</value> + </param> + <param> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(376, 598)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_uchar_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_uchar_to_float_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>const_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc deleted file mode 100644 index 989c795a9e..0000000000 --- a/gnuradio-examples/grc/pam_timing.grc +++ /dev/null @@ -1,616 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Tue Oct 6 14:19:10 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>top_block</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value></value> - </param> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>run_options</key> - <value>prompt</value> - </param> - <param> - <key>run</key> - <value>True</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(128, 9)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_uchar_to_float</key> - <param> - <key>id</key> - <value>gr_uchar_to_float_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(270, 115)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> - </param> - <param> - <key>num_samps</key> - <value>1000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(13, 80)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>const_source_x</key> - <param> - <key>id</key> - <value>const_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>const</key> - <value>-0.5</value> - </param> - <param> - <key>_coordinate</key> - <value>(179, 160)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_chooser</key> - <param> - <key>id</key> - <value>spb</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Samples Per Bit</value> - </param> - <param> - <key>value</key> - <value>4</value> - </param> - <param> - <key>choices</key> - <value>[1, 2, 3, 4, 5, 6, 7, 8]</value> - </param> - <param> - <key>labels</key> - <value>[]</value> - </param> - <param> - <key>type</key> - <value>drop_down</value> - </param> - <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(0, 834)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(750, 128)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(505, 128)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>noise_amp</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>noise_amp</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1.0</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(600, -1)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(561, 284)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noise_amp</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(45, 497)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>2*spb</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb</value> - </param> - <param> - <key>_coordinate</key> - <value>(50, 295)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(374, 389)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>1</value> - </param> - <param> - <key>gain</key> - <value>1</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb</value> - </param> - <param> - <key>_coordinate</key> - <value>(376, 598)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>gr_uchar_to_float_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_uchar_to_float_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>const_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_0</source_block_id> - <sink_block_id>root_raised_cosine_filter_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>root_raised_cosine_filter_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_noise_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_0_0</source_block_id> - <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>root_raised_cosine_filter_0_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/gnuradio-examples/grc/simple/.gitignore b/gnuradio-examples/grc/simple/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/simple/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/simple/ber_simulation.grc b/gnuradio-examples/grc/simple/ber_simulation.grc new file mode 100644 index 0000000000..618add29c3 --- /dev/null +++ b/gnuradio-examples/grc/simple/ber_simulation.grc @@ -0,0 +1,564 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Mar 19 11:08:59 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>ber_sim</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>BER Simulation</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Adjust the noise and constellation... see what happens!</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(235, 379)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_chunks_to_symbols_xx</key> + <param> + <key>id</key> + <value>gr_chunks_to_symbols_xx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>in_type</key> + <value>byte</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>const</value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(360, 237)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_numbersink2</key> + <param> + <key>id</key> + <value>wxgui_numbersink2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>BER</value> + </param> + <param> + <key>units</key> + <value>%</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>base_value</key> + <value>0.0</value> + </param> + <param> + <key>min_value</key> + <value>0.0</value> + </param> + <param> + <key>max_value</key> + <value>1.0</value> + </param> + <param> + <key>factor</key> + <value>100</value> + </param> + <param> + <key>decimal_places</key> + <value>4</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>number_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>show_gauge</key> + <value>False</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1062, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(397, 27)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_error_rate</key> + <param> + <key>id</key> + <value>blks2_error_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>'BER'</value> + </param> + <param> + <key>win_size</key> + <value>1000000</value> + </param> + <param> + <key>bits_per_symbol</key> + <value>int(math.log(len(const))/math.log(2))</value> + </param> + <param> + <key>_coordinate</key> + <value>(670, 41)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_constellation_decoder_cb</key> + <param> + <key>id</key> + <value>gr_constellation_decoder_cb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>sym_position</key> + <value>const</value> + </param> + <param> + <key>sym_value_out</key> + <value>range(len(const))</value> + </param> + <param> + <key>_coordinate</key> + <value>(708, 224)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>len(const)</value> + </param> + <param> + <key>num_samps</key> + <value>1000000</value> + </param> + <param> + <key>repeat</key> + <value>False</value> + </param> + <param> + <key>_coordinate</key> + <value>(15, 244)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>noise</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>.25</value> + </param> + <param> + <key>_coordinate</key> + <value>(18, 386)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>const</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>1+1j, 1-1j, -1-1j, -1+1j</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 461)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>50e3</value> + </param> + <param> + <key>_coordinate</key> + <value>(20, 168)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>import</key> + <param> + <key>id</key> + <value>import</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>import math</value> + </param> + <param> + <key>_coordinate</key> + <value>(138, 168)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(652, 395)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>"Constellation: "+str(const)</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value>2, 0, 1, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(828, 368)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blks2_error_rate</source_block_id> + <sink_block_id>wxgui_numbersink2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle</source_block_id> + <sink_block_id>blks2_error_rate</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_constellation_decoder_cb</source_block_id> + <sink_block_id>blks2_error_rate</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx</source_block_id> + <sink_block_id>gr_constellation_decoder_cb</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_chunks_to_symbols_xx</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>random_source_x</source_block_id> + <sink_block_id>gr_throttle</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x</source_block_id> + <sink_block_id>gr_chunks_to_symbols_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/simple/dpsk_loopback.grc b/gnuradio-examples/grc/simple/dpsk_loopback.grc new file mode 100644 index 0000000000..6a507c98da --- /dev/null +++ b/gnuradio-examples/grc/simple/dpsk_loopback.grc @@ -0,0 +1,450 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Mar 17 12:53:37 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>dpsk_loopback</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>DPSK Loopback</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>gnuradio flow graph</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_dxpsk_mod</key> + <param> + <key>id</key> + <value>blks2_dxpsk_mod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dbpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>2</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>gray_code</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(426, 295)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>10000</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency (Hz)</value> + </param> + <param> + <key>value</key> + <value>500</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>samp_rate/2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_length</key> + <value>200</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(12, 257)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_packet_encoder</key> + <param> + <key>id</key> + <value>blks2_packet_encoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>2</value> + </param> + <param> + <key>bits_per_symbol</key> + <value>1</value> + </param> + <param> + <key>access_code</key> + <value></value> + </param> + <param> + <key>pad_for_usrp</key> + <value>True</value> + </param> + <param> + <key>payload_length</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(216, 260)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(225, 174)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>freq</value> + </param> + <param> + <key>amp</key> + <value>1</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(203, 8)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_packet_decoder</key> + <param> + <key>id</key> + <value>blks2_packet_decoder_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>access_code</key> + <value></value> + </param> + <param> + <key>threshold</key> + <value>-1</value> + </param> + <param> + <key>_coordinate</key> + <value>(551, 65)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>frame_decim</key> + <value>15</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>1./freq</value> + </param> + <param> + <key>marker</key> + <value>set_format_line</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(769, 12)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_dxpsk_demod</key> + <param> + <key>id</key> + <value>blks2_dxpsk_demod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dbpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>2</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>costas_alpha</key> + <value>0.175</value> + </param> + <param> + <key>gain_mu</key> + <value>0.175</value> + </param> + <param> + <key>mu</key> + <value>0.5</value> + </param> + <param> + <key>omega_relative_limit</key> + <value>0.005</value> + </param> + <param> + <key>gray_code</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(691, 219)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>blks2_dxpsk_mod_0</source_block_id> + <sink_block_id>blks2_dxpsk_demod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_dxpsk_demod_0</source_block_id> + <sink_block_id>blks2_packet_decoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_packet_encoder_0</source_block_id> + <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sig_source_x_0</source_block_id> + <sink_block_id>gr_throttle_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0_0</source_block_id> + <sink_block_id>blks2_packet_encoder_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_packet_decoder_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/simple/var_sink_taps.grc b/gnuradio-examples/grc/simple/var_sink_taps.grc new file mode 100644 index 0000000000..07207850ee --- /dev/null +++ b/gnuradio-examples/grc/simple/var_sink_taps.grc @@ -0,0 +1,488 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue May 19 16:45:51 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>var_sink_taps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Variable Sink + Taps</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>gnuradio flow graph</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>1</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(619, 36)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_fir_filter_xxx</key> + <param> + <key>id</key> + <value>gr_fir_filter_xxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ccc</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>taps</key> + <value>dest_taps</value> + </param> + <param> + <key>_coordinate</key> + <value>(831, 47)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(999, 198)</value> + </param> + <param> + <key>_rotation</key> + <value>270</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(629, 184)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>import</key> + <param> + <key>id</key> + <value>import_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>from gnuradio.gr import firdes</value> + </param> + <param> + <key>_coordinate</key> + <value>(330, 120)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>dest_taps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>[0]</value> + </param> + <param> + <key>_coordinate</key> + <value>(836, 223)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(831, 130)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>source_taps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>firdes.low_pass(1, samp_rate, 4000, 2000)</value> + </param> + <param> + <key>_coordinate</key> + <value>(397, 191)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>taps_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>_coordinate</key> + <value>(268, 189)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_vector_source_x</key> + <param> + <key>id</key> + <value>gr_vector_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vector</key> + <value>source_taps</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>len(source_taps)</value> + </param> + <param> + <key>_coordinate</key> + <value>(205, 33)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>note</key> + <param> + <key>id</key> + <value>note_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>note</key> + <value>Pass the FIR taps via a variable sink.</value> + </param> + <param> + <key>_coordinate</key> + <value>(14, 141)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>taps_rate</value> + </param> + <param> + <key>vlen</key> + <value>len(source_taps)</value> + </param> + <param> + <key>_coordinate</key> + <value>(440, 41)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_variable_sink_x</key> + <param> + <key>id</key> + <value>blks2_variable_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>variable</key> + <value>dest_taps</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>vlen</key> + <value>len(source_taps)</value> + </param> + <param> + <key>_coordinate</key> + <value>(305, 283)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <connection> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_fir_filter_xxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_fir_filter_xxx_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_vector_source_x_0</source_block_id> + <sink_block_id>gr_throttle</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle</source_block_id> + <sink_block_id>blks2_variable_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/simple/variable_config.grc b/gnuradio-examples/grc/simple/variable_config.grc new file mode 100644 index 0000000000..95c287cce7 --- /dev/null +++ b/gnuradio-examples/grc/simple/variable_config.grc @@ -0,0 +1,329 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Jun 25 10:56:04 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>variable_config_demo</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Variable Config Block Demonstration</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Save/Load freq from a config file.</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>autostart</key> + <value>True</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_config</key> + <param> + <key>id</key> + <value>freq_init</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>1000</value> + </param> + <param> + <key>type</key> + <value>real</value> + </param> + <param> + <key>config_file</key> + <value>config.conf</value> + </param> + <param> + <key>section</key> + <value>main</value> + </param> + <param> + <key>option</key> + <value>freq</value> + </param> + <param> + <key>writeback</key> + <value>freq</value> + </param> + <param> + <key>_coordinate</key> + <value>(255, 17)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency (Hz)</value> + </param> + <param> + <key>value</key> + <value>freq_init</value> + </param> + <param> + <key>min</key> + <value>-samp_rate/2</value> + </param> + <param> + <key>max</key> + <value>samp_rate/2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(429, 24)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(392, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>freq</value> + </param> + <param> + <key>amp</key> + <value>1</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(148, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(671, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>gr_sig_source_x_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/trellis/.gitignore b/gnuradio-examples/grc/trellis/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/trellis/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/trellis/interference_cancellation.grc b/gnuradio-examples/grc/trellis/interference_cancellation.grc new file mode 100644 index 0000000000..e93babd787 --- /dev/null +++ b/gnuradio-examples/grc/trellis/interference_cancellation.grc @@ -0,0 +1,2072 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Mar 19 11:22:40 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>int_cancellation</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Superposition Coding</value> + </param> + <param> + <key>author</key> + <value>AA</value> + </param> + <param> + <key>description</key> + <value>gnuradio flow graph</value> + </param> + <param> + <key>window_size</key> + <value>2048, 2048</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>alpha</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>P1/P</value> + </param> + <param> + <key>value</key> + <value>0.6</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_length</key> + <value>200</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(243, 11)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>snr_db</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>P/sigma^2 (dB)</value> + </param> + <param> + <key>value</key> + <value>16</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>20</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_length</key> + <value>200</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(447, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>noisevar</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>10**(-snr_db/10)</value> + </param> + <param> + <key>_coordinate</key> + <value>(637, 13)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(21, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_chunks_to_symbols_xx</key> + <param> + <key>id</key> + <value>gr_chunks_to_symbols_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>in_type</key> + <value>short</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>1,1j,-1j,-1</value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(665, 187)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>alpha**0.5</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(988, 196)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(25, 291)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_chunks_to_symbols_xx</key> + <param> + <key>id</key> + <value>gr_chunks_to_symbols_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>in_type</key> + <value>short</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>1,1j,-1j,-1</value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(660, 311)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>(1-alpha)**0.5</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(994, 319)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1224, 244)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noisevar</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(1146, 369)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(536, 529)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_xx</key> + <param> + <key>id</key> + <value>gr_multiply_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(771, 525)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_short_to_float</key> + <param> + <key>id</key> + <value>gr_short_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(994, 545)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(535, 792)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_xx</key> + <param> + <key>id</key> + <value>gr_multiply_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(785, 779)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_short_to_float</key> + <param> + <key>id</key> + <value>gr_short_to_float_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1005, 798)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_chunks_to_symbols_xx</key> + <param> + <key>id</key> + <value>gr_chunks_to_symbols_xx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>in_type</key> + <value>short</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>1,1j,-1j,-1</value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(405, 998)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>alpha**0.5</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(710, 1008)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(944, 978)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(540, 1141)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_xx</key> + <param> + <key>id</key> + <value>gr_multiply_xx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(796, 1136)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_short_to_float</key> + <param> + <key>id</key> + <value>gr_short_to_float_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1009, 1156)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_chunks_to_symbols_xx</key> + <param> + <key>id</key> + <value>gr_chunks_to_symbols_xx_2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>in_type</key> + <value>short</value> + </param> + <param> + <key>out_type</key> + <value>complex</value> + </param> + <param> + <key>symbol_table</key> + <value>1,1j,-1j,-1</value> + </param> + <param> + <key>dimension</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(420, 1368)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx_2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>(1-alpha)**0.5</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(733, 1374)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(975, 1342)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sub_xx</key> + <param> + <key>id</key> + <value>gr_sub_xx_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>_coordinate</key> + <value>(559, 1536)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_xx</key> + <param> + <key>id</key> + <value>gr_multiply_xx_2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>short</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(771, 1530)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_short_to_float</key> + <param> + <key>id</key> + <value>gr_short_to_float_1_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(1010, 1551)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_numbersink2</key> + <param> + <key>id</key> + <value>wxgui_numbersink2_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>BER 2 (raw)</value> + </param> + <param> + <key>units</key> + <value>BER</value> + </param> + <param> + <key>samp_rate</key> + <value>R</value> + </param> + <param> + <key>base_value</key> + <value>0.0</value> + </param> + <param> + <key>min_value</key> + <value>0</value> + </param> + <param> + <key>max_value</key> + <value>1.0</value> + </param> + <param> + <key>factor</key> + <value>1.0</value> + </param> + <param> + <key>decimal_places</key> + <value>6</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>number_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0.001</value> + </param> + <param> + <key>show_gauge</key> + <value>True</value> + </param> + <param> + <key>grid_pos</key> + <value>0,1,1,1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1260, 659)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_numbersink2</key> + <param> + <key>id</key> + <value>wxgui_numbersink2_3</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>BER 2 (after cancelling user 1)</value> + </param> + <param> + <key>units</key> + <value>BER</value> + </param> + <param> + <key>samp_rate</key> + <value>R</value> + </param> + <param> + <key>base_value</key> + <value>0.0</value> + </param> + <param> + <key>min_value</key> + <value>0</value> + </param> + <param> + <key>max_value</key> + <value>1.0</value> + </param> + <param> + <key>factor</key> + <value>1.0</value> + </param> + <param> + <key>decimal_places</key> + <value>6</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>number_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0.001</value> + </param> + <param> + <key>show_gauge</key> + <value>True</value> + </param> + <param> + <key>grid_pos</key> + <value>1,1,1,1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1262, 1020)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_numbersink2</key> + <param> + <key>id</key> + <value>wxgui_numbersink2_3_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>BER 1 (after cancelling user 2)</value> + </param> + <param> + <key>units</key> + <value>BER</value> + </param> + <param> + <key>samp_rate</key> + <value>R</value> + </param> + <param> + <key>base_value</key> + <value>0.0</value> + </param> + <param> + <key>min_value</key> + <value>0</value> + </param> + <param> + <key>max_value</key> + <value>1.0</value> + </param> + <param> + <key>factor</key> + <value>1.0</value> + </param> + <param> + <key>decimal_places</key> + <value>6</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>number_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0.001</value> + </param> + <param> + <key>show_gauge</key> + <value>True</value> + </param> + <param> + <key>grid_pos</key> + <value>1,0,1,1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1269, 1417)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>R</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>10e3</value> + </param> + <param> + <key>_coordinate</key> + <value>(748, 12)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_encoder_xx</key> + <param> + <key>id</key> + <value>trellis_encoder_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ss</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>init_state</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(334, 190)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_encoder_xx</key> + <param> + <key>id</key> + <value>trellis_encoder_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ss</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>init_state</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(336, 311)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_viterbi_combined_xx</key> + <param> + <key>id</key> + <value>trellis_viterbi_combined_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>c</value> + </param> + <param> + <key>out_type</key> + <value>s</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>block_size</key> + <value>1000</value> + </param> + <param> + <key>init_state</key> + <value>-1</value> + </param> + <param> + <key>final_state</key> + <value>-1</value> + </param> + <param> + <key>dim</key> + <value>1</value> + </param> + <param> + <key>table</key> + <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value> + </param> + <param> + <key>metric_type</key> + <value>trellis.TRELLIS_EUCLIDEAN</value> + </param> + <param> + <key>_coordinate</key> + <value>(79, 501)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_viterbi_combined_xx</key> + <param> + <key>id</key> + <value>trellis_viterbi_combined_xx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>c</value> + </param> + <param> + <key>out_type</key> + <value>s</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>block_size</key> + <value>1000</value> + </param> + <param> + <key>init_state</key> + <value>-1</value> + </param> + <param> + <key>final_state</key> + <value>-1</value> + </param> + <param> + <key>dim</key> + <value>1</value> + </param> + <param> + <key>table</key> + <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value> + </param> + <param> + <key>metric_type</key> + <value>trellis.TRELLIS_EUCLIDEAN</value> + </param> + <param> + <key>_coordinate</key> + <value>(82, 766)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_encoder_xx</key> + <param> + <key>id</key> + <value>trellis_encoder_xx_2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ss</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>init_state</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(89, 998)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_viterbi_combined_xx</key> + <param> + <key>id</key> + <value>trellis_viterbi_combined_xx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>c</value> + </param> + <param> + <key>out_type</key> + <value>s</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>block_size</key> + <value>1000</value> + </param> + <param> + <key>init_state</key> + <value>-1</value> + </param> + <param> + <key>final_state</key> + <value>-1</value> + </param> + <param> + <key>dim</key> + <value>1</value> + </param> + <param> + <key>table</key> + <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value> + </param> + <param> + <key>metric_type</key> + <value>trellis.TRELLIS_EUCLIDEAN</value> + </param> + <param> + <key>_coordinate</key> + <value>(83, 1111)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_encoder_xx</key> + <param> + <key>id</key> + <value>trellis_encoder_xx_2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>ss</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>init_state</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(105, 1367)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>trellis_viterbi_combined_xx</key> + <param> + <key>id</key> + <value>trellis_viterbi_combined_xx_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>c</value> + </param> + <param> + <key>out_type</key> + <value>s</value> + </param> + <param> + <key>fsm_args</key> + <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> + </param> + <param> + <key>block_size</key> + <value>1000</value> + </param> + <param> + <key>init_state</key> + <value>-1</value> + </param> + <param> + <key>final_state</key> + <value>-1</value> + </param> + <param> + <key>dim</key> + <value>1</value> + </param> + <param> + <key>table</key> + <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value> + </param> + <param> + <key>metric_type</key> + <value>trellis.TRELLIS_EUCLIDEAN</value> + </param> + <param> + <key>_coordinate</key> + <value>(75, 1495)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>prefix</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>"../../../"</value> + </param> + <param> + <key>_coordinate</key> + <value>(871, 14)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1400, 262)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_numbersink2</key> + <param> + <key>id</key> + <value>wxgui_numbersink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>BER 1 (raw)</value> + </param> + <param> + <key>units</key> + <value>BER</value> + </param> + <param> + <key>samp_rate</key> + <value>R</value> + </param> + <param> + <key>base_value</key> + <value>0.0</value> + </param> + <param> + <key>min_value</key> + <value>0</value> + </param> + <param> + <key>max_value</key> + <value>1</value> + </param> + <param> + <key>factor</key> + <value>1.0</value> + </param> + <param> + <key>decimal_places</key> + <value>6</value> + </param> + <param> + <key>ref_level</key> + <value>0</value> + </param> + <param> + <key>number_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0.001</value> + </param> + <param> + <key>show_gauge</key> + <value>True</value> + </param> + <param> + <key>grid_pos</key> + <value>0,0,1,1</value> + </param> + <param> + <key>_coordinate</key> + <value>(1267, 410)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>R</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1533, 149)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_1</source_block_id> + <sink_block_id>trellis_encoder_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_encoder_xx_0</source_block_id> + <sink_block_id>gr_chunks_to_symbols_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_encoder_xx_1</source_block_id> + <sink_block_id>gr_chunks_to_symbols_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_chunks_to_symbols_xx_0</source_block_id> + <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>gr_add_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_chunks_to_symbols_xx_1</source_block_id> + <sink_block_id>gr_multiply_const_vxx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_1</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_0</source_block_id> + <sink_block_id>gr_multiply_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_0</source_block_id> + <sink_block_id>gr_multiply_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_xx_0</source_block_id> + <sink_block_id>gr_short_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_short_to_float_0</source_block_id> + <sink_block_id>wxgui_numbersink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_xx_2</source_block_id> + <sink_block_id>gr_short_to_float_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>trellis_encoder_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_1</source_block_id> + <sink_block_id>trellis_viterbi_combined_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_sub_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_1</source_block_id> + <sink_block_id>gr_sub_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_0</source_block_id> + <sink_block_id>gr_sub_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_1</source_block_id> + <sink_block_id>gr_sub_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_1</source_block_id> + <sink_block_id>gr_multiply_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_1</source_block_id> + <sink_block_id>gr_multiply_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_2</source_block_id> + <sink_block_id>trellis_viterbi_combined_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_1</source_block_id> + <sink_block_id>gr_sub_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_encoder_xx_2</source_block_id> + <sink_block_id>gr_chunks_to_symbols_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_chunks_to_symbols_xx_2</source_block_id> + <sink_block_id>gr_multiply_const_vxx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_2</source_block_id> + <sink_block_id>gr_sub_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_1</source_block_id> + <sink_block_id>trellis_encoder_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_xx_1</source_block_id> + <sink_block_id>gr_short_to_float_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_short_to_float_2</source_block_id> + <sink_block_id>wxgui_numbersink2_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_2</source_block_id> + <sink_block_id>gr_sub_xx_3</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_3</source_block_id> + <sink_block_id>gr_multiply_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_3</source_block_id> + <sink_block_id>gr_multiply_xx_1</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_1</source_block_id> + <sink_block_id>trellis_viterbi_combined_xx_2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_1</source_block_id> + <sink_block_id>gr_sub_xx_3</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_short_to_float_1</source_block_id> + <sink_block_id>wxgui_numbersink2_3</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_encoder_xx_2_0</source_block_id> + <sink_block_id>gr_chunks_to_symbols_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_chunks_to_symbols_xx_2_0</source_block_id> + <sink_block_id>gr_multiply_const_vxx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_2</source_block_id> + <sink_block_id>trellis_encoder_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_xx_2_0</source_block_id> + <sink_block_id>gr_short_to_float_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>trellis_viterbi_combined_xx_0_0</source_block_id> + <sink_block_id>gr_sub_xx_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_1_0</source_block_id> + <sink_block_id>gr_multiply_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_1_0</source_block_id> + <sink_block_id>gr_multiply_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_sub_xx_2_0</source_block_id> + <sink_block_id>trellis_viterbi_combined_xx_0_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_short_to_float_1_0</source_block_id> + <sink_block_id>wxgui_numbersink2_3_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_1</source_block_id> + <sink_block_id>gr_sub_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_sub_xx_1_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_2_0</source_block_id> + <sink_block_id>gr_sub_xx_2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx_1</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/trellis/readme.txt b/gnuradio-examples/grc/trellis/readme.txt new file mode 100644 index 0000000000..d620fd6282 --- /dev/null +++ b/gnuradio-examples/grc/trellis/readme.txt @@ -0,0 +1,16 @@ +This is an example of using gr-trellis in grc. + +Two users are transmitting simultaneously using convolutionally encoded QPSK, each with power P1=alpha*P and P2=(1-alpha)*P. +The combined signal is observed in noise and four different receivers are considered: +1) A viterbi decoder decoding user 1 assuming user 2 is noise +2) A viterbi decoder decoding user 2 assuming user 1 is noise +3) A viterbi decoder decoding user 1 first + and then reencoding this signal, subtracting it from the observation + and then running a Viterbi decoder decoding user 2 +4) A viterbi decoder decoding user 2 first + and then reencoding this signal, subtracting it from the observation + and then running a Viterbi decoder decoding user 1 + +You can change the signal to noise ratio P/sigma^2 and the allocation of power to the two users, alpha. + +Enjoy. diff --git a/gnuradio-examples/grc/usrp/.gitignore b/gnuradio-examples/grc/usrp/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/usrp/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/usrp/usrp2_const_wave.grc b/gnuradio-examples/grc/usrp/usrp2_const_wave.grc new file mode 100644 index 0000000000..fdbd7c1f39 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_const_wave.grc @@ -0,0 +1,252 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Wed Apr 15 11:22:56 2009</timestamp> + <block> + <key>const_source_x</key> + <param> + <key>id</key> + <value>const_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>ampl</value> + </param> + <param> + <key>_coordinate</key> + <value>(284, 154)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp2_sink_xxxx</key> + <param> + <key>id</key> + <value>usrp2_sink_xxxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>interface</key> + <value></value> + </param> + <param> + <key>mac_addr</key> + <value></value> + </param> + <param> + <key>interpolation</key> + <value>interp</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq</value> + </param> + <param> + <key>gain</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(493, 106)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>interp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>16</value> + </param> + <param> + <key>_coordinate</key> + <value>(16, 255)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tun_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>USRP2 Freq (Hz)</value> + </param> + <param> + <key>value</key> + <value>2.45e9</value> + </param> + <param> + <key>min</key> + <value>2.4e9</value> + </param> + <param> + <key>max</key> + <value>2.5e9</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_length</key> + <value>200</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(30, 376)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>value</key> + <value>.1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_length</key> + <value>200</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(204, 376)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>options</key> + <param> + <key>id</key> + <value>usrp2_const_wave</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>USRP2 Constant Wave</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Tune USRP2</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>const_source_x_0</source_block_id> + <sink_block_id>usrp2_sink_xxxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc b/gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc new file mode 100644 index 0000000000..e9f9b41ea9 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc @@ -0,0 +1,693 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Wed Apr 15 17:31:00 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>usrp2_dpsk_mod</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>USRP2 DPSK Modulation</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Generate a DPSK signal</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>100e6/interp</value> + </param> + <param> + <key>_coordinate</key> + <value>(52, 166)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp2_sink_xxxx</key> + <param> + <key>id</key> + <value>usrp2_sink_xxxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>interface</key> + <value></value> + </param> + <param> + <key>mac_addr</key> + <value></value> + </param> + <param> + <key>interpolation</key> + <value>interp</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq</value> + </param> + <param> + <key>gain</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(1059, 56)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>const</key> + <value>ampl</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(679, 58)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_dxpsk_mod</key> + <param> + <key>id</key> + <value>blks2_dxpsk_mod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dqpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>gray_code</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(468, 55)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>interp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>100</value> + </param> + <param> + <key>_coordinate</key> + <value>(31, 256)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samps_per_sym</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>8</value> + </param> + <param> + <key>_coordinate</key> + <value>(126, 250)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>random_source_x</key> + <param> + <key>id</key> + <value>random_source_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>256</value> + </param> + <param> + <key>num_samps</key> + <value>1000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>_coordinate</key> + <value>(255, 39)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>value</key> + <value>.1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(246, 372)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>rx_freq_off</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>RX Freq Offset (Hz)</value> + </param> + <param> + <key>value</key> + <value>-20e3</value> + </param> + <param> + <key>min</key> + <value>-50e3</value> + </param> + <param> + <key>max</key> + <value>+50e3</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(247, 508)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tun_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>USRP2 Freq (Hz)</value> + </param> + <param> + <key>value</key> + <value>2.45e9</value> + </param> + <param> + <key>min</key> + <value>2.4e9</value> + </param> + <param> + <key>max</key> + <value>2.5e9</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(49, 341)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_constellationsink2</key> + <param> + <key>id</key> + <value>wxgui_constellationsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>Constellation Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>frame_rate</key> + <value>5</value> + </param> + <param> + <key>const_size</key> + <value>2048</value> + </param> + <param> + <key>M</key> + <value>4</value> + </param> + <param> + <key>theta</key> + <value>0</value> + </param> + <param> + <key>alpha</key> + <value>0.005</value> + </param> + <param> + <key>fmax</key> + <value>0.06</value> + </param> + <param> + <key>mu</key> + <value>0.5</value> + </param> + <param> + <key>gain_mu</key> + <value>0.005</value> + </param> + <param> + <key>symbol_rate</key> + <value>samp_rate/samps_per_sym</value> + </param> + <param> + <key>omega_limit</key> + <value>0.005</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(920, 202)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>tun_freq</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>10</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(691, 155)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>False</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>1e-6</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(515, 272)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp2_source_xxxx</key> + <param> + <key>id</key> + <value>usrp2_source_xxxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>interface</key> + <value>eth1</value> + </param> + <param> + <key>mac_addr</key> + <value></value> + </param> + <param> + <key>decimation</key> + <value>interp</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq + rx_freq_off</value> + </param> + <param> + <key>gain</key> + <value>30</value> + </param> + <param> + <key>_coordinate</key> + <value>(270, 200)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_dxpsk_mod_0</source_block_id> + <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_0</source_block_id> + <sink_block_id>usrp2_sink_xxxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>usrp2_source_xxxx_0</source_block_id> + <sink_block_id>wxgui_constellationsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>usrp2_source_xxxx_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>usrp2_source_xxxx_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/usrp/usrp2_fft.grc b/gnuradio-examples/grc/usrp/usrp2_fft.grc new file mode 100644 index 0000000000..134bd46146 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_fft.grc @@ -0,0 +1,264 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Wed Apr 15 17:30:20 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>usrp2_fft</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>USRP2 FFT Plotter</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>FFT waveform plot</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>100e6/decim</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 170)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>decim</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>16</value> + </param> + <param> + <key>_coordinate</key> + <value>(24, 267)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tun_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>USRP2 Freq (Hz)</value> + </param> + <param> + <key>value</key> + <value>2.45e9</value> + </param> + <param> + <key>min</key> + <value>2.4e9</value> + </param> + <param> + <key>max</key> + <value>2.5e9</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(32, 365)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>tun_freq</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>10</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(466, 100)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp2_source_xxxx</key> + <param> + <key>id</key> + <value>usrp2_source_xxxx_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>interface</key> + <value></value> + </param> + <param> + <key>mac_addr</key> + <value></value> + </param> + <param> + <key>decimation</key> + <value>decim</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq</value> + </param> + <param> + <key>gain</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(211, 200)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>usrp2_source_xxxx_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/usrp/usrp_two_tone_loopback.grc b/gnuradio-examples/grc/usrp/usrp_two_tone_loopback.grc new file mode 100644 index 0000000000..3df9770444 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp_two_tone_loopback.grc @@ -0,0 +1,749 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Fri Apr 17 18:23:35 2009</timestamp> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>64e6/200</value> + </param> + <param> + <key>_coordinate</key> + <value>(9, 166)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>tun_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>int(100e6)</value> + </param> + <param> + <key>_coordinate</key> + <value>(116, 166)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>tone1</value> + </param> + <param> + <key>amp</key> + <value>tone_ampl</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(258, 20)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>tone2</value> + </param> + <param> + <key>amp</key> + <value>tone_ampl</value> + </param> + <param> + <key>offset</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(255, 179)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>num_inputs</key> + <value>3</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(528, 78)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>tx_side</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>A</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>_coordinate</key> + <value>(688, 384)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp_simple_sink_x</key> + <param> + <key>id</key> + <value>usrp_simple_sink_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>format</key> + <value></value> + </param> + <param> + <key>which</key> + <value>0</value> + </param> + <param> + <key>interpolation</key> + <value>400</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq</value> + </param> + <param> + <key>gain</key> + <value>0</value> + </param> + <param> + <key>side</key> + <value>tx_side</value> + </param> + <param> + <key>transmit</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(835, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp_simple_source_x</key> + <param> + <key>id</key> + <value>usrp_simple_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>format</key> + <value></value> + </param> + <param> + <key>which</key> + <value>0</value> + </param> + <param> + <key>decimation</key> + <value>200</value> + </param> + <param> + <key>frequency</key> + <value>tun_freq</value> + </param> + <param> + <key>gain</key> + <value>20</value> + </param> + <param> + <key>side</key> + <value>rx_side</value> + </param> + <param> + <key>rx_ant</key> + <value>rx_ant</value> + </param> + <param> + <key>hb_filters</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(479, 224)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>rx_ant</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>RXA</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>_coordinate</key> + <value>(802, 384)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>100</value> + </param> + <param> + <key>fft_size</key> + <value>512*2</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 2, 2, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(746, 133)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>rx_side</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>A</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>_coordinate</key> + <value>(568, 382)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_noise_source_x</key> + <param> + <key>id</key> + <value>gr_noise_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_ampl</value> + </param> + <param> + <key>seed</key> + <value>42</value> + </param> + <param> + <key>_coordinate</key> + <value>(276, 312)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Noise Ampl</value> + </param> + <param> + <key>value</key> + <value>2000</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>5000</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_VERTICAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 1, 2, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(20, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tone_ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Tone Ampl</value> + </param> + <param> + <key>value</key> + <value>5000</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>10e3</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_VERTICAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 2, 1</value> + </param> + <param> + <key>_coordinate</key> + <value>(28, 437)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tone1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Tone 1</value> + </param> + <param> + <key>value</key> + <value>50e3</value> + </param> + <param> + <key>min</key> + <value>-samp_rate/2</value> + </param> + <param> + <key>max</key> + <value>samp_rate/2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(190, 436)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>tone2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Tone 2</value> + </param> + <param> + <key>value</key> + <value>75e3</value> + </param> + <param> + <key>min</key> + <value>-samp_rate/2</value> + </param> + <param> + <key>max</key> + <value>samp_rate/2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 4, 1, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(367, 439)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>options</key> + <param> + <key>id</key> + <value>usrp_two_tone_loopback</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>USRP Loopback - 2 Tone</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>Loopback test with basic rx and basic tx</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>gr_sig_source_x</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_sig_source_x0</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>gr_noise_source_x</source_block_id> + <sink_block_id>gr_add_xx</sink_block_id> + <source_key>0</source_key> + <sink_key>2</sink_key> + </connection> + <connection> + <source_block_id>usrp_simple_source_x</source_block_id> + <sink_block_id>wxgui_fftsink2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_add_xx</source_block_id> + <sink_block_id>usrp_simple_sink_x</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc b/gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc new file mode 100644 index 0000000000..8f53475ab5 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc @@ -0,0 +1,466 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Fri Apr 17 19:06:07 2009</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>usrp_wbfm_receive</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>USRP WBFM Receive</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>WBFM Receive with Basic RX or TV RX</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>decim</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>200</value> + </param> + <param> + <key>_coordinate</key> + <value>(14, 173)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>volume</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Volume</value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>10</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(991, 40)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>usrp_simple_source_x</key> + <param> + <key>id</key> + <value>usrp_simple_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>format</key> + <value></value> + </param> + <param> + <key>which</key> + <value>0</value> + </param> + <param> + <key>decimation</key> + <value>decim</value> + </param> + <param> + <key>frequency</key> + <value>(freq+fine)*1e6</value> + </param> + <param> + <key>gain</key> + <value>20</value> + </param> + <param> + <key>side</key> + <value>A</value> + </param> + <param> + <key>rx_ant</key> + <value>None</value> + </param> + <param> + <key>hb_filters</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(277, 29)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>64e6/decim</value> + </param> + <param> + <key>baseband_freq</key> + <value>(freq+fine)*1e6</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>fft_size</key> + <value>512</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value>2, 0, 2, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(512, 191)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency (MHz)</value> + </param> + <param> + <key>value</key> + <value>100</value> + </param> + <param> + <key>min</key> + <value>87.5</value> + </param> + <param> + <key>max</key> + <value>108.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(104, 243)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>fine</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Fine Freq (MHz)</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>-.1</value> + </param> + <param> + <key>max</key> + <value>.1</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 2, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(275, 246)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_wfm_rcv</key> + <param> + <key>id</key> + <value>blks2_wfm_rcv</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>quad_rate</key> + <value>64e6/decim</value> + </param> + <param> + <key>audio_decimation</key> + <value>10</value> + </param> + <param> + <key>_coordinate</key> + <value>(510, 37)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> + <param> + <key>id</key> + <value>gr_multiply_const_vxx</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>volume</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(764, 55)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>audio_sink</key> + <param> + <key>id</key> + <value>audio_sink</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>samp_rate</key> + <value>32000</value> + </param> + <param> + <key>device_name</key> + <value></value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(703, 241)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <connection> + <source_block_id>usrp_simple_source_x</source_block_id> + <sink_block_id>blks2_wfm_rcv</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>usrp_simple_source_x</source_block_id> + <sink_block_id>wxgui_fftsink2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_wfm_rcv</source_block_id> + <sink_block_id>gr_multiply_const_vxx</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx</source_block_id> + <sink_block_id>audio_sink</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> diff --git a/gnuradio-examples/grc/xmlrpc/.gitignore b/gnuradio-examples/grc/xmlrpc/.gitignore new file mode 100644 index 0000000000..b336cc7cec --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gnuradio-examples/grc/xmlrpc/readme.txt b/gnuradio-examples/grc/xmlrpc/readme.txt new file mode 100644 index 0000000000..c1f87c1cb5 --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/readme.txt @@ -0,0 +1,18 @@ +################################################## +# XMLRPC example +################################################## + +XMLRPC allows software to make remote function calls over http. +In the case of GRC, one can use XMLRPC to modify variables in a running flow graph. +See http://www.xmlrpc.com/ + +--- Server Example --- +Place an "XMLRPC Server" block inside of any flow graph. +The server will provide set functions for every variable in the flow graph. +If a variable is called "freq", the server will provide a function set_freq(new_freq). +Run the server example and experiment with the example client script. + +-- Client Example -- +The "XMLRPC Client" block will give a variable control over one remove function. +In the example client, there is one client block and gui control per variable. +This technique can be used to remotely control a flow graph, perhaps running on a non-gui machine. diff --git a/gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc b/gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc new file mode 100644 index 0000000000..3bb4e7ed3b --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc @@ -0,0 +1,312 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Jul 24 14:27:44 2008</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>client_block</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>XMLRPC Client</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>example flow graph</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>xmlrpc_client</key> + <param> + <key>id</key> + <value>xmlrpc_client0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>addr</key> + <value>localhost</value> + </param> + <param> + <key>port</key> + <value>1234</value> + </param> + <param> + <key>callback</key> + <value>set_ampl</value> + </param> + <param> + <key>variable</key> + <value>ampl</value> + </param> + <param> + <key>_coordinate</key> + <value>(409, 35)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>xmlrpc_client</key> + <param> + <key>id</key> + <value>xmlrpc_client</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>addr</key> + <value>localhost</value> + </param> + <param> + <key>port</key> + <value>1234</value> + </param> + <param> + <key>callback</key> + <value>set_freq</value> + </param> + <param> + <key>variable</key> + <value>freq</value> + </param> + <param> + <key>_coordinate</key> + <value>(222, 34)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency (Hz)</value> + </param> + <param> + <key>value</key> + <value>1000</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>5000</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(207, 162)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_steps</key> + <value>100</value> + </param> + <param> + <key>slider_type</key> + <value>horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value>1, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(397, 167)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_chooser</key> + <param> + <key>id</key> + <value>offset</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Offset</value> + </param> + <param> + <key>value_index</key> + <value>1</value> + </param> + <param> + <key>choices</key> + <value>[-1, 0, 1]</value> + </param> + <param> + <key>labels</key> + <value>["neg", "zero", "pos"]</value> + </param> + <param> + <key>chooser_type</key> + <value>radio_buttons_horizontal</value> + </param> + <param> + <key>grid_pos</key> + <value>2, 0, 1, 2</value> + </param> + <param> + <key>_coordinate</key> + <value>(596, 177)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>xmlrpc_client</key> + <param> + <key>id</key> + <value>xmlrpc_client1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>addr</key> + <value>localhost</value> + </param> + <param> + <key>port</key> + <value>1234</value> + </param> + <param> + <key>callback</key> + <value>set_offset</value> + </param> + <param> + <key>variable</key> + <value>offset*ampl</value> + </param> + <param> + <key>_coordinate</key> + <value>(608, 39)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 172)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> +</flow_graph> \ No newline at end of file diff --git a/gnuradio-examples/grc/xmlrpc/xmlrpc_client_script.py b/gnuradio-examples/grc/xmlrpc/xmlrpc_client_script.py new file mode 100644 index 0000000000..956fa07fb7 --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/xmlrpc_client_script.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import time +import random +import xmlrpclib + +#create server object +s = xmlrpclib.Server("http://localhost:1234") + +#randomly change parameters of the sinusoid +for i in range(10): + #generate random values + new_freq = random.uniform(0, 5000) + new_ampl = random.uniform(0, 2) + new_offset = random.uniform(-1, 1) + #set new values + time.sleep(1) + s.set_freq(new_freq) + time.sleep(1) + s.set_ampl(new_ampl) + time.sleep(1) + s.set_offset(new_offset) + diff --git a/gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc b/gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc new file mode 100644 index 0000000000..dc539ef1b1 --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc @@ -0,0 +1,384 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Thu Jul 24 14:27:42 2008</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>server_block</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>XMLRPC Server</value> + </param> + <param> + <key>author</key> + <value>Example</value> + </param> + <param> + <key>description</key> + <value>example flow graph</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>wx_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>_coordinate</key> + <value>(10, 10)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_sig_source_x</key> + <param> + <key>id</key> + <value>gr_sig_source_x</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>waveform</key> + <value>gr.GR_COS_WAVE</value> + </param> + <param> + <key>freq</key> + <value>freq</value> + </param> + <param> + <key>amp</key> + <value>ampl</value> + </param> + <param> + <key>offset</key> + <value>offset</value> + </param> + <param> + <key>_coordinate</key> + <value>(162, 200)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>offset</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(12, 390)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>xmlrpc_server</key> + <param> + <key>id</key> + <value>xmlrpc_server</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>addr</key> + <value>localhost</value> + </param> + <param> + <key>port</key> + <value>1234</value> + </param> + <param> + <key>_coordinate</key> + <value>(395, 240)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_throttle</key> + <param> + <key>id</key> + <value>gr_throttle</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(386, 93)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>frame_decim</key> + <value>15</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>.001</value> + </param> + <param> + <key>marker</key> + <value>set_format_line</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value>0, 0, 2, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(623, 28)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>8</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>fft_size</key> + <value>512</value> + </param> + <param> + <key>fft_rate</key> + <value>15</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>grid_pos</key> + <value>2, 0, 2, 4</value> + </param> + <param> + <key>_coordinate</key> + <value>(630, 233)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32000</value> + </param> + <param> + <key>_coordinate</key> + <value>(11, 160)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>1000</value> + </param> + <param> + <key>_coordinate</key> + <value>(11, 237)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(13, 315)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <connection> + <source_block_id>gr_sig_source_x</source_block_id> + <sink_block_id>gr_throttle</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle</source_block_id> + <sink_block_id>wxgui_scopesink2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_throttle</source_block_id> + <sink_block_id>wxgui_fftsink2</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> +</flow_graph> \ No newline at end of file diff --git a/grc/Makefile.am b/grc/Makefile.am index 28408c4a83..30b955a1ef 100644 --- a/grc/Makefile.am +++ b/grc/Makefile.am @@ -25,7 +25,6 @@ if PYTHON SUBDIRS = \ base \ blocks \ - examples \ grc_gnuradio \ gui \ python \ diff --git a/grc/examples/.gitignore b/grc/examples/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/Makefile.am b/grc/examples/Makefile.am deleted file mode 100644 index 54620e1563..0000000000 --- a/grc/examples/Makefile.am +++ /dev/null @@ -1,60 +0,0 @@ -# -# 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 - -grc_examples_prefix = $(exampledir)/grc - -audiodatadir = $(grc_examples_prefix)/audio -dist_audiodata_DATA = \ - audio/dial_tone.grc \ - audio/cvsd_sweep.grc - -demoddatadir = $(grc_examples_prefix)/demod -dist_demoddata_DATA = \ - demod/mpsk_demod.grc - -simpledatadir = $(grc_examples_prefix)/simple -dist_simpledata_DATA = \ - simple/ber_simulation.grc \ - simple/dpsk_loopback.grc \ - simple/variable_config.grc \ - simple/var_sink_taps.grc - -trellisdatadir = $(grc_examples_prefix)/trellis -dist_trellisdata_DATA = \ - trellis/readme.txt \ - trellis/interference_cancellation.grc - -usrpdatadir = $(grc_examples_prefix)/usrp -dist_usrpdata_DATA = \ - usrp/usrp2_const_wave.grc \ - usrp/usrp2_dpsk_mod.grc \ - usrp/usrp2_fft.grc \ - usrp/usrp_two_tone_loopback.grc \ - usrp/usrp_wbfm_receive.grc - -xmlrpcdatadir = $(grc_examples_prefix)/xmlrpc -dist_xmlrpcdata_DATA = \ - xmlrpc/readme.txt \ - xmlrpc/xmlrpc_client.grc \ - xmlrpc/xmlrpc_client_script.py\ - xmlrpc/xmlrpc_server.grc diff --git a/grc/examples/audio/.gitignore b/grc/examples/audio/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/audio/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/audio/cvsd_sweep.grc b/grc/examples/audio/cvsd_sweep.grc deleted file mode 100644 index 8d0b385cef..0000000000 --- a/grc/examples/audio/cvsd_sweep.grc +++ /dev/null @@ -1,918 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Sat Sep 19 20:30:08 2009</timestamp> - <block> - <key>import</key> - <param> - <key>id</key> - <value>import_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>import</key> - <value>import math</value> - </param> - <param> - <key>_coordinate</key> - <value>(157, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_cvsd_decode</key> - <param> - <key>id</key> - <value>blks2_cvsd_decode_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>resample</key> - <value>resample</value> - </param> - <param> - <key>bw</key> - <value>bw</value> - </param> - <param> - <key>_coordinate</key> - <value>(887, 340)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>tri_source</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_TRI_WAVE</value> - </param> - <param> - <key>freq</key> - <value>0.05</value> - </param> - <param> - <key>amp</key> - <value>0.5</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(44, 316)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>throttle</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>audio_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(238, 348)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_vco_f</key> - <param> - <key>id</key> - <value>vco</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>sensitivity</key> - <value>audio_rate*2*math.pi</value> - </param> - <param> - <key>amplitude</key> - <value>0.9</value> - </param> - <param> - <key>_coordinate</key> - <value>(427, 332)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_cvsd_encode</key> - <param> - <key>id</key> - <value>enc</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>resample</key> - <value>resample</value> - </param> - <param> - <key>bw</key> - <value>bw</value> - </param> - <param> - <key>_coordinate</key> - <value>(655, 340)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_packed_to_unpacked_xx</key> - <param> - <key>id</key> - <value>p2u</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>bits_per_chunk</key> - <value>1</value> - </param> - <param> - <key>endianness</key> - <value>gr.GR_MSB_FIRST</value> - </param> - <param> - <key>_coordinate</key> - <value>(648, 415)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>gr_char_to_float</key> - <param> - <key>id</key> - <value>c2f</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(676, 483)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>audio_sink</key> - <param> - <key>id</key> - <value>audio_sink</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>device_name</key> - <value>plughw:0,0</value> - </param> - <param> - <key>ok_to_block</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1127, 340)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>audio_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>8000</value> - </param> - <param> - <key>_coordinate</key> - <value>(251, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>resample</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>8</value> - </param> - <param> - <key>_coordinate</key> - <value>(344, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>bw</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>0.5</value> - </param> - <param> - <key>_coordinate</key> - <value>(431, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>notebook</key> - <param> - <key>id</key> - <value>displays</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['Original','Encoded','Decoded']</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(12, 106)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>orig_fft</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Original Spectrum</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 0</value> - </param> - <param> - <key>_coordinate</key> - <value>(415, 97)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>orig_scope</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Original Waveform</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 0</value> - </param> - <param> - <key>_coordinate</key> - <value>(414, 425)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>enc_fft</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Encoded Spectrum</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate*resample</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>8</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(610, 551)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>enc_scope</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Encoded Waveform</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate*resample</value> - </param> - <param> - <key>v_scale</key> - <value>0.5</value> - </param> - <param> - <key>t_scale</key> - <value>20.0/(audio_rate*resample)</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(858, 591)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>dec_fft</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Decoded Spectrum</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>5</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>ref_scale</key> - <value>0.1</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(891, 98)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>dec_scope</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Decoded Waveform</value> - </param> - <param> - <key>samp_rate</key> - <value>audio_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value>displays, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(889, 422)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>options</key> - <param> - <key>id</key> - <value>cvsd_sweep</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>CVSD Vocoder Test</value> - </param> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>run</key> - <value>True</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>vco</source_block_id> - <sink_block_id>orig_fft</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>tri_source</source_block_id> - <sink_block_id>throttle</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>throttle</source_block_id> - <sink_block_id>vco</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>vco</source_block_id> - <sink_block_id>enc</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>enc</source_block_id> - <sink_block_id>blks2_cvsd_decode_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>vco</source_block_id> - <sink_block_id>orig_scope</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_cvsd_decode_0</source_block_id> - <sink_block_id>dec_fft</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_cvsd_decode_0</source_block_id> - <sink_block_id>dec_scope</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_cvsd_decode_0</source_block_id> - <sink_block_id>audio_sink</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>enc</source_block_id> - <sink_block_id>p2u</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>p2u</source_block_id> - <sink_block_id>c2f</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>c2f</source_block_id> - <sink_block_id>enc_fft</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>c2f</source_block_id> - <sink_block_id>enc_scope</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/audio/dial_tone.grc b/grc/examples/audio/dial_tone.grc deleted file mode 100644 index ac8cbef279..0000000000 --- a/grc/examples/audio/dial_tone.grc +++ /dev/null @@ -1,375 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Jul 24 14:27:48 2008</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>dial_tone</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Dial Tone</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>example flow graph</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>num_inputs</key> - <value>3</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(513, 277)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>audio_sink</key> - <param> - <key>id</key> - <value>audio_sink</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>samp_rate</key> - <value>32000</value> - </param> - <param> - <key>device_name</key> - <value/> - </param> - <param> - <key>ok_to_block</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(699, 112)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noise</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(238, 380)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>440</value> - </param> - <param> - <key>amp</key> - <value>ampl</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(240, 208)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>350</value> - </param> - <param> - <key>amp</key> - <value>ampl</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(240, 38)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Volume</value> - </param> - <param> - <key>value</key> - <value>.4</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>.5</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(634, 413)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>noise</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Noise</value> - </param> - <param> - <key>value</key> - <value>.005</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>.2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(443, 412)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(11, 171)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>gr_sig_source_x0</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sig_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_noise_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>2</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx</source_block_id> - <sink_block_id>audio_sink</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/demod/mpsk_demod.grc b/grc/examples/demod/mpsk_demod.grc deleted file mode 100644 index 08108dcba0..0000000000 --- a/grc/examples/demod/mpsk_demod.grc +++ /dev/null @@ -1,586 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Mon Oct 5 18:34:52 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>mpsk_demod</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>MPSK Demod Demo</value> - </param> - <param> - <key>author</key> - <value></value> - </param> - <param> - <key>description</key> - <value></value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>run_options</key> - <value>prompt</value> - </param> - <param> - <key>run</key> - <value>True</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 170)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2**8</value> - </param> - <param> - <key>num_samps</key> - <value>10000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(155, 160)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_dxpsk_mod</key> - <param> - <key>id</key> - <value>blks2_dxpsk_mod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>dqpsk</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> - </param> - <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>gray_code</key> - <value>True</value> - </param> - <param> - <key>verbose</key> - <value>False</value> - </param> - <param> - <key>log</key> - <value>False</value> - </param> - <param> - <key>_coordinate</key> - <value>(391, 54)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(654, 142)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samps_per_sym</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>4</value> - </param> - <param> - <key>_coordinate</key> - <value>(7, 89)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_channel_model</key> - <param> - <key>id</key> - <value>gr_channel_model_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>noise_voltage</key> - <value>noise</value> - </param> - <param> - <key>freq_offset</key> - <value>freq_off</value> - </param> - <param> - <key>epsilon</key> - <value>1.0</value> - </param> - <param> - <key>taps</key> - <value>1.0</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(487, 282)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>noise</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Noise</value> - </param> - <param> - <key>value</key> - <value>.1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(259, 353)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>freq_off</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Freq Offset</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>-.5</value> - </param> - <param> - <key>max</key> - <value>.5</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(126, 345)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>notebook</key> - <param> - <key>id</key> - <value>notebook</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['Constellation', 'Spectrum']</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(520, 407)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_constellationsink2</key> - <param> - <key>id</key> - <value>wxgui_constellationsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Constellation Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_rate</key> - <value>5</value> - </param> - <param> - <key>const_size</key> - <value>2048</value> - </param> - <param> - <key>M</key> - <value>4</value> - </param> - <param> - <key>theta</key> - <value>0</value> - </param> - <param> - <key>alpha</key> - <value>0.005</value> - </param> - <param> - <key>fmax</key> - <value>0.06</value> - </param> - <param> - <key>mu</key> - <value>0.5</value> - </param> - <param> - <key>gain_mu</key> - <value>0.005</value> - </param> - <param> - <key>symbol_rate</key> - <value>samp_rate/4.</value> - </param> - <param> - <key>omega_limit</key> - <value>0.005</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook, 0</value> - </param> - <param> - <key>_coordinate</key> - <value>(824, 212)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(847, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_constellationsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_dxpsk_mod_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/simple/.gitignore b/grc/examples/simple/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/simple/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/simple/ber_simulation.grc b/grc/examples/simple/ber_simulation.grc deleted file mode 100644 index 618add29c3..0000000000 --- a/grc/examples/simple/ber_simulation.grc +++ /dev/null @@ -1,564 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Mar 19 11:08:59 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>ber_sim</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>BER Simulation</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>Adjust the noise and constellation... see what happens!</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(16, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noise</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(235, 379)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_chunks_to_symbols_xx</key> - <param> - <key>id</key> - <value>gr_chunks_to_symbols_xx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>in_type</key> - <value>byte</value> - </param> - <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>const</value> - </param> - <param> - <key>dimension</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(360, 237)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_numbersink2</key> - <param> - <key>id</key> - <value>wxgui_numbersink2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>BER</value> - </param> - <param> - <key>units</key> - <value>%</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>base_value</key> - <value>0.0</value> - </param> - <param> - <key>min_value</key> - <value>0.0</value> - </param> - <param> - <key>max_value</key> - <value>1.0</value> - </param> - <param> - <key>factor</key> - <value>100</value> - </param> - <param> - <key>decimal_places</key> - <value>4</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>number_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>show_gauge</key> - <value>False</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1062, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(397, 27)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_error_rate</key> - <param> - <key>id</key> - <value>blks2_error_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>'BER'</value> - </param> - <param> - <key>win_size</key> - <value>1000000</value> - </param> - <param> - <key>bits_per_symbol</key> - <value>int(math.log(len(const))/math.log(2))</value> - </param> - <param> - <key>_coordinate</key> - <value>(670, 41)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_constellation_decoder_cb</key> - <param> - <key>id</key> - <value>gr_constellation_decoder_cb</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>sym_position</key> - <value>const</value> - </param> - <param> - <key>sym_value_out</key> - <value>range(len(const))</value> - </param> - <param> - <key>_coordinate</key> - <value>(708, 224)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>len(const)</value> - </param> - <param> - <key>num_samps</key> - <value>1000000</value> - </param> - <param> - <key>repeat</key> - <value>False</value> - </param> - <param> - <key>_coordinate</key> - <value>(15, 244)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>noise</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>.25</value> - </param> - <param> - <key>_coordinate</key> - <value>(18, 386)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>const</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>1+1j, 1-1j, -1-1j, -1+1j</value> - </param> - <param> - <key>_coordinate</key> - <value>(16, 461)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>50e3</value> - </param> - <param> - <key>_coordinate</key> - <value>(20, 168)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>import</key> - <param> - <key>id</key> - <value>import</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>import</key> - <value>import math</value> - </param> - <param> - <key>_coordinate</key> - <value>(138, 168)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(652, 395)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>"Constellation: "+str(const)</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value>2, 0, 1, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(828, 368)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>blks2_error_rate</source_block_id> - <sink_block_id>wxgui_numbersink2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle</source_block_id> - <sink_block_id>blks2_error_rate</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_constellation_decoder_cb</source_block_id> - <sink_block_id>blks2_error_rate</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx</source_block_id> - <sink_block_id>gr_constellation_decoder_cb</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_chunks_to_symbols_xx</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_noise_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>random_source_x</source_block_id> - <sink_block_id>gr_throttle</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>random_source_x</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/simple/dpsk_loopback.grc b/grc/examples/simple/dpsk_loopback.grc deleted file mode 100644 index 6a507c98da..0000000000 --- a/grc/examples/simple/dpsk_loopback.grc +++ /dev/null @@ -1,450 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Tue Mar 17 12:53:37 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>dpsk_loopback</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>DPSK Loopback</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>gnuradio flow graph</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_dxpsk_mod</key> - <param> - <key>id</key> - <value>blks2_dxpsk_mod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>dbpsk</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>2</value> - </param> - <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>gray_code</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(426, 295)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>10000</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 170)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Frequency (Hz)</value> - </param> - <param> - <key>value</key> - <value>500</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>samp_rate/2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_length</key> - <value>200</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(12, 257)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_packet_encoder</key> - <param> - <key>id</key> - <value>blks2_packet_encoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>2</value> - </param> - <param> - <key>bits_per_symbol</key> - <value>1</value> - </param> - <param> - <key>access_code</key> - <value></value> - </param> - <param> - <key>pad_for_usrp</key> - <value>True</value> - </param> - <param> - <key>payload_length</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(216, 260)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(225, 174)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>freq</value> - </param> - <param> - <key>amp</key> - <value>1</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(203, 8)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_packet_decoder</key> - <param> - <key>id</key> - <value>blks2_packet_decoder_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>access_code</key> - <value></value> - </param> - <param> - <key>threshold</key> - <value>-1</value> - </param> - <param> - <key>_coordinate</key> - <value>(551, 65)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_decim</key> - <value>15</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>1./freq</value> - </param> - <param> - <key>marker</key> - <value>set_format_line</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(769, 12)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_dxpsk_demod</key> - <param> - <key>id</key> - <value>blks2_dxpsk_demod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>dbpsk</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>2</value> - </param> - <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>costas_alpha</key> - <value>0.175</value> - </param> - <param> - <key>gain_mu</key> - <value>0.175</value> - </param> - <param> - <key>mu</key> - <value>0.5</value> - </param> - <param> - <key>omega_relative_limit</key> - <value>0.005</value> - </param> - <param> - <key>gray_code</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(691, 219)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>blks2_dxpsk_mod_0</source_block_id> - <sink_block_id>blks2_dxpsk_demod_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_dxpsk_demod_0</source_block_id> - <sink_block_id>blks2_packet_decoder_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_packet_encoder_0</source_block_id> - <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sig_source_x_0</source_block_id> - <sink_block_id>gr_throttle_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0_0</source_block_id> - <sink_block_id>blks2_packet_encoder_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_packet_decoder_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/simple/var_sink_taps.grc b/grc/examples/simple/var_sink_taps.grc deleted file mode 100644 index 07207850ee..0000000000 --- a/grc/examples/simple/var_sink_taps.grc +++ /dev/null @@ -1,488 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Tue May 19 16:45:51 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>var_sink_taps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Variable Sink + Taps</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>gnuradio flow graph</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>1</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(619, 36)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_fir_filter_xxx</key> - <param> - <key>id</key> - <value>gr_fir_filter_xxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>ccc</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>taps</key> - <value>dest_taps</value> - </param> - <param> - <key>_coordinate</key> - <value>(831, 47)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(999, 198)</value> - </param> - <param> - <key>_rotation</key> - <value>270</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(629, 184)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <block> - <key>import</key> - <param> - <key>id</key> - <value>import_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>import</key> - <value>from gnuradio.gr import firdes</value> - </param> - <param> - <key>_coordinate</key> - <value>(330, 120)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>dest_taps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>[0]</value> - </param> - <param> - <key>_coordinate</key> - <value>(836, 223)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(831, 130)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>source_taps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.low_pass(1, samp_rate, 4000, 2000)</value> - </param> - <param> - <key>_coordinate</key> - <value>(397, 191)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>taps_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>10</value> - </param> - <param> - <key>_coordinate</key> - <value>(268, 189)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_vector_source_x</key> - <param> - <key>id</key> - <value>gr_vector_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>vector</key> - <value>source_taps</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>vlen</key> - <value>len(source_taps)</value> - </param> - <param> - <key>_coordinate</key> - <value>(205, 33)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>note</key> - <param> - <key>id</key> - <value>note_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>note</key> - <value>Pass the FIR taps via a variable sink.</value> - </param> - <param> - <key>_coordinate</key> - <value>(14, 141)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samples_per_second</key> - <value>taps_rate</value> - </param> - <param> - <key>vlen</key> - <value>len(source_taps)</value> - </param> - <param> - <key>_coordinate</key> - <value>(440, 41)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_variable_sink_x</key> - <param> - <key>id</key> - <value>blks2_variable_sink_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>variable</key> - <value>dest_taps</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>vlen</key> - <value>len(source_taps)</value> - </param> - <param> - <key>_coordinate</key> - <value>(305, 283)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <connection> - <source_block_id>gr_noise_source_x_0</source_block_id> - <sink_block_id>gr_fir_filter_xxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_fir_filter_xxx_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_vector_source_x_0</source_block_id> - <sink_block_id>gr_throttle</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle</source_block_id> - <sink_block_id>blks2_variable_sink_x_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/simple/variable_config.grc b/grc/examples/simple/variable_config.grc deleted file mode 100644 index 95c287cce7..0000000000 --- a/grc/examples/simple/variable_config.grc +++ /dev/null @@ -1,329 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Jun 25 10:56:04 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>variable_config_demo</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Variable Config Block Demonstration</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>Save/Load freq from a config file.</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>autostart</key> - <value>True</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 170)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_config</key> - <param> - <key>id</key> - <value>freq_init</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>1000</value> - </param> - <param> - <key>type</key> - <value>real</value> - </param> - <param> - <key>config_file</key> - <value>config.conf</value> - </param> - <param> - <key>section</key> - <value>main</value> - </param> - <param> - <key>option</key> - <value>freq</value> - </param> - <param> - <key>writeback</key> - <value>freq</value> - </param> - <param> - <key>_coordinate</key> - <value>(255, 17)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Frequency (Hz)</value> - </param> - <param> - <key>value</key> - <value>freq_init</value> - </param> - <param> - <key>min</key> - <value>-samp_rate/2</value> - </param> - <param> - <key>max</key> - <value>samp_rate/2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(429, 24)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(392, 233)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>freq</value> - </param> - <param> - <key>amp</key> - <value>1</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(148, 233)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(671, 233)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>gr_sig_source_x_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/trellis/.gitignore b/grc/examples/trellis/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/trellis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/trellis/interference_cancellation.grc b/grc/examples/trellis/interference_cancellation.grc deleted file mode 100644 index e93babd787..0000000000 --- a/grc/examples/trellis/interference_cancellation.grc +++ /dev/null @@ -1,2072 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Mar 19 11:22:40 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>int_cancellation</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Superposition Coding</value> - </param> - <param> - <key>author</key> - <value>AA</value> - </param> - <param> - <key>description</key> - <value>gnuradio flow graph</value> - </param> - <param> - <key>window_size</key> - <value>2048, 2048</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>alpha</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>P1/P</value> - </param> - <param> - <key>value</key> - <value>0.6</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1.0</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_length</key> - <value>200</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(243, 11)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>snr_db</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>P/sigma^2 (dB)</value> - </param> - <param> - <key>value</key> - <value>16</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>20</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_length</key> - <value>200</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(447, 14)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>noisevar</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>10**(-snr_db/10)</value> - </param> - <param> - <key>_coordinate</key> - <value>(637, 13)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> - </param> - <param> - <key>num_samps</key> - <value>1000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(21, 170)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_chunks_to_symbols_xx</key> - <param> - <key>id</key> - <value>gr_chunks_to_symbols_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>in_type</key> - <value>short</value> - </param> - <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>1,1j,-1j,-1</value> - </param> - <param> - <key>dimension</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(665, 187)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>alpha**0.5</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(988, 196)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> - </param> - <param> - <key>num_samps</key> - <value>1000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(25, 291)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_chunks_to_symbols_xx</key> - <param> - <key>id</key> - <value>gr_chunks_to_symbols_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>in_type</key> - <value>short</value> - </param> - <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>1,1j,-1j,-1</value> - </param> - <param> - <key>dimension</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(660, 311)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>(1-alpha)**0.5</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(994, 319)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1224, 244)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noisevar</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(1146, 369)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(536, 529)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_xx</key> - <param> - <key>id</key> - <value>gr_multiply_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(771, 525)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_short_to_float</key> - <param> - <key>id</key> - <value>gr_short_to_float_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(994, 545)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_3</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(535, 792)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_xx</key> - <param> - <key>id</key> - <value>gr_multiply_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(785, 779)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_short_to_float</key> - <param> - <key>id</key> - <value>gr_short_to_float_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(1005, 798)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_chunks_to_symbols_xx</key> - <param> - <key>id</key> - <value>gr_chunks_to_symbols_xx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>in_type</key> - <value>short</value> - </param> - <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>1,1j,-1j,-1</value> - </param> - <param> - <key>dimension</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(405, 998)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>alpha**0.5</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(710, 1008)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(944, 978)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(540, 1141)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_xx</key> - <param> - <key>id</key> - <value>gr_multiply_xx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(796, 1136)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_short_to_float</key> - <param> - <key>id</key> - <value>gr_short_to_float_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(1009, 1156)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_chunks_to_symbols_xx</key> - <param> - <key>id</key> - <value>gr_chunks_to_symbols_xx_2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>in_type</key> - <value>short</value> - </param> - <param> - <key>out_type</key> - <value>complex</value> - </param> - <param> - <key>symbol_table</key> - <value>1,1j,-1j,-1</value> - </param> - <param> - <key>dimension</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(420, 1368)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx_2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>(1-alpha)**0.5</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(733, 1374)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(975, 1342)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sub_xx</key> - <param> - <key>id</key> - <value>gr_sub_xx_1_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>_coordinate</key> - <value>(559, 1536)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_xx</key> - <param> - <key>id</key> - <value>gr_multiply_xx_2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>short</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(771, 1530)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_short_to_float</key> - <param> - <key>id</key> - <value>gr_short_to_float_1_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(1010, 1551)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_numbersink2</key> - <param> - <key>id</key> - <value>wxgui_numbersink2_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>BER 2 (raw)</value> - </param> - <param> - <key>units</key> - <value>BER</value> - </param> - <param> - <key>samp_rate</key> - <value>R</value> - </param> - <param> - <key>base_value</key> - <value>0.0</value> - </param> - <param> - <key>min_value</key> - <value>0</value> - </param> - <param> - <key>max_value</key> - <value>1.0</value> - </param> - <param> - <key>factor</key> - <value>1.0</value> - </param> - <param> - <key>decimal_places</key> - <value>6</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>number_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0.001</value> - </param> - <param> - <key>show_gauge</key> - <value>True</value> - </param> - <param> - <key>grid_pos</key> - <value>0,1,1,1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1260, 659)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_numbersink2</key> - <param> - <key>id</key> - <value>wxgui_numbersink2_3</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>BER 2 (after cancelling user 1)</value> - </param> - <param> - <key>units</key> - <value>BER</value> - </param> - <param> - <key>samp_rate</key> - <value>R</value> - </param> - <param> - <key>base_value</key> - <value>0.0</value> - </param> - <param> - <key>min_value</key> - <value>0</value> - </param> - <param> - <key>max_value</key> - <value>1.0</value> - </param> - <param> - <key>factor</key> - <value>1.0</value> - </param> - <param> - <key>decimal_places</key> - <value>6</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>number_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0.001</value> - </param> - <param> - <key>show_gauge</key> - <value>True</value> - </param> - <param> - <key>grid_pos</key> - <value>1,1,1,1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1262, 1020)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_numbersink2</key> - <param> - <key>id</key> - <value>wxgui_numbersink2_3_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>BER 1 (after cancelling user 2)</value> - </param> - <param> - <key>units</key> - <value>BER</value> - </param> - <param> - <key>samp_rate</key> - <value>R</value> - </param> - <param> - <key>base_value</key> - <value>0.0</value> - </param> - <param> - <key>min_value</key> - <value>0</value> - </param> - <param> - <key>max_value</key> - <value>1.0</value> - </param> - <param> - <key>factor</key> - <value>1.0</value> - </param> - <param> - <key>decimal_places</key> - <value>6</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>number_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0.001</value> - </param> - <param> - <key>show_gauge</key> - <value>True</value> - </param> - <param> - <key>grid_pos</key> - <value>1,0,1,1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1269, 1417)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>R</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>10e3</value> - </param> - <param> - <key>_coordinate</key> - <value>(748, 12)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_encoder_xx</key> - <param> - <key>id</key> - <value>trellis_encoder_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>ss</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>init_state</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(334, 190)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_encoder_xx</key> - <param> - <key>id</key> - <value>trellis_encoder_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>ss</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>init_state</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(336, 311)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_viterbi_combined_xx</key> - <param> - <key>id</key> - <value>trellis_viterbi_combined_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>c</value> - </param> - <param> - <key>out_type</key> - <value>s</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>block_size</key> - <value>1000</value> - </param> - <param> - <key>init_state</key> - <value>-1</value> - </param> - <param> - <key>final_state</key> - <value>-1</value> - </param> - <param> - <key>dim</key> - <value>1</value> - </param> - <param> - <key>table</key> - <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value> - </param> - <param> - <key>metric_type</key> - <value>trellis.TRELLIS_EUCLIDEAN</value> - </param> - <param> - <key>_coordinate</key> - <value>(79, 501)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_viterbi_combined_xx</key> - <param> - <key>id</key> - <value>trellis_viterbi_combined_xx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>c</value> - </param> - <param> - <key>out_type</key> - <value>s</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>block_size</key> - <value>1000</value> - </param> - <param> - <key>init_state</key> - <value>-1</value> - </param> - <param> - <key>final_state</key> - <value>-1</value> - </param> - <param> - <key>dim</key> - <value>1</value> - </param> - <param> - <key>table</key> - <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value> - </param> - <param> - <key>metric_type</key> - <value>trellis.TRELLIS_EUCLIDEAN</value> - </param> - <param> - <key>_coordinate</key> - <value>(82, 766)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_encoder_xx</key> - <param> - <key>id</key> - <value>trellis_encoder_xx_2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>ss</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>init_state</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(89, 998)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_viterbi_combined_xx</key> - <param> - <key>id</key> - <value>trellis_viterbi_combined_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>c</value> - </param> - <param> - <key>out_type</key> - <value>s</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>block_size</key> - <value>1000</value> - </param> - <param> - <key>init_state</key> - <value>-1</value> - </param> - <param> - <key>final_state</key> - <value>-1</value> - </param> - <param> - <key>dim</key> - <value>1</value> - </param> - <param> - <key>table</key> - <value>(1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1)</value> - </param> - <param> - <key>metric_type</key> - <value>trellis.TRELLIS_EUCLIDEAN</value> - </param> - <param> - <key>_coordinate</key> - <value>(83, 1111)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_encoder_xx</key> - <param> - <key>id</key> - <value>trellis_encoder_xx_2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>ss</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>init_state</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(105, 1367)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>trellis_viterbi_combined_xx</key> - <param> - <key>id</key> - <value>trellis_viterbi_combined_xx_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>c</value> - </param> - <param> - <key>out_type</key> - <value>s</value> - </param> - <param> - <key>fsm_args</key> - <value>prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm"</value> - </param> - <param> - <key>block_size</key> - <value>1000</value> - </param> - <param> - <key>init_state</key> - <value>-1</value> - </param> - <param> - <key>final_state</key> - <value>-1</value> - </param> - <param> - <key>dim</key> - <value>1</value> - </param> - <param> - <key>table</key> - <value>alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1)</value> - </param> - <param> - <key>metric_type</key> - <value>trellis.TRELLIS_EUCLIDEAN</value> - </param> - <param> - <key>_coordinate</key> - <value>(75, 1495)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>prefix</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>"../../../"</value> - </param> - <param> - <key>_coordinate</key> - <value>(871, 14)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx_1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1400, 262)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_numbersink2</key> - <param> - <key>id</key> - <value>wxgui_numbersink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>BER 1 (raw)</value> - </param> - <param> - <key>units</key> - <value>BER</value> - </param> - <param> - <key>samp_rate</key> - <value>R</value> - </param> - <param> - <key>base_value</key> - <value>0.0</value> - </param> - <param> - <key>min_value</key> - <value>0</value> - </param> - <param> - <key>max_value</key> - <value>1</value> - </param> - <param> - <key>factor</key> - <value>1.0</value> - </param> - <param> - <key>decimal_places</key> - <value>6</value> - </param> - <param> - <key>ref_level</key> - <value>0</value> - </param> - <param> - <key>number_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0.001</value> - </param> - <param> - <key>show_gauge</key> - <value>True</value> - </param> - <param> - <key>grid_pos</key> - <value>0,0,1,1</value> - </param> - <param> - <key>_coordinate</key> - <value>(1267, 410)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>R</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1533, 149)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>random_source_x_1</source_block_id> - <sink_block_id>trellis_encoder_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_encoder_xx_0</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_encoder_xx_1</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_chunks_to_symbols_xx_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_0</source_block_id> - <sink_block_id>gr_add_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_noise_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_chunks_to_symbols_xx_1</source_block_id> - <sink_block_id>gr_multiply_const_vxx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx_1</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_0</source_block_id> - <sink_block_id>gr_multiply_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_0</source_block_id> - <sink_block_id>gr_multiply_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_xx_0</source_block_id> - <sink_block_id>gr_short_to_float_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_short_to_float_0</source_block_id> - <sink_block_id>wxgui_numbersink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_xx_2</source_block_id> - <sink_block_id>gr_short_to_float_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>trellis_encoder_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_1</source_block_id> - <sink_block_id>trellis_viterbi_combined_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>gr_sub_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_1</source_block_id> - <sink_block_id>gr_sub_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_0</source_block_id> - <sink_block_id>gr_sub_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>random_source_x_1</source_block_id> - <sink_block_id>gr_sub_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_1</source_block_id> - <sink_block_id>gr_multiply_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_1</source_block_id> - <sink_block_id>gr_multiply_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_2</source_block_id> - <sink_block_id>trellis_viterbi_combined_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_1</source_block_id> - <sink_block_id>gr_sub_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_encoder_xx_2</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_chunks_to_symbols_xx_2</source_block_id> - <sink_block_id>gr_multiply_const_vxx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx_2</source_block_id> - <sink_block_id>gr_sub_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_1</source_block_id> - <sink_block_id>trellis_encoder_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_xx_1</source_block_id> - <sink_block_id>gr_short_to_float_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_short_to_float_2</source_block_id> - <sink_block_id>wxgui_numbersink2_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_2</source_block_id> - <sink_block_id>gr_sub_xx_3</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_3</source_block_id> - <sink_block_id>gr_multiply_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_3</source_block_id> - <sink_block_id>gr_multiply_xx_1</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_1</source_block_id> - <sink_block_id>trellis_viterbi_combined_xx_2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>random_source_x_1</source_block_id> - <sink_block_id>gr_sub_xx_3</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_short_to_float_1</source_block_id> - <sink_block_id>wxgui_numbersink2_3</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_encoder_xx_2_0</source_block_id> - <sink_block_id>gr_chunks_to_symbols_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_chunks_to_symbols_xx_2_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_2</source_block_id> - <sink_block_id>trellis_encoder_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_xx_2_0</source_block_id> - <sink_block_id>gr_short_to_float_1_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>trellis_viterbi_combined_xx_0_0</source_block_id> - <sink_block_id>gr_sub_xx_1_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_1_0</source_block_id> - <sink_block_id>gr_multiply_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_1_0</source_block_id> - <sink_block_id>gr_multiply_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_sub_xx_2_0</source_block_id> - <sink_block_id>trellis_viterbi_combined_xx_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_short_to_float_1_0</source_block_id> - <sink_block_id>wxgui_numbersink2_3_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_1</source_block_id> - <sink_block_id>gr_sub_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>gr_sub_xx_1_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx_2_0</source_block_id> - <sink_block_id>gr_sub_xx_2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx_1</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/trellis/readme.txt b/grc/examples/trellis/readme.txt deleted file mode 100644 index d620fd6282..0000000000 --- a/grc/examples/trellis/readme.txt +++ /dev/null @@ -1,16 +0,0 @@ -This is an example of using gr-trellis in grc. - -Two users are transmitting simultaneously using convolutionally encoded QPSK, each with power P1=alpha*P and P2=(1-alpha)*P. -The combined signal is observed in noise and four different receivers are considered: -1) A viterbi decoder decoding user 1 assuming user 2 is noise -2) A viterbi decoder decoding user 2 assuming user 1 is noise -3) A viterbi decoder decoding user 1 first - and then reencoding this signal, subtracting it from the observation - and then running a Viterbi decoder decoding user 2 -4) A viterbi decoder decoding user 2 first - and then reencoding this signal, subtracting it from the observation - and then running a Viterbi decoder decoding user 1 - -You can change the signal to noise ratio P/sigma^2 and the allocation of power to the two users, alpha. - -Enjoy. diff --git a/grc/examples/usrp/.gitignore b/grc/examples/usrp/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/usrp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/usrp/usrp2_const_wave.grc b/grc/examples/usrp/usrp2_const_wave.grc deleted file mode 100644 index fdbd7c1f39..0000000000 --- a/grc/examples/usrp/usrp2_const_wave.grc +++ /dev/null @@ -1,252 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Wed Apr 15 11:22:56 2009</timestamp> - <block> - <key>const_source_x</key> - <param> - <key>id</key> - <value>const_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>ampl</value> - </param> - <param> - <key>_coordinate</key> - <value>(284, 154)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp2_sink_xxxx</key> - <param> - <key>id</key> - <value>usrp2_sink_xxxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>interface</key> - <value></value> - </param> - <param> - <key>mac_addr</key> - <value></value> - </param> - <param> - <key>interpolation</key> - <value>interp</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq</value> - </param> - <param> - <key>gain</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(493, 106)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>interp</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>16</value> - </param> - <param> - <key>_coordinate</key> - <value>(16, 255)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>USRP2 Freq (Hz)</value> - </param> - <param> - <key>value</key> - <value>2.45e9</value> - </param> - <param> - <key>min</key> - <value>2.4e9</value> - </param> - <param> - <key>max</key> - <value>2.5e9</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_length</key> - <value>200</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(30, 376)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Amplitude</value> - </param> - <param> - <key>value</key> - <value>.1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_length</key> - <value>200</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(204, 376)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>options</key> - <param> - <key>id</key> - <value>usrp2_const_wave</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>USRP2 Constant Wave</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>Tune USRP2</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>const_source_x_0</source_block_id> - <sink_block_id>usrp2_sink_xxxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/usrp/usrp2_dpsk_mod.grc b/grc/examples/usrp/usrp2_dpsk_mod.grc deleted file mode 100644 index e9f9b41ea9..0000000000 --- a/grc/examples/usrp/usrp2_dpsk_mod.grc +++ /dev/null @@ -1,693 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Wed Apr 15 17:31:00 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>usrp2_dpsk_mod</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>USRP2 DPSK Modulation</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>Generate a DPSK signal</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>100e6/interp</value> - </param> - <param> - <key>_coordinate</key> - <value>(52, 166)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp2_sink_xxxx</key> - <param> - <key>id</key> - <value>usrp2_sink_xxxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>interface</key> - <value></value> - </param> - <param> - <key>mac_addr</key> - <value></value> - </param> - <param> - <key>interpolation</key> - <value>interp</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq</value> - </param> - <param> - <key>gain</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(1059, 56)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>const</key> - <value>ampl</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(679, 58)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_dxpsk_mod</key> - <param> - <key>id</key> - <value>blks2_dxpsk_mod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>dqpsk</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> - </param> - <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>gray_code</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(468, 55)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>interp</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>100</value> - </param> - <param> - <key>_coordinate</key> - <value>(31, 256)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samps_per_sym</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>8</value> - </param> - <param> - <key>_coordinate</key> - <value>(126, 250)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>random_source_x</key> - <param> - <key>id</key> - <value>random_source_x_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>256</value> - </param> - <param> - <key>num_samps</key> - <value>1000</value> - </param> - <param> - <key>repeat</key> - <value>True</value> - </param> - <param> - <key>_coordinate</key> - <value>(255, 39)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Amplitude</value> - </param> - <param> - <key>value</key> - <value>.1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(246, 372)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>rx_freq_off</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>RX Freq Offset (Hz)</value> - </param> - <param> - <key>value</key> - <value>-20e3</value> - </param> - <param> - <key>min</key> - <value>-50e3</value> - </param> - <param> - <key>max</key> - <value>+50e3</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(247, 508)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>USRP2 Freq (Hz)</value> - </param> - <param> - <key>value</key> - <value>2.45e9</value> - </param> - <param> - <key>min</key> - <value>2.4e9</value> - </param> - <param> - <key>max</key> - <value>2.5e9</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(49, 341)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_constellationsink2</key> - <param> - <key>id</key> - <value>wxgui_constellationsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>Constellation Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_rate</key> - <value>5</value> - </param> - <param> - <key>const_size</key> - <value>2048</value> - </param> - <param> - <key>M</key> - <value>4</value> - </param> - <param> - <key>theta</key> - <value>0</value> - </param> - <param> - <key>alpha</key> - <value>0.005</value> - </param> - <param> - <key>fmax</key> - <value>0.06</value> - </param> - <param> - <key>mu</key> - <value>0.5</value> - </param> - <param> - <key>gain_mu</key> - <value>0.005</value> - </param> - <param> - <key>symbol_rate</key> - <value>samp_rate/samps_per_sym</value> - </param> - <param> - <key>omega_limit</key> - <value>0.005</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(920, 202)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>tun_freq</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(691, 155)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>1e-6</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(515, 272)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp2_source_xxxx</key> - <param> - <key>id</key> - <value>usrp2_source_xxxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>interface</key> - <value>eth1</value> - </param> - <param> - <key>mac_addr</key> - <value></value> - </param> - <param> - <key>decimation</key> - <value>interp</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq + rx_freq_off</value> - </param> - <param> - <key>gain</key> - <value>30</value> - </param> - <param> - <key>_coordinate</key> - <value>(270, 200)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>blks2_dxpsk_mod_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_dxpsk_mod_0</source_block_id> - <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx_0</source_block_id> - <sink_block_id>usrp2_sink_xxxx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>usrp2_source_xxxx_0</source_block_id> - <sink_block_id>wxgui_constellationsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>usrp2_source_xxxx_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>usrp2_source_xxxx_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/usrp/usrp2_fft.grc b/grc/examples/usrp/usrp2_fft.grc deleted file mode 100644 index 134bd46146..0000000000 --- a/grc/examples/usrp/usrp2_fft.grc +++ /dev/null @@ -1,264 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Wed Apr 15 17:30:20 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>usrp2_fft</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>USRP2 FFT Plotter</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>FFT waveform plot</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>100e6/decim</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 170)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>decim</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>16</value> - </param> - <param> - <key>_coordinate</key> - <value>(24, 267)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>USRP2 Freq (Hz)</value> - </param> - <param> - <key>value</key> - <value>2.45e9</value> - </param> - <param> - <key>min</key> - <value>2.4e9</value> - </param> - <param> - <key>max</key> - <value>2.5e9</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(32, 365)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>tun_freq</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(466, 100)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp2_source_xxxx</key> - <param> - <key>id</key> - <value>usrp2_source_xxxx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>interface</key> - <value></value> - </param> - <param> - <key>mac_addr</key> - <value></value> - </param> - <param> - <key>decimation</key> - <value>decim</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq</value> - </param> - <param> - <key>gain</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(211, 200)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>usrp2_source_xxxx_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/usrp/usrp_two_tone_loopback.grc b/grc/examples/usrp/usrp_two_tone_loopback.grc deleted file mode 100644 index 3df9770444..0000000000 --- a/grc/examples/usrp/usrp_two_tone_loopback.grc +++ /dev/null @@ -1,749 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Fri Apr 17 18:23:35 2009</timestamp> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>64e6/200</value> - </param> - <param> - <key>_coordinate</key> - <value>(9, 166)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>int(100e6)</value> - </param> - <param> - <key>_coordinate</key> - <value>(116, 166)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>tone1</value> - </param> - <param> - <key>amp</key> - <value>tone_ampl</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(258, 20)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>tone2</value> - </param> - <param> - <key>amp</key> - <value>tone_ampl</value> - </param> - <param> - <key>offset</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(255, 179)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_add_xx</key> - <param> - <key>id</key> - <value>gr_add_xx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>3</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(528, 78)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>tx_side</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>A</value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>_coordinate</key> - <value>(688, 384)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp_simple_sink_x</key> - <param> - <key>id</key> - <value>usrp_simple_sink_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>format</key> - <value></value> - </param> - <param> - <key>which</key> - <value>0</value> - </param> - <param> - <key>interpolation</key> - <value>400</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq</value> - </param> - <param> - <key>gain</key> - <value>0</value> - </param> - <param> - <key>side</key> - <value>tx_side</value> - </param> - <param> - <key>transmit</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(835, 5)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp_simple_source_x</key> - <param> - <key>id</key> - <value>usrp_simple_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>format</key> - <value></value> - </param> - <param> - <key>which</key> - <value>0</value> - </param> - <param> - <key>decimation</key> - <value>200</value> - </param> - <param> - <key>frequency</key> - <value>tun_freq</value> - </param> - <param> - <key>gain</key> - <value>20</value> - </param> - <param> - <key>side</key> - <value>rx_side</value> - </param> - <param> - <key>rx_ant</key> - <value>rx_ant</value> - </param> - <param> - <key>hb_filters</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(479, 224)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>rx_ant</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>RXA</value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>_coordinate</key> - <value>(802, 384)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>100</value> - </param> - <param> - <key>fft_size</key> - <value>512*2</value> - </param> - <param> - <key>fft_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 2, 2, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(746, 133)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>rx_side</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>A</value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>_coordinate</key> - <value>(568, 382)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_noise_source_x</key> - <param> - <key>id</key> - <value>gr_noise_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noise_ampl</value> - </param> - <param> - <key>seed</key> - <value>42</value> - </param> - <param> - <key>_coordinate</key> - <value>(276, 312)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>noise_ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Noise Ampl</value> - </param> - <param> - <key>value</key> - <value>2000</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>5000</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_VERTICAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 1, 2, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(20, 243)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tone_ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Tone Ampl</value> - </param> - <param> - <key>value</key> - <value>5000</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>10e3</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_VERTICAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 2, 1</value> - </param> - <param> - <key>_coordinate</key> - <value>(28, 437)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tone1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Tone 1</value> - </param> - <param> - <key>value</key> - <value>50e3</value> - </param> - <param> - <key>min</key> - <value>-samp_rate/2</value> - </param> - <param> - <key>max</key> - <value>samp_rate/2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(190, 436)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tone2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Tone 2</value> - </param> - <param> - <key>value</key> - <value>75e3</value> - </param> - <param> - <key>min</key> - <value>-samp_rate/2</value> - </param> - <param> - <key>max</key> - <value>samp_rate/2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 4, 1, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(367, 439)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>options</key> - <param> - <key>id</key> - <value>usrp_two_tone_loopback</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>USRP Loopback - 2 Tone</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>Loopback test with basic rx and basic tx</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>gr_sig_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_sig_source_x0</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_noise_source_x</source_block_id> - <sink_block_id>gr_add_xx</sink_block_id> - <source_key>0</source_key> - <sink_key>2</sink_key> - </connection> - <connection> - <source_block_id>usrp_simple_source_x</source_block_id> - <sink_block_id>wxgui_fftsink2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_add_xx</source_block_id> - <sink_block_id>usrp_simple_sink_x</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/usrp/usrp_wbfm_receive.grc b/grc/examples/usrp/usrp_wbfm_receive.grc deleted file mode 100644 index 8f53475ab5..0000000000 --- a/grc/examples/usrp/usrp_wbfm_receive.grc +++ /dev/null @@ -1,466 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Fri Apr 17 19:06:07 2009</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>usrp_wbfm_receive</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>USRP WBFM Receive</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>WBFM Receive with Basic RX or TV RX</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>realtime_scheduling</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>decim</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>200</value> - </param> - <param> - <key>_coordinate</key> - <value>(14, 173)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>volume</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Volume</value> - </param> - <param> - <key>value</key> - <value>1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>10</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(991, 40)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>usrp_simple_source_x</key> - <param> - <key>id</key> - <value>usrp_simple_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>format</key> - <value></value> - </param> - <param> - <key>which</key> - <value>0</value> - </param> - <param> - <key>decimation</key> - <value>decim</value> - </param> - <param> - <key>frequency</key> - <value>(freq+fine)*1e6</value> - </param> - <param> - <key>gain</key> - <value>20</value> - </param> - <param> - <key>side</key> - <value>A</value> - </param> - <param> - <key>rx_ant</key> - <value>None</value> - </param> - <param> - <key>hb_filters</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(277, 29)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>64e6/decim</value> - </param> - <param> - <key>baseband_freq</key> - <value>(freq+fine)*1e6</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>fft_size</key> - <value>512</value> - </param> - <param> - <key>fft_rate</key> - <value>15</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value>2, 0, 2, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(512, 191)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Frequency (MHz)</value> - </param> - <param> - <key>value</key> - <value>100</value> - </param> - <param> - <key>min</key> - <value>87.5</value> - </param> - <param> - <key>max</key> - <value>108.0</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(104, 243)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>fine</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Fine Freq (MHz)</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>-.1</value> - </param> - <param> - <key>max</key> - <value>.1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 2, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(275, 246)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blks2_wfm_rcv</key> - <param> - <key>id</key> - <value>blks2_wfm_rcv</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>quad_rate</key> - <value>64e6/decim</value> - </param> - <param> - <key>audio_decimation</key> - <value>10</value> - </param> - <param> - <key>_coordinate</key> - <value>(510, 37)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_multiply_const_vxx</key> - <param> - <key>id</key> - <value>gr_multiply_const_vxx</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>const</key> - <value>volume</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(764, 55)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>audio_sink</key> - <param> - <key>id</key> - <value>audio_sink</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>samp_rate</key> - <value>32000</value> - </param> - <param> - <key>device_name</key> - <value></value> - </param> - <param> - <key>ok_to_block</key> - <value>True</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(703, 241)</value> - </param> - <param> - <key>_rotation</key> - <value>180</value> - </param> - </block> - <connection> - <source_block_id>usrp_simple_source_x</source_block_id> - <sink_block_id>blks2_wfm_rcv</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>usrp_simple_source_x</source_block_id> - <sink_block_id>wxgui_fftsink2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>blks2_wfm_rcv</source_block_id> - <sink_block_id>gr_multiply_const_vxx</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_multiply_const_vxx</source_block_id> - <sink_block_id>audio_sink</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> diff --git a/grc/examples/xmlrpc/.gitignore b/grc/examples/xmlrpc/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/grc/examples/xmlrpc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/grc/examples/xmlrpc/readme.txt b/grc/examples/xmlrpc/readme.txt deleted file mode 100644 index c1f87c1cb5..0000000000 --- a/grc/examples/xmlrpc/readme.txt +++ /dev/null @@ -1,18 +0,0 @@ -################################################## -# XMLRPC example -################################################## - -XMLRPC allows software to make remote function calls over http. -In the case of GRC, one can use XMLRPC to modify variables in a running flow graph. -See http://www.xmlrpc.com/ - ---- Server Example --- -Place an "XMLRPC Server" block inside of any flow graph. -The server will provide set functions for every variable in the flow graph. -If a variable is called "freq", the server will provide a function set_freq(new_freq). -Run the server example and experiment with the example client script. - --- Client Example -- -The "XMLRPC Client" block will give a variable control over one remove function. -In the example client, there is one client block and gui control per variable. -This technique can be used to remotely control a flow graph, perhaps running on a non-gui machine. diff --git a/grc/examples/xmlrpc/xmlrpc_client.grc b/grc/examples/xmlrpc/xmlrpc_client.grc deleted file mode 100644 index 3bb4e7ed3b..0000000000 --- a/grc/examples/xmlrpc/xmlrpc_client.grc +++ /dev/null @@ -1,312 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Jul 24 14:27:44 2008</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>client_block</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>XMLRPC Client</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>example flow graph</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>xmlrpc_client</key> - <param> - <key>id</key> - <value>xmlrpc_client0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>addr</key> - <value>localhost</value> - </param> - <param> - <key>port</key> - <value>1234</value> - </param> - <param> - <key>callback</key> - <value>set_ampl</value> - </param> - <param> - <key>variable</key> - <value>ampl</value> - </param> - <param> - <key>_coordinate</key> - <value>(409, 35)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>xmlrpc_client</key> - <param> - <key>id</key> - <value>xmlrpc_client</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>addr</key> - <value>localhost</value> - </param> - <param> - <key>port</key> - <value>1234</value> - </param> - <param> - <key>callback</key> - <value>set_freq</value> - </param> - <param> - <key>variable</key> - <value>freq</value> - </param> - <param> - <key>_coordinate</key> - <value>(222, 34)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Frequency (Hz)</value> - </param> - <param> - <key>value</key> - <value>1000</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>5000</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(207, 162)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Amplitude</value> - </param> - <param> - <key>value</key> - <value>1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>slider_type</key> - <value>horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(397, 167)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_chooser</key> - <param> - <key>id</key> - <value>offset</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Offset</value> - </param> - <param> - <key>value_index</key> - <value>1</value> - </param> - <param> - <key>choices</key> - <value>[-1, 0, 1]</value> - </param> - <param> - <key>labels</key> - <value>["neg", "zero", "pos"]</value> - </param> - <param> - <key>chooser_type</key> - <value>radio_buttons_horizontal</value> - </param> - <param> - <key>grid_pos</key> - <value>2, 0, 1, 2</value> - </param> - <param> - <key>_coordinate</key> - <value>(596, 177)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>xmlrpc_client</key> - <param> - <key>id</key> - <value>xmlrpc_client1</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>addr</key> - <value>localhost</value> - </param> - <param> - <key>port</key> - <value>1234</value> - </param> - <param> - <key>callback</key> - <value>set_offset</value> - </param> - <param> - <key>variable</key> - <value>offset*ampl</value> - </param> - <param> - <key>_coordinate</key> - <value>(608, 39)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(13, 172)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> -</flow_graph> \ No newline at end of file diff --git a/grc/examples/xmlrpc/xmlrpc_client_script.py b/grc/examples/xmlrpc/xmlrpc_client_script.py deleted file mode 100644 index 956fa07fb7..0000000000 --- a/grc/examples/xmlrpc/xmlrpc_client_script.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python - -import time -import random -import xmlrpclib - -#create server object -s = xmlrpclib.Server("http://localhost:1234") - -#randomly change parameters of the sinusoid -for i in range(10): - #generate random values - new_freq = random.uniform(0, 5000) - new_ampl = random.uniform(0, 2) - new_offset = random.uniform(-1, 1) - #set new values - time.sleep(1) - s.set_freq(new_freq) - time.sleep(1) - s.set_ampl(new_ampl) - time.sleep(1) - s.set_offset(new_offset) - diff --git a/grc/examples/xmlrpc/xmlrpc_server.grc b/grc/examples/xmlrpc/xmlrpc_server.grc deleted file mode 100644 index dc539ef1b1..0000000000 --- a/grc/examples/xmlrpc/xmlrpc_server.grc +++ /dev/null @@ -1,384 +0,0 @@ -<?xml version='1.0' encoding='ASCII'?> -<flow_graph> - <timestamp>Thu Jul 24 14:27:42 2008</timestamp> - <block> - <key>options</key> - <param> - <key>id</key> - <value>server_block</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>title</key> - <value>XMLRPC Server</value> - </param> - <param> - <key>author</key> - <value>Example</value> - </param> - <param> - <key>description</key> - <value>example flow graph</value> - </param> - <param> - <key>window_size</key> - <value>1280, 1024</value> - </param> - <param> - <key>generate_options</key> - <value>wx_gui</value> - </param> - <param> - <key>category</key> - <value>Custom</value> - </param> - <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_sig_source_x</key> - <param> - <key>id</key> - <value>gr_sig_source_x</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>waveform</key> - <value>gr.GR_COS_WAVE</value> - </param> - <param> - <key>freq</key> - <value>freq</value> - </param> - <param> - <key>amp</key> - <value>ampl</value> - </param> - <param> - <key>offset</key> - <value>offset</value> - </param> - <param> - <key>_coordinate</key> - <value>(162, 200)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>offset</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>_coordinate</key> - <value>(12, 390)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>xmlrpc_server</key> - <param> - <key>id</key> - <value>xmlrpc_server</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>addr</key> - <value>localhost</value> - </param> - <param> - <key>port</key> - <value>1234</value> - </param> - <param> - <key>_coordinate</key> - <value>(395, 240)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_throttle</key> - <param> - <key>id</key> - <value>gr_throttle</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>samples_per_second</key> - <value>samp_rate</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(386, 93)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_scopesink2</key> - <param> - <key>id</key> - <value>wxgui_scopesink2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_decim</key> - <value>15</value> - </param> - <param> - <key>v_scale</key> - <value>0</value> - </param> - <param> - <key>t_scale</key> - <value>.001</value> - </param> - <param> - <key>marker</key> - <value>set_format_line</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 2, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(623, 28)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>8</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>fft_size</key> - <value>512</value> - </param> - <param> - <key>fft_rate</key> - <value>15</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>grid_pos</key> - <value>2, 0, 2, 4</value> - </param> - <param> - <key>_coordinate</key> - <value>(630, 233)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32000</value> - </param> - <param> - <key>_coordinate</key> - <value>(11, 160)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>1000</value> - </param> - <param> - <key>_coordinate</key> - <value>(11, 237)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(13, 315)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <connection> - <source_block_id>gr_sig_source_x</source_block_id> - <sink_block_id>gr_throttle</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle</source_block_id> - <sink_block_id>wxgui_scopesink2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_throttle</source_block_id> - <sink_block_id>wxgui_fftsink2</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> -</flow_graph> \ No newline at end of file -- cgit v1.2.3 From 29fed0b4e92d862f43d75f364aa028b6658e76c3 Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Tue, 6 Oct 2009 18:04:38 -0700 Subject: removed unused git ignores --- gnuradio-examples/grc/audio/.gitignore | 2 -- gnuradio-examples/grc/simple/.gitignore | 2 -- gnuradio-examples/grc/trellis/.gitignore | 2 -- gnuradio-examples/grc/usrp/.gitignore | 2 -- gnuradio-examples/grc/xmlrpc/.gitignore | 2 -- 5 files changed, 10 deletions(-) delete mode 100644 gnuradio-examples/grc/audio/.gitignore delete mode 100644 gnuradio-examples/grc/simple/.gitignore delete mode 100644 gnuradio-examples/grc/trellis/.gitignore delete mode 100644 gnuradio-examples/grc/usrp/.gitignore delete mode 100644 gnuradio-examples/grc/xmlrpc/.gitignore diff --git a/gnuradio-examples/grc/audio/.gitignore b/gnuradio-examples/grc/audio/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/gnuradio-examples/grc/audio/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/gnuradio-examples/grc/simple/.gitignore b/gnuradio-examples/grc/simple/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/gnuradio-examples/grc/simple/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/gnuradio-examples/grc/trellis/.gitignore b/gnuradio-examples/grc/trellis/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/gnuradio-examples/grc/trellis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/gnuradio-examples/grc/usrp/.gitignore b/gnuradio-examples/grc/usrp/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/gnuradio-examples/grc/usrp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/gnuradio-examples/grc/xmlrpc/.gitignore b/gnuradio-examples/grc/xmlrpc/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/gnuradio-examples/grc/xmlrpc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in -- cgit v1.2.3 From a9ce8f917e94024f74d021079d8b71077dc3f220 Mon Sep 17 00:00:00 2001 From: Matt Ettus <matt@ettus.com> Date: Tue, 6 Oct 2009 18:08:01 -0700 Subject: progress --- gnuradio-examples/grc/pam_timing.grc | 212 ++++++++++++++++++++++++++++------- 1 file changed, 171 insertions(+), 41 deletions(-) diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index 45fcbc0ec3..8722714b8f 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 17:50:59 2009</timestamp> + <timestamp>Tue Oct 6 18:00:19 2009</timestamp> <block> <key>options</key> <param> @@ -463,45 +463,6 @@ <value>0</value> </param> </block> - <block> - <key>gr_pfb_clock_sync_ccf</key> - <param> - <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>gain</value> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>14</value> - </param> - <param> - <key>_coordinate</key> - <value>(341, 777)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>gr_fractional_interpolator_xx</key> <param> @@ -788,7 +749,164 @@ </param> <param> <key>_coordinate</key> - <value>(724, 796)</value> + <value>(798, 638)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,1</value> + </param> + <param> + <key>_coordinate</key> + <value>(792, 777)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_pfb_clock_sync_ccf</key> + <param> + <key>id</key> + <value>gr_pfb_clock_sync_ccf_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>sps</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>gain</value> + </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> + </param> + <param> + <key>_coordinate</key> + <value>(341, 777)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0_0_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,2</value> + </param> + <param> + <key>_coordinate</key> + <value>(797, 915)</value> </param> <param> <key>_rotation</key> @@ -873,4 +991,16 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> + <source_key>3</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0_0</sink_block_id> + <source_key>2</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> -- cgit v1.2.3 From dd7adee2762b62adf80c3e4fa87d42557a7a78d2 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 18:15:11 -0700 Subject: Fixing io signature for debug outputs. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 79779c91cf..60ce5d2b3e 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -43,14 +43,15 @@ gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, init_phase)); } - +int ios[] = {sizeof(gr_complex), sizeof(float), sizeof(float), sizeof(float)}; +std::vector<int> iosig(ios, ios+sizeof(ios)/sizeof(int)); gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase) : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), - gr_make_io_signature2 (1, 2, sizeof(gr_complex), sizeof(float))), + gr_make_io_signaturev (1, 4, iosig)), d_updated (false), d_sps(sps) { d_nfilters = filter_size; -- cgit v1.2.3 From 45286cd769e42c325b7c65a2f0a96757e2e97b97 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 19:31:45 -0700 Subject: Adding accessor functions for both alpha and beta. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 3 +- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 9 +- .../src/lib/filter/gr_pfb_clock_sync_ccf.i | 3 +- gnuradio-examples/grc/demod/pam_timing.grc | 373 ++++++++++++++------- grc/blocks/gr_pfb_clock_sync.xml | 11 +- 5 files changed, 273 insertions(+), 126 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 60ce5d2b3e..62282fd6af 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -60,7 +60,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, // The accumulator keeps track of overflow to increment the stride correctly. // set it here to the fractional difference based on the initial phaes // assert(init_phase <= 2*M_PI); - set_gain(gain); + set_alpha(gain); + set_beta(0.25*gain*gain); d_k = d_nfilters / 2; d_rate = 0; d_start_count = 0; diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index b8e0f83b68..5a60619319 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -98,10 +98,13 @@ public: void print_taps(); void print_diff_taps(); - void set_gain(float gain) + void set_alpha(float alpha) { - d_alpha = gain; - d_beta = 0.25*d_alpha*d_alpha; + d_alpha = alpha; + } + void set_beta(float beta) + { + d_beta = beta; } int general_work (int noutput_items, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i index 9defbc7cd0..7859154791 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i @@ -46,5 +46,6 @@ class gr_pfb_clock_sync_ccf : public gr_block std::vector<float> diff_channel_taps(int channel); void print_taps(); void print_diff_taps(); - void set_gain(float gain); + void set_alpha(float alpha); + void set_beta(float beta); }; diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 8722714b8f..4152d79a96 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 18:00:19 2009</timestamp> + <timestamp>Tue Oct 6 19:23:45 2009</timestamp> <block> <key>options</key> <param> @@ -367,29 +367,6 @@ <value>0</value> </param> </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>rrctaps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts)</value> - </param> - <param> - <key>_coordinate</key> - <value>(180, 935)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>gr_throttle</key> <param> @@ -463,37 +440,6 @@ <value>0</value> </param> </block> - <block> - <key>gr_fractional_interpolator_xx</key> - <param> - <key>id</key> - <value>gr_fractional_interpolator_xx_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>phase_shift</key> - <value>0.5</value> - </param> - <param> - <key>interp_ratio</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(349, 662)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable</key> <param> @@ -577,42 +523,53 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>gain</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Gain</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>0</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>min</key> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(482, 130)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>notebook</key> <param> - <key>max</key> - <value>1</value> + <key>id</key> + <value>notebook_0</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>wx.NB_TOP</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>labels</key> + <value>['error', 'phase', 'freq']</value> </param> <param> <key>grid_pos</key> @@ -624,7 +581,7 @@ </param> <param> <key>_coordinate</key> - <value>(757, -1)</value> + <value>(851, 531)</value> </param> <param> <key>_rotation</key> @@ -632,10 +589,56 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>variable</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>rrctaps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts)</value> + </param> + <param> + <key>_coordinate</key> + <value>(110, 830)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>initphase</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>0.5</value> + </param> + <param> + <key>_coordinate</key> + <value>(110, 913)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_fractional_interpolator_xx</key> + <param> + <key>id</key> + <value>gr_fractional_interpolator_xx_0</value> </param> <param> <key>_enabled</key> @@ -643,19 +646,19 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>phase_shift</key> + <value>initphase</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>interp_ratio</key> + <value>interpratio</value> </param> <param> <key>_coordinate</key> - <value>(482, 130)</value> + <value>(349, 662)</value> </param> <param> <key>_rotation</key> @@ -663,22 +666,42 @@ </param> </block> <block> - <key>notebook</key> + <key>variable_slider</key> <param> <key>id</key> - <value>notebook_0</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> <param> <key>style</key> - <value>wx.NB_TOP</value> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>labels</key> - <value>['error', 'phase', 'freq']</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -690,7 +713,7 @@ </param> <param> <key>_coordinate</key> - <value>(851, 531)</value> + <value>(232, 921)</value> </param> <param> <key>_rotation</key> @@ -713,7 +736,7 @@ </param> <param> <key>title</key> - <value>Scope Plot</value> + <value>Error</value> </param> <param> <key>samp_rate</key> @@ -721,7 +744,7 @@ </param> <param> <key>v_scale</key> - <value>0</value> + <value>.5</value> </param> <param> <key>t_scale</key> @@ -780,7 +803,7 @@ </param> <param> <key>v_scale</key> - <value>0</value> + <value>9</value> </param> <param> <key>t_scale</key> @@ -816,38 +839,58 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> + <key>type</key> + <value>float</value> </param> <param> - <key>gain</key> - <value>gain</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>v_scale</key> + <value>1.25</value> </param> <param> - <key>init_phase</key> - <value>14</value> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(341, 777)</value> + <value>(797, 915)</value> </param> <param> <key>_rotation</key> @@ -855,58 +898,152 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>alpha</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>label</key> + <value>Alpha</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>value</key> + <value>0</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>min</key> + <value>0</value> </param> <param> - <key>v_scale</key> - <value>0</value> + <key>max</key> + <value>1</value> </param> <param> - <key>t_scale</key> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(757, -1)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable_slider</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>beta</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_inputs</key> + <key>label</key> + <value>Beta</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> <value>1</value> </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> <param> <key>grid_pos</key> <value></value> </param> <param> <key>notebook</key> - <value>notebook_0,2</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(797, 915)</value> + <value>(871, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_pfb_clock_sync_ccf</key> + <param> + <key>id</key> + <value>gr_pfb_clock_sync_ccf_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>sps</key> + <value>spb</value> + </param> + <param> + <key>alpha</key> + <value>alpha</value> + </param> + <param> + <key>beta</key> + <value>beta</value> + </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> + </param> + <param> + <key>_coordinate</key> + <value>(346, 773)</value> </param> <param> <key>_rotation</key> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index 3a066c23c1..c9487f52c4 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -8,7 +8,7 @@ <name>Polyphase Clock Sync</name> <key>gr_pfb_clock_sync_ccf</key> <import>from gnuradio import gr</import> - <make>gr.pfb_clock_sync_ccf($sps, $gain, $taps, $filter_size, $init_phase)</make> + <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase)</make> <callback>set_taps($taps)</callback> <callback>set_gain($gain)</callback> @@ -18,8 +18,13 @@ <type>real</type> </param> <param> - <name>Gain</name> - <key>gain</key> + <name>Alpha</name> + <key>alpha</key> + <type>real</type> + </param> + <param> + <name>Beta</name> + <key>beta</key> <type>real</type> </param> <param> -- cgit v1.2.3 From da451d5d8b85cde797658415f0186d248f2f53dd Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 19:44:58 -0700 Subject: Fixing previous checkin --- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 2 +- gnuradio-examples/grc/demod/pam_timing.grc | 112 ++++++++++----------- grc/blocks/gr_pfb_clock_sync.xml | 3 +- 3 files changed, 59 insertions(+), 58 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 5a60619319..14e958691a 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -99,7 +99,7 @@ public: void print_diff_taps(); void set_alpha(float alpha) - { + { d_alpha = alpha; } void set_beta(float beta) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 4152d79a96..fae16841d5 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 19:23:45 2009</timestamp> + <timestamp>Tue Oct 6 19:43:52 2009</timestamp> <block> <key>options</key> <param> @@ -665,61 +665,6 @@ <value>0</value> </param> </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>interpratio</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(232, 921)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>wxgui_scopesink2</key> <param> @@ -1050,6 +995,61 @@ <value>0</value> </param> </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>interpratio</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>1</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(232, 921)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>random_source_x_0</source_block_id> <sink_block_id>gr_uchar_to_float_0</sink_block_id> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index c9487f52c4..e62ab84a36 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -10,7 +10,8 @@ <import>from gnuradio import gr</import> <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase)</make> <callback>set_taps($taps)</callback> - <callback>set_gain($gain)</callback> + <callback>set_alpha($alpha)</callback> + <callback>set_beta($beta)</callback> <param> <name>Samples/Symbol</name> -- cgit v1.2.3 From 1f8e1248f70c4165e4a88b1bac9e9dec903cd668 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Tue, 6 Oct 2009 23:19:15 -0700 Subject: Adding better scope sink defaults. --- gnuradio-examples/grc/demod/pam_timing.grc | 122 ++++++++++++++--------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index fae16841d5..ab34677fae 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 19:43:52 2009</timestamp> + <timestamp>Tue Oct 6 22:05:15 2009</timestamp> <block> <key>options</key> <param> @@ -588,29 +588,6 @@ <value>0</value> </param> </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>rrctaps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts)</value> - </param> - <param> - <key>_coordinate</key> - <value>(110, 830)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable</key> <param> @@ -898,22 +875,65 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> + <value>gr_pfb_clock_sync_ccf_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>sps</key> + <value>spb</value> + </param> + <param> + <key>alpha</key> + <value>alpha</value> + </param> + <param> + <key>beta</key> <value>beta</value> </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> + </param> + <param> + <key>_coordinate</key> + <value>(346, 773)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>interpratio</value> + </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>label</key> - <value>Beta</value> + <value></value> </param> <param> <key>value</key> - <value>0</value> + <value>1</value> </param> <param> <key>min</key> @@ -921,7 +941,7 @@ </param> <param> <key>max</key> - <value>1</value> + <value>2</value> </param> <param> <key>num_steps</key> @@ -945,50 +965,30 @@ </param> <param> <key>_coordinate</key> - <value>(871, 0)</value> + <value>(232, 921)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>variable</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>alpha</value> - </param> - <param> - <key>beta</key> - <value>beta</value> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>14</value> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> </param> <param> <key>_coordinate</key> - <value>(346, 773)</value> + <value>(110, 830)</value> </param> <param> <key>_rotation</key> @@ -999,7 +999,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>interpratio</value> + <value>beta</value> </param> <param> <key>_enabled</key> @@ -1007,19 +1007,19 @@ </param> <param> <key>label</key> - <value></value> + <value>Beta</value> </param> <param> <key>value</key> - <value>1</value> + <value>0</value> </param> <param> <key>min</key> - <value>0</value> + <value>0.0</value> </param> <param> <key>max</key> - <value>2</value> + <value>0.1</value> </param> <param> <key>num_steps</key> @@ -1043,7 +1043,7 @@ </param> <param> <key>_coordinate</key> - <value>(232, 921)</value> + <value>(871, 0)</value> </param> <param> <key>_rotation</key> -- cgit v1.2.3 From 3b7c8a448cbd53b394cc405357ad0831096066f5 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Wed, 7 Oct 2009 11:02:44 -0700 Subject: Clipping the rate of the clock recovery helps track large changes. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 28 ++-- gnuradio-examples/grc/demod/pam_timing.grc | 142 ++++++++++----------- 2 files changed, 91 insertions(+), 79 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 62282fd6af..35fe2a8866 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -115,13 +115,15 @@ gr_pfb_clock_sync_ccf::set_taps (const std::vector<float> &newtaps, // Partition the filter for(i = 0; i < d_nfilters; i++) { // Each channel uses all d_taps_per_filter with 0's if not enough taps to fill out - ourtaps[i] = std::vector<float>(d_taps_per_filter, 0); + //ourtaps[i] = std::vector<float>(d_taps_per_filter, 0); + ourtaps[d_nfilters-1-i] = std::vector<float>(d_taps_per_filter, 0); for(j = 0; j < d_taps_per_filter; j++) { - ourtaps[i][j] = tmp_taps[i + j*d_nfilters]; // add taps to channels in reverse order + ourtaps[d_nfilters - 1 - i][j] = tmp_taps[i + j*d_nfilters]; } // Build a filter for each channel and add it's taps to it - ourfilter[i]->set_taps(ourtaps[i]); + //ourfilter[i]->set_taps(ourtaps[i]); + ourfilter[i]->set_taps(ourtaps[d_nfilters-1-i]); } // Set the history to ensure enough input items for each filter @@ -156,26 +158,30 @@ void gr_pfb_clock_sync_ccf::print_taps() { unsigned int i, j; + printf("[ "); for(i = 0; i < d_nfilters; i++) { - printf("filter[%d]: [%.4e, ", i, d_taps[i][0]); + printf("[%.4e, ", d_taps[i][0]); for(j = 1; j < d_taps_per_filter-1; j++) { printf("%.4e,", d_taps[i][j]); } - printf("%.4e]\n", d_taps[i][j]); + printf("%.4e],", d_taps[i][j]); } + printf(" ]\n"); } void gr_pfb_clock_sync_ccf::print_diff_taps() { unsigned int i, j; + printf("[ "); for(i = 0; i < d_nfilters; i++) { - printf("filter[%d]: [%.4e, ", i, d_dtaps[i][0]); + printf("[%.4e, ", d_dtaps[i][0]); for(j = 1; j < d_taps_per_filter-1; j++) { printf("%.4e,", d_dtaps[i][j]); } - printf("%.4e]\n", d_dtaps[i][j]); + printf("%.4e],", d_dtaps[i][j]); } + printf(" ]\n"); } @@ -232,12 +238,15 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { int filtnum = (int)d_k; + + // FIXME: prevent this from asserting + assert(filtnum < d_nfilters); out[i] = d_filters[filtnum]->filter(&in[count]); error = (out[i] * d_diff_filters[filtnum]->filter(&in[count])).real(); d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; - while(d_k >= d_nfilters) { + while(d_k >= (float)d_nfilters) { d_k -= d_nfilters; count++; } @@ -245,6 +254,9 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_k += d_nfilters; count--; } + + // Keep our rate within a good range + d_rate = gr_branchless_clip(d_rate, 1.5); i++; count += d_sps; diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index ab34677fae..21fb63abec 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Tue Oct 6 22:05:15 2009</timestamp> + <timestamp>Wed Oct 7 11:00:26 2009</timestamp> <block> <key>options</key> <param> @@ -820,54 +820,42 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> - <value>alpha</value> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Alpha</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>alpha</key> + <value>alpha</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>beta</key> + <value>beta</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>notebook</key> - <value></value> + <key>init_phase</key> + <value>14</value> </param> <param> <key>_coordinate</key> - <value>(757, -1)</value> + <value>(346, 773)</value> </param> <param> <key>_rotation</key> @@ -875,42 +863,22 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>variable</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>alpha</value> - </param> - <param> - <key>beta</key> - <value>beta</value> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>14</value> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> </param> <param> <key>_coordinate</key> - <value>(346, 773)</value> + <value>(110, 830)</value> </param> <param> <key>_rotation</key> @@ -921,7 +889,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>interpratio</value> + <value>beta</value> </param> <param> <key>_enabled</key> @@ -929,19 +897,19 @@ </param> <param> <key>label</key> - <value></value> + <value>Beta</value> </param> <param> <key>value</key> - <value>1</value> + <value>10e-3</value> </param> <param> <key>min</key> - <value>0</value> + <value>0.0</value> </param> <param> <key>max</key> - <value>2</value> + <value>0.1</value> </param> <param> <key>num_steps</key> @@ -965,30 +933,62 @@ </param> <param> <key>_coordinate</key> - <value>(232, 921)</value> + <value>(871, 0)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable</key> + <key>variable_slider</key> <param> <key>id</key> - <value>rrctaps</value> + <value>alpha</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>label</key> + <value>Alpha</value> + </param> <param> <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> + <value>2</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>10</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(110, 830)</value> + <value>(757, -1)</value> </param> <param> <key>_rotation</key> @@ -999,7 +999,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>beta</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> @@ -1007,19 +1007,19 @@ </param> <param> <key>label</key> - <value>Beta</value> + <value></value> </param> <param> <key>value</key> - <value>0</value> + <value>1.001</value> </param> <param> <key>min</key> - <value>0.0</value> + <value>0</value> </param> <param> <key>max</key> - <value>0.1</value> + <value>2</value> </param> <param> <key>num_steps</key> @@ -1043,11 +1043,11 @@ </param> <param> <key>_coordinate</key> - <value>(871, 0)</value> + <value>(757, 133)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <connection> -- cgit v1.2.3 From eeea619b80578665fd470f850c390d4aa6782336 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Wed, 7 Oct 2009 17:45:19 -0700 Subject: More stable version of clock sync. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 14 +++++++++----- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 35fe2a8866..fe399ffbae 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -63,6 +63,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, set_alpha(gain); set_beta(0.25*gain*gain); d_k = d_nfilters / 2; + d_filtnum = (int)floor(d_k); d_rate = 0; d_start_count = 0; @@ -237,21 +238,24 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - int filtnum = (int)d_k; // FIXME: prevent this from asserting assert(filtnum < d_nfilters); - out[i] = d_filters[filtnum]->filter(&in[count]); - error = (out[i] * d_diff_filters[filtnum]->filter(&in[count])).real(); + out[i] = d_filters[d_filtnum]->filter(&in[count]); + error = (out[i] * d_diff_filters[d_filtnum]->filter(&in[count])).real(); d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; - while(d_k >= (float)d_nfilters) { + d_filtnum = (int)floor(d_k); + + while(d_filtnum >= d_nfilters) { d_k -= d_nfilters; + d_filtnum -= d_nfilters; count++; } - while(d_k < 0) { + while(d_filtnum < 0) { d_k += d_nfilters; + d_filtnum += d_nfilters; count--; } diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 14e958691a..41e5d7b2a3 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -59,13 +59,14 @@ class gr_pfb_clock_sync_ccf : public gr_block unsigned int d_sps; float d_alpha; float d_beta; - unsigned int d_nfilters; + int d_nfilters; std::vector<gr_fir_ccf*> d_filters; std::vector<gr_fir_ccf*> d_diff_filters; std::vector< std::vector<float> > d_taps; std::vector< std::vector<float> > d_dtaps; float d_k; float d_rate; + int d_filtnum; unsigned int d_start_count; unsigned int d_taps_per_filter; -- cgit v1.2.3 From 521f3e514a7e8a887ba7a35b81d255e85fbcabc1 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Wed, 7 Oct 2009 18:31:50 -0700 Subject: Working sync for QPSK --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index fe399ffbae..7dc5715d90 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -234,15 +234,18 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, int nrequired = ninput_items[0] - d_taps_per_filter; int i = 0, count = d_start_count; - float error = 0; + float error; + float error_r, error_i; // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { // FIXME: prevent this from asserting - assert(filtnum < d_nfilters); + assert(d_filtnum < d_nfilters); out[i] = d_filters[d_filtnum]->filter(&in[count]); - error = (out[i] * d_diff_filters[d_filtnum]->filter(&in[count])).real(); + error_r = out[i].real() * d_diff_filters[d_filtnum]->filter(&in[count]).real(); + error_i = out[i].imag() * d_diff_filters[d_filtnum]->filter(&in[count]).imag(); + error = error_i + error_r; d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; -- cgit v1.2.3 From 7b527030c4f2e207f93942a884ad9bac772db5cc Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Wed, 7 Oct 2009 18:32:35 -0700 Subject: Adding imaginary stream to PAM demo to test IQ sync. Also properly setting beta at runtime from GRC block. --- gnuradio-examples/grc/demod/pam_timing.grc | 791 ++++++++++++++++++----------- grc/blocks/gr_pfb_clock_sync.xml | 3 +- 2 files changed, 496 insertions(+), 298 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 21fb63abec..3acca51a1f 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Wed Oct 7 11:00:26 2009</timestamp> + <timestamp>Wed Oct 7 18:31:11 2009</timestamp> <block> <key>options</key> <param> @@ -57,38 +57,68 @@ </param> </block> <block> - <key>random_source_x</key> + <key>variable</key> <param> <key>id</key> - <value>random_source_x_0</value> + <value>spb</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>value</key> + <value>4</value> </param> <param> - <key>min</key> + <key>_coordinate</key> + <value>(34, 915)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>max</key> - <value>2</value> + <key>id</key> + <value>nfilts</value> </param> <param> - <key>num_samps</key> - <value>1000</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>repeat</key> + <key>value</key> + <value>32</value> + </param> + <param> + <key>_coordinate</key> + <value>(31, 828)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>initphase</value> + </param> + <param> + <key>_enabled</key> <value>True</value> </param> + <param> + <key>value</key> + <value>0.5</value> + </param> <param> <key>_coordinate</key> - <value>(13, 80)</value> + <value>(110, 913)</value> </param> <param> <key>_rotation</key> @@ -96,26 +126,45 @@ </param> </block> <block> - <key>const_source_x</key> + <key>variable</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> </param> <param> - <key>const</key> - <value>-0.5</value> + <key>_coordinate</key> + <value>(110, 830)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>320000</value> </param> <param> <key>_coordinate</key> - <value>(179, 160)</value> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -170,7 +219,7 @@ </param> <param> <key>_coordinate</key> - <value>(600, -1)</value> + <value>(440, 3)</value> </param> <param> <key>_rotation</key> @@ -178,34 +227,45 @@ </param> </block> <block> - <key>gr_noise_source_x</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>gr_noise_source_x_0</value> + <value>gr_uchar_to_float_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>_coordinate</key> + <value>(217, 108)</value> </param> <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>const_source_x</key> <param> - <key>amp</key> - <value>noise_amp</value> + <key>id</key> + <value>const_source_x_0</value> </param> <param> - <key>seed</key> - <value>42</value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> </param> <param> <key>_coordinate</key> - <value>(45, 497)</value> + <value>(213, 197)</value> </param> <param> <key>_rotation</key> @@ -213,10 +273,10 @@ </param> </block> <block> - <key>root_raised_cosine_filter</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>root_raised_cosine_filter_0</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> @@ -224,70 +284,78 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> + <value>float</value> </param> <param> - <key>decim</key> + <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> <value>1</value> </param> <param> - <key>interp</key> - <value>spb</value> + <key>_coordinate</key> + <value>(440, 167)</value> </param> <param> - <key>gain</key> - <value>2*spb</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>wxgui_scopesink2</key> <param> - <key>samp_rate</key> - <value>1.0</value> + <key>id</key> + <value>wxgui_scopesink2_0</value> </param> <param> - <key>sym_rate</key> - <value>1./spb</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>alpha</key> - <value>0.35</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>ntaps</key> - <value>11*spb</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>_coordinate</key> - <value>(50, 295)</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_rotation</key> + <key>v_scale</key> <value>0</value> </param> - </block> - <block> - <key>gr_add_xx</key> <param> - <key>id</key> - <value>gr_add_xx_0_0</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>type</key> - <value>float</value> + <key>xy_mode</key> + <value>False</value> </param> <param> <key>num_inputs</key> - <value>2</value> + <value>1</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(375, 390)</value> + <value>(1155, 281)</value> </param> <param> <key>_rotation</key> @@ -295,10 +363,10 @@ </param> </block> <block> - <key>const_source_x</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>const_source_x_1</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> @@ -306,15 +374,19 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>const</key> - <value>0</value> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(36, 723)</value> + <value>(1128, 428)</value> </param> <param> <key>_rotation</key> @@ -322,22 +394,30 @@ </param> </block> <block> - <key>variable</key> + <key>gr_fractional_interpolator_xx</key> <param> <key>id</key> - <value>spb</value> + <value>gr_fractional_interpolator_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>4</value> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>phase_shift</key> + <value>initphase</value> + </param> + <param> + <key>interp_ratio</key> + <value>interpratio</value> </param> <param> <key>_coordinate</key> - <value>(34, 915)</value> + <value>(116, 530)</value> </param> <param> <key>_rotation</key> @@ -345,22 +425,34 @@ </param> </block> <block> - <key>variable</key> + <key>gr_noise_source_x</key> <param> <key>id</key> - <value>nfilts</value> + <value>gr_noise_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>32</value> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>noise_type</key> + <value>gr.GR_GAUSSIAN</value> + </param> + <param> + <key>amp</key> + <value>noise_amp</value> + </param> + <param> + <key>seed</key> + <value>42</value> </param> <param> <key>_coordinate</key> - <value>(31, 828)</value> + <value>(148, 595)</value> </param> <param> <key>_rotation</key> @@ -368,10 +460,10 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>gr_add_xx_0_0</value> </param> <param> <key>_enabled</key> @@ -382,8 +474,8 @@ <value>complex</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>num_inputs</key> + <value>2</value> </param> <param> <key>vlen</key> @@ -391,7 +483,7 @@ </param> <param> <key>_coordinate</key> - <value>(757, 418)</value> + <value>(393, 561)</value> </param> <param> <key>_rotation</key> @@ -399,18 +491,42 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> - <value>gr_uchar_to_float_0</value> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>sps</key> + <value>spb</value> + </param> + <param> + <key>alpha</key> + <value>alpha</value> + </param> + <param> + <key>beta</key> + <value>beta</value> + </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>14</value> + </param> <param> <key>_coordinate</key> - <value>(261, 107)</value> + <value>(511, 527)</value> </param> <param> <key>_rotation</key> @@ -418,22 +534,58 @@ </param> </block> <block> - <key>gr_float_to_complex</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_float_to_complex_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>vlen</key> + <key>type</key> + <value>float</value> + </param> + <param> + <key>title</key> + <value>Error</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>.5</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> <value>1</value> </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,0</value> + </param> <param> <key>_coordinate</key> - <value>(380, 553)</value> + <value>(1068, 553)</value> </param> <param> <key>_rotation</key> @@ -441,22 +593,34 @@ </param> </block> <block> - <key>variable</key> + <key>notebook</key> <param> <key>id</key> - <value>samp_rate</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>320000</value> + <key>style</key> + <value>wx.NB_TOP</value> + </param> + <param> + <key>labels</key> + <value>['error', 'phase', 'freq']</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(128, 9)</value> + <value>(964, 466)</value> </param> <param> <key>_rotation</key> @@ -467,7 +631,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> @@ -475,7 +639,7 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> <key>title</key> @@ -487,7 +651,7 @@ </param> <param> <key>v_scale</key> - <value>0</value> + <value>1.25</value> </param> <param> <key>t_scale</key> @@ -511,11 +675,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(789, 258)</value> + <value>(1068, 673)</value> </param> <param> <key>_rotation</key> @@ -523,10 +687,10 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>wxgui_scopesink2_0_0_0</value> </param> <param> <key>_enabled</key> @@ -537,39 +701,32 @@ <value>float</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(482, 130)</value> + <key>v_scale</key> + <value>9</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>notebook</key> <param> - <key>id</key> - <value>notebook_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>labels</key> - <value>['error', 'phase', 'freq']</value> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>grid_pos</key> @@ -577,11 +734,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,1</value> </param> <param> <key>_coordinate</key> - <value>(851, 531)</value> + <value>(1070, 790)</value> </param> <param> <key>_rotation</key> @@ -589,22 +746,38 @@ </param> </block> <block> - <key>variable</key> + <key>random_source_x</key> <param> <key>id</key> - <value>initphase</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>0.5</value> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>10000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(110, 913)</value> + <value>(13, 80)</value> </param> <param> <key>_rotation</key> @@ -612,10 +785,10 @@ </param> </block> <block> - <key>gr_fractional_interpolator_xx</key> + <key>root_raised_cosine_filter</key> <param> <key>id</key> - <value>gr_fractional_interpolator_xx_0</value> + <value>root_raised_cosine_filter_0</value> </param> <param> <key>_enabled</key> @@ -623,19 +796,39 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>interp_fir_filter_fff</value> </param> <param> - <key>phase_shift</key> - <value>initphase</value> + <key>decim</key> + <value>1</value> </param> <param> - <key>interp_ratio</key> - <value>interpratio</value> + <key>interp</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>2*spb</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> </param> <param> <key>_coordinate</key> - <value>(349, 662)</value> + <value>(557, 140)</value> </param> <param> <key>_rotation</key> @@ -643,10 +836,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>root_raised_cosine_filter</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>root_raised_cosine_filter_0_0</value> </param> <param> <key>_enabled</key> @@ -654,47 +847,39 @@ </param> <param> <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Error</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> + <value>interp_fir_filter_fff</value> </param> <param> - <key>v_scale</key> - <value>.5</value> + <key>decim</key> + <value>1</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>interp</key> + <value>spb</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>gain</key> + <value>2*spb</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>samp_rate</key> + <value>1.0</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>sym_rate</key> + <value>1./spb</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>alpha</key> + <value>0.35</value> </param> <param> - <key>notebook</key> - <value>notebook_0,0</value> + <key>ntaps</key> + <value>11*spb</value> </param> <param> <key>_coordinate</key> - <value>(798, 638)</value> + <value>(559, 303)</value> </param> <param> <key>_rotation</key> @@ -702,58 +887,49 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>gr_float_to_complex</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0</value> + <value>gr_float_to_complex_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_scale</key> - <value>9</value> + <key>_coordinate</key> + <value>(897, 272)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_null_source</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>gr_null_source_1</value> </param> <param> - <key>xy_mode</key> + <key>_enabled</key> <value>False</value> </param> <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> + <key>type</key> + <value>float</value> </param> <param> - <key>notebook</key> - <value>notebook_0,1</value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(792, 777)</value> + <value>(387, 257)</value> </param> <param> <key>_rotation</key> @@ -761,10 +937,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>gr_add_xx_0_1</value> </param> <param> <key>_enabled</key> @@ -775,44 +951,43 @@ <value>float</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_scale</key> - <value>1.25</value> + <key>_coordinate</key> + <value>(430, 330)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>const_source_x</key> <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> + <key>id</key> + <value>const_source_x_0_0</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>type</key> + <value>float</value> </param> <param> - <key>notebook</key> - <value>notebook_0,2</value> + <key>const</key> + <value>-0.5</value> </param> <param> <key>_coordinate</key> - <value>(797, 915)</value> + <value>(200, 360)</value> </param> <param> <key>_rotation</key> @@ -820,65 +995,57 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>gr_uchar_to_float_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>alpha</value> - </param> - <param> - <key>beta</key> - <value>beta</value> + <key>_coordinate</key> + <value>(216, 273)</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>random_source_x</key> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>id</key> + <value>random_source_x_0_0</value> </param> <param> - <key>init_phase</key> - <value>14</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>_coordinate</key> - <value>(346, 773)</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>_rotation</key> + <key>min</key> <value>0</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>rrctaps</value> + <key>max</key> + <value>2</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(110, 830)</value> + <value>(15, 245)</value> </param> <param> <key>_rotation</key> @@ -889,7 +1056,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>beta</value> + <value>alpha</value> </param> <param> <key>_enabled</key> @@ -897,19 +1064,19 @@ </param> <param> <key>label</key> - <value>Beta</value> + <value>Alpha</value> </param> <param> <key>value</key> - <value>10e-3</value> + <value>2</value> </param> <param> <key>min</key> - <value>0.0</value> + <value>0</value> </param> <param> <key>max</key> - <value>0.1</value> + <value>10</value> </param> <param> <key>num_steps</key> @@ -933,7 +1100,7 @@ </param> <param> <key>_coordinate</key> - <value>(871, 0)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> @@ -944,7 +1111,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>alpha</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> @@ -952,19 +1119,19 @@ </param> <param> <key>label</key> - <value>Alpha</value> + <value></value> </param> <param> <key>value</key> - <value>2</value> + <value>1.001</value> </param> <param> <key>min</key> - <value>0</value> + <value>0.9</value> </param> <param> <key>max</key> - <value>10</value> + <value>1.1</value> </param> <param> <key>num_steps</key> @@ -988,18 +1155,18 @@ </param> <param> <key>_coordinate</key> - <value>(757, -1)</value> + <value>(802, 3)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> <key>variable_slider</key> <param> <key>id</key> - <value>interpratio</value> + <value>beta</value> </param> <param> <key>_enabled</key> @@ -1007,19 +1174,19 @@ </param> <param> <key>label</key> - <value></value> + <value>Beta</value> </param> <param> <key>value</key> - <value>1.001</value> + <value>20e-3</value> </param> <param> <key>min</key> - <value>0</value> + <value>0.0</value> </param> <param> <key>max</key> - <value>2</value> + <value>0.1</value> </param> <param> <key>num_steps</key> @@ -1043,7 +1210,7 @@ </param> <param> <key>_coordinate</key> - <value>(757, 133)</value> + <value>(668, 5)</value> </param> <param> <key>_rotation</key> @@ -1051,93 +1218,123 @@ </param> </block> <connection> - <source_block_id>random_source_x_0</source_block_id> - <sink_block_id>gr_uchar_to_float_0</sink_block_id> + <source_block_id>gr_throttle_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_uchar_to_float_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> + <source_block_id>gr_noise_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> <source_key>0</source_key> - <sink_key>0</sink_key> + <sink_key>1</sink_key> </connection> <connection> - <source_block_id>const_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0</sink_block_id> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> - <sink_key>1</sink_key> + <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_add_xx_0</source_block_id> - <sink_block_id>root_raised_cosine_filter_0</sink_block_id> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_float_to_complex_0</source_block_id> + <sink_block_id>gr_fractional_interpolator_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> + <source_key>3</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_0_0</sink_block_id> + <source_key>2</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>random_source_x_0</source_block_id> + <sink_block_id>gr_uchar_to_float_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>root_raised_cosine_filter_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_block_id>gr_uchar_to_float_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_noise_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_block_id>const_source_x_0</source_block_id> + <sink_block_id>gr_add_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> - <source_block_id>gr_add_xx_0_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>const_source_x_1</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>gr_uchar_to_float_0_0</source_block_id> + <sink_block_id>gr_add_xx_0_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>const_source_x_0_0</source_block_id> + <sink_block_id>gr_add_xx_0_1</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> + <source_block_id>gr_add_xx_0_1</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> - <source_key>1</source_key> + <source_block_id>random_source_x_0_0</source_block_id> + <sink_block_id>gr_uchar_to_float_0_0</sink_block_id> + <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_float_to_complex_0</source_block_id> - <sink_block_id>gr_fractional_interpolator_xx_0</sink_block_id> + <source_block_id>gr_fractional_interpolator_xx_0</source_block_id> + <sink_block_id>gr_add_xx_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_fractional_interpolator_xx_0</source_block_id> + <source_block_id>gr_add_xx_0_0</source_block_id> <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> - <source_key>3</source_key> + <source_block_id>gr_null_source_1</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_0_0</sink_block_id> - <source_key>2</source_key> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_key>0</source_key> <sink_key>0</sink_key> </connection> </flow_graph> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index e62ab84a36..670d5b4636 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -8,7 +8,8 @@ <name>Polyphase Clock Sync</name> <key>gr_pfb_clock_sync_ccf</key> <import>from gnuradio import gr</import> - <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase)</make> + <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase) +self.$(id).set_beta($beta)</make> <callback>set_taps($taps)</callback> <callback>set_alpha($alpha)</callback> <callback>set_beta($beta)</callback> -- cgit v1.2.3 From a8d8b8355478ac127efb775d4f6e900f1c830090 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Wed, 7 Oct 2009 20:53:30 -0700 Subject: Adding channel model to simulation to test frequency offset. --- gnuradio-examples/grc/demod/pam_timing.grc | 1295 +++++++++++++++++----------- 1 file changed, 781 insertions(+), 514 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 3acca51a1f..a0dc6642a2 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Wed Oct 7 18:31:11 2009</timestamp> + <timestamp>Wed Oct 7 20:47:05 2009</timestamp> <block> <key>options</key> <param> @@ -60,7 +60,7 @@ <key>variable</key> <param> <key>id</key> - <value>spb</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -68,11 +68,11 @@ </param> <param> <key>value</key> - <value>4</value> + <value>320000</value> </param> <param> <key>_coordinate</key> - <value>(34, 915)</value> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -80,22 +80,18 @@ </param> </block> <block> - <key>variable</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>nfilts</value> + <value>gr_uchar_to_float_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> - <param> - <key>value</key> - <value>32</value> - </param> <param> <key>_coordinate</key> - <value>(31, 828)</value> + <value>(217, 108)</value> </param> <param> <key>_rotation</key> @@ -103,22 +99,26 @@ </param> </block> <block> - <key>variable</key> + <key>const_source_x</key> <param> <key>id</key> - <value>initphase</value> + <value>const_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>0.5</value> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5</value> </param> <param> <key>_coordinate</key> - <value>(110, 913)</value> + <value>(213, 197)</value> </param> <param> <key>_rotation</key> @@ -126,45 +126,30 @@ </param> </block> <block> - <key>variable</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>rrctaps</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> - </param> - <param> - <key>_coordinate</key> - <value>(110, 830)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> + <key>type</key> + <value>float</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>value</key> - <value>320000</value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(128, 9)</value> + <value>(440, 167)</value> </param> <param> <key>_rotation</key> @@ -172,22 +157,18 @@ </param> </block> <block> - <key>variable_slider</key> + <key>random_source_x</key> <param> <key>id</key> - <value>noise_amp</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>noise_amp</value> - </param> - <param> - <key>value</key> - <value>0</value> + <key>type</key> + <value>byte</value> </param> <param> <key>min</key> @@ -195,50 +176,19 @@ </param> <param> <key>max</key> - <value>1.0</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(440, 3)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <value>2</value> </param> - </block> - <block> - <key>gr_uchar_to_float</key> <param> - <key>id</key> - <value>gr_uchar_to_float_0</value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>_enabled</key> + <key>repeat</key> <value>True</value> </param> <param> <key>_coordinate</key> - <value>(217, 108)</value> + <value>(13, 80)</value> </param> <param> <key>_rotation</key> @@ -246,26 +196,26 @@ </param> </block> <block> - <key>const_source_x</key> + <key>gr_null_source</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>gr_null_source_1</value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> <key>type</key> <value>float</value> </param> <param> - <key>const</key> - <value>-0.5</value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(213, 197)</value> + <value>(387, 257)</value> </param> <param> <key>_rotation</key> @@ -276,7 +226,7 @@ <key>gr_add_xx</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>gr_add_xx_0_1</value> </param> <param> <key>_enabled</key> @@ -296,7 +246,7 @@ </param> <param> <key>_coordinate</key> - <value>(440, 167)</value> + <value>(430, 330)</value> </param> <param> <key>_rotation</key> @@ -304,10 +254,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>const_source_x</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>const_source_x_0_0</value> </param> <param> <key>_enabled</key> @@ -315,47 +265,34 @@ </param> <param> <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> + <value>float</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>const</key> + <value>-0.5</value> </param> <param> - <key>v_scale</key> - <value>0</value> + <key>_coordinate</key> + <value>(200, 360)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_uchar_to_float</key> <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> + <key>id</key> + <value>gr_uchar_to_float_0_0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>_enabled</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(1155, 281)</value> + <value>(216, 273)</value> </param> <param> <key>_rotation</key> @@ -363,10 +300,10 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>random_source_x</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>random_source_x_0_0</value> </param> <param> <key>_enabled</key> @@ -374,19 +311,27 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>byte</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>min</key> + <value>0</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>max</key> + <value>2</value> + </param> + <param> + <key>num_samps</key> + <value>10000</value> + </param> + <param> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(1128, 428)</value> + <value>(15, 245)</value> </param> <param> <key>_rotation</key> @@ -394,30 +339,22 @@ </param> </block> <block> - <key>gr_fractional_interpolator_xx</key> + <key>variable</key> <param> <key>id</key> - <value>gr_fractional_interpolator_xx_0</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>phase_shift</key> - <value>initphase</value> - </param> - <param> - <key>interp_ratio</key> - <value>interpratio</value> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> </param> <param> <key>_coordinate</key> - <value>(116, 530)</value> + <value>(513, 679)</value> </param> <param> <key>_rotation</key> @@ -425,10 +362,10 @@ </param> </block> <block> - <key>gr_noise_source_x</key> + <key>root_raised_cosine_filter</key> <param> <key>id</key> - <value>gr_noise_source_x_0</value> + <value>root_raised_cosine_filter_0_0</value> </param> <param> <key>_enabled</key> @@ -436,54 +373,39 @@ </param> <param> <key>type</key> - <value>complex</value> - </param> - <param> - <key>noise_type</key> - <value>gr.GR_GAUSSIAN</value> - </param> - <param> - <key>amp</key> - <value>noise_amp</value> - </param> - <param> - <key>seed</key> - <value>42</value> + <value>interp_fir_filter_fff</value> </param> <param> - <key>_coordinate</key> - <value>(148, 595)</value> + <key>decim</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>interp</key> + <value>spb</value> </param> - </block> - <block> - <key>gr_add_xx</key> <param> - <key>id</key> - <value>gr_add_xx_0_0</value> + <key>gain</key> + <value>2*spb</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>samp_rate</key> + <value>1.0</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>sym_rate</key> + <value>1./spb</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>alpha</key> + <value>0.35</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>ntaps</key> + <value>11*spb</value> </param> <param> <key>_coordinate</key> - <value>(393, 561)</value> + <value>(559, 303)</value> </param> <param> <key>_rotation</key> @@ -491,42 +413,477 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>root_raised_cosine_filter</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>root_raised_cosine_filter_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> + <key>type</key> + <value>interp_fir_filter_fff</value> </param> <param> - <key>alpha</key> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb</value> + </param> + <param> + <key>gain</key> + <value>2*spb</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb</value> + </param> + <param> + <key>_coordinate</key> + <value>(557, 140)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_float_to_complex</key> + <param> + <key>id</key> + <value>gr_float_to_complex_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(897, 272)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>noise_amp</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Channel Noise</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(168, 684)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>nfilts</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>32</value> + </param> + <param> + <key>_coordinate</key> + <value>(435, 686)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>beta</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Timing Beta</value> + </param> + <param> + <key>value</key> + <value>20e-3</value> + </param> + <param> + <key>min</key> + <value>0.0</value> + </param> + <param> + <key>max</key> + <value>0.1</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(668, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> <value>alpha</value> </param> <param> - <key>beta</key> - <value>beta</value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Timing Alpha</value> + </param> + <param> + <key>value</key> + <value>2</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>10</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(552, 4)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_scopesink2</key> + <param> + <key>id</key> + <value>wxgui_scopesink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>0</value> + </param> + <param> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1133, 325)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq_offset</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency Offset</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>-0.5</value> + </param> + <param> + <key>max</key> + <value>0.5</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(293, 684)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>spb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>_coordinate</key> + <value>(436, 752)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> </param> <param> - <key>taps</key> - <value>rrctaps</value> + <key>avg_alpha</key> + <value>0</value> </param> <param> - <key>filter_size</key> - <value>nfilts</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>init_phase</key> - <value>14</value> + <key>notebook</key> + <value>notebook_0,3</value> </param> <param> <key>_coordinate</key> - <value>(511, 527)</value> + <value>(517, 767)</value> </param> <param> <key>_rotation</key> @@ -534,46 +891,42 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Error</value> + <key>label</key> + <value>Timing Offset</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>1.00</value> </param> <param> - <key>v_scale</key> - <value>.5</value> + <key>min</key> + <value>0.9</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>max</key> + <value>1.1</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -581,34 +934,54 @@ </param> <param> <key>notebook</key> - <value>notebook_0,0</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1068, 553)</value> + <value>(40, 684)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>notebook</key> + <key>variable_slider</key> <param> <key>id</key> - <value>notebook_0</value> + <value>beta_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>label</key> + <value>Freq Beta</value> + </param> + <param> + <key>value</key> + <value>0.001</value> + </param> + <param> + <key>min</key> + <value>0.0</value> + </param> + <param> + <key>max</key> + <value>0.01</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> <param> <key>style</key> - <value>wx.NB_TOP</value> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>labels</key> - <value>['error', 'phase', 'freq']</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -620,54 +993,50 @@ </param> <param> <key>_coordinate</key> - <value>(964, 466)</value> + <value>(919, 7)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>alpha_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> + <key>label</key> + <value>Freq Alpha</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>0.01</value> </param> <param> - <key>v_scale</key> - <value>1.25</value> + <key>min</key> + <value>0</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>max</key> + <value>0.1</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -675,11 +1044,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,2</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1068, 673)</value> + <value>(792, 6)</value> </param> <param> <key>_rotation</key> @@ -738,7 +1107,7 @@ </param> <param> <key>_coordinate</key> - <value>(1070, 790)</value> + <value>(1115, 961)</value> </param> <param> <key>_rotation</key> @@ -746,10 +1115,10 @@ </param> </block> <block> - <key>random_source_x</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>random_source_x_0</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> @@ -757,78 +1126,47 @@ </param> <param> <key>type</key> - <value>byte</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>2</value> + <value>float</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(13, 80)</value> + <key>v_scale</key> + <value>1.25</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0</value> - </param> <param> - <key>_enabled</key> - <value>True</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>type</key> - <value>interp_fir_filter_fff</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>decim</key> + <key>num_inputs</key> <value>1</value> </param> <param> - <key>interp</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>2*spb</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>ntaps</key> - <value>11*spb</value> + <key>notebook</key> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(557, 140)</value> + <value>(1113, 844)</value> </param> <param> <key>_rotation</key> @@ -836,10 +1174,10 @@ </param> </block> <block> - <key>root_raised_cosine_filter</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>root_raised_cosine_filter_0_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> @@ -847,89 +1185,47 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb</value> + <value>float</value> </param> <param> - <key>gain</key> - <value>2*spb</value> + <key>title</key> + <value>Error</value> </param> <param> <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb</value> - </param> - <param> - <key>_coordinate</key> - <value>(559, 303)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_float_to_complex</key> - <param> - <key>id</key> - <value>gr_float_to_complex_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>vlen</key> - <value>1</value> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(897, 272)</value> + <key>v_scale</key> + <value>.5</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>gr_null_source</key> <param> - <key>id</key> - <value>gr_null_source_1</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>_enabled</key> + <key>xy_mode</key> <value>False</value> </param> <param> - <key>type</key> - <value>float</value> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>notebook</key> + <value>notebook_0,0</value> </param> <param> <key>_coordinate</key> - <value>(387, 257)</value> + <value>(1113, 724)</value> </param> <param> <key>_rotation</key> @@ -937,10 +1233,10 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_add_xx_0_1</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -948,46 +1244,47 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>title</key> + <value>Error</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(430, 330)</value> + <key>v_scale</key> + <value>.5</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>const_source_x</key> <param> - <key>id</key> - <value>const_source_x_0_0</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>type</key> - <value>float</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>const</key> - <value>-0.5</value> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,4</value> </param> <param> <key>_coordinate</key> - <value>(200, 360)</value> + <value>(1111, 518)</value> </param> <param> <key>_rotation</key> @@ -995,18 +1292,34 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>notebook</key> <param> <key>id</key> - <value>gr_uchar_to_float_0_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>style</key> + <value>wx.NB_TOP</value> + </param> + <param> + <key>labels</key> + <value>['error', 'phase', 'freq', 'FFT', 'Costas error']</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> <param> <key>_coordinate</key> - <value>(216, 273)</value> + <value>(729, 769)</value> </param> <param> <key>_rotation</key> @@ -1014,38 +1327,38 @@ </param> </block> <block> - <key>random_source_x</key> + <key>gr_channel_model</key> <param> <key>id</key> - <value>random_source_x_0_0</value> + <value>gr_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>noise_voltage</key> + <value>noise_amp</value> </param> <param> - <key>min</key> - <value>0</value> + <key>freq_offset</key> + <value>freq_offset</value> </param> <param> - <key>max</key> - <value>2</value> + <key>epsilon</key> + <value>interpratio</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>taps</key> + <value>1.0 + 1.0j</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>seed</key> + <value>42</value> </param> <param> <key>_coordinate</key> - <value>(15, 245)</value> + <value>(65, 542)</value> </param> <param> <key>_rotation</key> @@ -1053,54 +1366,42 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> - <value>alpha</value> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Alpha</value> - </param> - <param> - <key>value</key> - <value>2</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>10</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>alpha</key> + <value>alpha</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>beta</key> + <value>beta</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>taps</key> + <value>rrctaps</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>filter_size</key> + <value>nfilts</value> </param> <param> - <key>notebook</key> - <value></value> + <key>init_phase</key> + <value>14</value> </param> <param> <key>_coordinate</key> - <value>(552, 4)</value> + <value>(512, 527)</value> </param> <param> <key>_rotation</key> @@ -1108,113 +1409,73 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>interpratio</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value></value> - </param> - <param> - <key>value</key> - <value>1.001</value> - </param> - <param> - <key>min</key> - <value>0.9</value> - </param> - <param> - <key>max</key> - <value>1.1</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>notebook</key> - <value></value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(802, 3)</value> + <value>(1129, 462)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable_slider</key> + <key>gr_costas_loop_cc</key> <param> <key>id</key> - <value>beta</value> + <value>gr_costas_loop_cc_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Beta</value> - </param> - <param> - <key>value</key> - <value>20e-3</value> - </param> - <param> - <key>min</key> - <value>0.0</value> - </param> - <param> - <key>max</key> - <value>0.1</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> + <key>alpha</key> + <value>alpha_0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>beta</key> + <value>beta_0</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>max_freq</key> + <value>5</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>min_freq</key> + <value>-5</value> </param> <param> - <key>notebook</key> - <value></value> + <key>order</key> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(668, 5)</value> + <value>(916, 473)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <connection> @@ -1223,30 +1484,12 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> - <connection> - <source_block_id>gr_noise_source_x_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> <source_key>1</source_key> <sink_key>0</sink_key> </connection> - <connection> - <source_block_id>gr_float_to_complex_0</source_block_id> - <sink_block_id>gr_fractional_interpolator_xx_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0_0</sink_block_id> @@ -1308,32 +1551,56 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_fractional_interpolator_xx_0</source_block_id> - <sink_block_id>gr_add_xx_0_0</sink_block_id> + <source_block_id>gr_null_source_1</source_block_id> + <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_add_xx_0_0</source_block_id> - <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> + <source_block_id>root_raised_cosine_filter_0_0</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_key>0</source_key> + <sink_key>1</sink_key> + </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_null_source_1</source_block_id> - <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> + <source_block_id>gr_float_to_complex_0</source_block_id> + <sink_block_id>gr_channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>root_raised_cosine_filter_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>gr_channel_model_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> <source_key>0</source_key> - <sink_key>1</sink_key> + <sink_key>0</sink_key> </connection> <connection> - <source_block_id>root_raised_cosine_filter_0_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>gr_costas_loop_cc_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> + <source_key>1</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_channel_model_0</source_block_id> + <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>gr_costas_loop_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_costas_loop_cc_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> -- cgit v1.2.3 From 90b8b4cc8c53c963f8b0cf4bbc50277c031c3213 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Thu, 8 Oct 2009 21:40:16 -0700 Subject: Working on allowing fractional samples per symbol. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 57 +- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 20 +- .../src/lib/filter/gr_pfb_clock_sync_ccf.i | 7 +- gnuradio-examples/grc/demod/pam_timing.grc | 858 +++++++++++---------- 4 files changed, 519 insertions(+), 423 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 7dc5715d90..a75b20d383 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -36,11 +36,13 @@ gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, - float init_phase) + float init_phase, + float max_rate_deviation) { return gr_pfb_clock_sync_ccf_sptr (new gr_pfb_clock_sync_ccf (sps, gain, taps, filter_size, - init_phase)); + init_phase, + max_rate_deviation)); } int ios[] = {sizeof(gr_complex), sizeof(float), sizeof(float), sizeof(float)}; @@ -48,11 +50,13 @@ std::vector<int> iosig(ios, ios+sizeof(ios)/sizeof(int)); gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, - float init_phase) + float init_phase, + float max_rate_deviation) : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), gr_make_io_signaturev (1, 4, iosig)), - d_updated (false), d_sps(sps) + d_updated (false), d_sps(sps), d_nfilters(filter_size), + d_max_dev(max_rate_deviation), d_start_count(0) { d_nfilters = filter_size; @@ -63,10 +67,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, set_alpha(gain); set_beta(0.25*gain*gain); d_k = d_nfilters / 2; - d_filtnum = (int)floor(d_k); d_rate = 0; - d_start_count = 0; - + d_filtnum = (int)floor(d_k); d_filters = std::vector<gr_fir_ccf*>(d_nfilters); d_diff_filters = std::vector<gr_fir_ccf*>(d_nfilters); @@ -97,7 +99,7 @@ gr_pfb_clock_sync_ccf::set_taps (const std::vector<float> &newtaps, std::vector< std::vector<float> > &ourtaps, std::vector<gr_fir_ccf*> &ourfilter) { - unsigned int i,j; + int i,j; unsigned int ntaps = newtaps.size(); d_taps_per_filter = (unsigned int)ceil((double)ntaps/(double)d_nfilters); @@ -233,62 +235,65 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // We need this many to process one output int nrequired = ninput_items[0] - d_taps_per_filter; - int i = 0, count = d_start_count; - float error; - float error_r, error_i; + int i = 0, count = (int)floor(d_sample_num); + float error, error_r, error_i; // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - - // FIXME: prevent this from asserting - assert(d_filtnum < d_nfilters); out[i] = d_filters[d_filtnum]->filter(&in[count]); - error_r = out[i].real() * d_diff_filters[d_filtnum]->filter(&in[count]).real(); - error_i = out[i].imag() * d_diff_filters[d_filtnum]->filter(&in[count]).imag(); + gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); + error_r = out[i].real() * diff.real(); + error_i = out[i].imag() * diff.imag(); error = error_i + error_r; d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; d_filtnum = (int)floor(d_k); + // Keep the current filter number in [0, d_nfilters] + // If we've run beyond the last filter, wrap around and go to next sample + // If we've go below 0, wrap around and go to previous sample while(d_filtnum >= d_nfilters) { d_k -= d_nfilters; d_filtnum -= d_nfilters; - count++; + d_sample_num += 1.0; } while(d_filtnum < 0) { d_k += d_nfilters; d_filtnum += d_nfilters; - count--; + d_sample_num -= 1.0; } // Keep our rate within a good range - d_rate = gr_branchless_clip(d_rate, 1.5); + d_rate = gr_branchless_clip(d_rate, d_max_dev); i++; - count += d_sps; + d_sample_num += d_sps; + count = (int)floor(d_sample_num); if(output_items.size() > 2) { err[i] = error; outrate[i] = d_rate; outk[i] = d_k; } - - //printf("error: %f k: %f rate: %f\n", - // error, d_k, d_rate); } // Set the start index at the next entrance to the work function // if we stop because we run out of input items, jump ahead in the // next call to work. Otherwise, we can start at zero. + /* if(count > nrequired) { - d_start_count = count - (nrequired); + //d_start_count = count - (nrequired); + d_sample_num -= nrequired; consume_each(ninput_items[0]-d_taps_per_filter); } else { - d_start_count = 0; + d_sample_num -= floor(d_sample_num); consume_each(count); } - + */ + d_sample_num -= floor(d_sample_num); + consume_each(count); + return i; } diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 41e5d7b2a3..84e174b198 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -31,7 +31,8 @@ typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr; gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size=32, - float init_phase=0); + float init_phase=0, + float max_rate_deviation=1.5); class gr_fir_ccf; @@ -53,12 +54,14 @@ class gr_pfb_clock_sync_ccf : public gr_block friend gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, - float init_phase); + float init_phase, + float max_rate_deviation); bool d_updated; - unsigned int d_sps; + float d_sps; float d_alpha; float d_beta; + float d_sample_num; int d_nfilters; std::vector<gr_fir_ccf*> d_filters; std::vector<gr_fir_ccf*> d_diff_filters; @@ -66,9 +69,10 @@ class gr_pfb_clock_sync_ccf : public gr_block std::vector< std::vector<float> > d_dtaps; float d_k; float d_rate; + float d_max_dev; int d_filtnum; + int d_taps_per_filter; unsigned int d_start_count; - unsigned int d_taps_per_filter; /*! * Build the polyphase filterbank timing synchronizer. @@ -76,7 +80,8 @@ class gr_pfb_clock_sync_ccf : public gr_block gr_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, - float init_phase); + float init_phase, + float max_rate_deviation); void create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps); @@ -107,6 +112,11 @@ public: { d_beta = beta; } + + void set_max_rate_deviation(float m) + { + d_max_dev = m; + } int general_work (int noutput_items, gr_vector_int &ninput_items, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i index 7859154791..9957c33b75 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i @@ -25,7 +25,8 @@ GR_SWIG_BLOCK_MAGIC(gr,pfb_clock_sync_ccf); gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size=32, - float init_phase=0); + float init_phase=0, + float max_rate_deviation=1.5); class gr_pfb_clock_sync_ccf : public gr_block { @@ -33,7 +34,8 @@ class gr_pfb_clock_sync_ccf : public gr_block gr_pfb_clock_sync_ccf (float sps, float gain, const std::vector<float> &taps, unsigned int filter_size, - float init_phase); + float init_phase, + float max_rate_deviation); public: ~gr_pfb_clock_sync_ccf (); @@ -48,4 +50,5 @@ class gr_pfb_clock_sync_ccf : public gr_block void print_diff_taps(); void set_alpha(float alpha); void set_beta(float beta); + void set_max_rate_deviation(float m); }; diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index a0dc6642a2..d51adb1f27 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Wed Oct 7 20:47:05 2009</timestamp> + <timestamp>Thu Oct 8 21:29:27 2009</timestamp> <block> <key>options</key> <param> @@ -56,29 +56,6 @@ <value>0</value> </param> </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>320000</value> - </param> - <param> - <key>_coordinate</key> - <value>(128, 9)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>gr_uchar_to_float</key> <param> @@ -338,154 +315,6 @@ <value>0</value> </param> </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>rrctaps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts)</value> - </param> - <param> - <key>_coordinate</key> - <value>(513, 679)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>2*spb</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb</value> - </param> - <param> - <key>_coordinate</key> - <value>(559, 303)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb</value> - </param> - <param> - <key>gain</key> - <value>2*spb</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb</value> - </param> - <param> - <key>_coordinate</key> - <value>(557, 140)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>gr_float_to_complex</key> - <param> - <key>id</key> - <value>gr_float_to_complex_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(897, 272)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable_slider</key> <param> @@ -541,34 +370,11 @@ <value>0</value> </param> </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>nfilts</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>32</value> - </param> - <param> - <key>_coordinate</key> - <value>(435, 686)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable_slider</key> <param> <key>id</key> - <value>beta</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> @@ -576,19 +382,19 @@ </param> <param> <key>label</key> - <value>Timing Beta</value> + <value>Timing Offset</value> </param> <param> <key>value</key> - <value>20e-3</value> + <value>1.00</value> </param> <param> <key>min</key> - <value>0.0</value> + <value>0.9</value> </param> <param> <key>max</key> - <value>0.1</value> + <value>1.1</value> </param> <param> <key>num_steps</key> @@ -612,7 +418,7 @@ </param> <param> <key>_coordinate</key> - <value>(668, 5)</value> + <value>(40, 684)</value> </param> <param> <key>_rotation</key> @@ -620,42 +426,46 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>alpha</value> + <value>wxgui_scopesink2_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Alpha</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>2</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>min</key> - <value>0</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>max</key> - <value>10</value> + <key>v_scale</key> + <value>9</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>grid_pos</key> @@ -663,11 +473,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,1</value> </param> <param> <key>_coordinate</key> - <value>(552, 4)</value> + <value>(1115, 961)</value> </param> <param> <key>_rotation</key> @@ -678,7 +488,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> @@ -686,7 +496,7 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> <key>title</key> @@ -698,7 +508,7 @@ </param> <param> <key>v_scale</key> - <value>0</value> + <value>1.25</value> </param> <param> <key>t_scale</key> @@ -722,11 +532,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(1133, 325)</value> + <value>(1113, 844)</value> </param> <param> <key>_rotation</key> @@ -734,42 +544,81 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>freq_offset</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Frequency Offset</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>0</value> + <key>title</key> + <value>Error</value> </param> <param> - <key>min</key> - <value>-0.5</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>max</key> - <value>0.5</value> + <key>v_scale</key> + <value>.5</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>t_scale</key> + <value>0</value> + </param> + <param> + <key>ac_couple</key> + <value>False</value> + </param> + <param> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,0</value> + </param> + <param> + <key>_coordinate</key> + <value>(1113, 724)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>notebook</key> + <param> + <key>id</key> + <value>notebook_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> </param> <param> <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>wx.NB_TOP</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>labels</key> + <value>['error', 'phase', 'freq', 'FFT', 'Costas error']</value> </param> <param> <key>grid_pos</key> @@ -781,7 +630,7 @@ </param> <param> <key>_coordinate</key> - <value>(293, 684)</value> + <value>(729, 769)</value> </param> <param> <key>_rotation</key> @@ -792,7 +641,7 @@ <key>variable</key> <param> <key>id</key> - <value>spb</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -800,11 +649,11 @@ </param> <param> <key>value</key> - <value>4</value> + <value>32000</value> </param> <param> <key>_coordinate</key> - <value>(436, 752)</value> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -812,10 +661,10 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> @@ -826,64 +675,184 @@ <value>complex</value> </param> <param> - <key>title</key> - <value>FFT Plot</value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>baseband_freq</key> + <key>_coordinate</key> + <value>(1129, 462)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_costas_loop_cc</key> <param> - <key>y_per_div</key> - <value>10</value> + <key>id</key> + <value>gr_costas_loop_cc_0</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>_enabled</key> + <value>False</value> </param> <param> - <key>ref_level</key> - <value>50</value> + <key>alpha</key> + <value>alpha_0</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>beta</key> + <value>beta_0</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>max_freq</key> + <value>5</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>min_freq</key> + <value>-5</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>order</key> + <value>4</value> </param> <param> - <key>average</key> - <value>False</value> + <key>_coordinate</key> + <value>(299, 453)</value> </param> <param> - <key>avg_alpha</key> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_slider</key> + <param> + <key>id</key> + <value>freq_offset</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Frequency Offset</value> + </param> + <param> + <key>value</key> <value>0</value> </param> + <param> + <key>min</key> + <value>-0.5</value> + </param> + <param> + <key>max</key> + <value>0.5</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> <param> <key>grid_pos</key> <value></value> </param> <param> <key>notebook</key> - <value>notebook_0,3</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(517, 767)</value> + <value>(293, 684)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>rrctaps</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts))</value> + </param> + <param> + <key>_coordinate</key> + <value>(513, 679)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb_gen</value> + </param> + <param> + <key>gain</key> + <value>2*spb_gen</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb_gen</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb_gen</value> + </param> + <param> + <key>_coordinate</key> + <value>(564, 301)</value> </param> <param> <key>_rotation</key> @@ -894,7 +863,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>interpratio</value> + <value>alpha</value> </param> <param> <key>_enabled</key> @@ -902,19 +871,19 @@ </param> <param> <key>label</key> - <value>Timing Offset</value> + <value>Timing Alpha</value> </param> <param> <key>value</key> - <value>1.00</value> + <value>0</value> </param> <param> <key>min</key> - <value>0.9</value> + <value>0</value> </param> <param> <key>max</key> - <value>1.1</value> + <value>10</value> </param> <param> <key>num_steps</key> @@ -938,18 +907,18 @@ </param> <param> <key>_coordinate</key> - <value>(40, 684)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> <key>variable_slider</key> <param> <key>id</key> - <value>beta_0</value> + <value>beta</value> </param> <param> <key>_enabled</key> @@ -957,11 +926,11 @@ </param> <param> <key>label</key> - <value>Freq Beta</value> + <value>Timing Beta</value> </param> <param> <key>value</key> - <value>0.001</value> + <value>0</value> </param> <param> <key>min</key> @@ -969,7 +938,7 @@ </param> <param> <key>max</key> - <value>0.01</value> + <value>0.1</value> </param> <param> <key>num_steps</key> @@ -993,7 +962,7 @@ </param> <param> <key>_coordinate</key> - <value>(919, 7)</value> + <value>(668, 5)</value> </param> <param> <key>_rotation</key> @@ -1008,7 +977,7 @@ </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> <key>label</key> @@ -1056,46 +1025,42 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0</value> + <value>beta_0</value> </param> <param> <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>float</value> + <value>False</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>label</key> + <value>Freq Beta</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>0.001</value> </param> <param> - <key>v_scale</key> - <value>9</value> + <key>min</key> + <value>0.0</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>max</key> + <value>0.01</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -1103,22 +1068,22 @@ </param> <param> <key>notebook</key> - <value>notebook_0,1</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1115, 961)</value> + <value>(919, 7)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> @@ -1126,7 +1091,7 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> <key>title</key> @@ -1138,7 +1103,7 @@ </param> <param> <key>v_scale</key> - <value>1.25</value> + <value>0</value> </param> <param> <key>t_scale</key> @@ -1162,11 +1127,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,2</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1113, 844)</value> + <value>(1145, 258)</value> </param> <param> <key>_rotation</key> @@ -1177,7 +1142,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -1185,7 +1150,7 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> <key>title</key> @@ -1221,11 +1186,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,0</value> + <value>notebook_0,4</value> </param> <param> <key>_coordinate</key> - <value>(1113, 724)</value> + <value>(1107, 533)</value> </param> <param> <key>_rotation</key> @@ -1233,58 +1198,96 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_1</value> + <value>spb_gen</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>value</key> + <value>4</value> </param> <param> - <key>title</key> - <value>Error</value> + <key>_coordinate</key> + <value>(119, 841)</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>gr_float_to_complex</key> <param> - <key>v_scale</key> - <value>.5</value> + <key>id</key> + <value>gr_float_to_complex_0</value> </param> <param> - <key>t_scale</key> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>_coordinate</key> + <value>(904, 184)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>root_raised_cosine_filter</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>root_raised_cosine_filter_0</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_inputs</key> + <key>type</key> + <value>interp_fir_filter_fff</value> + </param> + <param> + <key>decim</key> <value>1</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>interp</key> + <value>spb_gen</value> </param> <param> - <key>notebook</key> - <value>notebook_0,4</value> + <key>gain</key> + <value>2*spb_gen</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb_gen</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb_gen</value> </param> <param> <key>_coordinate</key> - <value>(1111, 518)</value> + <value>(557, 140)</value> </param> <param> <key>_rotation</key> @@ -1292,34 +1295,22 @@ </param> </block> <block> - <key>notebook</key> + <key>variable</key> <param> <key>id</key> - <value>notebook_0</value> + <value>spb</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['error', 'phase', 'freq', 'FFT', 'Costas error']</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> + <key>value</key> + <value>4.01</value> </param> <param> <key>_coordinate</key> - <value>(729, 769)</value> + <value>(32, 842)</value> </param> <param> <key>_rotation</key> @@ -1334,7 +1325,7 @@ </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> <key>noise_voltage</key> @@ -1350,7 +1341,7 @@ </param> <param> <key>taps</key> - <value>1.0 + 1.0j</value> + <value>1.0</value> </param> <param> <key>seed</key> @@ -1358,7 +1349,38 @@ </param> <param> <key>_coordinate</key> - <value>(65, 542)</value> + <value>(59, 543)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blks2_pfb_arb_resampler_ccf</key> + <param> + <key>id</key> + <value>blks2_pfb_arb_resampler_ccf_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>rate</key> + <value>float(spb)/float(spb_gen)</value> + </param> + <param> + <key>taps</key> + <value>firdes.low_pass(320, 320, 0.45, 0.1)</value> + </param> + <param> + <key>size</key> + <value>320</value> + </param> + <param> + <key>_coordinate</key> + <value>(874, 374)</value> </param> <param> <key>_rotation</key> @@ -1409,69 +1431,101 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>wxgui_fftsink2</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>wxgui_fftsink2_0</value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> <key>type</key> <value>complex</value> </param> <param> - <key>samples_per_second</key> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> <value>samp_rate</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>baseband_freq</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(1129, 462)</value> + <key>y_per_div</key> + <value>10</value> </param> <param> - <key>_rotation</key> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> <value>0</value> </param> - </block> - <block> - <key>gr_costas_loop_cc</key> <param> - <key>id</key> - <value>gr_costas_loop_cc_0</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>notebook</key> + <value>notebook_0,3</value> </param> <param> - <key>alpha</key> - <value>alpha_0</value> + <key>_coordinate</key> + <value>(517, 767)</value> </param> <param> - <key>beta</key> - <value>beta_0</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>max_freq</key> - <value>5</value> + <key>id</key> + <value>nfilts</value> </param> <param> - <key>min_freq</key> - <value>-5</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>order</key> - <value>4</value> + <key>value</key> + <value>64</value> </param> <param> <key>_coordinate</key> - <value>(916, 473)</value> + <value>(435, 686)</value> </param> <param> <key>_rotation</key> @@ -1569,14 +1623,20 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_float_to_complex_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <source_block_id>gr_channel_model_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <sink_block_id>gr_costas_loop_cc_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_costas_loop_cc_0</source_block_id> + <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -1586,6 +1646,12 @@ <source_key>1</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> <connection> <source_block_id>gr_channel_model_0</source_block_id> <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> @@ -1593,14 +1659,26 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>gr_costas_loop_cc_0</sink_block_id> + <source_block_id>gr_float_to_complex_0</source_block_id> + <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_costas_loop_cc_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> + <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> + <sink_block_id>gr_channel_model_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> + <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> -- cgit v1.2.3 From 80841156673ff0e7eff376bceeeac9119f0e9493 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 11:10:15 -0700 Subject: wip --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 29 ++++++++++++++-------- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 10 ++++---- .../src/lib/filter/gr_pfb_clock_sync_ccf.i | 4 +-- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index a75b20d383..08ab949d02 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -33,7 +33,7 @@ #include <gr_io_signature.h> #include <gr_math.h> -gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, +gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, @@ -47,7 +47,7 @@ gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, int ios[] = {sizeof(gr_complex), sizeof(float), sizeof(float), sizeof(float)}; std::vector<int> iosig(ios, ios+sizeof(ios)/sizeof(int)); -gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, +gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, @@ -58,6 +58,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (float sps, float gain, d_updated (false), d_sps(sps), d_nfilters(filter_size), d_max_dev(max_rate_deviation), d_start_count(0) { + printf("SPS: %f\n", d_sps); d_nfilters = filter_size; // Store the last filter between calls to work @@ -240,14 +241,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - out[i] = d_filters[d_filtnum]->filter(&in[count]); - gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); - error_r = out[i].real() * diff.real(); - error_i = out[i].imag() * diff.imag(); - error = error_i + error_r; - - d_k = d_k + d_alpha*error + d_rate; - d_rate = d_rate + d_beta*error; d_filtnum = (int)floor(d_k); // Keep the current filter number in [0, d_nfilters] @@ -264,18 +257,32 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_sample_num -= 1.0; } + out[i] = d_filters[d_filtnum]->filter(&in[count]); + gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); + error_r = out[i].real() * diff.real(); + error_i = out[i].imag() * diff.imag(); + error = error_i + error_r; + + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; + // Keep our rate within a good range d_rate = gr_branchless_clip(d_rate, d_max_dev); i++; + int a = (int)floor(d_sample_num); d_sample_num += d_sps; + int b = a + (int)floor(d_sps); count = (int)floor(d_sample_num); if(output_items.size() > 2) { err[i] = error; - outrate[i] = d_rate; outk[i] = d_k; } + if(b != count) { + outrate[i] = 1; + } + } // Set the start index at the next entrance to the work function diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 84e174b198..73bd7d6e6c 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -28,7 +28,7 @@ class gr_pfb_clock_sync_ccf; typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr; -gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, +gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size=32, float init_phase=0, @@ -51,17 +51,17 @@ class gr_pfb_clock_sync_ccf : public gr_block /*! * Build the polyphase filterbank timing synchronizer. */ - friend gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, + friend gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, float max_rate_deviation); bool d_updated; - float d_sps; + double d_sps; + double d_sample_num; float d_alpha; float d_beta; - float d_sample_num; int d_nfilters; std::vector<gr_fir_ccf*> d_filters; std::vector<gr_fir_ccf*> d_diff_filters; @@ -77,7 +77,7 @@ class gr_pfb_clock_sync_ccf : public gr_block /*! * Build the polyphase filterbank timing synchronizer. */ - gr_pfb_clock_sync_ccf (float sps, float gain, + gr_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i index 9957c33b75..1979842871 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.i @@ -22,7 +22,7 @@ GR_SWIG_BLOCK_MAGIC(gr,pfb_clock_sync_ccf); -gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, +gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size=32, float init_phase=0, @@ -31,7 +31,7 @@ gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (float sps, float gain, class gr_pfb_clock_sync_ccf : public gr_block { private: - gr_pfb_clock_sync_ccf (float sps, float gain, + gr_pfb_clock_sync_ccf (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, -- cgit v1.2.3 From 1bce7d89c205502ed933add1a5e97c86db0b0d80 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 13:26:37 -0700 Subject: Chaning update for fractional sample rate into filter index. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 08ab949d02..56ad24ffcf 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -55,11 +55,11 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, : gr_block ("pfb_clock_sync_ccf", gr_make_io_signature (1, 1, sizeof(gr_complex)), gr_make_io_signaturev (1, 4, iosig)), - d_updated (false), d_sps(sps), d_nfilters(filter_size), + d_updated (false), d_nfilters(filter_size), d_max_dev(max_rate_deviation), d_start_count(0) { - printf("SPS: %f\n", d_sps); d_nfilters = filter_size; + d_sps = floor(sps); // Store the last filter between calls to work // The accumulator keeps track of overflow to increment the stride correctly. @@ -68,7 +68,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, set_alpha(gain); set_beta(0.25*gain*gain); d_k = d_nfilters / 2; - d_rate = 0; + d_rate = (sps-floor(sps))*(double)d_nfilters; + printf("RATE: %f\n", d_rate); d_filtnum = (int)floor(d_k); d_filters = std::vector<gr_fir_ccf*>(d_nfilters); @@ -270,19 +271,14 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_rate = gr_branchless_clip(d_rate, d_max_dev); i++; - int a = (int)floor(d_sample_num); d_sample_num += d_sps; - int b = a + (int)floor(d_sps); count = (int)floor(d_sample_num); if(output_items.size() > 2) { err[i] = error; + outrate[i] = d_rate; outk[i] = d_k; } - if(b != count) { - outrate[i] = 1; - } - } // Set the start index at the next entrance to the work function -- cgit v1.2.3 From 5c70f942f8b1f979b5a58ec9b58ae409fa077005 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 13:57:52 -0700 Subject: Working fractional sample rates in clock recovery algorithm. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 31 ++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 56ad24ffcf..fcd3686013 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -242,6 +242,14 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { + out[i] = d_filters[d_filtnum]->filter(&in[count]); + gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); + error_r = out[i].real() * diff.real(); + error_i = out[i].imag() * diff.imag(); + error = error_i + error_r; + + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; d_filtnum = (int)floor(d_k); // Keep the current filter number in [0, d_nfilters] @@ -250,29 +258,23 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, while(d_filtnum >= d_nfilters) { d_k -= d_nfilters; d_filtnum -= d_nfilters; - d_sample_num += 1.0; + //d_sample_num += 1.0; + count += 1; } while(d_filtnum < 0) { d_k += d_nfilters; d_filtnum += d_nfilters; - d_sample_num -= 1.0; + //d_sample_num -= 1.0; + count -= 1; } - out[i] = d_filters[d_filtnum]->filter(&in[count]); - gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); - error_r = out[i].real() * diff.real(); - error_i = out[i].imag() * diff.imag(); - error = error_i + error_r; - - d_k = d_k + d_alpha*error + d_rate; - d_rate = d_rate + d_beta*error; - // Keep our rate within a good range d_rate = gr_branchless_clip(d_rate, d_max_dev); i++; - d_sample_num += d_sps; - count = (int)floor(d_sample_num); + //d_sample_num += d_sps; + //count = (int)floor(d_sample_num); + count += (int)floor(d_sps); if(output_items.size() > 2) { err[i] = error; @@ -295,7 +297,8 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, consume_each(count); } */ - d_sample_num -= floor(d_sample_num); + //d_sample_num -= floor(d_sample_num); + d_sample_num = 0; consume_each(count); return i; -- cgit v1.2.3 From baffe5aa1c39067b4b5777060bdbf84d3cb3c9fc Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:02:04 -0700 Subject: Cleaning up unused variable and code. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 26 ++-------------------- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 1 - 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index fcd3686013..bfbbf8b8b4 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -56,7 +56,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, gr_make_io_signature (1, 1, sizeof(gr_complex)), gr_make_io_signaturev (1, 4, iosig)), d_updated (false), d_nfilters(filter_size), - d_max_dev(max_rate_deviation), d_start_count(0) + d_max_dev(max_rate_deviation) { d_nfilters = filter_size; d_sps = floor(sps); @@ -69,7 +69,6 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, set_beta(0.25*gain*gain); d_k = d_nfilters / 2; d_rate = (sps-floor(sps))*(double)d_nfilters; - printf("RATE: %f\n", d_rate); d_filtnum = (int)floor(d_k); d_filters = std::vector<gr_fir_ccf*>(d_nfilters); @@ -237,7 +236,7 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // We need this many to process one output int nrequired = ninput_items[0] - d_taps_per_filter; - int i = 0, count = (int)floor(d_sample_num); + int i = 0, count = 0; float error, error_r, error_i; // produce output as long as we can and there are enough input samples @@ -258,13 +257,11 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, while(d_filtnum >= d_nfilters) { d_k -= d_nfilters; d_filtnum -= d_nfilters; - //d_sample_num += 1.0; count += 1; } while(d_filtnum < 0) { d_k += d_nfilters; d_filtnum += d_nfilters; - //d_sample_num -= 1.0; count -= 1; } @@ -272,8 +269,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_rate = gr_branchless_clip(d_rate, d_max_dev); i++; - //d_sample_num += d_sps; - //count = (int)floor(d_sample_num); count += (int)floor(d_sps); if(output_items.size() > 2) { @@ -282,23 +277,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, outk[i] = d_k; } } - - // Set the start index at the next entrance to the work function - // if we stop because we run out of input items, jump ahead in the - // next call to work. Otherwise, we can start at zero. - /* - if(count > nrequired) { - //d_start_count = count - (nrequired); - d_sample_num -= nrequired; - consume_each(ninput_items[0]-d_taps_per_filter); - } - else { - d_sample_num -= floor(d_sample_num); - consume_each(count); - } - */ - //d_sample_num -= floor(d_sample_num); - d_sample_num = 0; consume_each(count); return i; diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 73bd7d6e6c..778db59e5b 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -72,7 +72,6 @@ class gr_pfb_clock_sync_ccf : public gr_block float d_max_dev; int d_filtnum; int d_taps_per_filter; - unsigned int d_start_count; /*! * Build the polyphase filterbank timing synchronizer. -- cgit v1.2.3 From abbd0afddfec59a8a9bbf0d5da4625e1c28f4135 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:03:33 -0700 Subject: Moving filter number decision to start work function. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index bfbbf8b8b4..1507d7492a 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -241,14 +241,6 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, // produce output as long as we can and there are enough input samples while((i < noutput_items) && (count < nrequired)) { - out[i] = d_filters[d_filtnum]->filter(&in[count]); - gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); - error_r = out[i].real() * diff.real(); - error_i = out[i].imag() * diff.imag(); - error = error_i + error_r; - - d_k = d_k + d_alpha*error + d_rate; - d_rate = d_rate + d_beta*error; d_filtnum = (int)floor(d_k); // Keep the current filter number in [0, d_nfilters] @@ -264,6 +256,15 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, d_filtnum += d_nfilters; count -= 1; } + + out[i] = d_filters[d_filtnum]->filter(&in[count]); + gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); + error_r = out[i].real() * diff.real(); + error_i = out[i].imag() * diff.imag(); + error = error_i + error_r; + + d_k = d_k + d_alpha*error + d_rate; + d_rate = d_rate + d_beta*error; // Keep our rate within a good range d_rate = gr_branchless_clip(d_rate, d_max_dev); -- cgit v1.2.3 From 3006298886b72b7d7da5c803c16f5b07b72a05ef Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:33:39 -0700 Subject: Cleaning up constructor. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 1507d7492a..3af53fed5b 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -64,10 +64,9 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, // Store the last filter between calls to work // The accumulator keeps track of overflow to increment the stride correctly. // set it here to the fractional difference based on the initial phaes - // assert(init_phase <= 2*M_PI); set_alpha(gain); set_beta(0.25*gain*gain); - d_k = d_nfilters / 2; + d_k = init_phase; d_rate = (sps-floor(sps))*(double)d_nfilters; d_filtnum = (int)floor(d_k); -- cgit v1.2.3 From 8c846fb7946fb58ad9573d05bed0a71f0ba1ae73 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:34:39 -0700 Subject: Cleaning up GRC PAM timing example and adding ability to do M-ary PAM. --- gnuradio-examples/grc/demod/pam_timing.grc | 1037 ++++++++++------------------ grc/blocks/gr_pfb_clock_sync.xml | 7 +- 2 files changed, 364 insertions(+), 680 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index d51adb1f27..ba5235fa54 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Thu Oct 8 21:29:27 2009</timestamp> + <timestamp>Fri Oct 9 14:21:35 2009</timestamp> <block> <key>options</key> <param> @@ -76,26 +76,18 @@ </param> </block> <block> - <key>const_source_x</key> + <key>gr_uchar_to_float</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>gr_uchar_to_float_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> - <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>const</key> - <value>-0.5</value> - </param> <param> <key>_coordinate</key> - <value>(213, 197)</value> + <value>(216, 273)</value> </param> <param> <key>_rotation</key> @@ -103,69 +95,54 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>noise_amp</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> - </param> - <param> - <key>num_inputs</key> - <value>2</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(440, 167)</value> + <key>label</key> + <value>Channel Noise</value> </param> <param> - <key>_rotation</key> + <key>value</key> <value>0</value> </param> - </block> - <block> - <key>random_source_x</key> <param> - <key>id</key> - <value>random_source_x_0</value> + <key>min</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>max</key> + <value>1.0</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>min</key> - <value>0</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>max</key> - <value>2</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(13, 80)</value> + <value>(168, 684)</value> </param> <param> <key>_rotation</key> @@ -173,26 +150,22 @@ </param> </block> <block> - <key>gr_null_source</key> + <key>variable</key> <param> <key>id</key> - <value>gr_null_source_1</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>type</key> - <value>float</value> + <value>True</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>32000</value> </param> <param> <key>_coordinate</key> - <value>(387, 257)</value> + <value>(128, 9)</value> </param> <param> <key>_rotation</key> @@ -200,57 +173,54 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_add_xx_0_1</value> + <value>freq_offset</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>label</key> + <value>Frequency Offset</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>value</key> + <value>0</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>min</key> + <value>-0.5</value> </param> <param> - <key>_coordinate</key> - <value>(430, 330)</value> + <key>max</key> + <value>0.5</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>num_steps</key> + <value>1000</value> </param> - </block> - <block> - <key>const_source_x</key> <param> - <key>id</key> - <value>const_source_x_0_0</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>converver</key> + <value>float_converter</value> </param> <param> - <key>type</key> - <value>float</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>const</key> - <value>-0.5</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(200, 360)</value> + <value>(293, 684)</value> </param> <param> <key>_rotation</key> @@ -258,18 +228,22 @@ </param> </block> <block> - <key>gr_uchar_to_float</key> + <key>variable</key> <param> <key>id</key> - <value>gr_uchar_to_float_0_0</value> + <value>rrctaps</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>value</key> + <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts))</value> + </param> <param> <key>_coordinate</key> - <value>(216, 273)</value> + <value>(513, 679)</value> </param> <param> <key>_rotation</key> @@ -277,18 +251,22 @@ </param> </block> <block> - <key>random_source_x</key> + <key>variable_slider</key> <param> <key>id</key> - <value>random_source_x_0_0</value> + <value>alpha</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>label</key> + <value>Timing Alpha</value> + </param> + <param> + <key>value</key> + <value>0</value> </param> <param> <key>min</key> @@ -296,19 +274,31 @@ </param> <param> <key>max</key> - <value>2</value> + <value>10</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(15, 245)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> @@ -319,7 +309,7 @@ <key>variable_slider</key> <param> <key>id</key> - <value>noise_amp</value> + <value>beta</value> </param> <param> <key>_enabled</key> @@ -327,7 +317,7 @@ </param> <param> <key>label</key> - <value>Channel Noise</value> + <value>Timing Beta</value> </param> <param> <key>value</key> @@ -335,11 +325,11 @@ </param> <param> <key>min</key> - <value>0</value> + <value>0.0</value> </param> <param> <key>max</key> - <value>1.0</value> + <value>0.1</value> </param> <param> <key>num_steps</key> @@ -363,7 +353,30 @@ </param> <param> <key>_coordinate</key> - <value>(168, 684)</value> + <value>(668, 5)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>spb_gen</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4</value> + </param> + <param> + <key>_coordinate</key> + <value>(119, 841)</value> </param> <param> <key>_rotation</key> @@ -426,10 +439,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>random_source_x</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> @@ -437,47 +450,27 @@ </param> <param> <key>type</key> - <value>float</value> - </param> - <param> - <key>title</key> - <value>Scope Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>9</value> + <value>byte</value> </param> <param> - <key>t_scale</key> + <key>min</key> <value>0</value> </param> <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> + <key>max</key> + <value>pam_amp</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>notebook</key> - <value>notebook_0,1</value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(1115, 961)</value> + <value>(13, 80)</value> </param> <param> <key>_rotation</key> @@ -485,10 +478,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>random_source_x</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>random_source_x_0_0</value> </param> <param> <key>_enabled</key> @@ -496,47 +489,27 @@ </param> <param> <key>type</key> - <value>float</value> + <value>byte</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>min</key> + <value>0</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>1.25</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> + <key>max</key> + <value>pam_amp</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>notebook</key> - <value>notebook_0,2</value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(1113, 844)</value> + <value>(15, 245)</value> </param> <param> <key>_rotation</key> @@ -544,10 +517,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>const_source_x</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>const_source_x_0</value> </param> <param> <key>_enabled</key> @@ -558,44 +531,12 @@ <value>float</value> </param> <param> - <key>title</key> - <value>Error</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>v_scale</key> - <value>.5</value> - </param> - <param> - <key>t_scale</key> - <value>0</value> - </param> - <param> - <key>ac_couple</key> - <value>False</value> - </param> - <param> - <key>xy_mode</key> - <value>False</value> - </param> - <param> - <key>num_inputs</key> - <value>1</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook_0,0</value> + <key>const</key> + <value>-0.5*(pam_amp-1)</value> </param> <param> <key>_coordinate</key> - <value>(1113, 724)</value> + <value>(213, 197)</value> </param> <param> <key>_rotation</key> @@ -603,57 +544,26 @@ </param> </block> <block> - <key>notebook</key> + <key>const_source_x</key> <param> <key>id</key> - <value>notebook_0</value> + <value>const_source_x_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['error', 'phase', 'freq', 'FFT', 'Costas error']</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(729, 769)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>32000</value> + <key>const</key> + <value>-0.5*(pam_amp-1)</value> </param> <param> <key>_coordinate</key> - <value>(128, 9)</value> + <value>(200, 360)</value> </param> <param> <key>_rotation</key> @@ -661,10 +571,10 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> @@ -672,58 +582,47 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>title</key> + <value>Error</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(1129, 462)</value> + <key>v_scale</key> + <value>.5</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>gr_costas_loop_cc</key> - <param> - <key>id</key> - <value>gr_costas_loop_cc_0</value> - </param> <param> - <key>_enabled</key> + <key>ac_couple</key> <value>False</value> </param> <param> - <key>alpha</key> - <value>alpha_0</value> - </param> - <param> - <key>beta</key> - <value>beta_0</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>max_freq</key> - <value>5</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>min_freq</key> - <value>-5</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>order</key> - <value>4</value> + <key>notebook</key> + <value>notebook_0,0</value> </param> <param> <key>_coordinate</key> - <value>(299, 453)</value> + <value>(1110, 651)</value> </param> <param> <key>_rotation</key> @@ -731,77 +630,58 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>freq_offset</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Frequency Offset</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>0</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>min</key> - <value>-0.5</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>max</key> - <value>0.5</value> + <key>v_scale</key> + <value>1.25</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>notebook</key> + <key>grid_pos</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(293, 684)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>rrctaps</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts))</value> + <key>notebook</key> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(513, 679)</value> + <value>(1111, 767)</value> </param> <param> <key>_rotation</key> @@ -809,10 +689,10 @@ </param> </block> <block> - <key>root_raised_cosine_filter</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>root_raised_cosine_filter_0_0</value> + <value>wxgui_scopesink2_0_0_0</value> </param> <param> <key>_enabled</key> @@ -820,82 +700,35 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb_gen</value> + <value>float</value> </param> <param> - <key>gain</key> - <value>2*spb_gen</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb_gen</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb_gen</value> - </param> - <param> - <key>_coordinate</key> - <value>(564, 301)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>alpha</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Timing Alpha</value> + <value>samp_rate</value> </param> <param> - <key>value</key> - <value>0</value> + <key>v_scale</key> + <value>9</value> </param> <param> - <key>min</key> + <key>t_scale</key> <value>0</value> </param> <param> - <key>max</key> - <value>10</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>grid_pos</key> @@ -903,11 +736,11 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,1</value> </param> <param> <key>_coordinate</key> - <value>(552, 4)</value> + <value>(1112, 881)</value> </param> <param> <key>_rotation</key> @@ -915,109 +748,69 @@ </param> </block> <block> - <key>variable_slider</key> + <key>gr_channel_model</key> <param> <key>id</key> - <value>beta</value> + <value>gr_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Beta</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0.0</value> - </param> - <param> - <key>max</key> - <value>0.1</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> + <key>noise_voltage</key> + <value>noise_amp</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>freq_offset</key> + <value>freq_offset</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>epsilon</key> + <value>interpratio</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>taps</key> + <value>1.0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>seed</key> + <value>42</value> </param> <param> <key>_coordinate</key> - <value>(668, 5)</value> + <value>(59, 543)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable_slider</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>alpha_0</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>label</key> - <value>Freq Alpha</value> - </param> - <param> - <key>value</key> - <value>0.01</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>0.1</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>True</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>samples_per_second</key> + <value>samp_rate</value> </param> <param> - <key>notebook</key> - <value></value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(792, 6)</value> + <value>(290, 575)</value> </param> <param> <key>_rotation</key> @@ -1025,42 +818,22 @@ </param> </block> <block> - <key>variable_slider</key> + <key>notebook</key> <param> <key>id</key> - <value>beta_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>label</key> - <value>Freq Beta</value> - </param> - <param> - <key>value</key> - <value>0.001</value> - </param> - <param> - <key>min</key> - <value>0.0</value> - </param> - <param> - <key>max</key> - <value>0.01</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> + <value>True</value> </param> <param> <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>wx.NB_TOP</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>labels</key> + <value>['error', 'phase', 'freq', 'Resampled Signal']</value> </param> <param> <key>grid_pos</key> @@ -1072,18 +845,18 @@ </param> <param> <key>_coordinate</key> - <value>(919, 7)</value> + <value>(729, 769)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -1095,7 +868,7 @@ </param> <param> <key>title</key> - <value>Scope Plot</value> + <value>Error</value> </param> <param> <key>samp_rate</key> @@ -1103,7 +876,7 @@ </param> <param> <key>v_scale</key> - <value>0</value> + <value>.5</value> </param> <param> <key>t_scale</key> @@ -1126,12 +899,35 @@ <value></value> </param> <param> - <key>notebook</key> - <value></value> + <key>notebook</key> + <value>notebook_0,3</value> + </param> + <param> + <key>_coordinate</key> + <value>(1115, 358)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>spb</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>4.1</value> </param> <param> <key>_coordinate</key> - <value>(1145, 258)</value> + <value>(32, 842)</value> </param> <param> <key>_rotation</key> @@ -1139,10 +935,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_1</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> @@ -1150,47 +946,50 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>float</value> </param> <param> - <key>title</key> - <value>Error</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_scale</key> - <value>.5</value> + <key>_coordinate</key> + <value>(440, 167)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_add_xx</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>gr_add_xx_0_1</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>type</key> + <value>float</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>notebook</key> - <value>notebook_0,4</value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(1107, 533)</value> + <value>(430, 330)</value> </param> <param> <key>_rotation</key> @@ -1198,22 +997,30 @@ </param> </block> <block> - <key>variable</key> + <key>blks2_pfb_arb_resampler_ccf</key> <param> <key>id</key> - <value>spb_gen</value> + <value>blks2_pfb_arb_resampler_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>4</value> + <key>rate</key> + <value>float(spb)/float(spb_gen)</value> + </param> + <param> + <key>taps</key> + <value>firdes.low_pass(128, 128, 0.45, 0.1)</value> + </param> + <param> + <key>size</key> + <value>128</value> </param> <param> <key>_coordinate</key> - <value>(119, 841)</value> + <value>(617, 374)</value> </param> <param> <key>_rotation</key> @@ -1236,7 +1043,7 @@ </param> <param> <key>_coordinate</key> - <value>(904, 184)</value> + <value>(590, 184)</value> </param> <param> <key>_rotation</key> @@ -1255,7 +1062,7 @@ </param> <param> <key>type</key> - <value>interp_fir_filter_fff</value> + <value>interp_fir_filter_ccf</value> </param> <param> <key>decim</key> @@ -1287,7 +1094,7 @@ </param> <param> <key>_coordinate</key> - <value>(557, 140)</value> + <value>(832, 157)</value> </param> <param> <key>_rotation</key> @@ -1295,61 +1102,58 @@ </param> </block> <block> - <key>variable</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>spb</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>4.01</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>_coordinate</key> - <value>(32, 842)</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> - </block> - <block> - <key>gr_channel_model</key> <param> - <key>id</key> - <value>gr_channel_model_0</value> + <key>v_scale</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>False</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>noise_voltage</key> - <value>noise_amp</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>freq_offset</key> - <value>freq_offset</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>epsilon</key> - <value>interpratio</value> + <key>num_inputs</key> + <value>1</value> </param> <param> - <key>taps</key> - <value>1.0</value> + <key>grid_pos</key> + <value></value> </param> <param> - <key>seed</key> - <value>42</value> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(59, 543)</value> + <value>(1116, 500)</value> </param> <param> <key>_rotation</key> @@ -1357,30 +1161,22 @@ </param> </block> <block> - <key>blks2_pfb_arb_resampler_ccf</key> + <key>variable</key> <param> <key>id</key> - <value>blks2_pfb_arb_resampler_ccf_0</value> + <value>nfilts</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>rate</key> - <value>float(spb)/float(spb_gen)</value> - </param> - <param> - <key>taps</key> - <value>firdes.low_pass(320, 320, 0.45, 0.1)</value> - </param> - <param> - <key>size</key> - <value>320</value> + <key>value</key> + <value>64</value> </param> <param> <key>_coordinate</key> - <value>(874, 374)</value> + <value>(435, 686)</value> </param> <param> <key>_rotation</key> @@ -1419,90 +1215,15 @@ </param> <param> <key>init_phase</key> - <value>14</value> - </param> - <param> - <key>_coordinate</key> - <value>(512, 527)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> + <value>16</value> </param> <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value>notebook_0,3</value> + <key>max_dev</key> + <value>20</value> </param> <param> <key>_coordinate</key> - <value>(517, 767)</value> + <value>(512, 527)</value> </param> <param> <key>_rotation</key> @@ -1513,7 +1234,7 @@ <key>variable</key> <param> <key>id</key> - <value>nfilts</value> + <value>pam_amp</value> </param> <param> <key>_enabled</key> @@ -1521,23 +1242,17 @@ </param> <param> <key>value</key> - <value>64</value> + <value>16</value> </param> <param> <key>_coordinate</key> - <value>(435, 686)</value> + <value>(223, 9)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> </block> - <connection> - <source_block_id>gr_throttle_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> @@ -1574,12 +1289,6 @@ <source_key>0</source_key> <sink_key>1</sink_key> </connection> - <connection> - <source_block_id>gr_add_xx_0</source_block_id> - <sink_block_id>root_raised_cosine_filter_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>gr_uchar_to_float_0_0</source_block_id> <sink_block_id>gr_add_xx_0_1</sink_block_id> @@ -1592,12 +1301,6 @@ <source_key>0</source_key> <sink_key>1</sink_key> </connection> - <connection> - <source_block_id>gr_add_xx_0_1</source_block_id> - <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>random_source_x_0_0</source_block_id> <sink_block_id>gr_uchar_to_float_0_0</sink_block_id> @@ -1605,80 +1308,56 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_null_source_1</source_block_id> - <sink_block_id>root_raised_cosine_filter_0_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>root_raised_cosine_filter_0_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> - <source_key>0</source_key> - <sink_key>1</sink_key> - </connection> - <connection> - <source_block_id>root_raised_cosine_filter_0</source_block_id> - <sink_block_id>gr_float_to_complex_0</sink_block_id> + <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> + <sink_block_id>gr_channel_model_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> + <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>gr_costas_loop_cc_0</sink_block_id> + <sink_block_id>gr_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_costas_loop_cc_0</source_block_id> + <source_block_id>gr_throttle_0</source_block_id> <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> - <connection> - <source_block_id>gr_costas_loop_cc_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> - <source_key>1</source_key> - <sink_key>0</sink_key> - </connection> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> - <sink_block_id>gr_throttle_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>gr_channel_model_0</source_block_id> - <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> + <sink_block_id>wxgui_scopesink2_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>gr_float_to_complex_0</source_block_id> - <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> + <source_block_id>gr_add_xx_0</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> - <sink_block_id>gr_channel_model_0</sink_block_id> + <source_block_id>gr_add_xx_0_1</source_block_id> + <sink_block_id>gr_float_to_complex_0</sink_block_id> <source_key>0</source_key> - <sink_key>0</sink_key> + <sink_key>1</sink_key> </connection> <connection> - <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0_0_1</sink_block_id> + <source_block_id>gr_float_to_complex_0</source_block_id> + <sink_block_id>root_raised_cosine_filter_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blks2_pfb_arb_resampler_ccf_0</source_block_id> - <sink_block_id>gr_pfb_clock_sync_ccf_0</sink_block_id> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml index 670d5b4636..9cb909acd1 100644 --- a/grc/blocks/gr_pfb_clock_sync.xml +++ b/grc/blocks/gr_pfb_clock_sync.xml @@ -8,7 +8,7 @@ <name>Polyphase Clock Sync</name> <key>gr_pfb_clock_sync_ccf</key> <import>from gnuradio import gr</import> - <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase) + <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase, $max_dev) self.$(id).set_beta($beta)</make> <callback>set_taps($taps)</callback> <callback>set_alpha($alpha)</callback> @@ -44,6 +44,11 @@ self.$(id).set_beta($beta)</make> <key>init_phase</key> <type>real</type> </param> + <param> + <name>Maximum Rate Deviation</name> + <key>max_dev</key> + <type>real</type> + </param> <sink> <name>in</name> <type>complex</type> -- cgit v1.2.3 From 9761acfa39bfcda99b09dad7c5b70d8abb1e6379 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 14:52:13 -0700 Subject: Using 2-PAM by default. --- gnuradio-examples/grc/demod/pam_timing.grc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index ba5235fa54..907233aca8 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Fri Oct 9 14:21:35 2009</timestamp> + <timestamp>Fri Oct 9 14:51:58 2009</timestamp> <block> <key>options</key> <param> @@ -1242,7 +1242,7 @@ </param> <param> <key>value</key> - <value>16</value> + <value>2</value> </param> <param> <key>_coordinate</key> -- cgit v1.2.3 From a524c6f494cfb3b88d1e55d3f1a35d97ec566c4e Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 16:26:28 -0700 Subject: More additions to PAM timing simulation. --- gnuradio-examples/grc/demod/pam_timing.grc | 189 +++++++++++++++++++++-------- 1 file changed, 137 insertions(+), 52 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 907233aca8..b3e90f1730 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Fri Oct 9 14:51:58 2009</timestamp> + <timestamp>Fri Oct 9 14:52:42 2009</timestamp> <block> <key>options</key> <param> @@ -1050,57 +1050,6 @@ <value>0</value> </param> </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_ccf</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb_gen</value> - </param> - <param> - <key>gain</key> - <value>2*spb_gen</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb_gen</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb_gen</value> - </param> - <param> - <key>_coordinate</key> - <value>(832, 157)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>wxgui_scopesink2</key> <param> @@ -1253,6 +1202,136 @@ <value>0</value> </param> </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_ccf</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb_gen</value> + </param> + <param> + <key>gain</key> + <value>2*spb_gen</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb_gen</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb_gen</value> + </param> + <param> + <key>_coordinate</key> + <value>(832, 157)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>wxgui_fftsink2</key> + <param> + <key>id</key> + <value>wxgui_fftsink2_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>title</key> + <value>FFT Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>baseband_freq</key> + <value>0</value> + </param> + <param> + <key>y_per_div</key> + <value>10</value> + </param> + <param> + <key>y_divs</key> + <value>10</value> + </param> + <param> + <key>ref_level</key> + <value>50</value> + </param> + <param> + <key>ref_scale</key> + <value>2.0</value> + </param> + <param> + <key>fft_size</key> + <value>1024</value> + </param> + <param> + <key>fft_rate</key> + <value>30</value> + </param> + <param> + <key>peak_hold</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>False</value> + </param> + <param> + <key>avg_alpha</key> + <value>0</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1104, 39)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> @@ -1361,4 +1440,10 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> + <connection> + <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> -- cgit v1.2.3 From dda4ffec1f7aefe9271a9e0a3eff03f665138ed3 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 16:55:37 -0700 Subject: Revert "More additions to PAM timing simulation." This reverts commit a524c6f494cfb3b88d1e55d3f1a35d97ec566c4e. --- gnuradio-examples/grc/demod/pam_timing.grc | 189 ++++++++--------------------- 1 file changed, 52 insertions(+), 137 deletions(-) diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index b3e90f1730..907233aca8 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Fri Oct 9 14:52:42 2009</timestamp> + <timestamp>Fri Oct 9 14:51:58 2009</timestamp> <block> <key>options</key> <param> @@ -1050,6 +1050,57 @@ <value>0</value> </param> </block> + <block> + <key>root_raised_cosine_filter</key> + <param> + <key>id</key> + <value>root_raised_cosine_filter_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>interp_fir_filter_ccf</value> + </param> + <param> + <key>decim</key> + <value>1</value> + </param> + <param> + <key>interp</key> + <value>spb_gen</value> + </param> + <param> + <key>gain</key> + <value>2*spb_gen</value> + </param> + <param> + <key>samp_rate</key> + <value>1.0</value> + </param> + <param> + <key>sym_rate</key> + <value>1./spb_gen</value> + </param> + <param> + <key>alpha</key> + <value>0.35</value> + </param> + <param> + <key>ntaps</key> + <value>11*spb_gen</value> + </param> + <param> + <key>_coordinate</key> + <value>(832, 157)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <block> <key>wxgui_scopesink2</key> <param> @@ -1202,136 +1253,6 @@ <value>0</value> </param> </block> - <block> - <key>root_raised_cosine_filter</key> - <param> - <key>id</key> - <value>root_raised_cosine_filter_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>interp_fir_filter_ccf</value> - </param> - <param> - <key>decim</key> - <value>1</value> - </param> - <param> - <key>interp</key> - <value>spb_gen</value> - </param> - <param> - <key>gain</key> - <value>2*spb_gen</value> - </param> - <param> - <key>samp_rate</key> - <value>1.0</value> - </param> - <param> - <key>sym_rate</key> - <value>1./spb_gen</value> - </param> - <param> - <key>alpha</key> - <value>0.35</value> - </param> - <param> - <key>ntaps</key> - <value>11*spb_gen</value> - </param> - <param> - <key>_coordinate</key> - <value>(832, 157)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>wxgui_fftsink2</key> - <param> - <key>id</key> - <value>wxgui_fftsink2_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>0</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>50</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> - </param> - <param> - <key>fft_size</key> - <value>1024</value> - </param> - <param> - <key>fft_rate</key> - <value>30</value> - </param> - <param> - <key>peak_hold</key> - <value>False</value> - </param> - <param> - <key>average</key> - <value>False</value> - </param> - <param> - <key>avg_alpha</key> - <value>0</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(1104, 39)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <connection> <source_block_id>gr_pfb_clock_sync_ccf_0</source_block_id> <sink_block_id>wxgui_scopesink2_0_0</sink_block_id> @@ -1440,10 +1361,4 @@ <source_key>0</source_key> <sink_key>0</sink_key> </connection> - <connection> - <source_block_id>root_raised_cosine_filter_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> </flow_graph> -- cgit v1.2.3 From 016fccfd58c68ad52fd845419f57e03370851b1f Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 18:21:08 -0700 Subject: Adding new DBPSK block with new PFB clock recovery alg. --- .../src/python/gnuradio/blks2impl/dbpsk2.py | 353 +++++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py new file mode 100644 index 0000000000..e9e3e965fe --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py @@ -0,0 +1,353 @@ +# +# Copyright 2005,2006,2007 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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential BPSK modulation and demodulation. +""" + +from gnuradio import gr, gru, modulation_utils +from math import pi, sqrt +import psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_gray_code = True +_def_verbose = False +_def_log = False + +_def_costas_alpha = 0.1 +_def_timing_alpha = None +_def_timing_beta = None +_def_timing_max_dev = 1.5 + + +# ///////////////////////////////////////////////////////////////////////////// +# DBPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class dbpsk2_mod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential BPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param samples_per_symbol: samples per baud >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Log modulation data to files? + @type log: bool + """ + + gr.hier_block2.__init__(self, "dbpsk_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._gray_code = gray_code + + if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) + + ntaps = 11 * self._samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.binary_to_ungray[arity]) + + self.diffenc = gr.diff_encoder_bb(arity) + + self.chunks2symbols = gr.chunks_to_symbols_bc(psk.constellation[arity]) + + # pulse shaping filter + self.rrc_taps = gr.firdes.root_raised_cosine( + self._samples_per_symbol, # gain (samples_per_symbol since we're + # interpolating by samples_per_symbol) + self._samples_per_symbol, # sampling rate + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, + self.rrc_taps) + + # Connect + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # static method that's also callable on an instance + return 1 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def add_options(parser): + """ + Adds DBPSK modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default]") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=True, + help="disable gray coding on modulated bits (PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils.extract_kwargs_from_options(dbpsk2_mod.__init__, + ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_graycoder.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + +# ///////////////////////////////////////////////////////////////////////////// +# DBPSK demodulator +# +# Differentially coherent detection of differentially encoded BPSK +# ///////////////////////////////////////////////////////////////////////////// + +class dbpsk2_demod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + costas_alpha=_def_costas_alpha, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential BPSK demodulation + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param costas_alpha: loop filter gain + @type costas_alpha: float + @param timing_alpha: timing loop alpha gain + @type timing_alpha: float + @param timing_max: timing loop maximum rate deviations + @type timing_max: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + gr.hier_block2.__init__(self, "dbpsk2_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_char)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._costas_alpha = costas_alpha + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_alpha + self._timing_max_dev=timing_max_dev + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, "samples_per_symbol must be >= 2, is %r" % (samples_per_symbol,) + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + #self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + self.agc = gr.feedforward_agc_cc(16, 1.0) + + self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha + fmin = -0.25 + fmax = 0.25 + + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + + # symbol clock recovery + if not self._timing_alpha: + self._timing_alpha = 2 + self._timing_beta = 0.020 + + # RRC data filter + nfilts = 8 + ntaps = 11 * samples_per_symbol*nfilts + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 0.25, self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + # Do differential decoding based on phase change of symbols + self.diffdec = gr.diff_phasor_cc() + + # find closest constellation point + rot = 1 + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.slicer = gr.constellation_decoder_cb(rotated_const, range(arity)) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.ungray_to_binary[arity]) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect and Initialize base class + self.connect(self, self.agc, + #self.clock_recov, + self.time_recov, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 1 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + print "Costas Loop alpha: %.2f" % self._costas_alpha + print "Costas Loop beta: %.2f" % self._costas_beta + print "Timing alpha gain: %.2f" % self._timing_alpha + print "Timing beta gain: %.2f" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.pre_scaler, + gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.receiver, + gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, + gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds DBPSK demodulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + parser.add_option("", "--costas-alpha", type="float", default=None, + help="set Costas loop alpha value [default=%default] (PSK)") + parser.add_option("", "--gain-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default] (GMSK/PSK)") + parser.add_option("", "--gain-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils.extract_kwargs_from_options( + dbpsk2_demod.__init__, ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) +# +# Add these to the mod/demod registry +# +modulation_utils.add_type_1_mod('dbpsk2', dbpsk2_mod) +modulation_utils.add_type_1_demod('dbpsk2', dbpsk2_demod) -- cgit v1.2.3 From 19e2cc4b27664a1e4fe64167b3846f3eba79db46 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 18:21:36 -0700 Subject: Making old dbpsk work again to compare against new version. --- .../src/lib/general/gr_mpsk_receiver_cc.cc | 2 +- .../src/python/gnuradio/blks2impl/Makefile.am | 1 + .../src/python/gnuradio/blks2impl/dbpsk.py | 36 +++++----------------- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc index 89ea4a232c..1efa827035 100644 --- a/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc +++ b/gnuradio-core/src/lib/general/gr_mpsk_receiver_cc.cc @@ -35,7 +35,7 @@ #define M_TWOPI (2*M_PI) #define VERBOSE_MM 0 // Used for debugging symbol timing loop -#define VERBOSE_COSTAS 1 // Used for debugging phase and frequency tracking +#define VERBOSE_COSTAS 0 // Used for debugging phase and frequency tracking // Public constructor diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index f0825b1513..17ce1fff94 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -31,6 +31,7 @@ grblkspython_PYTHON = \ am_demod.py \ channel_model.py \ dbpsk.py \ + dbpsk2.py \ dqpsk.py \ d8psk.py \ filterbank.py \ diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py index ac2e9323fb..47a13a787a 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py @@ -251,37 +251,19 @@ class dbpsk_demod(gr.hier_block2): # symbol clock recovery if not self._mm_gain_mu: self._mm_gain_mu = 0.1 - + self._mm_omega = self._samples_per_symbol self._mm_gain_omega = .25 * self._mm_gain_mu * self._mm_gain_mu self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha fmin = -0.25 fmax = 0.25 - #self.receiver=gr.mpsk_receiver_cc(arity, 0, - # self._costas_alpha, self._costas_beta, - # fmin, fmax, - # self._mm_mu, self._mm_gain_mu, - # self._mm_omega, self._mm_gain_omega, - # self._mm_omega_relative_limit) - - self.clock_recov = gr.costas_loop_cc(self._costas_alpha, - self._costas_beta, - fmax, fmin, arity) - if 0: - self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, - self._mm_gain_omega, - self._mm_mu, - self._mm_gain_mu, - self._mm_omega_relative_limit) - else: - nfilts = 8 - ntaps = nfilts*ntaps - taps = gr.firdes.root_raised_cosine( - nfilts, 1.0, 0.25/nfilts, self._excess_bw, ntaps) - self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, - self._mm_gain_mu, - taps, nfilts) + self.receiver=gr.mpsk_receiver_cc(arity, 0, + self._costas_alpha, self._costas_beta, + fmin, fmax, + self._mm_mu, self._mm_gain_mu, + self._mm_omega, self._mm_gain_omega, + self._mm_omega_relative_limit) # Do differential decoding based on phase change of symbols self.diffdec = gr.diff_phasor_cc() @@ -306,9 +288,7 @@ class dbpsk_demod(gr.hier_block2): self._setup_logging() # Connect and Initialize base class - self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, self.receiver, - #self.clock_recov, - self.time_recov, + self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, self.receiver, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): -- cgit v1.2.3 From 5657ff84eca261298910b46f89e20a6a50427df8 Mon Sep 17 00:00:00 2001 From: Tom <trondeau@vt.edu> Date: Fri, 9 Oct 2009 18:22:44 -0700 Subject: Starting to rework QT app to control new PFB clock recovery alg. --- .../python/digital/benchmark_qt_loopback.py | 36 +++++++++------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index 1bfda4a96c..35cc2e376d 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback.py @@ -52,7 +52,7 @@ class dialog_box(QtGui.QMainWindow): self.set_frequency(self.fg.frequency_offset()) self.set_time_offset(self.fg.timing_offset()) - self.set_gain_mu(self.fg.rx_gain_mu()) + self.set_gain_mu(self.fg.rx_timing_gain_alpha()) self.set_alpha(self.fg.rx_alpha()) # Add the qtsnk widgets to the hlayout box @@ -158,7 +158,7 @@ class dialog_box(QtGui.QMainWindow): def gainMuEditText(self): try: gain = self.gui.gainMuEdit.text().toDouble()[0] - self.fg.set_rx_gain_mu(gain) + self.fg.set_rx_timing_gain_alpha(gain) except RuntimeError: pass @@ -202,7 +202,7 @@ class my_top_block(gr.top_block): self.rxpath = receive_path(demod_class, rx_callback, options) # FIXME: do better exposure to lower issues for control - self._gain_mu = self.rxpath.packet_receiver._demodulator._mm_gain_mu + self._timing_gain_alpha = self.rxpath.packet_receiver._demodulator._timing_alpha self._alpha = self.rxpath.packet_receiver._demodulator._costas_alpha if channelon: @@ -234,20 +234,20 @@ class my_top_block(gr.top_block): self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, 0, 1, "Rx", True, True, False, True, True) - self.snk_err = qtgui.sink_f(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, - 0, 1, - "Error", True, True, False, False, False) self.snk_tx.set_frequency_axis(-80, 0) self.snk_rx.set_frequency_axis(-60, 20) # Connect to the QT sinks # FIXME: make better exposure to receiver from rxpath - #self.freq_recov = self.rxpath.packet_receiver._demodulator.clock_recov + self.freq_recov = self.rxpath.packet_receiver._demodulator.clock_recov self.time_recov = self.rxpath.packet_receiver._demodulator.time_recov + self.freq_recov.set_alpha(0) + self.freq_recov.set_beta(0) + self.time_recov.set_alpha(2) + self.time_recov.set_beta(0.02) self.connect(self.channel, self.snk_tx) self.connect(self.time_recov, self.snk_rx) - self.connect((self.time_recov, 1), self.snk_err) pyTxQt = self.snk_tx.pyqwidget() pyTx = sip.wrapinstance(pyTxQt, QtGui.QWidget) @@ -255,9 +255,6 @@ class my_top_block(gr.top_block): pyRxQt = self.snk_rx.pyqwidget() pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget) - pyErrQt = self.snk_err.pyqwidget() - pyErr = sip.wrapinstance(pyRxQt, QtGui.QWidget) - self.main_box = dialog_box(pyTx, pyRx, self) self.main_box.show() @@ -307,18 +304,15 @@ class my_top_block(gr.top_block): # Receiver Parameters - def rx_gain_mu(self): - return self._gain_mu + def rx_timing_gain_alpha(self): + return self._timing_gain_alpha - def rx_gain_omega(self): - return self.gain_omega + def rx_timing_gain_beta(self): + return self._timing_gain_beta - def set_rx_gain_mu(self, gain): - self._gain_mu = gain - self.gain_omega = .25 * self._gain_mu * self._gain_mu - #self.time_recov.set_gain_mu(self._gain_mu) - #self.time_recov.set_gain_omega(self.gain_omega) - self.time_recov.set_gain(self._gain_mu) + def set_rx_timing_gain_alpha(self, gain): + self._timing_gain_alpha = gain + self.time_recov.set_gain(self._timing_gain_alpha) def rx_alpha(self): return self._alpha -- cgit v1.2.3 From b5374350ea98bee6802976937f84ce91f1f721a6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 13:21:59 -0400 Subject: A bit of code cleanup. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 3af53fed5b..8271fe6b9e 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -118,14 +118,12 @@ gr_pfb_clock_sync_ccf::set_taps (const std::vector<float> &newtaps, // Partition the filter for(i = 0; i < d_nfilters; i++) { // Each channel uses all d_taps_per_filter with 0's if not enough taps to fill out - //ourtaps[i] = std::vector<float>(d_taps_per_filter, 0); ourtaps[d_nfilters-1-i] = std::vector<float>(d_taps_per_filter, 0); for(j = 0; j < d_taps_per_filter; j++) { ourtaps[d_nfilters - 1 - i][j] = tmp_taps[i + j*d_nfilters]; } // Build a filter for each channel and add it's taps to it - //ourfilter[i]->set_taps(ourtaps[i]); ourfilter[i]->set_taps(ourtaps[d_nfilters-1-i]); } @@ -139,22 +137,13 @@ void gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps) { - float maxtap = -1e12; difftaps.clear(); difftaps.push_back(0); //newtaps[0]); for(unsigned int i = 1; i < newtaps.size()-1; i++) { float tap = newtaps[i+1] - newtaps[i-1]; - if(tap > maxtap) { - maxtap = tap; - } - //maxtap += tap; difftaps.push_back(tap); } difftaps.push_back(0);//-newtaps[newtaps.size()-1]); - - for(unsigned int i = 0; i < difftaps.size(); i++) { - difftaps[i] /= 1;//maxtap; - } } void @@ -260,8 +249,9 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, gr_complex diff = d_diff_filters[d_filtnum]->filter(&in[count]); error_r = out[i].real() * diff.real(); error_i = out[i].imag() * diff.imag(); - error = error_i + error_r; + error = (error_i + error_r) / 2.0; // average error from I&Q channel + // Run the control loop to update the current phase (k) and tracking rate d_k = d_k + d_alpha*error + d_rate; d_rate = d_rate + d_beta*error; -- cgit v1.2.3 From cd963d806b7f324fd845c7b51ef20985000b774c Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 13:26:00 -0400 Subject: Working DBPSK implementation with new PFB clock recovery block. The feedforward AGC wasn't playing nicely, the frequency aquistion range was increased to swing half the sample rate in either direction, and the number of filter phases to use was increased to 32. --- gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py index e9e3e965fe..e2bce5ff08 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py @@ -230,12 +230,13 @@ class dbpsk2_demod(gr.hier_block2): arity = pow(2,self.bits_per_symbol()) # Automatic gain control - #self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) - self.agc = gr.feedforward_agc_cc(16, 1.0) + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + #self.agc = gr.feedforward_agc_cc(16, 1.0) self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha - fmin = -0.25 - fmax = 0.25 + # Allow a frequency swing of +/- half of the sample rate + fmin = -0.5 + fmax = 0.5 self.clock_recov = gr.costas_loop_cc(self._costas_alpha, self._costas_beta, @@ -247,9 +248,9 @@ class dbpsk2_demod(gr.hier_block2): self._timing_beta = 0.020 # RRC data filter - nfilts = 8 + nfilts = 32 ntaps = 11 * samples_per_symbol*nfilts - taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 0.25, self._excess_bw, ntaps) + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(self._samples_per_symbol), self._excess_bw, ntaps) self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, self._timing_alpha, taps, nfilts, nfilts/2, self._timing_max_dev) @@ -279,7 +280,7 @@ class dbpsk2_demod(gr.hier_block2): # Connect and Initialize base class self.connect(self, self.agc, - #self.clock_recov, + self.clock_recov, self.time_recov, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) -- cgit v1.2.3 From 517380207ba51fc127bc979dbc1d8bdc557145e6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 13:28:27 -0400 Subject: Temporary working dbpsk2 example until we match everything. --- .../python/digital/benchmark_qt_loopback2.py | 488 ++++++++++++++++ .../python/digital/qt_digital_window2.py | 261 +++++++++ .../python/digital/qt_digital_window2.ui | 637 +++++++++++++++++++++ 3 files changed, 1386 insertions(+) create mode 100755 gnuradio-examples/python/digital/benchmark_qt_loopback2.py create mode 100644 gnuradio-examples/python/digital/qt_digital_window2.py create mode 100644 gnuradio-examples/python/digital/qt_digital_window2.ui diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py new file mode 100755 index 0000000000..17c8a1750a --- /dev/null +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -0,0 +1,488 @@ +#!/usr/bin/env python + +from gnuradio import gr, gru, modulation_utils +from gnuradio import eng_notation +from gnuradio.eng_option import eng_option +from optparse import OptionParser +import random, time, struct, sys, os, math + +from threading import Thread + +# from current dir +from transmit_path import transmit_path +from receive_path import receive_path + +try: + from gnuradio.qtgui import qtgui + from PyQt4 import QtGui, QtCore + import sip +except ImportError: + print "Please install gr-qtgui." + sys.exit(1) + +try: + from qt_digital_window import Ui_DigitalWindow +except ImportError: + print "Error: could not find qt_digital_window.py:" + print "\t\"pyuic4 qt_digital_window.ui -o qt_digital_window.py\"" + sys.exit(1) + + +#print os.getpid() +#raw_input() + + +# //////////////////////////////////////////////////////////////////// +# Define the QT Interface and Control Dialog +# //////////////////////////////////////////////////////////////////// + + +class dialog_box(QtGui.QMainWindow): + def __init__(self, snkTx, snkRx, fg, parent=None): + + QtGui.QWidget.__init__(self, parent) + self.gui = Ui_DigitalWindow() + self.gui.setupUi(self) + + self.fg = fg + + self.set_sample_rate(self.fg.sample_rate()) + + self.set_snr(self.fg.snr()) + self.set_frequency(self.fg.frequency_offset()) + self.set_time_offset(self.fg.timing_offset()) + + self.set_alpha_time(self.fg.rx_timing_gain_alpha()) + self.set_beta_time(self.fg.rx_timing_gain_beta()) + self.set_alpha_freq(self.fg.rx_freq_gain_alpha()) + + # Add the qtsnk widgets to the hlayout box + self.gui.sinkLayout.addWidget(snkTx) + self.gui.sinkLayout.addWidget(snkRx) + + + # Connect up some signals + self.connect(self.gui.pauseButton, QtCore.SIGNAL("clicked()"), + self.pauseFg) + + self.connect(self.gui.sampleRateEdit, QtCore.SIGNAL("editingFinished()"), + self.sampleRateEditText) + + self.connect(self.gui.snrEdit, QtCore.SIGNAL("editingFinished()"), + self.snrEditText) + self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), + self.freqEditText) + self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"), + self.timeEditText) + + self.connect(self.gui.alphaTimeEdit, QtCore.SIGNAL("editingFinished()"), + self.alphaTimeEditText) + self.connect(self.gui.betaTimeEdit, QtCore.SIGNAL("editingFinished()"), + self.betaTimeEditText) + self.connect(self.gui.alphaFreqEdit, QtCore.SIGNAL("editingFinished()"), + self.alphaFreqEditText) + + # Build a timer to update the packet number and PER fields + self.update_delay = 250 # time between updating packet rate fields + self.pkt_timer = QtCore.QTimer(self) + self.connect(self.pkt_timer, QtCore.SIGNAL("timeout()"), + self.updatePacketInfo) + self.pkt_timer.start(self.update_delay) + + def pauseFg(self): + if(self.gui.pauseButton.text() == "Pause"): + self.fg.stop() + self.fg.wait() + self.gui.pauseButton.setText("Unpause") + else: + self.fg.start() + self.gui.pauseButton.setText("Pause") + + # Accessor functions for Gui to manipulate system parameters + def set_sample_rate(self, sr): + ssr = eng_notation.num_to_str(sr) + self.gui.sampleRateEdit.setText(QtCore.QString("%1").arg(ssr)) + + def sampleRateEditText(self): + try: + rate = self.gui.sampleRateEdit.text().toAscii() + srate = eng_notation.str_to_num(rate) + #self.fg.set_sample_rate(srate) + except RuntimeError: + pass + + + # Accessor functions for Gui to manipulate channel model + def set_snr(self, snr): + self.gui.snrEdit.setText(QtCore.QString("%1").arg(snr)) + + def set_frequency(self, fo): + self.gui.freqEdit.setText(QtCore.QString("%1").arg(fo)) + + def set_time_offset(self, to): + self.gui.timeEdit.setText(QtCore.QString("%1").arg(to)) + + def snrEditText(self): + try: + snr = self.gui.snrEdit.text().toDouble()[0] + self.fg.set_snr(snr) + except RuntimeError: + pass + + def freqEditText(self): + try: + freq = self.gui.freqEdit.text().toDouble()[0] + self.fg.set_frequency_offset(freq) + except RuntimeError: + pass + + def timeEditText(self): + try: + to = self.gui.timeEdit.text().toDouble()[0] + self.fg.set_timing_offset(to) + except RuntimeError: + pass + + + # Accessor functions for Gui to manipulate receiver parameters + def set_alpha_time(self, alpha): + self.gui.alphaTimeEdit.setText(QtCore.QString("%1").arg(alpha)) + + def set_beta_time(self, beta): + self.gui.betaTimeEdit.setText(QtCore.QString("%1").arg(beta)) + + def set_alpha_freq(self, alpha): + self.gui.alphaFreqEdit.setText(QtCore.QString("%1").arg(alpha)) + + def alphaFreqEditText(self): + try: + alpha = self.gui.alphaFreqEdit.text().toDouble()[0] + self.fg.set_rx_freq_gain_alpha(alpha) + except RuntimeError: + pass + + def alphaTimeEditText(self): + try: + alpha = self.gui.alphaTimeEdit.text().toDouble()[0] + self.fg.set_rx_timing_gain_alpha(alpha) + except RuntimeError: + pass + + def betaTimeEditText(self): + try: + beta = self.gui.betaTimeEdit.text().toDouble()[0] + self.fg.set_rx_timing_gain_beta(beta) + except RuntimeError: + pass + + # Accessor functions for packet error reporting + def updatePacketInfo(self): + # Pull these globals in from the main thread + global n_rcvd, n_right, pktno + + if(pktno > 0): + per = float(n_rcvd - n_right)/float(pktno) + else: + per = 0 + self.gui.pktsRcvdEdit.setText(QtCore.QString("%1").arg(n_rcvd)) + self.gui.pktsCorrectEdit.setText(QtCore.QString("%1").arg(n_right)) + self.gui.perEdit.setText(QtCore.QString("%1").arg(per)) + + + +# //////////////////////////////////////////////////////////////////// +# Define the GNU Radio Top Block +# //////////////////////////////////////////////////////////////////// + + + +class my_top_block(gr.top_block): + def __init__(self, mod_class, demod_class, rx_callback, options): + gr.top_block.__init__(self) + + self._sample_rate = options.sample_rate + + channelon = True; + + self.gui_on = options.gui + + self._frequency_offset = options.frequency_offset + self._timing_offset = options.timing_offset + self._tx_amplitude = options.tx_amplitude + self._snr_dB = options.snr + + self._noise_voltage = self.get_noise_voltage(self._snr_dB) + + self.txpath = transmit_path(mod_class, options) + self.throttle = gr.throttle(gr.sizeof_gr_complex, self.sample_rate()) + self.rxpath = receive_path(demod_class, rx_callback, options) + + # FIXME: do better exposure to lower issues for control + self._timing_gain_alpha = self.rxpath.packet_receiver._demodulator._timing_alpha + self._timing_gain_beta = self.rxpath.packet_receiver._demodulator._timing_beta + self._freq_gain_alpha = self.rxpath.packet_receiver._demodulator._costas_alpha + + if channelon: + self.channel = gr.channel_model(self._noise_voltage, + self.frequency_offset(), + self.timing_offset()) + + if options.discontinuous: + z = 20000*[0,] + self.zeros = gr.vector_source_c(z, True) + packet_size = 5*((4+8+4+1500+4) * 8) + self.mux = gr.stream_mux(gr.sizeof_gr_complex, [packet_size-0, int(9e5)]) + + # Connect components + self.connect(self.txpath, self.throttle, (self.mux,0)) + self.connect(self.zeros, (self.mux,1)) + self.connect(self.mux, self.channel, self.rxpath) + + else: + self.connect(self.txpath, self.throttle, self.channel, self.rxpath) + + if self.gui_on: + self.qapp = QtGui.QApplication(sys.argv) + fftsize = 2048 + + self.snk_tx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + 0, 1, + "Tx", True, True, False, True, True) + self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + 0, 1, + "Rx", True, True, False, True, True) + + self.snk_tx.set_frequency_axis(-80, 0) + self.snk_rx.set_frequency_axis(-60, 20) + + # Connect to the QT sinks + # FIXME: make better exposure to receiver from rxpath + self.freq_recov = self.rxpath.packet_receiver._demodulator.clock_recov + self.time_recov = self.rxpath.packet_receiver._demodulator.time_recov + self.freq_recov.set_alpha(self._freq_gain_alpha) + self.freq_recov.set_beta(0.25*self._freq_gain_alpha*self._freq_gain_alpha) + self.time_recov.set_alpha(self._timing_gain_alpha) + self.time_recov.set_beta(self._timing_gain_beta) + self.connect(self.channel, self.snk_tx) + self.connect(self.time_recov, self.snk_rx) + + pyTxQt = self.snk_tx.pyqwidget() + pyTx = sip.wrapinstance(pyTxQt, QtGui.QWidget) + + pyRxQt = self.snk_rx.pyqwidget() + pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget) + + self.main_box = dialog_box(pyTx, pyRx, self) + self.main_box.show() + + else: + # Connect components + self.connect(self.txpath, self.throttle, self.rxpath) + + + + # System Parameters + def sample_rate(self): + return self._sample_rate + + def set_sample_rate(self, sr): + self._sample_rate = sr + #self.throttle.set_samples_per_second(self._sample_rate) + + # Channel Model Parameters + def snr(self): + return self._snr_dB + + def set_snr(self, snr): + self._snr_dB = snr + self._noise_voltage = self.get_noise_voltage(self._snr_dB) + self.channel.set_noise_voltage(self._noise_voltage) + + def get_noise_voltage(self, SNR): + snr = 10.0**(SNR/10.0) + power_in_signal = abs(self._tx_amplitude)**2 + noise_power = power_in_signal/snr + noise_voltage = math.sqrt(noise_power) + return noise_voltage + + def frequency_offset(self): + return self._frequency_offset * self.sample_rate() + + def set_frequency_offset(self, fo): + self._frequency_offset = fo / self.sample_rate() + self.channel.set_frequency_offset(self._frequency_offset) + + def timing_offset(self): + return self._timing_offset + + def set_timing_offset(self, to): + self._timing_offset = to + self.channel.set_timing_offset(self._timing_offset) + + + # Receiver Parameters + def rx_timing_gain_alpha(self): + return self._timing_gain_alpha + + def rx_timing_gain_beta(self): + return self._timing_gain_beta + + def set_rx_timing_gain_alpha(self, gain): + self._timing_gain_alpha = gain + self.time_recov.set_alpha(self._timing_gain_alpha) + + def set_rx_timing_gain_beta(self, gain): + self._timing_gain_beta = gain + self.time_recov.set_beta(self._timing_gain_beta) + + def rx_freq_gain_alpha(self): + return self._freq_gain_alpha + + def rx_freq_gain_beta(self): + return self._freq_gain_beta + + def set_rx_freq_gain_alpha(self, alpha): + self._freq_gain_alpha = alpha + self._freq_gain_beta = .25 * self._freq_gain_alpha * self._freq_gain_alpha + self.freq_recov.set_alpha(self._freq_gain_alpha) + self.freq_recov.set_beta(self._freq_gain_beta) + + + +# ///////////////////////////////////////////////////////////////////////////// +# Thread to handle the packet sending procedure +# Operates in parallel with qApp.exec_() +# ///////////////////////////////////////////////////////////////////////////// + + + +class th_send(Thread): + def __init__(self, send_fnc, megs, sz): + Thread.__init__(self) + self.send = send_fnc + self.nbytes = int(1e6 * megs) + self.pkt_size = int(sz) + + def run(self): + # generate and send packets + n = 0 + pktno = 0 + + while n < self.nbytes: + self.send(struct.pack('!H', pktno & 0xffff) + + (self.pkt_size - 2) * chr(pktno & 0xff)) + n += self.pkt_size + pktno += 1 + + self.send(eof=True) + + def stop(self): + self.nbytes = 0 + + + +# ///////////////////////////////////////////////////////////////////////////// +# main +# ///////////////////////////////////////////////////////////////////////////// + + + +def main(): + + global n_rcvd, n_right, pktno + + n_rcvd = 0 + n_right = 0 + pktno = 0 + + def rx_callback(ok, payload): + global n_rcvd, n_right, pktno + (pktno,) = struct.unpack('!H', payload[0:2]) + n_rcvd += 1 + if ok: + n_right += 1 + + if not options.gui: + print "ok = %5s pktno = %4d n_rcvd = %4d n_right = %4d" % ( + ok, pktno, n_rcvd, n_right) + + + def send_pkt(payload='', eof=False): + return tb.txpath.send_pkt(payload, eof) + + mods = modulation_utils.type_1_mods() + demods = modulation_utils.type_1_demods() + + parser = OptionParser(option_class=eng_option, conflict_handler="resolve") + expert_grp = parser.add_option_group("Expert") + channel_grp = parser.add_option_group("Channel") + + parser.add_option("-m", "--modulation", type="choice", choices=mods.keys(), + default='dbpsk', + help="Select modulation from: %s [default=%%default]" + % (', '.join(mods.keys()),)) + + parser.add_option("-s", "--size", type="eng_float", default=1500, + help="set packet size [default=%default]") + parser.add_option("-M", "--megabytes", type="eng_float", default=1.0, + help="set megabytes to transmit [default=%default]") + parser.add_option("","--discontinuous", action="store_true", default=False, + help="enable discontinous transmission (bursts of 5 packets)") + parser.add_option("-G", "--gui", action="store_true", default=False, + help="Turn on the GUI [default=%default]") + + channel_grp.add_option("", "--sample-rate", type="eng_float", default=1e5, + help="set speed of channel/simulation rate to RATE [default=%default]") + channel_grp.add_option("", "--snr", type="eng_float", default=30, + help="set the SNR of the channel in dB [default=%default]") + channel_grp.add_option("", "--frequency-offset", type="eng_float", default=0, + help="set frequency offset introduced by channel [default=%default]") + channel_grp.add_option("", "--timing-offset", type="eng_float", default=1.0, + help="set timing offset introduced by channel [default=%default]") + channel_grp.add_option("", "--seed", action="store_true", default=False, + help="use a random seed for AWGN noise [default=%default]") + + transmit_path.add_options(parser, expert_grp) + receive_path.add_options(parser, expert_grp) + + for mod in mods.values(): + mod.add_options(expert_grp) + for demod in demods.values(): + demod.add_options(expert_grp) + + (options, args) = parser.parse_args () + + if len(args) != 0: + parser.print_help() + sys.exit(1) + + r = gr.enable_realtime_scheduling() + if r != gr.RT_OK: + print "Warning: failed to enable realtime scheduling" + + # Create an instance of a hierarchical block + tb = my_top_block(mods[options.modulation], + demods[options.modulation], + rx_callback, options) + tb.start() + + packet_sender = th_send(send_pkt, options.megabytes, options.size) + packet_sender.start() + + if(options.gui): + tb.qapp.exec_() + packet_sender.stop() + else: + # Process until done; hack in to the join to stop on an interrupt + while(packet_sender.isAlive()): + try: + packet_sender.join(1) + except KeyboardInterrupt: + packet_sender.stop() + + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + pass diff --git a/gnuradio-examples/python/digital/qt_digital_window2.py b/gnuradio-examples/python/digital/qt_digital_window2.py new file mode 100644 index 0000000000..f111e37721 --- /dev/null +++ b/gnuradio-examples/python/digital/qt_digital_window2.py @@ -0,0 +1,261 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'qt_digital_window.ui' +# +# Created: Mon Oct 12 12:10:54 2009 +# by: PyQt4 UI code generator 4.4.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +class Ui_DigitalWindow(object): + def setupUi(self, DigitalWindow): + DigitalWindow.setObjectName("DigitalWindow") + DigitalWindow.resize(1019, 754) + self.centralwidget = QtGui.QWidget(DigitalWindow) + self.centralwidget.setObjectName("centralwidget") + self.gridLayout = QtGui.QGridLayout(self.centralwidget) + self.gridLayout.setObjectName("gridLayout") + self.verticalLayout_2 = QtGui.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.sysBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) + self.sysBox.setSizePolicy(sizePolicy) + self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) + self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) + self.sysBox.setObjectName("sysBox") + self.formLayoutWidget = QtGui.QWidget(self.sysBox) + self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 211, 31)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) + self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout.setVerticalSpacing(20) + self.formLayout.setObjectName("formLayout") + self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) + self.sampleRateEdit.setSizePolicy(sizePolicy) + self.sampleRateEdit.setMinimumSize(QtCore.QSize(60, 26)) + self.sampleRateEdit.setMaximumSize(QtCore.QSize(80, 26)) + self.sampleRateEdit.setObjectName("sampleRateEdit") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) + self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) + self.sampleRateLabel.setSizePolicy(sizePolicy) + self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) + self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) + self.sampleRateLabel.setObjectName("sampleRateLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) + self.verticalLayout_2.addWidget(self.sysBox) + spacerItem = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_2.addItem(spacerItem) + self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.sinkFrame = QtGui.QFrame(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) + self.sinkFrame.setSizePolicy(sizePolicy) + self.sinkFrame.setMinimumSize(QtCore.QSize(500, 550)) + self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) + self.sinkFrame.setObjectName("sinkFrame") + self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) + self.gridLayout_2.setObjectName("gridLayout_2") + self.sinkLayout = QtGui.QHBoxLayout() + self.sinkLayout.setObjectName("sinkLayout") + self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) + self.verticalLayout_5.addWidget(self.sinkFrame) + self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) + self.channelModeBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.channelModeBox.sizePolicy().hasHeightForWidth()) + self.channelModeBox.setSizePolicy(sizePolicy) + self.channelModeBox.setMinimumSize(QtCore.QSize(245, 130)) + self.channelModeBox.setMaximumSize(QtCore.QSize(245, 16777215)) + self.channelModeBox.setObjectName("channelModeBox") + self.formLayoutWidget_2 = QtGui.QWidget(self.channelModeBox) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 221, 98)) + self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") + self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2) + self.formLayout_2.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_2.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) + self.formLayout_2.setObjectName("formLayout_2") + self.snrLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.snrLabel.setObjectName("snrLabel") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.snrLabel) + self.snrEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.snrEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.snrEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.snrEdit.setObjectName("snrEdit") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.snrEdit) + self.freqLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.freqLabel.setObjectName("freqLabel") + self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.freqLabel) + self.freqEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.freqEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.freqEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.freqEdit.setObjectName("freqEdit") + self.formLayout_2.setWidget(1, QtGui.QFormLayout.FieldRole, self.freqEdit) + self.timeLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.timeLabel.setObjectName("timeLabel") + self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.timeLabel) + self.timeEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.timeEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.timeEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.timeEdit.setObjectName("timeEdit") + self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.timeEdit) + self.gridLayout.addWidget(self.channelModeBox, 2, 1, 1, 1) + self.rxBox_2 = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxBox_2.sizePolicy().hasHeightForWidth()) + self.rxBox_2.setSizePolicy(sizePolicy) + self.rxBox_2.setMinimumSize(QtCore.QSize(220, 125)) + self.rxBox_2.setMaximumSize(QtCore.QSize(265, 125)) + self.rxBox_2.setObjectName("rxBox_2") + self.formLayoutWidget_4 = QtGui.QWidget(self.rxBox_2) + self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 248, 188)) + self.formLayoutWidget_4.setObjectName("formLayoutWidget_4") + self.formLayout_4 = QtGui.QFormLayout(self.formLayoutWidget_4) + self.formLayout_4.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_4.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) + self.formLayout_4.setObjectName("formLayout_4") + self.pktsRcvdLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.pktsRcvdLabel.setObjectName("pktsRcvdLabel") + self.formLayout_4.setWidget(0, QtGui.QFormLayout.LabelRole, self.pktsRcvdLabel) + self.pktsRcvdEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") + self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.pktsRcvdEdit) + self.pktsCorrectLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.pktsCorrectLabel.setObjectName("pktsCorrectLabel") + self.formLayout_4.setWidget(1, QtGui.QFormLayout.LabelRole, self.pktsCorrectLabel) + self.pktsCorrectEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") + self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.pktsCorrectEdit) + self.perLabel = QtGui.QLabel(self.formLayoutWidget_4) + self.perLabel.setObjectName("perLabel") + self.formLayout_4.setWidget(2, QtGui.QFormLayout.LabelRole, self.perLabel) + self.perEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.perEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.perEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.perEdit.setObjectName("perEdit") + self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.perEdit) + self.gridLayout.addWidget(self.rxBox_2, 2, 3, 1, 1) + spacerItem1 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem1, 2, 4, 1, 1) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.pauseButton = QtGui.QPushButton(self.centralwidget) + self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) + self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pauseButton.setObjectName("pauseButton") + self.verticalLayout.addWidget(self.pauseButton) + spacerItem2 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout.addItem(spacerItem2) + self.closeButton = QtGui.QPushButton(self.centralwidget) + self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) + self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.closeButton.setObjectName("closeButton") + self.verticalLayout.addWidget(self.closeButton) + self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) + self.rxBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) + self.rxBox.setSizePolicy(sizePolicy) + self.rxBox.setMinimumSize(QtCore.QSize(180, 120)) + self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) + self.rxBox.setObjectName("rxBox") + self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) + self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 10, 161, 101)) + self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") + self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) + self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_3.setObjectName("formLayout_3") + self.alphaTimeLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.alphaTimeLabel.setObjectName("alphaTimeLabel") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.alphaTimeLabel) + self.alphaFreqLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.alphaFreqLabel.setObjectName("alphaFreqLabel") + self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.alphaFreqLabel) + self.alphaTimeEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.alphaTimeEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.alphaTimeEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.alphaTimeEdit.setObjectName("alphaTimeEdit") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.alphaTimeEdit) + self.alphaFreqEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.alphaFreqEdit.setMinimumSize(QtCore.QSize(60, 0)) + self.alphaFreqEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.alphaFreqEdit.setObjectName("alphaFreqEdit") + self.formLayout_3.setWidget(2, QtGui.QFormLayout.FieldRole, self.alphaFreqEdit) + self.betaTimeEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.betaTimeEdit.setMaximumSize(QtCore.QSize(80, 16777215)) + self.betaTimeEdit.setObjectName("betaTimeEdit") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.betaTimeEdit) + self.betaTimeLabel = QtGui.QLabel(self.formLayoutWidget_3) + self.betaTimeLabel.setObjectName("betaTimeLabel") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.betaTimeLabel) + self.gridLayout.addWidget(self.rxBox, 2, 2, 1, 1) + DigitalWindow.setCentralWidget(self.centralwidget) + self.menubar = QtGui.QMenuBar(DigitalWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1019, 24)) + self.menubar.setObjectName("menubar") + self.menuFile = QtGui.QMenu(self.menubar) + self.menuFile.setObjectName("menuFile") + DigitalWindow.setMenuBar(self.menubar) + self.statusbar = QtGui.QStatusBar(DigitalWindow) + self.statusbar.setObjectName("statusbar") + DigitalWindow.setStatusBar(self.statusbar) + self.actionExit = QtGui.QAction(DigitalWindow) + self.actionExit.setObjectName("actionExit") + self.menuFile.addAction(self.actionExit) + self.menubar.addAction(self.menuFile.menuAction()) + + self.retranslateUi(DigitalWindow) + QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), DigitalWindow.close) + QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL("triggered()"), DigitalWindow.close) + QtCore.QMetaObject.connectSlotsByName(DigitalWindow) + DigitalWindow.setTabOrder(self.snrEdit, self.freqEdit) + DigitalWindow.setTabOrder(self.freqEdit, self.timeEdit) + + def retranslateUi(self, DigitalWindow): + DigitalWindow.setWindowTitle(QtGui.QApplication.translate("DigitalWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) + self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) + self.channelModeBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Channel Model Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.snrLabel.setText(QtGui.QApplication.translate("DigitalWindow", "SNR (dB)", None, QtGui.QApplication.UnicodeUTF8)) + self.freqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Frequency Offset (Hz)", None, QtGui.QApplication.UnicodeUTF8)) + self.timeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Timing Offset", None, QtGui.QApplication.UnicodeUTF8)) + self.rxBox_2.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) + self.pktsRcvdLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Rcvd.", None, QtGui.QApplication.UnicodeUTF8)) + self.pktsCorrectLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Correct", None, QtGui.QApplication.UnicodeUTF8)) + self.perLabel.setText(QtGui.QApplication.translate("DigitalWindow", "PER", None, QtGui.QApplication.UnicodeUTF8)) + self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) + self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.alphaTimeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha: time", None, QtGui.QApplication.UnicodeUTF8)) + self.alphaFreqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha: freq", None, QtGui.QApplication.UnicodeUTF8)) + self.betaTimeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Beta: time", None, QtGui.QApplication.UnicodeUTF8)) + self.menuFile.setTitle(QtGui.QApplication.translate("DigitalWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) + self.actionExit.setText(QtGui.QApplication.translate("DigitalWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) + diff --git a/gnuradio-examples/python/digital/qt_digital_window2.ui b/gnuradio-examples/python/digital/qt_digital_window2.ui new file mode 100644 index 0000000000..dc20ed798b --- /dev/null +++ b/gnuradio-examples/python/digital/qt_digital_window2.ui @@ -0,0 +1,637 @@ +<ui version="4.0" > + <class>DigitalWindow</class> + <widget class="QMainWindow" name="DigitalWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>1019</width> + <height>754</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget" > + <layout class="QGridLayout" name="gridLayout" > + <item row="2" column="0" > + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QGroupBox" name="sysBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>240</width> + <height>60</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>240</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>System Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>211</width> + <height>31</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <property name="verticalSpacing" > + <number>20</number> + </property> + <item row="0" column="1" > + <widget class="QLineEdit" name="sampleRateEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>60</width> + <height>26</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>26</height> + </size> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="sampleRateLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>20</height> + </size> + </property> + <property name="text" > + <string>Sample Rate (sps)</string> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="0" colspan="6" > + <layout class="QVBoxLayout" name="verticalLayout_5" > + <item> + <widget class="QFrame" name="sinkFrame" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>500</width> + <height>550</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="1" column="0" > + <layout class="QHBoxLayout" name="sinkLayout" /> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item row="2" column="1" > + <widget class="QGroupBox" name="channelModeBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>245</width> + <height>130</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>245</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>Channel Model Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget_2" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>221</width> + <height>98</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_2" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <property name="fieldGrowthPolicy" > + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="snrLabel" > + <property name="text" > + <string>SNR (dB)</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="snrEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="freqLabel" > + <property name="text" > + <string>Frequency Offset (Hz)</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="freqEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="timeLabel" > + <property name="text" > + <string>Timing Offset</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="timeEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + <zorder>formLayoutWidget_2</zorder> + <zorder>rxBox</zorder> + </widget> + </item> + <item row="2" column="3" > + <widget class="QGroupBox" name="rxBox_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>220</width> + <height>125</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>265</width> + <height>125</height> + </size> + </property> + <property name="title" > + <string>Received Packet Info</string> + </property> + <widget class="QWidget" name="formLayoutWidget_4" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>248</width> + <height>188</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_4" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <property name="fieldGrowthPolicy" > + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="pktsRcvdLabel" > + <property name="text" > + <string>Packets Rcvd.</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="pktsRcvdEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="pktsCorrectLabel" > + <property name="text" > + <string>Packets Correct</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="pktsCorrectEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="perLabel" > + <property name="text" > + <string>PER</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="perEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + <zorder>pktsRcvdLabel</zorder> + <zorder>pktsCorrectLabel</zorder> + <zorder>perLabel</zorder> + <zorder>pktsRcvdEdit</zorder> + <zorder>pktsCorrectEdit</zorder> + <zorder>perEdit</zorder> + <zorder>rxBox</zorder> + </widget> + </widget> + </item> + <item row="2" column="4" > + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="5" > + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QPushButton" name="pauseButton" > + <property name="minimumSize" > + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Pause</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="closeButton" > + <property name="minimumSize" > + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Close</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="2" > + <widget class="QGroupBox" name="rxBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>180</width> + <height>120</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>180</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>Receiver Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget_3" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>161</width> + <height>101</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_3" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="alphaTimeLabel" > + <property name="text" > + <string>Alpha: time</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="alphaFreqLabel" > + <property name="text" > + <string>Alpha: freq</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="alphaTimeEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="alphaFreqEdit" > + <property name="minimumSize" > + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="betaTimeEdit" > + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="betaTimeLabel" > + <property name="text" > + <string>Beta: time</string> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + <zorder>channelModeBox</zorder> + <zorder></zorder> + <zorder>rxBox_2</zorder> + <zorder>horizontalSpacer</zorder> + <zorder></zorder> + <zorder>rxBox</zorder> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>1019</width> + <height>24</height> + </rect> + </property> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>&File</string> + </property> + <addaction name="actionExit" /> + </widget> + <addaction name="menuFile" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="actionExit" > + <property name="text" > + <string>E&xit</string> + </property> + </action> + </widget> + <tabstops> + <tabstop>snrEdit</tabstop> + <tabstop>freqEdit</tabstop> + <tabstop>timeEdit</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>closeButton</sender> + <signal>clicked()</signal> + <receiver>DigitalWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>322</x> + <y>623</y> + </hint> + <hint type="destinationlabel" > + <x>66</x> + <y>561</y> + </hint> + </hints> + </connection> + <connection> + <sender>actionExit</sender> + <signal>triggered()</signal> + <receiver>DigitalWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel" > + <x>617</x> + <y>327</y> + </hint> + </hints> + </connection> + </connections> +</ui> -- cgit v1.2.3 From e8759914637f76918302e759d0298d6f59ce7635 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 16:03:10 -0400 Subject: Fixing import of UI file. --- gnuradio-examples/python/digital/benchmark_qt_loopback2.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index 17c8a1750a..101dd68d68 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -21,10 +21,10 @@ except ImportError: sys.exit(1) try: - from qt_digital_window import Ui_DigitalWindow + from qt_digital_window2 import Ui_DigitalWindow except ImportError: - print "Error: could not find qt_digital_window.py:" - print "\t\"pyuic4 qt_digital_window.ui -o qt_digital_window.py\"" + print "Error: could not find qt_digital_window2.py:" + print "\t\"pyuic4 qt_digital_window2.ui -o qt_digital_window2.py\"" sys.exit(1) -- cgit v1.2.3 From 45d5eda3eb2069e963f913570e3de80184e0e6ce Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 16:03:47 -0400 Subject: Minor fixes for logging. --- gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py index e2bce5ff08..c56b598fab 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py @@ -278,7 +278,7 @@ class dbpsk2_demod(gr.hier_block2): if log: self._setup_logging() - # Connect and Initialize base class + # Connect self.connect(self, self.agc, self.clock_recov, self.time_recov, @@ -310,8 +310,10 @@ class dbpsk2_demod(gr.hier_block2): gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) self.connect(self.rrc_filter, gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) - self.connect(self.receiver, - gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.clock_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_clock_recov.dat")) + self.connect(self.time_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) self.connect(self.diffdec, gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) self.connect(self.slicer, -- cgit v1.2.3 From 4d65d1d205c447375c75ed30e9c24ee868276bfd Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 16:04:21 -0400 Subject: Adding DQPSK version that uses the PFB timing sync block (dqpsk2). --- .../src/python/gnuradio/blks2impl/dqpsk2.py | 358 +++++++++++++++++++++ 1 file changed, 358 insertions(+) create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py new file mode 100644 index 0000000000..05363bf04c --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py @@ -0,0 +1,358 @@ +# +# Copyright 2005,2006,2007,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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential QPSK modulation and demodulation. +""" + +from gnuradio import gr, gru, modulation_utils +from math import pi, sqrt +import psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_gray_code = True +_def_verbose = False +_def_log = False + +_def_costas_alpha = 0.01 +_def_timing_alpha = None +_def_timing_beta = None +_def_timing_max_dev = 1.5 + + +# ///////////////////////////////////////////////////////////////////////////// +# DQPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class dqpsk2_mod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered QPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + gr.hier_block2.__init__(self, "dqpsk2_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._gray_code = gray_code + + if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) + + ntaps = 11 * samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.binary_to_ungray[arity]) + + self.diffenc = gr.diff_encoder_bb(arity) + + rot = .707 + .707j + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) + + # pulse shaping filter + self.rrc_taps = gr.firdes.root_raised_cosine( + self._samples_per_symbol, # gain (sps since we're interpolating by sps) + self._samples_per_symbol, # sampling rate + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + + self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect & Initialize base class + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 2 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRS roll-off factor: %f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_graycoder.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + def add_options(parser): + """ + Adds QPSK modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + add_options=staticmethod(add_options) + + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils.extract_kwargs_from_options(dqpsk2_mod.__init__, + ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# ///////////////////////////////////////////////////////////////////////////// +# DQPSK demodulator +# +# Differentially coherent detection of differentially encoded qpsk +# ///////////////////////////////////////////////////////////////////////////// + +class dqpsk2_demod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + costas_alpha=_def_costas_alpha, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered DQPSK demodulation + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param costas_alpha: loop filter gain + @type costas_alphas: float + @param timing_alpha: timing loop alpha gain + @type timing_alpha: float + @param timing_max: timing loop maximum rate deviations + @type timing_max: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + gr.hier_block2.__init__(self, "dqpsk2_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_char)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._costas_alpha = costas_alpha + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_alpha + self._timing_max_dev=timing_max_dev + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, "sbp must be >= 2, is %d" % samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + #self.agc = gr.feedforward_agc_cc(16, 2.0) + + self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha + # Allow a frequency swing of +/- half of the sample rate + fmin = -0.5 + fmax = 0.5 + + self.clock_recov = gr.costas_loop_cc(self._costas_alpha, + self._costas_beta, + fmax, fmin, arity) + + # symbol clock recovery + if not self._timing_alpha: + self._timing_alpha = 2 + self._timing_beta = 0.020 + + # RRC data filter + nfilts = 32 + ntaps = 11 * samples_per_symbol*nfilts + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(self._samples_per_symbol), self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + # Perform Differential decoding on the constellation + self.diffdec = gr.diff_phasor_cc() + + # find closest constellation point + rot = 1 + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.slicer = gr.constellation_decoder_cb(rotated_const, range(arity)) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.ungray_to_binary[arity]) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect + self.connect(self, self.agc, + self.clock_recov, + self.time_recov, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 2 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + print "Costas Loop alpha: %.2e" % self._costas_alpha + print "Costas Loop beta: %.2e" % self._costas_beta + print "Timing alpha gain: %.2f" % self._timing_alpha + print "Timing beta gain: %.2f" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.pre_scaler, + gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.clock_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_clock_recov.dat")) + self.connect(self.time_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, + gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_gray_decoder.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + parser.add_option("", "--costas-alpha", type="float", default=_def_costas_alpha, + help="set Costas loop alpha value [default=%default] (PSK)") + parser.add_option("", "--gain-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default] (GMSK/PSK)") + parser.add_option("", "--gain-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils.extract_kwargs_from_options( + dqpsk2_demod.__init__, ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# +# Add these to the mod/demod registry +# +modulation_utils.add_type_1_mod('dqpsk2', dqpsk2_mod) +modulation_utils.add_type_1_demod('dqpsk2', dqpsk2_demod) -- cgit v1.2.3 From f3329805f5a801e799e671eefb370c6e6f6d36a8 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 16:04:47 -0400 Subject: Adding dqpsk2 block to makefile for installation. --- gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index 17ce1fff94..68d6836236 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -33,6 +33,7 @@ grblkspython_PYTHON = \ dbpsk.py \ dbpsk2.py \ dqpsk.py \ + dqpsk2.py \ d8psk.py \ filterbank.py \ fm_demod.py \ -- cgit v1.2.3 From 2b60291c2883dbd3b85c6f694d830fa3ccf0a6e6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 16:36:09 -0400 Subject: Fixing compiler warnings. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 8271fe6b9e..43412f25b3 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -75,7 +75,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, // Create an FIR filter for each channel and zero out the taps std::vector<float> vtaps(0, d_nfilters); - for(unsigned int i = 0; i < d_nfilters; i++) { + for(int i = 0; i < d_nfilters; i++) { d_filters[i] = gr_fir_util::create_gr_fir_ccf(vtaps); d_diff_filters[i] = gr_fir_util::create_gr_fir_ccf(vtaps); } @@ -89,7 +89,7 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, gr_pfb_clock_sync_ccf::~gr_pfb_clock_sync_ccf () { - for(unsigned int i = 0; i < d_nfilters; i++) { + for(int i = 0; i < d_nfilters; i++) { delete d_filters[i]; } } @@ -149,7 +149,7 @@ gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps, void gr_pfb_clock_sync_ccf::print_taps() { - unsigned int i, j; + int i, j; printf("[ "); for(i = 0; i < d_nfilters; i++) { printf("[%.4e, ", d_taps[i][0]); @@ -164,7 +164,7 @@ gr_pfb_clock_sync_ccf::print_taps() void gr_pfb_clock_sync_ccf::print_diff_taps() { - unsigned int i, j; + int i, j; printf("[ "); for(i = 0; i < d_nfilters; i++) { printf("[%.4e, ", d_dtaps[i][0]); @@ -181,8 +181,7 @@ std::vector<float> gr_pfb_clock_sync_ccf::channel_taps(int channel) { std::vector<float> taps; - unsigned int i; - for(i = 0; i < d_taps_per_filter; i++) { + for(int i = 0; i < d_taps_per_filter; i++) { taps.push_back(d_taps[channel][i]); } return taps; @@ -192,8 +191,7 @@ std::vector<float> gr_pfb_clock_sync_ccf::diff_channel_taps(int channel) { std::vector<float> taps; - unsigned int i; - for(i = 0; i < d_taps_per_filter; i++) { + for(int i = 0; i < d_taps_per_filter; i++) { taps.push_back(d_dtaps[channel][i]); } return taps; -- cgit v1.2.3 From c1ab962946bb05b8a20a0f19dd294eb3b3056142 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 17:55:17 -0400 Subject: This splits the rate into a fractional an integer value, which allows the loop to adjust the fractional rate while the integer rate keeps the increments moving properly. Allows the max rate deviation to be independent of the integer rate. Scaling of the differential taps also allows alpha and beta to operate independent of the rate when fractional samples per symbol are used. Slightly more tolerant to large signal values, but they still should be close to +/-1. --- .../src/lib/filter/gr_pfb_clock_sync_ccf.cc | 20 +- .../src/lib/filter/gr_pfb_clock_sync_ccf.h | 2 + gnuradio-examples/grc/demod/pam_timing.grc | 760 +++++++++++---------- 3 files changed, 428 insertions(+), 354 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc index 43412f25b3..433b7d6133 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc @@ -68,6 +68,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain, set_beta(0.25*gain*gain); d_k = init_phase; d_rate = (sps-floor(sps))*(double)d_nfilters; + d_rate_i = (int)floor(d_rate); + d_rate_f = d_rate - (float)d_rate_i; d_filtnum = (int)floor(d_k); d_filters = std::vector<gr_fir_ccf*>(d_nfilters); @@ -137,13 +139,23 @@ void gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps, std::vector<float> &difftaps) { + float maxtap = 1e-20; difftaps.clear(); difftaps.push_back(0); //newtaps[0]); for(unsigned int i = 1; i < newtaps.size()-1; i++) { float tap = newtaps[i+1] - newtaps[i-1]; difftaps.push_back(tap); + if(tap > maxtap) { + maxtap = tap; + } } difftaps.push_back(0);//-newtaps[newtaps.size()-1]); + + // Scale the differential taps; helps scale error term to better update state + // FIXME: should this be scaled this way or use the same gain as the taps? + for(unsigned int i = 0; i < difftaps.size(); i++) { + difftaps[i] /= maxtap; + } } void @@ -250,18 +262,18 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items, error = (error_i + error_r) / 2.0; // average error from I&Q channel // Run the control loop to update the current phase (k) and tracking rate - d_k = d_k + d_alpha*error + d_rate; - d_rate = d_rate + d_beta*error; + d_k = d_k + d_alpha*error + d_rate_i + d_rate_f; + d_rate_f = d_rate_f + d_beta*error; // Keep our rate within a good range - d_rate = gr_branchless_clip(d_rate, d_max_dev); + d_rate_f = gr_branchless_clip(d_rate_f, d_max_dev); i++; count += (int)floor(d_sps); if(output_items.size() > 2) { err[i] = error; - outrate[i] = d_rate; + outrate[i] = d_rate_f; outk[i] = d_k; } } diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 778db59e5b..a07192a7f3 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -69,6 +69,8 @@ class gr_pfb_clock_sync_ccf : public gr_block std::vector< std::vector<float> > d_dtaps; float d_k; float d_rate; + float d_rate_i; + float d_rate_f; float d_max_dev; int d_filtnum; int d_taps_per_filter; diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 907233aca8..4e2a2f8614 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Fri Oct 9 14:51:58 2009</timestamp> + <timestamp>Mon Oct 12 17:54:59 2009</timestamp> <block> <key>options</key> <param> @@ -94,61 +94,6 @@ <value>0</value> </param> </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>noise_amp</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Channel Noise</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1.0</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(168, 684)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> <block> <key>variable</key> <param> @@ -251,22 +196,18 @@ </param> </block> <block> - <key>variable_slider</key> + <key>random_source_x</key> <param> <key>id</key> - <value>alpha</value> + <value>random_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Alpha</value> - </param> - <param> - <key>value</key> - <value>0</value> + <key>type</key> + <value>byte</value> </param> <param> <key>min</key> @@ -274,31 +215,19 @@ </param> <param> <key>max</key> - <value>10</value> - </param> - <param> - <key>num_steps</key> - <value>1000</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> + <value>pam_amp</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>notebook</key> - <value></value> + <key>repeat</key> + <value>True</value> </param> <param> <key>_coordinate</key> - <value>(552, 4)</value> + <value>(13, 80)</value> </param> <param> <key>_rotation</key> @@ -306,77 +235,92 @@ </param> </block> <block> - <key>variable_slider</key> + <key>random_source_x</key> <param> <key>id</key> - <value>beta</value> + <value>random_source_x_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Beta</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>value</key> + <key>min</key> <value>0</value> </param> <param> - <key>min</key> - <value>0.0</value> + <key>max</key> + <value>pam_amp</value> </param> <param> - <key>max</key> - <value>0.1</value> + <key>num_samps</key> + <value>10000</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>repeat</key> + <value>True</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_coordinate</key> + <value>(15, 245)</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>const_source_x</key> <param> - <key>grid_pos</key> - <value></value> + <key>id</key> + <value>const_source_x_0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5*(pam_amp-1)</value> </param> <param> <key>_coordinate</key> - <value>(668, 5)</value> + <value>(213, 197)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>variable</key> + <key>const_source_x</key> <param> <key>id</key> - <value>spb_gen</value> + <value>const_source_x_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>value</key> - <value>4</value> + <key>type</key> + <value>float</value> + </param> + <param> + <key>const</key> + <value>-0.5*(pam_amp-1)</value> </param> <param> <key>_coordinate</key> - <value>(119, 841)</value> + <value>(200, 360)</value> </param> <param> <key>_rotation</key> @@ -384,42 +328,46 @@ </param> </block> <block> - <key>variable_slider</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>interpratio</value> + <value>wxgui_scopesink2_0_0_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Timing Offset</value> + <key>type</key> + <value>float</value> </param> <param> - <key>value</key> - <value>1.00</value> + <key>title</key> + <value>Scope Plot</value> </param> <param> - <key>min</key> - <value>0.9</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>max</key> - <value>1.1</value> + <key>v_scale</key> + <value>1.25</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>t_scale</key> + <value>0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>xy_mode</key> + <value>False</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> </param> <param> <key>grid_pos</key> @@ -427,22 +375,22 @@ </param> <param> <key>notebook</key> - <value></value> + <value>notebook_0,2</value> </param> <param> <key>_coordinate</key> - <value>(40, 684)</value> + <value>(1111, 767)</value> </param> <param> <key>_rotation</key> - <value>180</value> + <value>0</value> </param> </block> <block> - <key>random_source_x</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>random_source_x_0</value> + <value>wxgui_scopesink2_0_0_0</value> </param> <param> <key>_enabled</key> @@ -450,27 +398,47 @@ </param> <param> <key>type</key> - <value>byte</value> + <value>float</value> </param> <param> - <key>min</key> + <key>title</key> + <value>Scope Plot</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>v_scale</key> + <value>9</value> + </param> + <param> + <key>t_scale</key> <value>0</value> </param> <param> - <key>max</key> - <value>pam_amp</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,1</value> </param> <param> <key>_coordinate</key> - <value>(13, 80)</value> + <value>(1112, 881)</value> </param> <param> <key>_rotation</key> @@ -478,38 +446,38 @@ </param> </block> <block> - <key>random_source_x</key> + <key>gr_channel_model</key> <param> <key>id</key> - <value>random_source_x_0_0</value> + <value>gr_channel_model_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>noise_voltage</key> + <value>noise_amp</value> </param> <param> - <key>min</key> - <value>0</value> + <key>freq_offset</key> + <value>freq_offset</value> </param> <param> - <key>max</key> - <value>pam_amp</value> + <key>epsilon</key> + <value>interpratio</value> </param> <param> - <key>num_samps</key> - <value>10000</value> + <key>taps</key> + <value>1.0</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>seed</key> + <value>42</value> </param> <param> <key>_coordinate</key> - <value>(15, 245)</value> + <value>(59, 543)</value> </param> <param> <key>_rotation</key> @@ -517,10 +485,10 @@ </param> </block> <block> - <key>const_source_x</key> + <key>gr_throttle</key> <param> <key>id</key> - <value>const_source_x_0</value> + <value>gr_throttle_0</value> </param> <param> <key>_enabled</key> @@ -528,15 +496,19 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> - <key>const</key> - <value>-0.5*(pam_amp-1)</value> + <key>samples_per_second</key> + <value>samp_rate</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(213, 197)</value> + <value>(290, 575)</value> </param> <param> <key>_rotation</key> @@ -544,26 +516,34 @@ </param> </block> <block> - <key>const_source_x</key> + <key>notebook</key> <param> <key>id</key> - <value>const_source_x_0_0</value> + <value>notebook_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>style</key> + <value>wx.NB_TOP</value> </param> <param> - <key>const</key> - <value>-0.5*(pam_amp-1)</value> + <key>labels</key> + <value>['error', 'phase', 'freq', 'Resampled Signal']</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(200, 360)</value> + <value>(729, 769)</value> </param> <param> <key>_rotation</key> @@ -574,7 +554,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0</value> + <value>wxgui_scopesink2_0_0_1</value> </param> <param> <key>_enabled</key> @@ -582,7 +562,7 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> <key>title</key> @@ -618,11 +598,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,0</value> + <value>notebook_0,3</value> </param> <param> <key>_coordinate</key> - <value>(1110, 651)</value> + <value>(1115, 358)</value> </param> <param> <key>_rotation</key> @@ -630,10 +610,10 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>gr_add_xx</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0_0</value> + <value>gr_add_xx_0</value> </param> <param> <key>_enabled</key> @@ -644,44 +624,70 @@ <value>float</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>num_inputs</key> + <value>2</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>v_scale</key> - <value>1.25</value> + <key>_coordinate</key> + <value>(440, 167)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_add_xx</key> + <param> + <key>id</key> + <value>gr_add_xx_0_1</value> + </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>type</key> + <value>float</value> </param> <param> <key>num_inputs</key> + <value>2</value> + </param> + <param> + <key>vlen</key> <value>1</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>_coordinate</key> + <value>(430, 330)</value> </param> <param> - <key>notebook</key> - <value>notebook_0,2</value> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>gr_float_to_complex</key> + <param> + <key>id</key> + <value>gr_float_to_complex_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(1111, 767)</value> + <value>(590, 184)</value> </param> <param> <key>_rotation</key> @@ -692,7 +698,7 @@ <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_0</value> + <value>wxgui_scopesink2_0</value> </param> <param> <key>_enabled</key> @@ -700,7 +706,7 @@ </param> <param> <key>type</key> - <value>float</value> + <value>complex</value> </param> <param> <key>title</key> @@ -712,7 +718,7 @@ </param> <param> <key>v_scale</key> - <value>9</value> + <value>0</value> </param> <param> <key>t_scale</key> @@ -736,11 +742,11 @@ </param> <param> <key>notebook</key> - <value>notebook_0,1</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1112, 881)</value> + <value>(1116, 500)</value> </param> <param> <key>_rotation</key> @@ -748,38 +754,22 @@ </param> </block> <block> - <key>gr_channel_model</key> + <key>variable</key> <param> <key>id</key> - <value>gr_channel_model_0</value> + <value>nfilts</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>noise_voltage</key> - <value>noise_amp</value> - </param> - <param> - <key>freq_offset</key> - <value>freq_offset</value> - </param> - <param> - <key>epsilon</key> - <value>interpratio</value> - </param> - <param> - <key>taps</key> - <value>1.0</value> - </param> - <param> - <key>seed</key> - <value>42</value> + <key>value</key> + <value>32</value> </param> <param> <key>_coordinate</key> - <value>(59, 543)</value> + <value>(435, 686)</value> </param> <param> <key>_rotation</key> @@ -787,30 +777,46 @@ </param> </block> <block> - <key>gr_throttle</key> + <key>gr_pfb_clock_sync_ccf</key> <param> <key>id</key> - <value>gr_throttle_0</value> + <value>gr_pfb_clock_sync_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>sps</key> + <value>spb</value> </param> <param> - <key>samples_per_second</key> - <value>samp_rate</value> + <key>alpha</key> + <value>alpha</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>beta</key> + <value>beta</value> + </param> + <param> + <key>taps</key> + <value>rrctaps</value> + </param> + <param> + <key>filter_size</key> + <value>nfilts</value> + </param> + <param> + <key>init_phase</key> + <value>16</value> + </param> + <param> + <key>max_dev</key> + <value>1.5</value> </param> <param> <key>_coordinate</key> - <value>(290, 575)</value> + <value>(512, 527)</value> </param> <param> <key>_rotation</key> @@ -818,22 +824,42 @@ </param> </block> <block> - <key>notebook</key> + <key>variable_slider</key> <param> <key>id</key> - <value>notebook_0</value> + <value>noise_amp</value> </param> <param> <key>_enabled</key> <value>True</value> </param> + <param> + <key>label</key> + <value>Channel Noise</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> + <value>1.0</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> <param> <key>style</key> - <value>wx.NB_TOP</value> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>labels</key> - <value>['error', 'phase', 'freq', 'Resampled Signal']</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -845,7 +871,7 @@ </param> <param> <key>_coordinate</key> - <value>(729, 769)</value> + <value>(168, 684)</value> </param> <param> <key>_rotation</key> @@ -853,46 +879,42 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_slider</key> <param> <key>id</key> - <value>wxgui_scopesink2_0_0_1</value> + <value>interpratio</value> </param> <param> <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>complex</value> + <value>True</value> </param> <param> - <key>title</key> - <value>Error</value> + <key>label</key> + <value>Timing Offset</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>1.00</value> </param> <param> - <key>v_scale</key> - <value>.5</value> + <key>min</key> + <value>0.99</value> </param> <param> - <key>t_scale</key> - <value>0</value> + <key>max</key> + <value>1.01</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>num_steps</key> + <value>1000</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>converver</key> + <value>float_converter</value> </param> <param> <key>grid_pos</key> @@ -900,22 +922,22 @@ </param> <param> <key>notebook</key> - <value>notebook_0,3</value> + <value></value> </param> <param> <key>_coordinate</key> - <value>(1115, 358)</value> + <value>(40, 684)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> <key>variable</key> <param> <key>id</key> - <value>spb</value> + <value>spb_gen</value> </param> <param> <key>_enabled</key> @@ -923,11 +945,11 @@ </param> <param> <key>value</key> - <value>4.1</value> + <value>4</value> </param> <param> <key>_coordinate</key> - <value>(32, 842)</value> + <value>(119, 841)</value> </param> <param> <key>_rotation</key> @@ -935,61 +957,109 @@ </param> </block> <block> - <key>gr_add_xx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_add_xx_0</value> + <value>beta</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>label</key> + <value>Timing Beta</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>value</key> + <value>0</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>min</key> + <value>0.0</value> + </param> + <param> + <key>max</key> + <value>0.1</value> + </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(440, 167)</value> + <value>(668, 5)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>gr_add_xx</key> + <key>variable_slider</key> <param> <key>id</key> - <value>gr_add_xx_0_1</value> + <value>alpha</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>label</key> + <value>Timing Alpha</value> </param> <param> - <key>num_inputs</key> - <value>2</value> + <key>value</key> + <value>0</value> </param> <param> - <key>vlen</key> + <key>min</key> + <value>0</value> + </param> + <param> + <key>max</key> <value>1</value> </param> + <param> + <key>num_steps</key> + <value>1000</value> + </param> + <param> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + </param> + <param> + <key>converver</key> + <value>float_converter</value> + </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value></value> + </param> <param> <key>_coordinate</key> - <value>(430, 330)</value> + <value>(552, 4)</value> </param> <param> <key>_rotation</key> @@ -997,53 +1067,58 @@ </param> </block> <block> - <key>blks2_pfb_arb_resampler_ccf</key> + <key>wxgui_scopesink2</key> <param> <key>id</key> - <value>blks2_pfb_arb_resampler_ccf_0</value> + <value>wxgui_scopesink2_0_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>rate</key> - <value>float(spb)/float(spb_gen)</value> + <key>type</key> + <value>float</value> </param> <param> - <key>taps</key> - <value>firdes.low_pass(128, 128, 0.45, 0.1)</value> + <key>title</key> + <value>Error</value> </param> <param> - <key>size</key> - <value>128</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>_coordinate</key> - <value>(617, 374)</value> + <key>v_scale</key> + <value>3</value> </param> <param> - <key>_rotation</key> + <key>t_scale</key> <value>0</value> </param> - </block> - <block> - <key>gr_float_to_complex</key> <param> - <key>id</key> - <value>gr_float_to_complex_0</value> + <key>ac_couple</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>xy_mode</key> + <value>False</value> </param> <param> - <key>vlen</key> + <key>num_inputs</key> <value>1</value> </param> + <param> + <key>grid_pos</key> + <value></value> + </param> + <param> + <key>notebook</key> + <value>notebook_0,0</value> + </param> <param> <key>_coordinate</key> - <value>(590, 184)</value> + <value>(1110, 651)</value> </param> <param> <key>_rotation</key> @@ -1094,7 +1169,7 @@ </param> <param> <key>_coordinate</key> - <value>(832, 157)</value> + <value>(834, 157)</value> </param> <param> <key>_rotation</key> @@ -1102,58 +1177,61 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>blks2_pfb_arb_resampler_ccf</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>blks2_pfb_arb_resampler_ccf_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>rate</key> + <value>float(spb)/float(spb_gen)</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>taps</key> + <value>firdes.low_pass(128, 128, 0.45, 0.1)</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>size</key> + <value>128</value> </param> <param> - <key>v_scale</key> - <value>0</value> + <key>_coordinate</key> + <value>(617, 374)</value> </param> <param> - <key>t_scale</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>gr_multiply_const_vxx</key> <param> - <key>ac_couple</key> - <value>False</value> + <key>id</key> + <value>gr_multiply_const_vxx_0</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>const</key> + <value>sig_amp</value> </param> <param> - <key>notebook</key> - <value></value> + <key>vlen</key> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(1116, 500)</value> + <value>(1096, 197)</value> </param> <param> <key>_rotation</key> @@ -1164,7 +1242,7 @@ <key>variable</key> <param> <key>id</key> - <value>nfilts</value> + <value>pam_amp</value> </param> <param> <key>_enabled</key> @@ -1172,11 +1250,11 @@ </param> <param> <key>value</key> - <value>64</value> + <value>2</value> </param> <param> <key>_coordinate</key> - <value>(435, 686)</value> + <value>(223, 9)</value> </param> <param> <key>_rotation</key> @@ -1184,46 +1262,22 @@ </param> </block> <block> - <key>gr_pfb_clock_sync_ccf</key> + <key>variable</key> <param> <key>id</key> - <value>gr_pfb_clock_sync_ccf_0</value> + <value>spb</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>sps</key> - <value>spb</value> - </param> - <param> - <key>alpha</key> - <value>alpha</value> - </param> - <param> - <key>beta</key> - <value>beta</value> - </param> - <param> - <key>taps</key> - <value>rrctaps</value> - </param> - <param> - <key>filter_size</key> - <value>nfilts</value> - </param> - <param> - <key>init_phase</key> - <value>16</value> - </param> - <param> - <key>max_dev</key> - <value>20</value> + <key>value</key> + <value>4.1</value> </param> <param> <key>_coordinate</key> - <value>(512, 527)</value> + <value>(32, 842)</value> </param> <param> <key>_rotation</key> @@ -1234,7 +1288,7 @@ <key>variable</key> <param> <key>id</key> - <value>pam_amp</value> + <value>sig_amp</value> </param> <param> <key>_enabled</key> @@ -1242,11 +1296,11 @@ </param> <param> <key>value</key> - <value>2</value> + <value>1</value> </param> <param> <key>_coordinate</key> - <value>(223, 9)</value> + <value>(315, 9)</value> </param> <param> <key>_rotation</key> @@ -1357,6 +1411,12 @@ </connection> <connection> <source_block_id>root_raised_cosine_filter_0</source_block_id> + <sink_block_id>gr_multiply_const_vxx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>gr_multiply_const_vxx_0</source_block_id> <sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> -- cgit v1.2.3 From 6f6b022977a74596c19ae1b0748010a86abdfed2 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 18:36:55 -0400 Subject: Fixing initialization of timing gains. Alpha should be < 1, and beta should be << 1. --- gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py | 13 ++++--------- gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py | 13 ++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py index c56b598fab..4541b453b3 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dbpsk2.py @@ -39,8 +39,8 @@ _def_verbose = False _def_log = False _def_costas_alpha = 0.1 -_def_timing_alpha = None -_def_timing_beta = None +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 _def_timing_max_dev = 1.5 @@ -220,7 +220,7 @@ class dbpsk2_demod(gr.hier_block2): self._excess_bw = excess_bw self._costas_alpha = costas_alpha self._timing_alpha = timing_alpha - self._timing_beta = _def_timing_alpha + self._timing_beta = _def_timing_beta self._timing_max_dev=timing_max_dev self._gray_code = gray_code @@ -242,12 +242,7 @@ class dbpsk2_demod(gr.hier_block2): self._costas_beta, fmax, fmin, arity) - # symbol clock recovery - if not self._timing_alpha: - self._timing_alpha = 2 - self._timing_beta = 0.020 - - # RRC data filter + # symbol timing recovery with RRC data filter nfilts = 32 ntaps = 11 * samples_per_symbol*nfilts taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(self._samples_per_symbol), self._excess_bw, ntaps) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py index 05363bf04c..9704ac98c5 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk2.py @@ -39,8 +39,8 @@ _def_verbose = False _def_log = False _def_costas_alpha = 0.01 -_def_timing_alpha = None -_def_timing_beta = None +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 _def_timing_max_dev = 1.5 @@ -220,7 +220,7 @@ class dqpsk2_demod(gr.hier_block2): self._excess_bw = excess_bw self._costas_alpha = costas_alpha self._timing_alpha = timing_alpha - self._timing_beta = _def_timing_alpha + self._timing_beta = _def_timing_beta self._timing_max_dev=timing_max_dev self._gray_code = gray_code @@ -242,12 +242,7 @@ class dqpsk2_demod(gr.hier_block2): self._costas_beta, fmax, fmin, arity) - # symbol clock recovery - if not self._timing_alpha: - self._timing_alpha = 2 - self._timing_beta = 0.020 - - # RRC data filter + # symbol timing recovery with RRC data filter nfilts = 32 ntaps = 11 * samples_per_symbol*nfilts taps = gr.firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(self._samples_per_symbol), self._excess_bw, ntaps) -- cgit v1.2.3 From 3eeb2720664ec7cb67e60d4f8a01b933ddba0143 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 12 Oct 2009 18:41:24 -0400 Subject: Reverting dqpsk to be mpsk_receiver based and not change its behavior. --- .../src/python/gnuradio/blks2impl/dqpsk.py | 31 +++++----------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py index 34e6581bf7..edd3024a67 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/dqpsk.py @@ -258,28 +258,12 @@ class dqpsk_demod(gr.hier_block2): fmin = -0.25 fmax = 0.25 - #self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, - # self._costas_alpha, self._costas_beta, - # fmin, fmax, - # self._mm_mu, self._mm_gain_mu, - # self._mm_omega, self._mm_gain_omega, - # self._mm_omega_relative_limit) - self.clock_recov = gr.costas_loop_cc(self._costas_alpha, - self._costas_beta, - fmax, fmin, arity) - if 0: - self.time_recov = gr.clock_recovery_mm_cc(self._mm_omega, - self._mm_gain_omega, - self._mm_mu, - self._mm_gain_mu, - self._mm_omega_relative_limit) - else: - ntaps = 32*ntaps - taps = gr.firdes.root_raised_cosine( - 32, 1.0, 0.25/32.0, self._excess_bw, ntaps) - self.time_recov = gr.pfb_clock_sync_ccf(self._mm_omega, - self._mm_gain_mu, - taps) + self.receiver=gr.mpsk_receiver_cc(arity, pi/4.0, + self._costas_alpha, self._costas_beta, + fmin, fmax, + self._mm_mu, self._mm_gain_mu, + self._mm_omega, self._mm_gain_omega, + self._mm_omega_relative_limit) # Perform Differential decoding on the constellation self.diffdec = gr.diff_phasor_cc() @@ -304,8 +288,7 @@ class dqpsk_demod(gr.hier_block2): self._setup_logging() # Connect & Initialize base class - self.connect(self, self.pre_scaler, self.agc, #self.rrc_filter, #self.receiver, - self.clock_recov, self.time_recov, + self.connect(self, self.pre_scaler, self.agc, self.rrc_filter, #self.receiver, self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) def samples_per_symbol(self): -- cgit v1.2.3