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