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

          新聞中心

          EEPW首頁 > 設計應用 > 基于SPCA751A的MP3播放器的研究與實現(xiàn)

          基于SPCA751A的MP3播放器的研究與實現(xiàn)

          作者:MP3播放器;編碼器;解碼器;MPEG 時間:2004-06-18 來源:電子設計應用 收藏
          摘 要: 本文主要介紹了一種基于SPCA751A解碼芯片的MP3播放器的制作過程。
          關鍵詞: MP3播放器;編碼器;解碼器;MPEG
          引言
          MP3壓縮音樂的方式是通過一個運算法則,去掉聲音中高頻與低頻的部分,大幅刪減不必要的容量浪費,同時保留了人類所能感受到的音頻部分。因此,它的好處在于大幅降低了數(shù)字聲音文件的容量,而不會破壞原來的音質(zhì)。在MP3的運算法則下,音質(zhì)越低的聲音可以得到越高的壓縮比例。以CD音質(zhì)的Wave文件來說,如抽樣分辨率為16bit,抽樣頻率為44.1kHz,聲音模式為立體聲,那么存儲1秒鐘CD音質(zhì)的Wave文件,必須要用掉16bit×44100×2=1411200bit,也就是相當于1411.2kbit的存儲容量,存儲介質(zhì)的負擔很大。而通過MP3格式壓縮后,文件便可以壓縮為原來的1/10到1/12,每一秒鐘的MP3只需大約U2-128kbit就可以了。
          MP3播放系統(tǒng)分為便攜式和非便攜式兩種。對于非便攜式,要考慮和其他CD音樂格式的共容性。對于便攜式系統(tǒng),主要考慮的是其體積小巧、低功耗、高容量、低價格。

          系統(tǒng)簡介
          便攜式MP3播放器的系統(tǒng)框圖如圖1所示,各部分的功能說明如下:
          1. 解碼部分:這是MP3播放器的核心部件,采用硬件解碼技術。
          2. 存儲部分:目前一般采用32MB的FLASH存儲器,32MB的存儲器能夠存儲36分鐘128kbps(達到CD音質(zhì))的音樂,如果是播放16kbps的壓縮話音,可以存儲4個小時的內(nèi)容。
          3. 接口部分:一般通過PC的并口或USB口進行MP3文件的下載,并口的傳輸速率較低,USB口的傳輸速率可以高達12Mbps。
          4.電源管理:便攜式MP3的體積小,只用1到2只AAA電池供電,因此采用低電壓以及進行有效的功率管理是非常必要的。

          音頻解碼芯片內(nèi)部結(jié)構(gòu)
          SPCA751A是凌陽科技公司生產(chǎn)的單片信號處理芯片,是一個MPEG Layer2.5音頻專用解碼芯片,已經(jīng)廣泛應用于一些便攜式的MP3播放器設計中。它可支持對8—320Kbps基本數(shù)據(jù)流的解碼,支持的取樣頻率范圍為8KHz—48KHz,非常適合于MPEG的音頻解碼,并帶有數(shù)字語音錄音的MPEG播放模塊,具有很高的性能/價格比。解碼后的信號是可以直接輸出到DAC的立體聲、單聲道或雙聲道的數(shù)字信號,SPCA751A與DAC的接口是可編程的。只要通過通用的串行I/O口和控制接口就能對MPEG比特流進行輸入/輸出和回放控制,系統(tǒng)控制器能很輕易的對MPEG音頻信號進行解碼。通過一個通用的可編程I2S接口,就能把一解碼的音頻PCM數(shù)據(jù)輸出到外部的DAC中,因此,大多數(shù)常用的音頻DAC都能和SPCA751A兼容。
          對于嵌入式的語音錄音,SPCA751A具有高品質(zhì)的10位8KHz采樣頻率的ADC?;赟ACM_S480或者SACM_S3200的運算法則,語音可以分別被壓縮到4.8Kbps和32Kbps,而保持原始的語音效果。
          SPCA751A使用的電源為3.0V~3.6V,它可以從其本身使用的16.934MHz晶振通過鎖相環(huán)與系統(tǒng)時鐘同步。SPCA751A信號處理器的工作頻率可以達到34MHz而功耗很少,這就使得SPCA751A特別適合于便攜式系統(tǒng)。
          SPCA751A芯片的內(nèi)部功能如圖2所示,其主控制器只要具有足夠的I/O口、能訪問閃存和驅(qū)動LCD即可。
          為了適合數(shù)字錄音應用的需要,SPCA751A有一個適合于語音波段的Σ-ΔADC,轉(zhuǎn)換器的電路包括兩個主要模塊:ADC模塊和內(nèi)部參考偏置電壓模塊,后者為一個帶有10位諧和音的15位數(shù)據(jù)格式。
          ADC模塊包括麥克風放大器、一個可編程增益放大器(PGA)、一個模擬過采樣調(diào)節(jié)器和十進制數(shù)據(jù)濾波器。PGA增益可以從-12dB到12dB(-12,-6,0,6,12dB),當過采樣信號頻率為1.024MHz時,調(diào)節(jié)器是一個Σ-Δ反饋回路,它完成微分模擬信號輸入到脈沖密度調(diào)整單比特數(shù)字信號輸出的轉(zhuǎn)換。



          圖1 便攜式MP3播放器系統(tǒng)框圖


          圖2 SPCA751A內(nèi)部功能圖


          圖3 MPEG音頻播放器系統(tǒng)框圖


          圖4 SPCA751A與主控制器的連接


          圖5 對SPCA751A編程流程圖
          CEI表示主控制器是否可以接收數(shù)據(jù)
          設置初始化參數(shù):IDF+512字節(jié)數(shù)據(jù)
          設置比特流:ID6+512字節(jié)比特流
          設置命令:ID(低位字節(jié))+命令(高位字節(jié))

          硬件設計
          SPCA751A是單片的CMOS微處理器,是實時的MPEG音頻解碼和語音錄音的專用芯片。主處理器通過串行控制口/I/O接口的命令控制SPCA751A對MPEG語音數(shù)據(jù)進行解碼,主處理器也可以根據(jù)該接口檢測解碼過程。MPEG音頻播放器系統(tǒng)框圖如圖3所示。SPCA751A與主控制器的連接如圖4所示。

          軟件設計
          SPCA751A工作于兩種模式,MP3模式和數(shù)字語音錄音(DVR)模式。在MP3模式,SPCA751A解碼輸入的比特流,發(fā)送到SPCA751A的數(shù)據(jù)作為輸入數(shù)據(jù)。當FCEB1為高電平(缺省)時,主處理器發(fā)送比特流到SPCA751A;當FCEB1為低電平時,表明SPCA751A處于忙碌狀態(tài),這時,主處理器不能發(fā)任何數(shù)據(jù)到SPCA751A。在DVR模式,SPCA751A編/解碼錄入的數(shù)字比特流,如果FCEB1為高電平,主處理器能從SPCA751A接收數(shù)據(jù);當FCEB1為低電平時,主處理器不能從SPCA751A獲得比特流。對SPCA751A進行編程的流程圖如圖5所示。

          結(jié)語
          MP3為了取得較好的壓縮效果而采用了相對復雜的技術,而且寬帶音頻信號的取樣率也較高(一般為44.1kHz以上),所以MP3編解碼的運算量和數(shù)據(jù)量都相當龐大。例如,在定點DSP平臺上以匯編語言編寫的解碼程序,在128kbps、立體聲的條件下,需要近40Mbps進行實時解碼,并需耗用15kB程序/設計空間。這就是目前便攜式MP3已在市場上流行,而能實時編碼的同類產(chǎn)品尚不多見的原因之一。不過,隨著硬件性能的不斷提高和軟件算法的不斷改進,MP3實時編碼器也必將取得進一步的發(fā)展?!?/P>

          參考文獻
          1 Pan D. A Tutorial on MPEG/Audio Compression. IEEE Trans. on Multimedia.1995,2.pp60-74



          評論


          技術專區(qū)

          關閉
          看屁屁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); })();