[USRP-users] TwinRX + X300 Usage
christian at kumunetworks.com
Wed Jul 26 17:27:07 EDT 2017
I am doing some experiments that involve a USRP x300 + (2) TwinRX
daughtercards. I am observing some degraded performance and would like
some advice on the manner in which I am configuring the receivers /
mainboard / daughtercards.
The experiment I am conducting involves collection of high-dynamic range
channel-estimates: similar requirements to a direction-finding problem. In
my setup, I have 1 remote transmitter, and 4 receivers.
I am least confident about how I am configuring the daughtercards since
there are no examples that I could find which use these relatively new
The observations I have made indicate abnormally high phase noise and poor
relative SNR between receivers. For example, when injecting an identical
signal into all 4 receivers, receivers 0-1 and 2-3 are 45 dB matched,
respectively. However, receivers across daughtercards are not! This is
strange since in my configuration of the USRP I intended to share the same
LO across all four receivers. Furthermore, the spectrum of each receiver
is quite spurious. I am expecting more than 45 dB SNR, at least. The
signal level into the receivers is -36 dBm (average). The PAPR of the
signal is very low < 5 dB.
This is the code I am using to configure the USRP and take a capture of
samples. It is using a thin wrapper written in Python around the
multi_usrp C++ API.
Thank you very much, any insight is much appreciated!
# Some parameters
freq = 1600.e6
gain = 60.
num_samples = int(10.e6)
# Create the USRP object
usrp = uhd.Uhd('type=x300,addr=192.168.50.2,second_addr=192.168.40.2')
# Configure mainboard
usrp.set_rx_subdev_spec('A:0 A:1 B:0 B:1')
# Configure receivers
source = ['internal', 'companion', 'external', 'external']
export = [True, False, False, False]
antenna = ['RX1', 'RX2', 'RX1', 'RX2']
for chan in range(usrp.get_rx_num_channels()):
usrp.set_rx_lo_source(source[chan], 'all', chan)
usrp.set_rx_lo_export_enabled(export[chan], 'all', chan)
# Capture samples
samps = usrp.receive(num_samples, list(range(usrp.get_rx_num_channels())),
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the USRP-users