基于CPLD的MIDI播放器設計方案
引言
本文引用地址:http://dyxdggzs.com/article/201706/351234.htm大規??删幊踢壿嬈骷?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/CPLD">CPLD和FPGA是當今應用最廣泛的兩類(lèi)可編程邏輯器件,電子設計工程師利用它可以在辦公室或實(shí)驗室設計出所自己所需要的專(zhuān)用芯片和專(zhuān)用產(chǎn)品,從而大大縮短了產(chǎn)品上市時(shí)間,降低了開(kāi)發(fā)成本。此外,可編程邏輯器件還具有靜態(tài)可重復編程和動(dòng)態(tài)在系統重構的特性,使得硬件的功能可以像軟件一樣通過(guò)編程來(lái)修改,這樣就極大的提高了電子系統設計的靈活性和通用性。
1 工作原理
MIDI音樂(lè )是Windows下的一種合成音樂(lè ),由于它通過(guò)記譜的方式來(lái)記錄一段音樂(lè ),因此與wave 音樂(lè )相比,它可以極大的減少存儲容量。MIDI音樂(lè )的基本原理:組成樂(lè )曲的每一個(gè)音符的頻率值(音調)及其持續的時(shí)間(音長(cháng))是樂(lè )曲能連續演奏的兩個(gè)基本數據,因此只要控制輸出到揚聲器的激勵信號的頻率的高低和每個(gè)頻率信號持續時(shí)間,就可以使揚聲器發(fā)出連續的樂(lè )曲。
圖1是本文設計的音樂(lè )播放器的原理框圖。該音樂(lè )編碼器內儲存著(zhù)預先設定的四首歌曲的編碼,通過(guò)改變音樂(lè )選擇開(kāi)關(guān)的狀態(tài)可以決定當前要播放哪首音樂(lè )。音樂(lè )編碼器控制著(zhù)音調發(fā)生器和彩燈閃爍控制器,每當音樂(lè )節奏時(shí)鐘送給音樂(lè )編碼器一個(gè)時(shí)鐘脈沖時(shí),音樂(lè )編碼器就將當前要播放的音符的編碼送給音調發(fā)生器和彩燈閃爍控制器。音調發(fā)生器根據編碼對應的分頻系數將2MHz的基準時(shí)鐘分頻,得到當前要播放的音符所對應頻率的脈沖,再用這個(gè)脈沖去激勵揚聲器,就可以得到這個(gè)音符的聲音。彩燈閃爍控制器根據編碼將當前要播放的音符對應的彩燈亮滅狀態(tài)送給彩燈。
其中音調發(fā)生器、音樂(lè )編碼器、彩燈控制器這三項功能可由ALTERA公司可編程邏輯器件(CPLD)EPF10LC84-4芯片,采用VHDL語(yǔ)言來(lái)完成[1-3]。音頻放大器、彩燈、各種時(shí)鐘可由具體的外圍電路來(lái)實(shí)現。
2.MIDI音樂(lè )發(fā)生器芯片的設計
本設計的關(guān)鍵是要準確地產(chǎn)生音樂(lè )中各音符所對應的頻率信號,并根據樂(lè )曲要求按節拍輸出。為了減少系統復雜性,本設計根據可變模值計數器的原理,按照樂(lè )曲要求定時(shí)改變計數器的預置數,即可產(chǎn)生樂(lè )曲所需要的頻率信號。芯片原理框圖如圖2所示,芯片是采用VHDL硬件描述語(yǔ)言,在MUXPLUS II環(huán)境下設計的。
圖中節拍控制電路產(chǎn)生節拍定時(shí)信號;音符產(chǎn)生電路按節拍要求產(chǎn)生樂(lè )曲所需要的音符;預值數產(chǎn)生電路受音符控制,產(chǎn)生該音符頻率相對應的預置數,送計數器的置入數據輸入端。音符頻率發(fā)生器根據不同的預置數產(chǎn)生相應的頻率信號,從而完成樂(lè )曲的演奏功能。
3 外圍電路設計
3.1 音樂(lè )節奏時(shí)鐘和彩燈閃爍節奏時(shí)鐘產(chǎn)生電路
我們需要的音樂(lè )節奏時(shí)鐘是一個(gè)4Hz左右的時(shí)鐘脈沖,其頻率很低,利用555定時(shí)器構成的多諧振蕩器即可產(chǎn)生,如圖3所示。
555集成定時(shí)器是一種將模擬功能與邏輯功能巧妙結合在一起的混合集成電路,555定時(shí)器構成的多諧振蕩器電路圖如圖3所示,由3腳輸出的脈沖頻率的計算公式為:
改變可變電阻的阻值就可以改變輸出頻率。我們要求輸出的頻率為4Hz,C=47Uf,所以R1+R2應為7.66K。
音樂(lè )節奏時(shí)鐘對整個(gè)音樂(lè )播放器的作用至關(guān)重要,要求音樂(lè )節奏時(shí)鐘脈沖非常穩定,這樣才能保證音樂(lè )的流暢播放,否則播放出來(lái)的將是一段雜亂無(wú)章的聲音,就不是音樂(lè )而是噪聲了。為了使輸出的脈沖比較穩定、減少外界干擾,將輸出的脈沖再經(jīng)過(guò)D觸發(fā)器(7474)后送給CPLD芯片,因此555定時(shí)器件腳輸出的脈沖頻率應提高一倍(即8Hz),這樣R1+R2的阻值應為3.83K。
彩燈閃爍節奏時(shí)鐘產(chǎn)生電路與音樂(lè )節奏時(shí)鐘產(chǎn)生電路原理相同,也是用555定時(shí)器構成的多諧振蕩器來(lái)實(shí)現,只是彩燈控制時(shí)鐘產(chǎn)生電路的頻率要比音樂(lè )節奏時(shí)鐘產(chǎn)生電路的頻率高,在十幾到幾十赫茲之間,它的R2值不定,可根據自己的要求來(lái)定,如果想要彩燈閃爍快點(diǎn)則頻率就高一些,想閃爍頻率慢就低一些。
3.2 音頻功率放大電路
由CPLD芯片輸出的音頻信號很微弱,不能直接去驅動(dòng)揚聲器,因此需要一個(gè)音頻放大電路對輸出的音頻信號進(jìn)行放大,然后再去驅動(dòng)揚聲器。我們采用由集成功率放大器LM386組成的音頻功率放大器,如圖4所示。其中,C2是交流耦合電容,將功率放大器的交流輸出送到負載上,輸出信號通過(guò)Rw接到LM386的同相端。C1是退耦電容,R1-C3網(wǎng)絡(luò )起到消除高頻自激振蕩作用。
3.3 音樂(lè )選擇開(kāi)關(guān)與彩燈閃爍控制電路
這兩部分電路很簡(jiǎn)單,在音樂(lè )選擇開(kāi)關(guān)電路中(圖5)S1斷開(kāi)時(shí)A端為高電平,閉合時(shí)A端為低電平,S2 斷開(kāi)時(shí)B端為高電平,閉合時(shí)B端為低電平,通過(guò)S1、S2的開(kāi)與關(guān)來(lái)改變A、B的狀態(tài),從而實(shí)現對四首音樂(lè )的選擇。
彩燈閃爍控制電路(圖6)是由發(fā)光二極管構成的,A、B、C、D、E、F、G、H八端電平的高低變化控制著(zhù)八個(gè)發(fā)光二極管的亮滅。
4 系統調試
把以上各部分電路與預先設計好的MIDI音樂(lè )發(fā)生器芯片(EPF10LC84-4)連接起來(lái),形成整個(gè)系統。
系統調試主要是對音樂(lè )節奏時(shí)鐘、彩燈控制時(shí)鐘的頻率和音頻功率放大電路進(jìn)行調試。
1.音樂(lè )節奏時(shí)鐘的調試:音樂(lè )節奏時(shí)鐘理論要求時(shí)4Hz,在實(shí)際的演奏過(guò)程中頻率稍微高于4Hz效果較好,通過(guò)改變R1的電阻來(lái)改變音樂(lè )節奏時(shí)鐘,從而改變音樂(lè )節奏。表1是音樂(lè )節奏時(shí)鐘調試過(guò)程中的記錄。
表1 音樂(lè )節奏時(shí)鐘調試記錄
經(jīng)過(guò)比較,最終將R1的阻值定在3.4 KΩ,音樂(lè )節奏時(shí)鐘的頻率為4.5 Hz。
2.彩燈控制時(shí)鐘的調試:彩燈控制時(shí)鐘頻率要求在十幾到幾十赫茲之間。表2是彩燈控制時(shí)鐘調試過(guò)程中的記錄。
2.彩燈控制時(shí)鐘的調試:彩燈控制時(shí)鐘頻率要求在十幾到幾十赫茲之間。
表2 彩燈控制時(shí)鐘調試記錄
經(jīng)過(guò)比較,最終將R1的阻值定在0.958 KΩ,彩燈控制時(shí)鐘的頻率為16Hz。
3.音頻功率放大的調試:通過(guò)調節RW的阻值來(lái)改變輸入到音頻放大器LM386的音頻信號的電壓值,調試結果如表3。
表3 音頻放大調試記錄
評論