cordic - basic algorithm and · pdf filebasics of cordic goal enhancement references cordic -...
TRANSCRIPT
Basics of CORDIC Goal Enhancement References
CORDIC - Basic Algorithm and Enhancements
K.Sridharan, IIT Madras
February 25, 2010
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
The CORDIC algorithm provides an iterative method of performingvector rotations by arbitrary angles using only shifts and adds.
Vector rotation transform: For rotating in a Cartesian plane byangle φ.
x ′ = x cos φ− y sin φ
y ′ = y cos φ + x sin φ
OR
x ′ = cos φ[x − y tanφ]
y ′ = cos φ[y + x tanφ]
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
The CORDIC algorithm provides an iterative method of performingvector rotations by arbitrary angles using only shifts and adds.
Vector rotation transform: For rotating in a Cartesian plane byangle φ.
x ′ = x cos φ− y sin φ
y ′ = y cos φ + x sin φ
OR
x ′ = cos φ[x − y tanφ]
y ′ = cos φ[y + x tanφ]
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
If rotation angles are selected such that tan φ = ±2−i , then
Xi+1 = Ki (Xi − Yi · di · 2−i )
Yi+1 = Ki (Yi + Xi · di · 2−i )
Zi+1 = Zi − di · tan−1(2−i )
where
Ki = cos(tan−1(2−i )) =1√
1 + 2−2i(1)
The scale factor Ki can be accumulated and the vector is scaled by
An =∏n
√1 + 2−2i
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
Polar (R , θ) to Rectangular (X,Y) transformation:
+X
+Y
θ = 65◦
Rotation by 65◦
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
Polar (R , θ) to Rectangular (X,Y) transformation:
+X
+Y Initialize
X0 = R
Y0 = 0
Z0 = θ
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
Polar (R , θ) to Rectangular (X,Y) transformation:
+X
+Y
45◦
Rotate by tan−1(20) = 45◦
X1 = X0 − Y0
Y1 = Y0 + X0
Z1 = Z0 − tan−1(20)
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
Polar (R , θ) to Rectangular (X,Y) transformation:
+X
+Y
26.5◦
Rotate bytan−1(2−1) = 26.5◦
X2 = X1 −Y1
2
Y2 = Y1 +X1
2Z2 = Z1 − tan−1(2−1)
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
Polar (R , θ) to Rectangular (X,Y) transformation:
+X
+Y
14◦
Rotate by tan−1(2−2) = 14◦
X3 = X2 +Y2
4
Y3 = Y2 −X2
4Z3 = Z2 + tan−1(2−2)
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi[MSB]Yi[MSB]
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi+1
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1Xi+1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Yout
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi[MSB]Yi[MSB]
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi+1
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1Xi+1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Yout
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
¯reset
Y0
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Zi+1[MSB]
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Zout
sel1
sel0
Xout
Z0 −
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
|Z0| < 90
Z0[MSB]
X0
−X0
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
X0[MSB]
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
−Xi+1
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Basics of CORDIC Goal Enhancement References Example Conventional CORDIC architecture
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi[MSB]Yi[MSB]
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi+1
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1Xi+1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Yout
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi[MSB]Yi[MSB]
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Zi+1
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1Xi+1+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
Yout
+
+/− subsubtractor
adder/barrelshifter
sel
sel
01MUX
mode
ROM
+
+/−
sub
subtractoradder/
register
scalar
barrelshifter
sel
scaler
register
3counter
register
0
+
+/− subsubtractor
adder/
Basic CORDIC
1
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
¯reset
Y0
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Zi+1[MSB]
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Zout
sel1
sel0
Xout
Z0 −
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
|Z0| < 90
Z0[MSB]
X0
−X0
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
X0[MSB]
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
−Xi+1
−
−1MUX
sel
mode
comparator
modesel
01MUX
180
−180
sel
01MUX
+subtractor
18001MUX
sel
sel
0MUX
sel
0MUX
sel
01MUX
1
sel
01MUX
sel
01MUX
subtractor+
−180
Basics of CORDIC Goal Enhancement References Bottlenecks for area
Reduce area consumption without affecting the performance interms of accuracy and number of iterations.
Basics of CORDIC Goal Enhancement References Bottlenecks for area
ROM : The size of the ROM is 2dlog2(no. of iterations)e.
Barrel shifters.
Range is limited to |Z | <= 99◦. Multiplexers (both at inputand output) are required to extend the range.
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
1 Completely eliminates barrel-shifters.
2 Represents all the angles in [−180◦, 180◦] using combinationsof two signed elementary angles, tan−12−1 and tan−12−3.
OR
Z = k0 · tan−1(2−1) + k1 tan−1(2−3)
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
Either
X = K1 · (X − (−1)sgn(k0) · Y .2−1)
Y = K1 · (Y + (−1)sgn(k0) · X .2−1)
Or
X = X − (−1)sgn(k1) · Y · 2−3
Y = Y + (−1)sgn(k1) · X · 2−3
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
Either
X = K1 · (X − (−1)sgn(k0) · Y .2−1)
Y = K1 · (Y + (−1)sgn(k0) · X .2−1)
Or
X = X − (−1)sgn(k1) · Y · 2−3
Y = Y + (−1)sgn(k1) · X · 2−3
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
max(|k0|+ |k1|) = 13
for170◦ = 4 · tan−1(2−1) + 9 · tan−1(2−3)
and177◦ = 8 · tan−1(2−1)− 5 · tan−1(2−3)
Found using C program.
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
max(|k0|+ |k1|) = 13
for170◦ = 4 · tan−1(2−1) + 9 · tan−1(2−3)
and177◦ = 8 · tan−1(2−1)− 5 · tan−1(2−3)
Found using C program.
Basics of CORDIC Goal Enhancement References Features Iterative equations Convergence Architecture
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5
Y2
Yi
8
X2
X8
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5
M0
M1 M4
M2
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5
M3
sgn(k1)
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5
|k0|
X
Y
|k1|
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5|k0||k1|
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5sgn(k0)sgn(k1)
1MUX
0scaler
360 X 10ROM
1MUX
0
1MUX
0scaler
1MUX
0
statemachine
sub
1MUX
0
sel
sel
sel
+
+/−
sub
+
+/−
accumulator
accumulator
10
sel
sel
4 4
m stop−bit
4 0389 5
sgn(k0)
Zin
Basics of CORDIC Goal Enhancement References
1 J. Volder, The CORDIC trigonometric computing technique,IRE Transactions on Electronic Computers, Vol. EC-8, 1959,pp. 330-334.
2 J.S. Walther, A unified algorithm for elementary functions,Proceedings of 38th Spring Joint Computer Conference, 1971,pp. 379-385
3 R. Andraka, A survey of CORDIC algorithms for FPGA-basedcomputers, Proceedings of ACM/SIGDA Sixth InternationalSymposium on Field Programmable Gate Arrays, 1998, pp.191-200
4 Leena Vachhani, K. Sridharan, P.K. Meher, Efficient CORDICalgorithms and architectures for low area and high throughputimplementation, IEEE Transactions on Circuits and Systems -Part II:Express Briefs, Vol. 56, No. 1, January 2009, pp.61-65