摘 要:針對DDS頻率轉(zhuǎn)換時間短,分辨率高等優(yōu)點,提出了基于FPGA芯片設(shè)計DDS系統(tǒng)的方案。該方案利用Altera公司的Quartus Ⅱ開發(fā)軟件,完成DDS核心部分即相位累加器和ROM查找表的設(shè)計,可得到相位連續(xù)、頻率可變的信號,并通過單片機配置FPGA的E2PROM完成對DDS硬件的下載,最后完成每個模塊與系統(tǒng)的時序仿真。經(jīng)過電路設(shè)計和模塊仿真,驗證了設(shè)計的正確性。由于FPGA的可編程性,使得修改和優(yōu)化DDS的功能非??旖?。
關(guān)鍵詞:DDS; Quartus Ⅱ開發(fā)軟件; FPGA; 單片機配置
中圖分類號:TN702 文獻標識碼:A
文章編號:1004-373X(2010)13-0090-03
Design and Implementation of DDS Based on FPGA
SHUAI Qian, WU Guo-hui, DAI Ji-yang
(School of Information Engineering, Nanchang Hangkong University, Nanchang 330063, China)
Abstract: A design scheme of DDS system based on FPGA is introduced for the merits of fast frequency conversion time and high resolution of DDS.The design of the phase accumulator and ROM lookup table which are the cores of DDS is achieved with the Quartus Ⅱ development software produced by Altera Company. The phase continuous and frequency variable signal can be obtained with design scheme. The download of DDS hardware is implemented by E2PROM based on MCU allocation FPGA, the time sequence simulation of each module and system is completed. After designing and testing circuit,it illustrates the validity of DDS. As the advantage of the programmable of FPGA,it is convenient to modify,add and optimize the function
of DDS.
Keywords: DDS; Quartus Ⅱ software; FPGA; MCU configuration
0 引 言
隨著現(xiàn)代電子技術(shù)的不斷發(fā)展,在通信系統(tǒng)中往往需要在一定頻率范圍內(nèi)提供一系列穩(wěn)定和準確的頻率信號,一般的振蕩器己不能滿足要求,這就需要頻率合成技術(shù)[1]。直接數(shù)字頻率合成(Direct Digital Frequency Synthesis,DDS)是把一系列數(shù)據(jù)量形式的信號通過D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬量形式的信號合成技術(shù)。DDS具有相對帶寬寬、頻率轉(zhuǎn)換時間短、頻率分辨率高、輸出相位連續(xù)、可產(chǎn)生寬帶正交信號及其他多種調(diào)制信號等優(yōu)點,已成為現(xiàn)代頻率合成技術(shù)中的姣姣者。目前在高頻領(lǐng)域中,專用DDS芯片在控制方式、頻率控制等方面與系統(tǒng)的要求差距很大,利用FPGA來設(shè)計符合自己需要的DDS系統(tǒng)就是一個很好的解決方法。
現(xiàn)場可編程門陣列(FPGA)器件具有工作速度快、集成度高、可靠性高和現(xiàn)場可編程等優(yōu)點,并且FPGA支持系統(tǒng)現(xiàn)場修改和調(diào)試,由此設(shè)計的DDS電路簡單,性能穩(wěn)定,也基本能滿足絕大多數(shù)通信系統(tǒng)的使用要求[2-3]。
1 DDS的結(jié)構(gòu)原理
DDS的基本原理是利用有限的離散數(shù)據(jù),通過查表法得到信號的幅值,通過數(shù)模轉(zhuǎn)換器D/A后生成連續(xù)波。DDS的原理框圖如圖1所示。
圖1 DDS的原理框圖
其中:頻率控制字為fword;相位累加器的位數(shù)為N。相位累加器以步長fword做累加,產(chǎn)生所需的頻率控制數(shù)據(jù);把得到的頻率控制數(shù)據(jù)作為地址對ROM存儲器進行尋址。數(shù)據(jù)存儲器(ROM)實質(zhì)是一個相位/幅度轉(zhuǎn)換電路,ROM中存儲二進制碼表示所需合成信號的相位/幅度值,相位寄存器每尋址一次ROM,就輸出一個相對應(yīng)的信號相位/幅度值。
理想情況下,累加器的N位全部用來尋址時,DDS的合成頻率為:
fo=fword×fclk2N
式中:fword為頻率控制字;N為相位累加器位數(shù);fclk為輸入時鐘。當fword=1時,得DDS的最小分辨率。如果改變頻率控制字,就可以改變合成的頻率的頻偏[4-5]。
2 DDS調(diào)頻系統(tǒng)在FPGA中的實現(xiàn)
2.1 累加控制模塊的設(shè)計
累加控制模塊通過調(diào)用QuartusⅡ中模塊化庫LPM進行設(shè)計[6]。即由加法器lpm_add_sub和乘法器lpm_mult及累加器altaccumulate模塊構(gòu)成。若要求DDS系統(tǒng)精度高,相位累加器的位數(shù)N須較大?,F(xiàn)在大多數(shù)專用的DDS芯片的位數(shù)都在24~32位之間,這里取N=32。累加控制模塊如圖2所示。
圖2 累加控制模塊部分設(shè)計圖
ADC轉(zhuǎn)換芯片處理后的8位數(shù)字信號,為了使DDS合成的頻率較大[7],末尾補4個0作為參數(shù)化模塊lpm_add_sub的12位輸入datai。由于 ADC信號輸出的是8位二進制偏移碼,與計算機處理的二進制補碼形式不同,需將二進制偏移碼轉(zhuǎn)換成二進制補碼,在這里與另一路輸入信號常數(shù)2 048做減法,就能達到求補的目的,并輸出12位有符號數(shù)。
12位的輸出接入lpm_mult模塊,lpm_mult的另一路輸入為12位任意數(shù)輸入。乘法器的輸出直接影響累加器累加相位的速度。當乘以一個比較大的數(shù),則頻率變化加快。
同理,為了使合成頻率較大,乘法器的24位輸出在末尾補0成為32位數(shù)datab送到累加模塊altaccumulate中。為了節(jié)省ROM容量,最后取altaccumulate輸出的高10位作為ROM查找表的地址信號。累加控制模塊的時序仿真如圖3所示。
2.2 ROM查找表的設(shè)計
針對不同的可編程器件,ROM查找表的設(shè)計采用的方法也不相同。主要是基于lpm_rom和VHDL選擇語句這兩種方法。使用lpm_rom的波形存儲表只需要產(chǎn)生數(shù)據(jù)文件*.mif[8],然后直接在定制lpm_rom時,添加數(shù)據(jù)文件即可。不過這種方法在FPGA支持內(nèi)部嵌入式陣列塊(EAB)時才可以使用;使用VHDL選擇語句比較直觀,但當輸入數(shù)據(jù)量大的時候,這種方法是比較繁瑣的。此次設(shè)計采用第一種方法。
圖3 累加控制模塊時序仿真
mif文件是在編譯和仿真過程中作為存儲器(ROM或RAM)初始化輸入的文件,即memory initialization file。創(chuàng)建mif文件的方式有很多種,在這次設(shè)計中,在Matlab中采用C語言來生成mif文件。mif文件編寫格式如下:
depth=1024; %存儲單元數(shù);
widths=12;%數(shù)據(jù)寬度為12位;
N=0:1: 1023;
s=sin(π*N/512);%計算0~π/2的sin值;
fidc=fopen(′dds.mif′,′wt′);%以″wt″的形式打開,\\\為換行
% 寫入 dds.mif %
fprintf(fidc,′depth=%d;\\\′,depth);
fprintf(fidc,′width=%d;\\\′,widths);
fprintf(fidc,′address_radix=dec;\\\′);
fprintf(fidc,′data_radix = dec;\\\′);
fprintf(fidc,′Content Begin\\\′);
for(x=1:depth)
fprintf(fidc,′%d:%d;\\\′,x-1,round(2047*sin(π*(x-1)/1024)+2048));
end%采樣波形數(shù)據(jù)存儲入mif文件
fprintf(fidc,′end;′); %按mif文件內(nèi)容格式輸出
fclose(fidc); %關(guān)閉文件
通常相位累加器的位數(shù)N很大,實際設(shè)計中受到體積和成本的限制。為了節(jié)省ROM的容量采用相位截斷的方法,一般只取累加器輸出的高幾位作為ROM的尋址地址。設(shè)計中取累加結(jié)果的高10(M=10)位來進行查表,也就是說正余弦ROM有210=1 024個尋址地址,數(shù)據(jù)寬度為12。如圖4所示,設(shè)計了2個lpm_rom模塊,分別是sin波形存儲器和cos波形存儲器。
圖4 ROM查找表模塊設(shè)計
3 單片機控制電路
此次選擇的FPGA芯片為Altera公司的ACEX1K系列的EP1K30TT144-2。它可以采用專用的配置器件來配置,也可以采用單片機來配置。前者價格昂貴,而且專用配置器件的ROM為一次性編程,不易實現(xiàn)FPGA的系統(tǒng)功能轉(zhuǎn)換。采用單片機C8051F330D對FPGA進行被動串行(PS方式)配置,使用可多次修改的AT24C512(E2PROM)作為配置文件存儲器,真正做到“現(xiàn)場可編程”,對提高生產(chǎn)率、降低生產(chǎn)成本均有好處。
系統(tǒng)的配置電路如圖5所示。其電路的工作過程為:經(jīng)Quartus Ⅱ編譯生成的配置文件(.rbf),利用PC機端的控制程序,通過PC機的串行通信口,經(jīng)U1存儲在U2中,U1再根據(jù)系統(tǒng)的要求通過P0.6,P1.0,P1.1,P1.6和P1.7等5個I/O口將其存儲在U2中的配置數(shù)據(jù)下載到電路中的FPGA器件U3中。PC機的控制程序在此略[9]。
圖5 系統(tǒng)的配置電路圖
4 設(shè)計結(jié)果
累加控制器、ROM查找表組成一個整體,實現(xiàn)了一個基本的DDS系統(tǒng)[10]。DDS系統(tǒng)的最后仿真結(jié)果如圖6所示。
圖6 DDS系統(tǒng)仿真圖
圖6中的pllclk,acum,dai,daq分別代表時鐘輸入、累加輸出及正弦波和余弦波輸出。把0~2π的相位分成3FF段,取出相應(yīng)的幅度值存儲于ROM中。
ROM中存儲數(shù)據(jù)如下,相位數(shù)據(jù)(0~3FF),幅度數(shù)據(jù)
(0~FFF)。從仿真圖可以看出dai[11..0]輸出從EFF~FFF~0~EFF變化,daq[11..0]輸出從FFF~0~FFF變化。最后通過單片機配置FPGA運行,把得出的信號通過D/A轉(zhuǎn)換和濾波能夠得到所需的正弦波和余弦波信號。
5 結(jié) 語
給出了基于FPGA的DDS設(shè)計的實現(xiàn)方案。通過仿真分析可以看出,DDS輸出信號具有如下特點:
(1) 頻率穩(wěn)定性好,轉(zhuǎn)換時間短,分辨率高,相位變化連續(xù)。
(2) 設(shè)計者只需要通過改變測試輸入數(shù)據(jù),就能夠快速準確地實現(xiàn)不同波形并且驗證正確性,使得測試工作更加全面高效,從而提高了調(diào)試效率和成功率。
(3) 整個信號實現(xiàn)過程較為簡單,實用性較強。
限于實驗條件,此次設(shè)計在降低相位截斷誤差等方面仍有改進的空間,還可以進一步優(yōu)化,限于篇幅,在此不多做介紹。
參考文獻
[1]遲忠君,徐云,常飛.頻率合成技術(shù)發(fā)展概述[J].現(xiàn)代科學儀器,2006(3):21-24.
[2]KUSHNER L J,AINSWORTH M T.A spurious reduction technique for high-speed direct digital synthesizers[ J] . IEEE, 1996,40:920-927.
[3]ZWOLINSHI Mark. Digital system design with VHDL[M]. Beijing: Publishing House of Electronics Industry,2005.
[4]陳風波,冒燕,李海鴻.基于FPGA的直接數(shù)字頻率合成器設(shè)計[J].微計算機信息,2006,22(5):197-199.
[5]楊萍,兀旦暉,楊良煜.DDS技術(shù)在正弦信號發(fā)生器中的應(yīng)用[J].計算機測量與控制,2008(11):1738-1740.
[6]石偉,宋躍,李琳.基于FPGA的DDS調(diào)頻信號的研究與實現(xiàn)[J].微計算機信息,2005,21(5):179-180.
[7]余勇,鄭小林.基于FPGA的DDS正弦信號發(fā)生器的設(shè)計和實現(xiàn) [J].電子器件,2005,28(3):596-599.
[8]徐丹嚦,張曉紅,王勇.任意波形發(fā)生器ROM查找表的設(shè)計[J].現(xiàn)代電子技術(shù),2008,31(11):172-173.
[9]王玉花,郭書軍,葛紉秋.FPGA器件的在線配置方法[J].單片機與嵌入式系統(tǒng)應(yīng)用,2004(3):8-10.
[10]魏東梅.基于FPGA的DDS的設(shè)計[J].計算機技術(shù)與發(fā)展,2006(16):30-31.