《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CORDIC算法的NCO實(shí)現(xiàn)
基于CORDIC算法的NCO實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2011年第1期
馮 亮1,,肖 輝1,,姚振東2
(1.中國(guó)科學(xué)院大氣物理研究所,北京100029,;2.成都信息工程學(xué)院 電子工程學(xué)院,,四川 成都61
摘要: 介紹了CORDIC算法的原理,,給出了為滿(mǎn)足某一技術(shù)指標(biāo)而設(shè)計(jì)的NCO的分析過(guò)程,給出了軟件仿真波形和硬件實(shí)現(xiàn)波形的對(duì)比,。
關(guān)鍵詞: SoPC NCO CORDIC FPGA CycloneIII
中圖分類(lèi)號(hào): TN74
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)01-0062-03
NCO design based on CORDIC algorithm
Feng Liang1,,Xiao Hui1,Yao Zhendong2
1.Institute of Atmospheric Physics, Chinese Academy of Sciences, Beijing 100029,,China,; 2.Electronic Engineering College, Chengdu University of Information Technology, Chengdu 610225,China
Abstract: This paper derives the principle of CORDIC algorithm precisely and an analysis process of the design is given in order to design some technical specification NCO. Lastly, it is proved the realization of the design to compare the wave by software simulation with the wave that the hardware generated.
Key words : NCO,;CORDIC,;FPGA


    數(shù)控振蕩器(NCO)廣泛應(yīng)用于各種雷達(dá)系統(tǒng)和無(wú)線收發(fā)系統(tǒng)中,其實(shí)現(xiàn)方法主要有查表法和坐標(biāo)旋轉(zhuǎn)算法,。查表法會(huì)消耗大量的ROM資源,,這樣不僅增大了能耗,而且增加了芯片的面積,;CORDIC算法很好地解決了查表法的問(wèn)題,,而且CORDIC算法由于只采用加法和移位運(yùn)算,因此很適合在FPGA中實(shí)現(xiàn),。

    用圖2對(duì)上述的旋轉(zhuǎn)過(guò)程作解釋?zhuān)D(zhuǎn)開(kāi)始的初始值是位置①,,最終的目標(biāo)是位置⑤,。

    第一次,,位置①與位置⑤之間的夾角z1>0,,因此,逆時(shí)針旋轉(zhuǎn)一個(gè)正切值恰好是2-1的角度,,完成了第一次旋轉(zhuǎn),。
    
2 NCO的實(shí)現(xiàn)
    CORDIC算法實(shí)現(xiàn)的NCO基本結(jié)構(gòu)如圖3所示。當(dāng)有數(shù)字中頻輸入信號(hào)時(shí),,輸出的是數(shù)字混頻信號(hào),,當(dāng)沒(méi)有數(shù)字中頻信號(hào)時(shí),輸出的是正余弦信號(hào),。

    設(shè)相位累加器的位寬為n,,則NCO的相位分辨率為[1][3]:
  
    確定相位累加器位數(shù)后,就可以用Cordic算法設(shè)計(jì)NCO了,。在實(shí)現(xiàn)過(guò)程中,,首先需要建立旋轉(zhuǎn)角度集tan-1(2-i)的查找表,為了保持足夠的精度,,用下面的表示方法,,在硬件里表示直角坐標(biāo)系的4個(gè)區(qū)間很容易,在設(shè)計(jì)中應(yīng)該注意數(shù)字表示法的運(yùn)用,,適當(dāng)選取二進(jìn)制和十進(jìn)制的對(duì)應(yīng)關(guān)系,,將使整體設(shè)計(jì)變的更簡(jiǎn)單。用25 bit表示從0°~360°,,二進(jìn)制l bit代表十進(jìn)制為:
    360°/225=0.000 010 728 8°,。
    正弦、余弦函數(shù)旋轉(zhuǎn)變量為[2]:
    當(dāng)i=0時(shí),,arctan(1)=45°= 25'b0_01000000_00000000_
00000000
    當(dāng)i=1時(shí),,arctan(1/2)≈26°=25'b0_00100100_11111010_
01001111
    當(dāng)i=2時(shí),arctan(1/4)≈14°=25'b0_00010011_11101001_
00111110  
    當(dāng)i=3時(shí),,arctan(1/8)≈7°=25'b0_00001001_11110100_
10011111
    當(dāng)i=4時(shí),,arctan(1/16)≈4°=25'b0_00000101_10110000_
01011011
    當(dāng)i=5時(shí),arctan(1/32)≈2°=25'b0_00000010_11011000_
00101101
    當(dāng)i=6時(shí),,arctan(1/64)≈1°=25'b0_00000001_01101100_
00010110
    …
    在具體實(shí)現(xiàn)時(shí),,由于正弦、余弦函數(shù)輸出值小于1,,可定義10 bit二進(jìn)制數(shù)表示輸出值-1~+l,。為了提高運(yùn)算速率,采用了8級(jí)流水線的方式,,QuartusII軟件生成的模塊如圖4所示,。各信號(hào)的定義見(jiàn)表1。

    本設(shè)計(jì)雷達(dá)中頻信號(hào)為30 MHz,,設(shè)定采樣頻率fs=48 MHz,,則本振頻率fc=18 MHz,,采樣頻率約是本振頻率的3倍,如果按采樣頻率對(duì)本振信號(hào)進(jìn)行采樣,,大約每3個(gè)點(diǎn)就循環(huán)出現(xiàn)一次,,用Matlab仿真的結(jié)果如圖5所示。

    低成本CycloneIII FPGA是Altera Cyclone系列的第三代產(chǎn)品,。Cyclone III FPGA系列前所未有地同時(shí)實(shí)現(xiàn)了低功耗,、低成本和高性能,進(jìn)一步擴(kuò)展了FPGA在成本敏感大批量領(lǐng)域中的應(yīng)用,。本設(shè)計(jì)中選用CycloneIII系列的FPGA芯片,。
    CycloneIII EP3C25采用了1.2 V內(nèi)核,65 nm工藝,,由QuartusII 7.2以上版本軟件支持,,可以重復(fù)編程,通過(guò)JTAG接口或者EPROM加載程序,,內(nèi)部有PLL,、高速I(mǎi)/O接口和乘法器等模塊,主要內(nèi)部資源參見(jiàn)表2,。

    封裝的不同,,EP3C25的引腳數(shù)和可用用戶(hù)IO數(shù)也不相同,詳見(jiàn)表3,。

    本設(shè)計(jì)選用240引腳的PQFP封裝FPGA芯片EF3C25Q240C8N,。
    圖6所示波形是采用CORDIC算法在硬件上實(shí)現(xiàn)NCO,通過(guò)QuartusII軟件內(nèi)嵌的邏輯分析儀SignalTapII觀測(cè)到的I路信號(hào),。與圖5比較可看出,,采用CORDIC算法在硬件上實(shí)現(xiàn)NCO獲得成功。

    CORDIC算法解決了查表法實(shí)現(xiàn)NCO面臨的問(wèn)題,,而且具有很高的分辨率,。本設(shè)計(jì)用Altera公司CycloneIII EP3C25 FPGA芯片,在硬件上實(shí)現(xiàn)NCO,,同時(shí)為了提高其運(yùn)算速率,,采用了8級(jí)流水線結(jié)構(gòu),提高了系統(tǒng)的性能,。
參考文獻(xiàn)
[1] 姜宇柏,,游思晴.軟件無(wú)線電原理[M].北京:機(jī)械工業(yè)出版社,2007.
[2] Uwe Meyer-Baese著.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M]. 劉凌,,譯.北京:清華大學(xué)出版社,,2006.
[3] 胡廣書(shū).數(shù)字信號(hào)處理[M].北京:清華大學(xué)出版社,1997.
[4] CycloneIII Device handbook,,Volume 1.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。