雷能芳
摘 要:介紹了直接數字頻率合成器的組成及工作原理。采用Verilog語言在Altera 公司的FL EX10K系列器件上實現該系統,并通過QuartusⅡ和Matlab軟件對設計進行聯合仿真,驗證設計的正確性。模塊中的相位累加器使該系統具有較高的頻率分辨率,可實現快速頻率切換,有廣泛的應用價值。
關鍵詞:數字頻率合成器;Verilog;QuartusⅡ;Matlab
中圖分類號:TN911文獻標識碼:A
文章編號:1004-373X(2009)12-163-02
Verilog Design of DDS and Simulation Between Quartus Ⅱ and Matlab
LEI Nengfang
(Weinan Teachers University,Weinan,714000,China)
Abstract:Principle and composition of the DDS are introduced,and the DDS system based on FLEX10K device is realized by Verilog language.Correctness of design is verified by using the simulator of QuartusⅡ and Matlab.The phase adder in the model is widely applied which can enable system to hold high frequency revolution,fast frequency switching.
Keywords:DDS;Verilog;QuartusⅡ;Matlab
直接數字頻率合成器(Digital Direct Synthesizer,DDS)是以數字信號處理理論為基礎,從信號的幅度相位關系出發進行頻率合成的。與傳統的頻率合成器相比,DDS具有極高的分辨率,快速的頻率轉換時間,很寬的相對帶寬、任意波形的輸出能力和數字調制等優點。本文研究的是正弦輸出的DDS技術,這類直接數字合成技術最具價值,應用也最為廣泛。
1 DDS工作原理
DDS 主要由相位累加器、函數表ROM存儲器、D/A轉換器及低通濾波器組成,其基本原理如圖1 所示。
圖1 直接數字頻率合成器原理框圖
正弦波的信號幅值以數據表的形式存儲在ROM 存儲器中。相位累加器在時鐘的作用下以頻率控制字為步進進行相位累加,累加結果依次作為ROM 存儲器的地址,取出相應的幅值數據送D/A 轉換器,以產生階梯波形,階梯波形經低通濾波器濾波后得到相應的正弦波形。
設時鐘頻率為fc,輸出頻率為fo,頻率建立字FSW用相位增量Δφf表示。
若累加器的寬度為N位,查詢表ROM的輸出位數為M,則2N就相當于2π rad;N位中的最低有效位相當于2π/2N rad,即最小的相位增量;Δφf對應的相位為Δφf×2π/2N rad;完成一個周期的正弦波輸出需要2π/Δφf×2π/2N=2N/Δφf個參考時鐘周期,所以一個參考時鐘周期Tc內輸出頻率的周期為:
To=(2N/Δφf)Tc
輸出頻率與查詢表ROM的輸出位數M無關。在一定的時鐘頻率fc下,相位增量Δφf決定了合成信號的頻率,故Δφf被稱為頻率控制字,習慣上用K表示。因此合成信號的頻率為:
fo=(K/2N)fc
當時鐘頻率fc固定時,改變頻率控制字,可以改變合成信號的頻率fo;當K=1時,輸出頻率最低,即:
fomin=Δfo=(1/2N)fc
式中:Δfo為DDS的頻率分辨率。
2 系統設計
系統設計采用美國ALTERA公司的CPLD(EPF10K10LC84-4)實現。
2.1 系統Verilog源程序
系統Verilog源程序為:
module fun_text (M,sin,acc,clk);
parameter WIDTH = 32;
input[WIDTH-1:0]M;
output [7:0]sin,acc;
inputclk;
wire [WIDTH-1:0] s,acc32;
wire [7:0]msbs;
wireADD,ena,aset,sclr,sset;
wire aload,sload,aclr,ovf1,cin1,clkena;
assign clkena=0;assign cin1=0;assign ADD=1;
assign ena=1;assign aclr=0;assign aset=0;
assign sclr=0;
assign sset=0;assign aload=0;assign sload=0;
lpm_add_sub add_1
(.result(s),.dataa(acc32),.datab(M));
defparam add_1.lpm_width = WIDTH;
defparam add_1.lpm_representation = "UNSIGNED";
lpm_ff reg_1
(.data(s),.q(acc32),.clock(clk));
defparam reg_1.lpm_width = WIDTH;
assign msbs = acc32[WIDTH-1:WIDTH-8];
assign acc= msbs;
lpm_rom rom1
(.q(sin),.inclock(clk),.outclock(clk),
.address(msbs));
defparam rom1.lpm_width = 8;
defparam rom1.lpm_widthad = 8;
defparam rom1.lpm_file = "sine.mif";
endmodule
2.2 ROM定制
在編譯源程序前,必須首先完成存放波形數據ROM的定制。利用MegaWizard Plug-In Manager 定制lpm_rom 宏功能塊,將波形數據加載于此ROM中。QuartusⅡ能接受的LPM_ROM 中的初始化數據文件的格式有2 種:Memory Initialization File (.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式。實際應用中只要使用其中一種格式的文件即可,可利用Matlab或C語言編程對正弦函數進行采樣生成初始化數據文件。產生正弦波采樣點數據的C語言程序如下:
#include
#include "math.h"
main()
{int i;float s;
for(i=0;i<1024;i++)
{ s = sin(atan(1)*8*i/1024);
printf("%d : %d;\n",i,(int)((s+1)*1023/2));
} }
2.3 QuartusⅡ與Matlab聯合仿真
在將設計文件加載到FPGA之前,為了驗證設計的正確性,必須對設計進行全面充分的仿真。Altera公司提供的QuartusⅡ軟件除了具有強大的編譯綜合功能外,還提供一定的時序仿真功能。但其輸入和輸出均以時序圖的形式給出,仿真結果不直觀。利用MathWorks公司強大的數值計算與分析軟件Matlab及Altera公司的QuartusⅡ實現聯合仿真,可大大加強QuartusⅡ的仿真功能,提高設計效率。
利用QuartusⅡ提供的Simulation 對上述程序進行時序仿真,得到仿真時序圖(見圖2)。由時序圖可見,隨著每一個時鐘上升沿的到來,輸出端口將正弦波數據依次輸出。
圖2 QuartusⅡ時序仿真結果
將仿真生成的波形文件*.vwf另存為*.tbl格式文件。以數據文件輸入的方式將此*.tbl文件中的QuartusⅡ仿真輸出信號的數值導入Matlab中,進行波形仿真驗證,得到如圖3所示波形。
圖3 Matlab仿真波形
3 結 語
根據仿真波形可以看到,DDS系統的輸出波形平滑,滿足一般系統的要求。DDS已廣泛應用于接收機本振、信號發生器、通信系統、雷達系統,且特別適合于跳頻無線通信系統。未來的DDS 不僅應用于傳統上需要使用信號源的領域,而且必將開拓許多新的應用領域。同時利用QuartusⅡ與Matlab聯合仿真,在開發FPGA過程中對增強電子設計自動化(EDA)功能、提高FPGA設計效率具有普遍意義。
參考文獻
[1]劉凌.數字信號處理的FPGA實現[M].北京:清華大學出版社,2006.
[2]楊剛,龍海燕.現代電子技術:VHDL與數字系統設計[M].北京:電子工業出版社,2004.
[3]韓喜春,劉柏森.基于FPGA的可重構多通道DDS信號發生器[J].電測與儀表,2007(7):50-52.[4]潘松.EDA技術實用教程[M].北京:科學出版社,2005.
[5]王旭東,潘廣楨.Matlab及其在FPGA中的應用[M].北京:國防工業出版社,2006.
[6]譚會生.EDA技術基礎[M].長沙:湖南師范大學出版社,2004.
[7]朱正偉.EDA技術及應用[M].北京:清華大學出版社,2005.
[8]侯繼紅,李向東.EDA實用技術教程[M].北京:中國電力出版社,2004.
[9]江曉安.數字電子技術[M].西安:西安電子科技大學出版,2006.
[10]馮濤,王程.Max+PlusⅡ入門與提高[M].北京:人民郵電出版社,2002.
[11]唐亞平.電子設計自動化(EDA)技術[M].北京:化學工業出版社,2004.
[12]李國洪,申明山.可編程器件EDA技術與實踐[M].北京:機械工業出版社,2004.