Added design for RRC filters.
authorTom <trondeau@vt.edu>
Mon, 24 Aug 2009 04:24:26 +0000 (00:24 -0400)
committerTom <trondeau@vt.edu>
Mon, 24 Aug 2009 04:24:26 +0000 (00:24 -0400)
gr-utils/src/python/gr_filter_design.py
gr-utils/src/python/pyqt_filter.py
gr-utils/src/python/pyqt_filter.ui

index 9ef12294d5bfc94da5fc8a632262a46bf7a45611..2d0c72c7621e73dd16ad83db52ddcadb6ba24d7f 100755 (executable)
@@ -149,6 +149,8 @@ class gr_plot_filter(QtGui.QMainWindow):
             self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbnfPage)
         elif(ftype == "High Pass"):
             self.gui.filterTypeWidget.setCurrentWidget(self.gui.firhpfPage)
+        elif(ftype == "Root Raised Cosine"):
+            self.gui.filterTypeWidget.setCurrentWidget(self.gui.rrcPage)
 
         self.design()
         
@@ -200,7 +202,8 @@ class gr_plot_filter(QtGui.QMainWindow):
                             "Band Pass" : self.design_win_bpf,
                             "Complex Band Pass" : self.design_win_cbpf,
                             "Band Notch" : self.design_win_bnf,
-                            "High Pass" :  self.design_win_hpf}        
+                            "High Pass" :  self.design_win_hpf,
+                            "Root Raised Cosine" :  self.design_win_rrc}
                 wintype = self.filterWindows[winstr]
                 taps,r = designer[ftype](fs, gain, wintype)
 
@@ -302,7 +305,21 @@ class gr_plot_filter(QtGui.QMainWindow):
         else:
             return ([],r)
 
+    def design_win_rrc(self, fs, gain, wintype):
+        ret = True
+        sr,r = self.gui.rrcSymbolRateEdit.text().toDouble()
+        ret = r and ret
+        alpha,r = self.gui.rrcAlphaEdit.text().toDouble()
+        ret = r and ret
+        ntaps,r = self.gui.rrcNumTapsEdit.text().toInt()
+        ret = r and ret
 
+        if(r):
+            taps = gr.firdes.root_raised_cosine(gain, fs, sr,
+                                                alpha, ntaps)
+            return (taps,r)
+        else:
+            return ([],r)
 
     # Design Functions for Equiripple Filters
     def design_opt_lpf(self, fs, gain, wintype=None):
index 5fa0979de60754c1746583e2420767c2335ae49d..15fccd27a38a8c59be76c9bc6818a0ba923458c3 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'pyqt_filter.ui'
 #
-# Created: Sun Aug 23 23:26:14 2009
+# Created: Mon Aug 24 00:20:11 2009
 #      by: PyQt4 UI code generator 4.4.4
 #
 # WARNING! All changes made in this file will be lost!
@@ -188,6 +188,29 @@ class Ui_MainWindow(object):
         self.hpfPassBandRippleEdit.setObjectName("hpfPassBandRippleEdit")
         self.formLayout_3.setWidget(3, QtGui.QFormLayout.FieldRole, self.hpfPassBandRippleEdit)
         self.filterTypeWidget.addWidget(self.firhpfPage)
+        self.rrcPage = QtGui.QWidget()
+        self.rrcPage.setObjectName("rrcPage")
+        self.formLayout_6 = QtGui.QFormLayout(self.rrcPage)
+        self.formLayout_6.setObjectName("formLayout_6")
+        self.rrcSymbolRateLabel = QtGui.QLabel(self.rrcPage)
+        self.rrcSymbolRateLabel.setObjectName("rrcSymbolRateLabel")
+        self.formLayout_6.setWidget(0, QtGui.QFormLayout.LabelRole, self.rrcSymbolRateLabel)
+        self.rrcAlphaLabel = QtGui.QLabel(self.rrcPage)
+        self.rrcAlphaLabel.setObjectName("rrcAlphaLabel")
+        self.formLayout_6.setWidget(1, QtGui.QFormLayout.LabelRole, self.rrcAlphaLabel)
+        self.rrcNumTapsLabel = QtGui.QLabel(self.rrcPage)
+        self.rrcNumTapsLabel.setObjectName("rrcNumTapsLabel")
+        self.formLayout_6.setWidget(2, QtGui.QFormLayout.LabelRole, self.rrcNumTapsLabel)
+        self.rrcSymbolRateEdit = QtGui.QLineEdit(self.rrcPage)
+        self.rrcSymbolRateEdit.setObjectName("rrcSymbolRateEdit")
+        self.formLayout_6.setWidget(0, QtGui.QFormLayout.FieldRole, self.rrcSymbolRateEdit)
+        self.rrcAlphaEdit = QtGui.QLineEdit(self.rrcPage)
+        self.rrcAlphaEdit.setObjectName("rrcAlphaEdit")
+        self.formLayout_6.setWidget(1, QtGui.QFormLayout.FieldRole, self.rrcAlphaEdit)
+        self.rrcNumTapsEdit = QtGui.QLineEdit(self.rrcPage)
+        self.rrcNumTapsEdit.setObjectName("rrcNumTapsEdit")
+        self.formLayout_6.setWidget(2, QtGui.QFormLayout.FieldRole, self.rrcNumTapsEdit)
+        self.filterTypeWidget.addWidget(self.rrcPage)
         self.verticalLayout.addWidget(self.filterTypeWidget)
         self.sysParamsBox = QtGui.QGroupBox(self.filterFrame)
         self.sysParamsBox.setObjectName("sysParamsBox")
@@ -262,7 +285,7 @@ class Ui_MainWindow(object):
         self.menubar.addAction(self.menu_File.menuAction())
 
         self.retranslateUi(MainWindow)
-        self.filterTypeWidget.setCurrentIndex(2)
+        self.filterTypeWidget.setCurrentIndex(4)
         self.tabGroup.setCurrentIndex(0)
         QtCore.QObject.connect(self.action_exit, QtCore.SIGNAL("activated()"), MainWindow.close)
         QtCore.QMetaObject.connectSlotsByName(MainWindow)
@@ -320,6 +343,9 @@ class Ui_MainWindow(object):
         self.startofHpfPassBandLabel.setText(QtGui.QApplication.translate("MainWindow", "Start of Pass Band (Hz)", None, QtGui.QApplication.UnicodeUTF8))
         self.hpfStopBandAttenLabel.setText(QtGui.QApplication.translate("MainWindow", "Stop Band Attenuation (dB)", None, QtGui.QApplication.UnicodeUTF8))
         self.hpfPassBandRippleLabel.setText(QtGui.QApplication.translate("MainWindow", "Pass Band Ripple (dB)", None, QtGui.QApplication.UnicodeUTF8))
+        self.rrcSymbolRateLabel.setText(QtGui.QApplication.translate("MainWindow", "Symbol Rate (sps)", None, QtGui.QApplication.UnicodeUTF8))
+        self.rrcAlphaLabel.setText(QtGui.QApplication.translate("MainWindow", "Roll-off Factor", None, QtGui.QApplication.UnicodeUTF8))
+        self.rrcNumTapsLabel.setText(QtGui.QApplication.translate("MainWindow", "Number of Taps", None, QtGui.QApplication.UnicodeUTF8))
         self.sysParamsBox.setTitle(QtGui.QApplication.translate("MainWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8))
         self.nfftLabel.setText(QtGui.QApplication.translate("MainWindow", "Num FFT points", None, QtGui.QApplication.UnicodeUTF8))
         self.designButton.setText(QtGui.QApplication.translate("MainWindow", "Design", None, QtGui.QApplication.UnicodeUTF8))
index 4e6c958a5f5c0d09beb2b3632f525a2b8613a581..199e339a5c0521092c338c76edd414aa47df2a7a 100644 (file)
        <item>
         <widget class="QStackedWidget" name="filterTypeWidget">
          <property name="currentIndex">
-          <number>2</number>
+          <number>4</number>
          </property>
          <widget class="QWidget" name="firlpfPage">
           <layout class="QFormLayout" name="formLayout">
            </item>
           </layout>
          </widget>
+         <widget class="QWidget" name="rrcPage">
+          <layout class="QFormLayout" name="formLayout_6">
+           <item row="0" column="0">
+            <widget class="QLabel" name="rrcSymbolRateLabel">
+             <property name="text">
+              <string>Symbol Rate (sps)</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0">
+            <widget class="QLabel" name="rrcAlphaLabel">
+             <property name="text">
+              <string>Roll-off Factor</string>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0">
+            <widget class="QLabel" name="rrcNumTapsLabel">
+             <property name="text">
+              <string>Number of Taps</string>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1">
+            <widget class="QLineEdit" name="rrcSymbolRateEdit"/>
+           </item>
+           <item row="1" column="1">
+            <widget class="QLineEdit" name="rrcAlphaEdit"/>
+           </item>
+           <item row="2" column="1">
+            <widget class="QLineEdit" name="rrcNumTapsEdit"/>
+           </item>
+          </layout>
+         </widget>
         </widget>
        </item>
        <item>