logob3.gif (7247 bytes)

Site Search Feedback Site Map Contact Us Copyright Info

 
Andraka Consulting Group, Inc.  "the high performance FPGA design specialist"  

The CORDIC Algorithm

 
     
Home
Up
     

 

 

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.

Pdficons.gif (153 bytes) 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

And here is my partial bibliography of CORDIC papers not already listed in the University of Texas bibliograpy

Get adobe acrobat reader to view the Pdficons.gif (153 bytes) PDF file above
Acrobat and the Acrobat logo are trademarks of Adobe Systems Incorporated

 

 
Send mail to info@andraka.com with questions or comments about this web site.
Images and text Copyright 1998-2007 Andraka Consulting Group, Inc.
Images and text may not be reproduced without express written permission from Andraka Consulting Group, Inc.  
This site url is http://www.andraka.com
Last modified: March 16, 2007