[Top][All Lists]
[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