From 271412d1781d875e31e7c851752ffacfedb9c325 Mon Sep 17 00:00:00 2001 From: Tom 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 ++++++++++----------- 2 files changed, 424 insertions(+), 429 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/qt_digital_window.py b/gnuradio-examples/python/digital/qt_digital_window.py index e3feb57c9..6e0f25212 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 413801ec7..a0af196ed 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.ui +++ b/gnuradio-examples/python/digital/qt_digital_window.ui @@ -1,105 +1,102 @@ - + + DigitalWindow - - + + 0 0 - 1050 - 752 + 1019 + 754 - + MainWindow - - - - + + + + - - - + + + 0 0 - + - 240 - 60 + 180 + 90 - + - 240 + 180 16777215 - - System Parameters + + Receiver Parameters - - + + 10 20 - 221 - 31 + 141 + 61 - - + + QLayout::SetFixedSize - - 20 - - - - - - 0 - 0 - + + + + Gain mu - + + + + + + Alpha + + + + + + - 100 - 26 + 60 + 0 - + - 100 - 26 + 80 + 16777215 - - - - - 0 - 0 - - - + + + - 0 - 20 + 60 + 0 - + - 16777215 - 20 + 80 + 16777215 - - Sample Rate (sps) - @@ -107,14 +104,53 @@ - - + + Qt::Vertical - + QSizePolicy::Fixed - + + + 20 + 30 + + + + + + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + Pause + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + 20 60 @@ -122,111 +158,130 @@ + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + Close + + + - - - - + + + + 0 0 - + 245 130 - + 245 16777215 - + Channel Model Parameters - - + + 10 20 - 231 + 221 98 - - + + QLayout::SetFixedSize - + QFormLayout::AllNonFixedFieldsGrow - - - + + + SNR (dB) - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 - - - + + + Frequency Offset (Hz) - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 - - - + + + Timing Offset - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 @@ -236,121 +291,92 @@ - - - - - - - 0 - 0 - - - - - 1000 - 550 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - verticalLayoutWidget - verticalLayoutWidget - - - - - - + + - - - + + + 0 0 - + - 180 - 90 + 240 + 60 - + - 180 + 240 16777215 - - Receiver Parameters + + System Parameters - - + + 10 20 - 161 - 61 + 211 + 31 - - + + QLayout::SetFixedSize - - - - Gain mu - - - - - - - Alpha + + 20 + + + + + + 0 + 0 + - - - - - + - 100 - 0 + 60 + 26 - + - 100 - 16777215 + 80 + 26 - - - + + + + + 0 + 0 + + + - 100 - 0 + 0 + 20 - + - 100 - 16777215 + 16777215 + 20 + + Sample Rate (sps) + @@ -358,123 +384,123 @@ - - + + Qt::Vertical - + QSizePolicy::Fixed - + 20 - 30 + 60 - - - - + + + + 0 0 - + 220 125 - + 265 125 - + Received Packet Info - - + + 10 20 - 201 + 181 92 - - + + QLayout::SetFixedSize - - - + + + Packets Rcvd. - - - + + + Packets Correct - - - + + + PER - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 - - - + + + - 100 + 60 0 - + - 100 + 80 16777215 @@ -484,12 +510,12 @@ - - - + + + Qt::Horizontal - + 20 20 @@ -497,95 +523,64 @@ - - + + - - - - 80 - 0 - - - - - 80 - 16777215 - - - - Pause - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 60 - + + + + 0 + 0 + - - - - - + - 80 - 0 + 500 + 550 - - - 80 - 16777215 - + + QFrame::StyledPanel - - Close + + QFrame::Raised + + + + + - sinkFrame channelModeBox - verticalLayoutWidget - verticalLayoutWidget - rxBox rxBox_2 horizontalSpacer - - + + 0 0 - 1050 - 24 + 1019 + 25 - - + + &File - + - + - - - + + + E&xit @@ -603,11 +598,11 @@ DigitalWindow close() - + 322 623 - + 66 561 @@ -619,11 +614,11 @@ DigitalWindow close() - + -1 -1 - + 617 327 -- cgit From 7f994ec592ba721dae56f08cea92441c7f572797 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index e43bffa26..1bfda4a96 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 From 3087d962fb0bbd58a5ae7242ec5b638badb1f2c7 Mon Sep 17 00:00:00 2001 From: Matt Ettus 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 (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc new file mode 100644 index 000000000..989c795a9 --- /dev/null +++ b/gnuradio-examples/grc/pam_timing.grc @@ -0,0 +1,616 @@ + + + Tue Oct 6 14:19:10 2009 + + options + + id + top_block + + + _enabled + True + + + title + + + + author + + + + description + + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + run_options + prompt + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (128, 9) + + + _rotation + 0 + + + + gr_uchar_to_float + + id + gr_uchar_to_float_0 + + + _enabled + True + + + _coordinate + (270, 115) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_0 + + + _enabled + True + + + type + byte + + + min + 0 + + + max + 2 + + + num_samps + 1000 + + + repeat + True + + + _coordinate + (13, 80) + + + _rotation + 0 + + + + const_source_x + + id + const_source_x_0 + + + _enabled + True + + + type + float + + + const + -0.5 + + + _coordinate + (179, 160) + + + _rotation + 0 + + + + variable_chooser + + id + spb + + + _enabled + True + + + label + Samples Per Bit + + + value + 4 + + + choices + [1, 2, 3, 4, 5, 6, 7, 8] + + + labels + [] + + + type + drop_down + + + style + wx.RA_HORIZONTAL + + + grid_pos + + + + notebook + + + + _coordinate + (0, 834) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + + + + _coordinate + (750, 128) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_0 + + + _enabled + True + + + type + float + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (505, 128) + + + _rotation + 0 + + + + variable_slider + + id + noise_amp + + + _enabled + True + + + label + noise_amp + + + value + 0 + + + min + 0 + + + max + 1.0 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (600, -1) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + float + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (561, 284) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x_0 + + + _enabled + True + + + type + float + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise_amp + + + seed + 42 + + + _coordinate + (45, 497) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + True + + + type + interp_fir_filter_fff + + + decim + 1 + + + interp + spb + + + gain + 2*spb + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb + + + _coordinate + (50, 295) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_0_0 + + + _enabled + True + + + type + float + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (374, 389) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0_0 + + + _enabled + True + + + type + interp_fir_filter_fff + + + decim + 1 + + + interp + 1 + + + gain + 1 + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb + + + _coordinate + (376, 598) + + + _rotation + 0 + + + + random_source_x_0 + gr_uchar_to_float_0 + 0 + 0 + + + gr_uchar_to_float_0 + gr_add_xx_0 + 0 + 0 + + + const_source_x_0 + gr_add_xx_0 + 0 + 1 + + + gr_add_xx_0 + root_raised_cosine_filter_0 + 0 + 0 + + + gr_throttle_0 + wxgui_scopesink2_0 + 0 + 0 + + + root_raised_cosine_filter_0 + gr_add_xx_0_0 + 0 + 0 + + + gr_noise_source_x_0 + gr_add_xx_0_0 + 0 + 1 + + + gr_add_xx_0_0 + root_raised_cosine_filter_0_0 + 0 + 0 + + + root_raised_cosine_filter_0_0 + gr_throttle_0 + 0 + 0 + + -- cgit From d887d011b17c10da0ba1513bfbd7067146ac2a33 Mon Sep 17 00:00:00 2001 From: Matt Ettus 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index 989c795a9..d357a1b55 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 14:19:10 2009 + Tue Oct 6 17:40:15 2009 options @@ -57,22 +57,38 @@ - variable + random_source_x id - samp_rate + random_source_x_0 _enabled True - value - 32000 + type + byte + + + min + 0 + + + max + 2 + + + num_samps + 1000 + + + repeat + True _coordinate - (128, 9) + (13, 80) _rotation @@ -80,18 +96,26 @@ - gr_uchar_to_float + const_source_x id - gr_uchar_to_float_0 + const_source_x_0 _enabled True + + type + float + + + const + -0.5 + _coordinate - (270, 115) + (179, 160) _rotation @@ -99,10 +123,10 @@ - random_source_x + gr_add_xx id - random_source_x_0 + gr_add_xx_0 _enabled @@ -110,7 +134,42 @@ type - byte + float + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (505, 128) + + + _rotation + 0 + + + + variable_slider + + id + noise_amp + + + _enabled + True + + + label + noise_amp + + + value + 0 min @@ -118,19 +177,31 @@ max - 2 + 1.0 - num_samps + num_steps 1000 - repeat - True + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (13, 80) + (600, -1) _rotation @@ -138,10 +209,10 @@ - const_source_x + gr_noise_source_x id - const_source_x_0 + gr_noise_source_x_0 _enabled @@ -152,12 +223,20 @@ float - const - -0.5 + noise_type + gr.GR_GAUSSIAN + + + amp + noise_amp + + + seed + 42 _coordinate - (179, 160) + (45, 497) _rotation @@ -165,50 +244,50 @@ - variable_chooser + root_raised_cosine_filter id - spb + root_raised_cosine_filter_0 _enabled True - label - Samples Per Bit + type + interp_fir_filter_fff - value - 4 + decim + 1 - choices - [1, 2, 3, 4, 5, 6, 7, 8] + interp + spb - labels - [] + gain + 2*spb - type - drop_down + samp_rate + 1.0 - style - wx.RA_HORIZONTAL + sym_rate + 1./spb - grid_pos - + alpha + 0.35 - notebook - + ntaps + 11*spb _coordinate - (0, 834) + (50, 295) _rotation @@ -216,10 +295,10 @@ - wxgui_scopesink2 + gr_add_xx id - wxgui_scopesink2_0 + gr_add_xx_0_0 _enabled @@ -230,44 +309,66 @@ float - title - Scope Plot + num_inputs + 2 - samp_rate - samp_rate + vlen + 1 - v_scale + _coordinate + (375, 390) + + + _rotation 0 + + + const_source_x - t_scale + id + const_source_x_1 + + + _enabled + True + + + type + float + + + const 0 - ac_couple - False + _coordinate + (36, 723) - xy_mode - False + _rotation + 0 + + + variable - num_inputs - 1 + id + spb - grid_pos - + _enabled + True - notebook - + value + 4 _coordinate - (750, 128) + (34, 915) _rotation @@ -275,10 +376,56 @@ - gr_add_xx + variable id - gr_add_xx_0 + nfilts + + + _enabled + True + + + value + 32 + + + _coordinate + (31, 828) + + + _rotation + 0 + + + + variable + + id + rrctaps + + + _enabled + True + + + value + firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts) + + + _coordinate + (180, 935) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 _enabled @@ -286,11 +433,11 @@ type - float + complex - num_inputs - 2 + samples_per_second + samp_rate vlen @@ -298,7 +445,7 @@ _coordinate - (505, 128) + (757, 418) _rotation @@ -309,7 +456,7 @@ variable_slider id - noise_amp + gain _enabled @@ -317,7 +464,7 @@ label - noise_amp + Gain value @@ -329,7 +476,7 @@ max - 1.0 + 1 num_steps @@ -353,7 +500,7 @@ _coordinate - (600, -1) + (537, 278) _rotation @@ -361,30 +508,18 @@ - gr_throttle + gr_uchar_to_float id - gr_throttle_0 + gr_uchar_to_float_0 _enabled True - - type - float - - - samples_per_second - samp_rate - - - vlen - 1 - _coordinate - (561, 284) + (261, 107) _rotation @@ -392,10 +527,10 @@ - gr_noise_source_x + wxgui_scopesink2 id - gr_noise_source_x_0 + wxgui_scopesink2_0 _enabled @@ -403,23 +538,47 @@ type - float + complex - noise_type - gr.GR_GAUSSIAN + title + Scope Plot - amp - noise_amp + samp_rate + samp_rate - seed - 42 + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + _coordinate - (45, 497) + (750, 128) _rotation @@ -427,10 +586,10 @@ - root_raised_cosine_filter + wxgui_scopesink2 id - root_raised_cosine_filter_0 + wxgui_scopesink2_0_0 _enabled @@ -438,39 +597,70 @@ type - interp_fir_filter_fff + float - decim + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs 1 - interp - spb + grid_pos + - gain - 2*spb + notebook + - samp_rate - 1.0 + _coordinate + (643, 853) - sym_rate - 1./spb + _rotation + 0 + + + gr_float_to_complex - alpha - 0.35 + id + gr_float_to_complex_0 - ntaps - 11*spb + _enabled + True + + + vlen + 1 _coordinate - (50, 295) + (380, 553) _rotation @@ -478,30 +668,38 @@ - gr_add_xx + gr_pfb_clock_sync_ccf id - gr_add_xx_0_0 + gr_pfb_clock_sync_ccf_0 _enabled True - type - float + sps + spb - num_inputs - 2 + gain + gain - vlen - 1 + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 _coordinate - (374, 389) + (341, 777) _rotation @@ -509,10 +707,10 @@ - root_raised_cosine_filter + gr_fractional_interpolator_xx id - root_raised_cosine_filter_0_0 + gr_fractional_interpolator_xx_0 _enabled @@ -520,39 +718,42 @@ type - interp_fir_filter_fff + complex - decim - 1 + phase_shift + 0.5 - interp + interp_ratio 1 - gain - 1 + _coordinate + (349, 662) - samp_rate - 1.0 + _rotation + 0 + + + variable - sym_rate - 1./spb + id + samp_rate - alpha - 0.35 + _enabled + True - ntaps - 11*spb + value + 320000 _coordinate - (376, 598) + (128, 9) _rotation @@ -603,14 +804,38 @@ gr_add_xx_0_0 - root_raised_cosine_filter_0_0 + gr_float_to_complex_0 0 0 - root_raised_cosine_filter_0_0 + const_source_x_1 + gr_float_to_complex_0 + 0 + 1 + + + gr_pfb_clock_sync_ccf_0 gr_throttle_0 0 0 + + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0 + 1 + 0 + + + gr_float_to_complex_0 + gr_fractional_interpolator_xx_0 + 0 + 0 + + + gr_fractional_interpolator_xx_0 + gr_pfb_clock_sync_ccf_0 + 0 + 0 + -- cgit From d3c44ab5ea730c973588e5a590543df01372109c Mon Sep 17 00:00:00 2001 From: Matt Ettus Date: Tue, 6 Oct 2009 17:56:20 -0700 Subject: added more ports --- gnuradio-examples/grc/pam_timing.grc | 261 ++++++++++++++++++++--------------- 1 file changed, 148 insertions(+), 113 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index d357a1b55..45fcbc0ec 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 17:40:15 2009 + Tue Oct 6 17:50:59 2009 options @@ -122,37 +122,6 @@ 0 - - gr_add_xx - - id - gr_add_xx_0 - - - _enabled - True - - - type - float - - - num_inputs - 2 - - - vlen - 1 - - - _coordinate - (505, 128) - - - _rotation - 0 - - variable_slider @@ -453,54 +422,80 @@ - variable_slider + gr_uchar_to_float id - gain + gr_uchar_to_float_0 _enabled True - label - Gain + _coordinate + (261, 107) - value + _rotation 0 + + + gr_float_to_complex - min - 0 + id + gr_float_to_complex_0 - max + _enabled + True + + + vlen 1 - num_steps - 1000 + _coordinate + (380, 553) - style - wx.SL_HORIZONTAL + _rotation + 0 + + + gr_pfb_clock_sync_ccf - converver - float_converter + id + gr_pfb_clock_sync_ccf_0 - grid_pos - + _enabled + True - notebook - + sps + spb + + + gain + gain + + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 _coordinate - (537, 278) + (341, 777) _rotation @@ -508,18 +503,53 @@ - gr_uchar_to_float + gr_fractional_interpolator_xx id - gr_uchar_to_float_0 + gr_fractional_interpolator_xx_0 _enabled True + + type + complex + + + phase_shift + 0.5 + + + interp_ratio + 1 + _coordinate - (261, 107) + (349, 662) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 320000 + + + _coordinate + (128, 9) _rotation @@ -578,7 +608,7 @@ _coordinate - (750, 128) + (789, 258) _rotation @@ -586,46 +616,42 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0 + gain _enabled True - type - float - - - title - Scope Plot + label + Gain - samp_rate - samp_rate + value + 0 - v_scale + min 0 - t_scale - 0 + max + 1 - ac_couple - False + num_steps + 1000 - xy_mode - False + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos @@ -637,7 +663,7 @@ _coordinate - (643, 853) + (757, -1) _rotation @@ -645,22 +671,30 @@ - gr_float_to_complex + gr_add_xx id - gr_float_to_complex_0 + gr_add_xx_0 _enabled True + + type + float + + + num_inputs + 2 + vlen 1 _coordinate - (380, 553) + (482, 130) _rotation @@ -668,38 +702,34 @@ - gr_pfb_clock_sync_ccf + notebook id - gr_pfb_clock_sync_ccf_0 + notebook_0 _enabled True - sps - spb - - - gain - gain + style + wx.NB_TOP - taps - rrctaps + labels + ['error', 'phase', 'freq'] - filter_size - nfilts + grid_pos + - init_phase - 14 + notebook + _coordinate - (341, 777) + (851, 531) _rotation @@ -707,10 +737,10 @@ - gr_fractional_interpolator_xx + wxgui_scopesink2 id - gr_fractional_interpolator_xx_0 + wxgui_scopesink2_0_0 _enabled @@ -718,42 +748,47 @@ type - complex + float - phase_shift - 0.5 + title + Scope Plot - interp_ratio - 1 + samp_rate + samp_rate - _coordinate - (349, 662) + v_scale + 0 - _rotation + t_scale 0 - - - variable - id - samp_rate + ac_couple + False - _enabled - True + xy_mode + False - value - 320000 + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,0 _coordinate - (128, 9) + (724, 796) _rotation -- cgit From ccca4c7d043bd5e14e48c67880da498c7d578734 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 6 Oct 2009 18:00:21 -0700 Subject: moved grc examples to gnuradio-examples/grc --- 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 ++++ 28 files changed, 9650 insertions(+), 618 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 (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/Makefile.am b/gnuradio-examples/Makefile.am index 360ae8b41..9ea890c12 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 000000000..b336cc7ce --- /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 000000000..97417c5a2 --- /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 000000000..b336cc7ce --- /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 000000000..8d0b385ce --- /dev/null +++ b/gnuradio-examples/grc/audio/cvsd_sweep.grc @@ -0,0 +1,918 @@ + + + Sat Sep 19 20:30:08 2009 + + import + + id + import_0 + + + _enabled + True + + + import + import math + + + _coordinate + (157, 11) + + + _rotation + 0 + + + + blks2_cvsd_decode + + id + blks2_cvsd_decode_0 + + + _enabled + True + + + resample + resample + + + bw + bw + + + _coordinate + (887, 340) + + + _rotation + 0 + + + + gr_sig_source_x + + id + tri_source + + + _enabled + True + + + type + float + + + samp_rate + audio_rate + + + waveform + gr.GR_TRI_WAVE + + + freq + 0.05 + + + amp + 0.5 + + + offset + 0 + + + _coordinate + (44, 316) + + + _rotation + 0 + + + + gr_throttle + + id + throttle + + + _enabled + True + + + type + float + + + samples_per_second + audio_rate + + + vlen + 1 + + + _coordinate + (238, 348) + + + _rotation + 0 + + + + gr_vco_f + + id + vco + + + _enabled + True + + + samp_rate + audio_rate + + + sensitivity + audio_rate*2*math.pi + + + amplitude + 0.9 + + + _coordinate + (427, 332) + + + _rotation + 0 + + + + blks2_cvsd_encode + + id + enc + + + _enabled + True + + + resample + resample + + + bw + bw + + + _coordinate + (655, 340) + + + _rotation + 0 + + + + gr_packed_to_unpacked_xx + + id + p2u + + + _enabled + True + + + type + byte + + + bits_per_chunk + 1 + + + endianness + gr.GR_MSB_FIRST + + + _coordinate + (648, 415) + + + _rotation + 180 + + + + gr_char_to_float + + id + c2f + + + _enabled + True + + + _coordinate + (676, 483) + + + _rotation + 0 + + + + audio_sink + + id + audio_sink + + + _enabled + True + + + samp_rate + audio_rate + + + device_name + plughw:0,0 + + + ok_to_block + True + + + num_inputs + 1 + + + _coordinate + (1127, 340) + + + _rotation + 0 + + + + variable + + id + audio_rate + + + _enabled + True + + + value + 8000 + + + _coordinate + (251, 10) + + + _rotation + 0 + + + + variable + + id + resample + + + _enabled + True + + + value + 8 + + + _coordinate + (344, 11) + + + _rotation + 0 + + + + variable + + id + bw + + + _enabled + True + + + value + 0.5 + + + _coordinate + (431, 11) + + + _rotation + 0 + + + + notebook + + id + displays + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['Original','Encoded','Decoded'] + + + grid_pos + + + + notebook + + + + _coordinate + (12, 106) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + orig_fft + + + _enabled + True + + + type + float + + + title + Original Spectrum + + + samp_rate + audio_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 0 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (415, 97) + + + _rotation + 180 + + + + wxgui_scopesink2 + + id + orig_scope + + + _enabled + True + + + type + float + + + title + Original Waveform + + + samp_rate + audio_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 0 + + + _coordinate + (414, 425) + + + _rotation + 180 + + + + wxgui_fftsink2 + + id + enc_fft + + + _enabled + True + + + type + float + + + title + Encoded Spectrum + + + samp_rate + audio_rate*resample + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 8 + + + ref_level + 10 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (610, 551) + + + _rotation + 180 + + + + wxgui_scopesink2 + + id + enc_scope + + + _enabled + True + + + type + float + + + title + Encoded Waveform + + + samp_rate + audio_rate*resample + + + v_scale + 0.5 + + + t_scale + 20.0/(audio_rate*resample) + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 1 + + + _coordinate + (858, 591) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + dec_fft + + + _enabled + True + + + type + float + + + title + Decoded Spectrum + + + samp_rate + audio_rate + + + baseband_freq + 0 + + + y_per_div + 5 + + + y_divs + 10 + + + ref_level + 10 + + + ref_scale + 0.1 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 0, 0, 1, 1 + + + notebook + displays, 2 + + + _coordinate + (891, 98) + + + _rotation + 180 + + + + wxgui_scopesink2 + + id + dec_scope + + + _enabled + True + + + type + float + + + title + Decoded Waveform + + + samp_rate + audio_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + 1, 0, 1, 1 + + + notebook + displays, 2 + + + _coordinate + (889, 422) + + + _rotation + 180 + + + + options + + id + cvsd_sweep + + + _enabled + True + + + title + CVSD Vocoder Test + + + author + + + + description + + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + vco + orig_fft + 0 + 0 + + + tri_source + throttle + 0 + 0 + + + throttle + vco + 0 + 0 + + + vco + enc + 0 + 0 + + + enc + blks2_cvsd_decode_0 + 0 + 0 + + + vco + orig_scope + 0 + 0 + + + blks2_cvsd_decode_0 + dec_fft + 0 + 0 + + + blks2_cvsd_decode_0 + dec_scope + 0 + 0 + + + blks2_cvsd_decode_0 + audio_sink + 0 + 0 + + + enc + p2u + 0 + 0 + + + p2u + c2f + 0 + 0 + + + c2f + enc_fft + 0 + 0 + + + c2f + enc_scope + 0 + 0 + + diff --git a/gnuradio-examples/grc/audio/dial_tone.grc b/gnuradio-examples/grc/audio/dial_tone.grc new file mode 100644 index 000000000..ac8cbef27 --- /dev/null +++ b/gnuradio-examples/grc/audio/dial_tone.grc @@ -0,0 +1,375 @@ + + + Thu Jul 24 14:27:48 2008 + + options + + id + dial_tone + + + _enabled + True + + + title + Dial Tone + + + author + Example + + + description + example flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx + + + _enabled + True + + + type + float + + + num_inputs + 3 + + + vlen + 1 + + + _coordinate + (513, 277) + + + _rotation + 0 + + + + audio_sink + + id + audio_sink + + + _enabled + True + + + samp_rate + 32000 + + + device_name + + + + ok_to_block + True + + + num_inputs + 1 + + + _coordinate + (699, 112) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x + + + _enabled + True + + + type + float + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise + + + seed + 42 + + + _coordinate + (238, 380) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x + + + _enabled + True + + + type + float + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + 440 + + + amp + ampl + + + offset + 0 + + + _coordinate + (240, 208) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x0 + + + _enabled + True + + + type + float + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + 350 + + + amp + ampl + + + offset + 0 + + + _coordinate + (240, 38) + + + _rotation + 0 + + + + variable_slider + + id + ampl + + + _enabled + True + + + label + Volume + + + value + .4 + + + min + 0 + + + max + .5 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 0, 0, 1, 2 + + + _coordinate + (634, 413) + + + _rotation + 0 + + + + variable_slider + + id + noise + + + _enabled + True + + + label + Noise + + + value + .005 + + + min + 0 + + + max + .2 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 1, 0, 1, 2 + + + _coordinate + (443, 412) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (11, 171) + + + _rotation + 0 + + + + gr_sig_source_x0 + gr_add_xx + 0 + 0 + + + gr_sig_source_x + gr_add_xx + 0 + 1 + + + gr_noise_source_x + gr_add_xx + 0 + 2 + + + gr_add_xx + audio_sink + 0 + 0 + + diff --git a/gnuradio-examples/grc/demod/mpsk_demod.grc b/gnuradio-examples/grc/demod/mpsk_demod.grc new file mode 100644 index 000000000..08108dcba --- /dev/null +++ b/gnuradio-examples/grc/demod/mpsk_demod.grc @@ -0,0 +1,586 @@ + + + Mon Oct 5 18:34:52 2009 + + options + + id + mpsk_demod + + + _enabled + True + + + title + MPSK Demod Demo + + + author + + + + description + + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + run_options + prompt + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (10, 170) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_0 + + + _enabled + True + + + type + byte + + + min + 0 + + + max + 2**8 + + + num_samps + 10000 + + + repeat + True + + + _coordinate + (155, 160) + + + _rotation + 0 + + + + blks2_dxpsk_mod + + id + blks2_dxpsk_mod_0 + + + _enabled + True + + + type + dqpsk + + + samples_per_symbol + samps_per_sym + + + excess_bw + 0.35 + + + gray_code + True + + + verbose + False + + + log + False + + + _coordinate + (391, 54) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (654, 142) + + + _rotation + 0 + + + + variable + + id + samps_per_sym + + + _enabled + True + + + value + 4 + + + _coordinate + (7, 89) + + + _rotation + 0 + + + + gr_channel_model + + id + gr_channel_model_0 + + + _enabled + True + + + noise_voltage + noise + + + freq_offset + freq_off + + + epsilon + 1.0 + + + taps + 1.0 + + + seed + 42 + + + _coordinate + (487, 282) + + + _rotation + 0 + + + + variable_slider + + id + noise + + + _enabled + True + + + label + Noise + + + value + .1 + + + min + 0 + + + max + 1 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (259, 353) + + + _rotation + 0 + + + + variable_slider + + id + freq_off + + + _enabled + True + + + label + Freq Offset + + + value + 0 + + + min + -.5 + + + max + .5 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (126, 345) + + + _rotation + 0 + + + + notebook + + id + notebook + + + _enabled + True + + + style + wx.NB_TOP + + + labels + ['Constellation', 'Spectrum'] + + + grid_pos + + + + notebook + + + + _coordinate + (520, 407) + + + _rotation + 0 + + + + wxgui_constellationsink2 + + id + wxgui_constellationsink2_0 + + + _enabled + True + + + title + Constellation Plot + + + samp_rate + samp_rate + + + frame_rate + 5 + + + const_size + 2048 + + + M + 4 + + + theta + 0 + + + alpha + 0.005 + + + fmax + 0.06 + + + mu + 0.5 + + + gain_mu + 0.005 + + + symbol_rate + samp_rate/4. + + + omega_limit + 0.005 + + + grid_pos + + + + notebook + notebook, 0 + + + _coordinate + (824, 212) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + notebook + notebook, 1 + + + _coordinate + (847, 10) + + + _rotation + 0 + + + + random_source_x_0 + blks2_dxpsk_mod_0 + 0 + 0 + + + gr_throttle_0 + wxgui_constellationsink2_0 + 0 + 0 + + + gr_throttle_0 + wxgui_fftsink2_0 + 0 + 0 + + + blks2_dxpsk_mod_0 + gr_channel_model_0 + 0 + 0 + + + gr_channel_model_0 + gr_throttle_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc new file mode 100644 index 000000000..989c795a9 --- /dev/null +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -0,0 +1,616 @@ + + + Tue Oct 6 14:19:10 2009 + + options + + id + top_block + + + _enabled + True + + + title + + + + author + + + + description + + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + run_options + prompt + + + run + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (128, 9) + + + _rotation + 0 + + + + gr_uchar_to_float + + id + gr_uchar_to_float_0 + + + _enabled + True + + + _coordinate + (270, 115) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_0 + + + _enabled + True + + + type + byte + + + min + 0 + + + max + 2 + + + num_samps + 1000 + + + repeat + True + + + _coordinate + (13, 80) + + + _rotation + 0 + + + + const_source_x + + id + const_source_x_0 + + + _enabled + True + + + type + float + + + const + -0.5 + + + _coordinate + (179, 160) + + + _rotation + 0 + + + + variable_chooser + + id + spb + + + _enabled + True + + + label + Samples Per Bit + + + value + 4 + + + choices + [1, 2, 3, 4, 5, 6, 7, 8] + + + labels + [] + + + type + drop_down + + + style + wx.RA_HORIZONTAL + + + grid_pos + + + + notebook + + + + _coordinate + (0, 834) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + + + + _coordinate + (750, 128) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_0 + + + _enabled + True + + + type + float + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (505, 128) + + + _rotation + 0 + + + + variable_slider + + id + noise_amp + + + _enabled + True + + + label + noise_amp + + + value + 0 + + + min + 0 + + + max + 1.0 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (600, -1) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + float + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (561, 284) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x_0 + + + _enabled + True + + + type + float + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise_amp + + + seed + 42 + + + _coordinate + (45, 497) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + True + + + type + interp_fir_filter_fff + + + decim + 1 + + + interp + spb + + + gain + 2*spb + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb + + + _coordinate + (50, 295) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_0_0 + + + _enabled + True + + + type + float + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (374, 389) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0_0 + + + _enabled + True + + + type + interp_fir_filter_fff + + + decim + 1 + + + interp + 1 + + + gain + 1 + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb + + + _coordinate + (376, 598) + + + _rotation + 0 + + + + random_source_x_0 + gr_uchar_to_float_0 + 0 + 0 + + + gr_uchar_to_float_0 + gr_add_xx_0 + 0 + 0 + + + const_source_x_0 + gr_add_xx_0 + 0 + 1 + + + gr_add_xx_0 + root_raised_cosine_filter_0 + 0 + 0 + + + gr_throttle_0 + wxgui_scopesink2_0 + 0 + 0 + + + root_raised_cosine_filter_0 + gr_add_xx_0_0 + 0 + 0 + + + gr_noise_source_x_0 + gr_add_xx_0_0 + 0 + 1 + + + gr_add_xx_0_0 + root_raised_cosine_filter_0_0 + 0 + 0 + + + root_raised_cosine_filter_0_0 + gr_throttle_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc deleted file mode 100644 index 989c795a9..000000000 --- a/gnuradio-examples/grc/pam_timing.grc +++ /dev/null @@ -1,616 +0,0 @@ - - - Tue Oct 6 14:19:10 2009 - - options - - id - top_block - - - _enabled - True - - - title - - - - author - - - - description - - - - window_size - 1280, 1024 - - - generate_options - wx_gui - - - category - Custom - - - run_options - prompt - - - run - True - - - realtime_scheduling - - - - _coordinate - (10, 10) - - - _rotation - 0 - - - - variable - - id - samp_rate - - - _enabled - True - - - value - 32000 - - - _coordinate - (128, 9) - - - _rotation - 0 - - - - gr_uchar_to_float - - id - gr_uchar_to_float_0 - - - _enabled - True - - - _coordinate - (270, 115) - - - _rotation - 0 - - - - random_source_x - - id - random_source_x_0 - - - _enabled - True - - - type - byte - - - min - 0 - - - max - 2 - - - num_samps - 1000 - - - repeat - True - - - _coordinate - (13, 80) - - - _rotation - 0 - - - - const_source_x - - id - const_source_x_0 - - - _enabled - True - - - type - float - - - const - -0.5 - - - _coordinate - (179, 160) - - - _rotation - 0 - - - - variable_chooser - - id - spb - - - _enabled - True - - - label - Samples Per Bit - - - value - 4 - - - choices - [1, 2, 3, 4, 5, 6, 7, 8] - - - labels - [] - - - type - drop_down - - - style - wx.RA_HORIZONTAL - - - grid_pos - - - - notebook - - - - _coordinate - (0, 834) - - - _rotation - 0 - - - - wxgui_scopesink2 - - id - wxgui_scopesink2_0 - - - _enabled - True - - - type - float - - - title - Scope Plot - - - samp_rate - samp_rate - - - v_scale - 0 - - - t_scale - 0 - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - - - - notebook - - - - _coordinate - (750, 128) - - - _rotation - 0 - - - - gr_add_xx - - id - gr_add_xx_0 - - - _enabled - True - - - type - float - - - num_inputs - 2 - - - vlen - 1 - - - _coordinate - (505, 128) - - - _rotation - 0 - - - - variable_slider - - id - noise_amp - - - _enabled - True - - - label - noise_amp - - - value - 0 - - - min - 0 - - - max - 1.0 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (600, -1) - - - _rotation - 0 - - - - gr_throttle - - id - gr_throttle_0 - - - _enabled - True - - - type - float - - - samples_per_second - samp_rate - - - vlen - 1 - - - _coordinate - (561, 284) - - - _rotation - 0 - - - - gr_noise_source_x - - id - gr_noise_source_x_0 - - - _enabled - True - - - type - float - - - noise_type - gr.GR_GAUSSIAN - - - amp - noise_amp - - - seed - 42 - - - _coordinate - (45, 497) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - True - - - type - interp_fir_filter_fff - - - decim - 1 - - - interp - spb - - - gain - 2*spb - - - samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 - - - ntaps - 11*spb - - - _coordinate - (50, 295) - - - _rotation - 0 - - - - gr_add_xx - - id - gr_add_xx_0_0 - - - _enabled - True - - - type - float - - - num_inputs - 2 - - - vlen - 1 - - - _coordinate - (374, 389) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0_0 - - - _enabled - True - - - type - interp_fir_filter_fff - - - decim - 1 - - - interp - 1 - - - gain - 1 - - - samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 - - - ntaps - 11*spb - - - _coordinate - (376, 598) - - - _rotation - 0 - - - - random_source_x_0 - gr_uchar_to_float_0 - 0 - 0 - - - gr_uchar_to_float_0 - gr_add_xx_0 - 0 - 0 - - - const_source_x_0 - gr_add_xx_0 - 0 - 1 - - - gr_add_xx_0 - root_raised_cosine_filter_0 - 0 - 0 - - - gr_throttle_0 - wxgui_scopesink2_0 - 0 - 0 - - - root_raised_cosine_filter_0 - gr_add_xx_0_0 - 0 - 0 - - - gr_noise_source_x_0 - gr_add_xx_0_0 - 0 - 1 - - - gr_add_xx_0_0 - root_raised_cosine_filter_0_0 - 0 - 0 - - - root_raised_cosine_filter_0_0 - gr_throttle_0 - 0 - 0 - - diff --git a/gnuradio-examples/grc/simple/.gitignore b/gnuradio-examples/grc/simple/.gitignore new file mode 100644 index 000000000..b336cc7ce --- /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 000000000..618add29c --- /dev/null +++ b/gnuradio-examples/grc/simple/ber_simulation.grc @@ -0,0 +1,564 @@ + + + Thu Mar 19 11:08:59 2009 + + options + + id + ber_sim + + + _enabled + True + + + title + BER Simulation + + + author + Example + + + description + Adjust the noise and constellation... see what happens! + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (16, 10) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x + + + _enabled + True + + + type + complex + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise + + + seed + 42 + + + _coordinate + (235, 379) + + + _rotation + 0 + + + + gr_chunks_to_symbols_xx + + id + gr_chunks_to_symbols_xx + + + _enabled + True + + + in_type + byte + + + out_type + complex + + + symbol_table + const + + + dimension + 1 + + + _coordinate + (360, 237) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2 + + + _enabled + True + + + type + float + + + title + BER + + + units + % + + + samp_rate + samp_rate + + + base_value + 0.0 + + + min_value + 0.0 + + + max_value + 1.0 + + + factor + 100 + + + decimal_places + 4 + + + ref_level + 0 + + + number_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + show_gauge + False + + + grid_pos + 1, 0, 1, 1 + + + _coordinate + (1062, 11) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle + + + _enabled + True + + + type + byte + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (397, 27) + + + _rotation + 0 + + + + blks2_error_rate + + id + blks2_error_rate + + + _enabled + True + + + type + 'BER' + + + win_size + 1000000 + + + bits_per_symbol + int(math.log(len(const))/math.log(2)) + + + _coordinate + (670, 41) + + + _rotation + 0 + + + + gr_constellation_decoder_cb + + id + gr_constellation_decoder_cb + + + _enabled + True + + + sym_position + const + + + sym_value_out + range(len(const)) + + + _coordinate + (708, 224) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x + + + _enabled + True + + + type + byte + + + min + 0 + + + max + len(const) + + + num_samps + 1000000 + + + repeat + False + + + _coordinate + (15, 244) + + + _rotation + 0 + + + + variable + + id + noise + + + _enabled + True + + + value + .25 + + + _coordinate + (18, 386) + + + _rotation + 0 + + + + variable + + id + const + + + _enabled + True + + + value + 1+1j, 1-1j, -1-1j, -1+1j + + + _coordinate + (16, 461) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 50e3 + + + _coordinate + (20, 168) + + + _rotation + 0 + + + + import + + id + import + + + _enabled + True + + + import + import math + + + _coordinate + (138, 168) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx + + + _enabled + True + + + type + complex + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (652, 395) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + "Constellation: "+str(const) + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + 2, 0, 1, 1 + + + _coordinate + (828, 368) + + + _rotation + 0 + + + + blks2_error_rate + wxgui_numbersink2 + 0 + 0 + + + gr_throttle + blks2_error_rate + 0 + 0 + + + gr_constellation_decoder_cb + blks2_error_rate + 0 + 1 + + + gr_add_xx + gr_constellation_decoder_cb + 0 + 0 + + + gr_chunks_to_symbols_xx + gr_add_xx + 0 + 0 + + + gr_noise_source_x + gr_add_xx + 0 + 1 + + + random_source_x + gr_throttle + 0 + 0 + + + random_source_x + gr_chunks_to_symbols_xx + 0 + 0 + + + gr_add_xx + wxgui_scopesink2_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/simple/dpsk_loopback.grc b/gnuradio-examples/grc/simple/dpsk_loopback.grc new file mode 100644 index 000000000..6a507c98d --- /dev/null +++ b/gnuradio-examples/grc/simple/dpsk_loopback.grc @@ -0,0 +1,450 @@ + + + Tue Mar 17 12:53:37 2009 + + options + + id + dpsk_loopback + + + _enabled + True + + + title + DPSK Loopback + + + author + Example + + + description + gnuradio flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + blks2_dxpsk_mod + + id + blks2_dxpsk_mod_0 + + + _enabled + True + + + type + dbpsk + + + samples_per_symbol + 2 + + + excess_bw + 0.35 + + + gray_code + True + + + _coordinate + (426, 295) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 10000 + + + _coordinate + (10, 170) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (Hz) + + + value + 500 + + + min + 0 + + + max + samp_rate/2 + + + num_steps + 100 + + + slider_length + 200 + + + slider_type + horizontal + + + grid_pos + + + + _coordinate + (12, 257) + + + _rotation + 0 + + + + blks2_packet_encoder + + id + blks2_packet_encoder_0 + + + _enabled + True + + + type + float + + + samples_per_symbol + 2 + + + bits_per_symbol + 1 + + + access_code + + + + pad_for_usrp + True + + + payload_length + 0 + + + _coordinate + (216, 260) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0_0 + + + _enabled + True + + + type + float + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (225, 174) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x_0 + + + _enabled + True + + + type + float + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + freq + + + amp + 1 + + + offset + 0 + + + _coordinate + (203, 8) + + + _rotation + 0 + + + + blks2_packet_decoder + + id + blks2_packet_decoder_0 + + + _enabled + True + + + type + float + + + access_code + + + + threshold + -1 + + + _coordinate + (551, 65) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + frame_decim + 15 + + + v_scale + 0 + + + t_scale + 1./freq + + + marker + set_format_line + + + num_inputs + 1 + + + grid_pos + + + + _coordinate + (769, 12) + + + _rotation + 0 + + + + blks2_dxpsk_demod + + id + blks2_dxpsk_demod_0 + + + _enabled + True + + + type + dbpsk + + + samples_per_symbol + 2 + + + excess_bw + 0.35 + + + costas_alpha + 0.175 + + + gain_mu + 0.175 + + + mu + 0.5 + + + omega_relative_limit + 0.005 + + + gray_code + True + + + _coordinate + (691, 219) + + + _rotation + 0 + + + + blks2_dxpsk_mod_0 + blks2_dxpsk_demod_0 + 0 + 0 + + + blks2_dxpsk_demod_0 + blks2_packet_decoder_0 + 0 + 0 + + + blks2_packet_encoder_0 + blks2_dxpsk_mod_0 + 0 + 0 + + + gr_sig_source_x_0 + gr_throttle_0_0 + 0 + 0 + + + gr_throttle_0_0 + blks2_packet_encoder_0 + 0 + 0 + + + blks2_packet_decoder_0 + wxgui_scopesink2_0 + 0 + 0 + + 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 000000000..07207850e --- /dev/null +++ b/gnuradio-examples/grc/simple/var_sink_taps.grc @@ -0,0 +1,488 @@ + + + Tue May 19 16:45:51 2009 + + options + + id + var_sink_taps + + + _enabled + True + + + title + Variable Sink + Taps + + + author + Example + + + description + gnuradio flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x_0 + + + _enabled + True + + + type + complex + + + noise_type + gr.GR_GAUSSIAN + + + amp + 1 + + + seed + 42 + + + _coordinate + (619, 36) + + + _rotation + 0 + + + + gr_fir_filter_xxx + + id + gr_fir_filter_xxx_0 + + + _enabled + True + + + type + ccc + + + decim + 1 + + + taps + dest_taps + + + _coordinate + (831, 47) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (999, 198) + + + _rotation + 270 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + _coordinate + (629, 184) + + + _rotation + 180 + + + + import + + id + import_0 + + + _enabled + True + + + import + from gnuradio.gr import firdes + + + _coordinate + (330, 120) + + + _rotation + 0 + + + + variable + + id + dest_taps + + + _enabled + True + + + value + [0] + + + _coordinate + (836, 223) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (831, 130) + + + _rotation + 0 + + + + variable + + id + source_taps + + + _enabled + True + + + value + firdes.low_pass(1, samp_rate, 4000, 2000) + + + _coordinate + (397, 191) + + + _rotation + 0 + + + + variable + + id + taps_rate + + + _enabled + True + + + value + 10 + + + _coordinate + (268, 189) + + + _rotation + 0 + + + + gr_vector_source_x + + id + gr_vector_source_x_0 + + + _enabled + True + + + type + complex + + + vector + source_taps + + + repeat + True + + + vlen + len(source_taps) + + + _coordinate + (205, 33) + + + _rotation + 0 + + + + note + + id + note_0 + + + _enabled + True + + + note + Pass the FIR taps via a variable sink. + + + _coordinate + (14, 141) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle + + + _enabled + True + + + type + complex + + + samples_per_second + taps_rate + + + vlen + len(source_taps) + + + _coordinate + (440, 41) + + + _rotation + 0 + + + + blks2_variable_sink_x + + id + blks2_variable_sink_x_0 + + + _enabled + True + + + type + complex + + + variable + dest_taps + + + decim + 1 + + + vlen + len(source_taps) + + + _coordinate + (305, 283) + + + _rotation + 180 + + + + gr_noise_source_x_0 + gr_fir_filter_xxx_0 + 0 + 0 + + + gr_fir_filter_xxx_0 + gr_throttle_0 + 0 + 0 + + + gr_throttle_0 + wxgui_fftsink2_0 + 0 + 0 + + + gr_vector_source_x_0 + gr_throttle + 0 + 0 + + + gr_throttle + blks2_variable_sink_x_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/simple/variable_config.grc b/gnuradio-examples/grc/simple/variable_config.grc new file mode 100644 index 000000000..95c287cce --- /dev/null +++ b/gnuradio-examples/grc/simple/variable_config.grc @@ -0,0 +1,329 @@ + + + Thu Jun 25 10:56:04 2009 + + options + + id + variable_config_demo + + + _enabled + True + + + title + Variable Config Block Demonstration + + + author + Example + + + description + Save/Load freq from a config file. + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + autostart + True + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (10, 170) + + + _rotation + 0 + + + + variable_config + + id + freq_init + + + _enabled + True + + + value + 1000 + + + type + real + + + config_file + config.conf + + + section + main + + + option + freq + + + writeback + freq + + + _coordinate + (255, 17) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (Hz) + + + value + freq_init + + + min + -samp_rate/2 + + + max + samp_rate/2 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (429, 24) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle_0 + + + _enabled + True + + + type + complex + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (392, 233) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x_0 + + + _enabled + True + + + type + complex + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + freq + + + amp + 1 + + + offset + 0 + + + _coordinate + (148, 233) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + _coordinate + (671, 233) + + + _rotation + 0 + + + + gr_sig_source_x_0 + gr_throttle_0 + 0 + 0 + + + gr_throttle_0 + wxgui_fftsink2_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/trellis/.gitignore b/gnuradio-examples/grc/trellis/.gitignore new file mode 100644 index 000000000..b336cc7ce --- /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 000000000..e93babd78 --- /dev/null +++ b/gnuradio-examples/grc/trellis/interference_cancellation.grc @@ -0,0 +1,2072 @@ + + + Thu Mar 19 11:22:40 2009 + + options + + id + int_cancellation + + + _enabled + True + + + title + Superposition Coding + + + author + AA + + + description + gnuradio flow graph + + + window_size + 2048, 2048 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable_slider + + id + alpha + + + _enabled + True + + + label + P1/P + + + value + 0.6 + + + min + 0 + + + max + 1.0 + + + num_steps + 100 + + + slider_length + 200 + + + slider_type + horizontal + + + grid_pos + + + + _coordinate + (243, 11) + + + _rotation + 0 + + + + variable_slider + + id + snr_db + + + _enabled + True + + + label + P/sigma^2 (dB) + + + value + 16 + + + min + 0 + + + max + 20 + + + num_steps + 100 + + + slider_length + 200 + + + slider_type + horizontal + + + grid_pos + + + + _coordinate + (447, 14) + + + _rotation + 0 + + + + variable + + id + noisevar + + + _enabled + True + + + value + 10**(-snr_db/10) + + + _coordinate + (637, 13) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_0 + + + _enabled + True + + + type + short + + + min + 0 + + + max + 2 + + + num_samps + 1000 + + + repeat + True + + + _coordinate + (21, 170) + + + _rotation + 0 + + + + gr_chunks_to_symbols_xx + + id + gr_chunks_to_symbols_xx_0 + + + _enabled + True + + + in_type + short + + + out_type + complex + + + symbol_table + 1,1j,-1j,-1 + + + dimension + 1 + + + _coordinate + (665, 187) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx_0 + + + _enabled + True + + + type + complex + + + const + alpha**0.5 + + + vlen + 1 + + + _coordinate + (988, 196) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_1 + + + _enabled + True + + + type + short + + + min + 0 + + + max + 2 + + + num_samps + 1000 + + + repeat + True + + + _coordinate + (25, 291) + + + _rotation + 0 + + + + gr_chunks_to_symbols_xx + + id + gr_chunks_to_symbols_xx_1 + + + _enabled + True + + + in_type + short + + + out_type + complex + + + symbol_table + 1,1j,-1j,-1 + + + dimension + 1 + + + _coordinate + (660, 311) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx_1 + + + _enabled + True + + + type + complex + + + const + (1-alpha)**0.5 + + + vlen + 1 + + + _coordinate + (994, 319) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_0 + + + _enabled + True + + + type + complex + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (1224, 244) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x_0 + + + _enabled + True + + + type + complex + + + noise_type + gr.GR_GAUSSIAN + + + amp + noisevar + + + seed + 42 + + + _coordinate + (1146, 369) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_0 + + + _enabled + True + + + type + short + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (536, 529) + + + _rotation + 0 + + + + gr_multiply_xx + + id + gr_multiply_xx_0 + + + _enabled + True + + + type + short + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (771, 525) + + + _rotation + 0 + + + + gr_short_to_float + + id + gr_short_to_float_0 + + + _enabled + True + + + _coordinate + (994, 545) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_3 + + + _enabled + True + + + type + short + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (535, 792) + + + _rotation + 0 + + + + gr_multiply_xx + + id + gr_multiply_xx_1 + + + _enabled + True + + + type + short + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (785, 779) + + + _rotation + 0 + + + + gr_short_to_float + + id + gr_short_to_float_2 + + + _enabled + True + + + _coordinate + (1005, 798) + + + _rotation + 0 + + + + gr_chunks_to_symbols_xx + + id + gr_chunks_to_symbols_xx_2 + + + _enabled + True + + + in_type + short + + + out_type + complex + + + symbol_table + 1,1j,-1j,-1 + + + dimension + 1 + + + _coordinate + (405, 998) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx_2 + + + _enabled + True + + + type + complex + + + const + alpha**0.5 + + + vlen + 1 + + + _coordinate + (710, 1008) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_2 + + + _enabled + True + + + type + complex + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (944, 978) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_1 + + + _enabled + True + + + type + short + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (540, 1141) + + + _rotation + 0 + + + + gr_multiply_xx + + id + gr_multiply_xx_2 + + + _enabled + True + + + type + short + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (796, 1136) + + + _rotation + 0 + + + + gr_short_to_float + + id + gr_short_to_float_1 + + + _enabled + True + + + _coordinate + (1009, 1156) + + + _rotation + 0 + + + + gr_chunks_to_symbols_xx + + id + gr_chunks_to_symbols_xx_2_0 + + + _enabled + True + + + in_type + short + + + out_type + complex + + + symbol_table + 1,1j,-1j,-1 + + + dimension + 1 + + + _coordinate + (420, 1368) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx_2_0 + + + _enabled + True + + + type + complex + + + const + (1-alpha)**0.5 + + + vlen + 1 + + + _coordinate + (733, 1374) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_2_0 + + + _enabled + True + + + type + complex + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (975, 1342) + + + _rotation + 0 + + + + gr_sub_xx + + id + gr_sub_xx_1_0 + + + _enabled + True + + + type + short + + + vlen + 1 + + + num_inputs + 2 + + + _coordinate + (559, 1536) + + + _rotation + 0 + + + + gr_multiply_xx + + id + gr_multiply_xx_2_0 + + + _enabled + True + + + type + short + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (771, 1530) + + + _rotation + 0 + + + + gr_short_to_float + + id + gr_short_to_float_1_0 + + + _enabled + True + + + _coordinate + (1010, 1551) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_2 + + + _enabled + True + + + type + float + + + title + BER 2 (raw) + + + units + BER + + + samp_rate + R + + + base_value + 0.0 + + + min_value + 0 + + + max_value + 1.0 + + + factor + 1.0 + + + decimal_places + 6 + + + ref_level + 0 + + + number_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0.001 + + + show_gauge + True + + + grid_pos + 0,1,1,1 + + + _coordinate + (1260, 659) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_3 + + + _enabled + True + + + type + float + + + title + BER 2 (after cancelling user 1) + + + units + BER + + + samp_rate + R + + + base_value + 0.0 + + + min_value + 0 + + + max_value + 1.0 + + + factor + 1.0 + + + decimal_places + 6 + + + ref_level + 0 + + + number_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0.001 + + + show_gauge + True + + + grid_pos + 1,1,1,1 + + + _coordinate + (1262, 1020) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_3_0 + + + _enabled + True + + + type + float + + + title + BER 1 (after cancelling user 2) + + + units + BER + + + samp_rate + R + + + base_value + 0.0 + + + min_value + 0 + + + max_value + 1.0 + + + factor + 1.0 + + + decimal_places + 6 + + + ref_level + 0 + + + number_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0.001 + + + show_gauge + True + + + grid_pos + 1,0,1,1 + + + _coordinate + (1269, 1417) + + + _rotation + 0 + + + + variable + + id + R + + + _enabled + True + + + value + 10e3 + + + _coordinate + (748, 12) + + + _rotation + 0 + + + + trellis_encoder_xx + + id + trellis_encoder_xx_0 + + + _enabled + True + + + type + ss + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + init_state + 0 + + + _coordinate + (334, 190) + + + _rotation + 0 + + + + trellis_encoder_xx + + id + trellis_encoder_xx_1 + + + _enabled + True + + + type + ss + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + init_state + 0 + + + _coordinate + (336, 311) + + + _rotation + 0 + + + + trellis_viterbi_combined_xx + + id + trellis_viterbi_combined_xx_1 + + + _enabled + True + + + type + c + + + out_type + s + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + block_size + 1000 + + + init_state + -1 + + + final_state + -1 + + + dim + 1 + + + table + alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1) + + + metric_type + trellis.TRELLIS_EUCLIDEAN + + + _coordinate + (79, 501) + + + _rotation + 0 + + + + trellis_viterbi_combined_xx + + id + trellis_viterbi_combined_xx_2 + + + _enabled + True + + + type + c + + + out_type + s + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + block_size + 1000 + + + init_state + -1 + + + final_state + -1 + + + dim + 1 + + + table + (1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1) + + + metric_type + trellis.TRELLIS_EUCLIDEAN + + + _coordinate + (82, 766) + + + _rotation + 0 + + + + trellis_encoder_xx + + id + trellis_encoder_xx_2 + + + _enabled + True + + + type + ss + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + init_state + 0 + + + _coordinate + (89, 998) + + + _rotation + 0 + + + + trellis_viterbi_combined_xx + + id + trellis_viterbi_combined_xx_0 + + + _enabled + True + + + type + c + + + out_type + s + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + block_size + 1000 + + + init_state + -1 + + + final_state + -1 + + + dim + 1 + + + table + (1-alpha)**0.5*1,(1-alpha)**0.5*1j,(1-alpha)**0.5*(-1j),(1-alpha)**0.5*(-1) + + + metric_type + trellis.TRELLIS_EUCLIDEAN + + + _coordinate + (83, 1111) + + + _rotation + 0 + + + + trellis_encoder_xx + + id + trellis_encoder_xx_2_0 + + + _enabled + True + + + type + ss + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + init_state + 0 + + + _coordinate + (105, 1367) + + + _rotation + 0 + + + + trellis_viterbi_combined_xx + + id + trellis_viterbi_combined_xx_0_0 + + + _enabled + True + + + type + c + + + out_type + s + + + fsm_args + prefix+"gr-trellis/src/examples/fsm_files/awgn1o2_16.fsm" + + + block_size + 1000 + + + init_state + -1 + + + final_state + -1 + + + dim + 1 + + + table + alpha**0.5*1,alpha**0.5*1j,alpha**0.5*(-1j),alpha**0.5*(-1) + + + metric_type + trellis.TRELLIS_EUCLIDEAN + + + _coordinate + (75, 1495) + + + _rotation + 0 + + + + variable + + id + prefix + + + _enabled + True + + + value + "../../../" + + + _coordinate + (871, 14) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx_1 + + + _enabled + True + + + type + complex + + + num_inputs + 2 + + + vlen + 1 + + + _coordinate + (1400, 262) + + + _rotation + 0 + + + + wxgui_numbersink2 + + id + wxgui_numbersink2_0 + + + _enabled + True + + + type + float + + + title + BER 1 (raw) + + + units + BER + + + samp_rate + R + + + base_value + 0.0 + + + min_value + 0 + + + max_value + 1 + + + factor + 1.0 + + + decimal_places + 6 + + + ref_level + 0 + + + number_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0.001 + + + show_gauge + True + + + grid_pos + 0,0,1,1 + + + _coordinate + (1267, 410) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + Scope Plot + + + samp_rate + R + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + + + + _coordinate + (1533, 149) + + + _rotation + 0 + + + + random_source_x_1 + trellis_encoder_xx_1 + 0 + 0 + + + trellis_encoder_xx_0 + gr_chunks_to_symbols_xx_0 + 0 + 0 + + + trellis_encoder_xx_1 + gr_chunks_to_symbols_xx_1 + 0 + 0 + + + gr_chunks_to_symbols_xx_0 + gr_multiply_const_vxx_0 + 0 + 0 + + + gr_multiply_const_vxx_0 + gr_add_xx_0 + 0 + 0 + + + gr_add_xx_0 + gr_add_xx_1 + 0 + 0 + + + gr_noise_source_x_0 + gr_add_xx_1 + 0 + 1 + + + gr_chunks_to_symbols_xx_1 + gr_multiply_const_vxx_1 + 0 + 0 + + + gr_multiply_const_vxx_1 + gr_add_xx_0 + 0 + 1 + + + gr_sub_xx_0 + gr_multiply_xx_0 + 0 + 0 + + + gr_sub_xx_0 + gr_multiply_xx_0 + 0 + 1 + + + gr_multiply_xx_0 + gr_short_to_float_0 + 0 + 0 + + + gr_short_to_float_0 + wxgui_numbersink2_0 + 0 + 0 + + + gr_multiply_xx_2 + gr_short_to_float_1 + 0 + 0 + + + random_source_x_0 + trellis_encoder_xx_0 + 0 + 0 + + + gr_add_xx_1 + trellis_viterbi_combined_xx_1 + 0 + 0 + + + random_source_x_0 + gr_sub_xx_0 + 0 + 0 + + + trellis_viterbi_combined_xx_1 + gr_sub_xx_0 + 0 + 1 + + + trellis_viterbi_combined_xx_0 + gr_sub_xx_1 + 0 + 1 + + + random_source_x_1 + gr_sub_xx_1 + 0 + 0 + + + gr_sub_xx_1 + gr_multiply_xx_2 + 0 + 0 + + + gr_sub_xx_1 + gr_multiply_xx_2 + 0 + 1 + + + gr_sub_xx_2 + trellis_viterbi_combined_xx_0 + 0 + 0 + + + gr_add_xx_1 + gr_sub_xx_2 + 0 + 0 + + + trellis_encoder_xx_2 + gr_chunks_to_symbols_xx_2 + 0 + 0 + + + gr_chunks_to_symbols_xx_2 + gr_multiply_const_vxx_2 + 0 + 0 + + + gr_multiply_const_vxx_2 + gr_sub_xx_2 + 0 + 1 + + + trellis_viterbi_combined_xx_1 + trellis_encoder_xx_2 + 0 + 0 + + + gr_multiply_xx_1 + gr_short_to_float_2 + 0 + 0 + + + gr_short_to_float_2 + wxgui_numbersink2_2 + 0 + 0 + + + trellis_viterbi_combined_xx_2 + gr_sub_xx_3 + 0 + 1 + + + gr_sub_xx_3 + gr_multiply_xx_1 + 0 + 0 + + + gr_sub_xx_3 + gr_multiply_xx_1 + 0 + 1 + + + gr_add_xx_1 + trellis_viterbi_combined_xx_2 + 0 + 0 + + + random_source_x_1 + gr_sub_xx_3 + 0 + 0 + + + gr_short_to_float_1 + wxgui_numbersink2_3 + 0 + 0 + + + trellis_encoder_xx_2_0 + gr_chunks_to_symbols_xx_2_0 + 0 + 0 + + + gr_chunks_to_symbols_xx_2_0 + gr_multiply_const_vxx_2_0 + 0 + 0 + + + trellis_viterbi_combined_xx_2 + trellis_encoder_xx_2_0 + 0 + 0 + + + gr_multiply_xx_2_0 + gr_short_to_float_1_0 + 0 + 0 + + + trellis_viterbi_combined_xx_0_0 + gr_sub_xx_1_0 + 0 + 1 + + + gr_sub_xx_1_0 + gr_multiply_xx_2_0 + 0 + 0 + + + gr_sub_xx_1_0 + gr_multiply_xx_2_0 + 0 + 1 + + + gr_sub_xx_2_0 + trellis_viterbi_combined_xx_0_0 + 0 + 0 + + + gr_short_to_float_1_0 + wxgui_numbersink2_3_0 + 0 + 0 + + + gr_add_xx_1 + gr_sub_xx_2_0 + 0 + 0 + + + random_source_x_0 + gr_sub_xx_1_0 + 0 + 0 + + + gr_multiply_const_vxx_2_0 + gr_sub_xx_2_0 + 0 + 1 + + + gr_add_xx_1 + wxgui_scopesink2_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/trellis/readme.txt b/gnuradio-examples/grc/trellis/readme.txt new file mode 100644 index 000000000..d620fd628 --- /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 000000000..b336cc7ce --- /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 000000000..fdbd7c1f3 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_const_wave.grc @@ -0,0 +1,252 @@ + + + Wed Apr 15 11:22:56 2009 + + const_source_x + + id + const_source_x_0 + + + _enabled + True + + + type + complex + + + const + ampl + + + _coordinate + (284, 154) + + + _rotation + 0 + + + + usrp2_sink_xxxx + + id + usrp2_sink_xxxx_0 + + + _enabled + True + + + type + complex + + + interface + + + + mac_addr + + + + interpolation + interp + + + frequency + tun_freq + + + gain + 0 + + + _coordinate + (493, 106) + + + _rotation + 0 + + + + variable + + id + interp + + + _enabled + True + + + value + 16 + + + _coordinate + (16, 255) + + + _rotation + 0 + + + + variable_slider + + id + tun_freq + + + _enabled + True + + + label + USRP2 Freq (Hz) + + + value + 2.45e9 + + + min + 2.4e9 + + + max + 2.5e9 + + + num_steps + 100 + + + slider_length + 200 + + + slider_type + horizontal + + + grid_pos + + + + _coordinate + (30, 376) + + + _rotation + 0 + + + + variable_slider + + id + ampl + + + _enabled + True + + + label + Amplitude + + + value + .1 + + + min + 0 + + + max + 1 + + + num_steps + 100 + + + slider_length + 200 + + + slider_type + horizontal + + + grid_pos + + + + _coordinate + (204, 376) + + + _rotation + 0 + + + + options + + id + usrp2_const_wave + + + _enabled + True + + + title + USRP2 Constant Wave + + + author + Example + + + description + Tune USRP2 + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + const_source_x_0 + usrp2_sink_xxxx_0 + 0 + 0 + + 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 000000000..e9f9b41ea --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_dpsk_mod.grc @@ -0,0 +1,693 @@ + + + Wed Apr 15 17:31:00 2009 + + options + + id + usrp2_dpsk_mod + + + _enabled + True + + + title + USRP2 DPSK Modulation + + + author + Example + + + description + Generate a DPSK signal + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 100e6/interp + + + _coordinate + (52, 166) + + + _rotation + 0 + + + + usrp2_sink_xxxx + + id + usrp2_sink_xxxx_0 + + + _enabled + True + + + type + complex + + + interface + + + + mac_addr + + + + interpolation + interp + + + frequency + tun_freq + + + gain + 0 + + + _coordinate + (1059, 56) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx_0 + + + _enabled + True + + + type + complex + + + const + ampl + + + vlen + 1 + + + _coordinate + (679, 58) + + + _rotation + 0 + + + + blks2_dxpsk_mod + + id + blks2_dxpsk_mod_0 + + + _enabled + True + + + type + dqpsk + + + samples_per_symbol + samps_per_sym + + + excess_bw + 0.35 + + + gray_code + True + + + _coordinate + (468, 55) + + + _rotation + 0 + + + + variable + + id + interp + + + _enabled + True + + + value + 100 + + + _coordinate + (31, 256) + + + _rotation + 0 + + + + variable + + id + samps_per_sym + + + _enabled + True + + + value + 8 + + + _coordinate + (126, 250) + + + _rotation + 0 + + + + random_source_x + + id + random_source_x_0 + + + _enabled + True + + + type + byte + + + min + 0 + + + max + 256 + + + num_samps + 1000 + + + repeat + True + + + _coordinate + (255, 39) + + + _rotation + 0 + + + + variable_slider + + id + ampl + + + _enabled + True + + + label + Amplitude + + + value + .1 + + + min + 0 + + + max + 1 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (246, 372) + + + _rotation + 0 + + + + variable_slider + + id + rx_freq_off + + + _enabled + True + + + label + RX Freq Offset (Hz) + + + value + -20e3 + + + min + -50e3 + + + max + +50e3 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (247, 508) + + + _rotation + 0 + + + + variable_slider + + id + tun_freq + + + _enabled + True + + + label + USRP2 Freq (Hz) + + + value + 2.45e9 + + + min + 2.4e9 + + + max + 2.5e9 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (49, 341) + + + _rotation + 0 + + + + wxgui_constellationsink2 + + id + wxgui_constellationsink2_0 + + + _enabled + True + + + title + Constellation Plot + + + samp_rate + samp_rate + + + frame_rate + 5 + + + const_size + 2048 + + + M + 4 + + + theta + 0 + + + alpha + 0.005 + + + fmax + 0.06 + + + mu + 0.5 + + + gain_mu + 0.005 + + + symbol_rate + samp_rate/samps_per_sym + + + omega_limit + 0.005 + + + grid_pos + + + + _coordinate + (920, 202) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + tun_freq + + + y_per_div + 10 + + + ref_level + 10 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + _coordinate + (691, 155) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + False + + + type + complex + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 1e-6 + + + ac_couple + False + + + xy_mode + True + + + num_inputs + 1 + + + grid_pos + + + + _coordinate + (515, 272) + + + _rotation + 0 + + + + usrp2_source_xxxx + + id + usrp2_source_xxxx_0 + + + _enabled + True + + + type + complex + + + interface + eth1 + + + mac_addr + + + + decimation + interp + + + frequency + tun_freq + rx_freq_off + + + gain + 30 + + + _coordinate + (270, 200) + + + _rotation + 0 + + + + random_source_x_0 + blks2_dxpsk_mod_0 + 0 + 0 + + + blks2_dxpsk_mod_0 + gr_multiply_const_vxx_0 + 0 + 0 + + + gr_multiply_const_vxx_0 + usrp2_sink_xxxx_0 + 0 + 0 + + + usrp2_source_xxxx_0 + wxgui_constellationsink2_0 + 0 + 0 + + + usrp2_source_xxxx_0 + wxgui_scopesink2_0 + 0 + 0 + + + usrp2_source_xxxx_0 + wxgui_fftsink2_0 + 0 + 0 + + diff --git a/gnuradio-examples/grc/usrp/usrp2_fft.grc b/gnuradio-examples/grc/usrp/usrp2_fft.grc new file mode 100644 index 000000000..134bd4614 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp2_fft.grc @@ -0,0 +1,264 @@ + + + Wed Apr 15 17:30:20 2009 + + options + + id + usrp2_fft + + + _enabled + True + + + title + USRP2 FFT Plotter + + + author + Example + + + description + FFT waveform plot + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 100e6/decim + + + _coordinate + (10, 170) + + + _rotation + 0 + + + + variable + + id + decim + + + _enabled + True + + + value + 16 + + + _coordinate + (24, 267) + + + _rotation + 0 + + + + variable_slider + + id + tun_freq + + + _enabled + True + + + label + USRP2 Freq (Hz) + + + value + 2.45e9 + + + min + 2.4e9 + + + max + 2.5e9 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + _coordinate + (32, 365) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + tun_freq + + + y_per_div + 10 + + + ref_level + 10 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + _coordinate + (466, 100) + + + _rotation + 0 + + + + usrp2_source_xxxx + + id + usrp2_source_xxxx_0 + + + _enabled + True + + + type + complex + + + interface + + + + mac_addr + + + + decimation + decim + + + frequency + tun_freq + + + gain + 0 + + + _coordinate + (211, 200) + + + _rotation + 0 + + + + usrp2_source_xxxx_0 + wxgui_fftsink2_0 + 0 + 0 + + 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 000000000..3df977044 --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp_two_tone_loopback.grc @@ -0,0 +1,749 @@ + + + Fri Apr 17 18:23:35 2009 + + variable + + id + samp_rate + + + _enabled + True + + + value + 64e6/200 + + + _coordinate + (9, 166) + + + _rotation + 0 + + + + variable + + id + tun_freq + + + _enabled + True + + + value + int(100e6) + + + _coordinate + (116, 166) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x + + + _enabled + True + + + type + complex + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + tone1 + + + amp + tone_ampl + + + offset + 0 + + + _coordinate + (258, 20) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x0 + + + _enabled + True + + + type + complex + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + tone2 + + + amp + tone_ampl + + + offset + 0 + + + _coordinate + (255, 179) + + + _rotation + 0 + + + + gr_add_xx + + id + gr_add_xx + + + _enabled + True + + + type + complex + + + num_inputs + 3 + + + vlen + 1 + + + _coordinate + (528, 78) + + + _rotation + 0 + + + + parameter + + id + tx_side + + + _enabled + True + + + label + + + + value + A + + + type + string + + + _coordinate + (688, 384) + + + _rotation + 0 + + + + usrp_simple_sink_x + + id + usrp_simple_sink_x + + + _enabled + True + + + type + complex + + + format + + + + which + 0 + + + interpolation + 400 + + + frequency + tun_freq + + + gain + 0 + + + side + tx_side + + + transmit + + + + _coordinate + (835, 5) + + + _rotation + 0 + + + + usrp_simple_source_x + + id + usrp_simple_source_x + + + _enabled + True + + + type + complex + + + format + + + + which + 0 + + + decimation + 200 + + + frequency + tun_freq + + + gain + 20 + + + side + rx_side + + + rx_ant + rx_ant + + + hb_filters + + + + _coordinate + (479, 224) + + + _rotation + 0 + + + + parameter + + id + rx_ant + + + _enabled + True + + + label + + + + value + RXA + + + type + string + + + _coordinate + (802, 384) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + ref_level + 100 + + + fft_size + 512*2 + + + fft_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 1, 2, 2, 4 + + + _coordinate + (746, 133) + + + _rotation + 0 + + + + parameter + + id + rx_side + + + _enabled + True + + + label + + + + value + A + + + type + string + + + _coordinate + (568, 382) + + + _rotation + 0 + + + + gr_noise_source_x + + id + gr_noise_source_x + + + _enabled + True + + + type + complex + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise_ampl + + + seed + 42 + + + _coordinate + (276, 312) + + + _rotation + 0 + + + + variable_slider + + id + noise_ampl + + + _enabled + True + + + label + Noise Ampl + + + value + 2000 + + + min + 0 + + + max + 5000 + + + num_steps + 100 + + + style + wx.SL_VERTICAL + + + converver + float_converter + + + grid_pos + 1, 1, 2, 1 + + + _coordinate + (20, 243) + + + _rotation + 0 + + + + variable_slider + + id + tone_ampl + + + _enabled + True + + + label + Tone Ampl + + + value + 5000 + + + min + 0 + + + max + 10e3 + + + num_steps + 100 + + + style + wx.SL_VERTICAL + + + converver + float_converter + + + grid_pos + 1, 0, 2, 1 + + + _coordinate + (28, 437) + + + _rotation + 0 + + + + variable_slider + + id + tone1 + + + _enabled + True + + + label + Tone 1 + + + value + 50e3 + + + min + -samp_rate/2 + + + max + samp_rate/2 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 0, 1, 4 + + + _coordinate + (190, 436) + + + _rotation + 0 + + + + variable_slider + + id + tone2 + + + _enabled + True + + + label + Tone 2 + + + value + 75e3 + + + min + -samp_rate/2 + + + max + samp_rate/2 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 4, 1, 4 + + + _coordinate + (367, 439) + + + _rotation + 0 + + + + options + + id + usrp_two_tone_loopback + + + _enabled + True + + + title + USRP Loopback - 2 Tone + + + author + Example + + + description + Loopback test with basic rx and basic tx + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + gr_sig_source_x + gr_add_xx + 0 + 0 + + + gr_sig_source_x0 + gr_add_xx + 0 + 1 + + + gr_noise_source_x + gr_add_xx + 0 + 2 + + + usrp_simple_source_x + wxgui_fftsink2 + 0 + 0 + + + gr_add_xx + usrp_simple_sink_x + 0 + 0 + + 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 000000000..8f53475ab --- /dev/null +++ b/gnuradio-examples/grc/usrp/usrp_wbfm_receive.grc @@ -0,0 +1,466 @@ + + + Fri Apr 17 19:06:07 2009 + + options + + id + usrp_wbfm_receive + + + _enabled + True + + + title + USRP WBFM Receive + + + author + Example + + + description + WBFM Receive with Basic RX or TV RX + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + realtime_scheduling + + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + variable + + id + decim + + + _enabled + True + + + value + 200 + + + _coordinate + (14, 173) + + + _rotation + 0 + + + + variable_slider + + id + volume + + + _enabled + True + + + label + Volume + + + value + 1 + + + min + 0 + + + max + 10 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 1, 0, 1, 4 + + + _coordinate + (991, 40) + + + _rotation + 0 + + + + usrp_simple_source_x + + id + usrp_simple_source_x + + + _enabled + True + + + type + complex + + + format + + + + which + 0 + + + decimation + decim + + + frequency + (freq+fine)*1e6 + + + gain + 20 + + + side + A + + + rx_ant + None + + + hb_filters + + + + _coordinate + (277, 29) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + 64e6/decim + + + baseband_freq + (freq+fine)*1e6 + + + y_per_div + 10 + + + ref_level + 50 + + + fft_size + 512 + + + fft_rate + 15 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + 2, 0, 2, 4 + + + _coordinate + (512, 191) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (MHz) + + + value + 100 + + + min + 87.5 + + + max + 108.0 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 0, 1, 2 + + + _coordinate + (104, 243) + + + _rotation + 0 + + + + variable_slider + + id + fine + + + _enabled + True + + + label + Fine Freq (MHz) + + + value + 0 + + + min + -.1 + + + max + .1 + + + num_steps + 100 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + 0, 2, 1, 2 + + + _coordinate + (275, 246) + + + _rotation + 0 + + + + blks2_wfm_rcv + + id + blks2_wfm_rcv + + + _enabled + True + + + quad_rate + 64e6/decim + + + audio_decimation + 10 + + + _coordinate + (510, 37) + + + _rotation + 0 + + + + gr_multiply_const_vxx + + id + gr_multiply_const_vxx + + + _enabled + True + + + type + float + + + const + volume + + + vlen + 1 + + + _coordinate + (764, 55) + + + _rotation + 0 + + + + audio_sink + + id + audio_sink + + + _enabled + True + + + samp_rate + 32000 + + + device_name + + + + ok_to_block + True + + + num_inputs + 1 + + + _coordinate + (703, 241) + + + _rotation + 180 + + + + usrp_simple_source_x + blks2_wfm_rcv + 0 + 0 + + + usrp_simple_source_x + wxgui_fftsink2 + 0 + 0 + + + blks2_wfm_rcv + gr_multiply_const_vxx + 0 + 0 + + + gr_multiply_const_vxx + audio_sink + 0 + 0 + + diff --git a/gnuradio-examples/grc/xmlrpc/.gitignore b/gnuradio-examples/grc/xmlrpc/.gitignore new file mode 100644 index 000000000..b336cc7ce --- /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 000000000..c1f87c1cb --- /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 000000000..3bb4e7ed3 --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/xmlrpc_client.grc @@ -0,0 +1,312 @@ + + + Thu Jul 24 14:27:44 2008 + + options + + id + client_block + + + _enabled + True + + + title + XMLRPC Client + + + author + Example + + + description + example flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client0 + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_ampl + + + variable + ampl + + + _coordinate + (409, 35) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_freq + + + variable + freq + + + _coordinate + (222, 34) + + + _rotation + 0 + + + + variable_slider + + id + freq + + + _enabled + True + + + label + Frequency (Hz) + + + value + 1000 + + + min + 0 + + + max + 5000 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 0, 0, 1, 2 + + + _coordinate + (207, 162) + + + _rotation + 0 + + + + variable_slider + + id + ampl + + + _enabled + True + + + label + Amplitude + + + value + 1 + + + min + 0 + + + max + 2 + + + num_steps + 100 + + + slider_type + horizontal + + + grid_pos + 1, 0, 1, 2 + + + _coordinate + (397, 167) + + + _rotation + 0 + + + + variable_chooser + + id + offset + + + _enabled + True + + + label + Offset + + + value_index + 1 + + + choices + [-1, 0, 1] + + + labels + ["neg", "zero", "pos"] + + + chooser_type + radio_buttons_horizontal + + + grid_pos + 2, 0, 1, 2 + + + _coordinate + (596, 177) + + + _rotation + 0 + + + + xmlrpc_client + + id + xmlrpc_client1 + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + callback + set_offset + + + variable + offset*ampl + + + _coordinate + (608, 39) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (13, 172) + + + _rotation + 0 + + + \ 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 000000000..956fa07fb --- /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 000000000..dc539ef1b --- /dev/null +++ b/gnuradio-examples/grc/xmlrpc/xmlrpc_server.grc @@ -0,0 +1,384 @@ + + + Thu Jul 24 14:27:42 2008 + + options + + id + server_block + + + _enabled + True + + + title + XMLRPC Server + + + author + Example + + + description + example flow graph + + + window_size + 1280, 1024 + + + generate_options + wx_gui + + + category + Custom + + + _coordinate + (10, 10) + + + _rotation + 0 + + + + gr_sig_source_x + + id + gr_sig_source_x + + + _enabled + True + + + type + float + + + samp_rate + samp_rate + + + waveform + gr.GR_COS_WAVE + + + freq + freq + + + amp + ampl + + + offset + offset + + + _coordinate + (162, 200) + + + _rotation + 0 + + + + variable + + id + offset + + + _enabled + True + + + value + 0 + + + _coordinate + (12, 390) + + + _rotation + 0 + + + + xmlrpc_server + + id + xmlrpc_server + + + _enabled + True + + + addr + localhost + + + port + 1234 + + + _coordinate + (395, 240) + + + _rotation + 0 + + + + gr_throttle + + id + gr_throttle + + + _enabled + True + + + type + float + + + samples_per_second + samp_rate + + + vlen + 1 + + + _coordinate + (386, 93) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + frame_decim + 15 + + + v_scale + 0 + + + t_scale + .001 + + + marker + set_format_line + + + num_inputs + 1 + + + grid_pos + 0, 0, 2, 4 + + + _coordinate + (623, 28) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2 + + + _enabled + True + + + type + float + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 8 + + + ref_level + 50 + + + fft_size + 512 + + + fft_rate + 15 + + + avg_alpha + 0 + + + average + False + + + peak_hold + False + + + grid_pos + 2, 0, 2, 4 + + + _coordinate + (630, 233) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 32000 + + + _coordinate + (11, 160) + + + _rotation + 0 + + + + variable + + id + freq + + + _enabled + True + + + value + 1000 + + + _coordinate + (11, 237) + + + _rotation + 0 + + + + variable + + id + ampl + + + _enabled + True + + + value + 1 + + + _coordinate + (13, 315) + + + _rotation + 0 + + + + gr_sig_source_x + gr_throttle + 0 + 0 + + + gr_throttle + wxgui_scopesink2 + 0 + 0 + + + gr_throttle + wxgui_fftsink2 + 0 + 0 + + \ No newline at end of file -- cgit From 29fed0b4e92d862f43d75f364aa028b6658e76c3 Mon Sep 17 00:00:00 2001 From: Josh Blum 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 (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/audio/.gitignore b/gnuradio-examples/grc/audio/.gitignore deleted file mode 100644 index b336cc7ce..000000000 --- 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 b336cc7ce..000000000 --- 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 b336cc7ce..000000000 --- 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 b336cc7ce..000000000 --- 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 b336cc7ce..000000000 --- a/gnuradio-examples/grc/xmlrpc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in -- cgit From a9ce8f917e94024f74d021079d8b71077dc3f220 Mon Sep 17 00:00:00 2001 From: Matt Ettus 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/pam_timing.grc b/gnuradio-examples/grc/pam_timing.grc index 45fcbc0ec..8722714b8 100644 --- a/gnuradio-examples/grc/pam_timing.grc +++ b/gnuradio-examples/grc/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 17:50:59 2009 + Tue Oct 6 18:00:19 2009 options @@ -463,45 +463,6 @@ 0 - - gr_pfb_clock_sync_ccf - - id - gr_pfb_clock_sync_ccf_0 - - - _enabled - True - - - sps - spb - - - gain - gain - - - taps - rrctaps - - - filter_size - nfilts - - - init_phase - 14 - - - _coordinate - (341, 777) - - - _rotation - 0 - - gr_fractional_interpolator_xx @@ -788,7 +749,164 @@ _coordinate - (724, 796) + (798, 638) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0_0 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,1 + + + _coordinate + (792, 777) + + + _rotation + 0 + + + + gr_pfb_clock_sync_ccf + + id + gr_pfb_clock_sync_ccf_0 + + + _enabled + True + + + sps + spb + + + gain + gain + + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 + + + _coordinate + (341, 777) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0_0_0_0 + + + _enabled + True + + + type + float + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,2 + + + _coordinate + (797, 915) _rotation @@ -873,4 +991,16 @@ 0 0 + + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0_0 + 3 + 0 + + + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0_0_0 + 2 + 0 + -- cgit From 45286cd769e42c325b7c65a2f0a96757e2e97b97 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 6 Oct 2009 19:31:45 -0700 Subject: Adding accessor functions for both alpha and beta. --- gnuradio-examples/grc/demod/pam_timing.grc | 373 ++++++++++++++++++++--------- 1 file changed, 255 insertions(+), 118 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 8722714b8..4152d79a9 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 18:00:19 2009 + Tue Oct 6 19:23:45 2009 options @@ -367,29 +367,6 @@ 0 - - variable - - id - rrctaps - - - _enabled - True - - - value - firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts) - - - _coordinate - (180, 935) - - - _rotation - 0 - - gr_throttle @@ -463,37 +440,6 @@ 0 - - gr_fractional_interpolator_xx - - id - gr_fractional_interpolator_xx_0 - - - _enabled - True - - - type - complex - - - phase_shift - 0.5 - - - interp_ratio - 1 - - - _coordinate - (349, 662) - - - _rotation - 0 - - variable @@ -577,42 +523,53 @@ - variable_slider + gr_add_xx id - gain + gr_add_xx_0 _enabled True - label - Gain + type + float - value - 0 + num_inputs + 2 - min + vlen + 1 + + + _coordinate + (482, 130) + + + _rotation 0 + + + notebook - max - 1 + id + notebook_0 - num_steps - 1000 + _enabled + True style - wx.SL_HORIZONTAL + wx.NB_TOP - converver - float_converter + labels + ['error', 'phase', 'freq'] grid_pos @@ -624,7 +581,7 @@ _coordinate - (757, -1) + (851, 531) _rotation @@ -632,10 +589,56 @@ - gr_add_xx + variable id - gr_add_xx_0 + rrctaps + + + _enabled + True + + + value + firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts) + + + _coordinate + (110, 830) + + + _rotation + 0 + + + + variable + + id + initphase + + + _enabled + True + + + value + 0.5 + + + _coordinate + (110, 913) + + + _rotation + 0 + + + + gr_fractional_interpolator_xx + + id + gr_fractional_interpolator_xx_0 _enabled @@ -643,19 +646,19 @@ type - float + complex - num_inputs - 2 + phase_shift + initphase - vlen - 1 + interp_ratio + interpratio _coordinate - (482, 130) + (349, 662) _rotation @@ -663,22 +666,42 @@ - notebook + variable_slider id - notebook_0 + interpratio _enabled True + + label + + + + value + 1 + + + min + 0 + + + max + 2 + + + num_steps + 1000 + style - wx.NB_TOP + wx.SL_HORIZONTAL - labels - ['error', 'phase', 'freq'] + converver + float_converter grid_pos @@ -690,7 +713,7 @@ _coordinate - (851, 531) + (232, 921) _rotation @@ -713,7 +736,7 @@ title - Scope Plot + Error samp_rate @@ -721,7 +744,7 @@ v_scale - 0 + .5 t_scale @@ -780,7 +803,7 @@ v_scale - 0 + 9 t_scale @@ -816,38 +839,58 @@ - gr_pfb_clock_sync_ccf + wxgui_scopesink2 id - gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0_0_0 _enabled True - sps - spb + type + float - gain - gain + title + Scope Plot - taps - rrctaps + samp_rate + samp_rate - filter_size - nfilts + v_scale + 1.25 - init_phase - 14 + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,2 _coordinate - (341, 777) + (797, 915) _rotation @@ -855,58 +898,152 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_0_0 + alpha _enabled True - type - float + label + Alpha - title - Scope Plot + value + 0 - samp_rate - samp_rate + min + 0 - v_scale - 0 + max + 1 - t_scale + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (757, -1) + + + _rotation 0 + + + variable_slider - ac_couple - False + id + beta - xy_mode - False + _enabled + True - num_inputs + label + Beta + + + value + 0 + + + min + 0 + + + max 1 + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + grid_pos notebook - notebook_0,2 + _coordinate - (797, 915) + (871, 0) + + + _rotation + 0 + + + + gr_pfb_clock_sync_ccf + + id + gr_pfb_clock_sync_ccf_0 + + + _enabled + True + + + sps + spb + + + alpha + alpha + + + beta + beta + + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 + + + _coordinate + (346, 773) _rotation -- cgit From da451d5d8b85cde797658415f0186d248f2f53dd Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 6 Oct 2009 19:44:58 -0700 Subject: Fixing previous checkin --- gnuradio-examples/grc/demod/pam_timing.grc | 112 ++++++++++++++--------------- 1 file changed, 56 insertions(+), 56 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 4152d79a9..fae16841d 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 19:23:45 2009 + Tue Oct 6 19:43:52 2009 options @@ -665,61 +665,6 @@ 0 - - variable_slider - - id - interpratio - - - _enabled - True - - - label - - - - value - 1 - - - min - 0 - - - max - 2 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (232, 921) - - - _rotation - 0 - - wxgui_scopesink2 @@ -1050,6 +995,61 @@ 0 + + variable_slider + + id + interpratio + + + _enabled + True + + + label + + + + value + 1 + + + min + 0 + + + max + 2 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (232, 921) + + + _rotation + 0 + + random_source_x_0 gr_uchar_to_float_0 -- cgit From 1f8e1248f70c4165e4a88b1bac9e9dec903cd668 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index fae16841d..ab34677fa 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 19:43:52 2009 + Tue Oct 6 22:05:15 2009 options @@ -588,29 +588,6 @@ 0 - - variable - - id - rrctaps - - - _enabled - True - - - value - firdes.root_raised_cosine(nfilts,1.0,0.25/nfilts, .35, 11*spb*nfilts) - - - _coordinate - (110, 830) - - - _rotation - 0 - - variable @@ -898,22 +875,65 @@ - variable_slider + gr_pfb_clock_sync_ccf id + gr_pfb_clock_sync_ccf_0 + + + _enabled + True + + + sps + spb + + + alpha + alpha + + + beta beta + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 + + + _coordinate + (346, 773) + + + _rotation + 0 + + + + variable_slider + + id + interpratio + _enabled True label - Beta + value - 0 + 1 min @@ -921,7 +941,7 @@ max - 1 + 2 num_steps @@ -945,50 +965,30 @@ _coordinate - (871, 0) + (232, 921) _rotation - 0 + 180 - gr_pfb_clock_sync_ccf + variable id - gr_pfb_clock_sync_ccf_0 + rrctaps _enabled True - sps - spb - - - alpha - alpha - - - beta - beta - - - taps - rrctaps - - - filter_size - nfilts - - - init_phase - 14 + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) _coordinate - (346, 773) + (110, 830) _rotation @@ -999,7 +999,7 @@ variable_slider id - interpratio + beta _enabled @@ -1007,19 +1007,19 @@ label - + Beta value - 1 + 0 min - 0 + 0.0 max - 2 + 0.1 num_steps @@ -1043,7 +1043,7 @@ _coordinate - (232, 921) + (871, 0) _rotation -- cgit From 3b7c8a448cbd53b394cc405357ad0831096066f5 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 7 Oct 2009 11:02:44 -0700 Subject: Clipping the rate of the clock recovery helps track large changes. --- gnuradio-examples/grc/demod/pam_timing.grc | 142 ++++++++++++++--------------- 1 file changed, 71 insertions(+), 71 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index ab34677fa..21fb63abe 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Tue Oct 6 22:05:15 2009 + Wed Oct 7 11:00:26 2009 options @@ -820,54 +820,42 @@ - variable_slider + gr_pfb_clock_sync_ccf id - alpha + gr_pfb_clock_sync_ccf_0 _enabled True - label - Alpha - - - value - 0 - - - min - 0 - - - max - 1 + sps + spb - num_steps - 1000 + alpha + alpha - style - wx.SL_HORIZONTAL + beta + beta - converver - float_converter + taps + rrctaps - grid_pos - + filter_size + nfilts - notebook - + init_phase + 14 _coordinate - (757, -1) + (346, 773) _rotation @@ -875,42 +863,22 @@ - gr_pfb_clock_sync_ccf + variable id - gr_pfb_clock_sync_ccf_0 + rrctaps _enabled True - sps - spb - - - alpha - alpha - - - beta - beta - - - taps - rrctaps - - - filter_size - nfilts - - - init_phase - 14 + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) _coordinate - (346, 773) + (110, 830) _rotation @@ -921,7 +889,7 @@ variable_slider id - interpratio + beta _enabled @@ -929,19 +897,19 @@ label - + Beta value - 1 + 10e-3 min - 0 + 0.0 max - 2 + 0.1 num_steps @@ -965,30 +933,62 @@ _coordinate - (232, 921) + (871, 0) _rotation - 180 + 0 - variable + variable_slider id - rrctaps + alpha _enabled True + + label + Alpha + value - firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) + 2 + + + min + 0 + + + max + 10 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (110, 830) + (757, -1) _rotation @@ -999,7 +999,7 @@ variable_slider id - beta + interpratio _enabled @@ -1007,19 +1007,19 @@ label - Beta + value - 0 + 1.001 min - 0.0 + 0 max - 0.1 + 2 num_steps @@ -1043,11 +1043,11 @@ _coordinate - (871, 0) + (757, 133) _rotation - 0 + 180 -- cgit From 7b527030c4f2e207f93942a884ad9bac772db5cc Mon Sep 17 00:00:00 2001 From: Tom 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 ++++++++++++++++++----------- 1 file changed, 494 insertions(+), 297 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 21fb63abe..3acca51a1 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Wed Oct 7 11:00:26 2009 + Wed Oct 7 18:31:11 2009 options @@ -57,38 +57,68 @@ - random_source_x + variable id - random_source_x_0 + spb _enabled True - type - byte + value + 4 - min + _coordinate + (34, 915) + + + _rotation 0 + + + variable - max - 2 + id + nfilts - num_samps - 1000 + _enabled + True - repeat + value + 32 + + + _coordinate + (31, 828) + + + _rotation + 0 + + + + variable + + id + initphase + + + _enabled True + + value + 0.5 + _coordinate - (13, 80) + (110, 913) _rotation @@ -96,26 +126,45 @@ - const_source_x + variable id - const_source_x_0 + rrctaps _enabled True - type - float + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) - const - -0.5 + _coordinate + (110, 830) + + + _rotation + 0 + + + + variable + + id + samp_rate + + + _enabled + True + + + value + 320000 _coordinate - (179, 160) + (128, 9) _rotation @@ -170,7 +219,7 @@ _coordinate - (600, -1) + (440, 3) _rotation @@ -178,34 +227,45 @@ - gr_noise_source_x + gr_uchar_to_float id - gr_noise_source_x_0 + gr_uchar_to_float_0 _enabled True - type - float + _coordinate + (217, 108) - noise_type - gr.GR_GAUSSIAN + _rotation + 0 + + + const_source_x - amp - noise_amp + id + const_source_x_0 - seed - 42 + _enabled + True + + + type + float + + + const + -0.5 _coordinate - (45, 497) + (213, 197) _rotation @@ -213,10 +273,10 @@ - root_raised_cosine_filter + gr_add_xx id - root_raised_cosine_filter_0 + gr_add_xx_0 _enabled @@ -224,70 +284,78 @@ type - interp_fir_filter_fff + float - decim + num_inputs + 2 + + + vlen 1 - interp - spb + _coordinate + (440, 167) - gain - 2*spb + _rotation + 0 + + + wxgui_scopesink2 - samp_rate - 1.0 + id + wxgui_scopesink2_0 - sym_rate - 1./spb + _enabled + True - alpha - 0.35 + type + complex - ntaps - 11*spb + title + Scope Plot - _coordinate - (50, 295) + samp_rate + samp_rate - _rotation + v_scale 0 - - - gr_add_xx - id - gr_add_xx_0_0 + t_scale + 0 - _enabled - True + ac_couple + False - type - float + xy_mode + False num_inputs - 2 + 1 - vlen - 1 + grid_pos + + + + notebook + _coordinate - (375, 390) + (1155, 281) _rotation @@ -295,10 +363,10 @@ - const_source_x + gr_throttle id - const_source_x_1 + gr_throttle_0 _enabled @@ -306,15 +374,19 @@ type - float + complex - const - 0 + samples_per_second + samp_rate + + + vlen + 1 _coordinate - (36, 723) + (1128, 428) _rotation @@ -322,22 +394,30 @@ - variable + gr_fractional_interpolator_xx id - spb + gr_fractional_interpolator_xx_0 _enabled True - value - 4 + type + complex + + + phase_shift + initphase + + + interp_ratio + interpratio _coordinate - (34, 915) + (116, 530) _rotation @@ -345,22 +425,34 @@ - variable + gr_noise_source_x id - nfilts + gr_noise_source_x_0 _enabled True - value - 32 + type + complex + + + noise_type + gr.GR_GAUSSIAN + + + amp + noise_amp + + + seed + 42 _coordinate - (31, 828) + (148, 595) _rotation @@ -368,10 +460,10 @@ - gr_throttle + gr_add_xx id - gr_throttle_0 + gr_add_xx_0_0 _enabled @@ -382,8 +474,8 @@ complex - samples_per_second - samp_rate + num_inputs + 2 vlen @@ -391,7 +483,7 @@ _coordinate - (757, 418) + (393, 561) _rotation @@ -399,18 +491,42 @@ - gr_uchar_to_float + gr_pfb_clock_sync_ccf id - gr_uchar_to_float_0 + gr_pfb_clock_sync_ccf_0 _enabled True + + sps + spb + + + alpha + alpha + + + beta + beta + + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 14 + _coordinate - (261, 107) + (511, 527) _rotation @@ -418,22 +534,58 @@ - gr_float_to_complex + wxgui_scopesink2 id - gr_float_to_complex_0 + wxgui_scopesink2_0_0 _enabled True - vlen + type + float + + + title + Error + + + samp_rate + samp_rate + + + v_scale + .5 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs 1 + + grid_pos + + + + notebook + notebook_0,0 + _coordinate - (380, 553) + (1068, 553) _rotation @@ -441,22 +593,34 @@ - variable + notebook id - samp_rate + notebook_0 _enabled True - value - 320000 + style + wx.NB_TOP + + + labels + ['error', 'phase', 'freq'] + + + grid_pos + + + + notebook + _coordinate - (128, 9) + (964, 466) _rotation @@ -467,7 +631,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0 + wxgui_scopesink2_0_0_0_0 _enabled @@ -475,7 +639,7 @@ type - complex + float title @@ -487,7 +651,7 @@ v_scale - 0 + 1.25 t_scale @@ -511,11 +675,11 @@ notebook - + notebook_0,2 _coordinate - (789, 258) + (1068, 673) _rotation @@ -523,10 +687,10 @@ - gr_add_xx + wxgui_scopesink2 id - gr_add_xx_0 + wxgui_scopesink2_0_0_0 _enabled @@ -537,39 +701,32 @@ float - num_inputs - 2 + title + Scope Plot - vlen - 1 + samp_rate + samp_rate - _coordinate - (482, 130) + v_scale + 9 - _rotation + t_scale 0 - - - notebook - id - notebook_0 - - - _enabled - True + ac_couple + False - style - wx.NB_TOP + xy_mode + False - labels - ['error', 'phase', 'freq'] + num_inputs + 1 grid_pos @@ -577,11 +734,11 @@ notebook - + notebook_0,1 _coordinate - (851, 531) + (1070, 790) _rotation @@ -589,22 +746,38 @@ - variable + random_source_x id - initphase + random_source_x_0 _enabled True - value - 0.5 + type + byte + + + min + 0 + + + max + 2 + + + num_samps + 10000 + + + repeat + True _coordinate - (110, 913) + (13, 80) _rotation @@ -612,10 +785,10 @@ - gr_fractional_interpolator_xx + root_raised_cosine_filter id - gr_fractional_interpolator_xx_0 + root_raised_cosine_filter_0 _enabled @@ -623,19 +796,39 @@ type - complex + interp_fir_filter_fff - phase_shift - initphase + decim + 1 - interp_ratio - interpratio + interp + spb + + + gain + 2*spb + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb _coordinate - (349, 662) + (557, 140) _rotation @@ -643,10 +836,10 @@ - wxgui_scopesink2 + root_raised_cosine_filter id - wxgui_scopesink2_0_0 + root_raised_cosine_filter_0_0 _enabled @@ -654,47 +847,39 @@ type - float - - - title - Error - - - samp_rate - samp_rate + interp_fir_filter_fff - v_scale - .5 + decim + 1 - t_scale - 0 + interp + spb - ac_couple - False + gain + 2*spb - xy_mode - False + samp_rate + 1.0 - num_inputs - 1 + sym_rate + 1./spb - grid_pos - + alpha + 0.35 - notebook - notebook_0,0 + ntaps + 11*spb _coordinate - (798, 638) + (559, 303) _rotation @@ -702,58 +887,49 @@ - wxgui_scopesink2 + gr_float_to_complex id - wxgui_scopesink2_0_0_0 + gr_float_to_complex_0 _enabled True - type - float - - - title - Scope Plot - - - samp_rate - samp_rate + vlen + 1 - v_scale - 9 + _coordinate + (897, 272) - t_scale + _rotation 0 + + + gr_null_source - ac_couple - False + id + gr_null_source_1 - xy_mode + _enabled False - num_inputs - 1 - - - grid_pos - + type + float - notebook - notebook_0,1 + vlen + 1 _coordinate - (792, 777) + (387, 257) _rotation @@ -761,10 +937,10 @@ - wxgui_scopesink2 + gr_add_xx id - wxgui_scopesink2_0_0_0_0 + gr_add_xx_0_1 _enabled @@ -775,44 +951,43 @@ float - title - Scope Plot + num_inputs + 2 - samp_rate - samp_rate + vlen + 1 - v_scale - 1.25 + _coordinate + (430, 330) - t_scale + _rotation 0 + + + const_source_x - ac_couple - False - - - xy_mode - False + id + const_source_x_0_0 - num_inputs - 1 + _enabled + True - grid_pos - + type + float - notebook - notebook_0,2 + const + -0.5 _coordinate - (797, 915) + (200, 360) _rotation @@ -820,65 +995,57 @@ - gr_pfb_clock_sync_ccf + gr_uchar_to_float id - gr_pfb_clock_sync_ccf_0 + gr_uchar_to_float_0_0 _enabled True - sps - spb - - - alpha - alpha - - - beta - beta + _coordinate + (216, 273) - taps - rrctaps + _rotation + 0 + + + random_source_x - filter_size - nfilts + id + random_source_x_0_0 - init_phase - 14 + _enabled + True - _coordinate - (346, 773) + type + byte - _rotation + min 0 - - - variable - id - rrctaps + max + 2 - _enabled - True + num_samps + 10000 - value - firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) + repeat + True _coordinate - (110, 830) + (15, 245) _rotation @@ -889,7 +1056,7 @@ variable_slider id - beta + alpha _enabled @@ -897,19 +1064,19 @@ label - Beta + Alpha value - 10e-3 + 2 min - 0.0 + 0 max - 0.1 + 10 num_steps @@ -933,7 +1100,7 @@ _coordinate - (871, 0) + (552, 4) _rotation @@ -944,7 +1111,7 @@ variable_slider id - alpha + interpratio _enabled @@ -952,19 +1119,19 @@ label - Alpha + value - 2 + 1.001 min - 0 + 0.9 max - 10 + 1.1 num_steps @@ -988,18 +1155,18 @@ _coordinate - (757, -1) + (802, 3) _rotation - 0 + 180 variable_slider id - interpratio + beta _enabled @@ -1007,19 +1174,19 @@ label - + Beta value - 1.001 + 20e-3 min - 0 + 0.0 max - 2 + 0.1 num_steps @@ -1043,7 +1210,7 @@ _coordinate - (757, 133) + (668, 5) _rotation @@ -1051,93 +1218,123 @@ - random_source_x_0 - gr_uchar_to_float_0 + gr_throttle_0 + wxgui_scopesink2_0 0 0 - gr_uchar_to_float_0 - gr_add_xx_0 + gr_noise_source_x_0 + gr_add_xx_0_0 0 - 0 + 1 - const_source_x_0 - gr_add_xx_0 + gr_pfb_clock_sync_ccf_0 + gr_throttle_0 0 - 1 + 0 - gr_add_xx_0 - root_raised_cosine_filter_0 + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0 + 1 + 0 + + + gr_float_to_complex_0 + gr_fractional_interpolator_xx_0 0 0 - gr_throttle_0 - wxgui_scopesink2_0 + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0_0 + 3 + 0 + + + gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0_0_0_0 + 2 + 0 + + + random_source_x_0 + gr_uchar_to_float_0 0 0 - root_raised_cosine_filter_0 - gr_add_xx_0_0 + gr_uchar_to_float_0 + gr_add_xx_0 0 0 - gr_noise_source_x_0 - gr_add_xx_0_0 + const_source_x_0 + gr_add_xx_0 0 1 - gr_add_xx_0_0 - gr_float_to_complex_0 + gr_add_xx_0 + root_raised_cosine_filter_0 0 0 - const_source_x_1 - gr_float_to_complex_0 + gr_uchar_to_float_0_0 + gr_add_xx_0_1 + 0 + 0 + + + const_source_x_0_0 + gr_add_xx_0_1 0 1 - gr_pfb_clock_sync_ccf_0 - gr_throttle_0 + gr_add_xx_0_1 + root_raised_cosine_filter_0_0 0 0 - gr_pfb_clock_sync_ccf_0 - wxgui_scopesink2_0_0 - 1 + random_source_x_0_0 + gr_uchar_to_float_0_0 + 0 0 - gr_float_to_complex_0 - gr_fractional_interpolator_xx_0 + gr_fractional_interpolator_xx_0 + gr_add_xx_0_0 0 0 - gr_fractional_interpolator_xx_0 + gr_add_xx_0_0 gr_pfb_clock_sync_ccf_0 0 0 - gr_pfb_clock_sync_ccf_0 - wxgui_scopesink2_0_0_0 - 3 + gr_null_source_1 + root_raised_cosine_filter_0_0 + 0 0 - gr_pfb_clock_sync_ccf_0 - wxgui_scopesink2_0_0_0_0 - 2 + root_raised_cosine_filter_0 + gr_float_to_complex_0 + 0 + 1 + + + root_raised_cosine_filter_0_0 + gr_float_to_complex_0 + 0 0 -- cgit From a8d8b8355478ac127efb775d4f6e900f1c830090 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 3acca51a1..a0dc6642a 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Wed Oct 7 18:31:11 2009 + Wed Oct 7 20:47:05 2009 options @@ -60,7 +60,7 @@ variable id - spb + samp_rate _enabled @@ -68,11 +68,11 @@ value - 4 + 320000 _coordinate - (34, 915) + (128, 9) _rotation @@ -80,22 +80,18 @@ - variable + gr_uchar_to_float id - nfilts + gr_uchar_to_float_0 _enabled True - - value - 32 - _coordinate - (31, 828) + (217, 108) _rotation @@ -103,22 +99,26 @@ - variable + const_source_x id - initphase + const_source_x_0 _enabled True - value - 0.5 + type + float + + + const + -0.5 _coordinate - (110, 913) + (213, 197) _rotation @@ -126,45 +126,30 @@ - variable + gr_add_xx id - rrctaps + gr_add_xx_0 _enabled True - value - firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) - - - _coordinate - (110, 830) - - - _rotation - 0 - - - - variable - - id - samp_rate + type + float - _enabled - True + num_inputs + 2 - value - 320000 + vlen + 1 _coordinate - (128, 9) + (440, 167) _rotation @@ -172,22 +157,18 @@ - variable_slider + random_source_x id - noise_amp + random_source_x_0 _enabled True - label - noise_amp - - - value - 0 + type + byte min @@ -195,50 +176,19 @@ max - 1.0 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (440, 3) - - - _rotation - 0 + 2 - - - gr_uchar_to_float - id - gr_uchar_to_float_0 + num_samps + 10000 - _enabled + repeat True _coordinate - (217, 108) + (13, 80) _rotation @@ -246,26 +196,26 @@ - const_source_x + gr_null_source id - const_source_x_0 + gr_null_source_1 _enabled - True + False type float - const - -0.5 + vlen + 1 _coordinate - (213, 197) + (387, 257) _rotation @@ -276,7 +226,7 @@ gr_add_xx id - gr_add_xx_0 + gr_add_xx_0_1 _enabled @@ -296,7 +246,7 @@ _coordinate - (440, 167) + (430, 330) _rotation @@ -304,10 +254,10 @@ - wxgui_scopesink2 + const_source_x id - wxgui_scopesink2_0 + const_source_x_0_0 _enabled @@ -315,47 +265,34 @@ type - complex - - - title - Scope Plot + float - samp_rate - samp_rate + const + -0.5 - v_scale - 0 + _coordinate + (200, 360) - t_scale + _rotation 0 + + + gr_uchar_to_float - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - + id + gr_uchar_to_float_0_0 - notebook - + _enabled + True _coordinate - (1155, 281) + (216, 273) _rotation @@ -363,10 +300,10 @@ - gr_throttle + random_source_x id - gr_throttle_0 + random_source_x_0_0 _enabled @@ -374,19 +311,27 @@ type - complex + byte - samples_per_second - samp_rate + min + 0 - vlen - 1 + max + 2 + + + num_samps + 10000 + + + repeat + True _coordinate - (1128, 428) + (15, 245) _rotation @@ -394,30 +339,22 @@ - gr_fractional_interpolator_xx + variable id - gr_fractional_interpolator_xx_0 + rrctaps _enabled True - type - complex - - - phase_shift - initphase - - - interp_ratio - interpratio + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) _coordinate - (116, 530) + (513, 679) _rotation @@ -425,10 +362,10 @@ - gr_noise_source_x + root_raised_cosine_filter id - gr_noise_source_x_0 + root_raised_cosine_filter_0_0 _enabled @@ -436,54 +373,39 @@ type - complex - - - noise_type - gr.GR_GAUSSIAN - - - amp - noise_amp - - - seed - 42 + interp_fir_filter_fff - _coordinate - (148, 595) + decim + 1 - _rotation - 0 + interp + spb - - - gr_add_xx - id - gr_add_xx_0_0 + gain + 2*spb - _enabled - True + samp_rate + 1.0 - type - complex + sym_rate + 1./spb - num_inputs - 2 + alpha + 0.35 - vlen - 1 + ntaps + 11*spb _coordinate - (393, 561) + (559, 303) _rotation @@ -491,42 +413,477 @@ - gr_pfb_clock_sync_ccf + root_raised_cosine_filter id - gr_pfb_clock_sync_ccf_0 + root_raised_cosine_filter_0 _enabled True - sps - spb + type + interp_fir_filter_fff - alpha + decim + 1 + + + interp + spb + + + gain + 2*spb + + + samp_rate + 1.0 + + + sym_rate + 1./spb + + + alpha + 0.35 + + + ntaps + 11*spb + + + _coordinate + (557, 140) + + + _rotation + 0 + + + + gr_float_to_complex + + id + gr_float_to_complex_0 + + + _enabled + True + + + vlen + 1 + + + _coordinate + (897, 272) + + + _rotation + 0 + + + + variable_slider + + id + noise_amp + + + _enabled + True + + + label + Channel Noise + + + value + 0 + + + min + 0 + + + max + 1.0 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (168, 684) + + + _rotation + 0 + + + + variable + + id + nfilts + + + _enabled + True + + + value + 32 + + + _coordinate + (435, 686) + + + _rotation + 0 + + + + variable_slider + + id + beta + + + _enabled + True + + + label + Timing Beta + + + value + 20e-3 + + + min + 0.0 + + + max + 0.1 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (668, 5) + + + _rotation + 180 + + + + variable_slider + + id alpha - beta - beta + _enabled + True + + + label + Timing Alpha + + + value + 2 + + + min + 0 + + + max + 10 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (552, 4) + + + _rotation + 0 + + + + wxgui_scopesink2 + + id + wxgui_scopesink2_0 + + + _enabled + True + + + type + complex + + + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 0 + + + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + + + + _coordinate + (1133, 325) + + + _rotation + 0 + + + + variable_slider + + id + freq_offset + + + _enabled + True + + + label + Frequency Offset + + + value + 0 + + + min + -0.5 + + + max + 0.5 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + + + _coordinate + (293, 684) + + + _rotation + 0 + + + + variable + + id + spb + + + _enabled + True + + + value + 4 + + + _coordinate + (436, 752) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False - taps - rrctaps + avg_alpha + 0 - filter_size - nfilts + grid_pos + - init_phase - 14 + notebook + notebook_0,3 _coordinate - (511, 527) + (517, 767) _rotation @@ -534,46 +891,42 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0 + interpratio _enabled True - type - float - - - title - Error + label + Timing Offset - samp_rate - samp_rate + value + 1.00 - v_scale - .5 + min + 0.9 - t_scale - 0 + max + 1.1 - ac_couple - False + num_steps + 1000 - xy_mode - False + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos @@ -581,34 +934,54 @@ notebook - notebook_0,0 + _coordinate - (1068, 553) + (40, 684) _rotation - 0 + 180 - notebook + variable_slider id - notebook_0 + beta_0 _enabled True + + label + Freq Beta + + + value + 0.001 + + + min + 0.0 + + + max + 0.01 + + + num_steps + 1000 + style - wx.NB_TOP + wx.SL_HORIZONTAL - labels - ['error', 'phase', 'freq'] + converver + float_converter grid_pos @@ -620,54 +993,50 @@ _coordinate - (964, 466) + (919, 7) _rotation - 0 + 180 - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_0_0 + alpha_0 _enabled True - type - float - - - title - Scope Plot + label + Freq Alpha - samp_rate - samp_rate + value + 0.01 - v_scale - 1.25 + min + 0 - t_scale - 0 + max + 0.1 - ac_couple - False + num_steps + 1000 - xy_mode - False + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos @@ -675,11 +1044,11 @@ notebook - notebook_0,2 + _coordinate - (1068, 673) + (792, 6) _rotation @@ -738,7 +1107,7 @@ _coordinate - (1070, 790) + (1115, 961) _rotation @@ -746,10 +1115,10 @@ - random_source_x + wxgui_scopesink2 id - random_source_x_0 + wxgui_scopesink2_0_0_0_0 _enabled @@ -757,78 +1126,47 @@ type - byte - - - min - 0 - - - max - 2 + float - num_samps - 10000 + title + Scope Plot - repeat - True + samp_rate + samp_rate - _coordinate - (13, 80) + v_scale + 1.25 - _rotation + t_scale 0 - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - _enabled - True + ac_couple + False - type - interp_fir_filter_fff + xy_mode + False - decim + num_inputs 1 - interp - spb - - - gain - 2*spb - - - samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 + grid_pos + - ntaps - 11*spb + notebook + notebook_0,2 _coordinate - (557, 140) + (1113, 844) _rotation @@ -836,10 +1174,10 @@ - root_raised_cosine_filter + wxgui_scopesink2 id - root_raised_cosine_filter_0_0 + wxgui_scopesink2_0_0 _enabled @@ -847,89 +1185,47 @@ type - interp_fir_filter_fff - - - decim - 1 - - - interp - spb + float - gain - 2*spb + title + Error samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 - - - ntaps - 11*spb - - - _coordinate - (559, 303) - - - _rotation - 0 - - - - gr_float_to_complex - - id - gr_float_to_complex_0 - - - _enabled - True - - - vlen - 1 + samp_rate - _coordinate - (897, 272) + v_scale + .5 - _rotation + t_scale 0 - - - gr_null_source - id - gr_null_source_1 + ac_couple + False - _enabled + xy_mode False - type - float + num_inputs + 1 + + + grid_pos + - vlen - 1 + notebook + notebook_0,0 _coordinate - (387, 257) + (1113, 724) _rotation @@ -937,10 +1233,10 @@ - gr_add_xx + wxgui_scopesink2 id - gr_add_xx_0_1 + wxgui_scopesink2_0_0_1 _enabled @@ -948,46 +1244,47 @@ type - float + complex - num_inputs - 2 + title + Error - vlen - 1 + samp_rate + samp_rate - _coordinate - (430, 330) + v_scale + .5 - _rotation + t_scale 0 - - - const_source_x - id - const_source_x_0_0 + ac_couple + False - _enabled - True + xy_mode + False - type - float + num_inputs + 1 - const - -0.5 + grid_pos + + + + notebook + notebook_0,4 _coordinate - (200, 360) + (1111, 518) _rotation @@ -995,18 +1292,34 @@ - gr_uchar_to_float + notebook id - gr_uchar_to_float_0_0 + notebook_0 _enabled True + + style + wx.NB_TOP + + + labels + ['error', 'phase', 'freq', 'FFT', 'Costas error'] + + + grid_pos + + + + notebook + + _coordinate - (216, 273) + (729, 769) _rotation @@ -1014,38 +1327,38 @@ - random_source_x + gr_channel_model id - random_source_x_0_0 + gr_channel_model_0 _enabled True - type - byte + noise_voltage + noise_amp - min - 0 + freq_offset + freq_offset - max - 2 + epsilon + interpratio - num_samps - 10000 + taps + 1.0 + 1.0j - repeat - True + seed + 42 _coordinate - (15, 245) + (65, 542) _rotation @@ -1053,54 +1366,42 @@ - variable_slider + gr_pfb_clock_sync_ccf id - alpha + gr_pfb_clock_sync_ccf_0 _enabled True - label - Alpha - - - value - 2 - - - min - 0 - - - max - 10 + sps + spb - num_steps - 1000 + alpha + alpha - style - wx.SL_HORIZONTAL + beta + beta - converver - float_converter + taps + rrctaps - grid_pos - + filter_size + nfilts - notebook - + init_phase + 14 _coordinate - (552, 4) + (512, 527) _rotation @@ -1108,113 +1409,73 @@ - variable_slider + gr_throttle id - interpratio + gr_throttle_0 _enabled True - label - - - - value - 1.001 - - - min - 0.9 - - - max - 1.1 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter + type + complex - grid_pos - + samples_per_second + samp_rate - notebook - + vlen + 1 _coordinate - (802, 3) + (1129, 462) _rotation - 180 + 0 - variable_slider + gr_costas_loop_cc id - beta + gr_costas_loop_cc_0 _enabled True - label - Beta - - - value - 20e-3 - - - min - 0.0 - - - max - 0.1 - - - num_steps - 1000 + alpha + alpha_0 - style - wx.SL_HORIZONTAL + beta + beta_0 - converver - float_converter + max_freq + 5 - grid_pos - + min_freq + -5 - notebook - + order + 4 _coordinate - (668, 5) + (916, 473) _rotation - 180 + 0 @@ -1223,30 +1484,12 @@ 0 0 - - gr_noise_source_x_0 - gr_add_xx_0_0 - 0 - 1 - - - gr_pfb_clock_sync_ccf_0 - gr_throttle_0 - 0 - 0 - gr_pfb_clock_sync_ccf_0 wxgui_scopesink2_0_0 1 0 - - gr_float_to_complex_0 - gr_fractional_interpolator_xx_0 - 0 - 0 - gr_pfb_clock_sync_ccf_0 wxgui_scopesink2_0_0_0 @@ -1308,32 +1551,56 @@ 0 - gr_fractional_interpolator_xx_0 - gr_add_xx_0_0 + gr_null_source_1 + root_raised_cosine_filter_0_0 0 0 - gr_add_xx_0_0 - gr_pfb_clock_sync_ccf_0 + root_raised_cosine_filter_0_0 + gr_float_to_complex_0 + 0 + 1 + + + root_raised_cosine_filter_0 + gr_float_to_complex_0 0 0 - gr_null_source_1 - root_raised_cosine_filter_0_0 + gr_float_to_complex_0 + gr_channel_model_0 0 0 - root_raised_cosine_filter_0 - gr_float_to_complex_0 + gr_channel_model_0 + wxgui_fftsink2_0 0 - 1 + 0 - root_raised_cosine_filter_0_0 - gr_float_to_complex_0 + gr_costas_loop_cc_0 + wxgui_scopesink2_0_0_1 + 1 + 0 + + + gr_channel_model_0 + gr_pfb_clock_sync_ccf_0 + 0 + 0 + + + gr_pfb_clock_sync_ccf_0 + gr_costas_loop_cc_0 + 0 + 0 + + + gr_costas_loop_cc_0 + gr_throttle_0 0 0 -- cgit From 90b8b4cc8c53c963f8b0cf4bbc50277c031c3213 Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 8 Oct 2009 21:40:16 -0700 Subject: Working on allowing fractional samples per symbol. --- gnuradio-examples/grc/demod/pam_timing.grc | 858 ++++++++++++++++------------- 1 file changed, 468 insertions(+), 390 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index a0dc6642a..d51adb1f2 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Wed Oct 7 20:47:05 2009 + Thu Oct 8 21:29:27 2009 options @@ -56,29 +56,6 @@ 0 - - variable - - id - samp_rate - - - _enabled - True - - - value - 320000 - - - _coordinate - (128, 9) - - - _rotation - 0 - - gr_uchar_to_float @@ -338,154 +315,6 @@ 0 - - variable - - id - rrctaps - - - _enabled - True - - - value - firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, 11*spb*nfilts) - - - _coordinate - (513, 679) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0_0 - - - _enabled - True - - - type - interp_fir_filter_fff - - - decim - 1 - - - interp - spb - - - gain - 2*spb - - - samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 - - - ntaps - 11*spb - - - _coordinate - (559, 303) - - - _rotation - 0 - - - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - True - - - type - interp_fir_filter_fff - - - decim - 1 - - - interp - spb - - - gain - 2*spb - - - samp_rate - 1.0 - - - sym_rate - 1./spb - - - alpha - 0.35 - - - ntaps - 11*spb - - - _coordinate - (557, 140) - - - _rotation - 0 - - - - gr_float_to_complex - - id - gr_float_to_complex_0 - - - _enabled - True - - - vlen - 1 - - - _coordinate - (897, 272) - - - _rotation - 0 - - variable_slider @@ -541,34 +370,11 @@ 0 - - variable - - id - nfilts - - - _enabled - True - - - value - 32 - - - _coordinate - (435, 686) - - - _rotation - 0 - - variable_slider id - beta + interpratio _enabled @@ -576,19 +382,19 @@ label - Timing Beta + Timing Offset value - 20e-3 + 1.00 min - 0.0 + 0.9 max - 0.1 + 1.1 num_steps @@ -612,7 +418,7 @@ _coordinate - (668, 5) + (40, 684) _rotation @@ -620,42 +426,46 @@ - variable_slider + wxgui_scopesink2 id - alpha + wxgui_scopesink2_0_0_0 _enabled True - label - Timing Alpha + type + float - value - 2 + title + Scope Plot - min - 0 + samp_rate + samp_rate - max - 10 + v_scale + 9 - num_steps - 1000 + t_scale + 0 - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + False + + + num_inputs + 1 grid_pos @@ -663,11 +473,11 @@ notebook - + notebook_0,1 _coordinate - (552, 4) + (1115, 961) _rotation @@ -678,7 +488,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0 + wxgui_scopesink2_0_0_0_0 _enabled @@ -686,7 +496,7 @@ type - complex + float title @@ -698,7 +508,7 @@ v_scale - 0 + 1.25 t_scale @@ -722,11 +532,11 @@ notebook - + notebook_0,2 _coordinate - (1133, 325) + (1113, 844) _rotation @@ -734,42 +544,81 @@ - variable_slider + wxgui_scopesink2 id - freq_offset + wxgui_scopesink2_0_0 _enabled True - label - Frequency Offset + type + float - value - 0 + title + Error - min - -0.5 + samp_rate + samp_rate - max - 0.5 + v_scale + .5 - num_steps - 1000 + t_scale + 0 + + + ac_couple + False + + + xy_mode + False + + + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,0 + + + _coordinate + (1113, 724) + + + _rotation + 0 + + + + notebook + + id + notebook_0 + + + _enabled + True style - wx.SL_HORIZONTAL + wx.NB_TOP - converver - float_converter + labels + ['error', 'phase', 'freq', 'FFT', 'Costas error'] grid_pos @@ -781,7 +630,7 @@ _coordinate - (293, 684) + (729, 769) _rotation @@ -792,7 +641,7 @@ variable id - spb + samp_rate _enabled @@ -800,11 +649,11 @@ value - 4 + 32000 _coordinate - (436, 752) + (128, 9) _rotation @@ -812,10 +661,10 @@ - wxgui_fftsink2 + gr_throttle id - wxgui_fftsink2_0 + gr_throttle_0 _enabled @@ -826,64 +675,184 @@ complex - title - FFT Plot + samples_per_second + samp_rate - samp_rate - samp_rate + vlen + 1 - baseband_freq + _coordinate + (1129, 462) + + + _rotation 0 + + + gr_costas_loop_cc - y_per_div - 10 + id + gr_costas_loop_cc_0 - y_divs - 10 + _enabled + False - ref_level - 50 + alpha + alpha_0 - ref_scale - 2.0 + beta + beta_0 - fft_size - 1024 + max_freq + 5 - fft_rate - 30 + min_freq + -5 - peak_hold - False + order + 4 - average - False + _coordinate + (299, 453) - avg_alpha + _rotation + 0 + + + + variable_slider + + id + freq_offset + + + _enabled + True + + + label + Frequency Offset + + + value 0 + + min + -0.5 + + + max + 0.5 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + grid_pos notebook - notebook_0,3 + _coordinate - (517, 767) + (293, 684) + + + _rotation + 0 + + + + variable + + id + rrctaps + + + _enabled + True + + + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts)) + + + _coordinate + (513, 679) + + + _rotation + 0 + + + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0_0 + + + _enabled + True + + + type + interp_fir_filter_fff + + + decim + 1 + + + interp + spb_gen + + + gain + 2*spb_gen + + + samp_rate + 1.0 + + + sym_rate + 1./spb_gen + + + alpha + 0.35 + + + ntaps + 11*spb_gen + + + _coordinate + (564, 301) _rotation @@ -894,7 +863,7 @@ variable_slider id - interpratio + alpha _enabled @@ -902,19 +871,19 @@ label - Timing Offset + Timing Alpha value - 1.00 + 0 min - 0.9 + 0 max - 1.1 + 10 num_steps @@ -938,18 +907,18 @@ _coordinate - (40, 684) + (552, 4) _rotation - 180 + 0 variable_slider id - beta_0 + beta _enabled @@ -957,11 +926,11 @@ label - Freq Beta + Timing Beta value - 0.001 + 0 min @@ -969,7 +938,7 @@ max - 0.01 + 0.1 num_steps @@ -993,7 +962,7 @@ _coordinate - (919, 7) + (668, 5) _rotation @@ -1008,7 +977,7 @@ _enabled - True + False label @@ -1056,46 +1025,42 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_0 + beta_0 _enabled - True - - - type - float + False - title - Scope Plot + label + Freq Beta - samp_rate - samp_rate + value + 0.001 - v_scale - 9 + min + 0.0 - t_scale - 0 + max + 0.01 - ac_couple - False + num_steps + 1000 - xy_mode - False + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos @@ -1103,22 +1068,22 @@ notebook - notebook_0,1 + _coordinate - (1115, 961) + (919, 7) _rotation - 0 + 180 wxgui_scopesink2 id - wxgui_scopesink2_0_0_0_0 + wxgui_scopesink2_0 _enabled @@ -1126,7 +1091,7 @@ type - float + complex title @@ -1138,7 +1103,7 @@ v_scale - 1.25 + 0 t_scale @@ -1162,11 +1127,11 @@ notebook - notebook_0,2 + _coordinate - (1113, 844) + (1145, 258) _rotation @@ -1177,7 +1142,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0 + wxgui_scopesink2_0_0_1 _enabled @@ -1185,7 +1150,7 @@ type - float + complex title @@ -1221,11 +1186,11 @@ notebook - notebook_0,0 + notebook_0,4 _coordinate - (1113, 724) + (1107, 533) _rotation @@ -1233,58 +1198,96 @@ - wxgui_scopesink2 + variable id - wxgui_scopesink2_0_0_1 + spb_gen _enabled True - type - complex + value + 4 - title - Error + _coordinate + (119, 841) - samp_rate - samp_rate + _rotation + 0 + + + gr_float_to_complex - v_scale - .5 + id + gr_float_to_complex_0 - t_scale + _enabled + True + + + vlen + 1 + + + _coordinate + (904, 184) + + + _rotation 0 + + + root_raised_cosine_filter - ac_couple - False + id + root_raised_cosine_filter_0 - xy_mode - False + _enabled + True - num_inputs + type + interp_fir_filter_fff + + + decim 1 - grid_pos - + interp + spb_gen - notebook - notebook_0,4 + gain + 2*spb_gen + + + samp_rate + 1.0 + + + sym_rate + 1./spb_gen + + + alpha + 0.35 + + + ntaps + 11*spb_gen _coordinate - (1111, 518) + (557, 140) _rotation @@ -1292,34 +1295,22 @@ - notebook + variable id - notebook_0 + spb _enabled True - style - wx.NB_TOP - - - labels - ['error', 'phase', 'freq', 'FFT', 'Costas error'] - - - grid_pos - - - - notebook - + value + 4.01 _coordinate - (729, 769) + (32, 842) _rotation @@ -1334,7 +1325,7 @@ _enabled - True + False noise_voltage @@ -1350,7 +1341,7 @@ taps - 1.0 + 1.0j + 1.0 seed @@ -1358,7 +1349,38 @@ _coordinate - (65, 542) + (59, 543) + + + _rotation + 0 + + + + blks2_pfb_arb_resampler_ccf + + id + blks2_pfb_arb_resampler_ccf_0 + + + _enabled + True + + + rate + float(spb)/float(spb_gen) + + + taps + firdes.low_pass(320, 320, 0.45, 0.1) + + + size + 320 + + + _coordinate + (874, 374) _rotation @@ -1409,69 +1431,101 @@ - gr_throttle + wxgui_fftsink2 id - gr_throttle_0 + wxgui_fftsink2_0 _enabled - True + False type complex - samples_per_second + title + FFT Plot + + + samp_rate samp_rate - vlen - 1 + baseband_freq + 0 - _coordinate - (1129, 462) + y_per_div + 10 - _rotation + y_divs + 10 + + + ref_level + 50 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha 0 - - - gr_costas_loop_cc - id - gr_costas_loop_cc_0 + grid_pos + - _enabled - True + notebook + notebook_0,3 - alpha - alpha_0 + _coordinate + (517, 767) - beta - beta_0 + _rotation + 0 + + + variable - max_freq - 5 + id + nfilts - min_freq - -5 + _enabled + True - order - 4 + value + 64 _coordinate - (916, 473) + (435, 686) _rotation @@ -1569,14 +1623,20 @@ 0 - gr_float_to_complex_0 - gr_channel_model_0 + gr_channel_model_0 + wxgui_fftsink2_0 0 0 gr_channel_model_0 - wxgui_fftsink2_0 + gr_costas_loop_cc_0 + 0 + 0 + + + gr_costas_loop_cc_0 + gr_pfb_clock_sync_ccf_0 0 0 @@ -1586,6 +1646,12 @@ 1 0 + + gr_pfb_clock_sync_ccf_0 + gr_throttle_0 + 0 + 0 + gr_channel_model_0 gr_pfb_clock_sync_ccf_0 @@ -1593,14 +1659,26 @@ 0 - gr_pfb_clock_sync_ccf_0 - gr_costas_loop_cc_0 + gr_float_to_complex_0 + blks2_pfb_arb_resampler_ccf_0 0 0 - gr_costas_loop_cc_0 - gr_throttle_0 + blks2_pfb_arb_resampler_ccf_0 + gr_channel_model_0 + 0 + 0 + + + blks2_pfb_arb_resampler_ccf_0 + wxgui_scopesink2_0_0_1 + 0 + 0 + + + blks2_pfb_arb_resampler_ccf_0 + gr_pfb_clock_sync_ccf_0 0 0 -- cgit From 8c846fb7946fb58ad9573d05bed0a71f0ba1ae73 Mon Sep 17 00:00:00 2001 From: Tom 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 ++++++++++------------------ 1 file changed, 358 insertions(+), 679 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index d51adb1f2..ba5235fa5 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Thu Oct 8 21:29:27 2009 + Fri Oct 9 14:21:35 2009 options @@ -76,26 +76,18 @@ - const_source_x + gr_uchar_to_float id - const_source_x_0 + gr_uchar_to_float_0_0 _enabled True - - type - float - - - const - -0.5 - _coordinate - (213, 197) + (216, 273) _rotation @@ -103,69 +95,54 @@ - gr_add_xx + variable_slider id - gr_add_xx_0 + noise_amp _enabled True - type - float - - - num_inputs - 2 - - - vlen - 1 - - - _coordinate - (440, 167) + label + Channel Noise - _rotation + value 0 - - - random_source_x - id - random_source_x_0 + min + 0 - _enabled - True + max + 1.0 - type - byte + num_steps + 1000 - min - 0 + style + wx.SL_HORIZONTAL - max - 2 + converver + float_converter - num_samps - 10000 + grid_pos + - repeat - True + notebook + _coordinate - (13, 80) + (168, 684) _rotation @@ -173,26 +150,22 @@ - gr_null_source + variable id - gr_null_source_1 + samp_rate _enabled - False - - - type - float + True - vlen - 1 + value + 32000 _coordinate - (387, 257) + (128, 9) _rotation @@ -200,57 +173,54 @@ - gr_add_xx + variable_slider id - gr_add_xx_0_1 + freq_offset _enabled True - type - float + label + Frequency Offset - num_inputs - 2 + value + 0 - vlen - 1 + min + -0.5 - _coordinate - (430, 330) + max + 0.5 - _rotation - 0 + num_steps + 1000 - - - const_source_x - id - const_source_x_0_0 + style + wx.SL_HORIZONTAL - _enabled - True + converver + float_converter - type - float + grid_pos + - const - -0.5 + notebook + _coordinate - (200, 360) + (293, 684) _rotation @@ -258,18 +228,22 @@ - gr_uchar_to_float + variable id - gr_uchar_to_float_0_0 + rrctaps _enabled True + + value + firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts)) + _coordinate - (216, 273) + (513, 679) _rotation @@ -277,18 +251,22 @@ - random_source_x + variable_slider id - random_source_x_0_0 + alpha _enabled True - type - byte + label + Timing Alpha + + + value + 0 min @@ -296,19 +274,31 @@ max - 2 + 10 - num_samps - 10000 + num_steps + 1000 - repeat - True + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (15, 245) + (552, 4) _rotation @@ -319,7 +309,7 @@ variable_slider id - noise_amp + beta _enabled @@ -327,7 +317,7 @@ label - Channel Noise + Timing Beta value @@ -335,11 +325,11 @@ min - 0 + 0.0 max - 1.0 + 0.1 num_steps @@ -363,7 +353,30 @@ _coordinate - (168, 684) + (668, 5) + + + _rotation + 180 + + + + variable + + id + spb_gen + + + _enabled + True + + + value + 4 + + + _coordinate + (119, 841) _rotation @@ -426,10 +439,10 @@ - wxgui_scopesink2 + random_source_x id - wxgui_scopesink2_0_0_0 + random_source_x_0 _enabled @@ -437,47 +450,27 @@ type - float - - - title - Scope Plot - - - samp_rate - samp_rate - - - v_scale - 9 + byte - t_scale + min 0 - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 + max + pam_amp - grid_pos - + num_samps + 10000 - notebook - notebook_0,1 + repeat + True _coordinate - (1115, 961) + (13, 80) _rotation @@ -485,10 +478,10 @@ - wxgui_scopesink2 + random_source_x id - wxgui_scopesink2_0_0_0_0 + random_source_x_0_0 _enabled @@ -496,47 +489,27 @@ type - float + byte - title - Scope Plot + min + 0 - samp_rate - samp_rate - - - v_scale - 1.25 - - - t_scale - 0 - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 + max + pam_amp - grid_pos - + num_samps + 10000 - notebook - notebook_0,2 + repeat + True _coordinate - (1113, 844) + (15, 245) _rotation @@ -544,10 +517,10 @@ - wxgui_scopesink2 + const_source_x id - wxgui_scopesink2_0_0 + const_source_x_0 _enabled @@ -558,44 +531,12 @@ float - title - Error - - - samp_rate - samp_rate - - - v_scale - .5 - - - t_scale - 0 - - - ac_couple - False - - - xy_mode - False - - - num_inputs - 1 - - - grid_pos - - - - notebook - notebook_0,0 + const + -0.5*(pam_amp-1) _coordinate - (1113, 724) + (213, 197) _rotation @@ -603,57 +544,26 @@ - notebook + const_source_x id - notebook_0 + const_source_x_0_0 _enabled True - style - wx.NB_TOP - - - labels - ['error', 'phase', 'freq', 'FFT', 'Costas error'] - - - grid_pos - - - - notebook - - - - _coordinate - (729, 769) - - - _rotation - 0 - - - - variable - - id - samp_rate - - - _enabled - True + type + float - value - 32000 + const + -0.5*(pam_amp-1) _coordinate - (128, 9) + (200, 360) _rotation @@ -661,10 +571,10 @@ - gr_throttle + wxgui_scopesink2 id - gr_throttle_0 + wxgui_scopesink2_0_0 _enabled @@ -672,58 +582,47 @@ type - complex + float - samples_per_second - samp_rate + title + Error - vlen - 1 + samp_rate + samp_rate - _coordinate - (1129, 462) + v_scale + .5 - _rotation + t_scale 0 - - - gr_costas_loop_cc - - id - gr_costas_loop_cc_0 - - _enabled + ac_couple False - alpha - alpha_0 - - - beta - beta_0 + xy_mode + False - max_freq - 5 + num_inputs + 1 - min_freq - -5 + grid_pos + - order - 4 + notebook + notebook_0,0 _coordinate - (299, 453) + (1110, 651) _rotation @@ -731,77 +630,58 @@ - variable_slider + wxgui_scopesink2 id - freq_offset + wxgui_scopesink2_0_0_0_0 _enabled True - label - Frequency Offset + type + float - value - 0 + title + Scope Plot - min - -0.5 + samp_rate + samp_rate - max - 0.5 + v_scale + 1.25 - num_steps - 1000 + t_scale + 0 - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + False - grid_pos - + num_inputs + 1 - notebook + grid_pos - _coordinate - (293, 684) - - - _rotation - 0 - - - - variable - - id - rrctaps - - - _enabled - True - - - value - firdes.root_raised_cosine(nfilts,1.0,1.0/(spb*nfilts), .35, int(11*spb*nfilts)) + notebook + notebook_0,2 _coordinate - (513, 679) + (1111, 767) _rotation @@ -809,10 +689,10 @@ - root_raised_cosine_filter + wxgui_scopesink2 id - root_raised_cosine_filter_0_0 + wxgui_scopesink2_0_0_0 _enabled @@ -820,82 +700,35 @@ type - interp_fir_filter_fff - - - decim - 1 - - - interp - spb_gen + float - gain - 2*spb_gen + title + Scope Plot samp_rate - 1.0 - - - sym_rate - 1./spb_gen - - - alpha - 0.35 - - - ntaps - 11*spb_gen - - - _coordinate - (564, 301) - - - _rotation - 0 - - - - variable_slider - - id - alpha - - - _enabled - True - - - label - Timing Alpha + samp_rate - value - 0 + v_scale + 9 - min + t_scale 0 - max - 10 - - - num_steps - 1000 + ac_couple + False - style - wx.SL_HORIZONTAL + xy_mode + False - converver - float_converter + num_inputs + 1 grid_pos @@ -903,11 +736,11 @@ notebook - + notebook_0,1 _coordinate - (552, 4) + (1112, 881) _rotation @@ -915,109 +748,69 @@ - variable_slider + gr_channel_model id - beta + gr_channel_model_0 _enabled True - label - Timing Beta - - - value - 0 - - - min - 0.0 - - - max - 0.1 - - - num_steps - 1000 + noise_voltage + noise_amp - style - wx.SL_HORIZONTAL + freq_offset + freq_offset - converver - float_converter + epsilon + interpratio - grid_pos - + taps + 1.0 - notebook - + seed + 42 _coordinate - (668, 5) + (59, 543) _rotation - 180 + 0 - variable_slider + gr_throttle id - alpha_0 + gr_throttle_0 _enabled - False - - - label - Freq Alpha - - - value - 0.01 - - - min - 0 - - - max - 0.1 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL + True - converver - float_converter + type + complex - grid_pos - + samples_per_second + samp_rate - notebook - + vlen + 1 _coordinate - (792, 6) + (290, 575) _rotation @@ -1025,42 +818,22 @@ - variable_slider + notebook id - beta_0 + notebook_0 _enabled - False - - - label - Freq Beta - - - value - 0.001 - - - min - 0.0 - - - max - 0.01 - - - num_steps - 1000 + True style - wx.SL_HORIZONTAL + wx.NB_TOP - converver - float_converter + labels + ['error', 'phase', 'freq', 'Resampled Signal'] grid_pos @@ -1072,18 +845,18 @@ _coordinate - (919, 7) + (729, 769) _rotation - 180 + 0 wxgui_scopesink2 id - wxgui_scopesink2_0 + wxgui_scopesink2_0_0_1 _enabled @@ -1095,7 +868,7 @@ title - Scope Plot + Error samp_rate @@ -1103,7 +876,7 @@ v_scale - 0 + .5 t_scale @@ -1126,12 +899,35 @@ - notebook - + notebook + notebook_0,3 + + + _coordinate + (1115, 358) + + + _rotation + 0 + + + + variable + + id + spb + + + _enabled + True + + + value + 4.1 _coordinate - (1145, 258) + (32, 842) _rotation @@ -1139,10 +935,10 @@ - wxgui_scopesink2 + gr_add_xx id - wxgui_scopesink2_0_0_1 + gr_add_xx_0 _enabled @@ -1150,47 +946,50 @@ type - complex + float - title - Error + num_inputs + 2 - samp_rate - samp_rate + vlen + 1 - v_scale - .5 + _coordinate + (440, 167) - t_scale + _rotation 0 + + + gr_add_xx - ac_couple - False + id + gr_add_xx_0_1 - xy_mode - False + _enabled + True - num_inputs - 1 + type + float - grid_pos - + num_inputs + 2 - notebook - notebook_0,4 + vlen + 1 _coordinate - (1107, 533) + (430, 330) _rotation @@ -1198,22 +997,30 @@ - variable + blks2_pfb_arb_resampler_ccf id - spb_gen + blks2_pfb_arb_resampler_ccf_0 _enabled True - value - 4 + rate + float(spb)/float(spb_gen) + + + taps + firdes.low_pass(128, 128, 0.45, 0.1) + + + size + 128 _coordinate - (119, 841) + (617, 374) _rotation @@ -1236,7 +1043,7 @@ _coordinate - (904, 184) + (590, 184) _rotation @@ -1255,7 +1062,7 @@ type - interp_fir_filter_fff + interp_fir_filter_ccf decim @@ -1287,7 +1094,7 @@ _coordinate - (557, 140) + (832, 157) _rotation @@ -1295,61 +1102,58 @@ - variable + wxgui_scopesink2 id - spb + wxgui_scopesink2_0 _enabled True - value - 4.01 + type + complex - _coordinate - (32, 842) + title + Scope Plot - _rotation - 0 + samp_rate + samp_rate - - - gr_channel_model - id - gr_channel_model_0 + v_scale + 0 - _enabled - False + t_scale + 0 - noise_voltage - noise_amp + ac_couple + False - freq_offset - freq_offset + xy_mode + False - epsilon - interpratio + num_inputs + 1 - taps - 1.0 + grid_pos + - seed - 42 + notebook + _coordinate - (59, 543) + (1116, 500) _rotation @@ -1357,30 +1161,22 @@ - blks2_pfb_arb_resampler_ccf + variable id - blks2_pfb_arb_resampler_ccf_0 + nfilts _enabled True - rate - float(spb)/float(spb_gen) - - - taps - firdes.low_pass(320, 320, 0.45, 0.1) - - - size - 320 + value + 64 _coordinate - (874, 374) + (435, 686) _rotation @@ -1419,90 +1215,15 @@ init_phase - 14 - - - _coordinate - (512, 527) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - wxgui_fftsink2_0 - - - _enabled - False - - - type - complex - - - title - FFT Plot - - - samp_rate - samp_rate - - - baseband_freq - 0 - - - y_per_div - 10 + 16 - y_divs - 10 - - - ref_level - 50 - - - ref_scale - 2.0 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - grid_pos - - - - notebook - notebook_0,3 + max_dev + 20 _coordinate - (517, 767) + (512, 527) _rotation @@ -1513,7 +1234,7 @@ variable id - nfilts + pam_amp _enabled @@ -1521,23 +1242,17 @@ value - 64 + 16 _coordinate - (435, 686) + (223, 9) _rotation 0 - - gr_throttle_0 - wxgui_scopesink2_0 - 0 - 0 - gr_pfb_clock_sync_ccf_0 wxgui_scopesink2_0_0 @@ -1574,12 +1289,6 @@ 0 1 - - gr_add_xx_0 - root_raised_cosine_filter_0 - 0 - 0 - gr_uchar_to_float_0_0 gr_add_xx_0_1 @@ -1592,12 +1301,6 @@ 0 1 - - gr_add_xx_0_1 - root_raised_cosine_filter_0_0 - 0 - 0 - random_source_x_0_0 gr_uchar_to_float_0_0 @@ -1605,80 +1308,56 @@ 0 - gr_null_source_1 - root_raised_cosine_filter_0_0 - 0 - 0 - - - root_raised_cosine_filter_0_0 - gr_float_to_complex_0 - 0 - 1 - - - root_raised_cosine_filter_0 - gr_float_to_complex_0 + blks2_pfb_arb_resampler_ccf_0 + gr_channel_model_0 0 0 - gr_channel_model_0 - wxgui_fftsink2_0 + blks2_pfb_arb_resampler_ccf_0 + wxgui_scopesink2_0_0_1 0 0 gr_channel_model_0 - gr_costas_loop_cc_0 + gr_throttle_0 0 0 - gr_costas_loop_cc_0 + gr_throttle_0 gr_pfb_clock_sync_ccf_0 0 0 - - gr_costas_loop_cc_0 - wxgui_scopesink2_0_0_1 - 1 - 0 - gr_pfb_clock_sync_ccf_0 - gr_throttle_0 - 0 - 0 - - - gr_channel_model_0 - gr_pfb_clock_sync_ccf_0 + wxgui_scopesink2_0 0 0 - gr_float_to_complex_0 - blks2_pfb_arb_resampler_ccf_0 + gr_add_xx_0 + gr_float_to_complex_0 0 0 - blks2_pfb_arb_resampler_ccf_0 - gr_channel_model_0 + gr_add_xx_0_1 + gr_float_to_complex_0 0 - 0 + 1 - blks2_pfb_arb_resampler_ccf_0 - wxgui_scopesink2_0_0_1 + gr_float_to_complex_0 + root_raised_cosine_filter_0 0 0 - blks2_pfb_arb_resampler_ccf_0 - gr_pfb_clock_sync_ccf_0 + root_raised_cosine_filter_0 + blks2_pfb_arb_resampler_ccf_0 0 0 -- cgit From 9761acfa39bfcda99b09dad7c5b70d8abb1e6379 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index ba5235fa5..907233aca 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Fri Oct 9 14:21:35 2009 + Fri Oct 9 14:51:58 2009 options @@ -1242,7 +1242,7 @@ value - 16 + 2 _coordinate -- cgit From a524c6f494cfb3b88d1e55d3f1a35d97ec566c4e Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 907233aca..b3e90f173 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Fri Oct 9 14:51:58 2009 + Fri Oct 9 14:52:42 2009 options @@ -1050,57 +1050,6 @@ 0 - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - True - - - type - interp_fir_filter_ccf - - - decim - 1 - - - interp - spb_gen - - - gain - 2*spb_gen - - - samp_rate - 1.0 - - - sym_rate - 1./spb_gen - - - alpha - 0.35 - - - ntaps - 11*spb_gen - - - _coordinate - (832, 157) - - - _rotation - 0 - - wxgui_scopesink2 @@ -1253,6 +1202,136 @@ 0 + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + True + + + type + interp_fir_filter_ccf + + + decim + 1 + + + interp + spb_gen + + + gain + 2*spb_gen + + + samp_rate + 1.0 + + + sym_rate + 1./spb_gen + + + alpha + 0.35 + + + ntaps + 11*spb_gen + + + _coordinate + (832, 157) + + + _rotation + 0 + + + + wxgui_fftsink2 + + id + wxgui_fftsink2_0 + + + _enabled + True + + + type + complex + + + title + FFT Plot + + + samp_rate + samp_rate + + + baseband_freq + 0 + + + y_per_div + 10 + + + y_divs + 10 + + + ref_level + 50 + + + ref_scale + 2.0 + + + fft_size + 1024 + + + fft_rate + 30 + + + peak_hold + False + + + average + False + + + avg_alpha + 0 + + + grid_pos + + + + notebook + + + + _coordinate + (1104, 39) + + + _rotation + 0 + + gr_pfb_clock_sync_ccf_0 wxgui_scopesink2_0_0 @@ -1361,4 +1440,10 @@ 0 0 + + root_raised_cosine_filter_0 + wxgui_fftsink2_0 + 0 + 0 + -- cgit From dda4ffec1f7aefe9271a9e0a3eff03f665138ed3 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index b3e90f173..907233aca 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Fri Oct 9 14:52:42 2009 + Fri Oct 9 14:51:58 2009 options @@ -1050,6 +1050,57 @@ 0 + + root_raised_cosine_filter + + id + root_raised_cosine_filter_0 + + + _enabled + True + + + type + interp_fir_filter_ccf + + + decim + 1 + + + interp + spb_gen + + + gain + 2*spb_gen + + + samp_rate + 1.0 + + + sym_rate + 1./spb_gen + + + alpha + 0.35 + + + ntaps + 11*spb_gen + + + _coordinate + (832, 157) + + + _rotation + 0 + + wxgui_scopesink2 @@ -1202,136 +1253,6 @@ 0 - - root_raised_cosine_filter - - id - root_raised_cosine_filter_0 - - - _enabled - True - - - type - interp_fir_filter_ccf - - - decim - 1 - - - interp - spb_gen - - - gain - 2*spb_gen - - - samp_rate - 1.0 - - - sym_rate - 1./spb_gen - - - alpha - 0.35 - - - ntaps - 11*spb_gen - - - _coordinate - (832, 157) - - - _rotation - 0 - - - - wxgui_fftsink2 - - id - wxgui_fftsink2_0 - - - _enabled - True - - - type - complex - - - title - FFT Plot - - - samp_rate - samp_rate - - - baseband_freq - 0 - - - y_per_div - 10 - - - y_divs - 10 - - - ref_level - 50 - - - ref_scale - 2.0 - - - fft_size - 1024 - - - fft_rate - 30 - - - peak_hold - False - - - average - False - - - avg_alpha - 0 - - - grid_pos - - - - notebook - - - - _coordinate - (1104, 39) - - - _rotation - 0 - - gr_pfb_clock_sync_ccf_0 wxgui_scopesink2_0_0 @@ -1440,10 +1361,4 @@ 0 0 - - root_raised_cosine_filter_0 - wxgui_fftsink2_0 - 0 - 0 - -- cgit From 5657ff84eca261298910b46f89e20a6a50427df8 Mon Sep 17 00:00:00 2001 From: Tom 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index 1bfda4a96..35cc2e376 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 From 517380207ba51fc127bc979dbc1d8bdc557145e6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau 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 (limited to 'gnuradio-examples') 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 000000000..17c8a1750 --- /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 000000000..f111e3772 --- /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 000000000..dc20ed798 --- /dev/null +++ b/gnuradio-examples/python/digital/qt_digital_window2.ui @@ -0,0 +1,637 @@ + + DigitalWindow + + + + 0 + 0 + 1019 + 754 + + + + MainWindow + + + + + + + + + + 0 + 0 + + + + + 240 + 60 + + + + + 240 + 16777215 + + + + System Parameters + + + + + 10 + 20 + 211 + 31 + + + + + QLayout::SetFixedSize + + + 20 + + + + + + 0 + 0 + + + + + 60 + 26 + + + + + 80 + 26 + + + + + + + + + 0 + 0 + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + Sample Rate (sps) + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 60 + + + + + + + + + + + + + 0 + 0 + + + + + 500 + 550 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + + + + + + 0 + 0 + + + + + 245 + 130 + + + + + 245 + 16777215 + + + + Channel Model Parameters + + + + + 10 + 20 + 221 + 98 + + + + + QLayout::SetFixedSize + + + QFormLayout::AllNonFixedFieldsGrow + + + + + SNR (dB) + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + Frequency Offset (Hz) + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + Timing Offset + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + formLayoutWidget_2 + rxBox + + + + + + + 0 + 0 + + + + + 220 + 125 + + + + + 265 + 125 + + + + Received Packet Info + + + + + 10 + 20 + 248 + 188 + + + + + QLayout::SetFixedSize + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Packets Rcvd. + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + Packets Correct + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + PER + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + pktsRcvdLabel + pktsCorrectLabel + perLabel + pktsRcvdEdit + pktsCorrectEdit + perEdit + rxBox + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + Pause + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 60 + + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + Close + + + + + + + + + + 0 + 0 + + + + + 180 + 120 + + + + + 180 + 16777215 + + + + Receiver Parameters + + + + + 10 + 10 + 161 + 101 + + + + + QLayout::SetFixedSize + + + + + Alpha: time + + + + + + + Alpha: freq + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + + 60 + 0 + + + + + 80 + 16777215 + + + + + + + + + 80 + 16777215 + + + + + + + + Beta: time + + + + + + + + + channelModeBox + + rxBox_2 + horizontalSpacer + + rxBox + + + + + 0 + 0 + 1019 + 24 + + + + + &File + + + + + + + + + E&xit + + + + + snrEdit + freqEdit + timeEdit + + + + + closeButton + clicked() + DigitalWindow + close() + + + 322 + 623 + + + 66 + 561 + + + + + actionExit + triggered() + DigitalWindow + close() + + + -1 + -1 + + + 617 + 327 + + + + + -- cgit From e8759914637f76918302e759d0298d6f59ce7635 Mon Sep 17 00:00:00 2001 From: Tom Rondeau 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(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index 17c8a1750..101dd68d6 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 From c1ab962946bb05b8a20a0f19dd294eb3b3056142 Mon Sep 17 00:00:00 2001 From: Tom Rondeau 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. --- gnuradio-examples/grc/demod/pam_timing.grc | 760 ++++++++++++++++------------- 1 file changed, 410 insertions(+), 350 deletions(-) (limited to 'gnuradio-examples') diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc index 907233aca..4e2a2f861 100644 --- a/gnuradio-examples/grc/demod/pam_timing.grc +++ b/gnuradio-examples/grc/demod/pam_timing.grc @@ -1,6 +1,6 @@ - Fri Oct 9 14:51:58 2009 + Mon Oct 12 17:54:59 2009 options @@ -94,61 +94,6 @@ 0 - - variable_slider - - id - noise_amp - - - _enabled - True - - - label - Channel Noise - - - value - 0 - - - min - 0 - - - max - 1.0 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter - - - grid_pos - - - - notebook - - - - _coordinate - (168, 684) - - - _rotation - 0 - - variable @@ -251,22 +196,18 @@ - variable_slider + random_source_x id - alpha + random_source_x_0 _enabled True - label - Timing Alpha - - - value - 0 + type + byte min @@ -274,31 +215,19 @@ max - 10 - - - num_steps - 1000 - - - style - wx.SL_HORIZONTAL - - - converver - float_converter + pam_amp - grid_pos - + num_samps + 10000 - notebook - + repeat + True _coordinate - (552, 4) + (13, 80) _rotation @@ -306,77 +235,92 @@ - variable_slider + random_source_x id - beta + random_source_x_0_0 _enabled True - label - Timing Beta + type + byte - value + min 0 - min - 0.0 + max + pam_amp - max - 0.1 + num_samps + 10000 - num_steps - 1000 + repeat + True - style - wx.SL_HORIZONTAL + _coordinate + (15, 245) - converver - float_converter + _rotation + 0 + + + const_source_x - grid_pos - + id + const_source_x_0 - notebook - + _enabled + True + + + type + float + + + const + -0.5*(pam_amp-1) _coordinate - (668, 5) + (213, 197) _rotation - 180 + 0 - variable + const_source_x id - spb_gen + const_source_x_0_0 _enabled True - value - 4 + type + float + + + const + -0.5*(pam_amp-1) _coordinate - (119, 841) + (200, 360) _rotation @@ -384,42 +328,46 @@ - variable_slider + wxgui_scopesink2 id - interpratio + wxgui_scopesink2_0_0_0_0 _enabled True - label - Timing Offset + type + float - value - 1.00 + title + Scope Plot - min - 0.9 + samp_rate + samp_rate - max - 1.1 + v_scale + 1.25 - num_steps - 1000 + t_scale + 0 - style - wx.SL_HORIZONTAL + ac_couple + False - converver - float_converter + xy_mode + False + + + num_inputs + 1 grid_pos @@ -427,22 +375,22 @@ notebook - + notebook_0,2 _coordinate - (40, 684) + (1111, 767) _rotation - 180 + 0 - random_source_x + wxgui_scopesink2 id - random_source_x_0 + wxgui_scopesink2_0_0_0 _enabled @@ -450,27 +398,47 @@ type - byte + float - min + title + Scope Plot + + + samp_rate + samp_rate + + + v_scale + 9 + + + t_scale 0 - max - pam_amp + ac_couple + False - num_samps - 10000 + xy_mode + False - repeat - True + num_inputs + 1 + + + grid_pos + + + + notebook + notebook_0,1 _coordinate - (13, 80) + (1112, 881) _rotation @@ -478,38 +446,38 @@ - random_source_x + gr_channel_model id - random_source_x_0_0 + gr_channel_model_0 _enabled True - type - byte + noise_voltage + noise_amp - min - 0 + freq_offset + freq_offset - max - pam_amp + epsilon + interpratio - num_samps - 10000 + taps + 1.0 - repeat - True + seed + 42 _coordinate - (15, 245) + (59, 543) _rotation @@ -517,10 +485,10 @@ - const_source_x + gr_throttle id - const_source_x_0 + gr_throttle_0 _enabled @@ -528,15 +496,19 @@ type - float + complex - const - -0.5*(pam_amp-1) + samples_per_second + samp_rate + + + vlen + 1 _coordinate - (213, 197) + (290, 575) _rotation @@ -544,26 +516,34 @@ - const_source_x + notebook id - const_source_x_0_0 + notebook_0 _enabled True - type - float + style + wx.NB_TOP - const - -0.5*(pam_amp-1) + labels + ['error', 'phase', 'freq', 'Resampled Signal'] + + + grid_pos + + + + notebook + _coordinate - (200, 360) + (729, 769) _rotation @@ -574,7 +554,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0 + wxgui_scopesink2_0_0_1 _enabled @@ -582,7 +562,7 @@ type - float + complex title @@ -618,11 +598,11 @@ notebook - notebook_0,0 + notebook_0,3 _coordinate - (1110, 651) + (1115, 358) _rotation @@ -630,10 +610,10 @@ - wxgui_scopesink2 + gr_add_xx id - wxgui_scopesink2_0_0_0_0 + gr_add_xx_0 _enabled @@ -644,44 +624,70 @@ float - title - Scope Plot + num_inputs + 2 - samp_rate - samp_rate + vlen + 1 - v_scale - 1.25 + _coordinate + (440, 167) - t_scale + _rotation 0 + + + gr_add_xx + + id + gr_add_xx_0_1 + - ac_couple - False + _enabled + True - xy_mode - False + type + float num_inputs + 2 + + + vlen 1 - grid_pos - + _coordinate + (430, 330) - notebook - notebook_0,2 + _rotation + 0 + + + + gr_float_to_complex + + id + gr_float_to_complex_0 + + + _enabled + True + + + vlen + 1 _coordinate - (1111, 767) + (590, 184) _rotation @@ -692,7 +698,7 @@ wxgui_scopesink2 id - wxgui_scopesink2_0_0_0 + wxgui_scopesink2_0 _enabled @@ -700,7 +706,7 @@ type - float + complex title @@ -712,7 +718,7 @@ v_scale - 9 + 0 t_scale @@ -736,11 +742,11 @@ notebook - notebook_0,1 + _coordinate - (1112, 881) + (1116, 500) _rotation @@ -748,38 +754,22 @@ - gr_channel_model + variable id - gr_channel_model_0 + nfilts _enabled True - noise_voltage - noise_amp - - - freq_offset - freq_offset - - - epsilon - interpratio - - - taps - 1.0 - - - seed - 42 + value + 32 _coordinate - (59, 543) + (435, 686) _rotation @@ -787,30 +777,46 @@ - gr_throttle + gr_pfb_clock_sync_ccf id - gr_throttle_0 + gr_pfb_clock_sync_ccf_0 _enabled True - type - complex + sps + spb - samples_per_second - samp_rate + alpha + alpha - vlen - 1 + beta + beta + + + taps + rrctaps + + + filter_size + nfilts + + + init_phase + 16 + + + max_dev + 1.5 _coordinate - (290, 575) + (512, 527) _rotation @@ -818,22 +824,42 @@ - notebook + variable_slider id - notebook_0 + noise_amp _enabled True + + label + Channel Noise + + + value + 0 + + + min + 0 + + + max + 1.0 + + + num_steps + 1000 + style - wx.NB_TOP + wx.SL_HORIZONTAL - labels - ['error', 'phase', 'freq', 'Resampled Signal'] + converver + float_converter grid_pos @@ -845,7 +871,7 @@ _coordinate - (729, 769) + (168, 684) _rotation @@ -853,46 +879,42 @@ - wxgui_scopesink2 + variable_slider id - wxgui_scopesink2_0_0_1 + interpratio _enabled - True - - - type - complex + True - title - Error + label + Timing Offset - samp_rate - samp_rate + value + 1.00 - v_scale - .5 + min + 0.99 - t_scale - 0 + max + 1.01 - ac_couple - False + num_steps + 1000 - xy_mode - False + style + wx.SL_HORIZONTAL - num_inputs - 1 + converver + float_converter grid_pos @@ -900,22 +922,22 @@ notebook - notebook_0,3 + _coordinate - (1115, 358) + (40, 684) _rotation - 0 + 180 variable id - spb + spb_gen _enabled @@ -923,11 +945,11 @@ value - 4.1 + 4 _coordinate - (32, 842) + (119, 841) _rotation @@ -935,61 +957,109 @@ - gr_add_xx + variable_slider id - gr_add_xx_0 + beta _enabled True - type - float + label + Timing Beta - num_inputs - 2 + value + 0 - vlen - 1 + min + 0.0 + + + max + 0.1 + + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + _coordinate - (440, 167) + (668, 5) _rotation - 0 + 180 - gr_add_xx + variable_slider id - gr_add_xx_0_1 + alpha _enabled True - type - float + label + Timing Alpha - num_inputs - 2 + value + 0 - vlen + min + 0 + + + max 1 + + num_steps + 1000 + + + style + wx.SL_HORIZONTAL + + + converver + float_converter + + + grid_pos + + + + notebook + + _coordinate - (430, 330) + (552, 4) _rotation @@ -997,53 +1067,58 @@ - blks2_pfb_arb_resampler_ccf + wxgui_scopesink2 id - blks2_pfb_arb_resampler_ccf_0 + wxgui_scopesink2_0_0 _enabled True - rate - float(spb)/float(spb_gen) + type + float - taps - firdes.low_pass(128, 128, 0.45, 0.1) + title + Error - size - 128 + samp_rate + samp_rate - _coordinate - (617, 374) + v_scale + 3 - _rotation + t_scale 0 - - - gr_float_to_complex - id - gr_float_to_complex_0 + ac_couple + False - _enabled - True + xy_mode + False - vlen + num_inputs 1 + + grid_pos + + + + notebook + notebook_0,0 + _coordinate - (590, 184) + (1110, 651) _rotation @@ -1094,7 +1169,7 @@ _coordinate - (832, 157) + (834, 157) _rotation @@ -1102,58 +1177,61 @@ - wxgui_scopesink2 + blks2_pfb_arb_resampler_ccf id - wxgui_scopesink2_0 + blks2_pfb_arb_resampler_ccf_0 _enabled True - type - complex + rate + float(spb)/float(spb_gen) - title - Scope Plot + taps + firdes.low_pass(128, 128, 0.45, 0.1) - samp_rate - samp_rate + size + 128 - v_scale - 0 + _coordinate + (617, 374) - t_scale + _rotation 0 + + + gr_multiply_const_vxx - ac_couple - False + id + gr_multiply_const_vxx_0 - xy_mode - False + _enabled + True - num_inputs - 1 + type + complex - grid_pos - + const + sig_amp - notebook - + vlen + 1 _coordinate - (1116, 500) + (1096, 197) _rotation @@ -1164,7 +1242,7 @@ variable id - nfilts + pam_amp _enabled @@ -1172,11 +1250,11 @@ value - 64 + 2 _coordinate - (435, 686) + (223, 9) _rotation @@ -1184,46 +1262,22 @@ - gr_pfb_clock_sync_ccf + variable id - gr_pfb_clock_sync_ccf_0 + spb _enabled True - sps - spb - - - alpha - alpha - - - beta - beta - - - taps - rrctaps - - - filter_size - nfilts - - - init_phase - 16 - - - max_dev - 20 + value + 4.1 _coordinate - (512, 527) + (32, 842) _rotation @@ -1234,7 +1288,7 @@ variable id - pam_amp + sig_amp _enabled @@ -1242,11 +1296,11 @@ value - 2 + 1 _coordinate - (223, 9) + (315, 9) _rotation @@ -1357,6 +1411,12 @@ root_raised_cosine_filter_0 + gr_multiply_const_vxx_0 + 0 + 0 + + + gr_multiply_const_vxx_0 blks2_pfb_arb_resampler_ccf_0 0 0 -- cgit