1 系統(tǒng)的設(shè)計(jì)要求
應(yīng)用VHDL硬件描述語(yǔ)言,設(shè)計(jì)一個(gè)樂曲硬件演奏電路,它能將一首預(yù)先設(shè)置存儲(chǔ)好的樂曲自動(dòng)播放出來(lái),除此之外,也能夠通過按鍵的方式輸入音符,使其具備簡(jiǎn)易電子琴的功能。通過此項(xiàng)研究,能夠深切的體會(huì)利用EDA工具開發(fā)的優(yōu)越性,在此基礎(chǔ)上,對(duì)樂曲硬件演奏電路功能進(jìn)行豐富,具有一定的社會(huì)實(shí)用性。
根據(jù)硬件演奏電路的功能進(jìn)行全局分析,采用自上至下的設(shè)計(jì)方法,從系統(tǒng)總體要求出發(fā),逐步將設(shè)計(jì)內(nèi)容細(xì)化,最后完成系統(tǒng)結(jié)構(gòu)的整體設(shè)計(jì)。將功能分為以下幾個(gè)部分,1)實(shí)現(xiàn)預(yù)先設(shè)置樂曲的播放功能;2)實(shí)現(xiàn)預(yù)置樂曲的暫停和繼續(xù)播放實(shí)時(shí)控制功能;3)實(shí)現(xiàn)預(yù)置多首樂曲間的切換功能。
預(yù)置樂曲,本文選取了《梁?!返囊欢巫黝A(yù)置,作預(yù)置時(shí),需要將樂曲音符轉(zhuǎn)換成相應(yīng)的代碼,通過計(jì)算逐一將音符轉(zhuǎn)換成代碼,通過EDA開發(fā)平臺(tái)quartusii6.0進(jìn)行樂曲定制。
為了提供樂曲發(fā)音所需要的發(fā)音頻率,編寫數(shù)控分頻器程序,對(duì)單一輸入高頻,進(jìn)行預(yù)置數(shù)分頻,生成每個(gè)音符發(fā)音的相應(yīng)頻率。
為了給分頻提供預(yù)置數(shù),需要計(jì)算分頻預(yù)置數(shù)。
對(duì)每部分結(jié)構(gòu)單元逐一進(jìn)行編譯,生成相應(yīng)的元器件符號(hào),并對(duì)獨(dú)立結(jié)構(gòu)單元功能進(jìn)行仿真。
2 系統(tǒng)的詳細(xì)設(shè)計(jì)方案
2.1 頂層實(shí)體描述
按照EDA開發(fā)流程,采用VHDL硬件描述語(yǔ)言開發(fā),將樂曲硬件演奏電路設(shè)計(jì)進(jìn)行模塊化分解,層次化設(shè)計(jì),分成幾個(gè)單獨(dú)的結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體實(shí)現(xiàn)部分功能,最后,經(jīng)頂層文件將各單獨(dú)結(jié)構(gòu)體進(jìn)行綜合,實(shí)現(xiàn)樂曲硬件演奏。
有四個(gè)輸入,三個(gè)輸出端口。
四輸入端口分別是:clk8hz端口,作為節(jié)拍脈沖信號(hào)輸入端口;clk12mhzZ端口,作為發(fā)音頻率初始信號(hào)輸入端口;P輸入端口,作為控制歌曲暫停和繼續(xù)播放的輸入端口。ch輸入端口,作為控制歌曲之間切換播放的輸入端口。
三輸出端口分別是:code1輸出端口,作為音符簡(jiǎn)碼輸出LED顯示端口;high1輸出端口,作為音符高8度指示端口;spkout輸出端口,作為樂曲的聲音輸出端口。
2.2 模塊劃分
本系統(tǒng)主要由三個(gè)功能模塊組成:notetabsvhd,tonetaba.vhd和speakera.vhd.第一部分notetabs,地址發(fā)生器,實(shí)現(xiàn)按節(jié)拍讀樂譜的功能;第二部分tonetaba,查表電路,為speakera提供分頻預(yù)置數(shù),實(shí)現(xiàn)樂曲譯碼輸出CODE[3:0];第三部分speakera,產(chǎn)生發(fā)音頻率,實(shí)現(xiàn)樂曲播放。系統(tǒng)結(jié)構(gòu)圖如圖2.
為了實(shí)現(xiàn)樂曲的播放,首先需要將曲譜定制到音符數(shù)據(jù)ROM里面,然后才能按照一定的節(jié)拍從ROM中讀出曲譜。由于所選曲子中不含低音,轉(zhuǎn)換關(guān)系如表1所示。
2.3 模塊描述
sperkera是一個(gè)數(shù)控分頻器,由其clk端輸入一個(gè)12mhz信號(hào),通過speakera分頻后,由spkout,通過一d觸發(fā)器,pinlv變?yōu)樵瓉?lái)的二分之一,sperakera對(duì)clk的輸入信號(hào)的分頻比由11位tone[100]決定,spkout的輸出頻率為音符的音調(diào)。
tonebata的功能首先是為speakera提供分頻預(yù)置數(shù),此數(shù)的停留時(shí)間即為音符的節(jié)拍值,此模塊為歌曲簡(jiǎn)譜碼提供對(duì)應(yīng)的分頻預(yù)置查表電路,音符停留時(shí)間由clk的輸入頻率決定,再次為4hz.
3 系統(tǒng)的方案實(shí)現(xiàn)
3.1 各模塊仿真及描述
notetabs作為音符rom的地址發(fā)生器,此模塊中設(shè)置了一個(gè)8位2進(jìn)制計(jì)數(shù)器,頻率為4hz,即為4個(gè)音符一秒時(shí)間四四拍的4分音符。notetabs計(jì)數(shù)器計(jì)數(shù)器按4hz時(shí)鐘頻率做加法計(jì)數(shù),當(dāng)stop為高電平時(shí)停止加法運(yùn)算,而當(dāng)change可設(shè)置rom中數(shù)據(jù)的跳轉(zhuǎn),rom通過toneindex[30]端口輸向tonetaba模塊。樂曲就演奏起來(lái)了。
由圖6 sperkera仿真波形可以看出,當(dāng)clk輸入時(shí)鐘頻率為12mhz時(shí),輸出端信號(hào)clk輸出的頻率,隨tong信號(hào)的不同,輸出不同頻率的聲音信號(hào)。
由圖7tonetaba信號(hào)的仿真波形,可以看出,當(dāng)輸入信號(hào)index[30]輸入不同信號(hào)值,code輸出端輸出音符的顯示,high為音符高位信號(hào),tone大于7時(shí)high為高電平。
圖8為notetabs仿真波形,當(dāng)clk輸入時(shí)鐘信號(hào),toneindex[30]端從rom中讀入音符數(shù)據(jù),當(dāng)輸入端口stop為“1”時(shí),暫停從rom中讀入數(shù)據(jù),stop為“0”繼續(xù)讀取音符信號(hào),change為高低電平時(shí),模塊分別讀取rom不同位置的數(shù)據(jù)。
3.2 頂層電路仿真及描述
clk8hz端輸入8hz時(shí)鐘信號(hào),另一個(gè)clk12mhz輸入12mhz時(shí)鐘信號(hào),系統(tǒng)將自動(dòng)從music.mif中讀取音符信號(hào),以頻率不同輸出到spkout,同時(shí)輸出到顯示端口,和高音端口,code1[30],high1.p端口可以是音符暫停輸出(高電平時(shí)),ch端口控制歌曲間的切換。
4 硬件測(cè)試及說(shuō)明
選擇實(shí)驗(yàn)電路模式1,將引腳鎖定時(shí)clk12mhz于clock9連接,短路帽clock接12mhz.clk8hz與clock2連接。發(fā)音輸出spkout接speaker.簡(jiǎn)譜碼輸出code1由數(shù)碼管5顯示,high高8度指示由發(fā)光管d5指示,p與按鍵d16連接,ch與的15連接。最后向目標(biāo)芯片下載適配后的sof邏輯設(shè)計(jì)文件。
5 結(jié)論
本次設(shè)計(jì)在EDA開發(fā)工具QuartusII平臺(tái)上,應(yīng)用語(yǔ)言層次化和模塊化的設(shè)計(jì)方法,通過音符編碼的設(shè)計(jì)思想,預(yù)先定制樂曲,在此基礎(chǔ)上設(shè)計(jì)了一個(gè)樂曲硬件演奏電路,經(jīng)過對(duì)整體進(jìn)行模塊化分析、編程、綜合、仿真及最終下載,完整實(shí)現(xiàn)簡(jiǎn)易音樂器的播放功能。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21802瀏覽量
606368 -
vhdl
+關(guān)注
關(guān)注
30文章
817瀏覽量
128375 -
EAD
+關(guān)注
關(guān)注
0文章
3瀏覽量
6763
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
誰(shuí)能用stm32f103ze幫我做個(gè)雙字節(jié)音樂演奏的程序,感激不盡...
結(jié)合鬧鐘與電子音樂演奏的綜合項(xiàng)目適合初學(xué)者的項(xiàng)目。
如何去實(shí)現(xiàn)一種基于51單片機(jī)的音樂盒設(shè)計(jì)
如何利用Arduino與蜂鳴器實(shí)現(xiàn)音樂的演奏呢
音樂演奏器設(shè)計(jì)
![<b class='flag-5'>音樂演奏</b>器設(shè)計(jì)](https://file1.elecfans.com//web2/M00/A5/35/wKgZomUMN2iANV0VAABK1HvZbNg361.jpg)
在FPGA平臺(tái)上實(shí)現(xiàn)對(duì)DPA攻擊的電路級(jí)防護(hù)技術(shù)
![<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>平臺(tái)上</b><b class='flag-5'>實(shí)現(xiàn)</b>對(duì)DPA攻擊的<b class='flag-5'>電路</b>級(jí)防護(hù)技術(shù)](https://file1.elecfans.com//web2/M00/A6/F4/wKgZomUMQXKAfKwOAAB12kP0pYg378.png)
基于Proteus的單片機(jī)演奏音樂的實(shí)現(xiàn)[圖]
基于Proteus單片機(jī)的音樂演奏實(shí)現(xiàn)系統(tǒng)
![基于Proteus單片機(jī)的<b class='flag-5'>音樂演奏</b><b class='flag-5'>實(shí)現(xiàn)</b>系統(tǒng)](https://file1.elecfans.com//web2/M00/A7/40/wKgZomUMQ1aAf_BJAAASp2AFehI103.jpg)
使用PLD器件和VHDL語(yǔ)言實(shí)現(xiàn)數(shù)字系統(tǒng)的電子密碼鎖設(shè)計(jì)
![使用PLD器件和VHDL語(yǔ)言<b class='flag-5'>實(shí)現(xiàn)</b>數(shù)字系統(tǒng)的電子密碼鎖設(shè)計(jì)](https://file.elecfans.com/web1/M00/90/8E/pIYBAFzE-zKAG23MAAB_UDN5aco569.jpg)
在FPGA多媒體開發(fā)平臺(tái)DE2上實(shí)現(xiàn)音樂流水燈控制系統(tǒng)的設(shè)計(jì)
![<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>多媒體<b class='flag-5'>開發(fā)</b><b class='flag-5'>平臺(tái)</b>DE2上<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>音樂</b>流水燈控制系統(tǒng)的設(shè)計(jì)](https://file.elecfans.com/web1/M00/62/CD/pIYBAFuMVt6AEBIoAABInw8rJh4117.jpg)
評(píng)論