Wow. Thanks everyone for all the comprehensive answers!
Ok it looks like a DDS IC woudl be the better choice if I go for the cost and complexity of an external IC. It beats the XR2206 as it will be xtal locked.
ATferrarri- Thanks for suggesting the binary counter idea. IF using the cost of an external IC I'd probably prefer a dedicated IC that does not need to be driven.
Nigel- Thanks for the link to the Mondo site and the 16F functions generator. It looks similar to what I anticipated as a basic system, using 8 output pins and an R2R resistor network to generate the sine. I'm not sure how it would go for the high frequencies as at 60kHz (claimed) and 5MIPS PIC that leaves only 83 instructions, and it uses a 256 entry sine table. So it's obviously not outputting 256 entries in 83 instructions. The asm source code for the sine function looks about 18 instructions so even at 20kHz that's about 27 entries per full sine wave.
Mr AL- Thanks for your input. Yes I could live with a sine waveform of 32 units amplitude resoluton (5bits). I can do the frequency generation part using some varation of bresenham or DDS so it can make an exact frequency by dithering between periods to make the desired frequency. I have a number of ways to do this and enough experience.
Did you have a suggestion of generating this 5bit waveform on a 10 MIPs PIC 18F? I can get (or make) a 5bit R2R ladder. What number of waveform entries or time resolution would be required? The PIC has to be doing some testing at the same time as the frequency generation, so ideally the generation should be interrupt based and can use about 50% of the processor time. It's still pushing the limit, if I use time resolution of 128 instructions at 10 MIPs that only gives me about 4 events per 20kHz wave...
Dougy83, thanks for the suggestion and the sample offer, but I'm still thinking if it is going to need an extenral specialty IC I may as well use one that generates the whole sine automatically.