Velocity Reviews > VHDL > Implementing the CORDIC algorithm without using Real Data Type

Implementing the CORDIC algorithm without using Real Data Type

Johnsy Joseph
Guest
Posts: n/a

 10-26-2004
Hello,

I am confused on an issue while trying to implement the CORDIC
algorithm. The values of cosine and sine functions are real numbers.
How do I implement such numbers without using the Real data type
because I want to have my design synthesizable? How do I do a work
around using the synthesizable data types like std_logic etc? Please
forgive me if my question is stupid.

Thanks for the help
Warm Regards
Sam

Eric Smith
Guest
Posts: n/a

 10-28-2004
http://www.velocityreviews.com/forums/(E-Mail Removed) (Johnsy Joseph) writes:
> I am confused on an issue while trying to implement the CORDIC
> algorithm. The values of cosine and sine functions are real numbers.
> How do I implement such numbers without using the Real data type
> because I want to have my design synthesizable?

For real inputs, the range of both the cosine and sin functions are
[-1, 1], or [0, 1] if you only need the first quadrant. Floating point
is obviously not necessary to represent that; just use a suitable
fixed-point number.

Similarly, even though the domain of cosine and sin are the entire
set of reals (or even complex), for many applications it is acceptable
to limit the domain to the range [0, 2*pi), which can also easily be
represented in fixed-point.

CORDIC can easily be used for angles in units other than radians, as
well. I usually use angles measured as a fraction of a unit circle,
e.g., radians/2*pi. I've heard various names proposed for such a
unit of angular measure, but nothing seems definitive.

> around using the synthesizable data types like std_logic etc?

Use the unsigned type from ieee.numeric_std, and choose a width and
scale factor to get the precision you need.

Brian Drummond
Guest
Posts: n/a

 10-29-2004
On 28 Oct 2004 14:54:44 -0700, Eric Smith
<(E-Mail Removed)> wrote:

>CORDIC can easily be used for angles in units other than radians, as
>well. I usually use angles measured as a fraction of a unit circle,
>e.g., radians/2*pi. I've heard various names proposed for such a
>unit of angular measure, but nothing seems definitive.

Heh. Points. There are 32 points around the unit circle.

- Brian
(N, N by W, WNW, NW by N, NW, NW by W, ...