Andraka Consulting group logo

Andraka Consulting Group banners

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 (121K)
Ray Andraka, FPGA '98. Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays, Feb. 22-24, 1998, Monterey, CA. pp191-200 (session 9, Novel FPGA Applications).
© Copyright 1998 by ACM, Inc. Included here by permission, © ACM, Inc.

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.
This is a "working copy" of the paper,which is identical to the camera-ready proof sent to ACM.  The definitive version (1012K) is archived on the Association of Computing Machinery's website. To download the article from ACM,  You need to first register on ACM's website.  ACM charges a download fee for non-members .

 

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

University of Texas has had an extensive online CORDIC bibliography http://devil.ece.utexas.edu , however it has only been online intermittently.  This link is to an archive at web.archive.org