AD9850 DDS

wb4jfi at knology.net wb4jfi at knology.net
Sun Mar 17 13:48:03 CDT 2013


Yes, the Si570 is still available, and used a lot.  The Si570 is actually newer than many of the DDS chips.  In addition to being used in many of the Softrock-style designs, it is the LO inside the Elecraft KX3 transceiver.  It is also programmed using the standard I2C interface, rather than some non-standard bit-banging.  It has its own physical challenges.

There are significant advantages to the Si570, but it also has some drawbacks.  It generates a square wave, DDS can create much closer to sine waves.  The Si570 also has some issues with sweeping the frequency, you must “freeze” the output when changing frequency beyond a certain percentage, and even then, if you jump too far, it has discontinuities which cause audible pops if used as a receiver LO.

A DDS chip can move all over in frequency without these discontinuities, but it’s RF output level drops as the frequency is increased, while the Si570 output level is constant.  For some applications, such as a QSD receiver LO, having a sine wave is actually a detriment, you want to slam the switches on and off.  This is usually done with flip-flops, which also generate the 90-degree I and Q switching signals.  But, for a nice, clean signal generator, the DDS creates a cleaner sine wave, less harmonics, and therefore is better for a bench test device.

Both DDS and Si570 devices have good points and bad points.  Both require some fancy math to get accurate frequency control, at least as far as MCUs go.  The DDS is a little easier to calculate the FTW compared to the Si570.  I’ve got both DDS and Si570 devices that I use.

Following for DDS only:
One thing I got backwards below, due to not being awake!  The division of 2^32 by the clock yields the number of bits-per-Hertz, not the other way around.

As another tip, the master oscillator’s actual frequency may need calibrating, as it will NOT be exactly what it it labeled, maybe by a few kHz.  I generally do this by going into a special “calibrate” function that allows you to slip the clock frequency up or down a little, and then comparing the received signal to a known frequency.  Having a GPS with 10MHz output is one option, as is using a Rubidium standard.  Or, listen to WWV on 10MHz, and carefully zero-beat.  Once the cal is done, I generally save the new clock frequency (on paper and/or inside an eeprom in a PIC or Arduino).

Another note: you only need to do the bits-per-Hertz calculation (2^32/clock) once per power-cycle (except during calibration), and store it in a static variable.  After that, any frequency changes only need to multiply that number by the actual frequency (in Hertz) that you want.  This saves some time.  And, this step is where most of the math issues come up.  Doing 32-bit by 32-bit multiplications can yield 64-bit results.  PIcs and Si570 float libraries do not have the resolution, plus they are extremely slow.  Integer math is also a problem on the Arduino.  Unsigned long-longs (64-bits) seem OK in the PIC C library, but can have problems in the Arduino.  I had a lot of problems trying to get the Si570 math to work in the Arduino, which was also complicated by having to use some C and some C++ statements, as I could not get it to work otherwise.  But, I’m not a professional programmer, only a simple C hacker.
73, Terry, WB4JFI


From: Martin 
Sent: Sunday, March 17, 2013 10:21 AM
To: wb4jfi at knology.net 
Cc: Alex Fraser ; tacos at amrad.org 
Subject: Re: AD9850 DDS

Is the Si570 still available?  Updated part?

More on DDS vs Si570

Useful Analog Deveices DDS tool

Martin





On Sun, Mar 17, 2013 at 8:30 AM, <wb4jfi at knology.net> wrote:

  If you just apply power, you will see an RF signal out of the DDS (make sure any “sleep” hardware pin is OFF – not in sleep mode), but the frequency may not always be the same.  I think that it does default to certain values, but don’t remember with the 9850.  The AD9850 data sheet should tell you what the default power-up values are for the various parameters.  If I remember correctly, there is also a hardware line that must be either high or low to select serial-loading of data.

  There are also more bits than just the FTW that must be loaded into the AD9850 each time.  I will look at the data sheet again, I suggest that you become rather familiar with the data sheet.  I think there are like 40-bits that must be loaded each time, with 32(?) being the FTW.

  The FTW calculations are generally the same for all Analog Devices DDS chips.  First, you divide the number of bits in the FTW (2^32, or 4 billion-something) by the master oscillator frequency (in Hertz), which yields the number of Hertz per bit (or sub-Hertz per bit actually).  You then multiply that number by the frequency that you want generated.  The 32-bit word result is the FTW that must be sent to the DDS chip.  Add that to whatever other bits are necessary, and then crank all those bits out one at a time, while toggling the clock line.  I can’t seem to find my AD9850 data sheet at the moment, and must head back to bed after feeding the cats....  more later.  (the above is from memory)  Read carefully the data sheet, especially regarding phase of clock versus data bit transitions, especially at the end of the writing process.
  Terry


  <snip>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://amrad.org/pipermail/tacos/attachments/20130317/821bf4a1/attachment.html>


More information about the Tacos mailing list