CORDIC Algorithm COordinate Rotation DIgital Computer - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

CORDIC Algorithm COordinate Rotation DIgital Computer

Description:

CORDIC Algorithm COordinate Rotation DIgital Computer Method for Elementary Function Evaluation (e.g., sin(z), cos(z), tan-1(y)) Originally Used for Real-time ... – PowerPoint PPT presentation

Number of Views:154
Avg rating:3.0/5.0
Slides: 23
Provided by: Mitc102
Category:

less

Transcript and Presenter's Notes

Title: CORDIC Algorithm COordinate Rotation DIgital Computer


1
CORDIC AlgorithmCOordinate Rotation DIgital
Computer
  • Method for Elementary Function Evaluation (e.g.,
    sin(z), cos(z), tan-1(y))
  • Originally Used for Real-time Navigation (Volder
    1956)
  • Idea is to Rotate a Vector in Cartesion Plane by
    Some Angle
  • Complexity Comparable to Division

2
CORDIC AlgorithmKey Ideas
If we have a computationally efficient way of
rotating a vector, we can evaluate cos, sin, and
tan1 functions Rotation by an arbitrary angle is
difficult, so we perform psuedorotations Use
special angles to synthesize a desired angle z z
a(1) a(2) . . . a(m)
3
CORDIC AlgorithmKey Ideas
Rotate the vector OE (i) with end point at (x
(i), y (i)) by a (i) x (i1) x (i)cos a (i) y
(i) sin a (i) (x (i) y (i) tan a (i))/(1
tan2a (i))1/2 y (i1) y (i) cos a (i) x (i)
sin a (i) (y (i) x (i) tan a (i))/(1 tan2a
(i) ) 1/2 z (i1) z (i) a (i) Goal eliminate
the divisions by (1 tan2a (i)) 1/2 and choose a
(i) so that tan a(i) is a power of 2
4
Elimination of Division by (1 tan2a(i))1/2
Whereas a real rotation does not change the
length R(i) of the vector, a pseudorotation step
increases its length to R(i1) R(i) (1 tan2a
(i))1/2 The coordinates of the new end point
E(I1) after pseudorotation is derived by
multiplying the coordinates of E(i1) by the
expansion factor x (i1) x (i) y (i) tan a
(i) y (i1) y (i) x (i) tan a (i)
Pseudorotation z (i1) z (i) a (i)
5
Elimination of Division by (1 tan2a(i))1/2
Assuming x(0) x, y (0) y, and z (0) z,
after m real rotations by the angles a(1), a (2),
. . . , a (m), we have x(m) x cos(åa (i)) y
sin(åa (i)) y(m) y cos(åa (i)) x sin(åa
(i)) z(m) z (åa (i)) After m pseudorotations
by the angles a(1), a (2), . . . , a (m) x(m)
K(x cos(åa (i)) y sin(åa (i))) y(m) K(y cos(åa
(i)) x sin(åa (i))) z(m) z (åa
(i)) where K P(1 tan2a(i))1/2
6
Basic CORDIC Iterations
Pick a (i) such that tan a (i) di 2 i, di Î
1, 1 x(i1) x(i) di y(i)2i y (i1) y
(i) di x(i)2iCORDIC iteration z (i1) z
(i) di tan1 2i If we always pseudorotate by
the same set of angles (with or signs), then
the expansion factor K is a constant that can be
precomputed Example pseudorotation for 30
degrees 30.0 _at_ 45.0 26.6 14.0 7.1 3.6
1.8 0.9 0.4 0.2 0.1 30.1
e (i) tan 1 2-i
7
Basic CORDIC Iteration
8
CORDIC Rotation Mode
9
CORDIC Rotation Mode
10
CORDIC Vectoring Mode
11
CORDIC Vectoring Mode
12
CORDIC Hardware
13
Generalized CORDIC
14
Rotation Modes
15
Binary Angular Measurement - BAM
  • Angle Accumulator can Represent Angles as BAM
  • Encode di-1,1 as Bit Values 0,1
  • Example -1 Represented by 0 and 1 Represented
    by 1
  • LSb Represents d0
  • Content z01011
  • z45 ? 26.6 ? -14.0 ? 7.1 ? -3.6 ? 61.1?
  • Can Simplify CORDIC Circuitry for Some Modes
  • May Need BAM encode/decode Can Use Lookup Table

16
Review - CORDIC - Rotation Mode
  • Input is Angle, ? Initialized in Angle
    Accumulator
  • Vector Initialized to Lie on x-axis
  • Each Iteration di Chosen by Sign of Angle
  • Attempt to Bring Angle to Zero
  • Result is x Register Contains cos?
  • Result is y Register Contains sin?
  • Also Polar to Rectangular if x Register
    Initialized to Magnitude

17
Review - CORDIC - Vector Mode
  • Input is (Pre-scaled) Vector in (x,y) Registers
  • Angle, ? Initialized to Zero
  • Each Iteration di Chosen to Move Vector to Lie
    Along Positive x-axis (Want to Reduce y Register
    to Zero)
  • Result is Original Vector Angle in Angle
    Accumulator
  • Can be Used for sin-1? and cos-1?
  • Also Rectangular to Polar Conversion
  • Magnitude in x Register

18
CORDIC Rotation/Vector Modes
  • Rotation Mode
  • Vector Mode

19
Rotation Angle Limits
  • Rotation/Vector Algorithms Limited to ?90?
  • Due to Use of ? tan(20) for First Iteration
  • Several Ways to Extend Range
  • Can use trig identities to covert the problem to
    one that is within the domain of convergence
  • One Way is to Use Additional Rotation for Angles
    Outside Range
  • This Rotation is Initial ?90? Rotation

20
CORDIC Uses
  • Can Use CORDIC For Others Also
  • Linear Functions
  • Hyperbolic Functions
  • Square Rooting
  • Logarithms, Exponentials

21
Iterative CORDIC Structure
Taken from A Survey of CORDIC Algorithms for
FPGA Based Computers, R. Andraka, FPGA98
22
Bit-serial CORDIC Structure
Taken from A Survey of CORDIC Algorithms for
FPGA Based Computers, R. Andraka, FPGA98
Write a Comment
User Comments (0)
About PowerShow.com