[USRP-users] TwinRX + X300 Usage
derek.kozel at ettus.com
Thu Jul 27 18:00:08 EDT 2017
Your configuration of the LO sharing is all reasonable. You are not using
timed commands so you will not get repeatable phase offsets between the
channels due to the DDC's CORDIC and the RX frontend's IF downconverter not
being synchronously reset. The call to set_rx_freq for each channel should
be executed with the same command time.
Have you tuned the gain to maximize your signal? I do not have a signal
generator connected at the moment, but a gain of 60 sounds like you may
have some more headroom to increase your amplitude. This will improve noise
figure and usually SNR.
When you say that two channels are 45 dB matched, what are you measuring?
On Wed, Jul 26, 2017 at 10:27 PM, Christian Hahn via USRP-users <
usrp-users at lists.ettus.com> wrote:
> Hey USRP-users,
> 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!
> import uhd
> import time
> # 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)
> usrp.set_rx_antenna(antenna[chan], chan)
> usrp.set_rx_freq(freq, chan)
> usrp.set_rx_gain(gain, chan)
> # Capture samples
> samps = usrp.receive(num_samples, list(range(usrp.get_rx_num_channels())),
> USRP-users mailing list
> USRP-users at lists.ettus.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the USRP-users