基于SOPC的嵌入式數字音頻AGC系統的設計與實現
2.5 仿真結果及分析
為了驗證該算法的正確性和有效性,采用Matlab對該數字音頻AGC算法進行仿真。仿真結果如圖3所示。本文引用地址:http://www.104case.com/article/151004.htm
在仿真中輸入一段聲音忽大忽小的數字音頻,從經過AGC處理后的數字音頻輸出來看,大音量的音頻信號被有效衰減,小音量的音頻信號被有效放大,正常音量的音頻信號幾乎沒有變化。該段音頻長度為6 s,增益因子在此期間可調整300次,該算法的增益因子調整速度可以滿足音頻劇烈變化時的使用需求。對噪音的抑制也起到了很好的效果,人耳的實際聽覺感知達到了滿意的效果。
3 軟件層設計
目前比較流行的嵌入式操作系統主要有VxWorks,Windows CE,uCLinux,μC/OS-Ⅱ等。μC/OS-Ⅱ的規模較小、實時性和可靠性較高,能夠滿足嵌入式數字音頻AGE系統對實時性的要求,考慮到NiosⅡIDE開發環境對μC/OS-Ⅱ的良好支持,故操作系統選擇μC/OS-Ⅱ。μC/OS -Ⅱ是一種可移植、可固化、可裁減、占先式的多任務實時操作系統內核。它通過為每個任務分配單獨的任務堆棧來保存任務工作環境,提供任務管理與調度,任務間的同步、互斥與通信,時間和中斷管理、內存的動態分配等多種系統服務。
系統運行時,首先進行系統初始化操作,即初始化所有數據結構,分配堆棧空間,然后建立任務間通訊的信號量或者消息隊列,進而創建任務,并且分配不同的優先級,所有任務被置于就緒態,系統從優先級最高的任務開始執行。
軟件設計主要包括嵌入式操作系統μC/OS-Ⅱ的移植、LCD顯示控制器和自定義音頻模塊的驅動程序設計、算法設計實現3個主要部分。嵌入式音頻AGC系統根據功能劃分主要有以下4個任務,如圖4所示。
(1)系統初始化任務,主要是用以初始化整個嵌入式音頻AGC系統,包括初始化各種系統變量、LCD控制器、鍵盤、自定義音頻接口模塊等系統模塊,此外還擔負著創建其他任務和信號量的任務,是系統正常運行必不可少的一環,該任務在系統中有最高的優先級。在正常初始化系統以后將該任務刪除以節省系統開支。
(2)音頻AGC處理任務,對自定義音頻接口的輸入音頻進行AGC處理,配合自定義音頻接口的驅動程序將處理好的音頻進行輸出。該任務是嵌入式音頻AGC系統的核心任務,在系統初始化任務完成并刪除后成為系統內優先級最高的任務。
(3)鍵盤輸入響應處理任務,對PIO輸入的按鍵信息進行相應處理,如果有改變參數設置等重要信息要通過信號量及時反饋給音頻AGC處理任務,同時負責輸出要在LCD上顯示的內容,通過郵箱信號量發送給LCD顯示任務。它的優先級比LCD顯示任務高。
(4)LCD顯示任務,將接收到的內容配合LCD控制器驅動程序進行LCD的顯示輸出。
4 結束語
本設計采用SOPC技術,利用FPGA實現SDI接口邏輯,移植μC/OS-Ⅱ實時操作系統為嵌入式應用軟件運行平臺,可以實現與廣電設備的無縫接合。通過設計采用一種適于實時性的多參數融合的AGC算法對數字音頻信號進行AGC處理,實現了具有抑制一定噪聲能力的嵌入式數字音頻AGC系統。測試表明該系統達到設計預期目標,改善了傳統音頻AGC處理中的一些缺陷,輸出音頻穩定平衡,完全滿足實際需要,可廣泛應用在數字演播室中的數字音頻實時AGC處理上。
評論