【正文】
utions often exist, the dominance of the software systems has kept those solutions out of the spotlight. Among these hardwareefficient algorithms is a class of iterative solutions for trigonometric and other transcendental functions that use only shifts and adds to perform. The trigonometric functions are based on vector rotations, other functions such as square root are implemented using an incremental expression of the desired function. The trigonometric algorithm is called CORDIC, an acronym for coordinate rotation digital puter. The incremental functions are performed with a very simple extension to the hardware architecture, and while not CORDIC in the strict sense, are often included because of the close similarity. The CORDIC algorithms generally produce one additional bit of accuracy for each iteration. 3. CORDIC THEORY: AN ALGORITHM FOR VECTOR ROTATION All of the trigonometric functions can be puted or derived from functions using vector rotations, as will be discussed in the 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。 c o s [ ta n ]x x y? ? ? 39。x d y?? ? 39。y d x?? z39。在這些算法中,是由一系列移位加法算集成的被稱為 ORDIC 算法,它用來計算一系列函數(shù)如三角函數(shù),雙曲函數(shù),線性函數(shù)和對數(shù)函數(shù)。雖然這些處理器低消耗以及能提供靈活的使用,但他們的速度往往不能滿足實際中 DSP 任務的要求。在這些硬件高效的算法中是通過一種迭代的方法解決三角函數(shù)和其他抽象函數(shù)的, 這樣就只使用了移位器和加法器來實現(xiàn)。在每次迭代后 CORDIC 算法通常會產(chǎn)生一個附加位。該算法是從一般的(吉文斯)旋轉變換得到的: 39。 s [ ta n ]y y x? ? 到目前為止,還沒有得到簡化?,F(xiàn)在 迭代旋轉可以表述為: 1 [ 2 ]ii i i i ix k x y d ?? ? ? ? ? 1 ii i i i iy y x ?? ? ? ? 其中: 21/ 1 2 iik ??? 1id?? 去掉從迭代方程不斷產(chǎn)生的一個移位加法算就得到旋轉向量。增益的精度取決于迭代的次數(shù),以及下面的關系。這個角度系統(tǒng)和任何其它系統(tǒng)之間轉換都可以通過查找來完成。角度累加器加上三分之一差分方程得到 CORDIC算法: 11 ta n ( 2 )ii i iz z d ??? ? ? ? 顯然,在這種情況下,角度對反正切是有用的,這里不需要額外的元素。 在旋轉模 式下,角度累加器被初始化為所需要的旋轉角度。對于旋轉模式, CORDIC 算法的方程為: 1 2 ii i i ix x y d ?? ? ? ? ? 1 2 ii i i iy y x d ?? ? ? ? 11 ta n ( 2 )ii i iz z d ??? ? ? ? 其中 如果 zi0, di=1 否則 di=+1 于是得到如下結果: 0 0 0 0[ c o s s in ]nnx A x z y z?? 0 0 0 0[ c o s s in ]nny A y z x z?? 0nz? 212innA ??? ? 在矢量模式下, CORDIC 算法旋轉輸入向量通過的任何角度都需要使輸出向量和 x軸對齊。如果角度累加器被初始化為零,它在迭代完后包含中間角。 Volder\[4]描述了一種初始旋轉角度為 177。y d x?? 39。x d x?? 39。第一種更蒹容旋轉角的連續(xù)性,而第二種是當接線受到限制時更為方便,它往往用于 FPGA 中。理想的結構通過速度與在預定的應用領域之間的權衡。然而,現(xiàn)在絕大多數(shù)的硬件 DSP 設計很少被工程師用到或者被沒有學過硬件的工程師有效地實現(xiàn) DSP 算法。