摘 要: 詳細介紹了一種基于ARM的音頻頻譜顯示系統(tǒng)的實現(xiàn),整個音頻顯示系統(tǒng)包括音頻信號采集、音頻信號處理以及音頻信號轉(zhuǎn)換后的顯示等功能。在設(shè)計中綜合了聲音采集、ARM技術(shù)及FFT算法,構(gòu)建了一個實時采集的頻譜顯示系統(tǒng),可以應(yīng)用于各種需要對聲音進行采集和分析的場合。其中,硬件系統(tǒng)主要包括聲音信號的采集與處理、最小系統(tǒng)、電源和顯示模塊;而軟件系統(tǒng)則是將ADC轉(zhuǎn)換的數(shù)據(jù)通過FFT算法后顯示在LCM12864顯示器上。測試結(jié)果表明,該系統(tǒng)具有較好的實時性和準確性。
關(guān)鍵詞: 音頻;頻譜顯示;FFT;ARM
本文設(shè)計了基于SONiX公司的ARM Cortex-M0 SN32F700的音頻頻譜顯示器,采用性價比較高的Cortex-M0 SN32F700實現(xiàn)對音頻頻譜的分析處理,取代了傳統(tǒng)使用純硬件濾波器或?qū)S脭?shù)字處理芯片DSP來實現(xiàn)的方法,具有較高的實用價值。本文采用ARM作為控制核心[1-3],充分發(fā)揮了其功耗超低、精度較高等優(yōu)勢,其他各部分電路設(shè)計也充分考慮了簡單、可靠、經(jīng)濟等因素,為實際應(yīng)用提供了一定的參考價值。
1 系統(tǒng)總體設(shè)計方案
1.1 系統(tǒng)控制芯片選擇
本系統(tǒng)以SONiX公司的ARM Cortex-M0 SN32F700芯片為控制核心,SN32F700的主時鐘的速率為50 MHz,采用三級流水線結(jié)構(gòu)且片上資源豐富,能夠很好地實現(xiàn)系統(tǒng)的控制和算法,甚至能簡化一些復(fù)雜的硬件電路。相比于普通的單片機,采用ARM作主控芯片的方案具有靈活性、可擴展性、通用性的優(yōu)點,而且還可以根據(jù)市場的需求組合,價格上也有一定的優(yōu)勢,本系統(tǒng)最終選擇ARM的芯片方案來構(gòu)建音視頻處理平臺。
1.2 音頻頻譜顯示方案
方案一 利用硬件濾波器和A/D轉(zhuǎn)換器,并用DDS芯片配合FIFO對信號進行采集,通過DDS集成芯片產(chǎn)生一個頻率穩(wěn)定度和精度相當高的信號作為FIFO的時鐘,然后由FIFO對A/D轉(zhuǎn)換的結(jié)果進行采集和存儲,最后送入MCU進行處理。
方案二 直接由32位MCU的定時中斷進行信號的采集,然后對信號進行分析。因為32位MCU是50 MHz的單指令周期處理器,所以其定時精確度為20.0 ns,已經(jīng)遠遠可以實現(xiàn)本文期望的采樣率,而且控制方成本較低,因此選擇由MCU直接采樣。
方案一實現(xiàn)簡單,但硬件成本高,方案二軟件和硬件實現(xiàn)都較簡單。而這里針對ARM資源多、運算速度快的特點,提出一種切實可行的快速傅里葉變換算法實現(xiàn)頻譜顯示。因此選取方案二作為音頻頻譜顯示計方案。
1.3 系統(tǒng)控制方案選擇
在整個音頻處理系統(tǒng)中,采用順序、循環(huán)掃描和定時輸出顯示的方式來對整個系統(tǒng)控制[4]。軟件系統(tǒng)中的各個子程序逐步實現(xiàn),最后再將所需要的子程序合并,這樣就具有編寫代碼容易、易于移植、維護及開發(fā)周期短等特點。最重要的是實現(xiàn)了程序中數(shù)據(jù)的快速處理輸出,使得將來的擴展更加方便。因此選用的主控芯片是SN32F700。
在上述硬件電路設(shè)計中,主要著眼于音頻信號預(yù)處理電路的設(shè)計。在實際應(yīng)用中,音頻信號主要來源是咪頭、麥克風(fēng)輸入信號或者是播放器輸出信號,圖3所示是一段電腦播放音樂時聲卡輸出的音頻波形。
從圖3可以看到,電腦上的聲音信號的電壓有正、負兩種狀態(tài),當直接從電腦上取聲音信號時,需要對其進行處理,使采集的電壓全為正。下面介紹如何對信號進行處理,可以直接從電腦上取出聲音信號,也可以通過采集電路采集外界的聲音信號。
2.3 音頻預(yù)處理放大電路
由于在實際的音頻運用中,音頻信號會出現(xiàn)電壓為負值的現(xiàn)象,而單片機只能識別0和1,對負電平不能處理,因此要對音頻信號進行處理,使得音頻信號最后的輸入達到單片機的電壓變換范圍,即在AVREFH和AVREFL之間,以便于MCU進行ADC轉(zhuǎn)換。
由于是對聲音信號處理,因此選擇了對于音頻信號具有很低失真率的LM358運算放大器。根據(jù)以上分析,設(shè)計出的音頻預(yù)處理電路如圖4所示。
圖4中電阻R5、R6更具運算放大器中虛短與虛斷的特性,即反相端2和同相端3兩個輸入口的電壓和電流相等,R5、R6組成的是一個運算放大電路,(1+R5/R6)是其放大倍數(shù)。將輸入的負電壓信號變成正的電壓信號,其原理是串聯(lián)電阻分壓和RC組成的低通濾波器根據(jù)輸入電壓的高低對輸入信號進行充放電,使輸入信號的電壓得到升高。
2.4 音頻顯示電路
本設(shè)計所選用的顯示屏LCM是JDL12864G-04。JDL12864G-04模塊是點陣液晶顯示模塊,它主要由行驅(qū)動器、列驅(qū)動器以及128×64全點陣液晶顯示器組成,可以完成圖形和8×4個漢字(16×16點陣)。
LCM向用戶提供一個標準的LCD顯示驅(qū)動接口(有4位、8位和VGA等不同類型),用戶按照接口要求進行操作來控制LCD正確顯示。相比玻璃LCM是一種更高集成度的LCD產(chǎn)品,對小尺寸LCD顯示,LCM可以比較方便地與各種微控制器(比如單片機)連接。由于SN32F700的時鐘頻率是50 MHz,則每秒鐘對LCM的可刷新次數(shù)為50 M/(128×64×8)=762次,完全滿足頻譜刷新的頻率。LCM12864顯示電路如圖5所示。
3 系統(tǒng)的軟件設(shè)計與調(diào)試
系統(tǒng)的調(diào)試包括硬件平臺的調(diào)試與系統(tǒng)程序的調(diào)試。在每一個工程中,調(diào)試都是一個非常重要且十分復(fù)雜的環(huán)節(jié)。
3.1 系統(tǒng)的軟件設(shè)計
本系統(tǒng)軟件程序設(shè)計中包含了初始化部分、音頻采集部分、FFT運算部分、幅值計算部分及頻譜顯示部分。每個部分可以清晰地了解程序的流程,使得程序的結(jié)構(gòu)更加簡單,對于以后相應(yīng)的開發(fā)可以很好地進行移植[5-6]。
3.2 系統(tǒng)的測試
系統(tǒng)的測試電路是將1 kHz的正弦波作為聲音信號輸入到電路中,圖6是聲音信號經(jīng)過聲音采集電路后的顯示。其中,信號1是輸出,信號2是輸入??梢悦黠@看出,信號1與信號2的波形是相反的,相位相差180°。
1 kHz的正弦波輸入經(jīng)過音頻采集電路和音頻預(yù)處理電路后的顯示如圖7所示。其中,信號線1為輸入,信號2為輸出,輸入與輸出方向相同,相位無差別。
本文介紹了基于ARM的音頻頻譜顯示器的設(shè)計方法,完成了音頻頻譜顯示器的設(shè)計和制作,并對其進行了性能測試。測試結(jié)果表明,整個系統(tǒng)能夠順利采集音頻信號并進行處理,最終在LCD上顯示所采集的頻譜圖,達到一個較好的性能,實現(xiàn)了預(yù)期的效果。
參考文獻
[1] 周林,殷俠.數(shù)據(jù)采集與分析技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005.
[2] 周立功,王祖麟,陳明計,等.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2008.
[3] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.
[4] 李明明,李宏,王晨波.基于FPGA與單片機的音頻頻譜分析系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2013(1):101-102.
[5] 王春菊.數(shù)字式頻譜分析儀原理分析[J].標準、檢測與儀器,2001(12):95-96.
[6] 吳明暉.基于ARM的嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:人民郵電出版社,2004.