discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Simultaneous TX/RX Sample Code for RFX (FLEX) 400


From: rdmiller
Subject: Re: [Discuss-gnuradio] Simultaneous TX/RX Sample Code for RFX (FLEX) 400
Date: Sat, 20 May 2006 20:59:00 -0700 (PDT)

Eric,

Thank you very much for the reply.  I noticed that I was actually modifying
a very old version of usrp_rx_cfile.py (found at
http://www.koders.com/python/fidB649E66943F7649C67371CB015D6E5ACAE276523.aspx). 
I've taken a look at the latest version from cvs and have a question
regarding the proper way to add the call to select_rx_antenna( ).   It
appears that the mux value is set based upon user input or another method,
and that this may result in improper operation using RX2.  I've tried
setting the rx_subdev_spec to 'RX2' from the command line argument with
error.  The message is to use 'A', 'A:0', or 'A:1' when using the A side of
the usrp.  When trying 'A:1', an error also results.  So, when I run the
code I am using 'A:0' as the input.  I am therefore fearful of having bad
mux values even though the modified code (listed below) runs without error
in terms of creating the data file.  My question is whether or not there is
a simple alteration to the code below that will result in using RX2 for
receiving data while transmitting simultaneously from RX/TX?

Although I am aware that the signal will need to be attenuated severely, I
am unsure what the RF front end of the RFX-400 is spec'd for.  With a 20 dBm
signal at the TX, I am planning to use anywhere from 40 to 60 dB of
attenuation.  I believe this will give me a -20 to -40 dBm signal at RX2. 
This should be acceptable, right?  Thanks again for your help, it is much
appreciated.

Best Regards,
Rob



As a note, the version of code I am now using follows:

========================================
#!/usr/bin/env python

"""
Read samples from the USRP and write to file formatted as binary
single-precision complex values.

"""

from gnuradio import gr, eng_notation
from gnuradio import audio
from gnuradio import usrp
from gnuradio.eng_option import eng_option
from optparse import OptionParser

class my_graph(gr.flow_graph):

    def __init__(self):
        gr.flow_graph.__init__(self)

        usage="%prog: [options] output_filename"
        parser = OptionParser(option_class=eng_option, usage=usage)
        parser.add_option("-R", "--rx-subdev-spec", type="subdev",
default=(0, 0),
                          help="select USRP Rx side A or B (default=A)")
        parser.add_option("-d", "--decim", type="int", default=16,
                          help="set fgpa decimation rate to DECIM
[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)")
        parser.add_option("-N", "--nsamples", type="eng_float",
default=None,
                          help="number of samples to collect
[default=+inf]")
        (options, args) = parser.parse_args ()
        if len(args) != 1:
            parser.print_help()
            raise SystemExit, 1
        filename = args[0]

        if options.freq is None:
            parser.print_help()
            sys.stderr.write('You must specify the frequency with -f
FREQ\n');
            raise SystemExit, 1

        # build the graph
        self.u = usrp.source_c(decim_rate=options.decim)
        self.dst = gr.file_sink(gr.sizeof_gr_complex, filename)
        if options.nsamples is None:
            self.connect(self.u, self.dst)
        else:
            self.head = gr.head(gr.sizeof_gr_complex, int(options.nsamples))
            self.connect(self.u, self.head, self.dst)

        if options.rx_subdev_spec is None:
            options.rx_subdev_spec = usrp.pick_rx_subdevice(self.u)
        self.u.set_mux(usrp.determine_rx_mux_value(self.u,
options.rx_subdev_spec))

       ##--- addition here ---##
       self.subdev.select_rx_antenna('RX2')

        # determine the daughterboard subdevice we're using
        self.subdev = usrp.selected_subdev(self.u, options.rx_subdev_spec)
        print "Using RX d'board %s" % (self.subdev.side_and_name(),)
        input_rate = self.u.adc_freq() / self.u.decim_rate()
        print "USB sample rate %s" % (eng_notation.num_to_str(input_rate))

        if options.gain is None:
            # if no gain was specified, use the mid-point in dB
            g = self.subdev.gain_range()
            options.gain = float(g[0]+g[1])/2
        self.subdev.set_gain(options.gain)

        r = self.u.tune(0, self.subdev, options.freq)
        if not r:
            sys.stderr.write('Failed to set frequency\n')
            raise SystemExit, 1

        
if __name__ == '__main__':
    try:
        my_graph().run()
    except KeyboardInterrupt:
        pass
========================================

--
View this message in context: 
http://www.nabble.com/Simultaneous+TX-RX+Sample+Code+for+RFX+%28FLEX%29+400-t1651751.html#a4489360
Sent from the GnuRadio forum at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]