文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)01-0062-03
數(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.