【正文】
9。)。fprintf(fp1,39。content\n39。)。fprintf(fp1,39。begin\n39。)。for s=1:mfor i=1:n fprintf(fp1,39。%d:%x。\n39。,(s1)*n+i1,a(s,i))。 end endfprintf(fp1,39。end\n39。)。fclose(fp1)。disp(39。sucess39。)。編寫一個產(chǎn)生自己需要波形的*.mif表的函數(shù),針對以上的兩種存儲方式,有相對應(yīng)的兩個生成函數(shù)。間隔式存儲對應(yīng)的生成函數(shù)為: for i=0:2:2046 s=sin(i*pi/(1023))。 si(i+1)=ceil(2047*s)。 if si(i+1)0 si(i+1)=4096+si(i+1)。 end 。 end for i=1:2:2047 s=cos((i1)*pi/(1023))。 si(i+1)=ceil(2047*s)。 if si(i+1)0 si(i+1)=4096+si(i+1)。 end 。 end mifwj(si,39。39。,6)。其si(幅值)與地址對應(yīng)的圖形為: 間隔存儲方式下si(幅值)與地址關(guān)系連續(xù)式存儲對應(yīng)的生成函數(shù)為: for i=0:1:1023 s=sin(i*2*pi/(1023))。 si(i+1)=ceil(2047*s)。 if si(i+1)0 si(i+1)=4096+si(i+1)。 end 。 end for i=1024:1:2047 s=cos((i1024)*2*pi/(1023))。 si(i+1)=ceil(2047*s)。 if si(i+1)0 si(i+1)=4096+si(i+1)。 end 。 end mifwj(si,39。39。,6)。其si(幅值)與地址對應(yīng)的圖形為: 連續(xù)存儲方式下si(幅值)與地址關(guān)系本設(shè)計要實(shí)現(xiàn)兩種波形的循環(huán)輸出以及相位控制,選取間隔存儲。同時,第奇數(shù)位存儲余弦波,第偶數(shù)位存儲正弦波。采用這種設(shè)計方法,可以根據(jù)需要,改變生成*.mif的函數(shù),即可調(diào)換生成的波形及ROM中存儲波形的數(shù)量,其擴(kuò)張性很強(qiáng)。頂層文件通過調(diào)用各個部件,來實(shí)現(xiàn)整個DDS的實(shí)現(xiàn)。其對應(yīng)生成的器件圖如下: 總體設(shè)計圖頂層文件的編寫:library ieee。DDS top designuse 。use 。entity DDS_VHDL is port ( clk : in std_logic。 K : in std_logic_vector(10 downto 0)。 P : in std_logic_vector(10 downto 0)。 W : in std_logic_vector(10 downto 0)。 f0 : out std_logic_vector(10 downto 0) )。end。architecture one of DDS_VHDL is ponent reg1 port (clk: IN STD_LOGIC。 I1: IN STD_LOGIC_VECTOR(10 downto 0)。 O1: out STD_LOGIC_VECTOR(10 downto 0) )。 end ponent。 ponent add port (I1: IN STD_LOGIC_VECTOR(10 downto 0)。 I2: IN STD_LOGIC_VECTOR(10 downto 0)。 O1 : out STD_LOGIC_VECTOR(10 downto 0) )。 end ponent。 ponent rom1 port ( address : IN STD_LOGIC_VECTOR (10 DOWNTO 0)。 clock : IN STD_LOGIC 。 q : OUT STD_LOGIC_VECTOR (10 DOWNTO 0))。 end ponent 。 signal X,Y,Z,R: std_logic_vector(10 downto 0)。begin u1: add port map (I1=Y,I2=K,O1=X)。u2: reg1 port map (clk,I1=X,O1=Y)。u3: add port map (I1=Y,I2=P,O1=Z)。u4: add port map (I1=Z,I2=W,O1=R)。u5: rom1 port map (clock=clk,address=R,q=f0)。end。各控制字說明:頻率控制字K:必須為偶數(shù),不然相加后的地址會在偶地址和奇地址間切換,進(jìn)而產(chǎn)生波形的混亂。相位控制字P:也必須為偶數(shù),原因同上。波形控制字W:必須為奇數(shù),其功能就是使地址由偶地址轉(zhuǎn)向奇地址,或相反,最好是1,不然就會產(chǎn)生相位的轉(zhuǎn)移。其各種參數(shù)下的仿真波形圖如下:時鐘周期T=10ns; 頻率控制字K=2; 相位控制字P=0; 波形控制字W=1時 仿真波形1時鐘周期T=10ns; 頻率控制字K=8; 相位控制字P=10; 波形控制字W=1時 仿真波形2時鐘周期T=10ns; 頻率控制字K=8; 相位控制字P=10; 波形控制字W=0時 仿真波形3 仿真結(jié)果分析:頻率控制字K=28,P=010由于每次累加器由加2變?yōu)榧?,使得地址的遞增值變大,在一個周期同樣為個地址的情況下,地址完成一個循環(huán)相加的周期減少為原來的1/4,及波的頻率提高為原來的4倍。參數(shù)P=010由于在開始時累加器后的加法器加了10,即地址直接跳過了前10個地址,直接從第11個地址開始,相當(dāng)于波形相對于時間軸左移了10個地址值,即波形左移了(102)/1024的相位。:波形控制字W=10,在ROM前的加法器上加1,可使得地址控制電路由原來取偶數(shù)地址變?yōu)槠鏀?shù)地址,而ROM中偶數(shù)地址存儲的是正弦波形的幅值數(shù)據(jù),奇數(shù)地址存儲的是余弦波的幅值數(shù)據(jù)。所以當(dāng)W=1時,最后形成的是余弦波,而W=0時,最后形成的是正弦波。5 畢業(yè)設(shè)計小節(jié)通過這次基于FPGA的DDS信號發(fā)生器的設(shè)計,使我對信號發(fā)生器有了比較全面的認(rèn)識。掌握了DDS的原理,能通過累加器、加法器來控制邏輯地址的遞增,最后將地址輸入ROM中,根據(jù)不同的地址來輸出不同的幅值,再通過D/A轉(zhuǎn)換器和濾波器來轉(zhuǎn)化成模擬量,輸出所需的波形。并可根據(jù)需要,通過頻率控制字K,相位控制字P,和波形控制字W的改變來產(chǎn)生不同頻率、不同相位的不同波形。同時此次設(shè)計使我對QuartursⅡ和Matlab兩種軟件有了較深刻的認(rèn)識,并熟悉了兩種軟件的基本操作,知道了各種工具軟件在設(shè)計中的重要性。最重要的是使我真正認(rèn)識到一項(xiàng)設(shè)計的具體過程和步驟:查閱相關(guān)資料,掌握設(shè)計的基本原理,對設(shè)計有個全面的認(rèn)識;初級規(guī)劃幾種設(shè)計方案,根據(jù)實(shí)際需要和設(shè)計條件選擇最終設(shè)計方案;方案各部分的具體設(shè)計,仿真并分析結(jié)果;根據(jù)仿真結(jié)構(gòu),發(fā)現(xiàn)問題,并改進(jìn)方案;設(shè)計小結(jié),總結(jié)自己的收獲;謝辭此次畢業(yè)設(shè)計過程中,魯迎春老師給了我精心的指導(dǎo),在設(shè)計前期,由于平時涉及課題較少,不知如何下手,魯老師并沒有厭倦我們的實(shí)際操作能力差,而是積極的給予我們指導(dǎo)。中途由于所簽單位要求實(shí)習(xí),在實(shí)習(xí)期間,老師也毫不放松我們的設(shè)計進(jìn)度,定時監(jiān)督檢查,才使我們盡快完成了初級設(shè)計,并在后期不斷的對自己的課題進(jìn)行完善。在他身上我們不僅學(xué)到了不少專業(yè)知識和科學(xué)研究方法,同時還學(xué)到了他嚴(yán)謹(jǐn)、踏實(shí)的作風(fēng),和對自己工作的熱愛。在此,深深地感謝魯老師的指導(dǎo)。同時,電子教研室的各位老師也秉承負(fù)責(zé)、積極的工作態(tài)度,對我們的設(shè)計進(jìn)行指導(dǎo)和監(jiān)督;理學(xué)院計算機(jī)中心也為我們提供了一流的設(shè)計環(huán)境。在這里,我要對所有指導(dǎo)我們畢業(yè)設(shè)計而辛勤工作的老師說聲:謝謝!謝謝你們的指導(dǎo)。參考文獻(xiàn)周俊峰、陳濤著,《基于FPGA的直接數(shù)字頻率合成器的設(shè)計和實(shí)現(xiàn)》,電子工業(yè)出版社,2001任曉東、文博著,《CPLD/FPGA高級應(yīng)用開發(fā)指南》,電子工業(yè)出版社,2003候博亨、顧新著,《VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計》, 西安電子科技大學(xué)出版社,1997《Quartus II官方中文入門手冊》,下載自:馬曉巖著,《雷達(dá)信號處理》,湖南科學(xué)技術(shù)出版社,1998孫涵芳著,《MCS51/96系列單片機(jī)原理及應(yīng)用》,北京航空航天大學(xué)出版社,1996俞柏峰、甘良才著,《用單片機(jī)控制DDS實(shí)現(xiàn)短波調(diào)頻系統(tǒng)的調(diào)制》,節(jié)選自《電子技術(shù)應(yīng)用》2000年11期:42~45王旭東、潘廣楨著,《MATLAB及其在FPGA中的應(yīng)用》,國防工業(yè)出版社,20