Latest Release


Source Code, version 1.1.


HEX File, version 1.1


additional link

Contact information

If you have any questions, comments or suggestions, please don't hesitate to contact me at:

For QSL information, please check my information on


serial controller software for the ad9851

Before I started working on the CI-V DDS Controller software I tried to build a Serial DDS Controller, which can be found on the AmQRP web site. I loaded the code available on the Serial DDS Controller web page into a PIC and fired up the DDS and controller. The DDS didn't generate a sinus following the programmed frequency. A frequency counter connected to the output of the DDS would not settle on a single frequency and when looking at the out put on the oscilloscope it was just a horrible signal the DDS was generating. After double checking everything, I finally realized that the current DDS kit (DDS-60) offered by the good folks of AmQRP uses a different DDS chip than the when the original Serial DDS Controller was developed. The old chip was the AD9850 and the current chip is the AD9851.

the differences

The AD9851 is different from the AD9850 in several ways. I'll only highlight the differences pertinent to this project.

The AD9851 allows you to use a clock input of up to 180 MHz. Since such high frequency accurate clock signal generators can be expensive, the AD9851 allows you to use a clock signal generator up to 30 MHz and use an internal six time clock multiplier.

The DDS-60 kit comes delivered with a 30 MHz clock generator and the older kit used a 100 MHz clock generator. This affects the programming of the Serial DDS Controller in two ways. First, the control word needs to have a certain bit set so that the 6 time internal clock multiplier will be switched on. And secondly, the calculations are worked out for a 100 MHz clock, which has to be corrected for a 180 MHz (6 x 30 MHz) clock signal.

Another difference between the AD9851 and the older AD9850 is that the AD9851 has a factory test mode. This test mode can be entered if a certain combination of pulses appear on certain input pins of the AD9851. There is a note in the AD9851 datasheet warning that the AD9851 can enter the test mode upon power up and the output of the DDS can be unpredictable if it's not known what data is in the input buffer of the AD9851.

Indeed I found that when I changed the Serial DDS Controller software to correctly calculate the control word and set the correct bit for the clock multiplier, it would sometimes simply not generate a signal at all. In fact, you would have to turn off and on the Serial DDS Controller several times to make it do anything. The AD9851 DDS would sometimes enter the test mode as the datasheet noted.

To prevent this from happening I made sure that the Serial DDS Controller would clear out the buffer of the DDS when the Serial DDS Controller starts. Now the DDS will not enter the test mode anymore upon power up.

the new controller software for the dds-60

You can download the source code of the revised version, version 1.1, of the Serial DDS Controller from this site. A hex file is also available from this site to program into 16F628 PIC chip.


The Serial DDS Controller is an excellent application to get your feet wet in Direct Digital signal Synthesis. See the original web site on how to use the software. The controller and software basically give you a computer controlled signal generator up to 60 MHz, and it even offers you a scan feature.

This version 1.1 of the software does not work with the older DDS board, only with the DDS-60 kit available from AmQRP.

If you have any questions or suggestions, please do not hesitate to drop me an email.

--Alex, KR1ST