EDA音樂發(fā)生器課程設(shè)計_第1頁
EDA音樂發(fā)生器課程設(shè)計_第2頁
EDA音樂發(fā)生器課程設(shè)計_第3頁
EDA音樂發(fā)生器課程設(shè)計_第4頁
EDA音樂發(fā)生器課程設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.軟件硬件1 ep3c40q240c8芯片2 實驗箱底板電路(包括 蜂鳴器、7段數(shù)碼管、led燈1個、撥碼開關(guān)3個、key按鍵7個) 3 quartus9.04 計算2. 總體模塊功能1 使用兩個時鐘分別為12mhz和8hz的時鐘,分別供分頻驅(qū)動器(數(shù)控分頻器)與計數(shù)器使用。2 計數(shù)器完成計數(shù)功能,分為兩個計數(shù)器counter1和counter2,counter1計數(shù)到269,counter2計數(shù)到163,都是在上升沿來臨時計數(shù)。3 四個音樂模塊分別記錄了2首歌的樂譜。根據(jù)上一模塊計數(shù)器所計的數(shù)讀取相應(yīng)地址里的數(shù)據(jù)傳遞給下一模塊。4 選擇器完成選擇歌曲的功能。5 數(shù)據(jù)翻譯模塊將選擇器所選擇的

2、歌曲里的地址的數(shù)據(jù)翻譯成分頻驅(qū)動器(數(shù)控分頻器)分頻所需的控制數(shù)據(jù)、1個led燈數(shù)據(jù)(中低音)、以及譯碼器所需的數(shù)據(jù)。6 分頻驅(qū)動器也就是一個數(shù)控分頻器,完成分頻的功能,并驅(qū)動蜂鳴器。7 譯碼器將樂譜數(shù)據(jù)在led數(shù)碼管上顯示。圖3-2 小糊涂神曲譜3.各個模塊圖形及程序3.1 計數(shù)器及歌曲存儲模塊(notetabs)計數(shù)器完成計數(shù)功能,分為兩個計數(shù)器,分別計到269和163,因為兩首歌曲的最大字符分別為269和163,存儲的兩首歌是采蘑菇的小姑娘、小糊涂神,曲譜如下:圖3-1 采蘑菇的小姑娘曲譜1 模塊圖形模塊如圖3-3所示:圖3-3 notetabs模塊圖形2 程序 由于此程序較多,在附錄中

3、給出,見附錄3 仿真波形圖仿真圖如圖3-4所示:圖3-4 notetabs仿真波形圖通過仿真圖可以清楚的看到,每計一次數(shù)輸出toneindex的值隨之發(fā)生一定的變化,只不過根據(jù)樂譜的不同,輸出的變化也不盡相同。例如在本次設(shè)計中,自第8個時鐘上升沿來臨到第15個時鐘上升沿,輸出toneindex2均選取音符“5”。然后把輸出toneindex2輸入到音調(diào)編碼器模塊,進行下一步編碼工作。3.2 手動模塊(tone) 可通過7個按鍵手動的進行演奏,7個按鍵分別代表7個音。1 模塊圖形模塊如圖3-5所示:圖3-5 tone 模塊圖形4.程序library ieee;use ieee.std_logic

4、_1164.all;entity tone isport(key:in std_logic_vector(6 downto 0);toneindex1:out std_logic_vector(3 downto 0);end;architecture one of tone isbeginsearch:process(key)begin case key iswhen0000001=toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1toneindex1=0000;end case;end process;

5、end;3 仿真波形圖仿真圖如圖3-6所示:圖3-6 tone 仿真波形在此仿真圖中不同的key相當(dāng)于對應(yīng)不同的琴鍵,當(dāng)按下不同的琴鍵時輸出相對應(yīng)的toneindex1,toneindex1在輸入音調(diào)編碼器中進行下一步編碼。3.3.3 手動、自動選擇模塊(mux)根據(jù)設(shè)計的要求,該簡易樂曲演奏器能實現(xiàn)手動或自動演奏樂曲的功能。于是,可通過一個按鍵cs來進行自動與手動的選擇,當(dāng)cs按下時,樂曲自動演奏,其他情況下均為手動演奏樂曲,即可以通過按下其他的按鍵(與cs相連的按鍵除外)來控制不同的音符。與此同時,還需要一個復(fù)位信號rst來控制該演奏器是否工作,當(dāng)rst為1時,停止演奏,為0時,可以演奏。

6、以上提到的手動與自動的選擇只能在rst為0時有效。1 模塊圖形模塊圖形如圖3-7所示:圖3-7 mux 模塊圖形2 程序library ieee;use ieee.std_logic_1164.all;entity mux is port(rst:in std_logic;index1:in std_logic_vector(3 downto 0);index2:in std_logic_vector(3 downto 0);cs :in std_logic;toneindex:out std_logic_vector(3 downto 0);end;architecture arc_mux

7、of mux isbeginprocess(cs)beginif rst=1then toneindextoneindextoneindextoneindex=null;end case;end if;end process;end arc_mux;3 仿真波形圖仿真波形圖如圖3-8所示:圖3-8 mux仿真波形圖此仿真圖中輸入cs代表手動自動演奏的選擇端,輸入rst代表整體復(fù)位端,輸入index1、index2分別代表手動和自動要演奏的音符,輸出q代表經(jīng)過選擇后,要演奏的或是手動輸入或是自動輸入的音符。由此仿真圖可清楚的看到當(dāng)rst=1時,不論選擇的是手動還是自動,輸出都為零,達到了整體復(fù)位

8、的功能;當(dāng)rst=0且cs=1時,自動演奏樂曲,因為q與index2的值相同;當(dāng)rst=0且cs=0時,手動演奏樂曲,因為這時的q與index1的值相同,從而也達到了演奏方式選擇的功能。3.3.4 音調(diào)編碼器(tonetaba)1 模塊圖形模塊圖形如圖3-9所示:圖3-9 tonetaba模塊圖形2 程序 見附錄3 仿真波形圖仿真圖形如圖3-10所示:圖3-10 tonetaba 仿真波形圖在此仿真圖中從上到下依次代表輸出code、high、輸入index和輸出tone。通過此仿真圖能清楚的看到當(dāng)音符分別為4、10、8、15時,它們所對應(yīng)的分頻預(yù)置數(shù)tone分別是1116、1542、1410、

9、1728;所對應(yīng)的音譜code分別是4、3、1、1。其中code、high1能分別在數(shù)碼管和led上顯示,而tone則輸入到數(shù)控分頻模塊作為分頻的依據(jù)。于是,由仿真圖印證了音調(diào)編碼模塊傳送預(yù)置數(shù)及顯示功能。3.3.5 數(shù)控分頻器(speakera)將芯片上提供的50mhz的時鐘分頻為12mhz和8hz的時鐘,分別供計數(shù)器與分頻驅(qū)動器(數(shù)控分頻器)使用。1 模塊圖形:模塊圖形如圖3-11所示:圖3-11 speakera模塊圖形2 程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity

10、speakera is port ( clk : in std_logic; tone : in std_logic_vector (10 downto 0); spks : out std_logic );end;architecture one of speakera is signal preclk, fullspks : std_logic;begin divideclk : process(clk) variable count4 : std_logic_vector (3 downto 0) ; begin preclk 11 then preclk = 1; count4 :=

11、0000; elsif clkevent and clk = 1 then count4 := count4 + 1; end if; end process; genspks : process(preclk, tone) variable count11 : std_logic_vector (10 downto 0);begin if preclkevent and preclk = 1 then if count11 = 16#7ff# then count11 := tone ; fullspks = 1; else count11 := count11 + 1; fullspks

12、= 0; end if; end if; end process; delayspks : process(fullspks) variable count2 : std_logic;begin if fullspksevent and fullspks = 1 then count2 := not count2; if count2 = 1 then spks = 1; else spks = 0; end if; end if; end process;end;3 仿真波形圖仿真圖如圖3-12所示:圖3-12 speakera 仿真波形圖在此仿真圖中,輸入clk是一個頻率較大的時鐘信號,輸

13、入tone代表著某個音符的分頻預(yù)置數(shù),輸出spks則代表將輸入clk先經(jīng)過12次分頻,再經(jīng)過(預(yù)置數(shù)終值2048-tone)次分頻,最終在進行二分頻處理后的信號,而這個信號的頻率就是我們需要演奏的音譜的頻率,根據(jù)頻率的不同,從而能通過喇叭聽到不同的聲音,這就是我們一直想要演奏的樂曲了。3.4 硬件設(shè)計及仿真分析3.4.1 頂層音樂演奏器原理圖經(jīng)過了各個子模塊的分析與驗證后,我們只需將各個子模塊之間的輸入輸出端、子模塊與整體電路之間的輸入輸出端進行正確的硬件連接就得到了頂層音樂演奏器的原理圖,如圖3-13圖3-13 自行連接的音樂演奏器原理圖3.4.2 頂層文件仿真波形分析首先,介紹一下總體程序

14、中各個引腳的作用及硬件連接情況:輸入clk8hz是一個頻率較小的時鐘信號,在進行硬件下載時它與實驗箱上標(biāo)準(zhǔn)時鐘信號源模塊的8hz頻率相連,它決定著樂曲演奏的快慢;輸入clk12mhz是一個頻率較大的時鐘信號,因為要對它進行多次不同的分頻,下載時它與實驗箱上標(biāo)準(zhǔn)時鐘信號源模塊的20mhz頻率相連;輸入key6.0是當(dāng)手動演奏時自己確定的音符,;輸入rst和cs分別是整體復(fù)位端和演奏方式選擇端;輸出code1和high1分別用來顯示音譜與高中低音,它們分別與實驗箱上的數(shù)碼管1和led1相連;輸出spkout要與實驗箱上的喇叭相連,用來發(fā)出聲音。其次,頂層電路的仿真波形圖是否正確依賴于各個子模塊的功

15、能是否完善,同時頂層電路的功能實現(xiàn)又驗證了各個子模塊的正確性,二者相互依存。最后,由仿真波形圖印證了整體電路的功能3.4.3 頂層文件的管腳分配以及硬件連接圖下載到硬件時管腳的連接圖如圖3-14圖3-14 管腳分配圖硬件的連接圖如圖3-15所示:圖3-15 硬件連接圖對應(yīng)著管腳分配圖和硬件連接圖可看出硬件芯片分別連接了上方的七段數(shù)碼管,左方的7個白色按鍵key和標(biāo)準(zhǔn)時鐘信號源,下方的led燈,蜂鳴器和右下方的三個撥碼開關(guān)。4 設(shè)計總結(jié)1 本次簡易樂曲演奏器的設(shè)計經(jīng)過了整體分析、模塊化分析、整體與模塊的仿真分析這樣三個步驟,硬件實現(xiàn)了整體復(fù)位、按鍵選擇演奏方式、循環(huán)演奏以及數(shù)碼管顯示樂譜的功能。

16、2 在做數(shù)控分頻器模塊的仿真時一定要處理好時序問題。3 本文介紹了基于 fpga 的音樂硬件演奏電路的設(shè)計,實現(xiàn)了一個樂曲播放器,樂曲 演奏器的設(shè)計經(jīng)過了整體分析、模塊化分析、整體與模塊的仿真分析這樣三個步驟,硬 件實現(xiàn)了循環(huán)演奏以及數(shù)碼管顯示樂譜的功能, 描述了其工作原理、設(shè)計思路及實現(xiàn)方 法,并在quartusii 上選用目標(biāo)芯片仿真實現(xiàn)了音樂硬件演奏電路的功能。實踐證明: 采用 fpga 設(shè)計實現(xiàn)音樂硬件演奏電路的可行性和可靠性,而且更改樂曲容易,可根據(jù) 需要修改 rom 中的音符數(shù)據(jù)文件,從而使電路實現(xiàn)任一曲子的播放。這種基于 fpga 的音樂硬件演奏電路的設(shè)計與實現(xiàn)不僅通過 vhdl

17、 層次化和模塊化,同時采用數(shù)控分頻的設(shè)計思想,更好的優(yōu)化了樂曲演奏數(shù)字電路的設(shè)計,在此基礎(chǔ)上不必變化頂層文件架構(gòu)可隨意變更樂曲,有效縮短了產(chǎn)品開發(fā)周期、減少了設(shè)計芯片的數(shù)量、降低了功耗、提高了設(shè)計的靈活性、可靠性和可擴展性 本次設(shè)計可以說達到了設(shè)計要求,但尚有需要改進的地方。隨著樂譜的復(fù)雜程度加大, 如果依然在音調(diào)發(fā)生器的程序中通過時鐘計數(shù)來決定音符的輸出,會加大編程的繁雜 度, 這時一個很好的解決辦法就是把將要演奏的樂譜存放在人為開辟的存儲空間里, 這樣只需要在相應(yīng)地址中讀出音符即可。5 設(shè)計心得與感想在這 2 周里我用 eda 的知識完成了樂曲硬件演奏電路的設(shè)計,這使我對這門課程有 了更深

18、一步的了解。 隨著科學(xué)技術(shù)的發(fā)展,電子信息技術(shù)與人們的生活已經(jīng)分不開,可以說人們 走到哪里都離不開電子產(chǎn)品,如我們常遇到的交通信號燈,出租車計價器,家用 電器更不用說。 我很榮幸能選擇到這個專業(yè)學(xué)習(xí),我想我會在今后的工作生活中, 能用所學(xué)的知識為人們創(chuàng)造出更多更方便的東西來滿足人們的需要。 在這 2 周里,我通過查找資料,向老師請教等完成了樂曲硬件演奏電路的設(shè) 計,以前在課堂上只是聽老師說 eda 是門很常用的學(xué)科,能完成各種儀器的編 程等,但從來沒有應(yīng)用到實踐中來,所以我以前對這門課感到很陌生,不知道怎 么才能將這門課應(yīng)用到實踐。不過在這 2 周里,我認(rèn)真的查找資料,上機調(diào)試, 使我對這門課

19、有了更進一步的認(rèn)識,它功能強大,應(yīng)用到的范圍也非常的廣,因 此我很高興能學(xué)到這么一門有用的學(xué)科。通過這 2 周的時間,我把以前學(xué)過的知 識從理論應(yīng)用到了實踐,這大大培養(yǎng)了我獨立思考的能力和動手能力,也鍛煉了 我遇到困難不要受到挫折的心理,我感到個人能力又得到了提高??傊@次課程設(shè)計為我以后的工作奠定了堅實的基礎(chǔ),充分鍛煉了我的個人能力,作為電子信息工程專業(yè)的一名學(xué)生,我會在以后的工作生活中不段磨練自己,為社會創(chuàng)造出更多有益于人們生活的產(chǎn)品來。6 參考文獻1.潘松、黃繼業(yè)等編著. eda 技術(shù)與 vhdlm.北京:清華大學(xué)出版社 2.邊計年主編.用 vhdl 設(shè)計電子線路m.北京:清華大學(xué)出版

20、社3.王金明,楊吉斌等編著.數(shù)字系統(tǒng)設(shè)計與 verilog hdld.北京:電子工業(yè)出版社4.徐志軍,徐光輝等編著.cpld/fpga 開發(fā)與應(yīng)用m.北京:電子工業(yè)出版社5.潘松,黃繼業(yè)等編著.eda 技術(shù)實用教程(第 2 版)m.北京:科學(xué)出版社 6.葉天遲主編.eda 實用技術(shù)實驗及課程設(shè)計指導(dǎo)書m.長春:自編實驗指導(dǎo)書附錄1 notetabs程序library ieee;use ieee.std_logic_1164.all;entity notetabs isport(rst:in std_logic; clk:in std_logic; d:in std_logic; toneind

21、ex2:out std_logic_vector(3 downto 0);end notetabs;architecture one of notetabs issignal counter1:integer range 0 to 269;signal counter2:integer range 0 to 163;begincnt8:process(clk)beginif rst=1 then counter1=0;counter2=0;elsif counter1=269 thencounter1=0;elsif counter2=163 thencounter2=0;elsif clke

22、vent and clk=1thencounter1=counter1+1;counter2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

23、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

24、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

25、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

26、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

27、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

28、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

29、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

30、index2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tone

31、index2toneindex2toneindex2toneindex2toneindex2null;end case;elsif d=1thencase counter2 iswhen 0=toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2toneindex2tonein

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論