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