What is all this CORDIC stuff anyhow?
CORDIC is an acronym for COrdinate Rotation DIgital Computer. It is a class of shift-add algorithms for rotating vectors in a plane. In a nutshell, the CORDIC rotator performs a rotation using a series of specific incremental rotation angles selected so that each is performed by a shift and add operation.
Rotation of unit vectors provides us with a way to accurately compute trig functions, as well as a mechanism for computing the magnitude and phase angle of an input vector. Vector rotation is also useful in a host of DSP applications including modulation and Fourier Transforms.
For the details, take a look at Ray's CORDIC paper (one of these days we'll put a tutorial in a web page).
Most readers find it to be a very good treatise on CORDIC, for example one reader wrote: "This is, by far, the most clear and concise explanation of the CORDIC rotator (using Givens Rotation Transform) that I've seen! It certainly beats [analysis by] power series (Taylor or Chebyshev); specifically, I badly needed a program to quickly do inverse cosine. I've heard of the CORDIC approach, but knew little about it. I read your article and wrote a successful program to do inverse cosine." But, don't take his word for it, download the paper and read it for yourself.
A survey of CORDIC algorithms for FPGAs
Describes the CORDIC algorithm in layman's terms, and discusses
implementation issues specific to FPGAs. The CORDIC algorithm is a shift-add
algorithm for computing trigonometric, hyperbolic trigonometric and linear
functions and their inverses. It can also be used for log, exponent and square
root. Common uses are sine and cosine generation, vector magnitude, polar-cartesian
conversions, and vector rotation.
For more information the CORDIC algorithm and its applications, check out these additional links:
The CORDIC FAQ at www.dsp-guru.com A different explanation that some may find easier to follow.
And another look at the CORDIC algorithm for computing sine, by Norbert Lindenbauer
And here is my partial bibliography of CORDIC papers not already listed in the University of Texas bibliograpy