Can anyone give guidelines on how to generate sine and cosine wave in VHDL?
sine and cosine wave generation
Jan 14, 2008
9 Replies
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
formatting link
K.
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.
Thanks all for your help.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required