Adaptive CORDIC: Using Parallel Angle Recoding to Accelerate Rotations
The CORDIC algorithm is used in the evaluation of a wide variety of elementary functions. It is a simple and elegant method, but it suffers from long latency. The Angle Recoding method is able to reduce the number of iterations by more than 50 percent, but its implementation in hardware requires a large increase in cycle time, to accommodate its complex angle selection function. This restricts its use to those cases where the angle of rotation is fixed and known in advance, so that the angle selection can be performed offline. This paper presents a simpler implementation of the angle selection scheme that does not require an increase in cycle time, thus allowing the Angle Recoding method to be used dynamically for arbitrary angles. The method also has the advantage that all the angle constants are found in parallel, in a single step, by testing only the initial rotation angle, without having to perform successive CORDIC iterations. This dynamic Angle Recoding method can be formulated to use "sections," to limit the number of range comparators needed, to a reasonable value. There is an increase in the number of adaptive CORDIC iterations needed, but this problem can be mitigated by using a buffer in conjunction with the method of sections.
cordic algorithm angle rotation sine computation cosine computation