《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種基于改進型CORDIC算法的數控振蕩器
一種基于改進型CORDIC算法的數控振蕩器
朱冰蓮,羅正岳,陳 禧
摘要: 在對傳統CORDIC算法進行改進的基礎上,討論了一種基于改進型CORDIC算法的NCO實現方法,該設計占用資源少、運算速度快、易于擴展。仿真結果證明該設計具有較高的性價比。
Abstract:
Key words :

    摘 要: 在對傳統CORDIC算法" title="CORDIC算法">CORDIC算法進行改進的基礎上,討論了一種基于改進型CORDIC算法的NCO實現方法,該設計占用資源少、運算速度快、易于擴展。仿真結果證明該設計具有較高的性價比。
    關鍵詞: CORDIC算法  數控振蕩器" title="數控振蕩器">數控振蕩器  FPGA

 

    數控振蕩器(NCO)的作用是產生正交的正弦和余弦樣本,應具有頻率分辨率高、頻率變化速度快、相位可連續線性變化及生成的正弦和余弦信號正交特性好等特點。傳統的數控振蕩器中,相位到幅度的轉化是通過查找表(LUT)的方式來實現的。這種方法實現簡單,但是如果要提高頻率分辨率,往往需要消耗大量的存儲資源。而且,由于受到RAM讀取速度的影響,使NCO輸出速率受到制約。CORDIC算法以其算法簡單、硬件實現方便等特點在很多方面得到了應用,其中之一就是用于NCO的設計。本文在傳統CORDIC算法的基礎上進行了改進,并將其運用到一個NCO的設計當中,具有運算速度快、資源占用少、易于擴展等優點。
1 NCO實現原理
    NCO可以看成是由相位累加器(PA)和函數發生器(FG)兩部分組成,如圖1所示。其中相位累加器的設計較簡單,設計NCO的關鍵是設計正弦函數發生器。傳統的實現函數發生器的方法為查表法(LUT),對于一個相位位數為n,輸出信號幅度位數為M的NCO,所需查找表的大小為M×2n。為了提高NCO的頻率分辨率,往往需要擴大查找表的容量,這會造成存儲資源的大量消耗。而且,由于受到RAM讀取速度的影響,NCO的輸出速率受到制約。可以看出LUT是NCO設計的瓶頸。為了避免使用大容量的存儲器,可以考慮通過計算來產生正余弦函數樣本。基于矢量旋轉的CORDIC算法正好滿足了這一需求。

                                              

2 CORDIC算法原理
    CORDIC算法最初是由J.Volder于1959年提出,1971年J.Walther提出了統一的CORDIC形式。用CORDIC算法求三角函數的基本原理如下:
    如果P(x,y)是直角坐標系中單位圓上一點, θ為向量OP和X軸正向之間夾角, 則有x=cosθ,y=sinθ。因此若將單位向量OM(1,0)旋轉n次得到向量OP(x,y),讓旋轉角度的總和等于輸入的角度?茲,則x,y即為所需輸出值cosθ和sinθ,這就是CORDIC算法實現正交三角函數cosθ和sinθ的基本思路。如圖2所示。
    向量x1+jy1旋轉角度θ到向量x2+jy2
    
經變換為:
    
    為了便于硬件實現,設旋轉n次,令每一次旋轉的角度為θi,并且θi滿足tanθi=2-i,則cosθi,第i次的旋轉表示為:
   

其中,第i次旋轉后的角度變化為zi,每次旋轉的方向為δi,由zi的符號位來決定;δi=sign(zi),即δi=+1時,逆時針旋轉,δi=-1時,順時針旋轉。為每一級的校正因子,也就是每一級旋轉時向量模長發生的變化,對于字長一定的運算,總的校正因子是一個常數。若總的旋轉級數為N,則總校正因子用K表示為:
   
     以16位為例,K=0.607252935。
     可以先將輸入數據校正后再進行運算,這樣每一級的運算可以簡化成:

   
    由上式可以看出所有運算簡化成了加減法和移位操作。當給定的初始輸入數據為x0=K,y0=0時,z0=θ,經過n次迭代結果為:
   
3 CORDIC算法及其改進FPGA" title="FPGA">FPGA實現
    考慮到迭代序列所能覆蓋的角度范圍:,若直接采用n(n→∞)級迭代序列:0,1,2,…,n-1,則能覆蓋到的角度范圍是-99.9°~+99.9°,不能達到NCO角度覆蓋范圍-π~π的要求。 因此,需要在初次迭代前增加一個特定的“起始”步驟來擴大角度覆蓋范圍,即根據輸入相位的正負將向量先順時針或逆時針旋轉90°,從而達到覆蓋要求。這個步驟的數學表達式如下:
  

其中δ=sign(z0)。
    采用CORDIC算法取代查找表能夠節省大量的RAM資源,但是同時卻帶來了更多的LE消耗,這就需要在設計中考慮如何減少LE的消耗。
    對于小角度的正弦和余弦值,有:
   
    而在CORDIC算法有限精度的迭代運算中,到一定級數的坐標旋轉角度也是接近于0的小角度值。利用這個特性,可以對CORDIC算法進行改進。下面以16位輸出寬度的CORDIC算法為例介紹本文對CORDIC算法的改進。
    注意到迭代9次以后,余下的角度為:θ=0.003906,

    

其中,z8為迭代9次后所余下的角度。可以將前9次迭代采用常規的CORDIC算法,對于后面幾級,直接采用初始角度旋轉變化計算公式:
   
    已知z8<2-8,對于16位輸出精度來說,cosz8=1,sinz8=z8,則上式可以寫成:
        

    由此可知,對于16位輸出寬度的CORDIC運算,這里只需要9級迭代加1級初始的角度旋轉運算。這種結構可以有效地提高CORDIC運算的效率,大量節約實現所需的資源。
    圖3是用FPGA實現CORDIC算法的一個流水線結構單元,由9個這樣的單元構成前面9級的迭代流水線,如圖4所示。

            

         
    對于(10)式中的乘法,可以通過并行加法來計算,這樣就將多級級聯加法運算變為了一級合成進位存儲加法器。合成進位存儲加法器的表達式是:
   
    當δ8=1時,αi為z8的第i位;δ8=-1時,αi為z8二進制反碼的第i位。結構如圖5。

                                  
    加上預迭代,采用傳統CORDIC算法實現16位輸出寬度CORDIC算法需要17級流水線。而采用改進后的CORDIC算法只需要9級流水線加1級進位存儲加法器,改進后的CORDIC算法總體結構如圖6所示。這種流水線結構正常工作時,在初始延遲之后,每次新的循環完成就會生成一個新的輸出值,即只需一個時鐘周期就可輸出一個數據。

                                   
    如需提高精度, 可以在增加輸出位寬的同時相應地增加流水線級數即可。
4 仿真結果
    圖7是在Quartus Ⅱ" title="Quartus Ⅱ">Quartus Ⅱ4.1中進行仿真后的結果,輸入輸出數據用16位補碼表示,首位為符號位,第2、3位為整數位,后13位為小數位。表1列出了幾個典型相位的正弦仿真輸出值與理論值對比。從表1中的仿真結果可以看出,采用改進型的CORDIC流水線結構實現的本地數控震蕩器計算精度已趨近理論值。表2是傳統CORDIC算法和改進型CORDIC算法消耗硬件資源的比較。可以看出,采用改進型CORDIC算法比傳統算法節約了約33.6%的資源。

                  

               

              

              

               

    本文提出了基于改進型CORDIC算法的NCO設計及硬件實現,其簡單的流水線結構使得FPGA的資源耗費大為減少,能充分利用CORDIC算法的靈活性,具有較好的實用價值。
參考文獻
[1] Hu Y H.CORDIC-based VLSI architecture for digital signal processing[C].IEEE SP Mag,1992,(7):17-35.
[2] Uwe Meyer Baese著,劉凌,胡永生,譯.Digital signal processing with field programmable gate arrays[M].北京:清華大學出版社,2003.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美国产日韩a欧美在线观看| 欧美视频在线观看视频极品| 亚洲免费福利视频| 欧美一区三区二区在线观看| 一区二区三区四区五区在线| 久久激情中文| 午夜国产不卡在线观看视频| 亚洲视屏一区| 99精品国产在热久久| 国产精品久久久久77777| 欧美久色视频| 欧美日韩精品免费观看视频| 欧美日韩国产不卡在线看| 欧美成人在线免费视频| 欧美大胆成人| 欧美激情综合| 午夜精品久久久久久久蜜桃app | 久久精品国产综合精品| 香蕉久久夜色精品| 性欧美8khd高清极品| 欧美有码在线观看视频| 久久国产精品久久久| 亚洲国产美女精品久久久久∴| 亚洲国产另类久久久精品极度| 亚洲国语精品自产拍在线观看| 亚洲高清一二三区| 亚洲精品一区中文| 亚洲一级在线| 久久国产精品久久久| 久久久久免费观看| 免费看成人av| 99国产一区二区三精品乱码| 亚洲色在线视频| 欧美一级免费视频| 久久国产精品一区二区三区四区| 亚洲黄色一区二区三区| 一区二区激情| 欧美诱惑福利视频| 免费一级欧美片在线播放| 欧美久久久久久蜜桃| 国产精品伦一区| 国产在线不卡视频| 亚洲精品孕妇| 西瓜成人精品人成网站| 最新日韩中文字幕| 亚洲一区中文| 久久亚裔精品欧美| 欧美日韩亚洲一区| 国产日韩欧美不卡在线| 亚洲第一福利社区| 亚洲图色在线| 亚洲国产日韩在线一区模特| 99精品国产福利在线观看免费| 午夜精品久久久久久| 久热精品视频| 国产精品成人一区二区艾草| 国产一区二区精品久久91| 91久久精品国产91久久性色tv| 久久精品亚洲热| 亚洲在线第一页| 午夜精品视频| 免费欧美视频| 国产精品视频xxxx| 亚洲国产精品久久| 亚洲欧美日韩人成在线播放| 亚洲韩国一区二区三区| 亚洲一区二区三区在线看| 久久综合一区| 国产精品久久久一区二区三区| 精品999久久久| 亚洲视频在线视频| 亚洲黄色片网站| 欧美伊人久久| 欧美视频精品在线| 依依成人综合视频| 亚洲男人影院| 国产精品99久久久久久久久久久久| 久久成人人人人精品欧| 欧美日韩一区二区三区四区五区| 狠狠色2019综合网| 在线中文字幕日韩| 亚洲免费电影在线观看| 久久久久久成人| 国产精品美女久久久久av超清 | 一区二区三区 在线观看视| 亚洲电影在线看| 午夜精品一区二区三区在线 | 国产视频精品va久久久久久| 夜夜狂射影院欧美极品| 亚洲精品123区| 久久精品日产第一区二区| 欧美日韩一级片在线观看| 亚洲电影免费观看高清完整版| 亚洲欧美一区二区原创| 亚洲夜晚福利在线观看| 欧美成年人视频网站欧美| 国产一区二区三区在线观看网站| 亚洲图片在线| 亚洲一级片在线观看| 欧美精品一区二区在线播放| 精品1区2区3区4区| 欧美一区二区三区四区高清| 午夜精品av| 国产精品女主播在线观看| 日韩视频免费大全中文字幕| 亚洲国产va精品久久久不卡综合| 欧美有码在线观看视频| 国产精品揄拍500视频| 亚洲一区二区三区成人在线视频精品| 一区二区三区四区五区视频| 欧美片第一页| 亚洲免费高清| 国产精品99久久久久久久vr| 欧美人交a欧美精品| 亚洲精品午夜| 在线一区二区日韩| 欧美日韩精品一区视频 | 欧美一区二区视频在线观看2020 | 国产精品99久久久久久久久久久久 | 国产精品尤物福利片在线观看| 亚洲午夜久久久| 亚洲自拍16p| 久久国产福利国产秒拍| 欧美在线视频一区| 国产女主播一区二区三区| 亚洲欧美日韩精品一区二区 | 久久黄金**| 国产欧美 在线欧美| 性欧美暴力猛交另类hd| 久久狠狠亚洲综合| 国产在线观看91精品一区| 久久爱91午夜羞羞| 久久五月婷婷丁香社区| 在线观看的日韩av| 亚洲裸体在线观看| 欧美色道久久88综合亚洲精品| 国产精品99久久99久久久二8| 亚洲综合久久久久| 国产麻豆一精品一av一免费| 欧美一区二区在线免费观看| 久久伊人免费视频| 91久久香蕉国产日韩欧美9色| 一区二区三区导航| 国产精品夜色7777狼人| 香蕉久久久久久久av网站| 久久这里有精品视频| 在线观看成人网| 在线视频一区二区| 国产精品一卡二卡| 久久精品国产综合| 欧美日韩高清在线播放| 亚洲性人人天天夜夜摸| 久久久久久久高潮| 亚洲精品久久7777| 午夜久久影院| 在线欧美日韩| 亚洲制服少妇| 国内精品久久久久久影视8| 亚洲精品视频在线看| 国产精品久久久久久一区二区三区 | 午夜精品短视频| 在线欧美电影| 亚洲在线免费观看| 国外成人网址| 一区二区欧美视频| 国产欧美日韩三级| 日韩视频在线观看| 国产欧美日韩在线| 亚洲精品一区在线| 国产麻豆精品视频| 一二三区精品| 国产一区高清视频| 亚洲神马久久| 伊人成人网在线看| 亚洲综合好骚| 亚洲国产mv| 欧美专区在线观看| 亚洲精品一区二区三| 久久久.com| 一区二区三区黄色| 免费观看亚洲视频大全| 亚洲一区二区在线免费观看| 欧美aⅴ一区二区三区视频| 亚洲一区三区视频在线观看| 欧美国产日韩在线| 欧美影院成年免费版| 欧美日韩免费一区| 亚洲第一在线综合网站| 国产精品主播| 一区二区三区欧美日韩| 国内自拍视频一区二区三区| 亚洲男人影院| 亚洲三级视频在线观看| 六十路精品视频| 午夜久久黄色| 国产精品国色综合久久| 99re6这里只有精品视频在线观看| 国产亚洲精品美女| 午夜久久久久久| 一本色道88久久加勒比精品|