I now have a range of PIC based sources for generating three of the WSJT modes JT65, JT4 and WSPR at audio / subcarrier frequencies.
There are two parts. One is a "dumb DDS" built around a 16F627 or '628 PIC and an R-2R ladder. When clocked with a 20MHz (or higher)
crystal this can generate frequencies based on a DDS clock at 1/192 of this frequency, so tones up to about 30kHz can be formed with the 24
bit DDS to about 6mHz resolution. It was originally designed for subcarrier modulation of LEDs for optical comms, but is equally suited
to direct audio generation. The frequency of this DDS unit is set via a synchronous three-wire interface similar to the SPI bus used on
many chips these days.
Another 16F627 or '628 PIC is configured as a code generator and sends frequency setting words to
the DDS corresponding to each symbol of the
modulation being transmitted. PIC code has been written for JT65, JT4 and WSPR modes. Any of the three JT65 subvariants, and four
pre-selected ones of JT4 can be chosen via a switch, enabling rapid comparison without reprogramming the chip
Timing information comes from a GPS receiver (or other timing source) , and options are included for NMEA or Motorola Oncore type serial
data. Alternatively, free-running versions of PIC code for each of the three modulation types is also included. Here the PIC crystal
oscillator keeps time, and synchronisation is set by turning it on or resetting at the 00 seconds point. Typical crystal oscillator
stability allows operation for several hours or even a day or two before timing has drifted sufficient to stop decoding.
More details can be found at http://www.g4jnt.com/OpticalComms/LF_DDS_Beacon_Source.pdf
all PIC code and examples along with design utilities are in the downloadable archive http://www.g4jnt.com/OpticalComms/LF_DDS_Beacon.zip
Note that you will need to be able to both assemble and 'blow' your own PICs. I'm not prepared to supply customised code for every user -
it just gets too complicated :-)