摘要:MP3編碼標準壓縮率高,壓縮質(zhì)量好,是廣為應用的音頻壓縮格式。文章介紹了一種基于ATmega16內(nèi)核的單片機MP3解碼原理,對系統(tǒng)的軟、硬件部件進行了設(shè)計,實現(xiàn)了實時解碼過程。
關(guān)鍵詞:VS1003;ATmega16;Keil8.08;音頻解碼
MP3 作為高質(zhì)量音樂壓縮標準,給音頻產(chǎn)業(yè)帶來了具大的沖擊。MP3 技術(shù)使音樂數(shù)據(jù)壓縮比率大,回放質(zhì)量高。如 CD格式的音樂數(shù)據(jù)壓縮成MP3 格式,音效相差無己,但大小至少可壓縮12 倍。由于MP3 音樂的較小數(shù)據(jù)量和近乎完美的播放效果使其在網(wǎng)絡(luò)上傳輸?shù)靡詫崿F(xiàn)。隨著電子技術(shù)的發(fā)展,MP3播放器向大容量、高音質(zhì)、小巧
便攜不斷發(fā)展。本文將從軟硬件方面詳細介紹如何實現(xiàn)基于ATmega16單片機的MP3音頻解碼過程。
l 方案設(shè)計
本設(shè)計主要完成U盤的識別和數(shù)據(jù)的讀取,并將U盤中讀取的MP3文件解碼播放出流暢的音樂,完成MP3播放器的存儲與解碼的分離。系統(tǒng)功能主要包括:讀取U盤數(shù)據(jù)、MP3解碼播放。實現(xiàn)設(shè)計功能需要USB接口芯片、MP3解碼芯片、主控制器和其他外圍電路。
2硬件設(shè)計
MP3解碼芯片與MCU的連接
VSl003的所有數(shù)據(jù)和控制命令均通過SPI總線接口實現(xiàn),因此與ATmega16的接口實現(xiàn)比較簡單,包括3條SPI數(shù)據(jù)線和4條控制線,如圖1所示。
VSl003通過同步串行總線SPI與ATmega64進行命令和數(shù)據(jù)的傳輸。由于ATmega64內(nèi)部集成有SPI總線模塊,只要正確寫SPI相關(guān)寄存器就能輕松控制SPL,這種硬件SPI總線減小了軟件設(shè)計的困難。VSl003的SPI接口具有2種工作模式:新模式和兼容模式。設(shè)置寄存器SM_SDI。NEW為1使VSl003處于新模式,此時設(shè)置SMSDISFIARED為1,控制信號和數(shù)據(jù)信號的傳送將分別采用xCS和xDCS作為同步信號。系統(tǒng)啟動后,由MCU控制將存儲于U盤中歌曲的碼流信息送入到VSl003芯片中,通過VSl003芯片解碼以及其內(nèi)含的高質(zhì)量的立體聲DAC和耳機驅(qū)動電路,實現(xiàn)MP3歌曲的播放功能,在按鍵的控制下,實現(xiàn)對歌曲播放模式以及歌曲選擇等功能。
2.1 VS1003的3條SPI數(shù)據(jù)線
28腳-SCLK 串行總線的時鐘
29腳--SI串行輸入
30腳--SO 串行輸出
2.2 VS1003的4條控制線及ATEEGA16的4條控制線
03腳--XRESET 異步復位端,低電平有效 PB1/T1 T/C1 計數(shù)器源
13腳--XDCS/BSYNC1數(shù)據(jù)片選端,低電平有效 PB2模擬比較正輸入
23腳--XCS片選輸入,低電平有效PB3模擬比較負輸入
08腳--DREQ 數(shù)據(jù)請求,輸入總線PD0輸出
控制信號和數(shù)據(jù)信號的傳送分別采用xCS和xDCS作為同步信號;RXD(端口 PD0)是USART的數(shù)據(jù)接收引腳。當使能了USART的接收器后,這個引腳被強制設(shè)置為輸出,此時 DDD0 不起作用。但是 PORTD0 仍然控制上拉電阻;DREQ 腳,在VS1003的FIFO 在能夠接受數(shù)據(jù)的時候輸出高電平。此時,VS1003可獲取至少 32Byte的 SDI。數(shù)據(jù)或一個SCI命令。遵循這個標準,當DREQ 變低時,發(fā)送器必須停止發(fā)送新的數(shù)據(jù)。 因為有32Byte 的保險區(qū)域(數(shù)據(jù)緩沖區(qū)),當檢測到DREQ 信號時,發(fā)送器(MCU)須發(fā)送32Byte的 SDI數(shù)據(jù)。
3軟件設(shè)計
3.1軟件架構(gòu)分析
因為要兼顧到高質(zhì)量的音視頻效果、多種外設(shè)和有限的系統(tǒng)資源,PMP軟件系統(tǒng)的設(shè)計變得相對復雜。系統(tǒng)設(shè)計將軟件分為三層架構(gòu),如圖2所示。第1層是操作系統(tǒng)層,其中包括bootloader引導程序,主要完成系統(tǒng)從FLASH的啟動,LOGO的顯示,以及OS的引導。主要包括適合在TI DM320上運行的嵌入式操作系統(tǒng),以及各種外圍設(shè)備的驅(qū)動程序。第2層為CODEC和MMI核層,MMI核包括第3層主GUI和各種應用程序所依賴的各種框架結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),如窗口管理,定時器管理等。CODEC部分包括音頻的編/解碼程序(主要由ARM實現(xiàn))和圖像的編/解碼程序(主要由DSP實現(xiàn))。第3層為主GUI和各種應用程序。應用程序包括:FileManager(用來瀏覽存儲器中的文件),VideoPlayer(播放視頻文件),AudioPlayer(播放音頻文件),ImageViewer(瀏覽圖片),F(xiàn)M(收音機),Games(游戲),Resumes(重新播放音/視頻文件)。
3.2讀取U盤數(shù)據(jù)
單片機讀寫U盤的程序可分成2大部分:應用程序和固件程序。應用程序完成系統(tǒng)的數(shù)據(jù)處理任務(wù)、外圍控制等功能;固件程序處理底層的USB通訊協(xié)議、文件系統(tǒng),數(shù)據(jù)在USB總線上的可靠傳輸和在U盤上的存取操作。CH375內(nèi)置了處理海量存儲設(shè)備的專用通信協(xié)議的固件,所以嵌入式系統(tǒng)的單片機可以通過CH375將U盤作為可移動的大容量存儲器。數(shù)據(jù)讀寫只需要幾條指令,而不需要詳細了解USB通信協(xié)議。
U盤文件的讀寫方式采取扇區(qū)模式以扇區(qū)(每個扇區(qū)通常是512字節(jié))為基本單位進行讀寫操作,從而將USB存儲設(shè)備簡化為一種外部數(shù)據(jù)存儲器,單片機可以自由讀寫USB存儲設(shè)備中的數(shù)據(jù),也可以自由定義其數(shù)據(jù)結(jié)構(gòu)。
3.3播放MP3文件(音頻解碼的實現(xiàn))
首先完成對VSl003和SPI總線的初始化,然后等待系統(tǒng)從U盤存儲介質(zhì)中打開MP3文件,從中讀取的一個扇區(qū)的數(shù)據(jù)放入Atmeag16的512 B緩沖區(qū)中,然后將數(shù)據(jù)發(fā)往VSl003,解碼芯片就會自動播放出流暢的音樂。由于VSl003有32 B的數(shù)據(jù)緩存區(qū),一次可向其發(fā)32 B數(shù)據(jù)然后檢查DREQ引腳,當DREQ為高時送下一個32 B數(shù)據(jù),發(fā)完一個扇區(qū)的內(nèi)容后再繼續(xù)從U盤中讀取下一個扇區(qū)內(nèi)容,重復操作直到文件播放完為止。
VS1003 是基于自主的數(shù)字信號處理器VS_DSP。它包含了針對MP3,WMA和WAV PCM+ADPCM音頻解碼所必須的全部代碼和數(shù)據(jù),MIDI合成器,共享串行接口,多速立體聲DAC和模擬輸出放大器及濾波器。同時有麥克風放大器和ADC及ADPCM音頻編碼。為調(diào)試準備了一個UART。
依賴于音頻數(shù)據(jù),且非設(shè)置為ADPCM編碼模式,MP3,WMA,PCMWAV,IMA ADPPCM WAV 或MIDI的數(shù)據(jù)流從SDI總線接收并解碼。解碼之后,如果SCI_AIADDR非零,則應用代碼從寄存器所指向的地址開始執(zhí)行。然后數(shù)據(jù)流是否經(jīng)過低音,高音增強器,取決于SCI_BASS寄存器。之后,數(shù)據(jù)流向音量控制單元,同時拷貝數(shù)據(jù)進音頻FIFO。
音頻FIFO 鎖存住數(shù)據(jù),通過音頻中斷將數(shù)據(jù)送進采樣率變換器和DAC。音頻FIFO 的大小是2048立體聲(2x16bit)采樣,即8KB。采樣率變換器把所有不同的采樣率變?yōu)閄TALI/2,或128 次最高可用采樣率。這個變換用一個固定的輸入時鐘頻率,經(jīng)過復雜的PLL 時鐘配置后,幾乎允許無限制的采樣率精確度。對于12.288MHz 的時鐘,DAC 工作在128x48KHz 也就是6.144MHz 上,并建立一個立體聲同相位模擬信號。過采樣的輸出被片上的模擬濾波器進行低通濾波。濾波后的信號前往耳機放大器。SDI數(shù)據(jù)被解碼,解碼的采樣率變換到內(nèi)部模擬DAC允許的范圍。如果找不到能被解碼的數(shù)據(jù),SCI_HDAT0 和SCI_HDAT1被設(shè)置為0并且模擬輸出靜音。
4 結(jié)語
采用VSl003實現(xiàn)基于ATmega16和Keil8.08的音頻編解碼功能,接口電路簡單,控制程序易于編寫,且最終音頻播放清晰、自然。音質(zhì)效果和播放的連貫性都很不錯,在音響和汽車電子及數(shù)據(jù)采集存儲方面具有良好的應用前景。
參考文獻
[1]張志良編:《單片機原理與控制技術(shù)》,機械工業(yè)出版社 2005
[2]張家田編:《DSP綜合應用技術(shù)》,機械工業(yè)出版社 2007
[3]胡健棟編:《現(xiàn)代無線通信技術(shù)》,機械工業(yè)出版社 2007
作者簡介:陳朝大,畢業(yè)于華中科技大學,電子講師,軟件碩士,研究方向:單片機應用、電子信息、智能控制.