XC886/888CLM
CORDIC Coprocessor
User’s Manual
11-12
V1.3, 2010-02
CORDIC Coprocessor, V 1.2.1
11.3
The CORDIC Coprocessor Kernel
The CORDIC Coprocessor consists of data registers for holding the X, Y and Z values,
in twos complement format. Three shift registers are used to shift the values in the X and
Y registers by the number of iterations and to generate the emulated LUT data for the
linear function. Additionally, two look-up tables (LUT) are implemented as combinatorial
logic to support the circular and hyperbolic function each. The LUT data for the selected
operating mode is multiplexed and then added to the data in the Z register with the
correct sign. The atan LUT contains precalculated atan(2
-i
) values, while the atanh LUT
contains precalculated atanh(2
-i
) values, both in twos complement format for i = iteration
count. The emulated LUT, as mentioned above, is actually a shift register that generates
data by shifting. This shift register is reloaded whenever the Finite-State-Machine (FSM)
switches to the setup mode on starting a new calculation. The CORDIC Coprocessor
FSM controls the flow of the calculation.
11.3.1
Arctangent and Hyperbolic Arctangent Look-Up Tables
The LUTs are 20bits and 21bits wide respectively, for the arctangent table (atan LUT)
and hyperbolic arctangent table (atanh LUT). Each entry of the atan LUT is divided into
1 sign bit (MSB) followed by 19-bit integer part. For the atanh LUT, each entry has 1
repeater bit (MSB), followed by 1 sign bit, then 19-bit integer part.
The contents of the LUTs are:
•
atan LUT with data form of S19, see
•
atanh LUT with data form of S19, see
Table 11-4
Precomputed Scaled Values for atan(2
-i
)
Iteration No.
Scaled atan(2
-i
) in hex
Iteration No. Scaled atan(2
-i
) in hex
i = 0
20000
i = 8
28C
i = 1
12E40
i = 9
146
i = 2
9FB4
i = 10
A3
i = 3
5111
i = 11
51
i = 4
28B1
i = 12
29
i = 5
145D
i = 13
14
i = 6
A2F
i = 14
A
i = 7
518
i = 15
5
*