BasicTX PLL and some TX doubts


#1

Hello community,

I’m trying to understand how signals are transmitted by the USRP with a
basicTX.
I studied a lot about Quadrature Modulation, Single Sideband
transmission…
and I’ve read all the available documentation about USRP and GNUradio.

Eric and other guys have helped me, but some doubts persists! :frowning:

There is a PLL in the BasicTX daughter board?
How tune() function access that PLL?
And for the other dboards, how tune() works for them?

If somebody could help me, i will be thankful for life!


Ronaldo A. Viera Nunez
Electrical Engineering student and Telecommunications researcher
assistant
Federal University of Santa Maria

Santa Maria - RS - Brasil


#2

On Tue, Jan 13, 2009 at 05:19:32PM -0200, Ronaldo N. wrote:

How tune() function access that PLL?
And for the other dboards, how tune() works for them?

If somebody could help me, i will be thankful for life!

Please read the USRP FAQ then ask again if you’re still not clear.

http://gnuradio.org/trac/wiki/UsrpFAQ
http://gnuradio.org/trac/attachment/wiki/UsrpFAQ/USRP_Documentation.pdf

Have you looked at the code that implements tune?

Eric


#3

Thank you for your answer Mr. Blossom,

Please read the USRP FAQ then ask again if you’re still not clear.

http://gnuradio.org/trac/wiki/UsrpFAQhttp://gnuradio.org/trac/wiki/UsrpFAQ

http://gnuradio.org/trac/attachment/wiki/UsrpFAQ/USRP_Documentation.pdf

Sorry, but, I read all FAQ, and i just found the answer of my third
question
(“And for the other dboards, how tune() works for them?”)

Have you looked at the code that implements tune?

Eric

usrp_stardard.{cc,h}? Yes…

I (think) understood the tune process when I read it.

First, the “tune()” tells to d’board to tune as close as it can. After,
with
the result of that operation (maybe, f_db - f_target = f_duc) “tune()”
configure the DUC. Is that right? (Be free to correct me…)

But, the BasicTX doesn’t have a PLL, or a VCO or another component to
tune
at a frequency…Should FPGA do tune job for the basicTX?

Please, be free to correct my affirmations…

Sorry my poor English (and my ignorance) , thanks all!

Ronaldo

2009/1/13 Eric B. removed_email_address@domain.invalid

Have you looked at the code that implements tune?

Eric


Ronaldo A. Viera Nunez
Acadêmico/Engenharia Elétrica
Universidade Federal de Santa Maria

Santa Maria - RS - Brasil


#4

Thank you Eric, I think that the things are going to be clearly in my
head
now.

“returns the actual baseband frequency that corresponds to DC in the
IF.”
what this means? The baseband frequency is the frequency of the signal(a
tone, a constant, noise, file, music…) that i want to tx, isn’t it?
Why
does it correspond to DC in IF?

I would like to know if I send want tx a signal of 1MHz at 100 MHz, i
need
to upconvert it 99 MHz. So what are the values of the COARSE MODULATOR
and
the value of FINE MODULATOR for that frequency (99MHz)?

Regards,

Ronaldo

2009/1/14 Eric B. removed_email_address@domain.invalid

Sorry, but, I read all FAQ, and i just found the answer of my third

method that behaves exactly as specified. That is, it attempts to
//

The end result of this is that there is no special case and all the
tuning ends up getting done in the DUC since no matter where you ask
it to tune, it returns 0 Hz.

Eric


Ronaldo A. Viera Nunez
Acadêmico/Engenharia Elétrica
Universidade Federal de Santa Maria

Santa Maria - RS - Brasil


#5

On Wed, Jan 14, 2009 at 12:31:30AM -0200, Ronaldo N. wrote:

Have you looked at the code that implements tune?

But, the BasicTX doesn’t have a PLL, or a VCO or another component to tune
at a frequency…Should FPGA do tune job for the basicTX?

Correct, it doesn’t have a PLL or VCO, but it does have a set_freq
method that behaves exactly as specified. That is, it attempts to
tune as close as it can and returns the actual baseband frequency that
corresponds to DC in the IF.

struct freq_result_t
db_basic_tx::set_freq(double target_freq)
{
  // Set the frequency.
  //
  // @param freq:  target RF frequency in Hz
  // @type freq:   double
  //
  // @returns (ok, actual_baseband_freq) where:
  //   ok is True or False and indicates success or failure,
  //   actual_baseband_freq is the RF frequency that corresponds to 

DC in the IF.

  struct freq_result_t args = {false, 0};
  args.ok = true;
  args.baseband_freq = 0.0;
  return args;
}

The end result of this is that there is no special case and all the
tuning ends up getting done in the DUC since no matter where you ask
it to tune, it returns 0 Hz.

Eric