CORDIC

27
DS249 April 28, 2005 www.xilinx.com 1 Product Specification © 2005 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are the property of their respective owners. Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose. Features Available for Virtex™, Virtex-E, Virtex-II, Virtex-II Pro, Virtex-4, Spartan™-II, Spartan-IIE, Spartan-3, and Spartan-3E FPGAs Functional configurations - Vector rotation (polar to rectangular) - Vector translation (rectangular to polar) - Sin and Cos - Sinh and Cosh - Atan and Atanh - Square root Optional coarse rotation module to extend the range of CORDIC from the first quadrant (+Pi/4 to - Pi/4 Radians) to the full circle Optional amplitude compensation scaling module to compensate for CORDIC algorithm’s output amplitude scale factor Output rounding modes: Truncation, Round to Pos Infinity, Round to Pos/Neg Infinity, and Round to Nearest Even Word serial architectural configuration for small area Parallel architectural configuration for high throughput Control of the internal add-sub precision Control of the number of add-sub iterations Optional input and output registers Optional control signals: CE, ND, ACLR, SCLR, RFD, and RDY X and Y data formats: Signed Fraction, Unsigned Fraction, and Unsigned Integer Phase data formats: Radian, Pi Radian Fully optimized for speed and area Fully synchronous design using a single clock Incorporates Xilinx Smart-IP technology for maximum performance To be used with v7.1i and later of the Xilinx CORE Generator™ system 0 CORDIC v3.0 DS249 April 28, 2005 0 Product Specification Figure Top x-ref 1 Figure 1: The CORDIC Core CLK CE Shift Add-Sub Stages I n p u t F m t C o a r s e R o t C o a r s e R o t Y_IN P_IN X_IN Y_OUT P_OUT X_OUT I n p u t R e g O u t p u t R e g ND RDY RFD CONTROL LOGIC CORDIC Engine Output Stage Input Stage ACLR SCLR O u t p u t R n d

description

CORDIC Algorithm

Transcript of CORDIC

Page 1: CORDIC

Features• Available for Virtex™, Virtex-E, Virtex-II, Virtex-II Pro,

Virtex-4, Spartan™-II, Spartan-IIE, Spartan-3, and Spartan-3E FPGAs

• Functional configurations

- Vector rotation (polar to rectangular)

- Vector translation (rectangular to polar)

- Sin and Cos

- Sinh and Cosh

- Atan and Atanh

- Square root

• Optional coarse rotation module to extend the range of CORDIC from the first quadrant (+Pi/4 to - Pi/4 Radians) to the full circle

• Optional amplitude compensation scaling module to compensate for CORDIC algorithm’s output amplitude scale factor

• Output rounding modes: Truncation, Round to Pos Infinity, Round to Pos/Neg Infinity, and Round to Nearest Even

• Word serial architectural configuration for small area

• Parallel architectural configuration for high throughput

• Control of the internal add-sub precision

• Control of the number of add-sub iterations

• Optional input and output registers

• Optional control signals: CE, ND, ACLR, SCLR, RFD, and RDY

• X and Y data formats: Signed Fraction, Unsigned Fraction, and Unsigned Integer

• Phase data formats: Radian, Pi Radian

• Fully optimized for speed and area

• Fully synchronous design using a single clock

• Incorporates Xilinx Smart-IP™ technology for maximum performance

• To be used with v7.1i and later of the Xilinx CORE Generator™ system

0

CORDIC v3.0

DS249 April 28, 2005 0 Product Specification

Figure Top x-ref 1

Figure 1: The CORDIC Core

CLK

CE

Shift Add-Sub Stages

Input

Fmt

Coarse

Rot

Coarse

Rot

Y_IN

P_IN

X_IN

Y_OUT

P_OUT

X_OUTInput

Reg

Output

Reg

ND RDYRFDCONTROL LOGIC

CORDIC Engine Output StageInput Stage

ACLRSCLR

Output

Rnd

DS249 April 28, 2005 www.xilinx.com 1Product Specification

© 2005 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are the property of their respective owners. Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose.

Page 2: CORDIC

CORDIC v3.0

2

Functional DescriptionThe CORDIC core implements a generalized coordinate rotational digital computer (CORDIC) algorithm,initially developed by Volder[1] to iteratively solve trigonometric equations, and later generalized byWalther[2] to solve a broader range of equations, including the hyperbolic and square root equations.The CORDIC core implements the following equation types:

• Rectangular <-> Polar Conversion

• Trigonometric

• Hyperbolic

• Square Root

Two architectural configurations are available for the CORDIC core:

• A fully parallel configuration with single-cycle data throughput at the expense of silicon area

• A word serial implementation with multiple-cycle throughput but occupying a small silicon area

A coarse rotation is performed to rotate the input sample from the full circle into the first quadrant.(The coarse rotation stage is required as the CORDIC algorithm is only valid over the first quadrant).An inverse coarse rotation stage rotates the output sample into the correct quadrant.

The CORDIC algorithm introduces a scale factor to the amplitude of the result, and the CORDIC coreprovides the option of automatically compensating for the CORDIC scale factor.

The CORDIC Algorithm

The CORDIC algorithm was initially designed to perform a vector rotation, where the vector (X,Y) isrotated through the angle yielding a new vector (X’,Y’).

Equation 1: Vector Rotation Equation

1a)

1b)

1c)

The CORDIC algorithm performs a vector rotation as a sequence of successively smaller rotations, eachof angle atan(2-i), known as micro-rotations.

Equation 2: Vector rotation expressed as a series of ‘n’ micro-rotations.

2a)

2b)

2c)

= (+ or -) 1.

See Vector Rotation or Vector Translation for details on selecting .

θ

X' = θ( )cos X× θ( ) Y×sin–( )

Y' = θ( )cos Y× θ( )sin X×+( )

θ' 0=

X' = 2 i–( )atan( ) Xi αiYi2i–

–( )cosi 1=

n

Y' = 2 i–( )atan( )cos Yi αiXi2i–

+( )i 1=

n

θ' θ αi 2 i–( )atan⋅( )–

i 1=

n

∑=

αi

αi

www.xilinx.com DS249 April 28, 2005Product Specification

Page 3: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Each micro-rotation stage can be expressed as a simple shift_addsub operation.

Equation 3: Expression for the ith microrotation.

3a)

3b)

3c)

= (+ or -) 1

The CORDIC algorithm can be used to generate either a vector rotation or a vector translation.

Vector Rotation

Vector rotation rotates the vector (X, Y) through the angle to yield a new vector (X’,Y’), as illustratedin Figure 3.

Vector rotation is performed by selecting , such that converges towards zero. I.e., when >= 0, is set to -1 and when < 0, is set +1.

Equation 4: Vector Rotation Equations

4a)

4b)

4c)

Vector Translation

Vector translation rotates the vector (X,Y) around the circle until the Y component equals zero as illus-trated in Figure 5. The outputs from vector translation are the magnitude, X’, and phase, , of the inputvector (X,Y).

Vector translation is performed by selecting such that Y’ converges towards zero. I.e., when Yi-1 >=0, is set to -1 and when Yi-1 < 0, is set +1.

Equation 5: Vector Translation Equations

5a)

5b)

5c)

xi 1+ = xi αi yi 2 i–⋅ ⋅–

yi 1+ = yi αi xi 2 i–⋅ ⋅+

θ i 1+ = θ i αi 2 i– )( )atan⋅+

αi

θ

αi θ' θ i 1–

αi θ i 1– αi

X′ Zi θ( )cos X× θ( )sin Y×–( )×=

Y′ Zi θ( )cos Y× θ( )sin X×+( )×=

θ' = 0

Zi =

1

2 i–( )atan( )acosi 1=

n

∏-------------------------------------------------

θ'

αiαi αi

X′ Zi X2 Y2+( )×=

Y' = 0

θ' = X Y⁄( )atan

Zi =

1

2 i–( )atan( )acosi 1=

n

∏-------------------------------------------------

2005 www.xilinx.com 3ication

Page 4: CORDIC

CORDIC v3.0

4

The CORDIC Scale Factor

The outputs of the CORDIC algorithm, equations 4 and 5, are equivalent to a vector rotation or vectortranslation scaled by a constant Zi. The constant Zi is known as the CORDIC scale factor.

Equation 6: The CORDIC Scale Factor

6a)

The Taylor series expansion of acos (atan (2-i ) ) is (1 + 2-2i)-1/2. Hence, the constant Zi can be expressedas

6b)

The CORDIC scale factor, Zi, is only dependent on the number of iterations, n. Only functional config-urations: Rotate, Translate, Rectangular to Polar, and Polar to Rectangular are affected by the CORDICscale factor. When these functional configurations are selected, the CORDIC core provides the option ofmultiplying by 1 / Zi to cancel out the scaling factor. See Compensation Scaling for detailed informa-tion.

Output Quantization Error

The Output Quantization Error can be split into two components; the Output Quantization Error dueto the Input Quantization (OQEIQ) and the Output Quantization Error due to Internal Precision(OQEIP).

OQEIQ is due to the 1/2 lsb of quantization noise on the X,Y and Phase inputs. In a vector rotation thisinput quantization noise results in OQEIQ of 1/2 an lsb on both the X and Y outputs. In a vector trans-lation this input quantization noise results in OQEIQ of 1/2 an lsb on the X output however OQEIQ onthe phase output is dependant on the ratio (Y/ X). Thus for small X inputs the effect of input quantiza-tion noise on OQEIQ is greatly magnified.

OQEIP is due to the limited precision of internal calculations. In the CORDIC core the default internalprecision is set such that the accumulated OQEIP is less than 1/2 the OQEIQ. The internal precision canbe manually set to (input width + output width + log2(output_width)). This will reduce OQEIP to 1/2an lsb (i.e. the phase will be calculated to full precision regardless of the magnitude input vector).

The Output Quantization Error, for a CORDIC core with default internal precision, is dominated byOQEIQ. OQEIQ can only be reduced by increasing the number of significant magnitude bits in theinput vector (X,Y). Increasing the internal precision or zero padding X and Y inputs only affects OQEIPand will have minimal effect on the total output quantization error.

The effect of input quantization and internal quantization on the CORDIC phase output quantizationerror is illustrated in the following examples.

Example 1a: The quantization error in phase output for a small input vector, (Xin_small, Yin_small).

Xin_small : “0000000001” => 1/256.

Yin_small : “0000000001” => 1/256.

Vector translation with no input quantization:

Zi =

1

2 i–( )atan( )acosi 1=

n

∏-------------------------------------------------

Zi = 1 2 2i–+( )1 2⁄

i 1=

n

www.xilinx.com DS249 April 28, 2005Product Specification

Page 5: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Xin_ideal : “0000000001” => 1/256.

Yin_ideal : “0000000001” => 1/256.

Pout_ideal : “0001100100” => 0.79.

Output quantization error due to the input quantization:

Xin_Quant = X_in - 1/2 lsb and Yin_Quant = Yin + 1/2 lsb.

Xin_Quant : “00000000001” => 1/512.

Yin_Quant : “00000000011” => 3/512.

Pout_Quant : “0010100000” =>1.25.

OQEIQ = abs( abs(Pout_Quant) - abs(Pout_Ideal) ).

OQEIQ = "0000111100" => 0.47.

Output quantization error due to the internal precision:

Xin_cordic : “0000000001” => 1/256.

Yin_cordic : “0000000001” => 1/256.

Pout_cordic : “0001111010” => 0.95.

OQEIP = abs( abs(Pout_cordic) - abs(Pout_Ideal) ).

OQEIP = "0000010110" => 0.17.

Example 1b: Quantization error in phase output for a large input vector, (Xin_large, Yin_large).

Xin_large : “0100000000” => 256/256.

Yin_large : “0100000000” => 256/256.

Vector translation with no input quantization:

Xin_ideal : “0100000000” => 256/256.

Yin_ideal : “0100000000” => 256/256.

Pout_ideal : “0001100100” => 0.79.

Output quantization error due to the input quantization:

Xin_Quant = X_in - 1/2 lsb and Yin_Quant = Yin + 1/2 lsb.

Xin_Quant : “00111111111” => 511/512.

Yin_Quant : “01000000001” => 513/512.

Pout_Quant : “0001100101” =>0.79.

OQEIQ = abs( abs(Pout_Quant) - abs(Pout_Ideal) ).

OQEIQ = "0000000001" => 0.00.

Output quantization error due to the internal precision:

Xin_cordic : “0100000000” => 256/256.

Yin_cordic : “0100000000” => 256/256.

2005 www.xilinx.com 5ication

Page 6: CORDIC

CORDIC v3.0

6

Pout_cordic : “0001100100” => 0.79.

OQEIP = abs( abs(Pout_cordic) - abs(Pout_Ideal) ).

OQEIP = "0000000000" => 0.00.

CORDIC Graphical User Interface (GUI)The CORDIC Graphical User Interface (GUI) contains four screens for configuring the core:

• Screen 1 (Figure 2): Used to configure the functional selection and architecture of the CORDIC core.

• Screen 2 (Figure 10): Used to configure the phase and magnitude data formats, optional control signals, and synchronization.

• Screen 3 (Figure 11): Provides options for configuring the rounding mode and input-outputs.

• Screen 4 (Figure 12): Provides options for advanced configuration parameters: Coarse Rotation, Iterations, internal Precision, and Compensation Scaling. In addition, the fourth screen displays the latency and controls the inclusion of placement information.

GUI Options

All of the GUI screens display the following selections:

• Next and Back: moves forward or backward one screen at a time, respectively.

• Generate: generates the CORDIC core with the currently configured parameters.

• Dismiss: cancels generation of the CORDIC and returns to the first screen of the GUI.

• Datasheet: displays a PDF document of the CORDIC data sheet.

• Version Info: displays a popup window with new features and bug fixes for CORDIC v3.0.

• Display Core Footprint: when selected, the Footprint View window appears when the core is generated and displays a graphical representation of the placement of the generated core. Note that if Create RPM is deselected, the window is empty.

www.xilinx.com DS249 April 28, 2005Product Specification

Page 7: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

CORDIC GUI: Screen 1

Component Name

Used as the base name of the output files generated for the core. Names must begin with a letter and becomposed from the following characters: a to z, 0 to 9, and “_.”

Functional Selection

The CORDIC core can be used in a variety of functional configurations. All functional configurationsare exclusive and each lists the input/output ports and the range of valid data. The following func-tional selections are available:

• Rotate

• Sin and Cos

• Arc Tan

• Square Root

• Translate

• Sinh and Cos

• Arc Tanh

In general, X_IN, Y_IN, X_OUT and Y_OUT express signed binary numbers of 1QN format andPHASE_IN and PHASE_OUT express signed binary numbers of 2QN format. When Square Root isselected, two new data formats are available: Unsigned Integer and Unsigned Fraction. For detailsabout CORDIC binary data formats see Input/Output Data Representation.

Figure Top x-ref 2

Figure 2: CORDIC Configuration GUI: Screen 1

2005 www.xilinx.com 7ication

Page 8: CORDIC

CORDIC v3.0

8

Vector Rotation

Polar to Rectangular Translation

When the vector rotation functional configuration is selected the input vector, (X, Y), is rotated by theinput angle, , using the CORDIC algorithm. This generates the scaled output vector, Zi * (X’, Y’), asshown in Figure 3.

The inputs, X_IN, Y_IN and PHASE_IN, are limited to the ranges given in Table 1. Inputs outside theseranges will produce unpredictable results. See Input/Output Data Representation for detailed infor-mation regarding CORDIC binary data formats.

An optional coarse rotation module is provided to extend the range of the inputs, X, Y and Phase, to thefull circle. For this functional configuration the coarse rotation module is selected by default but can bemanually deselected by the user. See Coarse Rotation for detailed information.

An optional compensation scaling module is provided to compensate for the CORDIC scale factor Zi.For this functional configuration the compensation scaling module is selected by default but can bemanually deselected by the user. See Compensation Scaling for detailed information.

A Polar to Rectangular Translation can be implemented by setting the functional configuration to vec-tor rotation, the input vector to (Mag, 0), and the rotation angle to , as shown in Figure 4.

Vector rotation is linear with respect to magnitude, thus the user can scale the input/output range, thatis:If (X, Y) rotated by angle = (X’, Y’) then

K*(X, Y) rotated by angle = K*(X’, Y’).

Figure Top x-ref 3

Figure 3: Vector Rotation

Figure Top x-ref 4

Figure 4: Polar to Rectangular Conversion

θ

θ

θ

θ

(X,Y) Input Vector(X’,Y’)

Zi.(X’,Y’)Output Vector

Y

X

(X, 0) Input Vector

(X’,Y’)

Zi.(X’,Y’)Output Vector

Y

X

www.xilinx.com DS249 April 28, 2005Product Specification

Page 9: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Example 1: Vector Rotation

The input vector, (Xin, Yin), is expressed as a pair of signed 1QN format numbers. The input rotationangle, Pin radians, is expressed as a signed 2QN number. The output vector, (Xout, Yout), is expressedas a pair of signed 1QN format numbers. In this example, the input/output width is set to 10 bits andthe output vector (Xout, Yout) is scaled to compensate for the CORDIC scale factor.

Xin : “0010110101” => 00.10110101 => 0.707

Yin : “0001000000” => 00.01000000 => 0.25

Pin : “1100110111” => 110.0110111 => -Pi/2

Xout : “0001000001” => 00.01000001 => 0.25

Yout : “1101001011” => 11.01001011 => -0.707

Vector Translation

Rectangular to Polar Translation

When the vector translational functional configuration is selected, the input vector (X,Y) is rotatedusing the CORDIC algorithm until the Y component is zero. This generates the scaled output magni-tude, Zi * Mag(X,Y), and the output phase, Atan(Y/X), as shown in Figure 5.

The inputs, X_IN and Y_IN, are limited to the ranges given in Table 2. Inputs outside these ranges willproduce unpredictable results. See Input/Output Data Representation for detailed information regard-ing CORDIC binary data formats.

An optional coarse rotation module is provided to extend the range of inputs, X and Y, to the full circle.For this functional configuration the coarse rotation module is selected by default but can be manuallydeselected by the user. See Coarse Rotation for detailed information.

An optional compensation scaling module is provided to compensate for the CORDIC scale factor Zi.For this functional configuration the compensation scaling module is selected by default but can bemanually deselected by the user. See Compensation Scaling for detailed information.

A rectangular to polar translation can be implemented by setting functional configuration to vectortranslation, and the input vector to (X,Y), as shown in Figure 5.

Table 1: Vector Rotation I/O

Signal Description

X_INInput X Coordinate

Range: -1 <= X_IN<=1

Y_INInput Y Coordinate

Range: -1 <= Y_IN<=1

PHASE_INInput Rotation Angle

Range: -Pi <= PHASE_IN <= Pi

X_OUTOutput X Coordinate * Z

Range: -Sqrt2 <= X_OUT<= Sqrt2

Y_OUTOutput Y Coordinate * Z

Range: -Sqrt2 <= Y_OUT<= Sqrt2

2005 www.xilinx.com 9ication

Page 10: CORDIC

CORDIC v3.0

10

Vector translation is linear with respect to magnitude, thus the user can scale the input/output range;that is:

If vector (X, Y) is translated to (X’, ’), thenvector K*(X, Y) is translated to K*(X’, ’).

The phase angle of a zero length vector, (0,0), is indeterminate and the output phase angle generated bythe core will be unpredictable.

The accuracy of the phase output from the CORDIC vector translation algorithm is limited by the num-ber of significant magnitude bits of the input vector (X, Y). See Output Quantization Error for detailedinformation.

Example 2: Vector Translation

The input vector, (Xin, Yin), is expressed as a pair of signed 1QN format numbers. The output magni-tude, Xout, is expressed as a signed 1QN format number. The output phase angle, Pout radians, isexpressed as a signed 2QN number. In this example the input/output width is set to 10 bits and the out-put Xout is scaled to compensate for the CORDIC scale factor.

Xin : “0010110101” => 00.10110101 => 0.707

Yin : “0001000000” => 00.01000000 => 0.25

Xout : “0011000000” => 00.11000000 => 0.75

Pout : “0000101011” => 000.0101011 => 0.336

Figure Top x-ref 5

Figure 5: Vector Translation (Polar to Rectangular)

Table 2: Vector Translation I/O

Signal Description

X_INInput X Coordinate

Range: -1 <= X_IN <= 1

Y_INInput Y Coordinate

Range: -1 <= Y_IN <= 1

X_OUTOutput Magnitude * Z

Range: 0 <= X_OUT <= Sqrt2

PHASE_OUTOutput Phase

Range: -Pi <= Phase Out <= Pi

θθ

(X,Y)

(Mag,0)

Zi.(Mag,0)

Y

X

Input Vector

Output Phase

Output Mag

www.xilinx.com DS249 April 28, 2005Product Specification

Page 11: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Sin and Cos

When the Sin Cos functional configuration is selected, the unit vector is rotated, using the CORDICalgorithm, by input angle, . This generates the output vector (Cos( ), Sin( )).

The input, PHASE_IN, is limited to range given in Table 3. Inputs outside this range will produceunpredictable results. See Input/Output Data Representation for detailed information regardingCORDIC binary data formats.

An optional coarse rotation module is provided to extend the range of input angle, , to the full circle.For this functional configuration the coarse rotation module is selected by default but can be manuallydeselected by the user. See Coarse Rotation for detailed information.

The compensation scaling module is disabled for the Sin and Cos functional configuration as it is inter-nally prescaled to compensate for the CORDIC scale factor.

Example 3: Sin and Cos

The input angle, Pin, is expressed as a signed 2QN number. The output vector, (Xout, Yout), isexpressed as a pair of signed 1QN numbers. In this example the input/output width is set to 10 bits.

Pin: “0001100100” => 000.1100100 => 0.781

Xout : “0010110110” => 00.10110110 => 0.711

Yout : “0010110100” => 00.10110100 => 0.703

Sinh and Cosh

When the SinhCosh functional configuration is selected, the CORDIC algorithm is used to move thevector (1,0) through hyperbolic angle, p, along the hyperbolic curve as shown in Figure 6. The hyper-bolic angle represents the log of the area under the vector (X, Y) and is unrelated to a trigonometricangle. This generates the output vector (Cosh(p), Sinh(p)).

The input hyperbolic angle, PHASE_IN, is limited to range given in Table 4. Inputs outside this rangewill produce unpredictable results. See Input/Output Data Representation for detailed informationregarding CORDIC binary data formats.

The coarse rotation module is disabled for the Sinh and Cosh functional configuration, as it does notapply to hyperbolic transformations.

Table 3: Sin and Cos

Signal Description

PHASE_INInput Angle

Range: -Pi <= PHASE_IN <= Pi

X_OUTOutput Cos( )

Range: -1 <= X_OUT <= 1

Y_OUTOutput Sin( )

Range: -1 <= Y_OUT <= 1

θ θ θ

θ

θ

θ

θ

2005 www.xilinx.com 11ication

Page 12: CORDIC

CORDIC v3.0

12

The compensation scaling module is disabled for the Sinh and Cosh functional configuration, as it isinternally prescaled to compensate the CORDIC hyperbolic scale factor.

Example 4: Sinh and Cosh

The input hyperbolic angle, Pin, is expressed as a signed 2QN number. The output vector, (Xout, Yout),is expressed as a pair of signed 1QN Numbers. In this example the input/output width is set to 10 bits.

Pin : “0001001110” => 000.1001110 => 0.781

Xout : “0100110001” => 01.00110001 => 1.191

Yout : “0010100110” => 00.10100110 => 0.648

ArcTan

When the Arc Tan functional configuration is selected, the input vector (X,Y) is rotated (using theCORDIC algorithm) until the Y component is zero. This generates the output angle, Atan(Y/X).

The inputs, X_IN and Y_IN, are limited to the ranges given in Table 5. Inputs outside these ranges willproduce unpredictable outputs. See Input/Output Data Representation for detailed informationregarding CORDIC binary data formats.

An optional coarse rotation module is provided to extend the range of inputs X and Y to the full circle.For this functional configuration the coarse rotation module is selected by default but can be manuallydeselected by the user. See Coarse Rotation for detailed information.

The compensation scaling module is disabled for the Arc Tan functional configuration as no magnitudedata is output.

The ArcTan of a zero length vector, (0,0), is indeterminate and the output angle generated by the corewill be unpredictable.

Figure Top x-ref 6

Figure 6: Hyperbolic Sinh Cosh

Table 4: Sinh and Cosh

Signal Description

PHASE_INInput Hyperbolic Angle

Range: -Pi/4 <= PHASE_IN <= Pi/4

X_OUTOutput Cosh

Range: 1 =< X_OUT < 2

Y_OUTOutput Sinh

Range: -2 <= Y_OUT < 2

Output Vector (Sinh, Cosh)

Input Vector(X_IN,0)

Hyperbolic “Angle” (PHASE_IN)

Y

X

Hyperbolic Curve

p

www.xilinx.com DS249 April 28, 2005Product Specification

Page 13: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

The accuracy of the output angle from CORDIC vector translation algorithm is limited by the numberof significant magnitude bits of the input vector (X, Y). See Output Quantization Error for detailedinformation.

Example 5: Arc Tan

The input vector (Xin, Yin) is expressed as a pair of signed 1QN numbers. The output angle, Pout radi-ans, is expressed as a signed 2QN number. In this example, the input/output width is set to 10 bits.

Xin : “0010100000” => 00.10100000 => 0.625

Yin : “0010000000” => 00.10000000 => 0.500

Pout : “0001010110” => 000.1010110=> 0.672

ArcTanh

When the ArcTanh functional configuration is selected, the CORDIC algorithm is used to move theinput vector (X,Y) along the hyperbolic curve (Figure 7) until the Y component reaches zero. This gen-erates the hyperbolic “angle,” Atanh(Y/X). The hyperbolic angle represents the log of the area underthe vector (X,Y) and is unrelated to a trigonometric angle.

The inputs, X_IN and Y_IN, are limited to the ranges given in Table 6. Inputs outside these ranges willproduce unpredictable outputs. Additionally, Y_IN must be less than or equal to (4/5 * X_IN) or theCORDIC algorithm will not converge. See Input/Output Data Representation for detailed informationabout CORDIC binary data formats.

The coarse rotation module is disabled for the Arc Tanh functional configuration, as it does not applyto hyperbolic transformations.

Table 5: ArcTan

Signal Description

X_INInput X Coordinate

Range: -1 <= X_IN <=1

Y_INInput Y Coordinate

Range: -1 <= Y_IN <=1

PHASE_OUTOutput Angle

Range: -Pi <= Phase Out <= Pi

2005 www.xilinx.com 13ication

Page 14: CORDIC

CORDIC v3.0

14

The compensation scaling module is disabled for the Arc Tanh functional configuration as no outputmagnitude data is output.

Example 6: Arc Tanh

The input vector, (Xin, Yin), is expressed as a pair of signed 1QN numbers. The output, Pout, isexpressed as a signed 2QN number. In this example, the input/output width is set to 10 bits.

Xin : “0001100101” => 00.01100101 => 0.395

Yin : “0001100101” => 00.01100101 => 0.395

Pout : “0001110001” => 000.1110001=> 0.883

Square Root

When the square root functional configuration is selected a simplified CORDIC algorithm is used tocalculate the positive square root of the input.

The input, X_IN, and the output, X_OUT, are always positive and are both expressed as either,unsigned fractions or unsigned integers.

When data format is set to Unsigned Fraction, X_IN is limited to the range: 0 <= X_IN < +2.

When data format is set to Unsigned Integer, X_IN is limited to the range: 0 <= X_IN < 2**Input Width,and the output width is determined automatically based on the input width.

See Input/Output Data Representation for detailed information regarding CORDIC binary data for-mats.

The coarse rotation module is disabled because coarse rotation is not required for the Square Root func-tional configuration.

Figure Top x-ref 7

Figure 7: Hyperbolic ArcTanh

Table 6: ArcTanh

Signal Description

X_INInput X CoordinateRange: 0 < X_IN <2

Y_INInput Y CoordinateRange: -2 <= Y_IN <= 2 -X_IN * 4/5 <= Y_IN <= X_IN * 4/5

PHASE_OUTOutput Hyperbolic AngleRange: -Pi/2 <= Phase Out <= Pi/2

Input Vector (Xin, Yin)

Internal Vector(Xout,0)

Hyperbolic “Angle” (Phase_out)

Y

X

Hyperbolic Curve

p

www.xilinx.com DS249 April 28, 2005Product Specification

Page 15: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

The compensation scaling module is disabled because no output compensation is required for theSquare Root functional configuration.

Example 7a: Square Root - Unsigned Fraction

The input, Xin, is expressed as an unsigned 1QN format fraction. The output, Xout, is expressed as anunsigned 1QN format fraction. In this example the input/output width is set to 10 bits.

Xin : “0000100000” => 0.000100000 => 1/16

Xout : “0010000000” => 0.010000000 => 1/4

Example 7b: Square Root - Unsigned Integer

The input, Xin, is expressed as an unsigned integer. The output, Xout, is expressed as an unsigned inte-ger. In this example the input width is set to 10 bits so the output width is automatically set to 6 bits.

Xin : “0000100000” => 32

Xout :“000110” => 6

Architectural Configuration

Two architectural configurations are available for the CORDIC core: Parallel, with single-cycle datathroughput and large silicon area, and Word Serial, with multiple-cycle throughput and a smaller sili-con area.

Word Serial Architectural Configuration

The CORDIC algorithm requires approximately one shift-addsub operation for each bit of accuracy. ACORDIC core implemented with the word serial architectural configuration, implements theseshift-addsub operations serially, using a single shift-addsub stage and feeding back the output.

A word serial CORDIC core with N bit output width has a latency of N cycles and produces a new out-put every N cycles. The implementation size of a word serial CORDIC core is directly proportional tothe internal precision.

Parallel Architectural Configuration

The CORDIC algorithm requires approximately one shift-addsub operation for each bit of accuracy. ACORDIC core with a parallel architectural configuration implements these shift-addsub operations inparallel using an array of shift-addsub stages.

A parallel CORDIC core with N bit output width has a latency of N cycles and produces a new outputevery cycle. The implementation size of a parallel CORDIC core is directly proportional to the internalprecision times the number of iterations.

Table 7: Square Root

Signal Description

X_INInput X Value

Range: 0 <= X_IN

X_OUTOutput Square Root

Range: 0 <= X_OUT

2005 www.xilinx.com 15ication

Page 16: CORDIC

CORDIC v3.0

16

Pipelining Mode

The CORDIC core provides three pipelining modes: None, Optimal, and Maximum. The choice of pipe-lining mode is based on the selection of Functional Configuration and Architectural Configuration.Unavailable pipelining modes are greyed out in the GUI.

• None: the CORDIC core is implemented without pipelining.

• Optimal: the CORDIC core is implemented with as many stages of pipelining as possible without using any additional LUTs.

• Maximum: the CORDIC core is implemented with a pipeline after every shift-add sub stage.

Figure Top x-ref 8

Figure 8: Word Serial Architectural Configuration

Figure Top x-ref 9

Figure 9: Parallel Architectural Configuration

X_IN

Y_IN

PHASE_IN

X_OUT

Y_OUT

PHASE_OUT

Shift AddSub Stage

X_Feedback

X_IN X_OUT

Y_Feedback

Y_IN Y_OUT

P_Feedback

P_IN P_OUT

N Shift Addsub Stages

X_IN

Y_IN

PHASE_IN

X_OUT

Y_OUT

PHASE_OUT

CONSTANT

www.xilinx.com DS249 April 28, 2005Product Specification

Page 17: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

CORDIC GUI: Screen 2

Data Format

The CORDIC core provides three formats for expressing the X and Y components of data samples:

• Signed Fraction: Default setting. The X and Y inputs and outputs express signed fractions of Q1 format.Example: 11100000” represents the value -0.5.

• Unsigned Fraction: The X and Y inputs and outputs express unsigned fractions of Q1 format.Available only for Square Root functional configuration.Example: “11100000” represents the value +1.75.

• Unsigned Integer: The X and Y inputs and outputs express unsigned integers.Available only for Square Root functional configuration.Example: “11100000” represents the value +224.

Phase Format

The CORDIC core provides two Phase Format options:

• Radians: the phase is expressed as signed fractions of Q2 format in radian units.Example: “01100000” represents the value 3.0 radians.

• Scaled Radians: the phase is expressed as signed fractions of Q2 format with pi-radian units. One scaled-radian equals Pi * 1 radians.Example: “11110000” represents the value -0.5 * Pi radians.

See Input/Output Data Representation for detailed information about CORDIC binary data formats.

Synchronization Enable

The Sync Enable parameter has two states:

• Override: when CE overrides the SCLR signal, SCLR is ignored while CE is deasserted.

Figure Top x-ref 10

Figure 10: CORDIC GUI: Screen 2

2005 www.xilinx.com 17ication

Page 18: CORDIC

CORDIC v3.0

18

• No Override: default setting, resulting in a more efficient implementation.

Optional Pin Selection • Control Signals: ND, RDY, ACLR, SCLR, and CE control signals are optional.

Note: The presence of the CLK and RFD control signals are determined based on the selected Architectural Configuration, Pipelining Mode, Register Inputs, and Register Outputs.

• Output Signals: X_OUT, Y_OUT and PHASE_OUT are optional. The default states of these signals are determined based on the selected functional configuration but can be manually overridden by the user.

CORDIC GUI: Screen 3

Round Mode

The CORDIC core provides four rounding modes:

• Truncate: The X_OUT, Y_OUT, and PHASE_OUT outputs are truncated.

• Positive Infinity: The X_OUT, Y_OUT, and PHASE_OUT outputs are rounded (1/2 rounded up).

• Pos Neg Infinity: The outputs X_OUT, Y_OUT, and PHASE_OUT are rounded (1/2 rounded up, -1/2 rounded down).

• Nearest Even: The X_OUT, Y_OUT, and PHASE_OUT outputs are rounded toward the nearest even number (1/2 rounded down and 3/2 is rounded up).

Figure Top x-ref 11

Figure 11: CORDIC GUI: Screen 3

www.xilinx.com DS249 April 28, 2005Product Specification

Page 19: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Input / Output Common Configuration Options

The CORDIC core provides four input / output common configuration options:

• Register Inputs: input signals X_IN, Y_IN, PHASE_IN and ND are registered.

• Register Outputs: output signals, X_OUT, Y_OUT, PHASE_OUT, RFD and RDY are registered.

• Input Width: input Width controls the widths of the input ports, X_IN, Y_IN and PHASE_IN. The Input Width can be configured in the range 8 to 48 bits.

• Output Width: output Width controls the widths of the output ports, X_OUT, Y_OUT, PHASE_OUT. The Output Width can be configured in the range 8 to 48 bits.

Advanced Configuration Parameters

Table 8: Rounding Modes

Truncate Round+/- Round + Even

1.50 1 2 2 2

1.00 1 1 1 1

0.50 0 1 1 0

0.25 0 0 0 0

0.00 0 0 0 0

- 0.25 -1 0 0 0

- 0.50 -1 -1 0 -1

- 0.75 -1 -1 -1 -1

Figure Top x-ref 12

Figure 12: CORDIC GUI: Screen 4

2005 www.xilinx.com 19ication

Page 20: CORDIC

CORDIC v3.0

20

• IterationsControls the number of internal add-sub iterations to perform.When Iterations is set to zero, the number of iterations performed is determined by the required accuracy of the output. By default, Iterations is set to zero, thus the number of iterations is automatically determined.

• Precision: Configures the internal precision of the internal add-sub iterations. When Precision is set to zero, internal precision is determined automatically based on the required accuracy of the output and the number of internal iterations. By default, Precision is set to zero, thus the internal precision is automatically determined.

When Precision is set to (input width + output width + logbase2(output_width)) the output phase is precise to the full output width regardless of input magnitude. However, the output phase accuracy is still limited by the OQEIQ component of Output Quantization Error and by the number of Iterations of the Cordic Micro-Rotation block.

• Coarse Rotation: Controls the instantiation of the coarse rotation module. Instantiation of the coarse rotation module is the default for the following functional configurations: Vector rotation, Vector translation, Sin and Cos, and Arc Tan. If Coarse Rotation is turned off for these functions then the input/output range is limited to the first quadrant (-Pi/4 to + Pi/4). Coarse rotation is not required for the Sinh and Cosh, Arctanh, and Square Root configurations.

The standard CORDIC algorithm operates over the first quadrant. Coarse Rotation extends the CORDIC operational range to the full circle by rotating the input sample into the first quadrant and inverse rotating the output sample back into the appropriate quadrant.

• Compensation Scaling Controls the compensation scaling module used to compensate for CORDIC magnitude scaling. CORDIC magnitude scaling affects the Vector Rotation and Vector Translation functional configurations, and does not affect the SinCos, SinhCosh, ArcTan, ArcTanh and Square Root functional configurations. For the latter configurations, compensation scaling is set to No Scale Compensation.

CORDIC magnitude scaling is a side effect of the CORDIC algorithm. The magnitude outputs, X and Y, are generated scaled by the CORDIC scale factor, ZI. The compensation scaling module compensates for the effect of CORDIC magnitude scaling by scaling the outputs, X and Y, by 1/ZI.

- No Scale Compensation: The outputs X and Y will not be compensated and will be generated scaled by the ratio ZI.

- CCM Scale Compensation: The outputs X and Y are compensated using a LUT-based Constant Coefficient Multiplier.

- Block Multiplier: The outputs X and Y are compensated using the built-in Block Multiplier. Note that Block Multiplier mode is only available when the project’s target architecture has built-in multipliers.

LayoutCreate RPM: The core is generated with relative location attributes attached. Note that when a core is created as an RPM (relationally placed macro) it is possible that one or more of the core dimensions may exceed those of the device being targeted. When this happens, mapping errors occur and the compilation process fails. To correct the situation, deselect Create RPM and regenerate the core.

www.xilinx.com DS249 April 28, 2005Product Specification

Page 21: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Design FeedbackLatency: Reports the latency of the design with the currently selected parameters. Latency is defined as the number of clock cycles between the input being sampled and the corresponding sample appearing on the outputs.

Physical Description

Pinout

CORDIC Data Inputs

X_IN, Y_IN and PHASE_IN are the data input ports for the CORDIC Core. All data input ports are readsimultaneously to form a single input sample. The width of the data input ports is configured using theparameter Input Width. The data input ports are optionally registered. The set of data input portsrequired for a particular Functional Configuration are automatically determined by the GUI as shownin Table 10.

• X_IN Data Input Bus: Contains the X component of the input data sample.

• Y_IN Data Input Bus. Contains the Y component of the input data sample.

• PHASE_IN Data Input Bus. Contains the phase component of the input data sample.

CORDIC Data Outputs

X_OUT, Y_OUT and PHASE_OUT are the data output ports for the CORDIC core. The default settingsfor data output ports required for a particular Functional Configuration are automatically determinedby the GUI as shown in Table 10, but may be modified from the default settings by the user. The widthof the CORDIC data output ports is set using the parameter Output Width. The data output ports areoptionally registered.

Table 9: Core Pinout

Port Name Port Width Direction Has Pin Description

X_IN Input_Width IN Dependent X component of input sample

Y_IN Input_Width IN Dependent Y component of input sample

PHASE_IN Input_Width IN DependentPhase component of input

sample

X_OUT Output_Width OUT Optional X component of output sample

Y_OUT Output_Width OUT Optional Y component of output sample

PHASE_OUT Output_Width OUT OptionalPhase component of output

sample

ND 1 IN Dependent New sample on input ports

RFD 1 OUT Dependent Ready for new data sample

RDY 1 OUT Dependent New output data is ready

CLK 1 IN Dependent Clock

CE 1 IN Optional Clock enable

ACLR 1 IN Optional Asynchronous clear

SCLR 1 IN Optional Synchronous clear

2005 www.xilinx.com 21ication

Page 22: CORDIC

CORDIC v3.0

22

• X_OUT Data Output Bus: Contains the X component of the output data sample.

• Y_OUT Data Output Bus: Contains the Y component of the output data sample.

• PHASE_OUT Data Output Bus: Contains the Phase component of the output data sample.

Input/Output Data Representation

Data Signals

The Data Signals are: X_IN, Y_IN, X_OUT and Y_OUT.

For Functional Configurations, Rotate, Translate, Sin Cos and Atan the Data Signals are represented in1QN Format.

Input data signals, X_IN and Y_IN, must be in the range: -1 <= input data signal <= 1. Input data out-side this range will produce unpredictable results.

In 1Q10 format values, +1 and -1, are represented:

"0100000000" => 01.00000000 => +1.0

"1100000000" => 11.00000000 => - 1.0

For Functional Configuration, Square Root, the Data Signals, X_IN and X_OUT, are both represented ineither Unsigned Fractional or Unsigned Integer data format.

Phase Signals

The Phase Signals are: PHASE_IN and PHASE_OUT. The phase signals are always represented in 2QNformat.

When Phase Format is set to Radians, PHASE_IN must be in the range: -Pi <= (PHASE_IN) <= Pi.PHASE_IN outside this range will produce unpredictable results.

In 2Q10 format values, +Pi and -Pi, are represented:

"01100100100" => 011.00100100 => +3.14

"10011011100" => 100.11011100 => - 3.14

When Phase Format is set to Scaled Radians PHASE_IN must be in the range: -1 <= (PHASE_IN) <= +1.PHASE_IN outside this range will produce unpredictable results.

In 2Q10 format values, +1 and -1, are represented:

Table 10: Input/Output Pins vs. Functional Configuration

XIN YIN PIN XOUT YOUT POUT

Rotate 1 1 1 1 1 0

Translate 1 1 0 1 0 1

Sin Cos 0 0 1 1 1 0

Arc Tan 1 1 0 0 0 1

Sinh Cosh 0 0 1 1 1 0

Arc Tanh 1 1 0 0 0 1

Sq. Root 1 0 0 1 0 0

www.xilinx.com DS249 April 28, 2005Product Specification

Page 23: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

"0010000000" => 001.0000000 => +1.0

"1110000000" => 111.0000000 => - 1.0

Q Format Signed Numbers

A QN format number is an N bit 2’s complement binary number; a sign bit followed by an N bit man-tissa (fraction). QN format can be used to express numbers in the range -1 to (1 - 2-N).

An XQN format number is a QN format number left shifted by X bits. XQN format can be used toexpress numbers in the range: ( -2X ) to ( 2X - 2(X-N) ).

Examples of XQN Format Numbers

Control Signals

The following section describes the control signals used by the CORDIC core. All control signals aresynchronous to the rising edge of CLK, except ACLR.

A timing diagram for a CORDIC core with a Word Serial Architectural Configuration is shown inFigure 13.

A timing diagram for a CORDIC core with a Parallel Architectural Configuration is shown in Figure 14.

Optional Control Pins

CLK

All core operations are synchronous with the rising edge of the CLK (Clock) input, except the optionalACLR input.

CLK is mandatory when ((Pipeline Mode /= Pipeline None) or (Register Inputs = True) or (RegisterOutputs = True)). Otherwise, CLK is not present.

Table 11: 1QN Format Data

SB D8 D7 D6 D5 D4 D3 D2 D1

+1 0 1 0 0 0 0 0 0 0

-1 1 1 0 0 0 0 0 0 0

+Pi/4 0 0 1 1 0 0 1 0 0

-Pi/4 1 1 0 0 1 1 0 1 1

^ <---Binary Point

Table 12: 2QN Format Phase

SB D8 D7 D6 D5 D4 D3 D2 D1

+1 0 0 1 0 0 0 0 0 0

-1 1 1 1 0 0 0 0 0 0

+Pi 0 1 1 0 0 1 0 0 1

-Pi 1 0 0 1 1 0 1 1 1

^ <---Binary Point

2005 www.xilinx.com 23ication

Page 24: CORDIC

CORDIC v3.0

24

ND

When the ND (New Data) input is high, the input data is sampled on the same rising clock edge. ND isignored if CE is low or if RFD is low.

ND is mandatory when (Architectural Configuration = Word Serial). Otherwise, ND is optional.

RFD

RFD (Ready for Data) indicates that the core is ready to sample new input data. The RFD signal is sethigh upon startup or during reset.

RFD is mandatory when (Architectural Configuration = Word Serial). Otherwise, RFD is not present.

RDY

The RDY (Ready) output signals that a new valid data sample is present on the Data Output Ports. RDYis pulsed high on the first clock cycle of valid data at the output. The RDY signal is set low upon startupor during reset.

RDY is mandatory when (Architectural Configuration = Word Serial). Otherwise, RDY is optional.

ACLR

All control signals are synchronous to the rising edge of CLK except ACLR. When ACLR is asserted(High), all the core flip-flops are asynchronously initialized. The core remains in this state until ACLRis deasserted. ACLR is optional.

SCLR

When SCLR is asserted (High), all the core flip-flops are synchronously initialized. The core remains inthis state until SCLR is deasserted. SCLR is optional.

CE

When CE (Clock Enable) is Low, all the synchronous inputs are ignored and the core remains in its cur-rent state. CE is optional.

Figure Top x-ref 13

Figure 13: Control Signal Timing Diagram (Word Serial Architecture)

CORDIC Latency

CLK

CE

SCLR

NDData

Data

RDY

Do0

Di0

Multiple ClockCycles

RFD

<0>

Inputs

Outputs

www.xilinx.com DS249 April 28, 2005Product Specification

Page 25: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Characterization DataThe Characterization Data in Table 13 and Table 14 is was generated for CORDIC Cores with 16 bitInput and Output widths, automatically determined Iterations and Precision, Coarse Rotation, noCompensation Scaling and Maximum Pipelining.

Parameter Values in the XCO FileNames of the XCO parameters and their values correspond to the names and values shown in the GUI.Underscore characters (_) are used instead of spaces. The text in an XCO file is case insensitive. The following sample provides an example of the CSETparameters in an XCO file.

CSET Parameters in an XCO File

CSET synchronization_enable = No_Override

CSET create_rpm = true

CSET register_inputs = true

CSET sclr = false

CSET architectural_configuration = Parallel

CSET phase_format = Radians

Figure Top x-ref 14

Figure 14: Control Signal Timing Diagram (Parallel Architecture)

Table 13: Characterization Data - Parallel Architecture

Parallel Rotate TranslateSin Cos

ArcTanSinhCosh

ArctanhSqrt Frac

Sqrt Int

Size 680 613 613 571 660 625 235 103

Speed in MHz 170 164 164 165 168 160 207 227

Table 14: Characterization Data - Word Serial Architecture

Word Serial Rotate TranslateSin Cos

ArcTanSinhCosh

ArctanhSqrt Frac

Sqrt Int

Size 366 300 299 279 273 279

Speed 133 134 134 134 114 116

CORDIC Latency

CLK

CE

SCLR

NDData

Data

RDY

Do0

Di0

Multiple ClockCycles

<0>

Inputs

Outputs

Di1 Di2

Do2

2005 www.xilinx.com 25ication

Page 26: CORDIC

CORDIC v3.0

26

CSET nd = false

CSET data_format = SignedFraction

CSET register_outputs = true

CSET rdy = true

CSET aclr = false

CSET ce = true

CSET y_out = true

CSET component_name = cordic_rotate

CSET pipelining_mode = Maximum

CSET compensation_scaling = No_Scale_Compensation

CSET input_width = 16

CSET round_mode = Round_Nearest_Even

CSET iterations = 0

CSET precision = 0

CSET functional_selection = Rotate

CSET output_width = 16

Table 15: Parameter File Information

Parameter Name XCO Filename Values Default GUI Setting

aclr True, False False

architectural_configuration Word_Serial, Parallel Parallel

ce True, False True

compensation_scalingno_scale_compensation, ccm_scale_compensation, block_scale_compensation

no_scale_compensation

component_nameASCII text starting with a letter and based upon the following character set: a..z, 0..9 and _

blank

coarse_rotation True, False True

create_rpm True, False True

data_format SignedFraction, UnsignedFraction, UnsignedInteger SignedFraction

functional_selectionRotate, Translate, Sin_and_Cos, Sinh_and_Cosh, Atan, Atanh, Square_Root

Rotate

input_width 8 to 48 16

iterations 0 to 48 0

nd True, False False

output_width 8 to 48 16

phase_format Radians, Scaled_Radians Radians

www.xilinx.com DS249 April 28, 2005Product Specification

Page 27: CORDIC

CORDIC v3.0

DS249 April 28,Product Specif

Background Information

References1. Volder, J., “The CORDIC Trigonometric Computing Technique” IRE Trans. Electronic Computing, Vol.

EC-8, Sept. 1959, pp330-3342. Walther, J.S., “A Unified Algorithm for Elementary Functions,” Spring Joint computer conf., 1971,

proc., pp379-385

Ordering Information

This core may be downloaded from the Xilinx IP Center for use with the Xilinx CORE Generator systemv7.1i and later. The Xilinx CORE Generator system is bundled with all ISE Foundation software pack-ages, at no additional charge.

To order Xilinx software, please visit the Xilinx Xpresso cafe or contact your local Xilinx sales represen-tative.

Information on additional Xilinx LogiCORE modules is available on the Xilinx IP Center.

Revision History

phase_out True, False False

pipeline_mode minimum, optimum, maximum maximum

precision 0 or output_width to 48 0

rdy True, False True

register_inputs True, False True

register_outputs True, False True

rfd True, False False

round_modeRound_Truncate, Round_Pos_Inf, Round_Pos_Neg_Inf, Round_Nearest_Even

Round_Pos_Neg_Inf

sclr true, false false

synchronization_enable No_Override, Override No_Override

x_out True, False True

y_out True, False True

Date Version Revision

03/28/03 1.0 Revision History added to document.

03/28/03 1.1 Updated Hyperbolic Transformations and PiRadian format.

03/28/03 2.0 Improved parameterization, new rounding modes, and new data formats.

05/21/04 3.0 Added Virtex-4 support and update to v6.2i of Xilinx CORE Generator system.

04/28/05 3.1 Updated to indicate support for Spartan-3E and Xilinx ISE software v7.1i.

Table 15: Parameter File Information (Continued)

Parameter Name XCO Filename Values Default GUI Setting

2005 www.xilinx.com 27ication