基于CPLD的MIDI音樂播放器的設計
摘要:本音樂播放器依據MIDI音樂基本原理,結合EDA技術,采用ALTERA公司的可編程邏輯器件(CPLD)EPF10LC84-4作為控制核心而設計的。本文主要闡述了利用VHDL語言設計MIDI音樂發生器芯片,再配上必要的外圍電路,從而實現四首音樂選擇播放、并配有隨音樂節奏而閃爍變化的彩燈等功能的EDA應用系統。
關鍵字:EDA、CPLD、音樂播放器、VHDL語言
0引言
大規模可編程邏輯器件CPLD和FPGA是當今應用最廣泛的兩類可編程邏輯器件,電子設計工程師利用它可以在辦公室或實驗室設計出所自己所需要的專用芯片和專用產品,從而大大縮短了產品上市時間,降低了開發成本。此外,可編程邏輯器件還具有靜態可重復編程和動態在系統重構的特性,使得硬件的功能可以像軟件一樣通過編程來修改,這樣就極大的提高了電子系統設計的靈活性和通用性。
1 工作原理
MIDI音樂是Windows下的一種合成音樂,由于它通過記譜的方式來記錄一段音樂,因此與wave 音樂相比,它可以極大的減少存儲容量。MIDI音樂的基本原理:組成樂曲的每一個音符的頻率值(音調)及其持續的時間(音長)是樂曲能連續演奏的兩個基本數據,因此只要控制輸出到揚聲器的激勵信號的頻率的高低和每個頻率信號持續時間,就可以使揚聲器發出連續的樂曲。
圖1是本文設計的音樂播放器的原理框圖。該音樂編碼器內儲存著預先設定的四首歌曲的編碼,通過改變音樂選擇開關的狀態可以決定當前要播放哪首音樂。音樂編碼器控制著音調發生器和彩燈閃爍控制器,每當音樂節奏時鐘送給音樂編碼器一個時鐘脈沖時,音樂編碼器就將當前要播放的音符的編碼送給音調發生器和彩燈閃爍控制器。音調發生器根據編碼對應的分頻系數將2MHz的基準時鐘分頻,得到當前要播放的音符所對應頻率的脈沖,再用這個脈沖去激勵揚聲器,就可以得到這個音符的聲音。彩燈閃爍控制器根據編碼將當前要播放的音符對應的彩燈亮滅狀態送給彩燈。
圖1 音樂播放器的工作原理框圖
其中音調發生器、音樂編碼器、彩燈控制器這三項功能可由ALTERA公司可編程邏輯器件(CPLD)EPF10LC84-4芯片,采用VHDL語言來完成[1-3]。音頻放大器、彩燈、各種時鐘可由具體的外圍電路來實現。
2.MIDI音樂發生器芯片的設計
本設計的關鍵是要準確地產生音樂中各音符所對應的頻率信號,并根據樂曲要求按節拍輸出。為了減少系統復雜性,本設計根據可變模值計數器的原理,按照樂曲要求定時改變計數器的預置數,即可產生樂曲所需要的頻率信號。芯片原理框圖如圖2所示,芯片是采用VHDL硬件描述語言,在MUXPLUS II環境下設計的。
圖2 芯片原理圖
圖中節拍控制電路產生節拍定時信號;音符產生電路按節拍要求產生樂曲所需要的音符;預值數產生電路受音符控制,產生該音符頻率相對應的預置數,送計數器的置入數據輸入端。音符頻率發生器根據不同的預置數產生相應的頻率信號,從而完成樂曲的演奏功能。
3 外圍電路設計
3.1 音樂節奏時鐘和彩燈閃爍節奏時鐘產生電路
我們需要的音樂節奏時鐘是一個4Hz左右的時鐘脈沖,其頻率很低,利用555定時器構成的多諧振蕩器即可產生,如圖3所示。
555集成定時器是一種將模擬功能與邏輯功能巧妙結合在一起的混合集成電路,555定時器構成的多諧振蕩器電路圖如圖3所示,由3腳輸出的脈沖頻率的計算公式為:
改變可變電阻的阻值就可以改變輸出頻率。我們要求輸出的頻率為4Hz,C=47Uf,所以R1+R2應為7.66K。
音樂節奏時鐘對整個音樂播放器的作用至關重要,要求音樂節奏時鐘脈沖非常穩定,這樣才能保證音樂的流暢播放,否則播放出來的將是一段雜亂無章的聲音,就不是音樂而是噪聲了。為了使輸出的脈沖比較穩定、減少外界干擾,將輸出的脈沖再經過D觸發器(7474)后送給CPLD芯片,因此555定時器件腳輸出的脈沖頻率應提高一倍(即8Hz),這樣R1+R2的阻值應為3.83K。
圖3 音樂節奏時鐘產生電路圖
彩燈閃爍節奏時鐘產生電路與音樂節奏時鐘產生電路原理相同,也是用555定時器構成的多諧振蕩器來實現,只是彩燈控制時鐘產生電路的頻率要比音樂節奏時鐘產生電路的頻率高,在十幾到幾十赫茲之間,它的R2值不定,可根據自己的要求來定,如果想要彩燈閃爍快點則頻率就高一些,想閃爍頻率慢就低一些。
3.2 音頻功率放大電路
由CPLD芯片輸出的音頻信號很微弱,不能直接去驅動揚聲器,因此需要一個音頻放大電路對輸出的音頻信號進行放大,然后再去驅動揚聲器。我們采用由集成功率放大器LM386組成的音頻功率放大器,如圖4所示。其中,C2是交流耦合電容,將功率放大器的交流輸出送到負載上,輸出信號通過Rw接到LM386的同相端。C1是退耦電容,R1-C3網絡起到消除高頻自激振蕩作用。
圖4 音頻功率放大電路圖
3.4 音樂選擇開關與彩燈閃爍控制電路
這兩部分電路很簡單,在音樂選擇開關電路中(圖5)S1斷開時A端為高電平,閉合時A端為低電平,S2 斷開時B端為高電平,閉合時B端為低電平,通過S1、S2的開與關來改變A、B的狀態,從而實現對四首音樂的選擇。
彩燈閃爍控制電路(圖6)是由發光二極管構成的,A、B、C、D、E、F、G、H八端電平的高低變化控制著八個發光二極管的亮滅。
4 系統調試
把以上各部分電路與預先設計好的MIDI音樂發生器芯片(EPF10LC84-4)連接起來,形成整個系統。
系統調試主要是對音樂節奏時鐘、彩燈控制時鐘的頻率和音頻功率放大電路進行調試。
1.音樂節奏時鐘的調試:音樂節奏時鐘理論要求時4Hz,在實際的演奏過程中頻率稍微高于4Hz效果較好,通過改變R1的電阻來改變音樂節奏時鐘,從而改變音樂節奏。表1是音樂節奏時鐘調試過程中的記錄。
表1 音樂節奏時鐘調試記錄
R1阻值(KΩ) |
4.38 |
3.83 |
3.40 |
3.06 |
節奏時鐘頻率(Hz) |
3.5 |
4 |
4.5 |
5 |
音樂節奏效果 |
較慢 |
稍慢 |
適中 |
稍快 |
經過比較,最終將R1的阻值定在3.4 KΩ,音樂節奏時鐘的頻率為4.5 Hz。
2.彩燈控制時鐘的調試:彩燈控制時鐘頻率要求在十幾到幾十赫茲之間。表2是彩燈控制時鐘調試過程中的記錄。
表2 彩燈控制時鐘調試記錄
R3阻值(KΩ) |
1.53 |
1.28 |
1.09 |
0.958 |
0.851 |
0.766 |
節奏時鐘頻率(Hz) |
10 |
12 |
14 |
16 |
18 |
20 |
彩燈閃爍效果 |
慢 |
較慢 |
稍慢 |
適中 |
稍快 |
較快 |
經過比較,最終將R1的阻值定在0.958 KΩ,彩燈控制時鐘的頻率為16Hz。
3.音頻功率放大的調試:通過調節RW的阻值來改變輸入到音頻放大器LM386的音頻信號的電壓值,調試結果如表3。
表3 音頻放大調試記錄
RW阻值(KΩ) |
8 |
6 |
4 |
2 |
1 |
0.5 |
0.25 |
音頻放大效果
|
聲音小,無噪聲 |
聲音較小,無躁聲 |
聲音適中,無噪聲 |
聲音稍大,無躁聲 |
聲音較大,無躁聲 |
聲音大,稍有躁聲 |
聲音大,躁聲大 |
經過比較,最終將RW阻值定在1KΩ。
調試完畢后,我們就可以欣賞動聽的音樂了。
參考文獻
[1] 趙曙光,郭萬有,楊頌華.可編程邏輯器件原理、開發與應用,西安:西安電子科技大學出版社,2000:http://www.51kaifa.com
[2] 曾繁泰,陳美金.VHDL程序設計.第二版,北京:清華大學出版社,2001:
[3] 盧毅,賴杰.VHDL與數字電路設計,北京:北京科學出版社,2001:
負離子發生器相關文章:負離子發生器原理 脈沖點火器相關文章:脈沖點火器原理
評論