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