EDA實驗報告5-樂曲硬件演奏電路設計_第1頁
EDA實驗報告5-樂曲硬件演奏電路設計_第2頁
EDA實驗報告5-樂曲硬件演奏電路設計_第3頁
EDA實驗報告5-樂曲硬件演奏電路設計_第4頁
EDA實驗報告5-樂曲硬件演奏電路設計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA技術與應用實驗報告姓名學號專業(yè)年級電子信息工程實驗題目樂曲硬件演奏電路設計實驗目的1. 學習利用數控分頻器設計硬件樂曲演奏電路2. 掌握模塊化和層次化的設計方法以及音符編碼的設計思想實驗原理1. 一定頻率的矩形波通過揚聲器可以發(fā)出相應頻率的聲音,樂曲是由一系列的音符組成的。所以,如果我們通過控制每個音符的發(fā)音頻率值及其持續(xù)的時間,就可以以純硬件的手段,利用這些數值來實現所希望演奏的樂曲。2. 該硬件演奏電路由三個模塊構成<1>音符數據ROM的地址發(fā)生器模塊NoteTabs.vhdl 內置8位二進制計數器,作為ROM的地址發(fā)生器,計數頻率4Hz,即每一計數值的停留時間為0.25

2、s,恰為全音符設為1s時,四四拍的4音符持續(xù)時間。隨著NoteTabs中的計數器按4Hz的時鐘速率作加法計數即地址值遞增時,ROM中的音符數據將通過ToneIndex3.0輸向ToneTaba模塊,樂曲即開始演奏起來。<2>樂曲簡譜碼對應的分頻預置數查表電路模塊ToneTaba.vhdl ToneTaba為Speakera提供決定所發(fā)音符的分頻預置數,此數在Speakera輸入口停留的時間即為此音符的節(jié)拍值。輸入Index3.0可確定樂曲全部音符所對應的分頻預置數(13個)每一音符的停留時間由NoteTabs模塊的clk決定(4Hz)。<3>決定每一個音符音調的數控分頻

3、器模塊Speakera.vhdl 輸入端clk輸入一較高頻率(12MHz)的信號,經Speakera分頻,再經2分頻以展寬脈沖后,由SpkOut輸出。11位預置數Tone10.0決定由clk輸入信號的分頻比,SpkOut輸出的頻率決定每一音符的音調。實驗內容1. 定制存放LPM-ROM模塊Music,在連續(xù)地址上存放樂曲的音符數據,2. 用vhdl文本輸入法和元件例化語句完成NoteTabs.vhdl的設計,該模塊包含音符數據ROM模塊Music.vhdl3. 完成ToneTaba.vhdl的設計,此模塊給數控分頻模塊提供每個音符所對應的分頻預置數,即計數初值4. 完成Speakera.vhd

4、l的設計,該模塊是一個初值可變的加法計數器。該計數器的模為2047,當計數器記滿時,計數器產生一個溢出信號FULL,此溢出信號就是用作發(fā)音的頻率信號5. 用vhdl文本輸入法和元件例化語句完成硬件演奏電路頂層文件 play_song.vhdl的設計,編譯、仿真,選用杭州康芯電子有限公司生產的 GW48系列 EDA實驗箱和Altera公司生產的 FPGA芯片 Cyclone的EP1C6Q240C8,引腳鎖定,下載到FPGA上進行硬件測試實驗步驟1. 定制ROM模塊,生成Music.vhdl地址文件,以存儲樂曲演奏數據2. 輸入NoteTabs.vhdl,編譯、仿真,給出時序波形3. 輸入Tone

5、Taba.vhdl,編譯、仿真,給出時序波形4. 輸入Speakera.vhdl,編譯、仿真,給出時序波形5. 建立硬件演奏電路頂層文件play_song.vhdl,將以上4個vhdl文件拷貝進頂層文件所在目錄,用元件例化語句和層次化設計方法,完成樂曲硬件演奏電路的設計,編譯、仿真,給出時序波形,引腳鎖定并下載進FPGA進行硬件測試實驗結果及分析vhdl文本輸入法時序仿真波形1. 由音符數據地址發(fā)生模塊的仿真波形NoteTabs.sim可知,隨NoteTabs中的計數器按輸入時鐘clk作加法計數,即隨ROM地址值的遞增,ROM中的音符數據將從ToneIndex3.0中輸出。2. 由分頻預置數查

6、表電路模塊的仿真波形ToneTaba.sim可知,由Index3.0譯碼輸出分頻預置數,并通過Tone10.0輸出給Speakera模塊。與演奏發(fā)音相對應的簡譜碼由CODE通過數碼管輸出顯示,HIGH1顯示高八度音。3. 由數控分頻器模塊的仿真波形Speakera.sim可知,由Tone10.0輸入的分頻預置數將clk輸入的一較高頻率(12MHz)的時鐘信號進行分頻,得到不同頻率的輸出FullSpkS,由于FullSpkS直接由數控分頻器輸出,是脈沖極窄的脈沖式信號,經內部增加一個D觸發(fā)器后,可以得到展寬脈沖后的SpkS。4. 由樂曲硬件演奏頂層文件的仿真波形play_song.sim可知,S

7、pkOut是經SpkS的最終的輸出,決定所發(fā)出的每一音符的音調。音符不同,SpkOut的脈寬也不同,通過揚聲器發(fā)出的聲音也不同,因而可以演奏音樂,得到預期的效果。5. 樂曲演奏時,簡譜碼可以在數碼管上同步顯示出來,同時HIGH1對應的LED燈隨高低音的不同,亮滅情況也不同,實驗結果符合預期。實驗過程中所遇到的問題及相應的解決方法1. 剛開始實驗用的是KHF-4型的實驗箱,需要將晶振頻率為22.1184Hz的時鐘信號進行分頻,以得到NoteTabs模塊和Speakera模塊所需的4Hz和12MHz的輸入時鐘,并將簡譜碼通過譯碼輸出到數碼管上顯示。然而在實驗箱測試后卻得不到預期的結果,HIGH1所

8、對應的LED燈恒亮,蜂鳴器發(fā)出持續(xù)的高音。檢查Speakera的時序仿真波形,輸出SpkOut是持續(xù)的低電平,而不是脈寬不一的方波。2. 多次嘗試沒有結果后,決定換杭州康芯電子有限公司生產的 GW48系列 EDA實驗箱,該實驗箱有8個譯碼輸出顯示的數碼管,和可選的多個時鐘輸入端,這樣可以省去譯碼和分頻電路。引腳鎖定,硬件下載測試后,蜂鳴器可以正常放出預置的樂曲。3. 之后對Speakera模塊的仿真文件反復揣摩,多次改變輸入的頻率,并設定不同的分頻預置數,終于可以看到SpkOut輸出脈寬不一的方波信號,對于頂層文件用相同的方法,亦可以得到預期的輸出。4. 個人認為,之前在KHF-4型實驗箱測試

9、的時候,應該是分頻模塊的問題。經22.1184MHz分頻輸出的頻率不滿足該硬件演奏電路所需要的時鐘輸入。NoteTabs模塊的輸入時鐘clk_8Hz(實為4Hz)決定了每一音符在Speakera輸入端停留的時間,而Speakera的輸入時鐘clk_12MHz決定了每一音符的音調。如果時鐘偏差過大,將會導致時許錯亂,如音符在Speakera輸入端停留的時間過長或過短,數控分頻輸出的脈沖過寬或者過窄,這都直接影響音樂的正常播放。5. 在梁祝樂曲演奏成功后,換了一首歌you_and_me,但問題也接踵而至。<1>首先在定制LPM_ROM模塊時,得到的.bsf元件輸入端口跟定制梁祝樂曲ROM時的端口不一致了,在NoteTabs模塊中用了元件例化語句,因此編譯不成功。重新命名端口后,再次編譯,問題解決。<2>其次,在mif文件you_and_me.mif中,depth = 280,而梁祝的為256,即每一字節(jié)的寬度為8bit,結果編譯報錯。于是我把you_and_me的mif文件的地址音符數據去掉后面一部分,使得depth = 256。雖然一首歌不再完整,但在定制LPM_ROM的時候

溫馨提示

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

評論

0/150

提交評論