一、 實(shí)驗(yàn)?zāi)康?br />
1、 了解普通揚(yáng)聲器的工作原理。
2、 使用FPGA產(chǎn)生不同的音樂頻率。
3、 進(jìn)一步體驗(yàn)FPGA的靈活性。
二、 實(shí)驗(yàn)原理
本實(shí)驗(yàn)是完成一小段音樂程序的開發(fā),然后再用揚(yáng)聲器進(jìn)行試聽。下面主要介紹一下完成本實(shí)驗(yàn)的幾個主要部分的工作原理。
音符的產(chǎn)生:音符的產(chǎn)生是利用計(jì)數(shù)器對輸入的時(shí)鐘信號進(jìn)行分頻,然后輸出不同的頻率來控制揚(yáng)聲器發(fā)不同的聲音。計(jì)數(shù)器必須是?勺兊挠(jì)數(shù)器,也就是其初始計(jì)數(shù)值可變,這樣便可以對其進(jìn)行初始化,使其從不同的初始值開始計(jì)數(shù),實(shí)現(xiàn)對輸入時(shí)鐘信號的不同分頻。
節(jié)拍的產(chǎn)生:節(jié)拍也是利用計(jì)數(shù)器來實(shí)現(xiàn),如果某一個音符需要維持的時(shí)間比較長,那么就可以在此計(jì)數(shù)器從計(jì)數(shù)值A(chǔ)到計(jì)數(shù)值B之間都維持該音符,很顯然,A和B之間的間隔越大,那么該音符維持的時(shí)間也就越長。
樂譜的存儲:樂譜是一個固定的組合電路,根據(jù)不同的輸入值,然后輸出一個固定的值,該值就是音符產(chǎn)生計(jì)數(shù)器的分頻的初始值。
適當(dāng)?shù)倪x擇這些計(jì)數(shù)器和組合電路,便可完成不同的樂曲和不同節(jié)奏。
三、 實(shí)驗(yàn)內(nèi)容
本實(shí)驗(yàn)要求完成的任務(wù)是通過編程實(shí)現(xiàn)一段音樂旋律的循環(huán)播放。
四、 實(shí)驗(yàn)步驟
1、 打開QUARTUSII軟件,新建一個工程。
2、 建完工程之后,再新建一個VHDL File,打開VHDL編輯器對話框。
3、 按照實(shí)驗(yàn)原理和自己的想法,在VHDL編輯窗口編寫VHDL程序,用戶可參照光盤中提供的示例程序。
4、 編寫完VHDL程序后,保存起來。方法同實(shí)驗(yàn)一。
5、 對自己編寫的VHDL程序進(jìn)行編譯并仿真,對程序的錯誤進(jìn)行修改。
6、 編譯仿真無誤后,根據(jù)用戶自己的要求進(jìn)行管腳分配。分配完成后,再進(jìn)行全編譯一次,以使管腳分配生效。
7、 根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA管腳與對應(yīng)的模塊連接起來。
如果是調(diào)用的本書提供的VHDL代碼,則實(shí)驗(yàn)連線如下:
Clk:時(shí)鐘輸入信號,接1.5MHz的時(shí)鐘源。
Spk:輸出,接揚(yáng)聲器部分的輸入端SPK。
8、 用下載電纜通過JTAG口將對應(yīng)的sof文件加載到FPGA中。觀察實(shí)驗(yàn)結(jié)果是否與自己的編程思想一致。
五、 實(shí)驗(yàn)結(jié)果與現(xiàn)象
以設(shè)計(jì)的參考示例為例,當(dāng)設(shè)計(jì)文件加載到目標(biāo)器件后,確認(rèn)信號連接線已正確連接,將數(shù)字信號源模塊CLOCK1的時(shí)鐘選擇為1.5MHz ,在實(shí)驗(yàn)平臺上的音頻輸出模塊將會響起一段“梁祝”音樂的旋律。
六、 實(shí)驗(yàn)報(bào)告
1、 了解樂曲節(jié)拍產(chǎn)生的過程,注意音符的節(jié)拍長短的變化是由什么控制的。
2、 熟悉音樂編程的過程,填入新的樂曲。
3、 試?yán)肍PGA的LPM-ROM將音樂旋律存放入ROM,然后再調(diào)用的形式編寫程序。
4、 繪出仿真波形圖,并加以說明。