歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

eda課程設計 音樂播放器樂曲演奏電路 世上只有媽媽好

  • 資源ID:59475092       資源大?。?span id="loljw4a" class="font-tahoma">146KB        全文頁數(shù):16頁
  • 資源格式: DOC        下載積分:16積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要16積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

eda課程設計 音樂播放器樂曲演奏電路 世上只有媽媽好

電子信息科學與技術(shù) 專業(yè)課程設計任務書學生姓名專業(yè)班級學號題 目樂曲演奏電路課題性質(zhì)A課題來源D指導教師同組姓名無主要內(nèi)容根據(jù)設計,樂曲演奏電路應滿足以下基本要求:(1) 用純硬件的方法設計音樂演奏電路。(2) 采用模塊化設計的方法設計樂曲演奏電路(3) 能反復演奏程序中的“世上只有媽媽好”樂曲片段。(4) 當改變時鐘頻率時樂曲播放的快慢節(jié)奏會發(fā)生變化。(5) 數(shù)碼管能顯示當前的簡譜碼。任務要求根據(jù)設計題目要求編寫相應程序代碼對編寫的VHDL程序代碼進行編譯和仿真條件允許,完成硬件驗證(可選)總結(jié)設計內(nèi)容,完成課程設計說明書參考文獻1 焦素敏 EDA課程設計指導書 河南工業(yè)大學 20082 曹昕燕 EDA技術(shù)實驗與課程設計 北京清華大學出版社 20043 黃智偉 FPGA系統(tǒng)設計與實踐 電子工業(yè)出版社 20054 焦素敏. EDA技術(shù)基礎 清華大學出版社 20055 劉昌華 數(shù)字邏輯EDA設計與實踐 國防工業(yè)出版社 2005審查意見指導教師簽字:教研室主任簽字: 2012年 02月 20日 說明:本表由指導教師填寫,由教研室主任審核后下達給選題學生,裝訂在設計(論文)首頁EDA課程設計報告1 設計任務及要求用VHDL語言設計音樂的節(jié)拍與音符產(chǎn)生電路;用VHDL語言設計分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;用VHDL語言設計可控分頻器電路;理解簡易音樂播放器總體設計方案。掌握基本的VHDL語言,理解簡易音樂播放器總體設計方案。掌握用VHDL語言設計音樂的節(jié)拍與音符產(chǎn)生電路,掌握用VHDL語言設計分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路,掌握用VHDL語言設計可控分頻器電路。設計結(jié)果及原理圖與原程序、電路仿真圖。能在實訓系統(tǒng)上播放悅耳動聽的音樂。其基本要求及內(nèi)容如下:一、 用純硬件的方法設計音樂演奏電路。二、 采用模塊化設計的方法設計樂曲演奏電路。三、 能反復演奏程序中的“世上只有媽媽好”樂曲片段。四、 當改變時鐘頻率時樂曲播放的快慢節(jié)奏會發(fā)生變化。五、 數(shù)碼管能顯示當前的簡譜碼。2設計原理及總體框圖產(chǎn)生音樂的兩個因素是音樂頻率和音樂的持續(xù)時間,以純硬件完成演奏電路比利用微處理器來實現(xiàn)樂曲演奏要復雜的多,如果不借助于功能強大的EDA工具和硬件描述語言,憑借傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡單的演奏電路也難以實現(xiàn)。根據(jù)設計要求,樂曲硬件演奏電路系統(tǒng)主要由數(shù)控分頻器和樂曲存儲模塊組成。數(shù)控分頻器對FPGA的基準頻率進行分頻,得到與各個音階對應的頻率輸出。樂曲存儲模塊產(chǎn)生節(jié)拍控制和音階選擇信號,即在此模塊中可存放一個樂曲曲譜真值表,由一個計數(shù)器來控制此真值表的輸出,而由計數(shù)器的計數(shù)時鐘信號作為樂曲節(jié)拍控制信號。其中,樂曲的每個音符的頻率值,即音調(diào),頻率的高低決定了音調(diào)的高低。音樂的十二平均率規(guī)定:每兩個八度音(如簡譜中的中音1與高音1)之間的頻率相差一倍。在兩個八度音之間,又可以分為十二個半音,每兩個半音的頻率比為21/12 1.12246 。音名A(簡譜中的低音6)的頻率為440Hz,音名B到C之間,E到F之間為半音,其余為全音。持續(xù)的時間為音長,音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。本實驗演奏的世上只有媽媽好片斷,最短的音符為四分音符,如果全音符的持續(xù)時間設為1s,則四分音符的持續(xù)時間為0.25s。反饋預置計數(shù)器對基準頻率12MHz進行分頻,產(chǎn)生分頻后的輸出時鐘信號。再經(jīng)過2分頻器,成為方波信號,以驅(qū)動揚聲器發(fā)聲。 音名顯示電路顯示樂曲演奏時對應的音符。樂譜產(chǎn)生電路用來根據(jù)高音、中音和低音的值決定分頻計數(shù)器的預置數(shù)的值。反饋預置數(shù)2分頻器樂譜產(chǎn)生電路音符顯示12MHZ4HZ揚聲器數(shù)碼管系統(tǒng)整體框圖系統(tǒng)的頂層設計如下所示LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SONGER IS PORT(CLK12MHZ : IN STD_LOGIC; CLK8HZ: IN STD_LOGIC; CODE1 : OUT INTEGER RANGE 0 TO 15 ; HIGH1: OUT STD_LOGIC; SPKOUT: OUT STD_LOGIC );END;ARCHITECTURE ONE OF SONGER IS COMPONENT NOTETABS PORT(CLK:IN STD_LOGIC; TONEINDEX: OUT INTEGER RANGE 0 TO 15); END COMPONENT; COMPONENT TONETABA PORT(INDEX: IN INTEGER RANGE 0 TO 15 ; CODE: OUT INTEGER RANGE 0 TO 15 ; HIGH: OUT STD_LOGIC; TONE: OUT INTEGER RANGE 0 TO 16#7FF#); END COMPONENT; COMPONENT SPEAKERA PORT(CLK:IN STD_LOGIC; TONE:IN INTEGER RANGE 0 TO 16#7FF#; SPKS:OUT STD_LOGIC); END COMPONENT;SIGNAL TONE: INTEGER RANGE 0 TO 16#7FF#;SIGNAL TONEINDEX: INTEGER RANGE 0 TO 15;BEGIN U1: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;3 程序設計樂曲演奏電路有3個模塊組成,分別為:樂曲簡譜碼對應的分頻預置數(shù)查表模塊tonetaba、數(shù)控分頻器模塊speakera以及音樂節(jié)拍和音調(diào)發(fā)生器模塊notebabs。以下介紹各模塊的詳細設計。3.1樂曲簡譜碼對應的分頻預置數(shù)查表模塊tonetaba 模塊tonetaba 是樂曲簡碼對應的分頻預置數(shù)查表電路,其中設置了“世上只有媽媽好”樂曲對應的分頻預置數(shù)。每一個音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生器模塊notetabs的clk輸入頻率決定,在此為4hz.這13個值的輸出由對應于tonetaba的4位輸入值index3.0確定,而index3.0最多有16種可選值。輸向tonetaba中index3.0的值toneindex3.0的輸出值與持續(xù)時間由模塊notetabs決定。樂曲簡碼對應的分頻預置數(shù)查表電路模塊由VHDL程序來實現(xiàn),程序代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tonetaba IS PORT(index : IN INTEGER RANGE 0 TO 15; code : OUT INTEGER RANGE 0 TO 15; high : OUT STD_LOGIC ; tone : OUT INTEGER RANGE 0 TO 16#7FF# );END;ARCHITECTURE one OF Tonetaba ISBEGIN SEARCH: PROCESS(index) BEGIN CASE index IS WHEN 0 => tone<=2047;code<=0;high<='0' WHEN 1 => tone<=773;code<=1;high<='0' WHEN 2 => tone<=912;code<=2;high<='0' WHEN 3 => tone<=1036;code<=3;high<='0' WHEN 5 => tone<=1197;code<=5;high<='0' WHEN 6 => tone<=1290;code<=6;high<='0' WHEN 7 => tone<=1372;code<=7;high<='0' WHEN 8 => tone<=1410;code<=1;high<='1' WHEN 9 => tone<=1480;code<=2;high<='1' WHEN 10=> tone<=1542;code<=3;high<='1' WHEN 12 => tone<=1622;code<=5;high<='1' WHEN 13 => tone<=1668;code<=6;high<='1' WHEN 15 => tone<=1728;code<=1;high<='1' WHEN OTHERS => NULL; END CASE; END PROCESS;END;3.2 數(shù)控分頻器模塊speakera這是一個數(shù)控分頻器,有其clk端口輸入一個有較高頻率的信號,通過其分頻后有spkout輸出。由于直接從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于揚聲器驅(qū)動,需要另加一個D觸發(fā)器來均衡其占空比,但這時的頻率將是原來的二分之一。數(shù)控分頻器模塊speakera由VHDL程序來實現(xiàn),程序代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY speakera IS PORT(clk :IN STD_LOGIC; tone:IN INTEGER RANGE 0 TO 16#7FF#; spks: OUT STD_LOGIC);END;ARCHITECTURE one OF speakera IS SIGNAL preclk:STD_LOGIC; SIGNAL fullspks:STD_LOGIC;BEGIN divideclk:PROCESS(clk) VARIABLE count4:INTEGER RANGE 0 TO 15; BEGINpreclk<='0' IF count4>11 THEN preclk<='1'count4:=0; ELSIF clk'EVENT AND clk='1' THEN count4:=count4+1; END IF; END PROCESS; genspks:PROCESS(preclk,tone) VARIABLE count11: INTEGER RANGE 0 TO 16#7FF#; BEGIN IF preclk'EVENT AND preclk='1' THEN IF count11=16#7FF# THEN count11:= tone; fullspks<='1' ELSE count11:=count11+1; fullspks<='0' END IF; END IF; END PROCESS; delaysks:PROCESS(fullspks) VARIABLE count2:STD_LOGIC; BEGIN IF fullspks 'EVENT 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音樂節(jié)拍和音調(diào)發(fā)生器模塊notebabs 在notetabs中設置了一個8位二進制計數(shù)器,這個計數(shù)器的技術(shù)頻率選為4hz,即每一計數(shù)值的停留時間為0.25s,恰為當全音符設為1s時,四四拍的4分音符持續(xù)時間。音樂節(jié)拍和音調(diào)發(fā)生器模塊notebabs由VHDL程序來實現(xiàn),程序代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY notetabs IS PORT(clk :IN STD_LOGIC; toneindex: OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF notetabs IS SIGNAL counter:INTEGER RANGE 0 TO 127; BEGIN CNT8:PROCESS(clk) BEGIN IF counter=127 THEN counter<=0; ELSIF(clk'EVENT AND clk='1') THEN counter<=counter+1; END IF; END PROCESS; SEARCH:PROCESS(counter) BEGIN CASE counter IS WHEN 00 => toneindex<=13; WHEN 01 => toneindex<=13;WHEN 02 => toneindex<=13; WHEN 03 => toneindex<=13; WHEN 04 => toneindex<=13;WHEN 05 => toneindex<=13; WHEN 06 => toneindex<=13; WHEN 07 => toneindex<=12;WHEN 08 => toneindex<=12; WHEN 09 => toneindex<=10; WHEN 10 => toneindex<=10; WHEN 11 => toneindex<=10; WHEN 12 => toneindex<=10; WHEN 13 => toneindex<=12; WHEN 14 => toneindex<=12; WHEN 15 => toneindex<=12; WHEN 16 => toneindex<=12; WHEN 17 => toneindex<=15; WHEN 18 => toneindex<=15; WHEN 19 => toneindex<=15; WHEN 20 => toneindex<=15; WHEN 21 => toneindex<=13; WHEN 22 => toneindex<=13; WHEN 23 => toneindex<=12; WHEN 24 => toneindex<=12; WHEN 25 => toneindex<=13; WHEN 26 => toneindex<=13; WHEN 27 => toneindex<=13; WHEN 28 => toneindex<=13; WHEN 29 => toneindex<=13; WHEN 30 => toneindex<=13; WHEN 31 => toneindex<=13; WHEN 32 => toneindex<=13; WHEN 33 => toneindex<=10; WHEN 34 => toneindex<=10; WHEN 35 => toneindex<=10; WHEN 36 => toneindex<=10; WHEN 37 => toneindex<=12; WHEN 38 => toneindex<=12; WHEN 39 => toneindex<=13; WHEN 40 => toneindex<=13; WHEN 41 => toneindex<=12; WHEN 42 => toneindex<=12; WHEN 43 => toneindex<=12; WHEN 44 => toneindex<=12; WHEN 45 => toneindex<=10; WHEN 46 => toneindex<=10; WHEN 47 => toneindex<=10; WHEN 48 => toneindex<=10; WHEN 49 => toneindex<=8; WHEN 50 => toneindex<=8; WHEN 51 => toneindex<=6; WHEN 52 => toneindex<=6; WHEN 53 => toneindex<=12; WHEN 54 => toneindex<=12; WHEN 55 => toneindex<=10; WHEN 56 => toneindex<=10; WHEN 57 => toneindex<=9; WHEN 58 => toneindex<=9; WHEN 59 => toneindex<=9; WHEN 60 => toneindex<=9; WHEN 61 => toneindex<=9; WHEN 62 => toneindex<=9; WHEN 63 => toneindex<=9; WHEN 64 => toneindex<=9; WHEN 65 => toneindex<=9; WHEN 66 => toneindex<=9; WHEN 67 => toneindex<=9; WHEN 68 => toneindex<=9; WHEN 69 => toneindex<=9; WHEN 70 => toneindex<=9; WHEN 71 => toneindex<=10; WHEN 72 => toneindex<=10; WHEN 73 => toneindex<=12; WHEN 74 => toneindex<=12; WHEN 75 => toneindex<=12; WHEN 76 => toneindex<=12;WHEN 77 => toneindex<=12; WHEN 78 => toneindex<=12; WHEN 79 => toneindex<=13; WHEN 80 => toneindex<=13; WHEN 81 => toneindex<=10; WHEN 82 => toneindex<=10; WHEN 83 => toneindex<=10; WHEN 84 => toneindex<=10; WHEN 85 => toneindex<=9; WHEN 86 => toneindex<=9; WHEN 87 => toneindex<=9; WHEN 88 => toneindex<=9; WHEN 89 => toneindex<=8; WHEN 90 => toneindex<=8; WHEN 91 => toneindex<=8; WHEN 92 => toneindex<=8; WHEN 93 => toneindex<=8; WHEN 94 => toneindex<=8; WHEN 95 => toneindex<=8; WHEN 96 => toneindex<=8; WHEN 97 => toneindex<=12; WHEN 98 => toneindex<=12; WHEN 99 => toneindex<=12; WHEN 100 => toneindex<=12; WHEN 101 => toneindex<=12; WHEN 102 => toneindex<=12; WHEN 103 => toneindex<=10; WHEN 104 => toneindex<=10; WHEN 105 => toneindex<=9; WHEN 106 => toneindex<=9; WHEN 107 => toneindex<=8; WHEN 108 => toneindex<=8; WHEN 109 => toneindex<=6; WHEN 110 => toneindex<=6; WHEN 111 => toneindex<=8; WHEN 112 => toneindex<=8; WHEN 113 => toneindex<=5; WHEN 114 => toneindex<=5; WHEN 115 => toneindex<=5; WHEN 116 => toneindex<=5; WHEN 117 => toneindex<=5; WHEN 118 => toneindex<=5; WHEN 119 => toneindex<=5; WHEN 120 => toneindex<=5; WHEN 121 => toneindex<=5; WHEN 122 => toneindex<=5; WHEN 123 => toneindex<=5; WHEN 124 => toneindex<=5; WHEN 125 => toneindex<=0; WHEN 126 => toneindex<=0; WHEN 127 => toneindex<=0; WHEN OTHERS=>NULL; END CASE; END PROCESS;END;4 編譯及仿真4.1樂曲簡譜碼對應的分頻預置數(shù)查表模塊tonetaba模塊仿真及分析VHDL程序?qū)崿F(xiàn)后,對其進行編譯仿真,其仿真圖如圖4.1所示。圖4.1 分頻模塊仿真圖對仿真圖進行仿真分析:如圖所示,譯碼電路分頻預置值查表并輸出控制音調(diào)的預置數(shù),同時由code輸出顯示對應的簡譜碼,由high輸出顯示音調(diào)高低。4.2數(shù)控分頻器模塊speakeraVHDL程序?qū)崿F(xiàn)后,其仿真圖如圖4.2所示。圖4.2主控模塊時序仿真圖對時序仿真圖進行分析:將clk進行11分頻,若計數(shù)已滿,在時鐘的上升沿將預置數(shù)鎖入11位計數(shù)器并使fullspks輸出高電平,否則繼續(xù)計數(shù)輸出低電平。最后再將輸出進行二分頻,將脈沖展寬以使揚聲器有足夠功率發(fā)音。 4.3音樂節(jié)拍和音調(diào)發(fā)生器模塊notebabs VHDL程序?qū)崿F(xiàn)后,進行編譯仿真其仿真圖如圖4.3所示。圖4.3左邊燈控制模塊時序仿真圖對時序仿真圖進行分析:先是譯碼器,查歌曲的樂普表,查表結(jié)果為音調(diào)表,把索引值輸入,看幾個時鐘節(jié)拍以及節(jié)拍的時長。上圖為開始的樂譜表。4.4整個系統(tǒng)仿真及分析仿真圖如下所示。圖4.5 整個系統(tǒng)仿真圖對時序仿真圖進行分析:時鐘信號輸入之后,按照音調(diào)表的的音調(diào)順序及時長,依次進行每個音符的進入及輸出,一直持續(xù)到所有的音符全部播放完畢。整個系統(tǒng)仿真結(jié)果顯示此次設計從原理來說是成功的。5 硬件調(diào)試與結(jié)果分析頂層文件編譯仿真好之后進行引腳鎖定,然后通過電腦連接到試驗箱上,下載頂層文件到FPGA里,下載完畢之后選擇模式,然后選擇按鍵播放歌曲,歌曲會一直循環(huán)播放,并且數(shù)碼管也會顯示對應的簡譜碼。硬件調(diào)試的結(jié)果證明此設計是可以硬件調(diào)試并成功運行的。6 參考文獻1 焦素敏 EDA課程設計指導書 河南工業(yè)大學 20082 曹昕燕 EDA技術(shù)實驗與課程設計 北京清華大學出版社 20043 黃智偉 FPGA系統(tǒng)設計與實踐 電子工業(yè)出版社 20054 焦素敏. EDA技術(shù)基礎 清華大學出版社 20055 劉昌華 數(shù)字邏輯EDA設計與實踐 國防工業(yè)出版社 2005 心得體會這次的課程設計,使我對EDA以及VHDL語言有了一定的了解。同時,也培養(yǎng)和鍛煉了我們的實際動手能力,使我們的理論知識與實踐充分地結(jié)合。在編譯、調(diào)試的過程中,出現(xiàn)了各種各樣的錯誤,通過對這些錯誤的修改,我又學到了不少的東西,學到了解決一些問題的方法,以及知道了產(chǎn)生這些問題的原因。發(fā)現(xiàn)問題,并一步步解決問題的過程不禁讓我對EDA有了更深的了解與更加嫻熟的應用,也讓我的邏輯思維能力得到很大的提高。從課程設計初始,我就一點點的查閱資料,編程過程中,亦是不停的修改程序以求能達到精簡,完整和更多的改進。同時,我也特別留意了與我的實驗題目相仿的VHDL語言程序的設計,讓我在做完自己的程序的同時有了更加深刻的理解與應用,總之,本次課程設計大大提高了我的編程能力、動手能力、獨立思考的能力以及發(fā)現(xiàn)問題并解決問題的能力。當自己親自一步步編完,仿真完,硬件驗證完的時候,仍會有不小的激動,長達兩個星期的EDA課程設計落下帷幕,但我會印象深刻??梢哉f,這次綜合性的實驗讓我受益匪淺。

注意事項

本文(eda課程設計 音樂播放器樂曲演奏電路 世上只有媽媽好)為本站會員(門****)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!