一、實驗目的
了解MP3文件的結構,掌握MP3音頻解碼的原理,并實現(xiàn)基于SYSBIOS系統(tǒng),將MP3格式的音頻解碼為PCM格式。
二、實驗原理
1、MP3音頻格式
MP3是一種音頻壓縮技術,其全稱是動態(tài)影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱為MP3。它被設計用來大幅度地降低音頻數(shù)據(jù)量。
利用 MPEG Audio Layer 3 的技術,將音樂以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的文件,而對于大多數(shù)用戶來說重放的音質與最初的不壓縮音頻相比沒有明顯的下降。
傳統(tǒng)的MP3算法需要完成大量的高精度浮點計算,其解碼速度和效率依賴于通用浮點運算單元的支持。大部分的專用MP3解碼播放系統(tǒng)均需要使用DSP處理器或浮點協(xié)處理器處理浮點指令并完成高速浮點運算過程。
2、MP3編解碼
MP3音頻壓縮包含編碼和解碼兩部分,編碼是將原始信號轉換成電平信號的過程,解碼即是逆過程,人耳感受聲音的頻率范圍是20Hz-20kHz,MP3截掉了大量的冗余信號和無關的信號,編碼器將原始聲音變換到頻率域,經(jīng)過量化和編碼形成MP3位流。解碼器要簡單得多,它的任務是從編碼后的譜線成分中,經(jīng)過反量化和逆變換,提取出聲音信號。
(1)編碼:從信息論的觀點來看,描述信源的數(shù)據(jù)是信息和數(shù)據(jù)冗余之和,即:數(shù)據(jù)=信息+數(shù)據(jù)冗余。音頻信號在時域和頻域上具有相關性,也即存在數(shù)據(jù)冗余。將音頻作為一個信源,音頻編碼的實質是減少音頻中的冗余。通常我們采用的是PCM編碼,PCM通過抽樣、量化、編碼三個步驟將連續(xù)變化的模擬信號轉換為數(shù)字信號。
(2)解碼:編碼的逆過程,將MP3文件解碼成PCM數(shù)據(jù)流輸出。
3、MP3文件結構
MP3文件數(shù)據(jù)由多個幀組成,幀是MP3文件最小組成單位。每個幀又由幀頭、附加信息和聲音數(shù)據(jù)組成。每個幀播放時間是0.026秒,其長度隨位率的不同而不等。有些MP3文件末尾有些額外字節(jié)存放非聲音數(shù)據(jù)的說明信息。
MP3文件大體上分為三個部分:ID3V2+音頻數(shù)據(jù)+ID3V1。
ID3一般位于一個MP3文件的開頭或末尾的若干字節(jié)內(nèi),記錄該MP3文件的歌手、標題、專輯名稱、年代、風格等信息,ID3分為兩個版本,V1版ID3在文件末尾的固定128字節(jié),以TAG字符開頭,若沒有則認為無ID3V1信息,V2版ID3位于MP3的開頭,長度可變。
4、音頻數(shù)據(jù)解析
每個幀都有一個幀頭,長度是四個字節(jié),幀后面可能有2字節(jié)的CRC校驗,取決于幀頭的第16位,為0則無校驗,為1則有校驗,后面是可變長度的附加信息,對于標準的MP3文件來說,其長度是32字節(jié),緊接其后的是壓縮的聲音數(shù)據(jù),當解碼器讀到此處時就進行解碼了。
5、libmp3lame庫
lame是一個有名的開源MP3編解碼庫,使用lame庫只需要包含lame.h頭文件。
6、SYS/BIOS 操作系統(tǒng)
SYS/BIOS 是一個可擴展的實時的操作系統(tǒng)(可拓展的實時內(nèi)核)。
(1)具有非??焖俚捻憫獣r間(在中斷和任務切換時達到較短的延遲),響應時間的確定性。
(2)SYS/BIOS提供了搶占式多線程,硬件抽象,實時分析和配置工具。
(3)優(yōu)化的內(nèi)存分配和堆棧管理(盡量少的消耗和碎片)。
(4)SYS/BIOS的設計是為了最大限度地減少對內(nèi)存和CPU的要求.
能夠實現(xiàn)系統(tǒng)的模塊化并可裁剪。
(5)用于實時調(diào)度和同步的應用程序或實時的設備。
TASK任務
TASK任務模塊是操作系統(tǒng)中最基本的模塊,每個任務是一個單獨的線程,各個線程(任務)具有各自的優(yōu)先級。SYS/BIOS任務對象是被任務模塊管理的線程。
(1)任務模塊動態(tài)調(diào)度和搶占任務是基于任務的優(yōu)先級和任務當前執(zhí)行的狀態(tài)的。這確保了處理器總是給予最高優(yōu)先級的線程準備運行。
(2)SYS/BIOS的系統(tǒng)組件可以動態(tài)及靜態(tài)創(chuàng)建任務,可以通過調(diào)用Task_create()動態(tài)創(chuàng)建Task對象,也可以在配置中靜態(tài)創(chuàng)建Task對象。
(3)動態(tài)和靜態(tài)創(chuàng)建任務的主要區(qū)別是:動態(tài)創(chuàng)建的線程可以在運行時刪除,而靜態(tài)創(chuàng)建的任務占用更少的內(nèi)存資源。
7、程序流程設計
程序流程設計中首先要進行使能SD并配置SD設備驅動,接著初始化SD設備,檢測SD卡的狀態(tài),注冊SD卡的讀寫方式,然后在SD卡內(nèi)創(chuàng)建PCM文件,打開MP3文件后初始化文件指針到起始點,接著初始化解碼器數(shù)據(jù)結構并配置成解碼模式,最后執(zhí)行MP3文件解析,解碼完成后卸載設備即可。
三、操作現(xiàn)象
1、實驗設備
2、硬件連接
(1)將工程目錄下的song.mp3文件拷貝到SD卡后,把SD卡插入卡槽內(nèi)。
(3)將撥碼開關撥到DEBUG模式01111,連接實驗箱電源,撥動電源開關上電。
3、軟件操作
導入工程,選擇Demo文件夾下的對應工程
編譯工程,生成可執(zhí)行文件
將CCS連接開發(fā)板并加載程序
點擊運行程序
運行程序后,Console 窗口會打印信息,正在處理音頻數(shù)據(jù)。
大概等待1分鐘,解碼完成。
實驗結束后,先點擊黃色按鈕暫停程序運行,再點擊紅色按鈕退出CCS與實驗板的連接,最后實驗箱斷電即可。
-
驅動器
+關注
關注
54文章
8697瀏覽量
150005 -
PCM
+關注
關注
1文章
202瀏覽量
54303 -
SD卡
+關注
關注
2文章
578瀏覽量
65717 -
CRC校驗
+關注
關注
0文章
84瀏覽量
15606 -
音頻解碼
+關注
關注
0文章
28瀏覽量
16690
發(fā)布評論請先 登錄
數(shù)字信號處理實驗操作教程:3-3 mp3音頻編碼實驗(AD7606采集)
嵌入式操作教程_數(shù)字信號處理_音頻編解碼:3-6 AAC音頻解碼實驗
一種嵌入式MP3音頻點播系統(tǒng)的設計與實現(xiàn)
STM32-CRK創(chuàng)新實驗平臺微機原理 Arduino創(chuàng)新實驗箱嵌入式實驗箱
嵌入式MP3播放器系統(tǒng)由什么組成?
嵌入式DSP教學實驗箱_數(shù)字信號處理教程:3-5 AAC音頻編碼實驗
國產(chǎn)嵌入式教學實驗箱_創(chuàng)龍教儀_DSP教學實驗箱:3-4 mp3音頻解碼實驗
一種嵌入式MP3音頻點播系統(tǒng)的設計與實現(xiàn)
嵌入式GPS語音導航系統(tǒng)中MP3的解碼與播放
嵌入式MP3解碼研究與優(yōu)化

基于多任務嵌入式應用的MP3實時解碼系統(tǒng)
WT2003Hx系列高品質語音芯片MP3音頻解碼IC的特征與應用優(yōu)勢

評論