EDA技術(shù)實(shí)驗(yàn)報(bào)告_第1頁
EDA技術(shù)實(shí)驗(yàn)報(bào)告_第2頁
EDA技術(shù)實(shí)驗(yàn)報(bào)告_第3頁
EDA技術(shù)實(shí)驗(yàn)報(bào)告_第4頁
EDA技術(shù)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、福建農(nóng)林大學(xué)金山學(xué)院信息工程類實(shí)驗(yàn)報(bào)告課程名稱:EDA技術(shù)姓 名:系:信息與機(jī)電工程系專 業(yè):電子信息工程年 級:學(xué) 號:指導(dǎo)教師:職 稱:年 月 日 實(shí)驗(yàn)項(xiàng)目列表序號實(shí)驗(yàn)項(xiàng)目名稱成績指導(dǎo)教師1實(shí)驗(yàn)一Quartus II 9.0軟件的使用2實(shí)驗(yàn)二 用文本輸入法設(shè)計(jì)2選1多路選擇器3實(shí)驗(yàn)三 用文本輸入法設(shè)計(jì)7段數(shù)碼顯示譯碼器4實(shí)驗(yàn)四 用原理圖輸入法設(shè)計(jì)8位全加器5實(shí)驗(yàn)五 樂曲硬件演奏電路的設(shè)計(jì)67891011121314151617181920實(shí)驗(yàn)一 Quartus II 9.0軟件的使用1實(shí)驗(yàn)?zāi)康暮鸵?本實(shí)驗(yàn)為驗(yàn)證性實(shí)驗(yàn),其目的是熟悉Quartus II 9.0軟件的使用,學(xué)會利用Quart

2、us II 9.0軟件來完成整個EDA開發(fā)的流程。2實(shí)驗(yàn)原理利用VHDL完成電路設(shè)計(jì)后,必須借助EDA工具中的綜合器、適配器、時序仿真器和編程器等工具進(jìn)行相應(yīng)的處理后,才能使此項(xiàng)設(shè)計(jì)在FPGA上完成硬件實(shí)現(xiàn),并得到硬件測試,從而使VHDL設(shè)計(jì)得到最終的驗(yàn)證。Quartus II是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,包括模塊化的編譯器,能滿足各種特定設(shè)計(jì)的需要,同時也支持第三方的仿真工具。3主要儀器設(shè)備(實(shí)驗(yàn)用的軟硬件環(huán)境)實(shí)驗(yàn)的硬件環(huán)境是:微機(jī)一臺GW48 EDA實(shí)驗(yàn)開發(fā)系統(tǒng)一套電源線一根十芯JTAG口線一根USB下載線一根USB下載器一個實(shí)驗(yàn)的軟件環(huán)境是:Quartus II

3、9.0軟件4操作方法與實(shí)驗(yàn)步驟利用Quartus II 9.0軟件實(shí)現(xiàn)EDA的基本設(shè)計(jì)流程:創(chuàng)建工程、編輯文本輸入設(shè)計(jì)文件、編譯前設(shè)置、全程編譯、功能仿真。利用Quartus II 9.0軟件實(shí)現(xiàn)引腳鎖定和編譯文件下載。利用Quartus II 9.0軟件實(shí)現(xiàn)原理圖輸入設(shè)計(jì)文件的編輯和產(chǎn)生相應(yīng)的原理圖符號元件。5實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄1)新建工程(文本輸入法)2)新建工程(原理圖輸入法)3)編譯工程選擇如上菜單欄中的選項(xiàng)或者可通過Processing->Start Complacation進(jìn)行編譯工程。4)時序仿真選擇如上菜單欄中的選項(xiàng)或者可通過Processing->Start

4、Complacation進(jìn)行編譯工程。5)下載程序Tools-Programmer6實(shí)驗(yàn)數(shù)據(jù)處理與分析1)任何一項(xiàng)設(shè)計(jì)都是一項(xiàng)工程(實(shí)驗(yàn)三中半加器、一位全加器以及8位全加器的設(shè)計(jì)都應(yīng)該新建工程,不可在同一個工程中進(jìn)行設(shè)計(jì)),不同的設(shè)計(jì)項(xiàng)目最好放在不同的文件夾中,而同一工程的所有文件都必須放在同一文件夾中。2)新建一個文件夾時應(yīng)特別注意文件夾名不能用中文,最好也不要用數(shù)字。2)編譯工程結(jié)果將提示是否有錯誤或是警告,錯誤需要修改,警告則根據(jù)具體情況進(jìn)行修改。(常見警告一個是未定義的引腳模式-改為輸入高電阻模式,另一個則是引腳未鎖定,可在下載程序前再進(jìn)行鎖定)3)時序仿真時候步驟:A、File-ne

5、w file->vector waveform file:新建波形文件B、在波形文件下,右鍵單擊選擇Insert node or bus.進(jìn)行節(jié)點(diǎn)的添加C、Assignments-Setting-Simulator Setting:選擇功能仿真functionalD、電擊仿真按鈕進(jìn)行仿真分析。時序仿真時候注意點(diǎn):l 設(shè)置仿真時間區(qū)域。對于時序仿真來說,將仿真時間軸設(shè)置在一個合理的短時間區(qū)域上十分重要。(由后續(xù)試驗(yàn)驗(yàn)證了此結(jié)論)通常設(shè)置的時間范圍在數(shù)十微妙之間:選擇Edit->End Timel 文件后綴名:.vwf4)下載程序前應(yīng)連接好下載線,開啟電源,確保連線可用(我的電腦-)管

6、理-設(shè)備管理器-串行通信端口);其次在打開窗口中單擊Hardware Setup,選擇對應(yīng)項(xiàng);最后單擊START進(jìn)行下載,右上角有相關(guān)的下載進(jìn)度提示,當(dāng)提示為100%時候表示下載成功。7質(zhì)疑、建議、問題討論通過本次實(shí)驗(yàn),對Quartus II 9.0軟件有了初步的認(rèn)識,在實(shí)驗(yàn)的基礎(chǔ)上基本掌握了利用Quartus II 9.0軟件實(shí)現(xiàn)EDA的基本設(shè)計(jì)流程:創(chuàng)建工程、編輯文本輸入設(shè)計(jì)文件、編譯前設(shè)置、全程編譯、功能仿真等。實(shí)驗(yàn)二 用文本輸入法設(shè)計(jì)2選1多路選擇器1實(shí)驗(yàn)?zāi)康暮鸵蟊緦?shí)驗(yàn)為綜合性實(shí)驗(yàn),綜合了簡單組合電路邏輯、QuartusII的使用方法、多層次電

7、路設(shè)計(jì)、仿真和硬件測試等內(nèi)容。其目的是熟悉QuartusII的VHDL文本設(shè)計(jì)流程全過程。2實(shí)驗(yàn)原理2選1多路選擇器真值表sabyLL×LLH×HH×LLH×HH3主要儀器設(shè)備(實(shí)驗(yàn)用的軟硬件環(huán)境)實(shí)驗(yàn)的硬件環(huán)境是:微機(jī)一臺GW48 EDA實(shí)驗(yàn)開發(fā)系統(tǒng)一套電源線一根十芯JTAG口線一根USB下載線一根USB下載器一個實(shí)驗(yàn)的軟件環(huán)境是:Quartus II 9.0軟件4操作方法與實(shí)驗(yàn)步驟首先利用QuartusII完成2選1多路選擇器的文本編輯輸入(mux21a.vhd)和仿真測試等步驟,然后進(jìn)行仿真。最后在實(shí)驗(yàn)系統(tǒng)上進(jìn)行硬件測試,實(shí)際驗(yàn)證本項(xiàng)實(shí)驗(yàn)的功能。將

8、設(shè)計(jì)好的2選1多路多路選擇器看成是一個元件mux21a,利用元件例化語句描述下圖,并將此文件放在同一目錄E:muxfile中。5實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄(1)程序設(shè)計(jì)ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ;END IF; END PROCESS;END ARCHITECTUR

9、E one ;(2)軟件編譯(3)仿真波形圖(4)硬件測試結(jié)果將程序下載到實(shí)驗(yàn)板,按下K1鍵可以得到不同的鳴叫效果。改變頻率的選擇,可以改變蜂鳴器的鳴叫效果。6實(shí)驗(yàn)數(shù)據(jù)處理與分析(1)程序分析1、一般的,可綜合的,即能將VHDL程序編譯成可實(shí)現(xiàn)的電路端口模式有如下四種:IN(輸入端口),OUT(輸出端口),INOUT(雙向端口),BUFFER(緩沖端口),本二選一實(shí)驗(yàn)的實(shí)體中定義三個輸入引腳分別為:a、b、s和一個輸出引腳y,四個引腳的數(shù)據(jù)類型均為bit.2、使用VHDL描述語句實(shí)現(xiàn)功能當(dāng)s=0時候選擇輸入a,當(dāng)s=1時候選擇輸入b,即實(shí)現(xiàn)二選一的功能。(2)仿真分析從時序仿真結(jié)果中觀察可以發(fā)

10、現(xiàn),實(shí)驗(yàn)結(jié)果符合預(yù)期結(jié)果,但是有一定的延時。(3) 硬件測試分析引腳鎖定:選擇模式5ABSYPin93161129由實(shí)驗(yàn)結(jié)果可發(fā)現(xiàn)實(shí)驗(yàn)結(jié)果符合預(yù)期結(jié)果。7質(zhì)疑、建議、問題討論 在仿真時,通過設(shè)定a、b不同的輸入,是在輸出到揚(yáng)聲器時會有聲音的不同以區(qū)別,從而通過鍵1對S的控制測試實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)中應(yīng)注意a、b所接引腳的選擇,另在實(shí)驗(yàn)中clock0及clock5的頻率是可以自由選擇的,但注意要正確選擇頻率以保障在輸出時頻率在人耳課接受的范圍內(nèi)。 實(shí)驗(yàn)三 用文本輸入法設(shè)計(jì)7段數(shù)碼顯示譯碼器1實(shí)驗(yàn)?zāi)康暮鸵蟊緦?shí)驗(yàn)為綜合性實(shí)驗(yàn),綜合了簡單組合電路邏輯,QuartusII的使用方法,多層次電路設(shè)計(jì)、仿真和硬

11、件測試等內(nèi)容。其目的是熟悉QuartusII的VHDL文本設(shè)計(jì)流程全過程。2實(shí)驗(yàn)原理7段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進(jìn)制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運(yùn)算都是2進(jìn)制的,所以輸出表達(dá)都是16進(jìn)制的,為了滿足16進(jìn)制數(shù)的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來實(shí)現(xiàn)。7段數(shù)碼顯示譯碼器的輸出信號LED7S的7位分別接共陰7段數(shù)碼管的7個段,高位在左,低位在右。例如當(dāng)LED7S輸出為“1101101”時,數(shù)碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1;接有高電平的段發(fā)亮,于是數(shù)碼管顯示“5”。注意

12、,這里沒有考慮表示小數(shù)點(diǎn)的發(fā)光管,如果要考慮,需要增加段h,此時實(shí)體說明中的LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)應(yīng)改為(7 DOWNTO 0)。3主要儀器設(shè)備(實(shí)驗(yàn)用的軟硬件環(huán)境)實(shí)驗(yàn)的硬件環(huán)境是:微機(jī)一臺GW48 EDA實(shí)驗(yàn)開發(fā)系統(tǒng)一套電源線一根十芯JTAG口線一根USB下載線一根USB下載器一個實(shí)驗(yàn)的軟件環(huán)境是:Quartus II 9.0軟件4操作方法與實(shí)驗(yàn)步驟利用QuartusII完成7段數(shù)碼顯示譯碼器的文本編輯輸入(decl7s.vhd)和仿真測試等步驟,最后在實(shí)驗(yàn)系統(tǒng)上進(jìn)行硬件測試,實(shí)際驗(yàn)證本項(xiàng)實(shí)驗(yàn)的功能。5實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄(1)程序設(shè)

13、計(jì)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DECL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DECL7S IS BEGIN PROCESS( A ) BEGIN CASE A IS WHEN "0000" => LED7S <= "0111111" ; WHEN "0001&

14、quot; => LED7S <= "0000110" ; WHEN "0010" => LED7S <= "1011011" ; WHEN "0011" => LED7S <= "1001111" ; WHEN "0100" => LED7S <= "1100110" ; WHEN "0101" => LED7S <= "1101101" ; WHEN &

15、quot;0110" => LED7S <= "1111101" ; WHEN "0111" => LED7S <= "0000111" ; WHEN "1000" => LED7S <= "1111111" ; WHEN "1001" => LED7S <= "1101111" ; WHEN "1010" => LED7S <= "1110111"

16、; ; WHEN "1011" => LED7S <= "1111100" ; WHEN "1100" => LED7S <= "0111001" ; WHEN "1101" => LED7S <= "1011110" ; WHEN "1110" => LED7S <= "1111001" ; WHEN "1111" => LED7S <= "11

17、10001" ; WHEN OTHERS => NULL ; END CASE ; END PROCESS ; END ;(2)時序編譯1)時序編譯出錯2)修改后正確(3)仿真波形圖(4)硬件測試流程及其結(jié)果1)顯示出現(xiàn)亂碼 2)正確顯示07 6實(shí)驗(yàn)數(shù)據(jù)處理與分析(1)程序分析1)程序定義74位的輸入端口A和7位的輸出端口LED7S。2)輸入和輸出的對應(yīng)關(guān)系如下:INPUTOUTPUT000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F(2)仿真分析由時序仿真的結(jié)果可以觀

18、察發(fā)現(xiàn)符合預(yù)期結(jié)果。(3)硬件測試分析引腳鎖定:選擇模式6NODE PinALED7S鍵8(A3)鍵7(A2)鍵6(A1)鍵5(A0)LED7S(0-7)Pin36353433105、103、99、98、97、96、85硬件顯示不規(guī)則數(shù)字原因:LED7S數(shù)碼管引腳鎖定反向,改正后可正常顯示07如上所示,其中引腳8無法控制實(shí)現(xiàn)最終結(jié)果。修改為其他引腳仍不可顯示正常結(jié)果(目前原因未知)7質(zhì)疑、建議、問題討論1)不管是工程的建立或者是時序仿真以及下載調(diào)試中的每一個步驟都要完成,本次實(shí)驗(yàn)中就由于少了一個步驟而提示編譯出錯。2)硬件測試過程中鍵8為什么無法控制顯示?是硬件問題還是軟件問題?根據(jù)檢查結(jié)果,

19、軟件引腳配置沒有問題,猜測可能是硬件上出現(xiàn)一些問題。實(shí)驗(yàn)四 用原理圖輸入方法設(shè)計(jì)8位全加器1實(shí)驗(yàn)?zāi)康暮鸵?本實(shí)驗(yàn)為綜合性實(shí)驗(yàn),綜合了簡單組合電路邏輯、QuartusII的原理圖輸入方法、 層次化設(shè)計(jì)的方法等內(nèi)容。其目的是通過一個8位全加器的設(shè)計(jì)熟悉EDA軟件進(jìn)行電子線路設(shè)計(jì)的詳細(xì)流程。學(xué)會對實(shí)驗(yàn)板上的FPGA/CPLD進(jìn)行編程下載,硬件驗(yàn)證自己的設(shè)計(jì)項(xiàng)目。2實(shí)驗(yàn)原理1位全加器可以用兩個半加器及一個或門連接而成,半加器原理圖的設(shè)計(jì)方法很多,我們用一個與門、一個非門和同或門(xnor為同或符合,相同為1,不同為0)來實(shí)現(xiàn)。先設(shè)計(jì)底層文件:半加器,再設(shè)計(jì)頂層文件全加器。(1) 半加器的設(shè)計(jì): 半加

20、器表達(dá)式:進(jìn)位:co=a and b 和:so=a xnor ( not b ) 半加器原理圖如下:(2) 全加器的設(shè)計(jì):全加器原理圖如下:(3) 8位全加器的設(shè)計(jì):8位全加器原理圖如下:3主要儀器設(shè)備(實(shí)驗(yàn)用的軟硬件環(huán)境)實(shí)驗(yàn)的硬件環(huán)境是:微機(jī)一臺GW48 EDA實(shí)驗(yàn)開發(fā)系統(tǒng)一套電源線一根十芯JTAG口線一根USB下載線一根USB下載器一個實(shí)驗(yàn)的軟件環(huán)境是:Quartus II 9.0軟件4操作方法與實(shí)驗(yàn)步驟按照以上介紹的方法與流程,完成半加器和全加器的設(shè)計(jì),包括原理圖輸入、編譯、綜合、適配、仿真、實(shí)驗(yàn)板上的硬件測試,并將此全加器電路設(shè)置成一個硬件符號入庫。建立一個更高的原理圖設(shè)計(jì)層次,利用

21、以上獲得的1位全加器構(gòu)成8位全加器,并完成編譯、綜合、適配、仿真、硬件測試。5實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄1)半加法器原理圖及生成的器件 2)全加法器原理圖 3)8位加法器原理圖4)半加器時序仿真5)全加器時序仿真6)8bit加法器仿真7)編譯結(jié)果8) 硬件測試結(jié)果6實(shí)驗(yàn)數(shù)據(jù)處理與分析(1)原理分析l 半加器表達(dá)式:進(jìn)位:co=a and b 和:so=a xnor ( not b )l 8位二進(jìn)制加法器可以由8個全加器通過級聯(lián)的方式構(gòu)成。根據(jù)全加器級聯(lián)的原理,實(shí)驗(yàn)用VHDL先設(shè)計(jì)一個半加器,由半加器組成一位全加器,然后再利用一位全加器采用元件例化的方式實(shí)現(xiàn)加法器。l 半加器可以有多種表達(dá)方式,實(shí)驗(yàn)

22、使用邏輯門元件(電路原理圖)構(gòu)建了半加器電路實(shí)現(xiàn)了半加器。l 由電路設(shè)計(jì)可見一位全加器可以由兩個半加器和一個或門連接而成。(2) 仿真分析由仿真結(jié)果可以觀察得到如下結(jié)果:l 半加器仿真結(jié)果INPUTOUTPUTABCSum0000010110011110由分析結(jié)果可以得到sum是有a,b相加后得到的,但未有進(jìn)位。當(dāng)ain,bin都為0時,so為0;當(dāng)ain,bin中有一個為1時,so為1,而這之前co都是為0,表明未進(jìn)位。當(dāng)ain,bin都為1時,此時so為0,co為1,表明已進(jìn)位。l 全加器仿真結(jié)果INPUTOUTPUTABCinSumCout000000101010010110010010

23、0011101010111111當(dāng)cin=0的情況下和半加器的結(jié)果是一樣的,當(dāng)cin=1時,若ain=0時,count=0;若ain=1時,count=1;由此可見半加器和全加器的設(shè)計(jì)是正確的。l 8bit仿真結(jié)果由仿真結(jié)果可以觀察發(fā)現(xiàn)符合預(yù)期結(jié)果。(3) 硬件測試分析引腳鎖定:選擇電路模式1Node NameIN(a)IN(b)OUT-SumOUT-C鍵1鍵2鍵3鍵4D6D5D8Pin4、3、2、110、7、6、534、33、32、1138、37、36、3550、49、48、4742、41、40、3984由上圖可以觀察發(fā)現(xiàn)當(dāng)輸入為11和22時候輸出得到33,輸入為10和1時候得到輸出11,同

24、樣可以驗(yàn)證其他運(yùn)算結(jié)果。7質(zhì)疑、建議、問題討論該實(shí)驗(yàn)在結(jié)果測試中出現(xiàn)了一些問題,如圖中所示結(jié)果正確。而當(dāng)兩位加數(shù)的任意一個的低位為1時,會出現(xiàn)和的結(jié)果少加1的情況。如21+14即會出現(xiàn)和為34,而當(dāng)使21變?yōu)?2時結(jié)果便會正確顯示。該問題未得到解決。在測試時還應(yīng)當(dāng)注意結(jié)果溢出的問題,因此要選擇合適的測試數(shù)據(jù)。 實(shí)驗(yàn)五 樂曲硬件演奏電路的設(shè)計(jì)1實(shí)驗(yàn)?zāi)康暮鸵蟊緦?shí)驗(yàn)為設(shè)計(jì)性實(shí)驗(yàn)。將VHDL硬件描述語言,簡單組合電路邏輯QuartusII的使用等知識應(yīng)用到實(shí)際硬件電路設(shè)計(jì)中。其目的是學(xué)會在EDA軟件平臺中利用VHDL硬件描述語言設(shè)計(jì)電路.設(shè)計(jì)要求利用數(shù)控分頻器設(shè)計(jì)樂曲硬件演奏電路。2實(shí)驗(yàn)原理與利用微

25、處理器(CPU或MCU)來實(shí)現(xiàn)樂曲演奏相比,以純硬件完成樂曲演奏電路的邏輯要復(fù)雜得多,如果不借助于功能強(qiáng)大的EDA工具和硬件描述語言,僅憑傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡單的演奏電路也難以實(shí)現(xiàn)。本實(shí)驗(yàn)設(shè)計(jì)項(xiàng)目是“梁?!睒非葑嚯娐返膶?shí)現(xiàn)。我們知道,組成樂曲的每個音符的發(fā)音頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏所需的兩個基本要素,問題是如何來獲取這兩個要素所對應(yīng)的數(shù)值以及通過純硬件的手段來利用這些數(shù)值實(shí)現(xiàn)所希望樂曲的演奏效果。樂曲硬件演奏電路的頂層文件原理圖如圖5-1所示,主系統(tǒng)由3個模塊組成: NoteTabs.vhd、ToneTaba.vhd和Speakera.vhd。其中,模塊U1(NoteTa

26、bs)類似于彈琴的人的手指;模塊U2(ToneTaba)類似于琴鍵;模塊U3(Speakera)類似于琴弦或音調(diào)發(fā)聲器。圖5-1 樂曲硬件演奏電路的頂層文件原理圖下面介紹圖5-1的工作原理: 1、音符的頻率可以由圖4-1中的Speakera獲得,這是一個數(shù)控分頻器。由其clk端輸入一具有較高頻率(這里是12MHz)的信號,通過Speakera分頻后由SPKOUT輸出,由于直接從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚(yáng)聲器,需另加一個D觸發(fā)器以均衡其占空比,但這時的頻率將是原來的1/2。Speakera對clk輸入信號的分頻比由11位預(yù)置數(shù)Tone10.0決定。SPKO

27、UT的輸出頻率將決定每一音符的音調(diào),這樣,分頻計(jì)數(shù)器的預(yù)置值Tone10.0 與SPKOUT的輸出頻率,就有了對應(yīng)關(guān)系。例如在TONETABA模塊中若取Tone10.0=1036,將發(fā)音符為"3"音的信號頻率。 2、音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定,圖5-1中模塊ToneTaba 的功能首先是為Speakera提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在Speakera輸入口停留的時間即為此音符的節(jié)拍值。模塊ToneTaba 是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路,其中設(shè)置了“梁?!睒非恳舴鶎?yīng)的分頻預(yù)置數(shù),共13個,每一音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)

28、生器模塊NoteTabs的clk的輸入頻率決定,在此為4Hz。這13個值的輸出由對應(yīng)于ToneTaba 的4位輸入值Index3.0確定,而Index3.0 最多有16種可選值。輸向ToneTaba中Index3.0的值ToneIndex3.0的輸出值與持續(xù)的時間由模塊NoteTabs決定。3、在NoteTabs 中設(shè)置了一個8位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為138),作為音符數(shù)據(jù)ROM的地址發(fā)生器。這個計(jì)數(shù)器的計(jì)數(shù)頻率選為4Hz,即每一計(jì)數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。例如,NoteTabs 在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€音符為“3

29、”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間,相應(yīng)地,所對應(yīng)的“3”音符分頻預(yù)置值為1036,在Speakera 的輸入端停留了1秒。隨著NoteTabs 中的計(jì)數(shù)器按4Hz的時鐘速率作加法計(jì)數(shù)時,即隨地址值遞增時,音符數(shù)據(jù)ROM 中的音符數(shù)據(jù)將從ROM中通過ToneIndex3.0端口輸向ToneTaba模塊,“梁?!睒非烷_始連續(xù)自然地演奏起來了。3主要儀器設(shè)備(實(shí)驗(yàn)用的軟硬件環(huán)境)實(shí)驗(yàn)的硬件環(huán)境是:微機(jī)一臺GW48 EDA實(shí)驗(yàn)開發(fā)系統(tǒng)一套電源線一根十芯JTAG口線一根USB下載線一根USB下載器一個實(shí)驗(yàn)的軟件環(huán)境是:Quartus II 9.0軟件4操作方法與實(shí)驗(yàn)步驟首先給出該電路的各

30、個基本模塊,再利用QuartusII完成各個模塊的文本編輯輸入和仿真測試等步驟。完成此項(xiàng)設(shè)計(jì),并在EDA實(shí)驗(yàn)系統(tǒng)上的FPGA目標(biāo)器件中實(shí)現(xiàn)之。5實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)數(shù)據(jù)記錄1)輸入NoteTabs.vhdl,編譯、仿真,給出時序波形2)輸入ToneTaba.vhdl,編譯、仿真,給出時序波形3)輸入Speakera.vhdl,編譯、仿真,給出時序波形4) 建立硬件演奏電路頂層文件songer.vhdl,將以上4個vhdl文件拷貝進(jìn)頂層文件所在目錄,用元件例化語句和層次化設(shè)計(jì)方法,完成樂曲硬件演奏電路的設(shè)計(jì),編譯、仿真,給出時序波形,引腳鎖定并下載進(jìn)FPGA進(jìn)行硬件測試Node NameCLK_8Hz

31、CLK_12MHzCODE3.0HIGH1SPKOUTPin179242414039111295)VHDL文本輸入法時序仿真波形l 錯誤波形l 調(diào)試后得到正確波形2)硬件測試結(jié)果可以聽到不同的蜂鳴器聲音,改變CLK的選擇項(xiàng)可以變換聲音的頻率。6 實(shí)驗(yàn)數(shù)據(jù)處理與分析1) VHDL語句功能l - 硬件樂曲演奏電路頂層設(shè)計(jì)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT ( CLK12MHZ : IN STD_LOGIC; -音調(diào)頻率信號 CLK8HZ : IN STD_LOGIC; -節(jié)拍頻率信號 CODE1 : OUT

32、 STD_LOGIC_VECTOR (3 DOWNTO 0);- 簡譜碼輸出顯示 HIGH1 : OUT STD_LOGIC; -高8度指示 SPKOUT : OUT STD_LOGIC );-聲音輸出 END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT ( clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba PORT ( Index : IN STD_LOGIC_VECTOR

33、(3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) ); END COMPONENT; COMPONENT Speakera PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC ); END COMPONENT; SIGNAL Tone : STD_LOGIC_VECTOR (1

34、0 DOWNTO 0); SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGINu1 : NoteTabs PORT MAP (clk=>CLK8HZ, ToneIndex=>ToneIndex);u2 : ToneTaba PORT MAP (Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);u3 : Speakera PORT MAP(clk=>CLK12MHZ,Tone=>Tone, SpkS=>SPKOUT );END;說

35、明:用vhdl文本輸入法和元件例化語句完成硬件演奏電路頂層文件,SpkOut是經(jīng)SpkS的最終的輸出,決定所發(fā)出的每一音符的音調(diào)。音符不同,SpkOut的脈寬也不同,通過揚(yáng)聲器發(fā)出的聲音也不同,因而可以演奏音樂,得到預(yù)期的效果。l -數(shù)控分頻器設(shè)計(jì)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera IS PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD

36、_LOGIC );END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGINDivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK <= '0' - 將CLK進(jìn)行16分頻,PreCLK為CLK的16分頻 IF Count4>11 THEN PreCLK <= '1' Count4 := "0000" ELSIF

37、clk'EVENT AND clk = '1' THEN Count4 := Count4 + 1; END IF; END PROCESS;GenSpkS : PROCESS(PreCLK, Tone)- 11位可預(yù)置計(jì)數(shù)器 VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);BEGIN IF PreCLK'EVENT AND PreCLK = '1' THEN IF Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS <= '1

38、9; ELSE Count11 := Count11 + 1; FullSpkS <= '0' END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS)-將輸出再2分頻,展寬脈沖,使揚(yáng)聲器有足夠功率發(fā)音 VARIABLE Count2 : STD_LOGIC;BEGIN IF FullSpkS'EVENT AND FullSpkS = '1' THEN Count2 := NOT Count2; IF Count2 = '1' THEN SpkS <= '1&

39、#39; ELSE SpkS <= '0' END IF; END IF; END PROCESS;END;說明:完成Speakera.vhdl的設(shè)計(jì),該模塊是一個初值可變的加法計(jì)數(shù)器。該計(jì)數(shù)器的模為2047,當(dāng)計(jì)數(shù)器記滿時,計(jì)數(shù)器產(chǎn)生一個溢出信號FULL,此溢出信號就是用作發(fā)音的頻率信號,由數(shù)控分頻器模塊的仿真波形Speakera.sim可知,由Tone10.0輸入的分頻預(yù)置數(shù)將clk輸入的一較高頻率(12MHz)的時鐘信號進(jìn)行分頻,得到不同頻率的輸出FullSpkS,由于FullSpkS直接由數(shù)控分頻器輸出,是脈沖極窄的脈沖式信號,經(jīng)內(nèi)部增加一個D觸發(fā)器后,可以得到展

40、寬脈沖后的SpkS。l -樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路設(shè)計(jì)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) );END;ARCHITECTURE one OF ToneTaba ISBEGIN Search

41、: PROCESS(Index) BEGIN CASE Index IS - 譯碼電路,查表方式,控制音調(diào)的預(yù)置數(shù) WHEN "0000" => Tone<="11111111111" ; CODE<="0000" HIGH <='0'- 2047 WHEN "0001" => Tone<="01100000101" ; CODE<="0001" HIGH <='0'- 773; WHEN &qu

42、ot;0010" => Tone<="01110010000" ; CODE<="0010" HIGH <='0'- 912; WHEN "0011" => Tone<="10000001100" ; CODE<="0011" HIGH <='0'-1036; WHEN "0101" => Tone<="10010101101" ; CODE<=&q

43、uot;0101" HIGH <='0'-1197; WHEN "0110" => Tone<="10100001010" ; CODE<="0110" HIGH <='0'-1290; WHEN "0111" => Tone<="10101011100" ; CODE<="0111" HIGH <='0'-1372; WHEN "1000" =

44、> Tone<="10110000010" ; CODE<="0001" HIGH <='1'-1410; WHEN "1001" => Tone<="10111001000" ; CODE<="0010" HIGH <='1'-1480; WHEN "1010" => Tone<="11000000110" ; CODE<="0011"

45、HIGH <='1'-1542; WHEN "1100" => Tone<="11001010110" ; CODE<="0101" HIGH <='1'-1622; WHEN "1101" => Tone<="11010000100" ; CODE<="0110" HIGH <='1'-1668; WHEN "1111" => Tone<=&

46、quot;11011000000" ; CODE<="0001" HIGH <='1'-1728; WHEN OTHERS => NULL; END CASE; END PROCESS;END;說明:完成ToneTaba.vhdl的設(shè)計(jì),此模塊給數(shù)控分頻模塊提供每個音符所對應(yīng)的分頻預(yù)置數(shù),即計(jì)數(shù)初值。由分頻預(yù)置數(shù)查表電路模塊的仿真波形可知,由Index3.0譯碼輸出分頻預(yù)置數(shù),并通過Tone10.0輸出給Speakera模塊。與演奏發(fā)音相對應(yīng)的簡譜碼由CODE通過數(shù)碼管輸出顯示,HIGH1顯示高八度音。l -音符數(shù)據(jù)ROM的地址發(fā)

47、生器設(shè)計(jì)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC -音符數(shù)據(jù)ROM PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LO

48、GIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGIN CNT8 : PROCESS(clk, Counter) BEGIN IF Counter=138 THEN Counter <= "00000000" ELSIF (clk'EVENT AND clk = '1') THEN Counter <= Counter+1; END IF; END PROCESS; u1 : MUSIC PORT MAP(address=>Counter , q=>ToneIndex, inclock=>clk); END;說明:用vhdl文本輸入法和元件例化語句完成NoteTabs.vhdl的設(shè)計(jì),該模塊包含音符數(shù)據(jù)ROM模塊Music.vhdl,由音符數(shù)據(jù)地址發(fā)生模塊的仿真波形NoteTabs可知,隨NoteTabs中的計(jì)數(shù)器按輸入時鐘cl

溫馨提示

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

最新文檔

評論

0/150

提交評論