
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.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages36 Page
-
File Size-