XC886/888CLM
CORDIC Coprocessor
User’s Manual
11-6
V1.3, 2010-02
CORDIC Coprocessor, V 1.2.1
Usage Notes
•
For solving the respective functions, user must initialize the CORDIC data (X, Y and
Z) with meaningful initial values within domain of convergence to ensure result
convergence. The ‘useful domain’ listed in
covers the supported domain
of convergence for the CORDIC algorithm and excludes the not-meaningful range(s)
for the function. For details regarding the supported domain of convergence, refer to
. For result data accuracy, refer to
•
Function limitations must be considered, e.g., setting initial X = 0 for atan(Y / X) is not
meaningful. Violations of such function limitations may yield incoherent CORDIC
result data.
•
All data inputs are processed and handled as twos complement. Only exception is
user-option for X result data (only) to be read as unsigned value.
•
The only case where the result data is always positive and larger than the initial data
is X result data (only) in circular vectoring mode; therefore, the user may want to use
the MSB bit as data bit instead of sign bit. By setting X_USIGN = 1, X result data will
be processed as unsigned data.
•
For circular and hyperbolic functions, and due to the corresponding fixed LUT, the
Z data is always handled as signed integer S19 (accessible as S15). The LUTs
contain scaled integer values (S19) of atan(2
-i
) for i = 0, 1, 2, ..., 15 and atanh(2
-i
) for
Hyperbolic
m
= -1
e
i
= atanh(2
-i
)
X
final
= k[
X
cosh(
Z
) -
Y
sinh(
Z
)] /
MPS
Y
final
= k[
Y
cosh(
Z
) +
X
sinh(
Z
)] /
MPS
Z
final
= 0
where k
≈
0.828
X
final
= k sqrt(
X
2
-
Y
2
) / MPS
Y
final
= 0
Z
final
=
Z
+ atanh(
Y
/
X
)
where k
≈
0.828
For solving cosh(
Z
) and sinh(
Z
) and
e
Z
, set
X
= 1 / k,
Y
= 0.
Useful domain: |
Z
|
≤
1.11rad,
Y
= 0.
For solving sqrt(x
2
-y
2
), set
X
= x / k,
Y
= y / k.
Useful domain: |y| < |x|,
X
> 0.
For solving atanh(
Y
/
X
), set
Z
= 0.
Useful domain: |atanh(
Y
/
X
)|
≤
1.11rad,
X
> 0.
Relationships:
tanh(v) = sinh(v) / cosh(v)
e
v
= sinh(v) + cosh(v)
w
t
= e
t ln(w)
Relationships:
ln(w) = 2 atanh[(w-1) / (w+1)]
sqrt(w) = sqrt((w+0.25)
2
-(w-0.25)
2
)
acosh(w) = ln[w+sqrt(1-w
2
)]
asinh(w) = ln[w+sqrt(1+w
2
)]
Table 11-2
CORDIC Coprocessor Operating Modes and Corresponding Result
Data
(cont’d)
Function
Rotation Mode
Vectoring Mode
*