摘 要:針對DDS頻率轉換時間短,分辨率高等優點,提出了基于FPGA芯片設計DDS系統的方案。該方案利用Altera公司的Quartus Ⅱ開發軟件,完成DDS核心部分即相位累加器和ROM查找表的設計,可得到相位連續、頻率可變的信號,并通過單片機配置FPGA的E2PROM完成對DDS硬件的下載,最后完成每個模塊與系統的時序仿真。經過電路設計和模塊仿真,驗證了設計的正確性。由于FPGA的可編程性,使得修改和優化DDS的功能非常快捷。
關鍵詞:DDS; Quartus Ⅱ開發軟件; 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 引 言
隨著現代電子技術的不斷發展,在通信系統中往往需要在一定頻率范圍內提供一系列穩定和準確的頻率信號,一般的振蕩器己不能滿足要求,這就需要頻率合成技術[1]。直接數字頻率合成(Direct Digital Frequency Synthesis,DDS)是把一系列數據量形式的信號通過D/A轉換器轉換成模擬量形式的信號合成技術。DDS具有相對帶寬寬、頻率轉換時間短、頻率分辨率高、輸出相位連續、可產生寬帶正交信號及其他多種調制信號等優點,已成為現代頻率合成技術中的姣姣者。目前在高頻領域中,專用DDS芯片在控制方式、頻率控制等方面與系統的要求差距很大,利用FPGA來設計符合自己需要的DDS系統就是一個很好的解決方法。
現場可編程門陣列(FPGA)器件具有工作速度快、集成度高、可靠性高和現場可編程等優點,并且FPGA支持系統現場修改和調試,由此設計的DDS電路簡單,性能穩定,也基本能滿足絕大多數通信系統的使用要求[2-3]。
1 DDS的結構原理
DDS的基本原理是利用有限的離散數據,通過查表法得到信號的幅值,通過數模轉換器D/A后生成連續波。DDS的原理框圖如圖1所示。
圖1 DDS的原理框圖
其中:頻率控制字為fword;相位累加器的位數為N。相位累加器以步長fword做累加,產生所需的頻率控制數據;把得到的頻率控制數據作為地址對ROM存儲器進行尋址。數據存儲器(ROM)實質是一個相位/幅度轉換電路,ROM中存儲二進制碼表示所需合成信號的相位/幅度值,相位寄存器每尋址一次ROM,就輸出一個相對應的信號相位/幅度值。
理想情況下,累加器的N位全部用來尋址時,DDS的合成頻率為:
fo=fword×fclk2N
式中:fword為頻率控制字;N為相位累加器位數;fclk為輸入時鐘。當fword=1時,得DDS的最小分辨率。如果改變頻率控制字,就可以改變合成的頻率的頻偏[4-5]。
2 DDS調頻系統在FPGA中的實現
2.1 累加控制模塊的設計
累加控制模塊通過調用QuartusⅡ中模塊化庫LPM進行設計[6]。即由加法器lpm_add_sub和乘法器lpm_mult及累加器altaccumulate模塊構成。若要求DDS系統精度高,相位累加器的位數N須較大。現在大多數專用的DDS芯片的位數都在24~32位之間,這里取N=32。累加控制模塊如圖2所示。
圖2 累加控制模塊部分設計圖
ADC轉換芯片處理后的8位數字信號,為了使DDS合成的頻率較大[7],末尾補4個0作為參數化模塊lpm_add_sub的12位輸入datai。由于 ADC信號輸出的是8位二進制偏移碼,與計算機處理的二進制補碼形式不同,需將二進制偏移碼轉換成二進制補碼,在這里與另一路輸入信號常數2 048做減法,就能達到求補的目的,并輸出12位有符號數。
12位的輸出接入lpm_mult模塊,lpm_mult的另一路輸入為12位任意數輸入。乘法器的輸出直接影響累加器累加相位的速度。當乘以一個比較大的數,則頻率變化加快。
同理,為了使合成頻率較大,乘法器的24位輸出在末尾補0成為32位數datab送到累加模塊altaccumulate中。為了節省ROM容量,最后取altaccumulate輸出的高10位作為ROM查找表的地址信號。累加控制模塊的時序仿真如圖3所示。
2.2 ROM查找表的設計
針對不同的可編程器件,ROM查找表的設計采用的方法也不相同。主要是基于lpm_rom和VHDL選擇語句這兩種方法。使用lpm_rom的波形存儲表只需要產生數據文件*.mif[8],然后直接在定制lpm_rom時,添加數據文件即可。不過這種方法在FPGA支持內部嵌入式陣列塊(EAB)時才可以使用;使用VHDL選擇語句比較直觀,但當輸入數據量大的時候,這種方法是比較繁瑣的。此次設計采用第一種方法。
圖3 累加控制模塊時序仿真
mif文件是在編譯和仿真過程中作為存儲器(ROM或RAM)初始化輸入的文件,即memory initialization file。創建mif文件的方式有很多種,在這次設計中,在Matlab中采用C語言來生成mif文件。mif文件編寫格式如下:
depth=1024; %存儲單元數;
widths=12;%數據寬度為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%采樣波形數據存儲入mif文件
fprintf(fidc,′end;′); %按mif文件內容格式輸出
fclose(fidc); %關閉文件
通常相位累加器的位數N很大,實際設計中受到體積和成本的限制。為了節省ROM的容量采用相位截斷的方法,一般只取累加器輸出的高幾位作為ROM的尋址地址。設計中取累加結果的高10(M=10)位來進行查表,也就是說正余弦ROM有210=1 024個尋址地址,數據寬度為12。如圖4所示,設計了2個lpm_rom模塊,分別是sin波形存儲器和cos波形存儲器。
圖4 ROM查找表模塊設計
3 單片機控制電路
此次選擇的FPGA芯片為Altera公司的ACEX1K系列的EP1K30TT144-2。它可以采用專用的配置器件來配置,也可以采用單片機來配置。前者價格昂貴,而且專用配置器件的ROM為一次性編程,不易實現FPGA的系統功能轉換。采用單片機C8051F330D對FPGA進行被動串行(PS方式)配置,使用可多次修改的AT24C512(E2PROM)作為配置文件存儲器,真正做到“現場可編程”,對提高生產率、降低生產成本均有好處。
系統的配置電路如圖5所示。其電路的工作過程為:經Quartus Ⅱ編譯生成的配置文件(.rbf),利用PC機端的控制程序,通過PC機的串行通信口,經U1存儲在U2中,U1再根據系統的要求通過P0.6,P1.0,P1.1,P1.6和P1.7等5個I/O口將其存儲在U2中的配置數據下載到電路中的FPGA器件U3中。PC機的控制程序在此略[9]。
圖5 系統的配置電路圖
4 設計結果
累加控制器、ROM查找表組成一個整體,實現了一個基本的DDS系統[10]。DDS系統的最后仿真結果如圖6所示。
圖6 DDS系統仿真圖
圖6中的pllclk,acum,dai,daq分別代表時鐘輸入、累加輸出及正弦波和余弦波輸出。把0~2π的相位分成3FF段,取出相應的幅度值存儲于ROM中。
ROM中存儲數據如下,相位數據(0~3FF),幅度數據
(0~FFF)。從仿真圖可以看出dai[11..0]輸出從EFF~FFF~0~EFF變化,daq[11..0]輸出從FFF~0~FFF變化。最后通過單片機配置FPGA運行,把得出的信號通過D/A轉換和濾波能夠得到所需的正弦波和余弦波信號。
5 結 語
給出了基于FPGA的DDS設計的實現方案。通過仿真分析可以看出,DDS輸出信號具有如下特點:
(1) 頻率穩定性好,轉換時間短,分辨率高,相位變化連續。
(2) 設計者只需要通過改變測試輸入數據,就能夠快速準確地實現不同波形并且驗證正確性,使得測試工作更加全面高效,從而提高了調試效率和成功率。
(3) 整個信號實現過程較為簡單,實用性較強。
限于實驗條件,此次設計在降低相位截斷誤差等方面仍有改進的空間,還可以進一步優化,限于篇幅,在此不多做介紹。
參考文獻
[1]遲忠君,徐云,常飛.頻率合成技術發展概述[J].現代科學儀器,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的直接數字頻率合成器設計[J].微計算機信息,2006,22(5):197-199.
[5]楊萍,兀旦暉,楊良煜.DDS技術在正弦信號發生器中的應用[J].計算機測量與控制,2008(11):1738-1740.
[6]石偉,宋躍,李琳.基于FPGA的DDS調頻信號的研究與實現[J].微計算機信息,2005,21(5):179-180.
[7]余勇,鄭小林.基于FPGA的DDS正弦信號發生器的設計和實現 [J].電子器件,2005,28(3):596-599.
[8]徐丹嚦,張曉紅,王勇.任意波形發生器ROM查找表的設計[J].現代電子技術,2008,31(11):172-173.
[9]王玉花,郭書軍,葛紉秋.FPGA器件的在線配置方法[J].單片機與嵌入式系統應用,2004(3):8-10.
[10]魏東梅.基于FPGA的DDS的設計[J].計算機技術與發展,2006(16):30-31.