基于FPGA的音樂硬件演奏電路設(shè)計(jì)與實(shí)現(xiàn)(二)
相關(guān)資料:
基于FPGA的音樂硬件演奏電路設(shè)計(jì)與實(shí)現(xiàn)(一)
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模塊。樂曲就演奏起來了。
由圖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è)試及說明
選擇實(shí)驗(yàn)電路模式1,將引腳鎖定時(shí)clk12mhz于clock9連接,短路帽clock接12mhz.clk8hz與clock2連接。發(fā)音輸出spkout接speaker.簡譜碼輸出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)用語言層次化和模塊化的設(shè)計(jì)方法,通過音符編碼的設(shè)計(jì)思想,預(yù)先定制樂曲,在此基礎(chǔ)上設(shè)計(jì)了一個(gè)樂曲硬件演奏電路,經(jīng)過對(duì)整體進(jìn)行模塊化分析、編程、綜合、仿真及最終下載,完整實(shí)現(xiàn)簡易音樂器的播放功能。
通過學(xué)生自己手動(dòng)完成簡單的數(shù)字器件的設(shè)計(jì),在加強(qiáng)以傳統(tǒng)電子設(shè)計(jì)方法為基礎(chǔ)的工程設(shè)計(jì)訓(xùn)練的同時(shí),使學(xué)生能夠更快地掌握現(xiàn)代電子電路設(shè)計(jì)自動(dòng)化的新方法和新手段,提高了學(xué)生對(duì)基礎(chǔ)實(shí)驗(yàn)的興趣。