discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] default DAC setting


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] default DAC setting
Date: Fri, 22 Jan 2010 11:02:28 -0800
User-agent: Mutt/1.5.20 (2009-08-17)

On Fri, Jan 22, 2010 at 12:50:14PM -0500, Yan Nie wrote:
> Hi,
> 
> Thank you Eric. I looked at the usrp_basic.cc file, and have several 
> questions on it.

Hi Yan, 

Be sure to look at usrp_standard.cc too.  It sets some additional
AD9862 parameters.


> 1. the default AD9862 reg setting is in the following, is it correct?
> master clock for FPGA:  64MHz;
> sample_rate  going to D/A: 128MHz / 4 ;

Yes.

> NCO disabled;
> coarse modulator disabled '

These get set in usrp_standard_tx::set_tx_freq.

> interpolate 4x;

Yes.

> zero Tx Auto Tansmit/Receive reg;

That's the initial value.  The daughterboard code initializes it
depending on what kind of daughterboard is installed.

> 2. Why the DAC input rate is 64MHz but the sample_rate is 32MHz. If
> the sample_rate is the Nyquist frequency, the tx data rate should be
> lower than 16MHz, but here the DAC input rate is 64MHz, why?

The I & Q samples are multiplexed over the same bus on the way to the DAC.

This gives a complex baseband rate to the DACs of 32MS/s.

> 3. What's the difference among functions tx_tune(target_freq),
> set_tx_freq(target_freq), and using fine modulation in DAC?  What's
> the difference among these three approach for shifting the data in
> baseband to RF in pass band?

>From usrp_standard_tx:

  /*!
   * \brief High-level "tune" method.  Works for the single channel case.
   *
   * This method adjusts both the daughterboard LO and the DUC so that
   * DC in the complex baseband samples ends up at RF target_freq.
   *
   * \param chan  which DUC channel we're controlling (usually == which_side).
   * \param db    the daughterboard we're controlling.
   * \param target_freq the RF frequency we want our baseband translated to.
   * \param[out] result details how the hardware was configured.
   *
   * \returns true iff everything was successful.
   */
  bool tune(int chan, db_base_sptr db, double target_freq, usrp_tune_result 
*result);
  
  /*!
   * \brief set the frequency of the digital up converter.
   *
   * \p channel must be in the range [0,1].  \p freq is the center
   * frequency in Hz.  It must be in the range [-44M, 44M].
   * The frequency specified is quantized.  Use tx_freq to retrieve
   * the actual value used.
   */
  virtual bool set_tx_freq (int channel, double freq);  // chan: [0,1]


The daughterboard set_freq method (db_base.h) tunes only the front
end.  Note that the VCOs have discrete steps, and this method gets as
close as it can and returns information about how close it got.

set_tx_freq adjusts the coarse and fine modulator in the AD9862.
This is used to compensate for the discrete steps of the front end.

tune adjusts both of them so that 0 Hz in the complex baseband ends up
at RF target_freq.

Eric




reply via email to

[Prev in Thread] Current Thread [Next in Thread]