XC886/888CLM
CORDIC Coprocessor
User’s Manual
11-7
V1.3, 2010-02
CORDIC Coprocessor, V 1.2.1
i = 1, 2, ..., 15, such that angles in the range [-
π
,((2
19
-1)/2
19
)
π
] are represented by
integer values ranging [-2
19
,(2
19
-1)]. Therefore, Z data is limited (not considering
domain of convergence) to represent angles [-
π
,((2
15
-1)/2
15
)
π
] for these CORDIC
functions. Any calculated value of Z outside of this range will result in overflow error.
•
For linear function, the Z data is always handled as signed fraction S4.15 (accessible
as S4.11 in the form signed 4Q16). The emulated LUT is actually a shift register that
holds data in the form 1.15 which gives the real value of 2
-i
. Therefore, regardless of
the domain of convergence, Z data is logically only useful for values whose
magnitude is smaller than 16. Overflow error is indicated by the CD_STATC.ERROR
bit.
•
The MPS setting has no effect on Z data. User must ensure proper initialization of Z
initial data to prevent overflow and incorrect result data.
•
The CORDIC Coprocessor is designed such that with correct user setting of
MPS > 1, there is no internal overflow of the X and Y data and the read result data is
complete. However, note that in these cases, the higher the MPS setting, the lower
the resolution of the result data due to loss of LSB bit(s).
•
The hyperbolic rotation mode is limited, in terms of result accuracy, in that initial Y
data must be set to zero. In other words, the CORDIC Coprocessor is not able to
return accurate result for cosh(Z)+/-sinh(Z) in a single calculation.
11.2.4.1
Domains of Convergence
For convergence of result data, there are limitations to the magnitude or value of initial
data and corresponding useful data form, depending on the operating mode used. The
following are generally applicable regarding convergence of CORDIC result data.
Rotation Mode:
Z data must converge towards 0. Initial Z data must be equal or smaller
than
∑
d
i
·
e
i
, where
e
i
is always decreasing for iteration i. In other words, |Z|
≤
Sum of
LUT. In circular function, this means |Z|
≤
integer value representing 1.74 radians. For
linear function, |Z|
≤
2. In hyperbolic function, |Z|
≤
integer value representing 1.11
radians.
Vectoring Mode:
Y data must converge towards 0. The values of initial X and Y are
limited by the Z function which is dependent on the corresponding LUT. For circular
function, this means |atan(Y / X)|
≤
1.74 radians. For linear function, |Y / X|
≤
2. For
hyperbolic function, |atanh(Y / X)|
≤
1.11 radians. In vectoring mode, the additional
requirement is that X
>
0.
While the operating modes of the CORDIC Coprocessor are generally bounded by these
convergence limits, there are exceptions to the circular rotation and circular vectoring
modes which use additional pre- (and post-)processing logic to support wider range of
inputs.
Circular Rotation Mode:
The full range of Z input [-2
15
,(2
15
-1)] representing angles [-
π
,((2
15
-1)/2
15
)
π
] is supported. No limitations on initial X and Y inputs, except for overflow
considerations which can be overcome with MPS setting.
*