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

Post on 04-Mar-2018

230 views 2 download

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

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