Single-tone test using USRP2 with RFX2400 and XCVR2450

Hi, all.

I did single-tone test using USRP2 with RFX2400 and XCVR2450.
There are some undesired signals in the results.

My single-tone test is as follows:

  • Wired connection between USRP2 and Spectrum analyzer
  • Single-tone is transmitted from USRP2 using the following commands
    ./usrp2_siggen.py -f xxxx
    ./usrp2_siggen.py -f xxxx -w xxxx
  • For daughter board, RFX2400, XCVR2450 and Basic TX are tested
  • Newest GNU radio and firmware
  • PC specification (I’m pretty sure that the spec is good enough to
    transmit single-tone stably)
    – CPU: Intel core2quad processor Q9550
    – Ethernet card: Intel 82567LM Gigabit LAN (PCI express slot)
    – Memory: 4GB DDR2 800 MHz SDRAM memory

Except the case of Basic TX, there are some undesired signals in the
results.
So, I guess the undesired signals are generated by RFX2400 and XCVR2450,
not by mother board.
I’m afraid that the undesired signals cause some kind of distortion of
desired signal.
(In fact, when I transmit OFDM signal using XCVR2450, I fail to
demodulate the received OFDM signal)

The resulting spectrum figures are shown in the following link and I
marked
the undesired signals in the figures.

http://141.223.23.5/Spectrum.zip

Short descriptions for each figures are as follows:

  1. File name: RFX2400_2p375GHz_01
    Used daughter board: RFX2400
    GNU radio command: ./usrp2_siggen.py -f 2.375e9

  2. File name: RFX2400_2p375GHz_02
    Used daughter board: RFX2400
    GNU radio command: ./usrp2_siggen.py -f 2.375e9 -w 2M

  3. File name: XCVR2450_2p52GHz_01
    Used daughter board: XCVR2450
    GNU radio command: ./usrp2_siggen.py -f 2.52e9

  4. File name: XCVR2450_2p52GHz_02
    Used daughter board: XCVR2450
    GNU radio command: ./usrp2_siggen.py -f 2.52e9 -w 2M

  5. File name: BasicTX_30MHz_01
    Used daughter board: Basic TX
    GNU radio command: ./usrp2_siggen.py -f 30e6

  6. File name: BasicTX_30MHz_02
    Used daughter board: Basic TX
    GNU radio command: ./usrp2_siggen.py -f 30e6 -w 2M

I would appreciate that if somebody let me know what is problem of my
daughter boards or my test.
Thanks.

Yongsang K. wrote:

  • For daughter board, RFX2400, XCVR2450 and Basic TX are tested
    not by mother board.
    I’m afraid that the undesired signals cause some kind of distortion of
    desired signal.
    (In fact, when I transmit OFDM signal using XCVR2450, I fail to
    demodulate the received OFDM signal)

The resulting spectrum figures are shown in the following link and I
marked
the undesired signals in the figures.

What you are seeing are normal transmitter non-idealities, including DC
offset (aka carrier feedthrough), and IQ imbalance (aka sideband
suppression. These can be improved through tuning, but they are not bad
as is. Also, on the XCVR you are seeing the phase noise skirts as well.

Matt

Matt E. wrote:

Yongsang K. wrote:

What you are seeing are normal transmitter non-idealities, including DC
offset (aka carrier feedthrough), and IQ imbalance (aka sideband
suppression. These can be improved through tuning, but they are not bad
as is. Also, on the XCVR you are seeing the phase noise skirts as well.

Matt

With the XCVR2450 and USRP2, we also observed that the 2MHz (at
baseband) is
appearing at (f_c-2MHz) not (f_c+2MHz) where f_c is the center
frequency. It
seems that the complex conjugate of original baseband signal is
transmitted at
XCVR2450.

We verified this with OFDM signal which is demodulated
successfully when we flip the left and right of the FFT ouput before
processing (integer frequency offset compensation, channel estimation,
etc)
at the receiver.

Changkyu Seol wrote:

With the XCVR2450 and USRP2, we also observed that the 2MHz (at
etc)
at the receiver.

Please update your firmware and try again. I believe I have fixed this
problem now.

Matt

On Mon, Apr 27, 2009 at 12:50 PM, Matt E. [email protected] wrote:

Please update your firmware and try again. I believe I have fixed this
problem now.

The USRP2 firmware that contains this fix has been posted to:

http://gnuradio.org/releases/usrp2-bin/trunk/txrx_edk10.1_r10925.bin

Johnathan

On Fri, Apr 24, 2009 at 12:30 AM, Yongsang K.[email protected]
wrote:

  • For daughter board, RFX2400, XCVR2450 and Basic TX are tested
  • Newest GNU radio and firmware

I [believe I] am having a similar problem with USRP rev4 and RFX2400.
Sending a QAM-modulated signal in a 2.5GHz carrier with no
synchronization gives me a lot of background noise before the actual
signal. So I am prepending a 2MHz sine wave in a separate block,
executed prior to the QAM modulation, but I cannot find the impulses
in ± 2M after the receiving USRP downconverts it from 2.5GHz.
The part of the signal which is supposed to contain the 2M wave shows
both real and imaginary sinusoidal signals, always close to DC by 3k
Hz or so. Am I missing anything?


Igor A.

On Fri, Aug 28, 2009 at 11:09 AM, Igor A.[email protected]
wrote:


Igor A.

That sounds like it could be a frequency offset between TX and RX. You
say you aren’t synchronized (which I interpret to mean you don’t lock
the clocks of the TX and RX together somehow) - do you have a costas
or similar carrier offset recovery block/process on your receiver?


Doug G.
[email protected]

Johnathan C. wrote:

Please update your firmware and try again. ?I believe I have fixed this
problem now.

The USRP2 firmware that contains this fix has been posted to:

http://gnuradio.org/releases/usrp2-bin/trunk/txrx_edk10.1_r10925.bin

Johnathan

Thank you very much for such quick update.
The flipping problem is resolved with updated firmware.

Changkyu Seol

On Fri, Aug 28, 2009 at 12:56 PM, Douglas
Geiger[email protected] wrote:

That sounds like it could be a frequency offset between TX and RX. You
say you aren’t synchronized (which I interpret to mean you don’t lock
the clocks of the TX and RX together somehow) - do you have a costas
or similar carrier offset recovery block/process on your receiver?

Correct, the USRPs are physically disconnected.
Right now, the graphs are:

sig_source_f → float_to_complex → head → usrp.sink_c

usrp.source_c → file_sink (on the other PC)

TX usrp sends the first 1000 cycles of a 2MHz sine wave (sig_source
with 4MS/s), then the “training graph” is disconnected and another one
with the QAM modulator kicks in. Both scripts tune to 2.5G.
The strange thing is no matter what frequency I set the sig_source to
(already tried 1.5k, 2k, 1M and 2MHz, sampling frequency 4MS/s), the
fft on matlab always shows a single impulse at aproximately -3kHz. In
the time domain, the signal is sinusoidal on both real and imaginary
parts, when I expect it to be only real since the carrier has (should
have) been removed.

I believe I am missing some trivial concept here.


Igor A.

On Fri, Aug 28, 2009 at 02:05:02PM -0300, Igor A. wrote:

sig_source_f -> float_to_complex -> head -> usrp.sink_c
If you’re trying to send a sine wave, this will work much better:
(Generates a complex sinusoid == exp(jwt))

sig_source_c -> head -> usrp.sink_c

Or you could use a hilbert transform to generate the quadrature
component. float_to_complex will be setting Q to zero the way you’re
using it.

have) been removed.

I believe I am missing some trivial concept here.

See above.

Eric

On Fri, Aug 28, 2009 at 5:22 PM, Eric B.[email protected] wrote:

If you’re trying to send a sine wave, this will work much better:
(Generates a complex sinusoid == exp(jwt))

sig_source_c → head → usrp.sink_c

Or you could use a hilbert transform to generate the quadrature
component. float_to_complex will be setting Q to zero the way you’re
using it.

Yes, setting Q to zero was the original idea. The whole point of using
a sine wave was to have a better estimation of when the QAM signal
actually started, but this “solution” gave me another problem to work
on :slight_smile:
My question is why the received signal has sinusoidal components on
both I and Q given that the wave has been “translated” to 2.5G (upon
tx) and then back to DC (after the FPGA in rx). Should I not expect
two impulses at ± 2M? Instead, what I get is a single impulse at
aproximately -3kHz, regardless of the frequency set on the sig_source.

Eric


Igor A.