版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)說(shuō)明書1 引言簡(jiǎn)易多功能信號(hào)發(fā)生器是信號(hào)發(fā)生器的一種,在生產(chǎn)實(shí)踐和科研領(lǐng)域中有著廣泛的應(yīng)用。在研制、生產(chǎn)、測(cè)試和維修各種電子元件、部件以及整機(jī)設(shè)備時(shí),都需要有信號(hào)源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號(hào)并加到被測(cè)器件或設(shè)備上,用其他儀器觀察、測(cè)量被測(cè)儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號(hào),如正弦波、三角波、方波和鋸齒波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。在本設(shè)計(jì)中它能夠產(chǎn)生多種波形,如正弦波,三角波,方波和鋸齒波等,并能實(shí)現(xiàn)對(duì)各種波頻率和幅度的改變。正因?yàn)槠湓谏钪袘?yīng)用的重要性,人們它做
2、了大量的研究,總結(jié)出了許多實(shí)現(xiàn)方式??梢曰贔PGA 、VHDL、單片機(jī)、DOS技能、數(shù)字電路等多種方法實(shí)現(xiàn)。本設(shè)計(jì)是采用VHDL來(lái)實(shí)現(xiàn)的簡(jiǎn)易多功能信號(hào)發(fā)生器。它能產(chǎn)生正弦波,三角波,方波和鋸齒波。且對(duì)各種波形的要求如下:(1)根據(jù)按鍵選擇不同的波形(實(shí)現(xiàn)正弦波,三角波,方波和鋸齒波);(2)各波形的頻率范圍為100Hz-20KHz;(3)各波形頻率可調(diào)(通過(guò)按鍵控制頻率的變化,步進(jìn)值為500Hz);(4)用LED數(shù)碼管實(shí)時(shí)顯示輸出波形的頻率值;(5)用按鍵控制實(shí)現(xiàn)輸出信號(hào)的幅度調(diào)節(jié)(幅度調(diào)節(jié)為2.5V和5V)。2 EDA技術(shù)介紹2.1 EDA介紹EDA是電子設(shè)計(jì)自動(dòng)化(Electronic
3、Design Automation)縮寫。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語(yǔ)言HDL( Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。 硬件描述語(yǔ)言HDL是相對(duì)于一般的計(jì)算機(jī)軟件語(yǔ)言,如:C、PASCAL而言的。HDL語(yǔ)言使用與設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用HDL程序來(lái)描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并
4、實(shí)現(xiàn)相應(yīng)邏輯功能的的門級(jí)或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來(lái)說(shuō),比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL1。幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實(shí)驗(yàn)都可以在計(jì)算機(jī)上利用EDA (Electronic Design Automatic電子設(shè)計(jì)自動(dòng)化)軟件進(jìn)行設(shè)計(jì)、仿真,只有極少量外部配件不能在計(jì)算機(jī)上進(jìn)行仿真。因此,在實(shí)驗(yàn)前期階段,即實(shí)驗(yàn)預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計(jì)、仿真實(shí)驗(yàn)課題,進(jìn)行虛擬實(shí)驗(yàn)。通過(guò)虛擬實(shí)驗(yàn)使實(shí)驗(yàn)者在進(jìn)入真實(shí)實(shí)驗(yàn)前就能對(duì)預(yù)做的實(shí)驗(yàn)有相當(dāng)?shù)牧私?,甚至可以預(yù)測(cè)到實(shí)驗(yàn)的結(jié)果。這樣在實(shí)際做實(shí)驗(yàn)時(shí),可以把許多
5、設(shè)計(jì)型實(shí)驗(yàn)的難度降低,同時(shí)能有更多的時(shí)間讓實(shí)驗(yàn)者動(dòng)手做實(shí)驗(yàn),研究問(wèn)題,提高實(shí)驗(yàn)效率。當(dāng)前數(shù)字電路設(shè)計(jì)已由計(jì)算機(jī)輔助設(shè)計(jì)進(jìn)入到以計(jì)算機(jī)為主的設(shè)計(jì)時(shí)代。2.2 VHDL基本介紹VHDL是一種主要的硬件描述語(yǔ)言之一,硬件描述語(yǔ)言(HDL)是各種描述方法中最能體現(xiàn)EDA優(yōu)越性的描述方法。所謂硬件描述語(yǔ)言,實(shí)際上就是一種描述工具,其描述的對(duì)象就是待設(shè)計(jì)電路系統(tǒng)的邏輯功能,實(shí)現(xiàn)該功能的算法,選用的電路結(jié)構(gòu)以及其他各種約束條件等。通常要求HDL既能描述系統(tǒng)的行為,又能描述系統(tǒng)的結(jié)構(gòu)。VHDL語(yǔ)言是美國(guó)國(guó)防部與20世紀(jì)80年代后期,出于軍事工業(yè)需要開發(fā)的。1984年VHDL被IEEE確定為標(biāo)準(zhǔn)的硬件描述語(yǔ)言。
6、1993年IEEE對(duì)VHDL進(jìn)行了修正,增加了部分新的VHDL命令與屬性,增強(qiáng)了對(duì)系統(tǒng)的描述能力。VHDL涵蓋面廣,抽象描述強(qiáng),支持硬件的設(shè)計(jì),驗(yàn)證,綜合和測(cè)試。VHDL能在多級(jí)別上對(duì)同一邏輯功能進(jìn)行描述。VHDL的基本結(jié)構(gòu)包含一個(gè)實(shí)體和一個(gè)結(jié)構(gòu)體,而完整的VHDL結(jié)構(gòu)還包括配置,程序包與庫(kù)。各種硬件描述語(yǔ)言中,VHDL的描述能力最強(qiáng),因此運(yùn)用VHDL 進(jìn)行復(fù)雜電路設(shè)計(jì)時(shí),往往采用自頂向下結(jié)構(gòu)化的設(shè)計(jì)方法。2.3 設(shè)計(jì)工具簡(jiǎn)介Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Descripti
7、on Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)
8、計(jì)于一體,是一種綜合性的開發(fā)平臺(tái)。Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對(duì)Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡(jiǎn)便的使用方法。Altera Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能
9、力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。 Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添 了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。3 設(shè)計(jì)流程3.1設(shè)計(jì)思想及原理圖基于VHDL語(yǔ)言設(shè)計(jì)一個(gè)簡(jiǎn)易多功能信號(hào)發(fā)生器,通過(guò)選入輸入信號(hào),可以輸出正
10、弦波、三角波、方波和鋸齒波四種波形信號(hào)。信號(hào)發(fā)生器的控制模塊可以用數(shù)據(jù)選擇器實(shí)現(xiàn),四種信號(hào)的信號(hào)選擇可以用4選1數(shù)據(jù)選擇器實(shí)現(xiàn)。同時(shí)本設(shè)計(jì)使用原理圖的方法,對(duì)正弦波、三角波、方波和鋸齒波和4選1數(shù)據(jù)選擇器元件進(jìn)行調(diào)用。簡(jiǎn)易多功能信號(hào)發(fā)生器的原理圖如下:圖1 信號(hào)發(fā)生器原理圖本設(shè)計(jì)的主題思想是各個(gè)模塊分別產(chǎn)生相應(yīng)的波形,再通過(guò)一個(gè)4選1數(shù)據(jù)選擇器輸出相應(yīng)的波形。通過(guò)其他按鍵控制波形的頻率和幅度的變化。3.2 正弦波、三角波、方波和鋸齒波的實(shí)現(xiàn)3.2.1正弦波設(shè)計(jì)(1) 正弦波代碼設(shè)計(jì)正弦波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)
11、數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示正弦波形。產(chǎn)生正弦波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity sin2 isport(clock,sel:in std_logic;dout4:out integer range 0 to 255);end sin2;architecture bhv of sin2 istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,254,252,249,245,239
12、,233,225,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1
13、9; then if address>63 then address<=0; else if sel='1' then address<=address+1; dout4<=(mem(address)/2; else address<=address+1; dout4<=mem(address); end if; end if; end if;end process;end bhv;(2) 正弦波的仿真在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。圖2 正弦波時(shí)序仿真圖由上圖仿真圖可知時(shí)鐘信號(hào)clk每出現(xiàn)
14、一個(gè)上升沿,dout就對(duì)外送出一個(gè)正弦波采樣數(shù)據(jù),sel實(shí)現(xiàn)了正弦波幅值的調(diào)節(jié),sel=0時(shí)dout輸出正弦波采樣數(shù)據(jù)值,sel=1時(shí)dout輸出正弦波采樣數(shù)據(jù)值右移一位的數(shù)據(jù)值。上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示正弦波形了。(3)正弦波模塊其中:clk為正弦波時(shí)鐘信號(hào)輸入端,它接收調(diào)頻模塊發(fā)過(guò)來(lái)時(shí)鐘信號(hào);sel為輸出正弦波信號(hào)幅度調(diào)節(jié)輸入端,sel=1時(shí)幅度為2.5V,sel=0時(shí)幅度為5V;dout為正弦波信號(hào)輸出端。圖3 正弦波模塊3.2.2 三角波設(shè)計(jì)(1)三角波代碼設(shè)計(jì)三角波的產(chǎn)生思想是將
15、對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示三角波形。產(chǎn)生三角波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity sanjiao isport(clock,sel:in std_logic;dout3:out integer range 0 to 255);end sanjiao;architecture bhv of sanjiao istype mem_type is array(0 to 63) of integer range
16、0 to 255;constant mem:mem_type:=(0,8,16,24,32,40,48,56, 64,72,80,88,96,104,112,120, 128,136,144,152,160,168,176,184, 192,200,208,216,224,232,240,248, 255,248,240,232,224,216,208,200, 192,184,176,168,160,152,144,136, 128,120,112,104,96,88,80,72, 64,56,48,40,32,24,16,8);signal address:integer range 0
17、to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1' then address<=address+1; dout3<=(mem(address)/2; else address<=address+1; dout3<=mem(address); end if; end if; end if;end process;end bhv;(2)三角波仿真在Q
18、uartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形圖4 三角波仿真圖仿真圖由上圖仿真圖可知時(shí)鐘信號(hào)clk每出現(xiàn)一個(gè)上升沿,dout就對(duì)外送出一個(gè)三角波采樣數(shù)據(jù),sel實(shí)現(xiàn)了三角波幅值的調(diào)節(jié),sel=0時(shí)dout輸出三角波采樣數(shù)據(jù)值,sel=1時(shí)dout輸出三角波采樣數(shù)據(jù)值右移一位的數(shù)據(jù)值。(注明:由于存在器件延時(shí),上升沿與數(shù)據(jù)變換略有滯后)上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。(3)三角波模塊其中:clk為三角波時(shí)鐘信號(hào)輸入端,它接收調(diào)頻模塊發(fā)過(guò)來(lái)時(shí)鐘信;sel為
19、輸出正弦波信號(hào)幅度調(diào)節(jié)輸入端,sel=1時(shí)幅度為2.5V,sel=0時(shí)幅度為5V;dout為三角波信號(hào)輸出端。圖5 三角波模塊仿真圖3.2.3方波設(shè)計(jì)(1) 方波代碼的設(shè)計(jì)方波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示方波波形。產(chǎn)生方波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity fangbo isport(clock,sel:in std_logic;dout1:out integer range 0 to 255
20、);end fangbo;architecture bhv of fangbo istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
21、0,0,0,0,0,0,0,0);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1' then address<=address+1; dout1<=(mem(address)/2; else address<=address+1; dout1<=mem(address); end i
22、f; end if; end if; end process;end bhv;(2)方波的仿真在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。圖 6方波仿真圖由上圖仿真圖可知時(shí)鐘信號(hào)clk每出現(xiàn)一個(gè)上升沿,dout就對(duì)外送出一個(gè)方波采樣數(shù)據(jù),sel實(shí)現(xiàn)了方波幅值的調(diào)節(jié),sel=0時(shí)dout輸出方波采樣數(shù)據(jù)值,sel=1時(shí)dout輸出方波采樣數(shù)據(jù)值右移一位的數(shù)據(jù)值。(注明:由于存在器件延時(shí),上升沿與數(shù)據(jù)變換略有滯后)上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。(3
23、方波模塊其中:clk為方波時(shí)鐘信號(hào)輸入端,它接收調(diào)頻模塊發(fā)過(guò)來(lái)時(shí)鐘信;sel為輸出方波信號(hào)幅度調(diào)節(jié)輸入端,sel=1時(shí)幅度為2.5V,sel=0時(shí)幅度為5V;dout為方波信號(hào)輸出端。 圖7方波模塊3.2.4鋸齒波設(shè)計(jì)(1)鋸齒波代碼設(shè)計(jì)鋸齒波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示鋸齒波形。產(chǎn)生鋸齒波的VHDL代碼如下:library ieee;use ieee.std_logic_1164.all;entity juchi isport(clock,sel:in std_logi
24、c;dout2:out integer range 0 to 255);end juchi;architecture bhv of juchi istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,4,8,12,16,20,24,28, 32,36,40,44,48,52,56,60, 64,68,72,76,80,84,88,92, 96,100,104,108,112,116,120,124, 128,132,136,140,144,148,152,156, 160,164
25、,168,172,176,180,184,188, 192,198,200,204,208,212,216,220, 224,228,234,238,242,246,250,255);signal address:integer range 0 to 63;begin process(clock) begin if clock'event and clock='1' then if address>63 then address<=0; else if sel='1' then address<=address+1; dout2<
26、=(mem(address)/2; else address<=address+1; dout2<=mem(address); end if; end if; end if;在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。圖8 鋸齒波未分頻時(shí)仿真圖仿真圖由上圖仿真圖可知時(shí)鐘信號(hào)clk每出現(xiàn)一個(gè)上升沿,dout就對(duì)外送出一個(gè)鋸齒波采樣數(shù)據(jù),sel實(shí)現(xiàn)了鋸齒波幅值的調(diào)節(jié),sel=0時(shí)dout輸出鋸齒波采樣數(shù)據(jù)值,sel=1時(shí)dout輸出鋸齒波采樣數(shù)據(jù)值右移一位的數(shù)據(jù)值。(注明:由于存在器件延時(shí),上升沿與數(shù)據(jù)變換略有滯后)上圖中的輸出制式模擬信號(hào)各采樣
27、點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示鋸齒波波形了。(3)鋸齒波模塊其中:clk為鋸齒波時(shí)鐘信號(hào)輸入端,它接收調(diào)頻模塊發(fā)過(guò)來(lái)時(shí)鐘信;sel為輸出鋸齒波信號(hào)幅度調(diào)節(jié)輸入端,sel=1時(shí)幅度為2.5V,sel=0時(shí)幅度為5V;dout為鋸齒波信號(hào)輸出端。圖9 鋸齒波模塊仿真圖3.3各個(gè)控制單元的實(shí)現(xiàn)3.3.1頻率控制單元頻率控制單元包括按鍵識(shí)別模塊、分頻數(shù)產(chǎn)生模塊和分頻模塊。其器件圖分別如圖10、圖11和圖12所示。在按鍵識(shí)別模塊中共有4個(gè)輸入端。其中:一個(gè)時(shí)鐘輸入端CLK位12MHz,一個(gè)頻率調(diào)節(jié)輸入端btn1.0,一個(gè)使系統(tǒng)輸出波形
28、的頻率為最大的控制輸入端highh一個(gè)使系統(tǒng)輸出波形的頻率為最小的控制輸入端loww。本課程設(shè)計(jì)要求輸出波形的頻率在每按一次相應(yīng)的按鍵時(shí),就增加或減少500Hz。而實(shí)驗(yàn)室的硬件設(shè)備上的按鍵都是撥碼是按鍵,即按鍵按下后一直有效,這顯然不能滿足要求。于是按鍵輸入識(shí)別模塊中用如下的代碼實(shí)現(xiàn)按鍵沒(méi)按一次都能有效的功能。if button0='0' and button1='1' then if cnt=40 then cnt<=0; else cnt<=cnt+1; end if; elsif button0='1' and button1=
29、'0' then if cnt=40 then cnt<=0; else cnt<=cnt+1; end if;以上代碼實(shí)現(xiàn)的只是頻率增長(zhǎng)的功能,同理就可以實(shí)現(xiàn)頻率減小的功能。圖11分頻數(shù)產(chǎn)生模塊圖12分頻模塊圖10按鍵識(shí)別模塊當(dāng)按下按鍵識(shí)別模塊中分別使整個(gè)系統(tǒng)輸出最大和最小頻率的波形的控制輸入端時(shí) ,在按相應(yīng)的使頻率增減的按鍵則實(shí)現(xiàn)頻率從最大或最小開始增加或減少的功能。在分頻數(shù)產(chǎn)生模塊中有一個(gè)輸入端接收從按鍵識(shí)別模塊中輸出地對(duì)頻率的控制信號(hào)的輸入端,一個(gè)分頻數(shù)輸出端,五個(gè)相應(yīng)的接數(shù)碼管以顯示系統(tǒng)輸出信號(hào)的頻率的輸出端。當(dāng)分頻數(shù)產(chǎn)生模塊的輸入端接收從按鍵識(shí)別模塊中輸
30、出地對(duì)頻率的控制信號(hào)后,便產(chǎn)生相應(yīng)的分頻數(shù)送到輸出端,同時(shí)將與分頻數(shù)相應(yīng)頻率送到與數(shù)碼管相接的輸出端。其VHDL代碼見本課程設(shè)計(jì)的附錄。在分頻模塊中有一個(gè)系統(tǒng)時(shí)鐘輸入端,一個(gè)分頻數(shù)輸入端和一個(gè)頻率輸出端。分頻器的功能主要是根據(jù)分頻數(shù)產(chǎn)生相應(yīng)的輸出頻率。3.3.2波形輸出控制單元波形輸出控制單元中只包括一個(gè)數(shù)據(jù)選擇器模塊。其器件圖如圖13所示圖13 數(shù)據(jù)選擇器模塊在該模塊為4選1的數(shù)據(jù)選擇器,包括4個(gè)數(shù)據(jù)輸入端,一個(gè)數(shù)據(jù)選擇輸入端和一個(gè)數(shù)據(jù)輸出端。其中:boxing1.0為數(shù)據(jù)選擇端(00為方波,01為鋸齒波,10為三角波,11為正弦波);dout17.0為正弦波輸入端;dout27.0為方波輸
31、入端;dout37.0為三角波輸入端;dout47.0為鋸齒波輸入端;wave7.0為所選波形輸出端,接至D/A轉(zhuǎn)換器。3.4硬件測(cè)試本課程設(shè)計(jì)是簡(jiǎn)易多功能信號(hào)發(fā)生器,其總共有6個(gè)輸入端和6個(gè)輸出端。具體的輸入輸出端可見圖1中所示。根據(jù)引腳所鎖定圖將系統(tǒng)中的各個(gè)輸入輸出端口鎖定到合適的引腳上。需要注意的是本系統(tǒng)用到了數(shù)碼管顯示,所以應(yīng)該選定實(shí)驗(yàn)箱的模式5。另外,本實(shí)驗(yàn)輸入的時(shí)鐘頻率是12MHz。當(dāng)引腳鎖定完畢后,將程序下載到試驗(yàn)箱中,連好示波器,在輸入端輸入相應(yīng)的值即可得到相應(yīng)的輸出波形。具體的硬件仿真波形如下:圖14頂層文件的仿真在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx1.
32、0輸入“00”時(shí)得到的是方波波形,如圖15所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。圖15 方波波形在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx1.0輸入“01”時(shí)得到的是鋸齒波波形,如圖16所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。圖16 鋸齒波波形在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx1.0輸入“10”時(shí)得到的是三角波波形,如圖17所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。圖17 三角波波形在clk端輸
33、入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx1.0輸入“11”時(shí)得到的是正弦波波形,如圖18所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。圖18 正弦波波形4 結(jié)論四 總結(jié)在課程設(shè)計(jì)的過(guò)程中遇到許多的問(wèn)題,才發(fā)現(xiàn)自己在平時(shí)的學(xué)習(xí)中是多么的不足。在這些程序性質(zhì)課程的學(xué)習(xí)中,不能僅僅的停留在課本,要多看看相關(guān)方面的書籍,在網(wǎng)上搜搜當(dāng)前最前沿的東西。遇到的問(wèn)題多謝有同學(xué)和老師的相關(guān)指導(dǎo),和同學(xué)之間要多相互討論,有不會(huì)的要多想老師請(qǐng)教!要學(xué)以致用!EDA技術(shù)是當(dāng)前數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域比較火熱的一種工具,他可以大大縮短設(shè)計(jì)需要的時(shí)間,降低成本的同時(shí)也提高了系
34、統(tǒng)的穩(wěn)定性。使用VHDL語(yǔ)言描述硬件系統(tǒng)使得EDA技術(shù)有了更為廣闊的空間。本設(shè)計(jì)使用了基于Altera公司的開發(fā)軟件工具Quartus II,本系統(tǒng)即實(shí)現(xiàn)了可以輸出三種波形的簡(jiǎn)易多功能波形發(fā)生器,仿真結(jié)果證明,該設(shè)計(jì)正確有效,可以作為制作實(shí)物的理論依據(jù)。 對(duì)于EDA技Quartus II進(jìn)行了系統(tǒng)的設(shè)計(jì)和仿真。簡(jiǎn)易波形發(fā)生器在生活中各個(gè)場(chǎng)合都有著大量的使用術(shù)我一直都有著濃厚的興趣,借做課設(shè)的機(jī)會(huì),認(rèn)真的研究了一下這么科學(xué)。發(fā)現(xiàn)EDA技術(shù)比我們想象中的要有很大的難度。里面有很多的思想來(lái)源于信息電子技術(shù)輯算法的設(shè)計(jì),需要有很強(qiáng)的C語(yǔ)言編程功底。學(xué)習(xí)一門知識(shí)要從最基本的體系構(gòu)架開始,倘若一開始就從頂
35、層設(shè)計(jì)入手,就會(huì)造成很多基本原理、基本概念上的偏差,甚里面的基本知識(shí),包括電路的概念以及寄存器傳送的基本知識(shí)。VHDL語(yǔ)言與C語(yǔ)言有很大的不同,但是C語(yǔ)言的編程思想也可以移植到VHDL語(yǔ)言當(dāng)中來(lái),尤其是一些邏至?xí)涎釉O(shè)計(jì)的時(shí)間,事倍功半。雖然可設(shè)完成了,但我意識(shí)到,我對(duì)于這門學(xué)科只是停留在入門的階段,想要有更大的發(fā)展,要深入的研究,還要更多的努力和實(shí)踐。參考文獻(xiàn)1.Voknei A.Pedroni.VHDL數(shù)字電路設(shè)計(jì)教程.電子工業(yè)出版社,2008.52.潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第二版).科學(xué)出版社,2005.23.焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.4附錄方波libr
36、ary ieee;use ieee.std_logic_1164.all;entity fangbo isport(clock,sel:in std_logic;dout1:out integer range 0 to 255);end fangbo;architecture bhv of fangbo istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
37、,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);signal address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenad
38、dress<=address+1;dout1<=(mem(address)/2;elseaddress<=address+1;dout1<=mem(address);end if;end if;end if;end process;end bhv;正弦波library ieee;use ieee.std_logic_1164.all;entity sin2 isport(clock,sel:in std_logic;dout4:out integer range 0 to 255);end sin2;architecture bhv of sin2 istype mem
39、_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(255,254,252,249,245,239,233,225,217,207,197,186,174,162,150,137,124,112,99,87,75,64,53,43,34,26,19,13,8,4,1,0,0,1,4,8,13,19,26,34,43,53,64,75,87,99,112,124,137,150,162,174,186,197,207,217,225,233,239,245,249,252,254,255);signa
40、l address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenaddress<=address+1;dout4<=(mem(address)/2;elseaddress<=address+1;dout4<=mem(address);end if;end if;end if;end process;end bhv
41、;鋸齒波library ieee;use ieee.std_logic_1164.all;entity juchi isport(clock,sel:in std_logic;dout2:out integer range 0 to 255);end juchi;architecture bhv of juchi istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,8
42、0,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,198,200,204,208,212,216,220,224,228,234,238,242,246,250,255);signal address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenad
43、dress<=0;elseif sel='1' thenaddress<=address+1;dout2<=(mem(address)/2;elseaddress<=address+1;dout2<=mem(address);end if;end if;end if;end process;end bhv;三角波library ieee;use ieee.std_logic_1164.all;entity sanjiao isport(clock,sel:in std_logic;dout3:out integer range 0 to 255);
44、end sanjiao;architecture bhv of sanjiao istype mem_type is array(0 to 63) of integer range 0 to 255;constant mem:mem_type:=(0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,255,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136
45、,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8);signal address:integer range 0 to 63;beginprocess(clock)beginif clock'event and clock='1' thenif address>63 thenaddress<=0;elseif sel='1' thenaddress<=address+1;dout3<=(mem(address)/2;elseaddress<=address+1;dout3
46、<=mem(address);end if;end if;end if;end process;end bhv;按鍵輸入識(shí)別模塊library ieee;use ieee.std_logic_1164.all;entity aa isport(clk:in std_logic;btn:in std_logic_vector(1 downto 0);highh:in std_logic;loww:in std_logic;addr:out integer range 0 to 40);end aa;architecture bhv of aa issignal cnt:integer ra
47、nge 0 to 40 :=0;signal button0,button1,button2,button3:std_logic;beginprocess(highh,loww,clk,button0,button1)beginif clk'event and clk='1' thenbutton0<=btn(0);button1<=button0;button2<=btn(1);button3<=button2;if highh='1' thencnt<=40;elsif loww='1' thencnt&
48、lt;=0;elseif button0='0' and button1='1' thenif cnt=40 thencnt<=0;elsecnt<=cnt+1;end if;elsif button0='1' and button1='0' thenif cnt=40 thencnt<=0;elsecnt<=cnt+1;end if;elsif button2='0' and button3='1' thenif cnt=0 thencnt<=40;elsecnt&l
49、t;=cnt-1;end if;elsif button2='1' and button3='0' thenif cnt=0 thencnt<=40;elsecnt<=cnt-1;end if;end if;end if;end if;end process;addr<=cnt;end bhv;分頻模塊library ieee;use ieee.std_logic_1164.all;entity fenpin isport(shu:in integer range 0 to 937;clk:in std_logic;clock:out std_
50、logic);end fenpin;architecture bhv of fenpin issignal num:integer range 0 to 937;signal i:integer range 0 to 937:=0;signal temp:std_logic:='0'beginprocess(clk,i,temp)beginif clk'event and clk='1' thenif i=shu theni<=0;temp<=not temp;elsei<=i+1;end if;end if;clock<=tem
51、p;end process;end bhv;分頻數(shù)產(chǎn)生模塊library ieee;use ieee.std_logic_1164.all;entity pinlv isport(address:in integer range 0 to 40;shu:out integer range 0 to 937;wan,qian,bai,shi,ge:out std_logic_vector(3 downto 0);end pinlv;architecture bhv of pinlv isbeginprocess(address)begincase address iswhen 0=>shu
52、<=937;wan<="ZZZZ"qian<="ZZZZ"bai<="0001"shi<="0000"ge<="0000"when 1=>shu<=172;wan<="ZZZZ"qian<="ZZZZ"bai<="0101"shi<="0000"ge<="0000"when 2=>shu<=93;wan<
53、;="ZZZZ"qian<="0001"bai<="0000"shi<="0000"ge<="0000"when 3=>shu<=62;wan<="ZZZZ"qian<="0001"bai<="0101"shi<="0000"ge<="0000"when 4=>shu<=46;wan<="ZZZZ&quo
54、t;qian<="0010"bai<="0000"shi<="0000"ge<="0000"when 5=>shu<=37;wan<="ZZZZ"qian<="0010"bai<="0101"shi<="0000"ge<="0000"when 6=>shu<=31;wan<="ZZZZ"qian<="
55、;0011"bai<="0000"shi<="0000"ge<="0000"when 7=>shu<=26;wan<="ZZZZ"qian<="0011"bai<="0101"shi<="0000"ge<="0000"when 8=>shu<=24;wan<="ZZZZ"qian<="0100"bai&l
56、t;="0000"shi<="0000"ge<="0000"when 9=>shu<=20;wan<="ZZZZ"qian<="0100"bai<="0101"shi<="0000"ge<="0000"when 10=>shu<=18;wan<="ZZZZ"qian<="0101"bai<="0000&q
57、uot;shi<="0000"ge<="0000"when 11=>shu<=16;wan<="ZZZZ"qian<="0101"bai<="0101"shi<="0000"ge<="0000"when 12=>shu<=15;wan<="ZZZZ"qian<="0110"bai<="0000"shi<=&q
58、uot;0000"ge<="0000"when 13=>shu<=28;wan<="ZZZZ"qian<="0110"bai<="0101"shi<="0000"ge<="0000"when 14=>shu<=13;wan<="ZZZZ"qian<="0111"bai<="0000"shi<="0000"
59、ge<="0000"when 15=>shu<=12;wan<="ZZZZ"qian<="0111"bai<="0101"shi<="0000"ge<="0000"when 16=>shu<=11;wan<="ZZZZ"qian<="1000"bai<="0000"shi<="0000"ge<="0000"when 17=>shu<=11;wan<="ZZZZ"qian<=&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版石油化工安全評(píng)價(jià)與隱患排查合同3篇
- 二零二五年度品牌推廣活動(dòng)策劃與執(zhí)行合同3篇
- 二零二五版工藝品展覽館建設(shè)與運(yùn)營(yíng)管理合同3篇
- 二零二五年度電力工程建設(shè)項(xiàng)目融資合同2篇
- 二零二五年度4S店汽車租賃與綠色出行倡導(dǎo)合同3篇
- 二零二五版房地產(chǎn)開發(fā)項(xiàng)目掛靠合作保密協(xié)議合同3篇
- 2025年度特色餐飲品牌店面全面轉(zhuǎn)讓合同范本2篇
- 二零二五版物業(yè)公司應(yīng)急處理合同3篇
- 二零二五版數(shù)據(jù)中心建設(shè)工程施工合同2篇
- 基于2025年度區(qū)塊鏈技術(shù)的電子勞動(dòng)合同信任機(jī)制合同3篇
- 高二物理競(jìng)賽霍爾效應(yīng) 課件
- 金融數(shù)學(xué)-(南京大學(xué))
- 基于核心素養(yǎng)下的英語(yǔ)寫作能力的培養(yǎng)策略
- 現(xiàn)場(chǎng)安全文明施工考核評(píng)分表
- 亞什蘭版膠衣操作指南
- 四年級(jí)上冊(cè)數(shù)學(xué)教案 6.1口算除法 人教版
- DB32-T 3129-2016適合機(jī)械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 6.農(nóng)業(yè)產(chǎn)值與增加值核算統(tǒng)計(jì)報(bào)表制度(2020年)
- 人工挖孔樁施工監(jiān)測(cè)監(jiān)控措施
- 供應(yīng)商物料質(zhì)量問(wèn)題賠償協(xié)議(終端)
- 物理人教版(2019)必修第二冊(cè)5.2運(yùn)動(dòng)的合成與分解(共19張ppt)
評(píng)論
0/150
提交評(píng)論