嵌入式GPS語音導航系統中MP3的解碼與播放
0 引言
近年來,電子技術的迅猛發展,使得嵌入式系統在越來越廣泛的領域得到應用。嵌入式系統平臺的功能也越來越強大,復雜度也越來越高,同時對其開發的難度和要求也越來越高。在開發過程中需要將應用軟件和系統軟件作為一個整體考慮,而且軟件和硬件的聯系也更加密切。所以,嵌入式系統的開發是一個復雜的過程。隨著嵌入式系統性能的大幅度提高,老式的GPS導航儀已開始向嵌入式方向發展。嵌入式GPS導航儀已越來越便攜,功能越來越強大,語音導航和媒體功能已成為嵌入式GPS導航儀的一大突出的亮點。所以,MP3音頻解碼與播放技術現已成為嵌入式GPS導航系統中的一項基本技術。MP3的全稱是MPEG Audio Layer 3,是目前流行的一種音頻編碼方案。它是1992年制定的MPEG-1標準的一部分,MPEG標準由系統、視頻和伴音三部分組成。其中伴音標準共分三層,MP3作為其中的第三層,是運算復雜度最高而壓縮效果最好的一層。比起傳統的CD格式來,其音效已相差無幾,但數據量卻不及CD的十分之一。同時,MP3播放器的便攜性和續航能力都比CD有大幅度的提高。MP3最初應用于數字音頻廣播以及數字電視伴音等;之后,隨著其流行程度的提高,在其他場合,尤其是互聯網音樂和便攜式娛樂設備上也開始大量使用MP3格式;現在,幾乎所有便攜式語音導航設備都采用MP3作為其音頻媒體格式。本文主要介紹了基于ARM核心的嵌入式GPS導航系統平臺下MP3音頻文件的解碼技術。以便利用自行設計的方案在Windows CE.NET系統下運用三星公司S3C2410平臺,從而實現MP3的解碼播放功能。
1 MP3解碼原理
1.1 MP3的文件格式
MP3文件由數量不等且相互獨立的幀(frame)組成,每個幀包含1152個采樣信息,一個MP3每幀包含幀頭、錯誤校驗、音頻數據和輔助數據四部分。圖1所示是MP3的幀結構示意圖。MP3文件的最后128字節通常包含有ID3v1標簽,并附加有用戶定制的文件附加內容,如歌曲名稱、演唱者、風格說明等。
1.2 MP3解碼流程
原始PCM(脈沖編碼調制)音頻數據在經過壓縮編碼之后將得到MP3碼流,MP3解碼就是把MP3碼流恢復成原始的PCM數據。MP3數據以幀為單位,解碼應首先根據同步信息及錯誤校驗CRC模塊找出MP3幀在碼流中的位置,并由此確定幀頭、CRC校驗、音頻數據及輔助數據的所在位置。
圖2所示是MP3的解碼流程,它主要包括哈夫曼解碼、反量化、反重排序、立體聲解碼、混疊消除、IMDCT、頻率反轉補償、子帶合成濾波等。圖2中的預處理的作用是讀取頭部數據并將需要的信息按結構存放起來,以便后續解碼。
哈夫曼解碼時,MP3的音頻數據將分為兩節(gxanule),這兩節在過程編解碼時相對獨立,每一節中可以解碼出576個PCM采樣數據,兩節可解出 1152個采樣數據。從二進制101……碼流中得到我們所需要的信息的第一步就是解哈夫曼碼。解哈夫曼碼是一個查表過程,這576個值代表576個頻率線上的值,其在不同的塊中(如)有不同的含義,可根據不同的比例因子和頻帶查找相應的碼表并解出576個值。
反量化過程就是根據反量化公式和幀邊信息來對于長塊、短塊和混合塊采用不同的反量化公式,以恢復576條頻率線的真實值。反重排序的作用是為了讓MP3編碼器使霍夫曼編碼更加有效率,而對某些塊進行重排序。立體聲解碼部分的功能是在兩個音頻通道非獨立編碼時,進行立體聲解碼。
混疊消除是為了避免兩個相鄰子頻帶之間的混疊,而在解碼過程中進行的混疊消除。IMDCT的作用首先是對長塊進行18點到36點的IMDCT變換,并對短塊進行3個G點到12點的IMDCT變換;其次是根據塊類型的不同,分別使用不同的窗類型進行加窗。同時把這36個值的前半部分與上一幀的后半部分相疊加。而把當前塊的后半部分存儲起來用于和下一塊疊加。頻率反轉補償是在進入下一步之前對多項濾波器組進行的頻率反轉補償,即對奇數子帶的奇數時間樣點取反。
子帶合成濾波是將32個等頻帶寬內的頻域信號反變換成時域信號,然后再經過加窗運算,以得到32個PCM值。
2 硬件設計
2.1 系統硬件設計
在處理器的選擇上,本系統選用SAMSUNG公司的S3C2410。它是基于ARM920T內核的16/32位精簡指令集微控制器,是為手持設備和通用設備提供的一款低成本、高效率的微控制器。整個系統硬件的設計過程中主要應用S3C2410 ARM芯片,存儲設備外擴SD或MMC存儲卡模塊,并外接320x240象素的真彩TFT LCD屏進行顯示,操控采用四線電阻觸摸屏并輔以GPIO外擴的鍵盤。
2.2 音頻硬件設計
IIS(Inter-IC Sound)總線是Philips公司提出的串行數字音頻總線協議。它是一種面向多媒體應用的音頻總線,專用于音頻設備之間的數據傳輸,即把PCM音頻數據傳至標準編解碼器(CODEC)。IIS總線只處理聲音數據,其他信號(如控制信號)必須單獨傳輸。為了使電路的引出引腳盡可能少,IIS只使用了3條串行總線,即提供分時復用功能的數據線、左右聲道選擇線和時鐘信號線。
CODEC芯片主要負責模擬信號和數字信號的相互轉換。對于本系統來說,更加關心的是將數字PCM信號換為模擬信號,主要是將要播放的文件的音頻數字信號通過SC2410的IIS送給CODEC芯片,然后將其轉換為模擬信號,進而通過音箱或者耳機等設備輸出。
根據采樣定理,采樣頻率至少要是信號頻率的2倍以上,再就是要支持IIS接口標準,因為本系統是通過IIS總線向CODEC芯片傳輸數據的。在本系統的 CODEC選用Philips公司的U-DA1341,該芯片采用3.0 V電壓供電,并對ADC和DAC分別供電,系統的時鐘頻率可選256fs、348fs和512fs,采樣頻率從16 kHz到48 kHz,由于是采用數字音質控制,因此具有重低音效果,并支持IIS總線,可確保高保真的立體聲輸出。圖3所示是UDA1341的工作原理框圖。
整個音頻系統的硬件設計主要是S3C2410的IIS總線接口和CODEC的連接與實現。其具體電路如圖4所示。本系統采用Philips基于IIS音頻總線的UDA1341型音頻CODEC芯片。該CODEC支持ⅡS總線數據格式,并采用位元流轉換技術進行信號處理,具有可編程增益放大器(PGA)和數字自動增益控制器(AGC)。
S3C2410內置IIS總線接口,可直接外接8/16比特的立體聲CODEC,還可以給FIFO通道提供DMA傳輸模式而非中斷模式,從而使數據發送和接收同時進行。該IIS接口有3種工作方式,可以通過設置IIS的CON寄存器來選擇。本文介紹的硬件框架主要基于傳輸和接收模式。在這種模式下,IIS 數據線將通過雙通道DMA同時接收和發送音頻數據,其DMA服務請求可由FIFO只讀寄存器自動完成。
圖4中,S3C2410的IIS總線信號與UDA1341的IIS信號直接相連,L3接口引腳L3MODE、L3CLOCK和L3DATA分別連接到 S3-C2410的GP-B1、GPB2和GPB3三個通用數據輸出引腳。U-DA1341對外可提供兩組音頻信號輸入接口,每組包括左右2個聲道。
3 軟件設計
3.1 系統平臺的選擇
目前主流的嵌入式平臺主要有嵌入式Linux和Windows CE兩大系列。
Linux是一個類似于Unix的操作系統。它起源于芬蘭一個名為Linus Torvalds的業余愛好者,但是現在已經是最為流行的一款開放源代碼的免費操作系統。Linux從1991年問世到現在,已發展成為一個功能強大、設計完善的操作系統。伴隨著網絡技術進步而發展起來的Linux OS已成為Mi-crosoft公司Windows系統的強勁對手。Linux系統不僅能夠運行于PC平臺,還可在嵌入式系統方面大放光芒,很多嵌入式平臺都用Linux作為其操作系統。
Windows CE是微軟開發的一個開放的、可升級的32位嵌入式實時操作系統。其中CE中的C代表袖珍(Compact)、消費(Consumer)、通信能力 (Connectivity)和伴侶(Companion);E則代表電子產品(Electronics)。不同于面向桌面的Windows,微軟重寫了 Windows CE的內核,這使得WindowsCE擁有優越的實時性能。Windows CE中的API是一個縮減的WIN32 API,它是桌面Windows系統的一個子集。這使得許多基于微軟桌面Windows開發的應用程序可以經過少許的改動就能用于Windows CE中。同時,在Windows CE系統平臺上,也可以使用桌面Windows上的編程工具語言(如VB、VC++等),并使用同樣的函數和同樣的界面風格.因此,其開發工作比較容易上手。考慮到大部分用戶多年來使用Windows系列操作系統的習慣.Windows CE的界面風格比較容易讓用戶接受。
綜上所述.本文選擇Windows CE作為系統的開發平臺,開發工具選擇VS系列的EVC。
3.2 軟件流程
圖5所示是MP3解碼的軟件流程圖。首先將MP3文件數據讀人緩存,尋找文件中的ID3信息(ID3信息指MP3文件中可選的一種內嵌信息,用于表示 MP3的音頻類型、作者等,目前分ID3vl和I。D3v2兩個版本),接著在文件中尋找幀同步頭,找到后即進入幀解碼子程序,其幀解碼的具體流程如圖6 所示,解碼完成后,再將解碼出的PCM數據放入音頻緩沖進行播放
,如此循環直到最后一幀。
按鍵編碼電路采用二極管組合邏輯開關陣列來實現對受控電路開關進行編址,其中指令編碼電路采用編譯碼芯片組PT2262。PT2262的A口是地址碼設置口,D口是數據碼設置端,分別和二極管組合邏輯開關陣列的邏輯輸出相連,數據從000~101有6種狀態。發射模塊電路中采用的射頻芯片為 MICRF1020當編碼芯片PT2262的數據輸出端無信號輸出時,MICRF102不工作,發射電流為零,而當PT2262的控制端有效時,輸出的串行脈沖信號對MICRF102進行調制發射,通過調制電阻R2可調整發射電流,從而調整發射距離,較小的R2取值可提高發射距離,而增加二極管開關陣列則可將系統擴展成為多路遙控發射模塊。
3.3 接收控制電路
接收控制系統主要由無線電接收電路、解碼電路、單片機電路、開關電路組成。接收控制系統的電路原理圖如圖6所示。接收控制系統主要完成的功能是對接收進來的信號進行解調和解碼,并將解碼后的數據送單片機,由單片機根據此數據去控制相應的開關進行動作。
4 結束語
本文提出了一種在嵌入式GPS語音導航系統中實現MP3音頻播放的實現方案,給出了解碼步驟,并利用S3C2410核心與Windows CE平臺完成了這一方案。經過實際產品驗證,該解碼器播放效果良好。各項指標均可滿足要求。
評論
查看更多