1 系統(tǒng)的設計要求
應用VHDL硬件描述語言,設計一個樂曲硬件演奏電路,它能將一首預先設置存儲好的樂曲自動播放出來,除此之外,也能夠通過按鍵的方式輸入音符,使其具備簡易電子琴的功能。通過此項研究,能夠深切的體會利用EDA工具開發(fā)的優(yōu)越性,在此基礎上,對樂曲硬件演奏電路功能進行豐富,具有一定的社會實用性。
根據硬件演奏電路的功能進行全局分析,采用自上至下的設計方法,從系統(tǒng)總體要求出發(fā),逐步將設計內容細化,最后完成系統(tǒng)結構的整體設計。將功能分為以下幾個部分,1)實現預先設置樂曲的播放功能;2)實現預置樂曲的暫停和繼續(xù)播放實時控制功能;3)實現預置多首樂曲間的切換功能。
預置樂曲,本文選取了《梁?!返囊欢巫黝A置,作預置時,需要將樂曲音符轉換成相應的代碼,通過計算逐一將音符轉換成代碼,通過EDA開發(fā)平臺quartusii6.0進行樂曲定制。
為了提供樂曲發(fā)音所需要的發(fā)音頻率,編寫數控分頻器程序,對單一輸入高頻,進行預置數分頻,生成每個音符發(fā)音的相應頻率。
為了給分頻提供預置數,需要計算分頻預置數。
對每部分結構單元逐一進行編譯,生成相應的元器件符號,并對獨立結構單元功能進行仿真。
2 系統(tǒng)的詳細設計方案
2.1 頂層實體描述
按照EDA開發(fā)流程,采用VHDL硬件描述語言開發(fā),將樂曲硬件演奏電路設計進行模塊化分解,層次化設計,分成幾個單獨的結構體,每個結構體實現部分功能,最后,經頂層文件將各單獨結構體進行綜合,實現樂曲硬件演奏。
有四個輸入,三個輸出端口。
四輸入端口分別是:clk8hz端口,作為節(jié)拍脈沖信號輸入端口;clk12mhzZ端口,作為發(fā)音頻率初始信號輸入端口;P輸入端口,作為控制歌曲暫停和繼續(xù)播放的輸入端口。ch輸入端口,作為控制歌曲之間切換播放的輸入端口。
三輸出端口分別是:code1輸出端口,作為音符簡碼輸出LED顯示端口;high1輸出端口,作為音符高8度指示端口;spkout輸出端口,作為樂曲的聲音輸出端口。
2.2 模塊劃分
本系統(tǒng)主要由三個功能模塊組成:notetabsvhd,tonetaba.vhd和speakera.vhd.第一部分notetabs,地址發(fā)生器,實現按節(jié)拍讀樂譜的功能;第二部分tonetaba,查表電路,為speakera提供分頻預置數,實現樂曲譯碼輸出CODE[3:0];第三部分speakera,產生發(fā)音頻率,實現樂曲播放。系統(tǒng)結構圖如圖2.
為了實現樂曲的播放,首先需要將曲譜定制到音符數據ROM里面,然后才能按照一定的節(jié)拍從ROM中讀出曲譜。由于所選曲子中不含低音,轉換關系如表1所示。
2.3 模塊描述
sperkera是一個數控分頻器,由其clk端輸入一個12mhz信號,通過speakera分頻后,由spkout,通過一d觸發(fā)器,pinlv變?yōu)樵瓉淼亩种?,sperakera對clk的輸入信號的分頻比由11位tone[100]決定,spkout的輸出頻率為音符的音調。
tonebata的功能首先是為speakera提供分頻預置數,此數的停留時間即為音符的節(jié)拍值,此模塊為歌曲簡譜碼提供對應的分頻預置查表電路,音符停留時間由clk的輸入頻率決定,再次為4hz.
3 系統(tǒng)的方案實現
3.1 各模塊仿真及描述
notetabs作為音符rom的地址發(fā)生器,此模塊中設置了一個8位2進制計數器,頻率為4hz,即為4個音符一秒時間四四拍的4分音符。notetabs計數器計數器按4hz時鐘頻率做加法計數,當stop為高電平時停止加法運算,而當change可設置rom中數據的跳轉,rom通過toneindex[30]端口輸向tonetaba模塊。樂曲就演奏起來了。
由圖6 sperkera仿真波形可以看出,當clk輸入時鐘頻率為12mhz時,輸出端信號clk輸出的頻率,隨tong信號的不同,輸出不同頻率的聲音信號。
由圖7tonetaba信號的仿真波形,可以看出,當輸入信號index[30]輸入不同信號值,code輸出端輸出音符的顯示,high為音符高位信號,tone大于7時high為高電平。
圖8為notetabs仿真波形,當clk輸入時鐘信號,toneindex[30]端從rom中讀入音符數據,當輸入端口stop為“1”時,暫停從rom中讀入數據,stop為“0”繼續(xù)讀取音符信號,change為高低電平時,模塊分別讀取rom不同位置的數據。
3.2 頂層電路仿真及描述
clk8hz端輸入8hz時鐘信號,另一個clk12mhz輸入12mhz時鐘信號,系統(tǒng)將自動從music.mif中讀取音符信號,以頻率不同輸出到spkout,同時輸出到顯示端口,和高音端口,code1[30],high1.p端口可以是音符暫停輸出(高電平時),ch端口控制歌曲間的切換。
4 硬件測試及說明
選擇實驗電路模式1,將引腳鎖定時clk12mhz于clock9連接,短路帽clock接12mhz.clk8hz與clock2連接。發(fā)音輸出spkout接speaker.簡譜碼輸出code1由數碼管5顯示,high高8度指示由發(fā)光管d5指示,p與按鍵d16連接,ch與的15連接。最后向目標芯片下載適配后的sof邏輯設計文件。
5 結論
本次設計在EDA開發(fā)工具QuartusII平臺上,應用語言層次化和模塊化的設計方法,通過音符編碼的設計思想,預先定制樂曲,在此基礎上設計了一個樂曲硬件演奏電路,經過對整體進行模塊化分析、編程、綜合、仿真及最終下載,完整實現簡易音樂器的播放功能。
-
FPGA
+關注
關注
1629文章
21753瀏覽量
604175 -
vhdl
+關注
關注
30文章
817瀏覽量
128169 -
EAD
+關注
關注
0文章
3瀏覽量
6749
發(fā)布評論請先 登錄
相關推薦
評論