CORDIC - Basic Algorithm and · PDF fileBasics of CORDIC Goal Enhancement References CORDIC -...

20
Basics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

Transcript of CORDIC - Basic Algorithm and · PDF fileBasics of CORDIC Goal Enhancement References CORDIC -...

Page 1: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

Basics of CORDIC Goal Enhancement References

CORDIC - Basic Algorithm and Enhancements

K.Sridharan, IIT Madras

February 25, 2010

Page 2: CORDIC - Basic Algorithm and  · PDF fileBasics 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φ]

Page 3: CORDIC - Basic Algorithm and  · PDF fileBasics 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φ]

Page 4: CORDIC - Basic Algorithm and  · PDF fileBasics 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

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

Page 5: CORDIC - Basic Algorithm and  · PDF fileBasics 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

Polar (R , θ) to Rectangular (X,Y) transformation:

+X

+Y

θ = 65◦

Rotation by 65◦

Page 6: CORDIC - Basic Algorithm and  · PDF fileBasics 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

Polar (R , θ) to Rectangular (X,Y) transformation:

+X

+Y Initialize

X0 = R

Y0 = 0

Z0 = θ

Page 7: CORDIC - Basic Algorithm and  · PDF fileBasics 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

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)

Page 8: CORDIC - Basic Algorithm and  · PDF fileBasics 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

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)

Page 9: CORDIC - Basic Algorithm and  · PDF fileBasics 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

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)

Page 10: CORDIC - Basic Algorithm and  · PDF fileBasics 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

+

+/− 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

Page 11: CORDIC - Basic Algorithm and  · PDF fileBasics 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

+

+/− 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

Page 12: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

Basics of CORDIC Goal Enhancement References Bottlenecks for area

Reduce area consumption without affecting the performance interms of accuracy and number of iterations.

Page 13: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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.

Page 14: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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)

Page 15: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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

Page 16: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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

Page 17: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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.

Page 18: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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.

Page 19: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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

Page 20: CORDIC - Basic Algorithm and  · PDF fileBasics of CORDIC Goal Enhancement References CORDIC - Basic Algorithm and Enhancements K.Sridharan, IIT Madras February 25, 2010

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