Home
Up

CIRCUIT DESCRIPTION

After building and using an AD9850 DDS synthesizer based upon information from several DDS and PIC projects I very quickly came to appreciate one of the chief limitations of the single PIC control system, particularly when used in synthesizer employing a "slow" LCD frequency display.

The drawback with this type of configuration is that for every tuning step the processor has to perform a complete program cycle, often involving long iterative computations and slow dialogue with the LCD processor. The time taken for these activities limits the number of frequency tuning steps that the system can execute over a given time period and if not compensated for in some way, would produce an unbearably slow tuning rate. A couple of techniques are used to overcome this. Firstly variable rate tuning is used whereby the frequency step size increases with the speed of rotation of the tuning control, secondly a rotary encoder of relatively few increments per revolution is used to allow a reasonable rotation rate with the variable step rate function.

I found the variable rate tuning off-putting and at times difficult to use, after attempting without success to improve upon the scheme I decided to try a new approach, without variable rate tuning, with the aim of producing a true "VFO feel" to the tuning.

I rebuilt the synthesizer exchanging my home made 32 step ex-PC mouse shaft encoder for a reasonably priced 512 step HP-Agilent HEDS 9100 encoder from Farnell. I adapted a fine piece of software, jointly developed by Curtis W. Preuss WB2V, Bruce Stough AA0ED and Craig Johnson AA0ZZ and published as "siggen3a" on the PIC resources section of the NJ-QRP Web site, http://www.njqrp.org . This software was designed to operate on a single PIC DDS system for use as a signal generator or local oscillator for direct conversion transceivers. The very logical program structure and highly comprehensive line documentation was a real benefit. Having never programmed PIC’s before I used this program as a combined tutorial and a crash course in 16F84 programming! First I modified the LCD routines slightly to make them compatible with my display. Next I added an IF offset routine to adapt the system for use with my Belthorn SSB IF Module. Once I had checked that the software worked in a single PIC system I then took the bold step of splitting the software into two programs each running on a 16F84 -10 PIC, one to scan the controls and manage the DDS and the other to convert binary frequency data into ASCII and manage the LCD display. A simple serial interface allows the two PIC’s to communicate with each other.

Both PIC’s are clocked at 8.86MHz (my transceiver has a 10MHz IF and these crystals just happened to be available and were far enough away from the IF frequency so as to avoid interference).

The key to increasing the system tuning speed is that both processors run independently of each other allowing the tuning and display processes to run in parallel, until the LCD PIC calls for the current frequency. When this happens the DDS PIC passes the current binary frequency word over the serial interface and resumes scanning the controls and managing the DDS. Once it has received a new frequency update the LCD PIC processes it, formats it and feeds it the embedded LCD processor for display. An additional 10mS delay in the frequency request routine reduces the number of frequency calls to the DDS PIC further increasing the time available to the DDS PIC for the tuning process. The result is a nice "VFO like" tuning action with 10Hz steps and a 10kHz per revolution (double encoder size) tuning rate. Even though there is a delay between the displayed frequency and the actual DDS output the processes run fast enough so as not to be noticeable to the eye. The tuning action limits at about 2 rev’s per second. With further program and hardware optimisation this could be increased significantly. For example, the IF shift routine resides in the DDS PIC allowing USB/LSB switching, with my single crystal carrier oscillator and typically asymmetric ladder filter, by shifting the DDS output. With two carrier crystals and a symmetrical lattice filter this routine could reside in the LCD PIC freeing up processor time for the tuning routines.

This technique could also be applied to conventional serial programmed PLL synthesizers, perhaps using a varicap crystal oscillator conversion loop and main PLL step size of 10kHz to keep the loop tuning rate high.