李 慧,胡永兵,姚夢茹
(安徽大學 計算智能與信號處理教育部重點實驗室,安徽 合肥 230601)
數(shù)字電視、多媒體通信、數(shù)字音頻廣播等對科技的發(fā)展產(chǎn)生了深遠的影響,并且已經(jīng)廣泛地滲透到社會生活的各個方面。早期的音頻分析儀器設(shè)備不但體積大、反應速度慢、結(jié)構(gòu)復雜,而且造價非常昂貴,在某種程度上難以普及使用[1-4]。隨著電子技術(shù)的發(fā)展,嵌入式技術(shù)和超大規(guī)模集成芯片技術(shù)越來越成熟,同時對音頻信號的分析也越來越精確。
針對傳統(tǒng)方法在音頻信號處理中的缺點,文中提出了一種對音頻信號分析設(shè)計的方案。在硬件設(shè)計上,以STM32F103ZET6低功耗的32位單片機作為運算核心,結(jié)合A/D轉(zhuǎn)換器、外部電路LCD顯示模塊和其他必需的外部電路。在軟件設(shè)計上,使用了UCOSIII嵌入式多任務系統(tǒng),實現(xiàn)多任務運行。其基本工作原理是對音頻信號進行快速傅里葉變換,把時域信號轉(zhuǎn)化為頻域信號,通過UCOSIII系統(tǒng),在錄音播放的同時顯示頻譜變化。其中模擬音頻信號經(jīng)過A/D轉(zhuǎn)換前需要先放大然后再濾波,這樣能保證音頻信號不失真、降低噪聲干擾。
模擬信號通過放大和濾波前級電路,經(jīng)A/D轉(zhuǎn)換、錄音到SD卡,再經(jīng)STM32進行FFT運算后播放信號,同時在液晶屏上顯示頻譜。單片機使用的是32位低功耗STM32F103ZET6,該芯片具有64 KB SRAM、2個基本定時器、4個通用定時器、3個12位ADC、1個12位DAC等[5-7]。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
為了增加AD位數(shù)并使A/D量化范圍內(nèi)的量化精度最高而獲得動態(tài)范圍較大的輸入信號,在A/D轉(zhuǎn)換前需要處理輸入的音頻模擬信號。設(shè)計上要求100 dB的輸入信號動態(tài)范圍,幅度范圍為0.01 mV~10 V。設(shè)定ADC,500 mV為芯片的最小輸入信號峰值。由于輸入信號的幅度最大為10 V,設(shè)定ADC 20lg(10
V/500 mV)的動態(tài)輸入范圍,即為26 dB,所以需要62 400,8 000,400,200,1這5路放大倍數(shù)固定的放大電路,使得輸出信號的電壓不超過3.3 V。STM32103常用電壓為3.3 V,其中內(nèi)部ADC的電壓也為3.3 V,因此選擇了AD公司生產(chǎn)的運放AD8656芯片,選擇該芯片是因為放大小信號的增益和放大器輸出主要參數(shù)的影響。該芯片的低壓提供低噪聲10 KHz時為2.7 nV/Hz1/2,280 MHz的運放增益帶寬,10 pA的輸入偏置電流,低失調(diào)電壓最大為250μV。
當采樣頻率滿足大于等于最高頻率的2倍時,可以不失真地恢復出原模擬信號。如果不滿足上述采樣定理的條件,即采樣頻率小于信號最高頻率的2倍,或信號的實際最高頻率超過了二分之一的采樣頻率,則在采樣后的信號頻譜上會發(fā)生頻譜混疊現(xiàn)象。這時,即使使用理想的矩形低通濾波器也無法不失真地恢復出原模擬信號,因此這種失真現(xiàn)象稱為頻譜混疊失真。當確定采樣頻率后,就必須限制原模擬信號的上限頻率,這樣是為了防止產(chǎn)生頻譜混疊失真。通常設(shè)計的音頻信號的頻率在20 KHz以下,因此,設(shè)置一個上限頻率合適的低通濾波器在把信號送到A/D轉(zhuǎn)換之前是為了進行抗混疊處理,防止采樣的頻率是高頻信號的分量而產(chǎn)生頻譜混疊從而影響給定的較低頻率信號的幅值分析[8-10]。由于巴特沃斯濾波器在性能方面沒有明顯的缺點,而且設(shè)計簡單,對構(gòu)成濾波器的元件的Q值沒有明顯的要求,為此設(shè)計了一個四階巴特沃斯低通濾波器,截止頻率為20 KHz的抗混疊濾波器。通常高階濾波器可由多個低階濾波器構(gòu)成,所以在設(shè)計中,四階的低通濾波器由兩個二階巴特沃斯低通濾波器構(gòu)成,如圖2所示。
圖2 抗混疊濾波器的設(shè)計
采用VS1053解碼芯片,該芯片有一個高性能的DSP處理核VS_DSP、16 KB的指令RAM、0.5 KB的數(shù)據(jù)RAM,通過SPI控制,具有8個可用的I/O口和1個串口,芯片內(nèi)部還帶了一個可變采樣的立體聲ADC,一個高性能立體聲DAC及音頻耳機放大器。模擬音頻信號通過前級信號調(diào)理電路后,通過SPI口,芯片VS1053接收輸入進來的音頻模擬信號流,經(jīng)過A/D轉(zhuǎn)換將其編碼成數(shù)字信號存儲到SD卡。接著,經(jīng)D/A轉(zhuǎn)換解碼后從左右通道輸出音樂之前,SPI口不停地向VS1053輸入音頻數(shù)據(jù),再經(jīng)過功放后被人們聽到。其中需要系統(tǒng)配置來控制播放音頻信號。首先,VS1053需要恢復成原始狀態(tài),需要硬復位和軟復位配置。接著,需要配置模式寄存器,時鐘寄存器,音調(diào)、音量寄存器等相關(guān)寄存器,最后發(fā)送音頻數(shù)據(jù),播放音樂[3]。
嚴格要求正確的處理結(jié)果和及時處理過程的系統(tǒng)就稱為實時系統(tǒng)。其中,硬實時和軟實時是實時系統(tǒng)的兩大類,大多數(shù)的實時系統(tǒng)是嵌入式的。這類系統(tǒng)是針對航空航天、工控等對響應時間有嚴格要求的應用場合而產(chǎn)生的,在這些場合中,傳統(tǒng)的PC及其相應的操作系統(tǒng)是無法勝任的。
由Micrium公司開發(fā)的UCOSIII系統(tǒng)是一種可裁剪、可固化、可剝奪的第三代微型實時操作系統(tǒng),其中任務調(diào)度、任務通信、內(nèi)存管理、中斷管理、定時管理等是該系統(tǒng)的特性。在運行系統(tǒng)設(shè)備上,當程序執(zhí)行時,首先會初始化系統(tǒng)任務管理所需要的各種鏈表等數(shù)據(jù)結(jié)構(gòu),其次,根據(jù)需要設(shè)計的應用程序來創(chuàng)建任務,最后由調(diào)度器管理各個任務,而中斷可由操作系統(tǒng)使能和除能,若使能中斷,則可以在其他任務運行時跳轉(zhuǎn)到中斷服務程序[11-15]。由于UCOSII系統(tǒng)每個任務優(yōu)先級的任務個數(shù)只能是一個而且不支持時間片輪轉(zhuǎn)調(diào)度,所以該設(shè)計采用了UCOSIII系統(tǒng)。
在軟件設(shè)計上,使用了嵌入式UCOSIII實時操作的多任務系統(tǒng)。任務就是死循環(huán)。該系統(tǒng)支持多任務操作,最大不超過255個任務,操作系統(tǒng)對這些任務進行調(diào)度管理。在任務根據(jù)優(yōu)先級不斷執(zhí)行的過程中,CPU的使用權(quán)在多個任務中不停變換,多任務管理實際上就是最大化利用了CPU。軟件設(shè)計編寫了四個任務,即頻譜顯示任務,音頻錄音播放任務,LED0、LED1任務,這些任務每一個都有自己的任務堆棧和優(yōu)先級,其中頻譜顯示任務和音頻播放任務的優(yōu)先級是一樣的。按照任務優(yōu)先級,操作系統(tǒng)調(diào)度這四個任務。然后通過開始任務創(chuàng)建自己的任務,接著掛起開始任務。系統(tǒng)設(shè)計流程如圖3所示。
圖3 系統(tǒng)設(shè)計流程
嵌入式UCOSIII操作系統(tǒng)的移植就是指能使UCOSIII在微控制器或者某個微處理器上運行。UCOSIII的移植[16]步驟如圖4所示。
圖4 移植步驟
將編譯后的代碼下載到STM32103開發(fā)板中,結(jié)果顯示LED0開始閃爍,滅的時間比亮的時間長,設(shè)置滅500 ms、亮200 ms;LED1均勻閃爍。接著,打開串口調(diào)試,接收到操作系統(tǒng)發(fā)送的數(shù)據(jù),float_num的值在增加,每次增加0.01,這和在程序中設(shè)置的每次增加0.01相符,說明UCOSIII移植成功。通過軟件編寫,程序調(diào)試下載的結(jié)果:LED0與LED1任務中每間隔200 ms DS0亮一次,間隔500 ms DS1亮一次,接著DS0和DS1同時亮,依次循環(huán)。
音頻模擬信號先經(jīng)過放大與濾波前級電路,之后通過A/D轉(zhuǎn)換,經(jīng)STM32使用FFT算法,錄音到SD卡中,利用UCOSIII嵌入式多任務操作系統(tǒng),在同一優(yōu)先級音頻播放與頻譜顯示同時發(fā)生,其實驗結(jié)果如圖5所示。
圖5 頻譜顯示
采用了多任務內(nèi)核的實時嵌入式UCOSIII系統(tǒng),由于該系統(tǒng)對多任務進行調(diào)度使得系統(tǒng)代碼量有效減少,系統(tǒng)的實時性也有很大提高,實現(xiàn)了CPU資源利用的最大化。在這個過程中,增強了應用程序開發(fā)系統(tǒng)的模塊化,實現(xiàn)了復雜的實時應用。同時,UCOSIII嵌入式多任務系統(tǒng)運行穩(wěn)定,實現(xiàn)多任務在同一優(yōu)先級下發(fā)生。當然該設(shè)計還有不足之處,在后續(xù)的研究中將進一步完善。