雷能芳
摘 要:介紹了直接數(shù)字頻率合成器的組成及工作原理。采用Verilog語言在Altera 公司的FL EX10K系列器件上實(shí)現(xiàn)該系統(tǒng),并通過QuartusⅡ和Matlab軟件對(duì)設(shè)計(jì)進(jìn)行聯(lián)合仿真,驗(yàn)證設(shè)計(jì)的正確性。模塊中的相位累加器使該系統(tǒng)具有較高的頻率分辨率,可實(shí)現(xiàn)快速頻率切換,有廣泛的應(yīng)用價(jià)值。
關(guān)鍵詞:數(shù)字頻率合成器;Verilog;QuartusⅡ;Matlab
中圖分類號(hào):TN911文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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
直接數(shù)字頻率合成器(Digital Direct Synthesizer,DDS)是以數(shù)字信號(hào)處理理論為基礎(chǔ),從信號(hào)的幅度相位關(guān)系出發(fā)進(jìn)行頻率合成的。與傳統(tǒng)的頻率合成器相比,DDS具有極高的分辨率,快速的頻率轉(zhuǎn)換時(shí)間,很寬的相對(duì)帶寬、任意波形的輸出能力和數(shù)字調(diào)制等優(yōu)點(diǎn)。本文研究的是正弦輸出的DDS技術(shù),這類直接數(shù)字合成技術(shù)最具價(jià)值,應(yīng)用也最為廣泛。
1 DDS工作原理
DDS 主要由相位累加器、函數(shù)表ROM存儲(chǔ)器、D/A轉(zhuǎn)換器及低通濾波器組成,其基本原理如圖1 所示。
圖1 直接數(shù)字頻率合成器原理框圖
正弦波的信號(hào)幅值以數(shù)據(jù)表的形式存儲(chǔ)在ROM 存儲(chǔ)器中。相位累加器在時(shí)鐘的作用下以頻率控制字為步進(jìn)進(jìn)行相位累加,累加結(jié)果依次作為ROM 存儲(chǔ)器的地址,取出相應(yīng)的幅值數(shù)據(jù)送D/A 轉(zhuǎn)換器,以產(chǎn)生階梯波形,階梯波形經(jīng)低通濾波器濾波后得到相應(yīng)的正弦波形。
設(shè)時(shí)鐘頻率為fc,輸出頻率為fo,頻率建立字FSW用相位增量Δφf表示。
若累加器的寬度為N位,查詢表ROM的輸出位數(shù)為M,則2N就相當(dāng)于2π rad;N位中的最低有效位相當(dāng)于2π/2N rad,即最小的相位增量;Δφf對(duì)應(yīng)的相位為Δφf×2π/2N rad;完成一個(gè)周期的正弦波輸出需要2π/Δφf×2π/2N=2N/Δφf個(gè)參考時(shí)鐘周期,所以一個(gè)參考時(shí)鐘周期Tc內(nèi)輸出頻率的周期為:
To=(2N/Δφf)Tc
輸出頻率與查詢表ROM的輸出位數(shù)M無關(guān)。在一定的時(shí)鐘頻率fc下,相位增量Δφf決定了合成信號(hào)的頻率,故Δφf被稱為頻率控制字,習(xí)慣上用K表示。因此合成信號(hào)的頻率為:
fo=(K/2N)fc
當(dāng)時(shí)鐘頻率fc固定時(shí),改變頻率控制字,可以改變合成信號(hào)的頻率fo;當(dāng)K=1時(shí),輸出頻率最低,即:
fomin=Δfo=(1/2N)fc
式中:Δfo為DDS的頻率分辨率。
2 系統(tǒng)設(shè)計(jì)
系統(tǒng)設(shè)計(jì)采用美國ALTERA公司的CPLD(EPF10K10LC84-4)實(shí)現(xiàn)。
2.1 系統(tǒng)Verilog源程序
系統(tǒng)Verilog源程序?yàn)?
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定制
在編譯源程序前,必須首先完成存放波形數(shù)據(jù)ROM的定制。利用MegaWizard Plug-In Manager 定制lpm_rom 宏功能塊,將波形數(shù)據(jù)加載于此ROM中。QuartusⅡ能接受的LPM_ROM 中的初始化數(shù)據(jù)文件的格式有2 種:Memory Initialization File (.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式。實(shí)際應(yīng)用中只要使用其中一種格式的文件即可,可利用Matlab或C語言編程對(duì)正弦函數(shù)進(jìn)行采樣生成初始化數(shù)據(jù)文件。產(chǎn)生正弦波采樣點(diǎn)數(shù)據(jù)的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聯(lián)合仿真
在將設(shè)計(jì)文件加載到FPGA之前,為了驗(yàn)證設(shè)計(jì)的正確性,必須對(duì)設(shè)計(jì)進(jìn)行全面充分的仿真。Altera公司提供的QuartusⅡ軟件除了具有強(qiáng)大的編譯綜合功能外,還提供一定的時(shí)序仿真功能。但其輸入和輸出均以時(shí)序圖的形式給出,仿真結(jié)果不直觀。利用MathWorks公司強(qiáng)大的數(shù)值計(jì)算與分析軟件Matlab及Altera公司的QuartusⅡ?qū)崿F(xiàn)聯(lián)合仿真,可大大加強(qiáng)QuartusⅡ的仿真功能,提高設(shè)計(jì)效率。
利用QuartusⅡ提供的Simulation 對(duì)上述程序進(jìn)行時(shí)序仿真,得到仿真時(shí)序圖(見圖2)。由時(shí)序圖可見,隨著每一個(gè)時(shí)鐘上升沿的到來,輸出端口將正弦波數(shù)據(jù)依次輸出。
圖2 QuartusⅡ時(shí)序仿真結(jié)果
將仿真生成的波形文件*.vwf另存為*.tbl格式文件。以數(shù)據(jù)文件輸入的方式將此*.tbl文件中的QuartusⅡ仿真輸出信號(hào)的數(shù)值導(dǎo)入Matlab中,進(jìn)行波形仿真驗(yàn)證,得到如圖3所示波形。
圖3 Matlab仿真波形
3 結(jié) 語
根據(jù)仿真波形可以看到,DDS系統(tǒng)的輸出波形平滑,滿足一般系統(tǒng)的要求。DDS已廣泛應(yīng)用于接收機(jī)本振、信號(hào)發(fā)生器、通信系統(tǒng)、雷達(dá)系統(tǒng),且特別適合于跳頻無線通信系統(tǒng)。未來的DDS 不僅應(yīng)用于傳統(tǒng)上需要使用信號(hào)源的領(lǐng)域,而且必將開拓許多新的應(yīng)用領(lǐng)域。同時(shí)利用QuartusⅡ與Matlab聯(lián)合仿真,在開發(fā)FPGA過程中對(duì)增強(qiáng)電子設(shè)計(jì)自動(dòng)化(EDA)功能、提高FPGA設(shè)計(jì)效率具有普遍意義。
參考文獻(xiàn)
[1]劉凌.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2006.
[2]楊剛,龍海燕.現(xiàn)代電子技術(shù):VHDL與數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2004.
[3]韓喜春,劉柏森.基于FPGA的可重構(gòu)多通道DDS信號(hào)發(fā)生器[J].電測(cè)與儀表,2007(7):50-52.[4]潘松.EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2005.
[5]王旭東,潘廣楨.Matlab及其在FPGA中的應(yīng)用[M].北京:國防工業(yè)出版社,2006.
[6]譚會(huì)生.EDA技術(shù)基礎(chǔ)[M].長沙:湖南師范大學(xué)出版社,2004.
[7]朱正偉.EDA技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社,2005.
[8]侯繼紅,李向東.EDA實(shí)用技術(shù)教程[M].北京:中國電力出版社,2004.
[9]江曉安.數(shù)字電子技術(shù)[M].西安:西安電子科技大學(xué)出版,2006.
[10]馮濤,王程.Max+PlusⅡ入門與提高[M].北京:人民郵電出版社,2002.
[11]唐亞平.電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)[M].北京:化學(xué)工業(yè)出版社,2004.
[12]李國洪,申明山.可編程器件EDA技術(shù)與實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2004.