樂曲演奏課程設計報告樂曲演奏電路的設計_第1頁
樂曲演奏課程設計報告樂曲演奏電路的設計_第2頁
樂曲演奏課程設計報告樂曲演奏電路的設計_第3頁
樂曲演奏課程設計報告樂曲演奏電路的設計_第4頁
樂曲演奏課程設計報告樂曲演奏電路的設計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北 華 航 天 工 業(yè) 學 院eda技術綜合設計課程設計報告報告題目: 樂曲演奏電路的設計 作者所在系部: 作者所在專業(yè): 作者所在班級: 作 者 姓 名 : 指導教師姓名: 完 成 時 間 : 內 容 摘 要在eda開發(fā)工具quartus ii 6.0平臺上,采用vhdl語言層次化和模塊化的設計方法,通過音符編碼的設計思想,預先定制樂曲,實現動態(tài)顯示樂曲演奏電路的設計,并在此基礎上,基于同一原理,使此電路同時具備了簡易電子琴的功能,使基于cpld/fpga芯片的樂曲播放數字電路得到了更好的優(yōu)化,提高了設計的靈活性和可擴展性。關鍵字:eda;quartus ii;vhdl;cpld/fpga;

2、樂曲演奏電路;簡易電子琴課程設計任務書課題名稱樂曲演奏電路的設計完成時間2011/12/15指導教師胡輝職稱副教授學生姓名宋志朋班 級b09212總體設計要求和技術要點總體設計要求: 通過本課程的學習使學生掌握可編程器件、eda開發(fā)系統(tǒng)軟件、硬件描述語言和電子線路設計與技能訓練等各方面知識;提高工程實踐能力;學會應用eda技術解決一些簡單的電子設計問題。技術要點:設計一個樂曲演奏電路,由鍵盤輸入控制音響,同時可自動演奏樂曲,演奏時可通過鍵盤選擇已存入的樂曲(3種),揚聲器利用試驗箱上的。利用1位led顯示器顯示已存入的樂曲的種類。擴展功能:利用發(fā)光二極管顯示高低音及音節(jié)的長短。工作內容及時間進

3、度安排第15周:周4:立題、論證方案設計周5:仿真實驗周6:驗收答辯課程設計成果1與設計內容對應的軟件程序2課程設計報告書3成果使用說明書4設計工作量要求二、設計原理1.1.1 音調的控制頻率的高低決定了音調的高低。音樂的十二平均率規(guī)定:每兩個八度音(如簡譜中的中音1和高音1)之間的頻率相差一倍。在兩個八度音之間又分為十二個半音。另外,音名a(簡譜中的低音6)的頻率為440hz,音名b到c之間、e到f之間為半音,其余為全音。由此可以計算出簡譜中從低音1到高音1之間每個音名對應的頻率,所有不同頻率的信號都是從同一個基準頻率分頻得到的。由于音階頻率多為非整數,而分頻系數又不能為小數,因此必須將計算

4、得到的分頻數四舍五入取整。若基準頻率過低,則由于分頻比太小,四舍五入取整后的誤差較大;若基準頻率過高,雖然誤差較小,但分頻數將變大。實際的設計應綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的基準頻率。因此,要想fpga發(fā)出不同音符的音調,實際上只要控制它輸出相應音符的頻率即可。綜合考慮各因素,本文中選取12mhz作為clk的分頻計數器的輸入分頻信號。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應的頻率,就可以在揚聲器上連續(xù)地發(fā)出各個音符的音調。表3-1簡譜中的音名與頻率的關系音名頻率/hz音名頻率/hz音名頻率/hz低音1261.6中音1523.3高音1104

5、5.5低音2293.7中音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.5資料來源:epm7128實驗板說明書1.1.2 音長的控制音符的持續(xù)時間須根據樂曲的速度及每個音符的節(jié)拍數來確定。因此,在想控制音符的音長,就必須知道樂曲的速度和每個音符所對應的節(jié)拍數,在這個設計中所演奏的樂曲的最短的音符為四分音符,如果將全音符的持續(xù)時間設為1s的話,那么一拍所應該持續(xù)的時間為0.25秒,則只需要再

6、提供一個4hz的時鐘頻率即可產生四分音符的時長。要想讓系統(tǒng)知道現在應該演奏哪個音符,而這個音符持續(xù)的時間應該是多少,就必須編寫樂曲文件,在樂曲文件中音符是按地址存放的,當系統(tǒng)工作時就按4hz的頻率依次讀取簡譜,當系統(tǒng)讀到某個音符的簡譜時就對應發(fā)這個音符的音調,持續(xù)時間為0.25秒,而如果在曲譜文件中這個音符為三拍音長,那又該如何控制呢?其實只要將該音符連續(xù)書寫三遍,這時系統(tǒng)讀樂曲文件的時候就會連續(xù)讀到三次,也就會發(fā)三個0.25秒的音長,這時我們聽上去就會持續(xù)了三拍的時間,通過這樣一個簡單的操作就可以控制音樂的音長了。三源程序1、編碼器。library ieee;use ieee.std_log

7、ic_1164.all;entity bianma is port(din:in std_logic_vector(3 downto 0);view:out std_logic_vector(2 downto 0);dout:out std_logic_vector(10 downto 0);end bianma;architecture made_bianma of bianma isbeginprocess(din)begincase din is-gao_yin-when =doutdoutdoutdout=11010011010;viewdout=11010000101;viewdou

8、t=11001010110;viewdout=11000100010;viewdoutdoutdoutdout=10100110100;viewdout=10100001010;viewdout=10010101101;viewdout=10001000100;viewdoutdoutdoutdout=01001101000;viewdout=01000010000;viewdout=00101011001;viewdout=00010001001;view doutdoutdoutdoutdoutdout=din1;end case;end process;end made_change;

9、3、分頻器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(din: in std_logic_vector(10 downto 0);clk: in std_logic;dout: out std_logic);end fenpin;architecture made of fenpin issignal temp:std_logic_vector(10 downto 0);beginprocess(din,clk)beginif(clkevent an

10、d clk=1)thenif(temp=2047)thentemp=din;elsetemp=temp+1;end if;end if;end process;dout=1 when temp=2046 else 0;end made;4、音樂模塊1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music isport(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music;arc

11、hitecture make_music of made_music issignal temp:std_logic_vector(5 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=48) then temp=000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdou

12、tdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;音樂模塊2library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music1 isport(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music1;architecture make_m

13、usic of made_music1 issignal temp:std_logic_vector(6 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=72) then temp=0000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutd

14、outdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;音樂模塊3library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity made_music2 isp

15、ort(clk_2hz:in std_logic;dout:out std_logic_vector(3 downto 0);end made_music2;architecture make_music of made_music2 issignal temp:std_logic_vector(6 downto 0);beginprocess(clk_2hz)beginif(clk_2hzevent and clk_2hz=1) thenif(temp=45) then temp=0000000;else tempdoutdoutdoutdoutdoutdoutdoutdoutdoutdou

16、tdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000; -0end case;end process;end make_music;4、 總原理圖五、實驗目的1. 熟練掌握vhdl 語言和quartus ii 軟件的使用;2. 理解狀態(tài)機的工作原理和設計方法;3. 掌握利用eda 工具進行自頂向下的電子系統(tǒng)設計方法六、實驗步驟1.將實驗系統(tǒng)上

17、rs232接口與計算機串行口相連。2.用vhdl將源程序輸入quartus ii軟件中。3.編譯程序并進行引腳分配,最后將程序下載到器件中去。七、收獲和體會:通過本次eda課設,我學會了語言的一些基本用法,應用了原來不會或者不熟練的句型,如if句,也學會了一些基本功能的實現方法,如分頻,狀態(tài)控制等等,從另外一個角度重新審視了這個學期完全從硬件角度出發(fā)的電路設計,明白了軟硬件之間的交互。通過這次實驗,對系統(tǒng)框圖的設計有了一定的了解。懂得了系統(tǒng)的前期設計對于后續(xù)的編程和調試的重要性。本次實驗采用了自下而上的設計方法,根據系統(tǒng)對硬件的要求,分化模塊,利用模塊實現功能,最后進行仿真和調試。雖然這次實驗遇到的問題不少,但是在胡輝老師以及同學的幫助下,我都順利地解決了,并為將來的實踐積累了寶貴的經驗和教訓。具體的經驗和教訓有:1模塊化設計有利于提高硬件設計的效率。2邏輯正確和仿真真確并不代表著實際實驗的正確,通常情況下,要適當地調整邏輯以適應硬件。要特別注意仿真時出現的毛刺和偏差,到底是由于仿真設置不合理還是仿真結果確實有問題。3從簡到難,逐步深入,先打出程序的框架,實現基本功能,然后再逐步細化。4學會經常和老師、同

溫馨提示

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

評論

0/150

提交評論