【正文】
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。)。編寫一個(gè)產(chǎn)生自己需要波形的*.mif表的函數(shù),針對(duì)以上的兩種存儲(chǔ)方式,有相對(duì)應(yīng)的兩個(gè)生成函數(shù)。間隔式存儲(chǔ)對(duì)應(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(幅值)與地址對(duì)應(yīng)的圖形為: 間隔存儲(chǔ)方式下si(幅值)與地址關(guān)系連續(xù)式存儲(chǔ)對(duì)應(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(幅值)與地址對(duì)應(yīng)的圖形為: 連續(xù)存儲(chǔ)方式下si(幅值)與地址關(guān)系本設(shè)計(jì)要實(shí)現(xiàn)兩種波形的循環(huán)輸出以及相位控制,選取間隔存儲(chǔ)。同時(shí),第奇數(shù)位存儲(chǔ)余弦波,第偶數(shù)位存儲(chǔ)正弦波。采用這種設(shè)計(jì)方法,可以根據(jù)需要,改變生成*.mif的函數(shù),即可調(diào)換生成的波形及ROM中存儲(chǔ)波形的數(shù)量,其擴(kuò)張性很強(qiáng)。頂層文件通過(guò)調(diào)用各個(gè)部件,來(lái)實(shí)現(xiàn)整個(gè)DDS的實(shí)現(xiàn)。其對(duì)應(yīng)生成的器件圖如下: 總體設(shè)計(jì)圖頂層文件的編寫: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。各控制字說(shuō)明:頻率控制字K:必須為偶數(shù),不然相加后的地址會(huì)在偶地址和奇地址間切換,進(jìn)而產(chǎn)生波形的混亂。相位控制字P:也必須為偶數(shù),原因同上。波形控制字W:必須為奇數(shù),其功能就是使地址由偶地址轉(zhuǎn)向奇地址,或相反,最好是1,不然就會(huì)產(chǎn)生相位的轉(zhuǎn)移。其各種參數(shù)下的仿真波形圖如下:時(shí)鐘周期T=10ns; 頻率控制字K=2; 相位控制字P=0; 波形控制字W=1時(shí) 仿真波形1時(shí)鐘周期T=10ns; 頻率控制字K=8; 相位控制字P=10; 波形控制字W=1時(shí) 仿真波形2時(shí)鐘周期T=10ns; 頻率控制字K=8; 相位控制字P=10; 波形控制字W=0時(shí) 仿真波形3 仿真結(jié)果分析:頻率控制字K=28,P=010由于每次累加器由加2變?yōu)榧?,使得地址的遞增值變大,在一個(gè)周期同樣為個(gè)地址的情況下,地址完成一個(gè)循環(huán)相加的周期減少為原來(lái)的1/4,及波的頻率提高為原來(lái)的4倍。參數(shù)P=010由于在開(kāi)始時(shí)累加器后的加法器加了10,即地址直接跳過(guò)了前10個(gè)地址,直接從第11個(gè)地址開(kāi)始,相當(dāng)于波形相對(duì)于時(shí)間軸左移了10個(gè)地址值,即波形左移了(102)/1024的相位。:波形控制字W=10,在ROM前的加法器上加1,可使得地址控制電路由原來(lái)取偶數(shù)地址變?yōu)槠鏀?shù)地址,而ROM中偶數(shù)地址存儲(chǔ)的是正弦波形的幅值數(shù)據(jù),奇數(shù)地址存儲(chǔ)的是余弦波的幅值數(shù)據(jù)。所以當(dāng)W=1時(shí),最后形成的是余弦波,而W=0時(shí),最后形成的是正弦波。5 畢業(yè)設(shè)計(jì)小節(jié)通過(guò)這次基于FPGA的DDS信號(hào)發(fā)生器的設(shè)計(jì),使我對(duì)信號(hào)發(fā)生器有了比較全面的認(rèn)識(shí)。掌握了DDS的原理,能通過(guò)累加器、加法器來(lái)控制邏輯地址的遞增,最后將地址輸入ROM中,根據(jù)不同的地址來(lái)輸出不同的幅值,再通過(guò)D/A轉(zhuǎn)換器和濾波器來(lái)轉(zhuǎn)化成模擬量,輸出所需的波形。并可根據(jù)需要,通過(guò)頻率控制字K,相位控制字P,和波形控制字W的改變來(lái)產(chǎn)生不同頻率、不同相位的不同波形。同時(shí)此次設(shè)計(jì)使我對(duì)QuartursⅡ和Matlab兩種軟件有了較深刻的認(rèn)識(shí),并熟悉了兩種軟件的基本操作,知道了各種工具軟件在設(shè)計(jì)中的重要性。最重要的是使我真正認(rèn)識(shí)到一項(xiàng)設(shè)計(jì)的具體過(guò)程和步驟:查閱相關(guān)資料,掌握設(shè)計(jì)的基本原理,對(duì)設(shè)計(jì)有個(gè)全面的認(rèn)識(shí);初級(jí)規(guī)劃幾種設(shè)計(jì)方案,根據(jù)實(shí)際需要和設(shè)計(jì)條件選擇最終設(shè)計(jì)方案;方案各部分的具體設(shè)計(jì),仿真并分析結(jié)果;根據(jù)仿真結(jié)構(gòu),發(fā)現(xiàn)問(wèn)題,并改進(jìn)方案;設(shè)計(jì)小結(jié),總結(jié)自己的收獲;謝辭此次畢業(yè)設(shè)計(jì)過(guò)程中,魯迎春老師給了我精心的指導(dǎo),在設(shè)計(jì)前期,由于平時(shí)涉及課題較少,不知如何下手,魯老師并沒(méi)有厭倦我們的實(shí)際操作能力差,而是積極的給予我們指導(dǎo)。中途由于所簽單位要求實(shí)習(xí),在實(shí)習(xí)期間,老師也毫不放松我們的設(shè)計(jì)進(jìn)度,定時(shí)監(jiān)督檢查,才使我們盡快完成了初級(jí)設(shè)計(jì),并在后期不斷的對(duì)自己的課題進(jìn)行完善。在他身上我們不僅學(xué)到了不少專業(yè)知識(shí)和科學(xué)研究方法,同時(shí)還學(xué)到了他嚴(yán)謹(jǐn)、踏實(shí)的作風(fēng),和對(duì)自己工作的熱愛(ài)。在此,深深地感謝魯老師的指導(dǎo)。同時(shí),電子教研室的各位老師也秉承負(fù)責(zé)、積極的工作態(tài)度,對(duì)我們的設(shè)計(jì)進(jìn)行指導(dǎo)和監(jiān)督;理學(xué)院計(jì)算機(jī)中心也為我們提供了一流的設(shè)計(jì)環(huán)境。在這里,我要對(duì)所有指導(dǎo)我們畢業(yè)設(shè)計(jì)而辛勤工作的老師說(shuō)聲:謝謝!謝謝你們的指導(dǎo)。參考文獻(xiàn)周俊峰、陳濤著,《基于FPGA的直接數(shù)字頻率合成器的設(shè)計(jì)和實(shí)現(xiàn)》,電子工業(yè)出版社,2001任曉東、文博著,《CPLD/FPGA高級(jí)應(yīng)用開(kāi)發(fā)指南》,電子工業(yè)出版社,2003候博亨、顧新著,《VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)》, 西安電子科技大學(xué)出版社,1997《Quartus II官方中文入門手冊(cè)》,下載自:馬曉巖著,《雷達(dá)信號(hào)處理》,湖南科學(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)用》,國(guó)防工業(yè)出版社,20