FCC Licensed Amateur Radio Operator, Extra Class

Testing and Calibrating DDS AD9910 Signal Generator

DDS AD9910 Signal Generator board with OLED display and TCXO options installed.

A fellow ham recently purchased and assembled a nice little signal generator kit consisting of a DDS AD9910 signal generator board/shield, Arduino Mega, OLED display, and TCXO option. I had borrowed it from him for the purpose of generating some modulated AM test signals to check the performance of some 20 MHz oscilloscopes I plan to distribute to some of the AM transmitter sites I maintain for clients of my broadcast engineering firm — Alabama Broadcast Services, LLC. My initial testing of the device’s output frequency showed it to be off considerably, so I spent some time adjusting the software settings in the device and got it aligned pretty nicely.

Initial Test Results Before Recalibration

Initial testing showed the signal generator’s output frequency to be considerably different than the selected frequency.

Initial testing of the DDS AD9910 was performed with the device set to produce a 10 MHz unmodulated sine wave output.
Viewing the output waveform on an oscilloscope.
Oscilloscope timebase was set for 0.1 uS.

Referring to the oscilloscope trace, I counted roughly 7.7 major graticules. Multiplying that time 0.1 uS and taking the inverse of that value resulted in a measured output frequency of approximately 13.2 MHz — way off from the expected 10 MHz value.

Recalibration of the device for accurate output frequency

For the purposes of adjusting the settings and calibrating the output frequency, I opted to perform the output calibration at a frequency of 1.0 MHz.

These were the initial settings which I found in the device’s software, prior to changing them and calibrating the frequency offset. Of note was the fact that the clock source option was set to “EXT OSC” (external oscillator.)

I wanted to calibrate the device to be as accurate as possible without the use of an external clock signal, so I changed that setting to “TCXO” so it would use the installed TCXO, after which I worked with the clock frequency and offset settings to calibrate the device for as close to 1.000000 MHz as possible.

Settings which produced a nice 1.000000 MHz sinewave output from the DDS AD9910 Signal Generator
H-P Frequency Counter showing output to be precisely 1.000000 MHz after changing the clock source, clock frequency, and offset settings.

Testing the DDS AD9910 at 5.0 MHz after calibration. Let’s see how close it is…

DDS AD9910 set to produce 5 MHz unmodulated sinewave output.
Frequency counter says: 5.000000 MHz on the nose. Can’t get any closer than that at 1 Hz resolution

So, now let’s try it dialed-down to its minimum output frequency of 100 KHz…

Device set to produce 100 KHz unmodulated sinewave.
100 KHz on the nose. Looking good so far.

Now let’s see how it does at some higher frequencies…

Device set to produce a 100 MHz unmodulated sinewave. (Forgive the missing portion of the text on the display: that’s due to the camera’s shutter speed being faster than the refresh rate of the OLED display, which makes it a bit tricky to capture in photos.)
100.000000 MHz. Still precise all the way down to the 1 Hz level.

Continued testing all the way up to 400 MHz showed the device to be extremely accurate. In fact, at 400 MHz, the frequency measured 400.000014 MHz, an error of only 3.5 to the minus 8th, or — to phrase it another way — 0.035 ppm frequency error. I’d say that’s quite impressive for a device which cost around $160. I’ve seen devices costing up into the thousands of dollars which don’t perform nearly that well.

Oscilloscope and Spectrum Analyzer Views At 100 MHz output setting…

Output looks pretty smooth and stable at 100 MHz when viewed on the oscilloscope.
Viewing the output on my calibrated Siglent SSA3021X Spectrum Analyzer with a 100 MHz marker set to frequency count function, the output shows to be precisely 100.000000 MHz. Again, it’s on the money all the way down to the 1 Hz position. It doesn’t start showing any frequency error at the 1 Hz level or above until the device is set to operate at frequencies above about 200 MHz. Also of note, the calibrated spectrum analyzer showed the output level of the 100 MHz sinewave to be -20.89 dBm with the DDS AD9910 set to produce a level of -22 dBm. I can tolerate a 1 dBm or so error down at those levels any day. At higher levels (up to 0 dBm setting) it seems to be a bit more inaccurate in terms of output level, with an actual output of -3.16 dBm when set to 0.0 dBm, but I think there’s an amplitude calibration adjustment in the device’s software — which I opted not to delve into. I’ll leave that for the owner to play around with, as he might want to make some core clock frequency and other settings adjustments, which will allow the device to still produce relatively clean output all the way up to 600 MHz by upping the core clock speed.

Summary and My Opinion

Overall, I give this device high marks. At the price point of around $160, I have not yet handled or tested another device that’s this accurate in terms of frequency accuracy and stability, although there are probably some out there, given the proliferation of inexpensive yet relatively sophisticated signal generators which have hit the market as of late. The frequency was not difficult to get calibrated and far exceeded my initial expectations. I’d say my friend definitely got his money’s worth. Now… if he’ll just get to work on 3-D printing a case to hold it and make it convenient to use, I just might have to purchase one for my lab bench and tool bag!

PS: Further Testing and Notes After Device Left Running for An Additional Hour Or So After Calibration and Testing…

After letting the DDS AD9910 run for a period of time (long enough to transfer images and write the above post), I went back and took a look at the output with my Siglent SSA3021X Spectrum Analyzer to check for harmonics and spurious outputs.

The device is producing some harmonics, but they are notably lower in amplitude than the set frequency. As seen in this spectrum analyzer capture, with the device set to produce a 100 MHz unmodulated sinewave output, the level of the first harmonic at 200 MHz is 68.26 dB below the 100 MHz signal. The 300 Hz 2nd harmonic is 70.44 dB down, and the 4th harmonic at 500 MHz is 79.83 dB down. There are also some visible spurious outputs at various frequencies, but there are accessory filters available for the device which would clear most — if not all — of these up. There are also some adjustments in the software which might reduce these, but I didn’t play around with those. Again, I’ll let my buddy (to whom this device belongs) toy around with all those options if he needs the device to have cleaner output than it has as currently configured. I also noted that the output amplitude is now measuring 0.21 dBm with the device set for 0.0 dBm output, so the amplitude is now much closer to the set value than before. I’m guessing that mounting the device in an enclosure would improve its stability. There is also an OCXO option available when ordering the device/kit, which would likely improve its frequency stability and overall performance.

The output frequency measured 100.000003 MHz (a 3 Hz error) during this follow-up/additional testing, which is a miniscule 0.03 ppm error, so unless it drifts further than that, I’d say the stability is still looking really good. I do plan to let it sit on the lab bench powered-off for a few hours then restart it to see how accurate the output frequency is up a recheck.
Site Design and Content © 2018 by KK4ICE/Dan Gunter except where otherwise noted. All Rights Reserved.