sine and cosine wave generation

Jan 14, 2008 9 Replies

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