This is an old revision of the document!
A completely open design for a function/waveform generator: hardware, firmware, software
Waveforms we want (in order of importance)
Frequency range:
Two options for chip 'styles' is the all-in-one oscillator (ICL3038, etc) +PLL or DDS
All-in-one is nice, although not very stable w/o PLL. Two options available, MAX038 & XR220.
Pros: easy, cheap, simple Cons: unavailable, PLL required
Direct-Digital-Synthesis, currently popular. Basically: wavetable + 24 or 32 bit adder and sampling above nyquist to get precision waveforms.
Either roll your own or buy off the shelf (basically from AD)
They come with sync out, very very high speeds. But only sine and square out, and in small packages (TSSOP).
Idea #1: Get a chunk of SRAM (like, say, CY7C1399B-12VXC), fill it with your wavetable, then clock it with a variable clock (LTC6903 1KHz→68MHz !!) maybe use along with adder/scaler to provide more range at high/low freq. We could get up to 4MHz, nice!
Idea #2: SRAM + 32 bit adder, just like AD. Maybe make the adder in a CPLD or something else that can be clocked super-fast (See ELM's DDS generator)
Idea #3: Hand-roll the adder code into an AVR microcontroller, and use onboard memory. Lots of examples: 9 Cycles of ASM w/LPM (note: can't we do this in 8 cycles by using LD? just make sure we have an AVR with more than 256b of RAM)
Other possibilities include going with an SX instead of AVR: SX28 can be clocked up to 75MIPS…but will draw an insane 100mA from 5V. jesus!)