latest release


CI-V DDS, Source code, version 1.0


CI-V DDS, HEX File, version 1.0


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


CI-V DDS Controller

DDS stands for Direct Digital Synthesis. It's a way to digitally generate a sine wave. You tell the DDS what frequency you want it to generate by sending it a control word with the needed info. The DDS will then look up in a table what values it needs to send to the internal ADC (Analog to Digital Converter) so that the desired signal appears on the output of the ADC.

What Can it do?

A DDS could replace, for instance, a crystal oscillator of a PSK-20 rig so that software like MixW and Digipan can change the frequency of the rig using the DDS. This means that a radio that is otherwise bound to a single frequency can now be turned into a frequency agile radio.

what does it look like?

My prototype looks something like this:

CI-V DDS Controller

As you can see, the Altoids company finally decided, after much begging on my part, to put my picture on the lid.

CI-V DDS Controller

Why is it that us hams find staring at a PCB entertaining?

And this is what it produces when told to generate a 32 MHz signal:

CI-V DDS Controllerhave a

The counter doesn't show a very accurate frequency reading because the reference oscillator is due for calibration.

how did you do it?

For this project I used the DDS-60 kit available at AmQRP and build a SerialDDS Controller following the notes on the AmQRP web site. I then adapted the Serial DDS Controller software so that the controller would accept Icom's CI-V commands and would work with the newer AD9851 DDS chip that is now used for the DDS-60 kit.

what else do I need?

The CI-V DDS Controller does not need a CI-V level converter as you would need for Icom radios. It can be directly connected to the serial port of a PC. This controller implements two CI-V commands to set the frequency of the DDS and one command to read the frequency of the DDS VFO and send the result back to the PC. These commands are universally used by all remote control enabled software. This means that you are not limited to any particular software to control the rig. If you use a logging program on the computer, chances are that it will work just fine with this CI-V Controller.

what do i need from you?

The only thing you need from me is the software that can be programmed into the PIC processor. Download the software, save it to a file with a ".hex" extension and then program the PIC with a simple programmer and some software like IC-Prog. This is my lil' homebrew JDM PIC programmer I use to program the 16F628 PIC processor:

CI-V DDS Controller

Is there anything else I need to know?

Make sure that the software you use to control the CI-V DDS Controller is set to communicate with a Icom IC-756Pro radio. The Controller is programmed to emulate this rig. The hexadecimal address for this radio is "5C". Also set the software to communicate with the controller at 9600 baud, 8 data bits, no parity bits, and one stop bit (two stop bits is fine too).

what else can I do with it?

You can use the CI-V DDS Controller just like the Serial DDS Controller as a signal generator on the work bench. And not only could you use it to make rock bound rigs frequency agile, you can also use it as the local oscillator for a drifty rig like a Heathkit HW-101. Or how about adding computer control to your HW-8? :-) You can also implement new commands for this controller so that you can, for instance, switch the AGC on and off on a rig. The foundation is laid here, it's up to you to build something useful on it.

can I have the source code?

Sure. Just download it and play with it using the free development software MPLAB available from Microchip. The software is published under my "have at it" license.

Any conclusions?

I just hope that this page will encourage you to look at the great projects others have published, and perhaps take their work and mold it into something new like I did here.

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

--Alex, KR1ST