# Xilinx CORDIC 4.0 Translate parameters question

I'm developing a SysGen model using a CORDIC 4.0 Translate core to pass from rectangular coordinates to polar coordinates.

I need understand the Coarse rotation and Compensation scaling options.

About Coarse rotation, the user manual says that the input must be located in the first quadrant between pi/4 and -pi/4. What does it mean? First quadrant is from 0 to pi/2 radians, isn't it?

Finally, what is the purpose of Compensation scaling? I just don't understand the user manual about this parameter.

I hope that optimizing these parameter the cordic will be lighter enough to complain the timings of the system.

Thank you for your help!

The original CORDIC algorithm operates on vector with positives X and Y. If a vector is outside that range, you have to input the absolute values to the algorithm, and modify the output accordingly. For example, if X > 0 and Y < 0, than calculate (r, theta) of (X, abs(Y)) and output (r, -theta). The coarse rotation module should deal with that for you and allow to input any vector. I suggest that if you remove the coarse rotation module, you verify what values you can input as the documentation is confusing.
Compensation scaling refers to the fact that the CORDIC algorithm scales the amplitude of the vector with each iteration. Each iteration scales by sqrt(1+2^(-2i)) where i is the iteration number. So if the length of your vector is 1 and you have infinite iterations, the CORDIC would give you a length of approximately 1.65. The compensation scaling module would scale that back to 1. As a side note, the Xilinx documentation write the scale factor as 1/cos(atan(2^-i)), which reduces to the sqrt I gave.