discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] usrp initialization


From: Hans Glitsch
Subject: [Discuss-gnuradio] usrp initialization
Date: Thu, 18 Oct 2007 13:34:50 -0700

Hi,

Please help me figure out the strange problem I'm having.

In my system, the software is receiving four interleaved streams of complex data from the usrp. I am trying to receive two channels on each input of the usrp, so I setup the usrp to ddc the center of the two channels down to zero frequency and then (in gnuradio) I seperate the channels by doing another ddc to bring each channel to zero hz and then a low pass filter. The second channel requires a conjugation before the ddc to flip it to the positive side of the freq spectrum.

I'm getting a strange behavior only on RX1 (input A of the Basic RX in position1 of the usrp). If I input a signal only on channel 1, to all four usrp inputs it bleeds over to channel 2 at about 60% amplitude only on RX1. The same thing happens if I input a signal only on channel 2 -- it bleeds over about 60% to channel 1.

This behavior does not happen on the other three receivers at all and continues to present itself only on RX1 even if I swap the cables providing signals to the four usrp inputs. I have even tried swapping the usrp, both basic RX boards, and the cables inside the usrp enclosure. The problem always stays with RX1. I know the problem is somewhere in the usrp, the way I initialize the usrp, or in my software.

I don't think the problem is in my software because I simply use four instances of the same code to process all four inputs. But I'm not sure yet.

I'm using the following python to initialize the usrp, then I pass the usrp to c++ code via sm.Run_SM1680(adc._u).

Please tell me if you see anything wrong with this.

Thanks,
Hans

#!/usr/bin/env python
from gnuradio import usrp, gru
from gnuradio import sm
def main():
 nchan = 4
 adc = usrp.source_c(0, 250, fpga_filename="std_4rx_0tx.rbf")
 if not adc.set_nchannels(nchan):
sys.stderr.write('set_nchannels(%d) failed to set number of channels\n' % (nchan,))
   raise SystemExit
 adc._write_oe( 0, 0xffff, 0xffff )
 adc.write_io( 0, 0xfff7, 0xffff )
 gain = 0
 subdev = adc.db[0] + adc.db[1]
 subdev[0].set_gain(gain)
 subdev[1].set_gain(gain)
 adc.set_mux(gru.hexint(0xf3f2f1f0))
 target_freq = sm.Get_Center()
 for i in range(len(subdev)):
   r = usrp.tune(adc, i, subdev[i], target_freq)
   if not r:
print "set_freq: failed to set subdev[%d] freq to %f" % (i, target_freq)
       raise SystemExit
 sm.Run_SM1680(adc._u)

if __name__ == "__main__":
main()





reply via email to

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