《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于CORDIC改進算法的NCO設計
基于CORDIC改進算法的NCO設計
2017年電子技術應用第3期
王申卓,胡春林,胡廣垠,徐大誠
蘇州大學 電子信息學院,江蘇 蘇州215000
摘要: 數控振蕩器(NCO)已經被廣泛應用于數字信號處理、軟件無線電系統等諸多領域中。針對基于傳統CORDIC(Coordinate Rotation Digital Computer)算法的NCO存在工作頻率較低、精度不高、且消耗資源多等缺點,通過對CORDIC算法進一步優化改進,提出了一種NCO的設計方法,將覆蓋角度擴展至整個圓周范圍,實現了幅度與相位之間分別對應,且輸出的正余弦波形具有完全正交性。實驗結果表明,設計的NCO具有運算速度快,消耗硬件資源較少,結構簡單易于使用硬件電路實現的優勢,最高頻率比基于傳統CORDIC算法的NCO提高了114.3%,并將精度提高至10-5~10-6的數量級。
中圖分類號: 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.
Design of NCO based on improved CORDIC algorithm
Wang Shenzhuo,Hu Chunlin,Hu Guangyin,Xu Dacheng
School of Electronic and Information Engineering,Soochow University,Suzhou 215000,China
Abstract: Numerically Controlled Oscillator(NCO) has been widely applied in many fields,including digital signal processing and software defined radio. NCO based on the conventional CORDIC has disadvantages of low operation frequency, low precision, and high consumption of resources. To solve these problems, a design of NCO is presented in this paper by improving the conventional CORDIC, the phase and amplitude of a one-to-one corespondence is realized, extends the convergence range to the entire circumference, and the sine and cosine waveforms are completely orthogonal. The simulation results showed that the design has advantages of high speed, low resource usage and simple structure, the maximum clock frequency is 114.3% higher than the NCO which is based on the traditional CORDIC algorithm, and the accuracy is improved to 10-5~10-6.
Key words : NCO;CORDIC algorithm;precision;pipeline

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所示。流水線結構的每一級迭代都使用單獨的運算單元,與反饋結構相比,雖然消耗了較多的硬件資源,但換來的是運算速度提高,吞吐量增大,特別適合在硬件上實現[4]

wdz6-t3.gif

    此外,有限次數的迭代運算通常無法完全消除累加角度與期望角度間的誤差,因此我們引入殘余角誤差ε,并將式(4)改寫為:

    wdz6-gs8.gif

    由式(8)可以看出,隨著迭代次數或者流水級數的不斷增加,近似誤差ε的趨勢是減小的,角度累加所得到的值會逐漸逼近期望角度,CORDIC算法的精度也會不斷提高。但是考慮到實際設計中不能無限制增加流水線級數,一方面流水線級數過多會降低系統整體運算速度,另一方面流水增加至一定級數后,對精度的提高微乎其微,但是卻消耗了大量的硬件資源,因此必須選擇適合的流水線級數,來控制硬件成本和計算復雜度。根據Yu Hen Hu提出ε的上界[8]

    wdz6-gs9.gif

其中AN-1為最后一次的旋轉角度,N為旋轉次數。為了達到所需要的精度,我們選擇N=16,即通過16級并行流水線結構來實現CORDIC算法。

2.2 覆蓋角度擴展

    CORDIC算法每一級的角度旋轉由式(3)得到了確定,表1中列舉了其中的部分角度。

wdz6-b1.gif

    式(3)是關于i的遞減函數,將這些角度累加,當i→∞時:

    wdz6-gs10.gif

    可見CORDIC算法能夠計算角度的收斂域為[-99.88°,99.88°],而我們需要輸出整個圓周范圍內角度的正余弦值,顯然常規的方法無法滿足。

    利用三角函數的對稱性,通過象限轉移的方法就能夠將計算角度擴展至[-π,π]。文獻[5]將[-π,π]映射至[0,π/4],但是在最后對輸出的一組數據是否交換或改變符號需要進行判斷,而文獻[7]中將[-π,π]映射至[0,π/8],但需要對產生的常數因子wdz6-gs10-x1.gif進行補償。本文將整個圓周[-π,π]劃分為8個象限(如圖4所示),并將所有角度映射至[-π/4,π/4],即1號和8號象限,并同時對初始值X0和Y0進行處理。這樣既不會產生額外的常數因子,也不需要在最后對輸出結果進行數據交換或符號改變。

wdz6-t4.gif

    利用三角函數的對稱性,根據θ所在象限,對初始值分別做如表2的處理。

wdz6-b2.gif

    這樣的數據預處理過程雖然會消耗一定的硬件資源,但特別適合流水線結構的CORDIC算法,對提高整個系統的速度有很大幫助。

2.3 計算數據位擴展

    在實際電路的實現中,由于CORDIC算法每一級迭代使用的都是有限精度的代數計算,就導致了另外一種誤差,這種因數據位寬有限而產生的誤差稱為舍入誤差。所以除了增加迭代次數以外,還可以通過擴展CORDIC算法數據的位寬來提高精度。舍入誤差σ的大小與運算數據的位寬b有關,根據σ=2-b-1這一關系式可知,操作數的位寬每擴展一位,就能夠將舍入誤差縮小為原來的一半。當增加流水的級數無法大幅提高算法精度時,擴展CORDIC計算數據位寬是另一種很好的方法,如圖5所示。

wdz6-t5.gif

    在本設計中,由于NCO后端接入了混頻模塊,輸出數據必須為16位與之匹配,但是在CORDIC內部迭代計算時,我們把數據擴展至20位,最后對輸出結果截位處理,然后再送入下一級。通過對數據位寬擴展4位的方法,可以有效地提高運算精度。

3 基于CORDIC改進算法的NCO系統結構

    NCO主要用于產生正、余弦信號,本設計基于CORDIC改進算法,由前端處理、CORDIC迭代以及輸出處理這3個部分組成,其系統結構如圖6。當輸入不同的頻率控制字時,NCO輸出波形的頻率也隨之改變。

wdz6-t6.gif

    在前端處理中,我們采用了24位相位累加器以保證頻率分辨率達到要求,并通過判斷相位值的高3位θ[23:21],將目標角度映射至[-π/4,π/4]區間,具體映射方法見表2;而修正因子可以根據式(7)求出,由于算法的流水級數事先已經確定,所以只要將N=16代入就可以準確的得到KN,再通過數據預處理確定X0和Y0的初始值,從而在迭代之前就完成對輸出結果的補償,進一步提高整個系統的速度。

    第二部分為16級CORDIC流水線,它是整個系統的核心,流水線結構中的每一行相當于CORDIC算法中的一級迭代,其硬件結構如圖7所示。每一級電路包括三個加/減法器和兩個移位器,其中Ai表示各級基本旋轉角度值,Sign為各級運算的加/減控制信號,它的符號由Zi的最高位確定。

wdz6-t7.gif

    最后一部分對數據舍入截位,并輸出正、余弦兩路信號。本設計適用于多種旋轉精度的需求,靈活性好,資源利用率高,全并行流水的結構具有速度快、吞吐量大的特點。

4 系統仿真及性能分析

    本設計根據圖5,在Xilinx ISE 14.7環境下搭建軟件平臺,采用Verilog HDL硬件描述語言完成編譯綜合,使用Modelsim SE 10.1c進行功能仿真驗證,最后通過MATLAB R2012b對結果進行分析。

    在Xilinx ISE中完成代碼編寫后,調用Modelsim進行軟件仿真,當輸入不同頻率控制字,得到NCO產生的正余弦信號結果如圖8所示。從圖中可以看出,生成的 I、Q兩路波形信號具有完全正交性,并且經過角度映射后實現了整個圓周區間的覆蓋,完全可以替代基于查找表的傳統NCO設計方式。

wdz6-t8.gif

    本文選用Xilinx Virtex-4芯片,經過Xilinx ISE對代碼編譯綜合后,得到設計所消耗的硬件資源及最高工作頻率等信息。在16位小數精度、16級流水迭代的情況下,傳統CORDIC算法設計而成的NCO使用了1 021個邏輯單元,而基于CORDIC改進算法的NCO模塊使用了904個邏輯單元,節省了約11.46%的硬件資源。從表3可以看出,采用經過優化后的CORDIC算法,系統最高頻率可達287.64 MHz,比基于查表法及常規CORDIC算法NCO的性能分別提高了354.6%和144.3%。

wdz6-b3.gif

    最后將Modelsim仿真得出的數據在[-π,π]之間平均采樣5 000個點并導入MATLAB,經過處理后得到圖9。再從[-π/4,π/4]中選取若干角度進行誤差對比分析,如表4所示。

wdz6-t9.gif

wdz6-b4.gif

    I、Q通路正余弦值的誤差主要由迭代次數以及位寬的限制引起,通過對表4的數據分析可知,傳統算法在使用24位小數位的情況下進行運算,誤差達到10-4;而基于本文的CORDIC改進算法僅使用16位數據位寬就能夠將精度提升至10-5~10-6的數量級,所以本設計在提高精度的同時還減少了硬件資源的消耗,在精度和面積上均具有一定的優勢。

5 結束語

    本文在傳統CORDIC算法基礎上,提出改進方案并應用于數字控制振蕩器的設計,通過仿真驗證及性能分析證明其可行性。實驗結果表明,本設計進一步提升了系統的速度和精度,并在一定程度上減少了硬件資源消耗。目前,該NCO模塊已經成功的應用于某DDC芯片的產品中,并且表現出良好的性能及穩定性。

參考文獻

[1] LIU Y,FAN L,MA T.A modified CORDIC FPGA implementation for wave generation[J].Circuits,Systems and Signal Processing,2014,33(1):321-329.

[2] Pramod Kumar Meher,Sang Yoon Park.CORDIC designs for fixed angle[J].IEEE Transaction on Very Large Scale Integration(VLSI) System,2013,21(2):217-227.

[3] 張曉彤,辛茹.基于改進混合式CORDIC算法的直接數字頻率合成器設計[J].電子學報,2008,36(6):1144-1148.

[4] KAUSHIK B,RAKESH B.Architectural design and FPGA implementation of radix-4 CORDIC proseccor[J].Micropro-cessors and Microsystems,2010,34(2-4):96-101.

[5] 徐成,秦云川.免縮放因子雙步旋轉CORDIC算法[J].電子學報,2014,42(7):1441-1445.

[6] 張朝柱,韓吉南,燕慧智.高速高精度固定角度旋轉CORDIC算法的設計與實現[J].電子學報,2016,44(2):485-490.

[7] MAHARATNA K,BANERJEE S,GRASS E,et al.Modified virtually scaling-free adaptive CORDIC rotator algorithm and architecture[J].IEEE Transaction on Circits Systems for Video Technolog,2005,15(11):1463-1474.

[8] HU H Y.The quantization effects of the CORDIC algorithm[J].IEEE Transactions on Signal Processing,1992,40:834-844.



作者信息:

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

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲视频免费在线观看| 亚洲成人资源| 有码中文亚洲精品| 国产日韩亚洲欧美| 国产精品一卡二| 国产精品日韩在线| 国产精品久久久久久av福利软件 | 免费看成人av| 另类春色校园亚洲| 老司机免费视频久久| 免费不卡中文字幕视频| 老牛影视一区二区三区| 毛片一区二区| 欧美激情aⅴ一区二区三区 | 欧美人成网站| 欧美日韩成人综合| 欧美日韩国产在线看| 欧美日韩一区二| 欧美日韩亚洲国产一区| 国产精品www色诱视频| 国产精品第三页| 国产精品无码永久免费888| 国产伦精品一区二区三区视频孕妇| 国产精品久久久久久影院8一贰佰| 国产精品久久久久影院亚瑟| 国产精品激情av在线播放| 国产精品久久久对白| 国产欧美日韩不卡免费| 国产视频观看一区| 国产在线日韩| 在线欧美日韩精品| 亚洲精品一区二区三区樱花| 一区二区三区国产| 亚洲欧美精品suv| 久久福利精品| 99亚洲伊人久久精品影院红桃| 亚洲天堂av高清| 欧美在线黄色| 免费观看30秒视频久久| 欧美日韩国产综合一区二区| 欧美午夜免费电影| 国产一二三精品| 在线免费观看欧美| 日韩一级在线| 欧美一乱一性一交一视频| 91久久国产精品91久久性色| 在线午夜精品自拍| 久久大逼视频| 欧美福利视频在线观看| 国产精品av免费在线观看| 国产视频一区二区三区在线观看| 亚洲丁香婷深爱综合| 一区二区三区精密机械公司| 欧美在线观看一二区| 亚洲精品在线观看免费| 亚洲男人av电影| 看片网站欧美日韩| 欧美性感一类影片在线播放| 国产一区二三区| 99国产精品国产精品久久| 欧美亚洲系列| 在线综合亚洲欧美在线视频| 久久精品国产免费观看| 欧美猛交免费看| 狠狠色狠狠色综合系列| 一本色道久久综合| 亚洲高清视频的网址| 亚洲一区影音先锋| 美女露胸一区二区三区| 国产精品入口尤物| 久久免费高清视频| 欧美日产国产成人免费图片| 国产精品欧美一区二区三区奶水| 1024成人| 性做久久久久久久免费看| 一区二区三区欧美亚洲| 久久深夜福利免费观看| 国产精品成人播放| 亚洲国产高清自拍| 午夜亚洲精品| 亚洲尤物影院| 欧美成人综合一区| 国语自产偷拍精品视频偷| 一本色道久久综合狠狠躁篇的优点| 亚洲第一天堂av| 欧美一区二区黄| 欧美视频中文字幕| 亚洲国产清纯| 久久国产欧美| 午夜在线观看欧美| 欧美日韩一区二区三区免费 | 亚洲人成网站999久久久综合| 亚欧成人精品| 午夜影视日本亚洲欧洲精品| 欧美日韩国产专区| 在线观看欧美精品| 欧美影院午夜播放| 香港久久久电影| 欧美三级小说| aa成人免费视频| 一区二区三区.www| 欧美久久久久久久久| 在线播放亚洲一区| 欧美专区日韩视频| 欧美影视一区| 国产精品色午夜在线观看| 中国av一区| 亚洲一级二级在线| 欧美日韩中文字幕精品| 亚洲精品中文字幕在线| 亚洲九九精品| 欧美a级片一区| 在线看片一区| 亚洲人成亚洲人成在线观看图片 | 国产精品扒开腿做爽爽爽视频| 99xxxx成人网| 亚洲天堂网在线观看| 欧美日本精品一区二区三区| 亚洲欧洲在线看| 99精品视频网| 欧美日韩三级| 一区二区三区高清视频在线观看| 亚洲视频网在线直播| 欧美日韩色综合| 亚洲免费激情| 亚洲一区二区在线视频| 国产精品免费观看在线| 亚洲在线中文字幕| 久久激情综合网| 好男人免费精品视频| 亚洲激情第一页| 欧美国产91| 亚洲理论电影网| 亚洲一区国产精品| 欧美午夜视频网站| 亚洲影院色在线观看免费| 欧美一区=区| 国产午夜亚洲精品羞羞网站 | 国产精品国产福利国产秒拍| 亚洲一区二区三区在线| 羞羞漫画18久久大片| 国产婷婷成人久久av免费高清| 久久国内精品自在自线400部| 久久伊伊香蕉| 91久久久久| 亚洲午夜久久久久久久久电影院| 欧美午夜一区| 性欧美videos另类喷潮| 蜜臀久久久99精品久久久久久| 亚洲国产综合在线看不卡| 中国女人久久久| 国产精品资源| 亚洲黄色在线看| 欧美三级午夜理伦三级中视频| 亚洲私人黄色宅男| 久久久久久久性| 亚洲黄网站黄| 亚洲永久精品大片| 国语精品中文字幕| 99re热精品| 国产伦精品一区二区三| 亚洲国产精品久久人人爱蜜臀 | 国产欧美一区视频| 亚洲电影免费在线观看| 欧美区在线播放| 亚洲尤物视频在线| 蜜臀a∨国产成人精品| 99re这里只有精品6| 久久精品国产亚洲a| 亚洲人成绝费网站色www| 羞羞答答国产精品www一本| 在线日韩av永久免费观看| 亚洲一区二区视频在线| 国内精品视频久久| 一本综合精品| 国产综合欧美在线看| 这里只有精品电影| 国内久久视频| 亚洲一区999| 亚洲成人资源网| 午夜欧美大尺度福利影院在线看 | 亚洲精品一区在线观看| 国产精品专区h在线观看| 亚洲精品美女在线| 国产乱肥老妇国产一区二| 亚洲日韩成人| 国产麻豆精品theporn| 亚洲麻豆一区| 国产亚洲欧洲| 亚洲一卡久久| 亚洲国产精品久久久久婷婷老年| 午夜在线视频一区二区区别| 亚洲国产精品美女| 久久精品免费播放| 夜夜精品视频一区二区| 欧美/亚洲一区| 亚洲欧美自拍偷拍| 欧美日韩三级在线| 亚洲国产美女精品久久久久∴| 国产精品―色哟哟|