general cordic description (1a) · 09.04.2012  · 1a general 12 young won lim 04/09/2012 vector...

21
Young Won Lim 04/09/2012 General CORDIC Description (1A)

Upload: others

Post on 15-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

Young Won Lim04/09/2012

General CORDIC Description (1A)

Page 2: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

Young Won Lim04/09/2012

Copyright (c) 2010, 2011, 2012 Young W. Lim.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Please send corrections (or suggestions) to [email protected].

This document was produced by using OpenOffice and Octave.

Page 3: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 3 Young Won Lim04/09/2012

CORDIC Background

1. CORDIC FAQ, G. R. Griffin, www.dspguru.com/info/faqs/cordic2.htm

Page 4: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 4 Young Won Lim04/09/2012

Complex Multiplication

C ' = I c ' j Qc '

C = I c j Qc

R = I r j Qr

Given Complex Value

Rotated Complex Value

Rotation Value

I c ' j Qc ' = I c j Qc ⋅ I r j Qr

C ' C= R⋅

= I c I r − Qc Qr j Qc I r I c Qr

I c j Qc

I r j Qr

C = rc∡ϕ

cR = r

r∡ϕ

rC' = r

c r

r ∡(ϕ

c+ϕ

c)

Page 5: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 5 Young Won Lim04/09/2012

Adding / Subtracting Phase

To add R' phase to C

I c ' j Qc ' = I c j Qc ⋅ I r j Qr

C ' C= R⋅

= I c I r − Qc Qr j Qc I r I c Qr

To sub R' phase to C

I c ' j Qc ' = I c j Qc ⋅ I r − j Qr

C ' C= R∗⋅

= I c I r Qc Qr j Qc I r − I c Qr

I c j Qc

I r j Qr

I c j Qc

I r − j Qr

Page 6: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 6 Young Won Lim04/09/2012

Adding / Subtracting 90 Degrees

To add R' phase to C

I c ' j Qc ' = I c j Qc ⋅ 0 j

C ' C= ( + j )⋅

= −Qc j I c

To sub R' phase to C

I c ' j Qc ' = I c j Qc ⋅ 0− j

C ' C= ( − j )⋅

= Qc j −I c

I c j Qc

0 j

I c j Qc

0 − j

Page 7: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 7 Young Won Lim04/09/2012

Elementary Angle: tan-1(kl)

1 j 20

1 j 2−1

1 j 2−2

1 j 2−31 j 2−4

θ0 = tan−1(20) = 45.00000 ̊

θ1 = tan−1(2−1) = 26.56505 ̊

θ2 = tan−1(2−2) = 14.03624 ̊

θ3 = tan−1(2−3) = 7.12502 ̊

θ4 = tan−1(2−4) = 3.57633 ̊

1

j

Represent arbitrary angle θ

in terms of ±θ0, ±θ1, ±θ2, ±θ3, ⋯ , ±θl , ⋯ (k l = tan θl = 12l

, l = 0,1, 2,⋯)

θl = tan−1(2−l) = tan−1(k l)tan θl =12l

= k l

l = 0

l = 1

l = 2

l = 3l = 4

√1+k l2 =

magnitude

√1+2−2 l

Page 8: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 8 Young Won Lim04/09/2012

Adding / Subtracting tan-1(kl)

To add R' phase to C

I c ' j Qc ' = I c j Qc ⋅ (1 + j k l)

C ' C= (1+ j k l)⋅

= ( I c − k lQc) + j (Qc + k l I c)

To sub R' phase to C

I c ' j Qc ' = I c j Qc ⋅ (1 − j k l)

C ' C= (1− j k l)⋅

= ( I c + k lQc) + j (Qc − k l I c)

I c j Qc

1 j k

I c j Qc

1 − j k

= ( I c − 2−lQc) + j (Qc + 2−l I c)

= ( I c + 2−lQc) + j (Qc − 2−l I c)

k l =12l

, l = 0,1,2,⋯

θl = tan−1(k l) = tan−1(2−l)

Page 9: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 9 Young Won Lim04/09/2012

Phase and Magnitude of 1 + jkl (1)

L k = 12l

R = 1 + j k Phase of R Magnitude of R CORDIC Gain

0 1.0 1 + j1.0 1.41421356 1.4142135621 0.5 1 + j0.5

45º26.56505º 1.11803399 1.581138830

2 0.25 1 + j0.25 14.03624º 1.03077641 1.6298006013 0.125 1 + j0.125 7.12502º 1.00778222 1.6424840664 0.0625 1 + j0.0625 3.57633º 1.00195122 1.6456889165 0.03125 1 + j0.03125 1.78991º 1.00048816 1.6464922796 0.015625 1 + j0.015625 0.89517º 1.00012206 1.6466932547 0.007813 1 + j0.007813 0.44761º 1.00003052 1.646743507••• ••• ••• ••• ••• •••

> 1.0∣R∣ = √12+ kl2 = √1+2−2 l

1.647

Cumulative Magnitude

R = 1 + j k lk l = 1/2l l = 0,1, 2,⋯

Page 10: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 10 Young Won Lim04/09/2012

Phase and Magnitude of 1 + jkl (2)

Shift and Add No multiplier

Phase of R

45º26.56505º

14.03624º7.12502º3.57633º1.78991º0.89517º0.44761º

•••

≈ 12

≈ 12

≈ 12

≈ 12

≈ 12

≈ 12≈ 12

≈ 12

> 92º

4 or more rotations

R = 1 ± j k l

R = 0± j

[-180, +180]

Binary Search

θ0 = tan−1(20) =

θ1 = tan−1(2−1) =

θ2 = tan−1(2−2) =

θ3 = tan−1(2−3) =

θ4 = tan−1(2−4) =

θ5 = tan−1(2−5) =

θ6 = tan−1(2−6) =

θ7 = tan−1(2−7) =

Represent arbitrary angle θ

in terms of ±θ0, ±θ1, ±θ2, ±θ3, ⋯ , ±θl , ⋯ (k l = tan θl = 12l

, l = 0,1, 2,⋯)

θ ∈

[-90, +90] θ ∈

45º + 26.56505º + 14.03624º + 7.12502º> 92º= 92.726º

Page 11: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 11 Young Won Lim04/09/2012

Phase and Magnitude of 1 + jkl (3)

> 1.0 CORDIC Gain

1.4142135621.581138830

1.6298006011.6424840661.6456889161.6464922791.6466932541.646743507

•••

1.647

Magnitude of R

1.414213561.11803399

1.030776411.007782221.001951221.000488161.000122061.00003052

•••

√12+ k l2

The actual CORDIC Gaindepends on the number of iterations

Cumulative Magnitude

√12 + 12 =

√12 +(1 /2)2 =

√12 +(1 /22)2 =

√12 +(1 /23)2 =

√12 +(1/24)2 =

√12 +(1 /25)2 =

√12 +(1/26)2 =

√12 +(1/27)2 =

The magnitude is growing → for correction, multiply by 0.6073 = 1 / 1.647

R = 1 ± j k l

R0= 1± j (1 /20)

R1= 1 ± j (1/21)

R2= 1± j (1/22)

R3= 1 ± j (1/23)

R4= 1± j (1 /24)

R5= 1 ± j (1/25)

R6= 1 ± j (1/26)

R7= 1 ± j (1/27)

Itera

tion

For each iteration, the correspondingis always used (either or )

θi+θi −θi

Page 12: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 12 Young Won Lim04/09/2012

Vector Mode – Calculating Magnitude

C= Ic+ jQ

c

C’= Ic’+ j0

Ic’ → mag x 1.647

Each iteration, the magnitude is increased by √12+ k l2

CORDIC Gain (cumulative gain)≃1.647 = 0.607−1

Can’t perform this gain adjustment by simple shift and add

Vectoring Mode

To compensate, multiply by 0.607

● This adjustment can be done in other part of a system when relative magnitude is enough

Rotate until accumulated angle is 0

Accumulator View

magnitude ?

magnitude → Ic’ x 0.607

Ic’ → magnitude x 1.647

vector

Page 13: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 13 Young Won Lim04/09/2012

Vector Mode – Calculating Phase

Phase of R

45º26.56505º

14.03624º7.12502º3.57633º1.78991º

•••

0 = tan−120 =

1 = tan−12−1 =

2 = tan−1 2−2 =

3 = tan−12−3 =

4 = tan−12−4 =

5 = tan−12−5 =

Accumulate each rotating anglesthen negate the result

θ ±θ0±θ1±θ2±θ3⋯ = 0

C= Ic+ jQ

c

C’= Ic’+ j0

Ic’ → mag x 1.647

Vectoring Mode

Rotate until accumulated angle is 0

Accumulator View

phase ? vector

Page 14: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 14 Young Won Lim04/09/2012

Angle Update in Vector Mode

Qc > 0 Q

c < 0

Rotate -90 Rotate +90

Qc > 0 Q

c < 0 Q

c > 0 Q

c < 0

Qc > 0 Q

c < 0 Q

c > 0 Q

c < 0 Q

c > 0 Q

c < 0 Q

c > 0 Q

c < 0

−θ0 +θ0 −θ0 +θ0

−θ1 +θ1 −θ1 +θ1 −θ1 +θ1 −θ1 +θ1

−θ2 +θ2

l = 0

l = 1

l = 2

Pre

I c ' j Qc ' = I c j Qc ⋅ (1 + j k l)

θ − 90− θ0− θ1 − θ2 θ − 90+ θ0− θ1+ θ2 θ + 90+ θ0− θ1− θ2

Page 15: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 15 Young Won Lim04/09/2012

Multiplication of ±j

Positive Phase (Qc > 0) Rotate by –90 degrees

Negative Phase (Qc < 0) Rotate by +90 degrees

−Qc j I c

I c j Qc

0 + j

Qc j −I c

I c j Qc

0 − j

Resulting Phase [-90, +90]

Page 16: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 16 Young Won Lim04/09/2012

Multiplication of 1 ± jkl

Positive Phase (Qc > 0) Rotate by 1 – j kl

Negative Phase (Qc < 0) Rotate by 1 + j kl

After iterations, the result

I c j Qc

1 j k l

( I c−2−lQc) + j(Qc+2

−l I c)

I c j Qc

1 − j k l

( I c+2−lQc) + j (Qc−2

−l I c)

Ic + j 0

Page 17: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 17 Young Won Lim04/09/2012

Rotation Mode – Calculating Sine and Cosine

C= Ic+ j0

C’= Ic’+ jQ

c’

Rotation Mode

θ > +90C= 0+ jQ

c

C’= Ic’+ jQ

c’

Ic’ → cos θ

Qc’ → sin θ

C= 0 – jQc

θ < −90

Accumulator View

Rotate until accumulated angle is θ

I ' c → cosθQ ' c → sinθ

Page 18: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 18 Young Won Lim04/09/2012

Initial Vector

Θ > +90 starting from 0 + j1

Initialize the accumulate rotation -90, +90, 0

Θ < –90 starting from 0 – j1

Θ < +90 starting from 1 + j0

Θ > –90 starting from 1 – j0

Page 19: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 19 Young Won Lim04/09/2012

Angle Update in Rotation Mode

In each iteration

(Θ – the accumulated rotation) < 0 then add the next angle

(Θ – the accumulated rotation) > 0 then subtract the next angle

The final

Ic cosine

Qc sine

Page 20: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

1A General 20 Young Won Lim04/09/2012

Page 21: General CORDIC Description (1A) · 09.04.2012  · 1A General 12 Young Won Lim 04/09/2012 Vector Mode – Calculating Magnitude C= I c + jQ c C’= I c ’+ j0 I c ’ → mag x 1.647

Young Won Lim04/09/2012

References

[1] http://en.wikipedia.org/[2] J.H. McClellan, et al., Signal Processing First, Pearson Prentice Hall, 2003[3] A “graphical interpretation” of the DFT and FFT, by Steve Mann[4] CORDIC FAQ, www.dspguru.com