<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 一種音樂播放控制電路的設(shè)計

          一種音樂播放控制電路的設(shè)計

          作者: 時間:2010-11-02 來源:網(wǎng)絡(luò) 收藏

          隨著電子技術(shù)發(fā)展,電子電路的形式趨向復(fù)雜化,面對這一狀況,人們已經(jīng)清醒地認(rèn)識到,要分析和設(shè)計復(fù)雜的電子系統(tǒng)人工的方法已不適用。依靠傳統(tǒng)的實驗教學(xué)已遠(yuǎn)不能滿足社會對高新技術(shù)人才的培養(yǎng)需要。本文就一個綜合性的實例“音樂播放控制電路”的設(shè)計過程具體說明了FPGA在電子電路設(shè)計中所起的作用。

          1 總體方案的設(shè)計
          設(shè)計一個具有3個八度音程的電子音樂自動循環(huán)播放電路,具體曲目可以由設(shè)計者自由編輯,以簡譜的二進制編碼形式存放在ROM的數(shù)據(jù)文件中。
          設(shè)計要求如下:
          (1)采用5位二進制碼表示音高信息,曲譜碼存儲器的地址由時值計數(shù)器控制,計數(shù)頻率按樂曲的演奏速度選擇,每個脈沖周期是所選曲譜中最短音符的時值。存儲器在時值計數(shù)脈沖作用下順序輸出音高碼控制分頻器。
          (2)采用20 Hz~20 kHz的脈沖信號控制蜂鳴器,可以使其根據(jù)控制信號頻率發(fā)出不同的音調(diào)。
          音樂播放控制電路設(shè)計方案原理框圖如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/180309.htm



          2 設(shè)計任務(wù)分析
          2.1 音高編碼和分頻控制

          計數(shù)器模值控制的方法很多,改變預(yù)置數(shù)控制模值是比較簡單的一種。分頻計數(shù)器的預(yù)置數(shù)與分頻率和計數(shù)方式、預(yù)置方式有關(guān)。當(dāng)采用減計數(shù)器、并以計數(shù)器的溢出信號(Carry Out)實現(xiàn)異步預(yù)置控制時,計數(shù)器的模(分頻率)等于預(yù)置數(shù)。比如,當(dāng)計數(shù)脈沖頻率為10 MHz時,若希望產(chǎn)生音高“5”,并考慮占空比整形的二分頻作用,分頻系數(shù)(計數(shù)器的模)應(yīng)該是3 188.9,四舍五入后的計數(shù)器預(yù)置數(shù)應(yīng)該是3 189。其溢出信號的頻率為3 135.8 Hz,控制蜂鳴器的信號頻率為1 567.9 Hz,滿足音高頻率要求。若采用同步預(yù)置方式,則計數(shù)器的預(yù)置數(shù)應(yīng)該是模減1,為3 188。由于計數(shù)器的溢出信號可能出現(xiàn)冒險干擾,采用同步預(yù)置的方法比較安全。
          分析表1可見,表中3個不同音程相同音名(同一行)的信號頻率都相差一倍。


          即音程升、降8度時,頻率增加或減小一倍。所以,若分頻計數(shù)器的計數(shù)脈沖頻率降低一倍時,蜂鳴器發(fā)出的音調(diào)降低8度。比如,當(dāng)分頻率仍為3 189,但計數(shù)脈沖頻率為5 MHz時,控制蜂鳴器的信號頻率為784 Hz,為中音“5”。
          因此若采用模值和輸入脈沖頻率都可控的計數(shù)器實現(xiàn)信號分頻,可根據(jù)音程碼選擇分頻計數(shù)器的輸入脈沖頻率fs、根據(jù)音名碼控制分頻計數(shù)器的模值N,如圖2所示。

          蜂鳴器相關(guān)文章:蜂鳴器原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: 音頻

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();