DDS generator with interpolated samples for Spartan3E development board

Dec 08, 2007 27 Replies

Thanks, 24 bit high speed exact sine generation with inexpensive FPGAs would be cool, I've ordered the paper collection.

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

There are high end DACs, which gets close to it:

formatting link

SNR of 114 dB from 20 Hz to 20 kHz means 19 bits accuracy, I think.

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

Further processing, normally. Audio signals are ideally recorded with enough headroom to allow mix, EQ, dynamic range adjustment and other processing, without unnecessary compromises in resolution.

At the consumption end of the chain, 24 bits is a bit unnecessary, though there are DACs pushing 20 bits.

- Brian

Oh. Audio. That never makes sense.

John

I like that idea. It takes a little more hardware than the first-order Taylor (I wrote 'Maclaurin' which isn't exactly accurate). It would require an extra lookup and also four mults for the complex multiply, provided you want an output on every cycle. But this is about the same amount of hardware as required for the 2nd-order Taylor and may be more accurate. I don't know if I'd call it an exact computation because the second lookup table it still yields an approximation.

-Kevin

Not sure I follow you about there being an approximation?

If you mean phase truncation of the fine table index, partitioning the phase accumulator 3-12-12 would give

27 bits of untruncated phase with 4K deep tables; or, 2-10-10 gives 22 bits of phase and 1K deep tables.

By 'exact', I mean that implementing the coarse*fine vector rotation with a complex multiply computes the correct value of sin/cos limited only by the numerical precision of the table values and complex multiplier; the calculation could be performed in 16 bit, 32 bit, or floating point without needing to change the basic algorithm ( vs. adding more terms onto a series expansion. )

------------------------------

Anyhow, if Frank can afford multiple cycles per output sample, the most compact implementation would probably be a word-serial CORDIC rotation, which doesn't need any multipliers at all, just three accumulators, shift muxes, and a small arctan lookup table.

I thought that had been mentioned earlier, but I don't see it in re-reading the thread tonight.

Brian

There was another thread last month in this newsgroup, with this link:

formatting link

Maybe I'll use this for the low frequency (

snipped-for-privacy@frank-buss.dehttp://www.frank-buss.de,http://www.it4-systems.de

You might also look at oscillator algorithms. Clay Turner has some recursive oscillator info that's fairly good:

formatting link
The second paper has a lot of good info. Amplitude stabilization as he discusses it is crucial.

It's not as fast as an LUT, but it's pretty flexible.

Chris

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required