基于 VHDL 的函數(shù)信號發(fā)生器的設(shè)計(jì)--畢業(yè)設(shè)計(jì)(共34頁)_第1頁
基于 VHDL 的函數(shù)信號發(fā)生器的設(shè)計(jì)--畢業(yè)設(shè)計(jì)(共34頁)_第2頁
基于 VHDL 的函數(shù)信號發(fā)生器的設(shè)計(jì)--畢業(yè)設(shè)計(jì)(共34頁)_第3頁
基于 VHDL 的函數(shù)信號發(fā)生器的設(shè)計(jì)--畢業(yè)設(shè)計(jì)(共34頁)_第4頁
基于 VHDL 的函數(shù)信號發(fā)生器的設(shè)計(jì)--畢業(yè)設(shè)計(jì)(共34頁)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、長江(chn jin)大學(xué)工程技術(shù)學(xué)院(xuyun)畢業(yè)論文 學(xué) 院: 專業(yè)(zhuny)班級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 輔導(dǎo)教師: _學(xué)年 _年_月 至 _年_月基于 VHDL 的函數(shù)信號發(fā)生器的仿真(fn zhn)設(shè)計(jì)【摘 要】數(shù)字技術(shù)和計(jì)算機(jī)技術(shù)已經(jīng)廣泛運(yùn)用于工業(yè)、農(nóng)業(yè)、醫(yī)學(xué)、教育、軍事(jnsh)、生活等各個(gè)領(lǐng)域,其應(yīng)用之深之廣令人驚嘆。電子設(shè)計(jì)自動(dòng)化技術(shù)已日趨成為現(xiàn)代電子設(shè)計(jì)技術(shù)的核心,這種技術(shù)又稱為 EDA(Electronic Design Automation)技術(shù)。EDA 技術(shù)基于硬件描述語言 HDL。VHDL 是 HDL 的一種,并廣泛應(yīng)用在電子設(shè)計(jì)中。鋸齒波、三角

2、波、方波、正弦波等多種波形均可以從函數(shù)信號發(fā)生器中產(chǎn)生。我們在電路實(shí)驗(yàn)中也廣泛運(yùn)用到函數(shù)信號發(fā)生器。本文基于 VHDL 語言設(shè)計(jì)各個(gè)波形產(chǎn)生模塊,然后在 QUARTUS II 軟件上實(shí)現(xiàn)波形的編譯及仿真,通過四選一數(shù)據(jù)選擇器選擇輸出三角波、鋸齒波、矩形波或正弦波中的一種(y zhn)規(guī)定波形,并采用調(diào)頻模塊和調(diào)幅模塊進(jìn)行調(diào)頻調(diào)幅,可以產(chǎn)生多種波形。【關(guān)鍵詞】:函數(shù)信號發(fā)生器;EDA 技術(shù);VHDL;QUARTUS II 軟件目錄1 基于VHDL的函數(shù)信號發(fā)生器的設(shè)計(jì) 1.1信號發(fā)生器的發(fā)展現(xiàn)狀 1.2研究信號發(fā)生器目的和意義 1.3主要研究設(shè)計(jì)內(nèi)容、關(guān)鍵問題及解決思路 1.3.1主要研究內(nèi)容

3、1.3.2關(guān)鍵問題1.3.3解決思路2系統(tǒng)設(shè)計(jì) 2.1設(shè)計(jì)要求與任務(wù) 2.2設(shè)計(jì)方案 2.3相關(guān)模塊介紹 2.3.1時(shí)鐘脈沖與復(fù)位 2.3.2調(diào)頻與調(diào)幅 2.4相關(guān)組合對應(yīng)關(guān)系3 系統(tǒng)仿真 3.1相關(guān)工具簡介 3.2波形數(shù)據(jù)產(chǎn)生模塊 3.2.1鋸齒波 3.2.2三角波 3.2.3方波 3.2.4正弦波4 調(diào)控模塊 4.1波形輸入控制模塊 4.2波形輸出控制模塊 4.3頻率控制模塊 4.4幅度控制模塊5 結(jié)果分析6 結(jié)論 前言(qin yn) 信號發(fā)生器也被稱為信號源或振蕩器,被廣泛應(yīng)用于生產(chǎn)實(shí)踐與科學(xué)技術(shù)。設(shè)計(jì)(shj)方面,函數(shù)波形發(fā)生器分為模擬及數(shù)字合成式。 函數(shù)發(fā)生器,又稱波形發(fā)生器。它

4、能產(chǎn)生某些(mu xi)特定的周期性時(shí)間函數(shù)波形(主是正弦波、方波、三角波、鋸齒波和脈沖波等)信號。頻率范圍可從幾毫赫甚幾微赫的超低頻直到幾十兆赫。除供通信、儀表和自動(dòng)控制系統(tǒng)測試用外,還泛用于其他非電測量領(lǐng)域。函數(shù)信號發(fā)生器實(shí)物圖如圖 1 所示。本設(shè)計(jì)基于 VHDL 來設(shè)計(jì)制作多功能函數(shù)信號發(fā)生器。該信號發(fā)生器可以生鋸齒波、三角波、方波、正弦波形中的任意一種。同時(shí)具有幅度、頻率可的功能,其中調(diào)幅分為 1、1/2、1/4、1/8 調(diào)幅,調(diào)頻分為 2、4、8、16 分頻。圖 1 函數(shù)(hnsh)信號發(fā)生器1 信號(xnho)發(fā)生器的了解 1.1信號發(fā)生器的發(fā)展(fzhn)現(xiàn)狀信號發(fā)生器也叫波形發(fā)

5、生器,它是一種信號源。需用到波形發(fā)生器的地方很多,包括電參數(shù)的測量。信號發(fā)生器在通信、雷達(dá)和現(xiàn)代儀器儀表等方面應(yīng)用普及,在電子測量設(shè)備中需提供準(zhǔn)確技術(shù)要求,是最普通、最基本也是應(yīng)用最廣泛的電子儀器之一。在現(xiàn)代的電子測量中,我們之所以不會(huì)選用傳統(tǒng)的信號發(fā)生器,是因?yàn)樗鼈儷@得所需頻率主要依靠諧振法。它們具有較寬的頻率范圍,并且結(jié)構(gòu)簡單。這種信號發(fā)生器無法生成任意波形,其頻率穩(wěn)定性和準(zhǔn)確度差。在這現(xiàn)代電子技術(shù)飛速發(fā)展的時(shí)代,波形發(fā)生器不僅要求能產(chǎn)生鋸齒波,方波,三角波,正弦波等標(biāo)準(zhǔn)波形,還可根據(jù)要求產(chǎn)生任意波形,要求輸出波形的質(zhì)量好,準(zhǔn)確度、穩(wěn)定度及分辨率高,頻率轉(zhuǎn)換速度快,輸出頻率范圍寬且波形相位

6、連續(xù)等。這些高性能要求的提出,促進(jìn)了設(shè)計(jì)者對信號發(fā)生器的進(jìn)一步研制。當(dāng)前信號發(fā)生器的總趨勢是向著寬頻率,高精度,多功用,自動(dòng)化和智能化發(fā)展的。我國已經(jīng)開始研制函數(shù)信號發(fā)生器,并取得了可喜的成績。但總的來說,我國的函數(shù)信號發(fā)生器還沒有形成真正的產(chǎn)業(yè)。就目前國內(nèi)的成熟產(chǎn)品來看,多為一些PC儀器插卡,獨(dú)立的儀器和VXI系統(tǒng)的模塊很少,并且我國目前在函數(shù)信號發(fā)生器的種類和性能與國外同類產(chǎn)品存在較大的差距,因此加緊對函數(shù)信號發(fā)生器的研制顯得迫在眉睫。1.2 研究信號發(fā)生器目的和意義 函數(shù)信號發(fā)生器作為一種常見的電子儀器設(shè)備,既能夠構(gòu)成獨(dú)立的信號源,也是高性能的網(wǎng)絡(luò)分析儀,頻譜儀以及自動(dòng)測試裝備的組成部分

7、。函數(shù)信號發(fā)生器是各種測試和實(shí)驗(yàn)過程中不可缺少的工具,在通信,測量,雷達(dá),控制等領(lǐng)域應(yīng)用十分廣泛。不論是在生產(chǎn),科研和教學(xué)上,函數(shù)信號發(fā)生器都是電子工程師信號仿真實(shí)驗(yàn)的最佳工具。而且,函數(shù)信號發(fā)生器的設(shè)計(jì)方法越來越多,設(shè)計(jì)技術(shù)也越來越先進(jìn),隨著我國經(jīng)濟(jì)和科技的飛速發(fā)展,對相應(yīng)的測試儀器和測試手段也提出了更高的要求,因此開發(fā)研究函數(shù)信號發(fā)生器具有重大的意義。 在如今的社會(huì),電子科技發(fā)展迅猛,傳統(tǒng)的模擬振蕩電路已經(jīng)滿足不了現(xiàn)代電子技術(shù)的需求,由純粹物理器件構(gòu)成的傳統(tǒng)的設(shè)計(jì)方法存在許多弊端,如:體積較大,重量較沉,移動(dòng)不方便,信號失真大,波形較為單一,波形形狀調(diào)節(jié)過于死板,無法滿足用戶對精度,便攜性

8、,穩(wěn)定性等的要求。研究設(shè)計(jì)出具有頻率穩(wěn)定,準(zhǔn)確,波形質(zhì)量好,輸出(shch)頻率范圍寬,便攜性好的函數(shù)信號發(fā)生器具有更好的市場前景。目前市場上的信號發(fā)生器大多由純硬件搭接而成,通常(tngchng)是單函數(shù)發(fā)生器,而且頻率不高,失真大,工作不穩(wěn)定,不易調(diào)試,用集成電路芯片的函數(shù)信號發(fā)生器,可以達(dá)到很高的頻率,而且可以產(chǎn)生多種波形的信號,但是電路復(fù)雜不易調(diào)試,本次設(shè)計(jì)基于VHDL語言,利用QuartusII開發(fā)環(huán)境,完成信號發(fā)生器的編譯與仿真,可以通過四選一數(shù)據(jù)選擇器選擇輸出四種波形中的任意一種,并具有一定的調(diào)頻調(diào)幅功能。1.3 主要研究(設(shè)計(jì)(shj))內(nèi)容,關(guān)鍵問題及解決思路1.3.1 主要

9、研究內(nèi)容 基于VHDL語言設(shè)計(jì)完成出一個(gè)函數(shù)信號發(fā)生器,通過對輸入信號的選擇,則確定輸出鋸齒波,三角波,方波,正弦波四種信號中的任意一種。這種數(shù)據(jù)選擇可以通過四選一數(shù)據(jù)選擇器來實(shí)現(xiàn)。設(shè)計(jì)中加入調(diào)頻調(diào)幅模塊,形成頻率,幅度可控的函數(shù)信號發(fā)生器。波形選擇及頻率,幅度選擇采用產(chǎn)生高低電平的撥碼開關(guān)來控制。本次設(shè)計(jì)通過QuartusII軟件進(jìn)行波形的仿真,從而完成整個(gè)設(shè)計(jì)。本次設(shè)計(jì)的任務(wù): (1)對函數(shù)信號發(fā)生器完成VHDL語言描述; (2)利用EDA開發(fā)系統(tǒng)及QuartusII軟件實(shí)現(xiàn)函數(shù)信號發(fā)生器的設(shè)計(jì); (3)根據(jù)整體電路的工作原理,完成各個(gè)子模塊的設(shè)計(jì)與實(shí)現(xiàn); (4)該函數(shù)信號發(fā)生器能夠產(chǎn)生鋸

10、齒波,三角波,方波,正弦波四種信號; (5)波形之間的轉(zhuǎn)換及波形信號的頻率和幅度可以通過按鍵進(jìn)行調(diào)節(jié)。本次設(shè)計(jì)的函數(shù)信號發(fā)生器系統(tǒng)主要分為輸入部分,頻率調(diào)節(jié)部分,幅度調(diào)節(jié)部分和波形轉(zhuǎn)換部分。系統(tǒng)原理框圖如下圖2所示:波形選擇復(fù)位Reset時(shí)鐘Clk調(diào)頻輸入控制調(diào)幅鋸齒波三角波方 波正弦波圖21.3.2 關(guān)鍵問題 本次設(shè)計(jì)是基于(jy)VHDL的函數(shù)信號發(fā)生器的設(shè)計(jì),因此,波形數(shù)據(jù)產(chǎn)生模塊和波形輸入控制模塊的設(shè)計(jì)及流程圖在本系統(tǒng)中具有相當(dāng)(xingdng)重要的地位,波形數(shù)據(jù)產(chǎn)生模塊和波形輸入控制模塊設(shè)計(jì)的不合理將會(huì)增加開發(fā)的難度和復(fù)雜度,甚至整個(gè)設(shè)計(jì)失敗。所以,如何設(shè)計(jì)出合理的波形數(shù)據(jù)產(chǎn)生模塊

11、和波形輸入控制模塊,是研究本系統(tǒng)的關(guān)鍵。 在波形數(shù)據(jù)產(chǎn)生模塊(m kui)和波形輸入控制模塊的設(shè)計(jì)之前,就需要了解各個(gè)功能模塊之間的關(guān)系,通過各個(gè)模塊之間的關(guān)系來設(shè)計(jì)合理的波形數(shù)據(jù)產(chǎn)生模塊和波形數(shù)據(jù)輸入模塊。我們所需的四種波形信號通過VHDL語言編譯設(shè)計(jì)出來,并設(shè)計(jì)出合理的波形輸入控制模塊。1.3.3 解決思路波形數(shù)據(jù)產(chǎn)生模塊利用VHDL語言編譯設(shè)計(jì)出我們所需要的四種波形,鋸齒波,三角波,方波,正弦波,通過QuaryusII軟件編譯調(diào)試,調(diào)試成功后下載至實(shí)驗(yàn)裝置的芯片上。波形輸入控制模塊由一個(gè)四選一的數(shù)據(jù)選擇器端組成。其設(shè)計(jì)流程圖如下圖3:開始輸入選擇選擇對應(yīng)輸入波形時(shí)鐘信號結(jié)束圖32 系統(tǒng)(

12、xtng)設(shè)計(jì)2.1 設(shè)計(jì)要求(yoqi)與任務(wù)2.1.1本次(bn c)設(shè)計(jì)的要求:通過對輸入信號的選擇,則確定輸出鋸齒波、三角波、方波、正弦波四種信號中的任意一種。設(shè)計(jì)中加入調(diào)頻調(diào)幅模塊,形成幅度、頻率可控的函數(shù)信號發(fā)生器數(shù)據(jù),選擇可以通過 4 選 1 數(shù)據(jù)選擇器來實(shí)現(xiàn)。波形選擇及頻率、幅度選擇采用產(chǎn)生高低電平的撥碼開關(guān)來控制。通過 Altera 公司的 Quartus I 9.1 軟件進(jìn)行波形的仿真,從而完成整個(gè)設(shè)計(jì)。2.1.2本次設(shè)計(jì)的任務(wù): (1)對函數(shù)信號發(fā)生器完成 VHDL 語言描述; (2)利用 EDA 開發(fā)系統(tǒng)及 Quartus I 9.1 軟件實(shí)現(xiàn)函數(shù)信號發(fā)生器的設(shè)計(jì); (

13、3)根據(jù)整體電路的工作原理,完成各個(gè)子模塊的設(shè)計(jì)與實(shí)現(xiàn); (4)該函數(shù)信號發(fā)生器能夠產(chǎn)生鋸齒波、三角波、方波、正弦波四種信號; (5)波形之間的轉(zhuǎn)換及波形信號的頻率和幅度可通過按鍵進(jìn)行調(diào)節(jié)。 2.2 設(shè)計(jì)方案 函數(shù)信號發(fā)生器有多種實(shí)現(xiàn)方法,但我們要選擇一種精度高且易于實(shí)現(xiàn)的方法,以此來提高本次設(shè)計(jì)的實(shí)用性。方案一:用分立元件組成的函數(shù)發(fā)生器。方案二:可以由晶體管、運(yùn)放(yn fn) IC 等通用器件制作,更多的則是用專門的函數(shù)信號發(fā)生器 IC 產(chǎn)生。方案三:通過(tnggu)單片機(jī)控制 D/A,輸出四種波形。方案四:利用專用直接數(shù)字合成 DS 芯片的函數(shù)發(fā)生器,能產(chǎn)生任意(rny)波形并達(dá)到很

14、高的頻率。方案五:用 VHDL 語言編寫程序,調(diào)試成功后下載至實(shí)驗(yàn)裝置的芯片上。此種方案完全可以生成設(shè)計(jì)要求的 4 種波形,而且通過軟件仿真可以直觀的觀測到輸出的波參數(shù),方便調(diào)試和更改波形參數(shù),外圍電路簡單,減少器件損耗,精度高。因此在本次設(shè)計(jì)中我們選擇了 VHDL。本次設(shè)計(jì)基于 VHDL 語言來設(shè)計(jì)制作一個(gè)函數(shù)信號發(fā)生器,利用 Quartus II開發(fā)環(huán)境進(jìn)行編譯仿真,使該信號發(fā)生器可以產(chǎn)生鋸齒波、三角波方波、正弦波形中的任意一種。同時(shí)具有幅度、頻率可調(diào)的功能,其中調(diào)幅分為 1、1/2、1/4、1/8 調(diào)幅,調(diào)頻分為 2、4、8、16 分頻。因此,本次設(shè)計(jì)的函數(shù)信號發(fā)生器系統(tǒng)主要分為輸入部分

15、、頻率調(diào)節(jié)部分、幅度調(diào)節(jié)部分和波形轉(zhuǎn)換部分。2.3 相關(guān)模塊介紹2.3.1 時(shí)鐘脈沖與復(fù)位 時(shí)鐘脈沖(clk):脈沖信號是一個(gè)按一定電壓幅度,一定時(shí)間隔連續(xù)發(fā)出的脈沖信號。此信號在同步電路當(dāng)中,扮演計(jì)時(shí)器的角色,并組成電路的電子組件。只有當(dāng)同步信號到達(dá)時(shí),相關(guān)的觸發(fā)器才按輸入信號改變輸出狀態(tài),因此使得相關(guān)的電子組件得以同步運(yùn)作8,9。復(fù)位(rest):在電路中有時(shí)會(huì)有清空數(shù)據(jù)的需要,此時(shí)復(fù)位鍵就可以使其回到某種狀態(tài)。2.3.2 調(diào)頻與調(diào)幅 調(diào)頻(FM),就是高頻載波的頻率不是一個(gè)常數(shù),是隨調(diào)制信號而在一定范圍內(nèi)變化的調(diào)制方式,其幅值則是一個(gè)常數(shù)。與其對應(yīng)的,調(diào)幅(AM)就是載頻的頻率是不變的,

16、其幅值隨調(diào)制信號而變10。本次設(shè)計(jì)中調(diào)幅分為1、/2、1/4、1/8調(diào)幅,調(diào)頻分為2、4、8、16分頻。2.4 相關(guān)組合對應(yīng)關(guān)系 本次設(shè)計(jì)中 K1鍵則為 rest 復(fù)位鍵,K2、K3鍵則為頻控按鍵,K4、K5鍵則為幅控按鍵。K6、K7鍵則為波形選擇按鍵。各組合鍵的鍵值與對應(yīng)波形關(guān)系如圖4,圖5,圖6所示:圖4 頻控按鍵圖5 幅控按鍵(n jin)圖6波形選擇(xunz)按鍵3 系統(tǒng)(xtng)仿真3.1 相關(guān)工具(gngj)簡介 VHDL:一種硬件(yn jin)描述語言,于 1983 年由美國防部(DOD)發(fā)起創(chuàng)建,由 IE(Instiue of Electrialnd Electronic

17、s Engiers)進(jìn)一步發(fā)展,并在 1987 年發(fā)布“IE 標(biāo)準(zhǔn) 1076”版本。自此之后,各種各樣的新的 VHDL 設(shè)計(jì)環(huán)境相繼推出。VHDL 廣泛應(yīng)用于電子設(shè)計(jì)領(lǐng)域,并逐步取代了原有的非標(biāo)準(zhǔn)硬件描述語言。VHDL 支持的設(shè)計(jì)方法種類多樣,自頂向下(Top to Down)和基于庫(LibrayBased)便是兩種典型的設(shè)計(jì)方法。VHDL 使用的源代碼簡潔明了,不管是簡單的還是復(fù)雜的設(shè)計(jì),VHDL 都可以清楚的描述并完整它。隨機(jī)電路,同步電路抑或是異步電路,在設(shè)計(jì)方面使用 VHDL 則顯得方便多了。VHDL 具有功能強(qiáng)大,設(shè)計(jì)靈活的特點(diǎn)。它可以通過層細(xì)化的方式生成不同的模塊,再把各個(gè)模塊連

18、接成頂層電路,供以后的設(shè)計(jì)使用。 QUARTUS II:基于 Altera 公司的 Quartus II 軟件。Altera 公司的 Quartus II 是一種可編程邏輯的設(shè)計(jì)環(huán)境,因?yàn)槠鋸?qiáng)大的設(shè)計(jì)能力和易于使用的直觀的界面,而受到越來越多的數(shù)字系統(tǒng)設(shè)計(jì)人員的歡迎。Quartus II 經(jīng)過不斷升級,目前最高版本已經(jīng)升到 12.。然而有的版本的Quartus II 有明顯的漏洞,所以無法深入。本次設(shè)計(jì)將使用 Quartus II 9.1 版本。Quartus II 開始界面如圖 7 所示。圖7 QuartusI I 9.1版本3.2 波形(b xn)數(shù)據(jù)產(chǎn)生模塊3.2.1 鋸齒(jch)波

19、鋸齒波的設(shè)計(jì)(shj)(這里只設(shè)計(jì)鋸齒波的遞增波形)是基于 VHDL 語言進(jìn)行編程,主要使用到 if 語句。clk 為上升沿時(shí),計(jì)數(shù)器才加1,否則與前一狀態(tài)保持不變。并且對其進(jìn)行0-25的序列遞增,因此輸出信號周期為時(shí)鐘周期的256倍。設(shè)計(jì)流程圖如圖8所示:圖8 鋸齒波設(shè)計(jì)流程圖按流程圖進(jìn)行設(shè)計(jì),并對此封裝成塊。封裝圖如圖9所示:圖9 鋸齒波封裝圖塊本文設(shè)計(jì)的函數(shù)信號發(fā)生器的頻率即晶振頻率20MHz,其周期則是50ns。本次設(shè)計(jì)中設(shè)置不同的時(shí)鐘周期,以輸出不同頻率的波形,再通過二、四、八、十六分頻來得到更多的波形,便于對輸出波形的仿真及對其周期的清晰觀察。本文設(shè)計(jì)的函數(shù)信號發(fā)生器的幅度由硬件的

20、幅度決定。通過對程序語句的調(diào)試,設(shè)置時(shí)鐘周期為10ns,得到如圖10所示波形圖:圖10 鋸齒波信號(xnho)仿真3.2.2 三角(snjio)波 三角波的設(shè)計(jì)同樣基于 VHDL 語言,主要使用 if 語句,先進(jìn)行0-255的序列遞增,然后再對得到的序列進(jìn)行255-0的序列遞減。而三角波則正好是遞增波形與遞減波形相結(jié)合而得到的。程序中 a 為內(nèi)部節(jié)點(diǎn)信號,同時(shí)也作為(zuwi)遞減信號。當(dāng) a 為0時(shí),為遞增階段,計(jì)數(shù)器加1;a 為1時(shí),為遞減階段,計(jì)數(shù)器減1。設(shè)計(jì)流程圖如圖11所示:圖11 三角(snjio)波設(shè)計(jì)流程圖按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖12所示:圖1

21、2 三角(snjio)波封裝圖塊三角波程序調(diào)試至無語法錯(cuò)誤后,設(shè)時(shí)鐘周期為50ns。仿真得到如圖13所示波形圖:圖13 三角波信號仿真 3.2.3 方波 方波的設(shè)計(jì)也是基于 VHDL 語言,主要采用 if 語句編寫程序,每次當(dāng)計(jì)數(shù)第64次時(shí)便翻轉(zhuǎn)一次,由此產(chǎn)生方波信號,其周期為輸入時(shí)鐘信號周期的128倍。程序語句中把 a 同樣設(shè)置成內(nèi)部節(jié)點(diǎn)信號,計(jì)數(shù)器從0計(jì)到15后一個(gè)循環(huán),立即對 a 取反,則 a 會(huì)在0與1之間變換。設(shè)計(jì)流程圖如圖14,圖15所示:圖14 方波設(shè)計(jì)(shj)流程圖(1)圖15方波設(shè)計(jì)(shj)流程圖(2)按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖16所示:圖

22、16 方波封裝圖塊方波調(diào)試(dio sh)后,設(shè)置時(shí)鐘周期為50ns,得到波形圖如圖17所示:圖17方波信號(xnho)仿真3.2.4 正弦波正弦波的設(shè)計(jì)基于 VHDL 語言,編程語句中涉及到 if 語句與 case 語句。由于 VHDL 語言程序仿真結(jié)果為數(shù)字信號波形,而正弦波是模擬信號波形。因此,實(shí)驗(yàn)中采取對信號進(jìn)行等間距采樣(ci yn),來等效正弦信號的波形。程序的采樣點(diǎn)為64個(gè),等效為近似的正弦波形。設(shè)計(jì)流程圖如圖18所示: 圖18 正弦波設(shè)計(jì)(shj)流程圖按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖19所示:圖19 正弦波封裝圖塊對正弦波程序進(jìn)行調(diào)試設(shè)置(shzh)

23、時(shí)鐘頻率為30ns得到如圖20所示波形圖:圖20 正弦波信號(xnho)仿真 程序根據(jù)正弦波采樣取點(diǎn),得到了以上仿真波形。因?yàn)檎也ㄐ畏抡嬷械娜↑c(diǎn)是按照(nzho)正弦函數(shù)圖取得,無法找到準(zhǔn)確的規(guī)律,也就不能用循環(huán)來完成,相對于前面鋸齒波、三角波及方波等波形的設(shè)計(jì)較難一些。因此,程序中還會(huì)運(yùn)用到 case 語句,通過查表的方法來實(shí)現(xiàn)輸出正弦波。4 調(diào)控(dio kn)模塊4.1 波形輸入控制模塊波形輸入控制模塊由一個(gè)4選1的數(shù)據(jù)選擇器端組成。設(shè)計(jì)流程圖如圖21所示:圖21 波形輸入控制設(shè)計(jì)流程圖按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖22所示:圖22 波形(b xn)輸入控制

24、封裝圖塊波形輸入控制(kngzh)模塊經(jīng)編譯無誤后。得如圖23所示仿真圖: 圖23 波形輸入控制模塊波形仿真 當(dāng) a1010時(shí),選擇 y2。4.2 波形輸出控制模塊 在本設(shè)計(jì)中采用使用軟件編程生成模塊的方式實(shí)現(xiàn)數(shù)據(jù)四選一的功能。程序中,為每一種波形分配一個(gè)通道,并為之賦予唯一的代碼,當(dāng)在 s0,1端輸入不同的代碼時(shí),被選中的通道打開,響應(yīng)的波形發(fā)生模塊產(chǎn)生波形。設(shè)計(jì)流程圖如圖24所示:圖24 四選一數(shù)據(jù)(shj)選擇器設(shè)計(jì)流程圖按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖25所示:圖25 四選一數(shù)據(jù)(shj)選擇器封裝圖塊波形輸出控制模塊經(jīng)編譯無誤后得到如圖26所示仿真圖:圖26

25、 波形輸出控制模塊波形圖當(dāng) s01=0時(shí),選擇 d0通道。4.3 頻率控制模塊 頻率控制單元中包括一個(gè)分頻模塊和一個(gè)調(diào)頻模塊,調(diào)頻模塊為四選一數(shù)據(jù)選擇器,分頻模塊將輸入的時(shí)鐘信號進(jìn)行 2、4 8、16 分頻。 設(shè)計(jì)流程圖如圖27所示:圖27 頻率(pnl)控制流程圖按流程圖進(jìn)行(jnxng)設(shè)計(jì),并對此封裝成塊。封裝圖如圖28,圖29所示: 圖28 分頻(fn pn)封裝圖塊 圖 29 調(diào)頻封裝圖塊頻率控制模塊經(jīng)編譯無誤后,得到如圖30所示仿真圖: 圖30 分頻模塊波形仿真4.4 幅度控制模塊幅度控制模塊中含有一個(gè)除法模塊(這里稱作(chn zu) tiaofu 模塊),它將輸入的信號進(jìn)行1、

26、1/2、1/4、1/8調(diào)幅;同時(shí)包含一個(gè)選擇模塊(這里稱作 scope 模塊),是一個(gè)四選一數(shù)據(jù)選擇器。設(shè)計(jì)(shj)流程圖如圖31所示:圖31 幅度(fd)控制流程圖按流程圖進(jìn)行設(shè)計(jì),并對此封裝成塊。封裝圖如圖32,圖33所示: 圖32 調(diào)幅封裝圖塊 圖33 選擇封裝圖塊幅度控制模塊經(jīng)編譯無誤后,得到如圖34所示仿真圖:圖34 幅度控制模塊波形仿真當(dāng) scope_mode1scope_mode0=1時(shí),進(jìn)行1/8調(diào)幅。5 結(jié)果(ji gu)分析將上述各個(gè)(gg)模塊封裝成為模塊文件,供頂層電路調(diào)用。可以得到:如圖35所示系統(tǒng)(xtng)頂層電路圖:圖35 系統(tǒng)頂層電路圖本次設(shè)計(jì)共可產(chǎn)生波形4

27、種,調(diào)幅方法4種,調(diào)頻方法4種,因此共可仿真出:4* 4=64個(gè)圖。 這里每種波形只截取4種仿真圖:1.圖36 為鋸齒波信號仿真圖(設(shè)置時(shí)鐘周期為4ns) (a) 鋸齒波信號 2分頻 不調(diào)幅 (b) 鋸齒波信號 2分頻 1/2調(diào)幅 (c) 鋸齒(jch)波信號 不調(diào)幅 8分頻 (d) 鋸齒(jch)波信號 不調(diào)幅 16分頻 2.圖37 為三角波信號仿真(fn zhn)圖(設(shè)置時(shí)鐘周期為4ns) (a) 三角波信號 二分頻 不調(diào)幅 (b) 三角波信號 二分頻 1/2調(diào)幅(c) 三角波信號 不調(diào)幅 8分頻 (d) 三角波信號 不調(diào)幅 16分頻3.圖38為方波信號(xnho)仿真圖(設(shè)置時(shí)鐘周期為8

28、0ns)(a) 方波信號(xnho) 二分頻 不調(diào)幅 (b) 方波信號 二分(r fn)頻 1/2調(diào)幅(c) 方波信號 不調(diào)幅 8分頻 (d) 方波信號 不調(diào)幅 16分頻4.圖39 為正弦波信號仿真圖(設(shè)置周期為10ns)(a) 正弦波信號 二分(r fn)頻 不調(diào)幅 (b) 正弦波信號(xnho) 二分頻 1/2調(diào)幅(c) 正弦波信號(xnho) 不調(diào)幅 8分頻 (d) 正弦波信號 不調(diào)幅 16分頻為清楚了解波形的調(diào)頻調(diào)幅情況,特在這里貼出方波信號的三種仿真圖,如圖40 圖41 圖42所示圖40 方波信號 2分頻 1/8調(diào)幅仿真圖圖41 方波信號 4分頻 1/8調(diào)幅(dio f)仿真圖圖42

29、 方波信號(xnho) 4分頻 不調(diào)幅仿真圖6 結(jié) 論 本次設(shè)計(jì)是基于 VHDL 語言的函數(shù)信號發(fā)生器的設(shè)計(jì),通過 Quartus I 軟件進(jìn)行編譯仿真,使函數(shù)信號發(fā)生器能夠產(chǎn)生鋸齒波、三角波、方波、正弦波四種(s zhn)波形?;?VHDL 語言先是描述底層各個(gè)獨(dú)立的模塊,然后把各個(gè)封裝圖塊調(diào)用出,設(shè)計(jì)成頂層電路圖。然后通過4選1數(shù)據(jù)選擇器的設(shè)計(jì),實(shí)現(xiàn)對需要波形的選擇。設(shè)計(jì)分各個(gè)模塊,在對一個(gè)模塊進(jìn)行編寫描述時(shí)就立即對其進(jìn)行編譯并修改,以免這個(gè)模塊在連接總電路時(shí)存在調(diào)試?yán)щy的情況。并且,VHDL 語言也不得出現(xiàn)語法使用錯(cuò)誤,否則將影響后期設(shè)計(jì)的完成,影響設(shè)計(jì)結(jié)果。本次設(shè)計(jì)按照設(shè)計(jì)任務(wù)的要求

30、總算是設(shè)計(jì)實(shí)現(xiàn)了功能,但是期間也碰到過遺漏的問題。在設(shè)計(jì)過程當(dāng)中,遇到了軟件操作不熟練,程序編寫不規(guī)范等諸多問題,通過對問題的總結(jié)分析得出,應(yīng)用軟件的主要功能必須熟練操作,才能提高工作效率,需要規(guī)范操作的地方必須嚴(yán)格按照使用說明操作,避免由于軟件使用不當(dāng)造成的錯(cuò)誤產(chǎn)生。程序的編寫,包括格式、語句、用法等都需要嚴(yán)格遵守要求,對各個(gè)模塊、端口、新建的工程名、實(shí)體名以及各個(gè)信號變量的命名都應(yīng)當(dāng)反映實(shí)際意義,方便再次檢查時(shí)不會(huì)混淆。本次設(shè)計(jì)過程中,我收獲頗多。通過本次設(shè)計(jì),我不但對理論知識有了更深層次的了解,而且也找出了自己很多需要改進(jìn)的地方。我會(huì)繼續(xù)努力,爭取在此設(shè)計(jì)上會(huì)有新的成果與突破。致 謝 感

31、謝我的論文指導(dǎo)老師陳希湘老師對我在學(xué)術(shù)上的指導(dǎo)和幫助,使我不僅學(xué)到了知識,而且學(xué)到了做人的準(zhǔn)則和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作風(fēng),深地感染和激勵(lì)著我。正是由于老師同學(xué)的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。在此,我表示衷心的感謝和崇高的敬意!附 錄1 鋸齒(jch)波libray ie;use ie.std_logic_164.al;use ie.std_logic_unsigned.al;entiy juchisport (clk,rest:in std_logic;q:out sd_logic_vector(7 downto 0)

32、;end entiy juchi;architecure bhav of juchisbeginproces(clk,rest)varible tmp: std_logic_vector(7 downto 0);beginif rest=1 thentmp:=00000000;elsetmp:=tmp+1;end if;end if;q=tmp;end proces;end behav;2 三角(snjio)波libray ie;use ie.std_logic_164.al;use ie.std_logic_unsigned.al;entiy sanjiao isport(clk,rest:

33、in std_logic;q: out sd_logic_vector(7 downto 0);end sanjiao;architecure bhav of sanjiao isbeginproces(clk,rest)varible tmp : std_logic_vector(7 downto 0);varible a : std_logic;beginif(rest=1) thentmp:=00000000;elsif clkevnt and clk=1 thenif a=0 thenif tmp=11111110 thentmp:=11111111;a:=1;elsetmp:=tmp

34、+1;end if;elseif tmp=0001thentmp:=000;a:=0;elstmp:=tmp-1;end if;end if;end if;q=tmp;end proces;end behav;3 方波libray ie;use ie.std_logic_164.al;use ie.std_logic_arith.al;use ie.std_logic_unsigned.al;entiy fangbo isport(clk,rest : in std_logic;q : out sd_logic_vector(7 downto 0);end fangbo;architecure

35、 bhav ofangbo issignal: std_logic;beginproces(clk,rest)varible tmp: std_logic_vector(3 downto 0);beginif (rest=1) thena=0;elsif clkevnt and clk=1 thenif (tmp=1111)thentmp:=0000;elstmp:=tmp+1;end if;if (tmp=1000)thena=1;elsa=0;end if;end if;end proces;proces(clk,a)beginif clkevnt and clk=1 thif a=1th

36、enq=11111111;elsq=00000000;end if;end if;end proces;end behav;4 正弦波libray ie;use ie.std_logic_164.al;use ie.std_logic_unsigned.al;entiy zhengxian isport(clk,rest:in std_logic;d_out: out inegrange 0 to 25);end zhengxian ;architecure bhav of zhengxian isbeginproces(rest,clk)varible tmp: integrange 0 t

37、o 63;beginif rest=1thend_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_outd_

38、outd_outd_outd_outd_outd_outd_outd_outd_outd_outnul;end case;end if;end proces;end behav;5 波形(b xn)輸入控制模塊libray ie;use ie.std_logic_164.al;use ie.std_logic_unsigned.al;entiy xuanze isport(a0,1s:in std_logic;y0,1y2,3:out sd_logic);end xuanze;architecure bhav of xuanze issignal:std_logic_vector(1 down

39、to 0);signal cout:sd_logic;signal q:std_logic_vector(2 downto 0);begina=a1&a0;proces()varible y:std_logic_vector(7 downto 0);beginif(s=1)thenq=q+1;end if;if q=1 thencout=1;q=0;elscouty0y1y2y3nul;end case;end proces;end behav;6 4 選 1 數(shù)據(jù)(shj)選擇器libray ie;use ie.std_logic_164.al;entiy mux41 isport(s0,1:in std_logic;d0,1d2,3:in std_logic_vector(7 downto 0);q:out sd_logic_vector(7 downto 0);end mux41;architecure bhav of mux41 issignal se:td_logi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論