文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.173025
中文引用格式: 王佳飛,關(guān)添,姜宇程,等. 主動噪聲控制平臺的FPGA實現(xiàn)[J].電子技術(shù)應(yīng)用,2018,44(2):59-61,65.
英文引用格式: Wang Jiafei,Guan Tian,Jiang Yucheng,et al. Realization of active noise control platform based on FPGA[J]. Application of Electronic Technique,2018,44(2):59-61,65.
0 引言
隨著工業(yè)現(xiàn)代化的發(fā)展,噪聲的影響越來越受到人們的關(guān)注。噪聲的控制主要分為被動噪聲控制與主動噪聲控制。對于低頻噪聲來說,被動降噪技術(shù)的抑制效果不理想,且伴隨著材料用量大、成本高的問題,實用性較差。此時主動噪聲控制(Active Noise Control,ANC)技術(shù)具有顯著的優(yōu)勢[1]。同時,由于往復(fù)運動裝置或者旋轉(zhuǎn)裝置所產(chǎn)生的窄帶噪聲的能量集中分布于特定的頻帶,其頻率數(shù)值為離散數(shù)值,往往可以通過非聲學(xué)傳感器采集得到,進(jìn)而避免了聲反饋問題,更適合于采用主動控制的方法[2]。
目前工程上針對非聲學(xué)信號的采集主要是基于多個串行處理的單一傳感器,當(dāng)多路傳感器同時工作時不能保證數(shù)據(jù)采集的同步性,這就導(dǎo)致在后續(xù)進(jìn)行數(shù)據(jù)的處理與計算時會產(chǎn)生錯誤。在一些工程實現(xiàn)中,為避免這個問題,提出在多路傳感器后加一臺信號同步調(diào)節(jié)器的解決方案,但這會使得整個系統(tǒng)復(fù)雜且操作麻煩。
針對上述問題,本文搭建了一個基于FPGA的主動噪聲控制平臺。該平臺能夠?qū)崟r正確地采集信號,滿足多通道信號的同步性,同時也方便根據(jù)所需功能擴(kuò)展通道,整個平臺也操作簡單。
1 主動噪聲控制平臺設(shè)計
主動噪聲控制平臺由傳感-作動系統(tǒng)與降噪算法模塊構(gòu)成[3],傳感-作動系統(tǒng)由相關(guān)傳感器及FPGA中對應(yīng)的數(shù)據(jù)處理模塊、數(shù)據(jù)儲存模塊構(gòu)成,負(fù)責(zé)參考信號(與初級信號相關(guān)的各種形式的信號,如振動、轉(zhuǎn)速信號)的采集以及次級聲信號的產(chǎn)生,降噪算法模塊由硬件語言搭成,主要是對參考信號進(jìn)行分析從而產(chǎn)生次級聲信號。
車內(nèi)噪聲主要是發(fā)動機(jī)噪聲、進(jìn)排氣噪聲與傳動系的噪聲。研究表明[4],發(fā)動機(jī)振動引起的低頻噪聲是車內(nèi)噪聲的主要成分,同時發(fā)動機(jī)振動噪聲以及其他傳動系引起的噪聲與發(fā)動機(jī)振動以及車身各點振動成正比,噪聲的主頻率也與發(fā)動機(jī)的轉(zhuǎn)速成正比。基于此,本文在該平臺上通過采集汽車的轉(zhuǎn)速與發(fā)動機(jī)的振動加速度等這些非聲學(xué)信號來構(gòu)建車內(nèi)噪聲的參考信號,繼而產(chǎn)生次級聲信號,以此來避免聲反饋問題。
主動噪聲控制平臺如圖1所示。其中,MPU6065芯片負(fù)責(zé)振動信號的采集,GCAN-600模塊負(fù)責(zé)轉(zhuǎn)速信號的采集,在由非聲學(xué)信號產(chǎn)生噪聲參考信號的過程中,需要初級噪聲信號的參與以及相關(guān)的算法,因此需要WM8731芯片以及音頻輸入輸出模塊來完成初級聲信號的采集與次級聲信號的輸出,同時SDRAM芯片將采集到的數(shù)據(jù)存儲起來,從而研究相關(guān)的算法。
2 傳感-作動系統(tǒng)的實現(xiàn)
2.1 振動加速度的采集
振動加速度的采集所用的芯片是MPU6065芯片,芯片與FPGA之間通過UART協(xié)議進(jìn)行信號傳輸。采樣頻率是100 Hz。
該芯片可采集多種物理信號(如加速度、角速度、角度等),不同的信號有不同的數(shù)據(jù)包格式與檢驗位,每個數(shù)據(jù)包包括10個數(shù)據(jù)位與1個檢驗位,F(xiàn)PGA檢測到這個正確的包頭之后,將前面10個數(shù)暫存起來與檢驗位進(jìn)行比較,正確則進(jìn)行數(shù)據(jù)處理,錯誤則返回初始狀態(tài)等待下一幀正確數(shù)據(jù)到來。
2.2 轉(zhuǎn)速的采集
汽車轉(zhuǎn)速的采集是基于GCAN-600模塊,該模塊可支持所有標(biāo)準(zhǔn)CAN總線物理層及ISO 15765汽車OBD接口診斷協(xié)議,可將汽車電控系統(tǒng)的各項傳感器數(shù)值自動轉(zhuǎn)換為串口格式的數(shù)據(jù),給模塊輸入相對應(yīng)的AT指令讀取所需要的數(shù)據(jù),并通過UART協(xié)議將數(shù)據(jù)輸出[5]。采樣率為200 Hz。
發(fā)動機(jī)轉(zhuǎn)速信號對應(yīng)的指令為ATPID=012,以ASCII碼形式傳輸,接收到的每幀數(shù)據(jù)是指令PID012=XXXX對應(yīng)的ASCII碼。完成一個收發(fā)周期表示采集到一次轉(zhuǎn)速,連續(xù)不斷地對轉(zhuǎn)速信號采集意味著上述收發(fā)周期需要不斷地循環(huán)。但接收到的每一幀數(shù)據(jù)并沒有結(jié)束標(biāo)志位,同時由于轉(zhuǎn)速的位數(shù)不確定(3位數(shù)或4位數(shù)),導(dǎo)致上述循環(huán)沒法自動進(jìn)行,需要借助標(biāo)識符。
使用UART協(xié)議接收數(shù)據(jù)時,每當(dāng)一個數(shù)接收完畢時,就在該數(shù)的末尾產(chǎn)生一個標(biāo)識符rx_done。用邏輯分析儀對接收到的數(shù)據(jù)信號進(jìn)行分析發(fā)現(xiàn),每幀數(shù)據(jù)中兩個rx_done的時間間隔為T1(與UART協(xié)議選擇的波特率相關(guān)),上一幀末尾rx_done與下一幀起始rx_done的時間間隔為T2(與采樣率相關(guān)),且T2>>T1。由此設(shè)計一個計時器,每次檢測到rx_done信號,計時器開始計時,若是在T1+Δt(Δt<<T1)內(nèi)檢測到下一個rx_done信號,表明該幀數(shù)據(jù)還沒有結(jié)束;若沒有檢測到標(biāo)志信號,則表明該數(shù)已是最后一個數(shù),產(chǎn)生該幀數(shù)據(jù)傳輸結(jié)束標(biāo)識符done。檢測到done信號后,F(xiàn)PGA再次給模塊發(fā)送指令A(yù)TPID=012,如此循環(huán),即可不間斷地獲取轉(zhuǎn)速信號。
2.3 音頻的輸入輸出
音頻信號的采集及輸出所采用的芯片是低功耗的音頻編解碼芯片WM8731。音頻傳輸模塊是連接FPGA與音頻編解碼芯片WM8731的接口模塊,它需要實現(xiàn)兩個功能[6]:第一個功能是向WM8731芯片發(fā)送配置參數(shù)的命令,使芯片在系統(tǒng)所需要的模式下工作;第二個功能是在參數(shù)配置完成后,控制麥克風(fēng)采集音頻數(shù)據(jù)。
FPGA通過I2C協(xié)議向芯片傳輸配置參數(shù),配置完成后,F(xiàn)PGA與芯片進(jìn)行音頻數(shù)據(jù)傳輸。在音頻的采集過程中涉及幾個參數(shù):BCLK為音頻數(shù)據(jù)傳輸(包括發(fā)送和接收)過程中的位時鐘線,ADCLRC和DACLRC分別為芯片發(fā)送和接收音頻數(shù)據(jù)的幀時鐘線,ADCDAT和DACDAT分別為發(fā)送和接收音頻數(shù)據(jù)的信號線。
由非聲學(xué)信號生成參考信號后,該參考信號經(jīng)過降噪算法模塊后產(chǎn)生次級聲信號。
在初級聲信號的采集與次級聲信號的輸出過程中都遵循I2S模式。即音頻數(shù)據(jù)有效位的傳輸開始于ADCLRC或DACLRC信號發(fā)生跳變后BCLK信號的第二個上升沿,并且音頻數(shù)據(jù)是從最高位開始傳輸?shù)摹.?dāng)芯片工作在從模式下時,BCLK信號是由FPGA控制器生成的。
2.4 數(shù)據(jù)存儲
采集到的信號需要通過一個以狀態(tài)機(jī)為主體的SDRAM控制器來控制信號實時地存入SDRANM芯片中。
由于SDRAM存儲數(shù)據(jù)是由起始位置開始按給定的存儲長度進(jìn)行順序存儲的,3種信號需要實時存入。同時信號之間不能相互影響或覆蓋,這就需要在SDRAM中給3種信號分配好位置區(qū)間。每種信號有自己不同的起始位置,在進(jìn)行存儲的過程中,SDRAM是按順序存儲的,存儲地址是逐次加1,當(dāng)存儲地址進(jìn)行多位變動時,存儲數(shù)據(jù)會遺失或者出錯[7],故針對多路信號存入SDRAM時,需要對多路信號整體進(jìn)行一個順序控制。另外,由于數(shù)據(jù)在存入SDRAM的過程中存在跨時域的操作,因此平臺中還需要搭建異步FIFO模塊。
FIFO是一種先進(jìn)先出的數(shù)據(jù)緩存器,沒有外部讀寫地址線,只能順序地寫入、讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成。異步FIFO在讀寫兩部分分別采用不同的時鐘[8]。本文中,SDRAM工作頻率是27 MHz,加速度、轉(zhuǎn)速、音頻的采集模塊工作的頻率是50 MHz,數(shù)據(jù)需要跨時域傳輸。另外在多路信號存入SDRAM過程中也需要借助異步FIFO進(jìn)行順序控制:當(dāng)一種信號在存儲時,其他信號先暫存在FIFO中,待上一類信號存完產(chǎn)生標(biāo)志后,再存入下一類信號。即多路信號是同時采集,先后存儲。
3 結(jié)果分析
整個采集系統(tǒng)是在DE2-115開發(fā)板上搭建的,所選用的FPGA是Cyclone IV EP4CE115F29芯片,為了驗證所搭建采集系統(tǒng)的正確性,在用該系統(tǒng)對汽車進(jìn)行數(shù)據(jù)采集的同時,也分別利用錄音器采集音頻信號;加速度傳感系統(tǒng)采集相同位置的振動加速度;轉(zhuǎn)速傳感系統(tǒng)采集發(fā)動機(jī)轉(zhuǎn)速。用此參考系統(tǒng)采集的信號來驗證所搭建平臺對信號采集的正確性與實時性。
在實驗過程中,3個單一信號的傳感系統(tǒng)同時按下各自的開始按鈕進(jìn)行信號的采集,總共采集時間為5 s,大約1 s后,按下所搭建平臺的開始按鈕,3種信號同時采集,采集3 s后停止。這樣所搭建平臺采集的信號是3個參考傳感系統(tǒng)采集信號的子信號,將兩個系統(tǒng)采集到的3種信號做互相關(guān),得到的相關(guān)系數(shù)與子信號的起點時間如圖2所示。從圖2可以發(fā)現(xiàn),轉(zhuǎn)速信號起始時間t1=1.1 s,與自搭建系統(tǒng)采集信號的相關(guān)系數(shù)為1;振動加速度信號起始時間t1=0.91 s,與自搭建系統(tǒng)采集信號的相關(guān)系數(shù)為0.98;音頻信號起始時間t1=1.34 s,與自搭建系統(tǒng)采集信號的相關(guān)系數(shù)為0.94(對于音頻信號,由于各自系統(tǒng)的拾音器不同,造成采集到音頻信號的幅值的數(shù)量級不同,為了更方便地比較,對兩個系統(tǒng)采集到的信號均進(jìn)行歸一化處理)。根據(jù)相關(guān)系數(shù)的定義可得,兩個系統(tǒng)采集到的3段信號可認(rèn)為對應(yīng)相等[9],將子信號的起始時間對應(yīng)到參考信號中,3種信號的時域圖如圖3所示,這也證明了自搭建平臺采集的轉(zhuǎn)速信號的實時正確性。
通過圖2的橫向?qū)Ρ瓤煽闯?,自搭建平臺采集的3種信號對應(yīng)于3個獨立參考系統(tǒng)中起始的時間t1、t2、t3互不相等,這也證明對于多路信號的采集,多個采集系統(tǒng)同時工作時不能保證采集數(shù)據(jù)的嚴(yán)格同步性,還需要專門的儀器進(jìn)行信號的同步調(diào)整[10]。而自搭建的平臺,對于多路信號的操作都是由同一個按鈕進(jìn)行,可以嚴(yán)格地保證數(shù)據(jù)的同步性,這樣可以得到任意時刻汽車的多種參數(shù)。
4 結(jié)論
本文基于FPGA搭建了針對汽車主動降噪的平臺,該平臺的作動-傳感系統(tǒng)可以有效地采集汽車運行中的轉(zhuǎn)速、振動加速度、噪聲信號。同時該平臺也是主動降噪算法實現(xiàn)的硬件系統(tǒng),是后續(xù)主動降噪研究的重要基礎(chǔ)。
數(shù)據(jù)在存入SDRAM前,需要先暫存在FIFO中,導(dǎo)致存入的數(shù)據(jù)量與FIFO的容量相關(guān),后續(xù)可以利用Nios II來對多通道信號進(jìn)行存儲順序的控制,就可以極大擴(kuò)充數(shù)據(jù)存儲的容量,但開發(fā)周期較長。
綜合而言,該平臺具有以下優(yōu)點:
(1)平臺可以正確并且實時采集到參考信號。這為在主動降噪過程中產(chǎn)生次級聲信號的實現(xiàn)打下了很好的基礎(chǔ)。
(2)平臺對采集的多通道信號有嚴(yán)格的時間同步性,即能保證對多路信號的同時操作,這也是其他的基于串行處理器所搭建系統(tǒng)所不能達(dá)到的優(yōu)點[10]。
(3)FPGA的可編程性可以使平臺按需增加功能,方便擴(kuò)展通道數(shù)目,而不必增加其他的芯片或者處理器。
(4)使用硬件語言來編程各種邏輯功能模塊(如控制模塊、降噪算法模塊),可以反復(fù)地編程、查錯、再編程,這樣就可以對平臺進(jìn)行充分的設(shè)計開發(fā)與驗證。
參考文獻(xiàn)
[1] 張式杰.汽車噪聲分析與降噪措施及噪聲測量方法[J].汽車實用技術(shù),2011(2):55-60.
[2] KUO S M,MORGAN D.Active noise control systems:algorithms and DSP implementations[M].John Wiley & Sons,Inc.,1996.
[3] 陳克安,馬遠(yuǎn)良.自適應(yīng)有源噪聲控制——原理、算法及實現(xiàn)[M].西安:西北工業(yè)大學(xué)出版社,2004.
[4] 劉宗巍.基于發(fā)動機(jī)轉(zhuǎn)速的車內(nèi)噪聲自適應(yīng)主動控制系統(tǒng)研究[D].長春:吉林大學(xué),2004.
[5] 廣成科技.GCAN-600用戶手冊[EB/OL].(2016-03-20)[2017-06-03].www.gcgd.net/UploadFiles/pic201682914942458.pdf.
[6] 占楊林,劉紅.基于FPGA和WM8731的音頻編解碼系統(tǒng)的設(shè)計與實現(xiàn)[C].全國青年通信學(xué)術(shù)會議,2009.
[7] 周昆正.基于FPGA的SDRAM控制器設(shè)計[J].現(xiàn)代電子技術(shù),2003(13):63-65.
[8] 異步FIFO的FPGA的實現(xiàn)[EB/OL].[2017-06-03].http://www.cnblogs.com/BitArt/archive/2013/04/10/3010073.html.
[9] 胡廣書.數(shù)字信號處理(理論、算法與實現(xiàn))(第三版)[M].北京:清華大學(xué)出版社,2004.
[10] 計煒梁,凌強(qiáng),朱學(xué)俊,等.基于DSP的主動降噪系統(tǒng)設(shè)計與實現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(24):32-34.