sine and cosine wave generation

Jan 14, 2008 9 Replies
Jump to replies (9)

Can anyone give guidelines on how to generate sine and cosine wave in VHDL?


Can anyone give guidelines on how to generate sine and cosine wave in VHDL?

Use a look-up table.

Cheers, Jon

FPGA schrieb:

A very common technique is a look-up table.

Ralf

Could you please explain in more detail

You can build a numerical oscillator:

Initialization: sin[0] = 1; cos[0] = 0;

Iteration: sin[t] = sin[t-1]-cos[t-1]*k; cos[t] = cos[t-1]+sin[t-1]*k;

The Frequency depends on k. If k is 1/2**k you do not even net a multiplier.

This only works for a continues sequence of values. If you need values in random order you must use a lookup table or CORDIC. Both are available as cores in ISE.

Kolja Sulimma cronologic ohg

library IEEE; use IEEE.MATH_REAL.all; signal x,y : real;begin x

If you slightly modify the iteration, like this:

sin[t] = sin[t-1] - cos[t-1] * k; cos[t] = cos[t-1] + sin[t] * k;

then the solution doesn't suffer from accumulating rounding errors, at the cost of some distortion.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required