Cordic Algorithm and Implementations

Cordic Algorithm and Implementations

1 CORDIC ALGORITHM AND IMPLEMENTATIONS CORDIC METHOD • ROTATION AND VECTORING MODE • CONVERGENCE, PRECISION AND RANGE • SCALING FACTOR AND COMPENSATION • IMPLEMENTATIONS: word-serial and pipelined • EXTENSION TO HYPERBOLIC AND LINEAR COORDINATES • UNIFIED DESCRIPTION • REDUNDANT ADDITION AND HIGH RADIX • Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 2 MAIN USES REALIZATION OF ROTATIONS • CALCULATION OF TRIGONOMETRIC FUNCTIONS • 1 CALCULATION OF INVERSE TRIGONOMETRIC FUNCTION tan− (a=b) • CALCULATION OF pa2 + b2, etc. • EXTENDED TO HYPERBOLIC FUNCTIONS • DIVISION AND MULTIPLICATION • CALCULATION OF SQRT, LOG, AND EXP • FOR LINEAR TRANSFORMS, DIGITAL FILTERS, AND SOLVING LIN. SYS- • TEMS MAIN APPLICATIONS: DSP, IMAGE PROCESSING, 3D GRAPHICS, ROBOTICS. • Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 3 CORDIC ALGORITHM CIRCULAR COORDINATE SYSTEM • PERFECT ROTATION: • x = M cos(β + θ) = x cos θ y sin θ R in in − in yR = Min sin(β + θ) = xin sin θ + yin cos θ M { THE MODULUS OF THE VECTOR • in β { THE INITIAL ANGLE • IN MATRIX FORM: • x cos θ sin θ x x 2 R 3 = 2 − 3 2 in 3 = ROT (θ) 2 in 3 6 7 6 7 6 7 6 7 6 yR 7 6 sin θ cos θ 7 6 yin 7 6 yin 7 4 5 4 5 4 5 4 5 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 4 y (xR, yR ) M in (xin, yin ) Θ β x Figure 11.1: VECTOR ROTATION Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 5 MICRO-ROTATIONS USE ELEMENTARY ROTATION ANGLES α • j DECOMPOSE THE ANGLE θ: • 1 θ = αj jX=0 SO THAT 1 ROT (θ) = ROT (αj) jY=0 THEN ROT (α ): • j x [j + 1] = x [j] cos(α ) y [j] sin(α ) R R j − R j yR[j + 1] = xR[j] sin(αj) + yR[j] cos(αj) Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 6 SIMPLIFYING MICRO-ROTATIONS HOW TO AVOID MULTIPLICATIONS? • 1. DECOMPOSE ROTATION INTO: SCALING OPERATION AND ROTATION-EXTENSION x [j + 1] = cos(α )(x [j] y [j] tan(α )) R j R − R j yR[j + 1] = cos(αj)(yR[j] + xR[j] tan(αj)) 2. CHOOSE ELEMENTARY ANGLES 1 j 1 j αj = tan− (σj(2− )) = σj tan− (2− ) WITH σ 1; 1 j 2 {− g RESULTS IN ROTATION-EXTENSION RECURRENCE WITHOUT MPYs j x[j + 1] = x[j] σj2− y[j] − j y[j + 1] = y[j] + σj2− x[j] = ONLY ADDITIONS AND SHIFTS ) Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 7 ROTATION-EXTENSION (cont.) ROTATION-EXTENSION SCALES MODULUS M[j] • 1 2 2j 1=2 2j 1=2 M[j+1] = K[j]M[j] = M[j] = (1+σj 2− ) M[j] = (1+2− ) M[j] cos αj TOTAL SCALING FACTOR • 2j 1=2 K = 1 (1 + 2− ) 1:6468 jY=0 ≈ CONSTANT, INDEPENDENT OF THE ANGLE RECURRENCE FOR DECOMPOSITION/ACCUMULATION OF ANGLE: • 1 j z[j + 1] = z[j] α = z[j] σ tan− (2− ) − j − j Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 8 IMPLEMENTATION OF CORDIC ITERATION CORDIC MICROROTATION j x[j + 1] = x[j] σj2− y[j] − j y[j + 1] = y[j] + σj2− x[j] 1 j z[j + 1] = z[j] σ tan− (2− ) − j Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 9 X[j] Y[j] Z[j] j j j SHIFTER SHIFTER TABLE αj σ σj ADD/SUB σj ADD/SUB j ADD/SUB sign(Y) sign(Z) MUX X[j+1] Y[j+1] Z[j+1] ADD/SUB module includes sign(Z[j+1]) in rotation σ = { conditional complementer j+1 sign(Y[j+1]) in vectoring Figure 11.2: IMPLEMENTATION OF ONE ITERATION. Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 10 ROTATION MODE ROTATE AN INITIAL VECTOR (x ; y ) BY θ • in in DECOMPOSE THE ANGLE • 1 j z[j + 1] = z[j] σ tan− (2− ) − j z[0] = θ x[0] = xin y[0] = yin 8 1 if z[j] 0 σj = > ≥ < 1 if z[j] < 0 > :> − PERFORM MICRO-ROTATIONS • FINAL VALUES • x = K(x cos θ y sin θ) f in − in yf = K(xin sin θ + yin cos θ) zf = 0 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 11 (x1,y1) (x ,y ) y 3 3 (xf,, yf) primitive angles (x2,y2) (xin, yin ) Θ x Figure 11.3: Rotating a vector using microrotations. Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 12 EXAMPLE OF ROTATION ROTATE (xin; yin) BY 67◦ USING n = 12 MICRO-ROTATIONS INITIAL COORDINATES: xin = 1, yin = 0:125 FINAL COORDINATES: xR = 0:2756, yR = 0:9693 j z[j] σj x[j] y[j] 0 1.1693 1 1.0 0.125 1 0.3839 1 0.875 1.125 2 -0.0796 -1 0.3125 1.1562 3 0.1653 1 0.7031 1.4843 4 0.0409 1 0.5175 1.5722 5 -0.0214 -1 0.4193 1.6046 6 0.0097 1 0.4694 1.5915 7 -0.0058 -1 0.4445 1.5988 8 0.0019 1 0.4570 1.5953 9 -0.0019 -1 0.4508 1.5971 10 0.0000 1 0.4539 1.5962 11 -0.0009 -1 0.4524 1.5967 12 -0.0004 -1 0.4531 1.5965 13 0.4535 1.5963 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 13 EXAMPLE 11.1 (cont.) AFTER COMPENSATION OF SCALING FACTOR K = 1:64676 • COORDINATES ARE x[13]=K = 0:2753 and y[13]=K = 0:9693 12 ERRORS < 2− • Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 14 SPECIAL CASES TO COMPUTE cos θ AND sin θ • MAKE INITIAL CONDITION x[0] = 1=K AND y[0] = 0 IN GENERAL, FOR a AND b CONSTANTS • a cos θ b sin θ − a sin θ + b cos θ COMPUTED BY SETTING x[0] = a=K AND y[0] = b=K Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 15 VECTORING MODE ROTATE INITIAL VECTOR (x ; y ) UNTIL y = 0 • in in FOR INITIAL VECTOR IN THE FIRST QUADRANT: • 8 1 if y[j] < 0 σ = > j <> 1 if y[j] 0 > :> − ≥ ACCUMULATE ROTATION ANGLE IN z • FOR x[0] = x , y[0] = y and z[0] = z , THE FINAL VALUES ARE • in in in 2 2 1=2 xf = K(xin + yin) yf = 0 1 yin zf = zin + tan− ( ) xin Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 16 EXAMPLE OF VECTORING INITIAL VECTOR (x = 0:75; y = 0:43) • in in y FORCED TO ZERO IN n = 12 MICRO-ROTATIONS • ROTATED VECTOR: x = x2 + y2 = 0:8645, y = 0:0 • R r in in R 1 0:43 ROTATED ANGLE z = tan− ( ) = 0:5205 • f 0:75 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 17 j y[j] σj x[j] z[j] 0 0.43 -1 0.75 0.0 1 -0.32 1 1.18 0.7853 2 0.27 -1 1.34 0.3217 3 -0.065 1 1.4075 0.5667 4 0.1109 -1 1.4156 0.4423 5 0.0224 -1 1.4225 0.5047 6 -0.0219 1 1.4232 0.5360 7 0.0002 -1 1.4236 0.5204 8 -0.0108 1 1.4236 0.5282 9 -0.0053 1 1.4236 0.5243 10 -0.0025 1 1.4236 0.5223 11 -0.0011 1 1.4236 0.5213 12 -0.0004 1 1.4236 0.5208 13 1.4236 0.5206 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 18 EXAMPLE 11.2 (cont.) ACCUMULATED ANGLE z[13] = 0:5206 • AFTER PERFORMING COMPENSATION OF K = 1:64676, • x[13]=K = 0:864 12 ERRORS < 2− • Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 19 CONVERGENCE, PRECISION, AND RANGE ROTATION MODE • CONVERGENCE • 1 j z[i] 1 tan− (2− ) j j ≤ jX=i 1 1 j o θmax = z[0]max = tan− (2− ) 1:7429 (99:88 ) jX=0 ≈ FOR THIS ANGLE ALL σj = 1 and z[j] > 0. CONSIDER θ < θ • max 1 (i 1) z[i] tan− (2− − ) j j ≤ CONSEQUENTLY • 1 i 1 1 j tan− (2− − ) 1 tan− (2− ) ≤ jX=i OR 1 i 1 j tan− (2− ) 1 tan− (2− ) ≤ j=Xi+1 SATISFIED FOR ALL i Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 20 y α i-2 x α i-1 α i Figure 11.4: CONVERGENCE CONDITION: THE MAXIMUM NEGATIVE CASE. Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 21 PRECISION AND RANGE FOR n ITERATIONS n ITERATIONS (FINITE SEQUENCE) • RESIDUAL ANGLE AFTER n ITERATIONS z[n] • 1 (n 1) z[n] tan− (2− − ) j j ≤ n 1 (n 1) (n 1) 2− < tan− (2− − ) < 2− − THE MAXIMUM ANGLE FOR CONVERGENCE • n 1 − 1 j n+1 θmax = tan− (2− ) + 2− iX=0 n+1 2− THE MAXIMUM RESIDUAL ANGLE • Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 22 COMPENSATION OF SCALING FACTOR MOST DIRECT METHOD: MULTIPLY BY 1=K • i USE SCALING ITERATIONS OF THE FORM (1 2− ) • i x = x x(2− ) s USE REPETITIONS OF CORDIC ITERATIONS • 1 i z[i + 1] tan− (2− ) j j ≤ OPTIMIZATION: FIND THE MINIMUM NUMBER OF SCALING ITERA- • TIONS PLUS REPETITIONS SO THAT THE SCALE FACTOR IS COM- PENSATED. Table 11.4: Scale factor compensation for n = 24 Scaling iterations (-1)(+2)(-5)(+10)(+16)(+19)(+22) Scalings (-2)(+16)(+17) + repetitions 1,3,5,6 Digital Arithmetic - Ercegovac/Lang 2003 11 { CORDIC 23 IMPLEMENTATIONS X[0] Y[0] Z[0] j j j MUX SHIFTER SHIFTER MUX MUX TABLE αj MUX MUX σ σ σ j ADD/SUB ADD/SUB j j ADD/SUB X[j+1] Y[j+1] Z[j+1] REG X REG Y REG Z X[j] Y[j] Z[j] for scaling iterations sign(Y[j]) sign(Z[j]) MUX ADD/SUB module includes conditional complementer sign(Z[j]) in rotation σ = { j sign(Y[j]) in vectoring Figure 11.5: WORD-SERIAL IMPLEMENTATION.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    36 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us