




已閱讀5頁,還剩5頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
天津工業大學 通信工程 EDA課程設計報告 EDA課程設計題目:樂曲硬件演奏電路的VHDL設計 專業:通信工程 班級:通信071 姓名:葛鵬 學號:0710920101一、設計題目:樂曲硬件演奏電路的VHDL設計二、設計目標:了解一般樂曲演奏電路設計設計方法,學習VHDL語言,熟悉EDA設計軟件QuartusII和MAX+plus,加強獨立完成電子設計的能力。 (1)能夠播放“梁祝”樂曲。(2)能夠通過LED顯示音階。(3)(選作)具有“播放/停止”功能,并在此基礎上實現“按鍵演奏”的電子琴功能。主芯片型號為FLEX10K10LC84-4三、實驗電路的工作原理:(演奏電路邏輯圖) 組成樂曲的每個音符的發音頻率值及其持續的時間是樂曲能夠連續演奏所需的兩個基本要素,設計演奏電路的關鍵就是獲得這兩個要素所對應的數值以及通過純硬件的手段來利用這些數值實現所希望樂曲的演奏效果。演奏電路邏輯圖有三部分:音樂節拍和音調發生器、簡譜碼對應的分頻預置數查表電路、數控分頻與演奏發生器。演奏電路邏輯圖:四、設計內容:1.完成程序的編輯工作。2.將音樂數據制作成LMP_ROM文件.3.將程序加載到MAX+plus中進行編譯、仿真,并保存仿真結果。4.到實驗室進行下載驗證。引腳進行鎖定,然后下載到實驗芯片中觀察實驗結果。五、仿真結果:1.音樂節拍和音調發生器(NoteTabs.VHD)notetabs模塊中設置了一個8位二進制計數器(計數最大值138),作為音符數據ROM的地址發生器。這個計數器的計數頻率選為4Hz,即每一個計數值的停留時間為0.25秒,恰為當全音符設為1秒時,四四拍的4分音符持續時間。隨著notetabs模塊中的計數器按4Hz的時鐘速率作為加法計數時,即隨地址值遞增時,音符數據ROM中的音符數據將從ROM中通過ToneIndex3.0端口輸向ToneTaba模塊,“梁祝”樂曲就開始連續自然的演奏起來了。Notetabs模塊仿真圖:2.簡譜碼對應的分頻預置數查表電路(ToneTaba.VHD)音符的持續時間需根據樂曲的速度及每個音符的節拍數來確定,tonetaba模塊的功能首先是為speakera提供決定所發音符的預置數,而此數在speakera輸入口停留的時間即為此音符的節拍值。Tonetaba模塊是樂曲簡碼對應的分頻預置數查表電路。其中設置了“梁祝”樂曲全部音符所對應的分頻預置數,共13個,每一音符的停留時間由音樂節拍和音調發生器模塊NoteTabs的clk的輸入頻率決定。這13個值的輸出由對應于ToneTaba的4位輸入值Index3.0確定,而Index3.0最多有16種可選值。輸向ToneTaba中Index3.0的值ToneIndex3.0的輸出值與持續時間有模塊notetabs決定。Tonetaba仿真圖:4.數控分頻與演奏發生器(Speakera.VHD)音符的頻率可由次模塊獲得,這是一個數控分頻器,由其clk端輸入一個具有較高頻率的信號,通過speakera分頻后由spkout輸出,由于直接從數控分頻器中出來的輸出信號是脈沖較窄的脈沖信號,為了有助于驅動揚聲器,需另加一個D觸發器以均衡其占空比,但這時的頻率是原來的1/2。Speakera對clk輸入信號的分頻的預置數Tone10.0與spkout的輸出頻率就有了對應關系。Sperkera模塊仿真圖:5. 梁祝music.vhd(音樂數據):將數據保存為.mif格式然后制作成LMP_ROM文件。六、實驗結果:(程序下載驗證是否通過) 試驗成功!將設計出的演奏電路的程序經過編譯(Compiler)后,選擇FLEX10K系列中EPF10K10LC84-4作為目標器件(Assign/Device),并進行管腳鎖定(Floorplan Editor)。器件編程(Programmer),將編譯生成的*.sof文件下載到目標芯片。觀察到數碼管5顯示出演奏時的音樂簡譜,發光二極管D5指示音調高低,同時實驗箱自帶蜂鳴器(Speaker)奏出“梁祝”那凄美動人的旋律,實驗成功。七、總結:本次樂曲硬件演奏電路的VHDL設計主要采用數控分頻原理來實現,在本次EDA課程設計中,我與其他同學相互交流,相互學習,提高了用VHDL語言編程的技能及進一步加強了MAX+plus對這種EDA流行軟件的應用,通過這次設計,我們溫故了已學的理論知識和實踐操作技能,同時也學習了更多的新的知識和技能,為以后進一步的學習和工作打下了堅實的基礎。本設計得到的電路可以作為一個樂曲演奏模塊,如果要演奏出另外一首曲子,只需將該曲子出現的簡譜分頻預置數寫入ToneTaba.VHD,再將該曲子的節拍表制作成ROM文件輸入到NoteTabs.VHD中,編譯后,編程下載即可。八、附錄(程序)1.Songer頂層文件模塊:LIBRARY IEEE; - 硬件演奏電路頂層設計USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT ( CLK4MHZ : IN STD_LOGIC; -音調頻率信號 CLK8HZ : IN STD_LOGIC; -節拍頻率信號 pause: IN STD_LOGIC; CODE1 : OUT 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; SWITCH: IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba 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 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 (10 DOWNTO 0); SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGINu1 : NoteTabs PORT MAP (clk=CLK8HZ, SWITCH=pause,ToneIndex=ToneIndex);u2 : ToneTaba PORT MAP (Index=ToneIndex,Tone=Tone,CODE=CODE1,HIGH=HIGH1);u3 : Speakera PORT MAP(clk=CLK4MHZ,Tone=Tone, SpkS=SPKOUT );END;2.音樂節拍和音調發生器(NoteTabs.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; switch: IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC -音符數據ROM PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; 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 (clkEVENT AND clk = 1) THEN IF switch = 1 THEN Counter Counter , q=ToneIndex, inclock=clk); END;3.簡譜碼對應的分頻預置數查表電路(ToneTaba.VHD)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 (6 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) );END;ARCHITECTURE one OF ToneTaba ISBEGIN Search : PROCESS(Index) BEGIN CASE Index IS - 譯碼電路,查表方式,控制音調的預置數 WHEN 0000 = Tone=11111111111 ; CODE=0111111; HIGH Tone=01100000101 ; CODE=0000110; HIGH Tone=01110010000 ; CODE=1011011; HIGH Tone=10000001100 ; CODE=1001111; HIGH Tone=10010101101 ; CODE=1101101; HIGH Tone=10100001010 ; CODE=1111101; HIGH Tone=10101011100 ; CODE=0000111; HIGH Tone=10110000010 ; CODE=0000110; HIGH Tone=10111001000 ; CODE=1011011; HIGH Tone=11000000110 ; CODE=1001111; HIGH Tone=11001010110 ; CODE=1101101; HIGH Tone=11010000100 ; CODE=1111101; HIGH Tone=11011000000 ; CODE=0000110; HIGH NULL; END CASE; END PROCESS;END;4.數控分頻與演奏發生器(Speakera.VHD)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_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 := 0000; ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1; END IF; END PROCESS; GenSpkS : PROCESS(PreCLK, Tone)- 11位可預置計數器 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 = 0; END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS)-將輸出再2分頻,展寬脈沖,使揚聲器有足夠功率發音 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;5. 梁祝music.vhd(音樂數據):將數據保存為.mif格式然后制作成LMP_ROM文件。width=4;depth=256;address_radix=dec;data_radix=dec;content begin 00:3;01:3;02:3;03:3;04:5;05:5;06:5;07:6;08:8;09:8; 10:8;11:9;12:6;13:8;14:5;15:5;16:12;17:12;18:12;19:15; 20:13;21:12;22:10;23:12;24:9;2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 泰享懂你 康養友伴-2024年新康養需求洞察白皮書-華泰人壽
- 九年級體育與健康上冊《耐久跑》教學設計
- 2024中鐵國資公開招聘6人筆試參考題庫附帶答案詳解
- 2024中石化化銷國際貿易有限公司公開招聘6人(上海)筆試參考題庫附帶答案詳解
- 九年級信息技術下冊 信息的獲取與分析教學設計 青島版
- 六年級語文上冊 第一單元 3 古詩詞三首《西江月 夜行黃沙道中》教學設計 新人教版
- 放射科工作人員崗位培訓記錄
- 九年級化學上冊 第五單元 定量研究化學反應 第三節 化學反應中的有關計算教學設計 (新版)魯教版
- 方鋼焊接培訓
- 初中音樂人音版七年級上冊萬馬奔騰一等獎教學設計
- 采購工作調研報告(3篇)
- 《遙感導論》全套課件
- 希爾國際商務第11版英文教材課件完整版電子教案
- 《學弈》優質課一等獎課件
- 2023年6月大學英語四級考試真題(第1套)(含答案)
- 飛行器總體設計(二)
- 奧迪A7L汽車說明書
- 棲居之橋的現象學沉思-海德格爾的棲居之思(續)
- 鋼結構焊接施工方案最終版
- 圍絕經期婦女保健指導
- 談判藥品審核備案表
評論
0/150
提交評論