On 11/03/2010 04:00 PM, Steve Mcmahon wrote:
I am still somewhat new to GNU Radio. I am running GNU Radio 3.3.0 under
openSUSE 11.2, and I have two USRP2 boards, each with a WBX daughterboard. I
need some help understanding some fundamental things about GNU Radio and the
USRP2 and upconversion.
I am trying generate a tone at 900.001 MHz (900,001,000 Hz). I am using GRC to construct a simple
flow graph where I have a signal source block generating a 1 khz cosine at a sample rate of 195.312
khz (=100e6/512), connected to a USRP2 sink block with the "decimation" parameter set to
512, and with the "frequency" parameter set to 900M. I then look at the output on a
spectrum analyzer. My understanding was that I should see a clear spike at 900.001 MHz, but I
don't. Instead I see a peak at 899.99701 MHz. What am I doing wrong? I'm using the internal USRP2
clock. Is this happening because the internal clock is good to only 7ppm?
There are two sources of error--one, as you've observed is the precision
of the reference clock on the USRP2. And the other is whatever residual
measurement error your
Spectrum Analyser has. Synthesized LOs are only as good as the reference
clock, at least from
a frequency-precision perspective. If you want to do better than that, then
you can use an
external 10MHz reference clock, such as a GPS frequency standard.
This is entirely normal for synthesized RF gear. Measure just about any
commercial radio out there with a precision measurement device, and there'll be
frequency error, unless you get lucky.
It's usual in telecom systems for there to be some kind of AFC on the
receive side to compensate for
transmit-side frequency error.
In general, how do I need to setup the frequency of a USRP2 source if I want to place tones in the
spectrum? I thought it was simple upconversion. If I want to modulate a multitone signal (say with
sine components 1 KHz, 3 khz, and 7 khz) to obtain an upconverted signal with tones at 901 MHz, 903
MHz, and 907 MHz, then I simply set the "frequency" parameter of the USRP2 sink to 900
MHz, right? How exactly does the USRP2 do the upconversion? What exactly does the
"frequency" parameter do?
The USRP2 takes your quadrature-sampled baseband signal, and
interpolates it up to the required Tx-side sampling rate. It programs the Tx
LO on the daughtercard to
the desired frequency, and sends it on to the Tx mixer. Sometimes, due to LO
size limitations on specific daughtercards, the USRP2 FPGA will use a DUC
stage to get to exactly the desired frequency.
I'm not sure whether you meant 901,903 and 907Mhz, or 900.001MHz, 900.003Mhz,
For purposes of experiment, you can have 3 different signal generators,
add their outputs, and send the resulting multi-tone baseband stream on to the