Coordinate Rotation Digital Computer (CORDIC) is a method for computing
elementary functions using minimal hardware such as shifts, adds/subs and compares. CORDIC works
by rotating the coordinate system through a constant angle until the angle reduces to zero.
The angle offsets are selected such that the operations on X and Y are only shifts and
adds. The trigonometric CORDIC algorithms were originally developed as a digital solution
for real time navigation problems. The original work is credited to Jack Volder [1].
The trigonometric algorithm is called CORDIC which is based on rotation mode,
while other functions such as square root are implemented using an incremental expression of
the desired function. The CORDIC algorithm has found its way into diverse applications
including the 8,087 math coprocessor [2]. The HP-35 calculator, radar signal processor [3] and
robotics. CORDIC rotation has also been proposed for computing discrete Fourier [4], discrete
cosine [4], discrete Hartley [5], Chirp-Z transform [6], filtering [4], singular value
decomposition [7] and solving linear systems [8]. The study
of coordinate rotation algorithms indicates that specialized VLSI
could be designed to perform the eigenvalue—eigenvector decomposition
[9], and explain how it works and its implementation specific to FPGAs [10]. We first give
a brief description of the theory behind the algorithm and the IEEE-754 single precision
32-bit floating point format.
All the trigonometric functions can be computed or derived from functions using
vector rotations. Vector rotation can also be used for polar to rectangular and rectangular to
polar conversions, for vector magnitude and as a building block in certain transforms such as
the DFT and DCT (Figure 1). The CORDIC algorithm uses only shifts and adds for
performing vector rotations. |