Playing with using the resampler to allow any bit rate requested.
authorTom Rondeau <trondeau@vt.edu>
Mon, 18 Jan 2010 00:18:39 +0000 (19:18 -0500)
committerTom Rondeau <trondeau@vt.edu>
Mon, 18 Jan 2010 00:18:39 +0000 (19:18 -0500)
gnuradio-examples/python/digital/usrp_transmit_path.py

index ad9f741a6309dec1b82106513525ebcb2a324c2f..ee63dcd2b7e2d35a07194ef94fe81840c8269179 100644 (file)
@@ -62,12 +62,18 @@ class usrp_transmit_path(gr.hier_block2):
         for attr in dir(tx_path): #forward the methods
             if not attr.startswith('_') and not hasattr(self, attr):
                 setattr(self, attr, getattr(tx_path, attr))
+
         #setup usrp
         self._modulator_class = modulator_class
         self._setup_usrp_sink(options)
-        #connect
-        self.connect(tx_path, self.u)
 
+        # Set up resampler based on rate determined by _setup_usrp_sink
+        rs_taps = gr.firdes.low_pass_2(32, 32, 0.45, 0.1, 60)
+        self.resampler = gr.pfb_arb_resampler_ccf(self.rs_rate, rs_taps)
+
+        #connect
+        self.connect(tx_path, self.resampler, self.u)
+        
     def _setup_usrp_sink(self, options):
         """
         Creates a USRP sink, determines the settings for best bitrate,
@@ -75,6 +81,7 @@ class usrp_transmit_path(gr.hier_block2):
         """
         self.u = usrp_options.create_usrp_sink(options)
         dac_rate = self.u.dac_rate()
+        self.rs_rate = options.bitrate    # Store requested bit rate
         if options.verbose:
             print 'USRP Sink:', self.u
         (self._bitrate, self._samples_per_symbol, self._interp) = \
@@ -82,6 +89,10 @@ class usrp_transmit_path(gr.hier_block2):
                                         options.samples_per_symbol, options.interp, dac_rate, \
                                         self.u.get_interp_rates())
 
+        # Calculate resampler rate based on requested and actual rates
+        self.rs_rate = self._bitrate / self.rs_rate
+        print "Resampling by %f to get bitrate of %ssps" % (self.rs_rate, eng_notation.num_to_str(self._bitrate/self.rs_rate))
+
         self.u.set_interp(self._interp)
         self.u.set_auto_tr(True)