discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Interpretting results from usrp_rx_cfile.py


From: Martin Dvh
Subject: Re: [Discuss-gnuradio] Interpretting results from usrp_rx_cfile.py
Date: Fri, 19 Jan 2007 18:24:20 +0100
User-agent: Debian Thunderbird 1.0.2 (X11/20061113)

Bahn William L Civ USAFA/DFCS wrote:
> 
> // SIGNED //
> William L. Bahn
> Instructor of Computer Science
> United States Air Force Academy
> e-mail: address@hidden
>  
> 
> 
>>-----Original Message-----
>>From: Eric Blossom [mailto:address@hidden
>>Sent: Wednesday, January 17, 2007 4:45 PM
>>To: Bahn William L Civ USAFA/DFCS
>>Cc: gnuradio mailing list
>>Subject: Re: [Discuss-gnuradio] Interpretting results from
>>usrp_rx_cfile.py
>>
>>On Wed, Jan 17, 2007 at 04:37:58PM -0700, Bahn William L Civ
> 
> USAFA/DFCS
> 
>>wrote:
>>
>>>I have a function generator outputting a sine wave into the RX-B
>>>connector of the BasicRX board connected to the RX-B side of a USRP.
> 
> I
> 
>>>am trying to capture the waveform and store it to a file.
>>>
>>>Here are the commands I tried:
>>>
>>># ./usrp_rx_cfile.py -R B -d 256 -f 1000 sine_1k1.dat
>>># ./usrp_rx_cfile.py -R B -d 256 -f 10000 sine_1k10.dat
>>># ./usrp_rx_cfile.py -R B -d 256 -f 15000 sine_10k15.dat
>>>
>>>The function generator was producing a 1kHz sine wave for the first
> 
> two
> 
>>>and a 10kHz sine wave for the third.
>>>
>>>Each time I captured a few seconds worth of data. I then took the
> 
> data
> 
>>>files and extracted two streams of single precision floats for each
> 
> of
> 
>>>the first ten thousand 8-byte groups in the file and plotted them.
> 
> The
> 
>>>results were very similar regardless of the frequency specified on
> 
> the
> 
>>>command line (and I have no idea what that frequency is for) or the
>>>actual frequency of the signal that was applied to the inputs.
>>>
>>>What I got in all cases was basically a flat line (-3 to +3) except
> 
> for
> 
>>>in the vicinity of sample #530, which looks like an inverted sinc
> 
> pulse
> 
>>>with a peak amplitude of about -10000 (the first stream, which is
> 
> made
> 
>>>up of the first float value in each sample pair), and what looks
> 
> like an
> 
>>>extremely heavily damped sine wave (the second stream) with a peak
>>>amplitude of about 20,000 and roughly centered at the same place as
> 
> the
> 
>>>sinc pulse.
>>>
>>>This makes absolutely no sense to be whatsoever. Can anyone shed any
>>>light on this?
>>>
>>>Thanks
>>
>>The Basic RX only passes signals > 100kHz.
>>
> 
> 
> That helped quite a bit. When I raised the frequency to 200kHz and
> looked at the data, I now saw related data in the captured file after
> the large transient event. The data looked strange, but appeared to have
> a quadrature-like pattern to it. So that suggested to me that the
> frequency specified on the command line is the frequency for the
> oscillator of a sin/cos mixer. Changing the frequency to zero then
> produced a cosine waveform and a flatlined-waveform, which makes sense.
> 
> As for the spike at about sample 530, I am now of the opinion that this
> is a switching transient as the board configures the hardware.
> 
> I only see data when the signal is applied to the RX-A input, not the
> RX-B (here I am referring to the two inputs on the daughterboard, not
> the daughterboard slots on the USRP. I am still trying to figure out how
> to get data from the other input, but that is fairly low priority.

This is determined by the rx_mux setting uf the usrp.
In most examples this is determined automatically using the parameter you 
specify for rx_subdevice_spec with the -R parameter of the example.
(Note that most/all examples only use one ADC if you use the basic_RX)

A gives you channel A of daughterboard A
A:1 gives you channel B of daughterboard A
B gives you channel A of daughterboard B
B:1 gives you channel B of daughterboard B

The magic happens in the line:
self.u.set_mux(usrp.determine_rx_mux_value(self.u, options.rx_subdev_spec))

It is also possible to use both ADCs as a complex (quadrature) input. For this 
you have to determine the muxvalue yourself.

I use this peace of code to use the basic_RX as complex device (use both ADCs 
as a quadrature input):
        self.side = options.rx_subdev_spec[0] #if RX_A 0, if RX_B 1
        if 0==self.side:
          self.rx_mux_value=0x00000010
        else:
          self.rx_mux_value=0x00000032
        self.u.set_mux(gru.hexint(self.rx_mux_value)) #set basix_RX as complex 
device in stead of singlechannel

The documentation of usrp.set_mux(int muxvalue) (see 
usrp/host/lib/usrp_standard.h and usrp/host/lib/usrp_basic.h ):
/*!
   * \brief Set input mux configuration.
   *
   * This determines which ADC (or constant zero) is connected to
   * each DDC input.  There are 4 DDCs.  Each has two inputs.
   *
   * <pre>
   * Mux value:
   *
   *    3                   2                   1
   *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
   * +-------+-------+-------+-------+-------+-------+-------+-------+
   * |   Q3  |   I3  |   Q2  |   I2  |   Q1  |   I1  |   Q0  |   I0  |
   * +-------+-------+-------+-------+-------+-------+-------+-------+
   *
   * Each 4-bit I field is either 0,1,2,3
   * Each 4-bit Q field is either 0,1,2,3 or 0xf (input is const zero)
   * All Q's must be 0xf or none of them may be 0xf
   * </pre>
   */
  bool set_mux  (int mux);


I hope this helps,

Martin
> 
> 
> 
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 





reply via email to

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