












Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
The CORDIC (COordinate Rotation Digital Computer) algorithm is a method for evaluating elementary functions such as sin(z), cos(z), and tan-1(y) using iterative rotations. the key ideas behind the CORDIC algorithm, its implementation, and its advantages over traditional methods.
What you will learn
Typology: Slides
1 / 20
This page cannot be seen from the preview
Don't miss anything!
φ φ
φ φ
x
y
x'
y'
φ
Implementation cost:
How do we compute sin(φ) or cos(φ)?
φ (^) sin(φ)
sin(φ)=sin(π − φ) sin(-φ)=-sin(φ) also: sin(φ)=cos(π/2 − φ) Only one quadrant needed
Direct Table Look-up (Example)
from Peter Cheung, Imperial College London
Direct Table Look-up (Example)
sin(α + β) = sin(α) cos(β) + cos(α) sin(β) (trick: coarse table for α and fine table for β) Requires two multiplications and one addition
(e.g., sin( z ), cos( z ), tan -1( y ))
1959 by Jack E. Volder. It was developed to replace the analog resolver in the B-58 bomber's navigation computer. (from Wikipedia)
from Wikipedia
CORDIC Algorithm: Key Ideas
from Wikipedia
- 1 0.5 26.56505118 * 4.065051177 * 22. 0 1 45 * - 2 0.25 14.03624347 0.753717879 11. - 3 0.125 7.125016349 0.106894615 5. - 4 0.0625 3.576334375 0.013826201 2. - 5 0.03125 1.789910608 0.001743421 1. - 6 0.015625 0.89517371 0.000218406 0. - 7 0.0078125 0.447614171 2.73158E-05 0. - 8 0.00390625 0.2238105 3.41494E-06 0. - 9 0.001953125 0.111905677 4.26882E-07 0.
http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC
x i+1 = cos( tan -1^ (± 2 -i ) ) · [ x i – y i · d i · 2 -i^ ] y i+1 = cos( tan -1^ (± 2 -i ) ) · [ y i + x i · d i · 2 -i^ ]
= (^) ∏ n
K Ki
i
i K (^) i 2 1 2
1 cos(arctan( 2 − )) −
= =
∏ = + − n
A 1 2 2 i
OPERATION MODE INITIALIZE DIRECTION Sine, Cosine Rotation (^) x =1/ An , y =0, z = α Reduce z to Zero Polar to Rect. Rotation x =(1/ An ) Xmag , y =0, z = Xphase Reduce z to Zero General Rotation Rotation (^) x =(1/ An ) x 0 , y =(1/ An ) y 0 , z = α Reduce z to Zero Arctangent Vector x =(1/ An ) x 0 , y =(1/ An ) y 0 , z = 0 Reduce y to Zero Vector Magnitude Vector x =(1/ An ) x 0 , y =(1/ An ) y 0 , z = 0 Reduce y to Zero Rect. to Polar Vector x =(1/ An ) x 0 , y =(1/ An ) y 0 , z = 0 Reduce y to Zero Arcsine, Arccosine Vector x =(1/ An ), y =0, arg =sin α or cos α
Reduce y to Value in arg Register
1 1 1 1
i i i i i i i i i i i i i i
−
−
− −
[ ] [ ]
0 0 0 0 0 0 0 0
2 0
cos sin cos sin 0 1 2 1, 0 1, otherwise
n n n n n n n i i i i
x A x z y z y A y z x z z A
d z
= − = + = = +
= −^ < +
∏
1 1 1 1
i i i i i i i i i i i i i i
−
−
− −
0 2 02
0 0 0 2 0
0 tan 1
1 2 1, 0 1, otherwise
n n n n n (^) i n i
i i
x A x y y z z y x A
d y
= + −
= +
= +^ < −
∏