【正文】
following sections. Vector rotation can also be used for polar to rectangular and rectangular to polar conversions, for vector magnitude, and as a building block in certain transforms such as the DFT and DCT. The CORDIC algorithm provides an iterative method of performing vector rotations by arbitrary angles using only shifts and adds. The algorithm is derived from the general (Givens) rotation transform: 39。 cos sinx x y???? 39。 co s siny y x?? which rotates a vector in a Cartesian plane by the angle φ These can be rearranged so that: 39。 c o s [ ta n ]x x y? ? ? 39。 c o s [ ta n ]y y x? ? So far, nothing is simplified. However, if the rotation angles are restricted so that tan 2 i? ??? , the multiplication by the tangent term is reduced to simple shift operation. Arbitrary angles of rotation are obtainable by performing a series of successively smaller elementary rotations. If the decision at each iteration, i, is which direction to rotate rather than whether or not to rotate, then the cos( )i? term bees a iterative rotation can now be expressed as: 1 [ 2 ]ii i i i ix k x y d ?? ? ? ? ? 1 ii i i i iy y x ?? ? ? ? Where: 21/ 1 2 iik ??? 1id?? Removing the scale constant from the iterative equations yields a shiftadd algorithm for vector rotation. The product of the Ki39。s can be applied elsewhere in the system or treated as part of a system processing gain. That product approaches as the number of iterations goes to infinity. Therefore, the rotation algorithm has a gain, An , of approximately . The exact gain depends on the number of iterations, and obeys the relation. 212innA ??? ? The angle of a posite rotation is uniquely defined by the sequence of the directions of the elementary rotations. That sequence can be represented by a decision vector. The set of all possible decision vectors is an angular measurement system based on binary arctangents. Conversions between this angular system and any other can be acplished using a lookup. A better conversion method uses an additional addersubtractor that accumulates the elementary rotation angles at each iteration. The elementary angles can be expressed in any convenient angular unit. Those angular values are supplied by a small lookup table (one entry per iteration) or are hardwired, depending on the implementation. The angle accumulator adds a third difference equation to the CORDIC algorithm: 11 ta n ( 2 )ii i iz z d ??? ? ? ? Obviously, in cases where the angle is useful in the arctangent base, this extra element is not needed. The CORDIC rotator is