文獻(xiàn)標(biāo)識碼: B
文章編號: 0258-7998(2011)01-0062-03
數(shù)控振蕩器(NCO)廣泛應(yīng)用于各種雷達(dá)系統(tǒng)和無線收發(fā)系統(tǒng)中,其實現(xiàn)方法主要有查表法和坐標(biāo)旋轉(zhuǎn)算法。查表法會消耗大量的ROM資源,這樣不僅增大了能耗,而且增加了芯片的面積;CORDIC算法很好地解決了查表法的問題,而且CORDIC算法由于只采用加法和移位運(yùn)算,因此很適合在FPGA中實現(xiàn)。
用圖2對上述的旋轉(zhuǎn)過程作解釋,旋轉(zhuǎn)開始的初始值是位置①,最終的目標(biāo)是位置⑤。
第一次,位置①與位置⑤之間的夾角z1>0,因此,逆時針旋轉(zhuǎn)一個正切值恰好是2-1的角度,完成了第一次旋轉(zhuǎn)。
2 NCO的實現(xiàn)
CORDIC算法實現(xiàn)的NCO基本結(jié)構(gòu)如圖3所示。當(dāng)有數(shù)字中頻輸入信號時,輸出的是數(shù)字混頻信號,當(dāng)沒有數(shù)字中頻信號時,輸出的是正余弦信號。
設(shè)相位累加器的位寬為n,則NCO的相位分辨率為[1][3]:
確定相位累加器位數(shù)后,就可以用Cordic算法設(shè)計NCO了。在實現(xiàn)過程中,首先需要建立旋轉(zhuǎn)角度集tan-1(2-i)的查找表,為了保持足夠的精度,用下面的表示方法,在硬件里表示直角坐標(biāo)系的4個區(qū)間很容易,在設(shè)計中應(yīng)該注意數(shù)字表示法的運(yùn)用,適當(dāng)選取二進(jìn)制和十進(jìn)制的對應(yīng)關(guān)系,將使整體設(shè)計變的更簡單。用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時,arctan(1)=45°= 25'b0_01000000_00000000_
00000000
當(dāng)i=1時,arctan(1/2)≈26°=25'b0_00100100_11111010_
01001111
當(dāng)i=2時,arctan(1/4)≈14°=25'b0_00010011_11101001_
00111110
當(dāng)i=3時,arctan(1/8)≈7°=25'b0_00001001_11110100_
10011111
當(dāng)i=4時,arctan(1/16)≈4°=25'b0_00000101_10110000_
01011011
當(dāng)i=5時,arctan(1/32)≈2°=25'b0_00000010_11011000_
00101101
當(dāng)i=6時,arctan(1/64)≈1°=25'b0_00000001_01101100_
00010110
…
在具體實現(xiàn)時,由于正弦、余弦函數(shù)輸出值小于1,可定義10 bit二進(jìn)制數(shù)表示輸出值-1~+l。為了提高運(yùn)算速率,采用了8級流水線的方式,QuartusII軟件生成的模塊如圖4所示。各信號的定義見表1。
本設(shè)計雷達(dá)中頻信號為30 MHz,設(shè)定采樣頻率fs=48 MHz,則本振頻率fc=18 MHz,采樣頻率約是本振頻率的3倍,如果按采樣頻率對本振信號進(jìn)行采樣,大約每3個點就循環(huán)出現(xiàn)一次,用Matlab仿真的結(jié)果如圖5所示。
低成本CycloneIII FPGA是Altera Cyclone系列的第三代產(chǎn)品。Cyclone III FPGA系列前所未有地同時實現(xiàn)了低功耗、低成本和高性能,進(jìn)一步擴(kuò)展了FPGA在成本敏感大批量領(lǐng)域中的應(yīng)用。本設(shè)計中選用CycloneIII系列的FPGA芯片。
CycloneIII EP3C25采用了1.2 V內(nèi)核,65 nm工藝,由QuartusII 7.2以上版本軟件支持,可以重復(fù)編程,通過JTAG接口或者EPROM加載程序,內(nèi)部有PLL、高速I/O接口和乘法器等模塊,主要內(nèi)部資源參見表2。
封裝的不同,EP3C25的引腳數(shù)和可用用戶IO數(shù)也不相同,詳見表3。
本設(shè)計選用240引腳的PQFP封裝FPGA芯片EF3C25Q240C8N。
圖6所示波形是采用CORDIC算法在硬件上實現(xiàn)NCO,通過QuartusII軟件內(nèi)嵌的邏輯分析儀SignalTapII觀測到的I路信號。與圖5比較可看出,采用CORDIC算法在硬件上實現(xiàn)NCO獲得成功。
CORDIC算法解決了查表法實現(xiàn)NCO面臨的問題,而且具有很高的分辨率。本設(shè)計用Altera公司CycloneIII EP3C25 FPGA芯片,在硬件上實現(xiàn)NCO,同時為了提高其運(yùn)算速率,采用了8級流水線結(jié)構(gòu),提高了系統(tǒng)的性能。
參考文獻(xiàn)
[1] 姜宇柏,游思晴.軟件無線電原理[M].北京:機(jī)械工業(yè)出版社,2007.
[2] Uwe Meyer-Baese著.數(shù)字信號處理的FPGA實現(xiàn)[M]. 劉凌,譯.北京:清華大學(xué)出版社,2006.
[3] 胡廣書.數(shù)字信號處理[M].北京:清華大學(xué)出版社,1997.
[4] CycloneIII Device handbook,Volume 1.