《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于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亚洲国产精品_日韩亚洲一区二区
欧美日在线观看| 亚洲高清电影| 欧美激情在线观看| 久久深夜福利| 久久久久91| 久久激情中文| 欧美一区亚洲| 欧美一区二区三区日韩| 香港久久久电影| 西西人体一区二区| 欧美一级片在线播放| 亚洲欧美日韩专区| 午夜一区不卡| 欧美中文日韩| 久久精品最新地址| 久久婷婷激情| 亚洲精品视频在线观看免费| 亚洲福利免费| 在线欧美亚洲| 亚洲国产成人久久综合| 亚洲国产91| 最新亚洲一区| 日韩午夜电影av| 亚洲最新视频在线播放| 在线一区二区日韩| 亚洲午夜成aⅴ人片| 亚洲一区二区三区精品视频| 亚洲一区视频| 欧美亚洲视频在线看网址| 欧美在线关看| 亚洲国产精品第一区二区| 91久久在线观看| 99成人在线| 亚洲一二三四久久| 欧美一区二区播放| 久久亚洲电影| 欧美激情久久久久| 欧美性大战久久久久久久| 国产精品久久久久久久浪潮网站| 国产精品永久| 海角社区69精品视频| 在线观看亚洲| 日韩午夜电影在线观看| 亚洲永久在线观看| 久久精品女人天堂| 日韩午夜激情| 香蕉久久夜色精品国产| 久久久久久久久久久久久9999| 美女视频黄a大片欧美| 欧美美女bbbb| 国产精品视频1区| 国内精品亚洲| 亚洲美女在线看| 午夜在线观看免费一区| 91久久久久久国产精品| 亚洲视频在线看| 久久久www成人免费精品| 欧美激情小视频| 国产精品视频大全| 在线观看一区欧美| 亚洲私拍自拍| 亚洲国产裸拍裸体视频在线观看乱了| 99精品国产福利在线观看免费| 欧美一级片在线播放| 欧美电影在线观看完整版| 国产精品久久久久久久一区探花 | 国产一区欧美| 亚洲精品字幕| 欧美亚洲综合另类| 在线性视频日韩欧美| 久久人人精品| 国产精品久久久久99| 尤妮丝一区二区裸体视频| 亚洲色图制服丝袜| 亚洲精品国产拍免费91在线| 亚欧成人精品| 欧美精品在线看| 国产一区深夜福利| 亚洲视屏在线播放| 99av国产精品欲麻豆| 久久久亚洲高清| 国产精品久久久一区麻豆最新章节| 一区二区三区在线高清| 亚洲一区二区日本| 一本色道久久综合狠狠躁篇怎么玩| 久久久久国色av免费观看性色| 欧美日韩国产黄| 伊人成年综合电影网| 亚洲欧美日本国产有色| 亚洲少妇自拍| 欧美二区在线播放| 国产一在线精品一区在线观看| 亚洲少妇在线| 99精品久久免费看蜜臀剧情介绍| 久久色在线播放| 国产欧美一区二区三区沐欲| 一本久道久久综合中文字幕| 亚洲欧洲日本专区| 久久久久国产精品一区二区| 国产精品一区二区你懂的| 日韩一级二级三级| 日韩一级精品| 欧美第一黄色网| 精品动漫3d一区二区三区免费| 欧美亚洲一区三区| 亚洲欧美视频一区| 欧美视频在线观看免费| 亚洲精品裸体| 日韩视频精品在线观看| 欧美本精品男人aⅴ天堂| 一区二区三区在线视频播放| 久久精品1区| 久久久91精品国产| 国产香蕉久久精品综合网| 亚洲综合99| 欧美一区二区三区在线视频| 国产精品久久久久久久app| 亚洲视频1区2区| 国产精品99久久久久久人| 欧美日韩精品一区二区| 亚洲精品专区| 一本色道久久综合亚洲精品按摩| 欧美激情亚洲综合一区| 亚洲精品影视| 亚洲天堂av在线免费| 欧美视频一区在线| 亚洲深夜福利网站| 欧美一级久久久| 国产丝袜一区二区| 久久国产欧美精品| 免费不卡在线视频| 亚洲国产精品成人一区二区| 亚洲精品国精品久久99热| 欧美伦理91i| 一区二区欧美在线| 午夜亚洲伦理| 国产综合亚洲精品一区二| 欧美在线观看一区二区| 久久免费精品视频| 亚洲国产精品久久久久| 一区二区日韩欧美| 国产精品h在线观看| 亚洲欧美在线播放| 久久亚洲二区| 亚洲欧洲另类| 亚洲一级在线| 国产午夜精品一区二区三区欧美| 久久精品免费看| 欧美激情一区二区三区| 亚洲社区在线观看| 久久久精品日韩欧美| 亚洲承认在线| 亚洲视频成人| 国产欧美一区二区精品仙草咪| 久久精品观看| 欧美精品二区| 亚洲宅男天堂在线观看无病毒| 久久精品国产精品亚洲| 在线精品国产欧美| 在线亚洲免费视频| 国产日韩欧美高清免费| 亚洲国产三级网| 欧美日韩一级视频| 午夜免费电影一区在线观看| 蜜臀av一级做a爰片久久| 99精品国产在热久久婷婷| 欧美亚洲免费| 亚洲国产精品成人综合色在线婷婷| 亚洲午夜精品| 一区二区三区在线看| 亚洲一区高清| 尤物精品在线| 亚洲午夜电影网| 黄色日韩精品| 亚洲主播在线播放| 一区二区三区自拍| 亚洲嫩草精品久久| 在线免费观看视频一区| 西西人体一区二区| 亚洲啪啪91| 久久aⅴ国产紧身牛仔裤| 91久久在线观看| 久久黄色小说| aa级大片欧美三级| 免费成人av| 性欧美在线看片a免费观看| 欧美人牲a欧美精品| 欧美制服丝袜| 国产精品www.| 亚洲精品视频在线观看免费| 国产嫩草影院久久久久| 日韩视频一区二区| 国产亚洲综合在线| 亚洲一区二区精品视频| 亚洲第一主播视频| 久久国产欧美日韩精品| 一本色道久久综合精品竹菊| 巨胸喷奶水www久久久免费动漫| 亚洲性图久久| 欧美日韩一二区|