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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1CORDIC 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
2MAIN USES
• REALIZATION OF ROTATIONS
• CALCULATION OF TRIGONOMETRIC FUNCTIONS
• CALCULATION OF INVERSE TRIGONOMETRIC FUNCTION tan−1(a/b)
• CALCULATION OF√
a2 + 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
3CORDIC ALGORITHM
• CIRCULAR COORDINATE SYSTEM
• PERFECT ROTATION:
xR = Min cos(β + θ) = xin cos θ − yin sin θ
yR = Min sin(β + θ) = xin sin θ + yin cos θ
• Min – THE MODULUS OF THE VECTOR
• β – THE INITIAL ANGLE
• IN MATRIX FORM:
xR
yR
=
cos θ − sin θsin θ cos θ
xin
yin
= ROT (θ)
xin
yin
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
4
y
x
(xin, yin )
(xR, yR )
Θ
β
M in
Figure 11.1: VECTOR ROTATION
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
5MICRO-ROTATIONS
• USE ELEMENTARY ROTATION ANGLES αj
• DECOMPOSE THE ANGLE θ:
θ =∞∑
j=0αj
SO THATROT (θ) =
∞∏
j=0ROT (αj)
• THEN ROT (αj):
xR[j + 1] = xR[j] cos(αj) − yR[j] sin(αj)
yR[j + 1] = xR[j] sin(αj) + yR[j] cos(αj)
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
6SIMPLIFYING MICRO-ROTATIONS
• HOW TO AVOID MULTIPLICATIONS?
1. DECOMPOSE ROTATION INTO:
SCALING OPERATION AND ROTATION-EXTENSION
xR[j + 1] = cos(αj)(xR[j] − yR[j] tan(αj))
yR[j + 1] = cos(αj)(yR[j] + xR[j] tan(αj))
2. CHOOSE ELEMENTARY ANGLES
αj = tan−1(σj(2−j)) = σj tan−1(2−j)
WITH σj ∈ {−1, 1}RESULTS IN ROTATION-EXTENSION RECURRENCE WITHOUT MPYs
x[j + 1] = x[j] − σj2−jy[j]
y[j + 1] = y[j] + σj2−jx[j]
=⇒ONLY ADDITIONS AND SHIFTS
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
7
ROTATION-EXTENSION (cont.)
• ROTATION-EXTENSION SCALES MODULUS M [j]
M [j+1] = K[j]M [j] =1
cos αjM [j] = (1+σ2
j2−2j)1/2M [j] = (1+2−2j)1/2M [j]
• TOTAL SCALING FACTOR
K =∞∏
j=0(1 + 2−2j)1/2 ≈ 1.6468
CONSTANT, INDEPENDENT OF THE ANGLE
• RECURRENCE FOR DECOMPOSITION/ACCUMULATION OF ANGLE:
z[j + 1] = z[j] − αj = z[j] − σj tan−1(2−j)
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
8IMPLEMENTATION OF CORDIC ITERATION
CORDIC MICROROTATION
x[j + 1] = x[j] − σj2−jy[j]
y[j + 1] = y[j] + σj2−jx[j]
z[j + 1] = z[j] − σj tan−1(2−j)
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
9
ADD/SUBσj
X[j]
X[j+1]
SHIFTERj
ADD/SUB
Y[j]
Y[j+1]
SHIFTERj
Z[j]
Z[j+1]
αj
ADD/SUB
TABLEj
σj σj
σj+1 = {sign(Y[j+1]) in vectoring
sign(Z[j+1]) in rotationADD/SUB module includes conditional complementer
sign(Y) sign(Z)MUX
Figure 11.2: IMPLEMENTATION OF ONE ITERATION.
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
10ROTATION MODE
• ROTATE AN INITIAL VECTOR (xin, yin) BY θ
• DECOMPOSE THE ANGLE
z[j + 1] = z[j] − σj tan−1(2−j)
z[0] = θ x[0] = xin y[0] = yin
σj =
1 if z[j] ≥ 0−1 if z[j] < 0
• PERFORM MICRO-ROTATIONS
• FINAL VALUES
xf = K(xin cos θ − yin sin θ)
yf = K(xin sin θ + yin cos θ)
zf = 0
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
11
y
x
(xin, yin )
Θ
(x1,y1)
(x2,y2)
(x3,y3)
(xf,, yf)
primitive angles
Figure 11.3: Rotating a vector using microrotations.
Digital Arithmetic - Ercegovac/Lang 2003 11 – CORDIC
12EXAMPLE OF ROTATION
ROTATE (xin, yin) BY 67◦ USING n = 12 MICRO-ROTATIONSINITIAL COORDINATES: xin = 1, yin = 0.125FINAL COORDINATES: xR = 0.2756, yR = 0.9693