diff options
Diffstat (limited to 'gr-uhd/doc/uhd.dox')
-rw-r--r-- | gr-uhd/doc/uhd.dox | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/gr-uhd/doc/uhd.dox b/gr-uhd/doc/uhd.dox new file mode 100644 index 000000000..92ad7db4c --- /dev/null +++ b/gr-uhd/doc/uhd.dox @@ -0,0 +1,101 @@ +/*! \page page_uhd UHD Interface + +\section Introduction +This is the GNU Radio UHD package. It is the interface to the UHD +library to connect to and send and receive data between the Ettus +Research, LLC product line. To use the UHD blocks, the Python +namespaces is in gnuradio.uhd, which would be normally imported +as: + +\code + from gnuradio import uhd +\endcode + +The relevant blocks are listed in the \ref uhd_blk group. + +A quick listing of the details can be found in Python after importing +by using: + +\code + help(uhd) +\endcode + + +\section External Documentation + +Ettus Research keeps the comprehensive documentation to the underlying UHD driver, which can be found: + + http://files.ettus.com/uhd_docs/manual/html/ + +The UHD Doxygen page is located: + + http://files.ettus.com/uhd_docs/doxygen/html/index.html + + +\section Typical Setup + +A typical option parser setup for a UHD device looks like + +\code + parser = OptionParser(option_class=eng_option) + parser.add_option("-a", "--args", type="string", default="", + help="UHD device address args , [default=%default]") + parser.add_option("", "--spec", type="string", default=None, + help="Subdevice of UHD device where appropriate") + parser.add_option("-A", "--antenna", type="string", default=None, + help="select Rx Antenna where appropriate") + parser.add_option("-s", "--samp-rate", type="eng_float", default=1e6, + help="set sample rate (bandwidth) [default=%default]") + parser.add_option("-f", "--freq", type="eng_float", default=None, + help="set frequency to FREQ", metavar="FREQ") + parser.add_option("-g", "--gain", type="eng_float", default=None, + help="set gain in dB (default is midpoint)") +\endcode + +To use these options to create a UHD source object: + +\code + self.u = uhd.usrp_source(device_addr=options.args, + io_type=uhd.io_type.COMPLEX_FLOAT32, + num_channels=1) + + self.u.set_samp_rate(options.samp_rate) + + # if no gain was specified, use the mid-point in dB + if options.gain is None: + g = self.u.get_gain_range() + options.gain = float(g.start()+g.stop())/2 + self.u.set_gain(options.gain, 0) + + # Set the center frequency + self.u.set_center_freq(options.freq, 0) + + # Set the subdevice spec + if(options.spec): + self.u.set_subdev_spec(options.spec, 0) + + # Set the antenna + if(options.antenna): + self.u.set_antenna(options.antenna, 0) +\endcode + +Frequently, your application may need a sample rate that is not +supported by the UHD device. If you have extra CPU power to spare, you +can easily set the sample rate you want, then ask the device what the +actual sample rate set was. Then, you can easily create an arbitrary +resampler to take care of the difference. + +\code + self.u.set_samp_rate(options.samp_rate) + + desired_rate = options.samp_rate + actual_rate = self.u.get_samp_rate() + resample = desired_rate / actual_rate + + # Use the blks2 version and pass only the resample factor. + # This block builds a half-band filter for you + + self.resampler = blks2.pfb_arb_resampler_ccf(resample) +\endcode + +*/ |