引言:研究低成本、高品質的數字音頻解碼系統的設計與實現。解碼系統硬件以S3C2410微處理器、存儲器芯片以及UDA1341TS立體聲音頻解碼芯片為基本框架,實現音頻的采集、存儲和解碼播放。軟件完成操作系統、設備驅動、數字濾波以及解碼程序的移植。本解碼系統具有電路設計簡單,抗干擾性能好,解碼質量好的優點。
憑借體積小、功耗低、集成度高,處理速度快等優點[1],嵌入式系統作為現代計算機技術重要的組成部分已得到廣泛應用。嵌入式數字音頻系統可以實現對音頻信號的采集、存儲、處理、壓縮和解碼播放等功能,已成為當今嵌入式系統應用研究的熱門領域[2]。
本設計以嵌入式系統和數字音頻系統為基礎,研究嵌入式技術在數字音頻系統中的應用。
一、系統體系結構
本系統處理器選用ARM處理器。以市場普及程度高且價格較低的三星S3C2410微處理器和HYUNDAI公司的存儲器芯片以及Philips公司的UDA1341TS立體聲音頻解碼芯片為基本框架,實現音頻的采集、存儲、去噪及解碼播放。
二、硬件結構
本設計以UP-TECH 2410開發板為實驗系統的硬件平臺,該平臺核心資源包含S3C2410微處理器及系統應用開發的大部分設備。
(一)ARM處理器
S3C2410是三星公司推出的一款32位RISC處理器,其內核基于ARM920T,采用0.18微米工藝,其主頻達到203MHZ,帶有MMU功能,同時采用新型總線結構,可以實現MMU、AMBA BUS、Harvard的高速緩沖體系結構,支持Thumb16位的壓縮指令集,能以較小的存儲空間需求,獲得32位的系統性能。
(二)IIS音頻接口
IIS(Inter-IC-Sound)總線是PHILIPS公司提供的串行數字音頻總線接口。S3C2410的IIS接口提供單獨發送/接收數據模式和同時發送接收數據模式,其中的單獨發送/接收模式又分為正常傳輸模式和DMA傳輸模式。
(三)音頻編解碼芯片
PHILIPS公司出品的全雙工低功耗音頻編、解碼專用芯片UDA1341TS作為音頻文件的解碼芯片[4]。芯片采用SSOP28封裝。該芯片集成了ADC、DAC、數字自動增益控制、編碼增益控制,該芯片支持IIS總線格式,數據傳輸字長可為16位,18位,20位。
三、軟件設計
(一)開發環境
ADS是Metrowerks公司于1993年開發的一套應用于嵌入式軟件開發的新一代集成開發環境,是ARM處理器平臺下最主要的開發工具也是目前最成熟的ARM開發工具。
(二)引導程序的移植
引導加載程序是系統加電后運行的第一段軟件代碼,BIOS進行CPU初始化,配置其他硬件并完成硬件檢測和資源分配,接著判斷出事哪一個硬盤包含了操作系統,再把MBR中的Bootloader讀到系統的RAM中,最后將控制權交給操作系統的Bootloader,跳轉到內核的入口地址處運行,隨即啟動操作系統,再由操作系統引導其他應用程序。
(三)系統內核的移植
操作系統移植的主要工作是修改與處理器相關的文件。在S3C2410上的移植UC/OS操作系統時微處理器必須滿足[5]:
(1)開發平臺的C編譯器必須能產生可重入代碼,可重入的代碼指得是一個函數可以被多個任務調用,而不必擔心會使數據破壞;
(2)程序中可以通過OS_ENTER_CRITICAL()或者OS_EXIT_CRITICAL()宏來控制系統關閉或打開中斷;
(3)UC/OS中通過處理器產生定時器的中斷來實現多任務之間的調度,所以處理器必須支持中斷和產生一定的定時中斷的能力,ARM920T處理器可以產生定時器中斷;
(4)寄存器的入棧和出棧是UC/OS操作系統中多任務調度的基礎,UC/OS中進行任務調度時,會把當前任務的CPU寄存器存放到該任務的堆棧中,再從另一個任務堆棧中恢復工作寄存器。
(四)S3C2410平臺的音頻驅動程序
設備驅動程序的主要功能有:⑴對設備進行初始化和釋放;⑵啟動或停止設備的運行;⑶把設備上的數據傳送到內存;⑷把數據從內存傳送到設備;⑸檢測設備狀態,處理設備出現的錯誤。
IIS接口上連接音頻編解碼芯片UDA1341TS的驅動程序包括了對UDA1341TS的L3接口的控制,在linux內核下音頻驅動程序存放在drivers/sound/S3C2410_uda1341.c文件夾下,驅動程序的入口在S3C2410_uda1341.init函數中,驅動程序的開發要根據實際的硬件結構完成接口函數的功能定義。
(五)wav文件的讀取過程分析
首先在ADS環境下建立新工程,初始化IIS包括對IISMOD、IISFCON、IISPSR、IISCON的初始化,再進一步初始化DMA寄存器。
讀取wav文件數據的過程是預先打開文件取得文件的結構指針,再判斷文件指針是否為空,如為空,則在液晶屏上提示錯誤,倘若文件指針不為空,則讀取文件信息并顯示。假設Text Filename 為打開的文件名,其可以根據wav文件名隨意設置,在字符串數組中定義為:
char TextFilename[]=\"/sys/ucos/fj/gequ.wav\"。
編寫程序代碼如下:
pfile= fopen(Text Filename,\"r\"); //打開文件
if(pfile==NULL) { //文件打開失敗
LCD_printf(\"\n Can't Open file!\n\");
while(1);
OSTimeDly(1000); }
DataCount=fread((U8*)str,512,(int)(AUDIO_IN_BUFFERSIZE*20/512),pfile);
文件讀取完畢以后,用CloseOSFile 函數關閉文件,釋放文件緩沖區中的內存空間。
(六)數字音頻解碼
數字音頻解碼采用軟硬件結合的方法實現。以MP3文件的解碼為例說明數字音頻解碼的過程。 MP3音頻文件的最小組成單位是幀。每幀又由頭部和幀數據部分組成。幀頭為4個字節,其中幀同步標記為0xFFF,由幀頭、通道信息、增益因子信息等組成。
(七)數字濾波
由于音頻信號中存在噪聲,為消除噪聲的影響,需要對信號進行濾波。本設計采用具有“數學顯微鏡”之稱的小波分析方法對信號去噪。
四、總結
本文完成了基于ARM Linux下的嵌入式音頻系統,對驅動程序的設計及內存管理問題進行了詳細的分析、設計和說明,實現了處理效果良好的音頻解碼器。本設計實現的解碼系統具有價格低,電路設計簡單,抗干擾性能好,解碼質量好,低功耗高性能的優點,開發過程具有較好的實踐推廣意義。
參考文獻
[1]徐英慧,馬忠梅等.ARM9嵌入式系統設計--基于S3C2410與Linux[M].北京:北京航空航天大學出版社,2007.
[2]程呂南,方強.ARM Linux入門與實踐[M].北京:北京航空航天大學出版社,2008.
[3]劉立昶.基于ARM Linux QT 的掌上多媒體系統的設計和實現[J].電子技術,2009(9):39-41.
[4]宋寶華.Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.
(作者單位:貴州財經大學 現代教育技術中心)