2017-04-10 16:43:13

王申卓,胡春林,胡廣垠,徐大誠

(蘇州大學 電子信息學院,江蘇 蘇州215000)


    摘  要: 數控振蕩器(NCO)已經被廣泛應用於數字信號處理、軟件無線電係統等諸多領域中。針對基於傳統CORDIC(Coordinate Rotation Digital Computer)算法的NCO存在工作頻率較低、精度不高、且消耗資源多等缺點,通過對CORDIC算法進一步優化改進,提出了一種NCO的設計方法,將覆蓋角度擴展至整個圓周範圍,實現了幅度與相位之間分別對應,且輸出的正餘弦波形具有完全正交性。實驗結果表明,設計的NCO具有運算速度快,消耗硬件資源較少,結構簡單易於使用硬件電路實現的優勢,最高頻率比基於傳統CORDIC算法的NCO提高了114.3%,並將精度提高至10-5~10-6的數量級。

    關鍵詞: 數控振蕩器;CORDIC算法;精度;流水線

    中圖分類號: TN402

    文獻標識碼: A

    DOI:10.16157/j.issn.0258-7998.2017.03.010


    中文引用格式: 王申卓,胡春林,胡廣垠,等. 基於CORDIC改進算法的NCO設計[J].電子技術應用,2017,43(3):43-47.

    英文引用格式: Wang Shenzhuo,Hu Chunlin,Hu Guangyin,et al. Design of NCO based on improved CORDIC algorithm[J].Application of Electronic Technique,2017,43(3):43-47.

0 引言

    數控振蕩器(Numerically Controlled Oscillator,NCO)是信號處理係統的重要組成部分。隨著現代通信係統的不斷發展,NCO憑借其相位可連續線性變化、頻率分辨率高、全數字化處理等優越特性,在圖像處理、快速傅裏葉變換、直接數字頻率合成器等設計中得到了廣泛應用。

    傳統數控振蕩器的實現方法為隻讀存儲器查找表法(ROM LUT),如圖1所示。這種方法在對分辨率要求不高的情況下,是一種簡單的實現方式。但是若要進一步提高分辨率,就會消耗大量的ROM資源;此外,存儲器讀取速度的瓶頸也限製了NCO的輸出速度。而CORDIC算法易於使用數字電路實現,僅通過簡單的加減法和移位操作就可以完成多種硬件電路難以直接實現的複雜運算,因此在NCO的設計中也得到了很好的應用。本文將對傳統CORDIC算法進一步改進,並結合改進方法提出一種適合於硬件實現的數控振蕩器的設計方法,從而提高輸出精度和運算速度。

wdz6-t1.gif

1 CORDIC算法原理

    坐標旋轉數字計算(Coordinate Rotation Digital Computer,CORDIC)首次由Jack Volder於1959年提出,1971年Walther統一了CORDIC算法的形式。CORDIC的基本思想是通過一係列隻與運算基數有關的固定小角度的不斷偏擺從而逼近期望角度,此算法具有線性收斂域和序列特性[3]

    CORDIC算法的基本原理是運用了Givens旋轉法則。假設給定向量A(x0,y0),當旋轉過一定角度θ後得到新向量B(x1,y1),如圖2所示。

wdz6-t2.gif

    根據旋轉變換法則,可得式(1):

wdz6-gs1-7.gif

    當N→∞時,KN收斂於一個常數,即KN≈0.607 252 935。當迭代次數N得到確定,KN的值也就確定了,可以把它看作一個常數,所以隻要提前計算出定標因子KN,就能正確地使用式(6)進行CORDIC求值運算。可見對於每一次小角度θi的旋轉運算,實際上隻與δi2-i運算有關,這在硬件上的反映就是加/減法和移位操作。

    最後,通過引入參數z表示當前角度和期望角度的偏差值,來確定下一次旋轉的方向,即判斷δ的符號。令zi+1=zii(z0=θ,i=0,1,…,N-1),當z≥0時,δ=+1;當z≤0時,δ=-1。若經過多次旋轉後,就可以得到與期望角度充分接近的旋轉向量。如果選取初始值(x0,y0)=(KN,0),在進行N次迭代運算後,結果將收斂於(sinθ,cosθ)。

2 CORDIC算法改進

2.1 算法迭代結構

    由CORDIC算法的原理可以看出,此算法每一次的運算結構相似,具有可迭代的特性。對於傳統的反饋結構,每次運算都利用同一組硬件反複進行迭代,此結構占用硬件資源少,能夠在一定程度上縮小電路麵積。但是由於需要不斷向輸入端反饋輸出數據,而且還需要一個狀態機來跟蹤全部迭代過程,會導致整個係統運行速度降低,吞吐量減小。如果需要實現高速高精度的輸出,就必須采用高速全流水線結構,如圖3所示。流水線結構的每一級迭代都使用單獨的運算單元,與反饋結構相比,雖然消耗了較多的硬件資源,但換來的是運算速度提高,吞吐量增大,特別適合在硬件上實現

第1頁  第2頁  第3頁  

http://www.autooo.net/autooo/wuxiantongxun/jishu/2017-04-10/171573.html