關鍵詞: 聲學;窄帶ANC;FPGA;并聯FxLMS算法;資源復用
中圖分類號: TN98;O422.8
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.170182
中文引用格式: 姜宇程,關添,王佳飛. 窄帶噪聲主動控制系統的FPGA實現[J].電子技術應用,2017,43(9):61-63,67.
英文引用格式: Jiang Yucheng,Guan Tian,Wang Jiafei. The FPGA implementation of narrowband active noise control system[J].Application of Electronic Technique,2017,43(9):61-63,67.
0 引言
噪聲污染廣泛存在于工業生產和日常生活中,而其中的周期性噪聲,如發動機、壓縮機、風扇及螺旋槳等旋轉或往復設備發出的噪聲也十分常見[1]。由于其噪聲能量集中分布于特定的頻帶,所以被稱為窄帶噪聲。隨著電子技術的進步,主動噪聲控制技術逐漸發展,相比于傳統的被動噪聲控制,主動噪聲控制具有成本低、靈活性高等優點[2]。而且窄帶噪聲不同于寬帶噪聲,其頻率數值往往可以通過非聲學傳感器采集得到,進而避免了聲反饋問題,更適合于采用主動控制的方法[3]。
目前主動噪聲控制系統工程實現時主要采用的是DSP處理器,其優點在于相關驅動比較成熟并且芯片成本較低[4]。但是隨著窄帶噪聲頻率的提高,需要的音頻采樣率也要提高,因此計算量會相應增加,DSP的計算速度就會成為瓶頸,所以目前的主動噪聲控制系統所應用的場景都是低頻噪聲[5]。為了能夠對高頻噪聲進行主動控制,同時也為了應對多頻率、多通道情況下計算量成倍增加的情況,本系統采用并行計算能力較強的FPGA作為核心處理器,并對并聯結構的窄帶前饋FxLMS算法進行了工程實現與實際測試。此外考慮到并聯結構算法對于乘法器資源的消耗大,本文采用乘法器資源復用技術[6],極大降低了系統成本,便于系統的實際工程應用。
1 FxLMS算法分析與改進
1.1 窄帶前饋FxLMS算法
前饋ANC系統有兩種實現方法,其主要區別在于參考信號的來源[2]。雖然用聲學傳感器采集初級噪聲作為參考信號的算法可以針對寬帶和窄帶噪聲進行主動控制,但是聲反饋問題會嚴重影響算法的穩定性。所以本文設計的系統只針對窄帶噪聲信號,從而可利用加速度計、轉速計等非聲學傳感器采集并計算出噪聲信號主要頻率,進而在系統內部生成參考信號。窄帶前饋FxLMS算法的結構如圖1所示。算法主要包括參考信號的產生、次級聲通道的離線辨識以及LMS自適應濾波3個部分[7]。
圖1中W(z)代表FIR濾波器,P(z)代表初級聲通道,S(z)代表從次級噪聲數模轉換到傳聲器采集到音頻數據之間的次級聲通道,[8],為了補償次級聲通道的影響,FxLMS算法需要得到次級聲通道S(z)的M階FIR估計 。假設次級聲通道是時不變系統,則可以采用離線辨識的方法。圖1中虛線框內即為系統所采用的離線辨識模塊。穩定后得到次級聲通道的傳遞函數為:
1.2 并聯結構FxLMS算法
在實際中,窄帶噪聲往往還包括其基頻的高次諧波或者其他能量較高的頻率分量。為了解決這個問題,可以使上一節中的正弦信號發生器包含多個對應的頻率分量,這樣做的優點是算法結構簡單、資源消耗低。但同時會帶來一個嚴重的問題,即當噪聲中各頻率分量差距較大時,同一個步長因子μ無法使所有頻率達到最佳的收斂狀態,會產生振蕩或者不收斂的情況。而當各頻率分量差距較小時,就需要自適應濾波器的階數足夠長,以滿足相鄰頻率的高分辨率,這會導致收斂速度慢、量化誤差大等問題[2]。所以,解決這個問題最好的辦法是單獨處理各個頻率分量,即采用并聯結構的FxLMS算法。算法結構如圖2所示。
自適應算法的系數調整公式為:
在并聯結構的FxLMS算法中,不同頻率的正弦參考信號由其對應的自適應濾波器分別處理。所有濾波器輸出信號相加后作為次級噪聲信號,用于抵消初級噪聲。通過這種方式將噪聲中不同的頻率成分分開處理,系統的穩定性和收斂速度都會得到明顯提高,同時增加了系統應用的靈活性。相比于一般結構的FxLMS算法,并聯結構算法會成倍地增加對系統資源的占用,但是這個不足可以利用系統FPGA實現過程中采用的資源復用技術克服。
2 ANC系統的搭建與實現
系統采用FPGA作為信號處理器的原因有兩點。首先是將算法進行硬件實現后,其運算速度更快,利于搭建實時處理系統;其次利用FPGA并行計算的優點,通過簡單的復制,即可將現有ANC系統擴展為多通道,使系統可以應用于更多的實際場景。然而FPGA在實現數字信號處理算法,尤其是濾波器等乘加運算較多的算法時,其內部的乘法器資源消耗會很大,而選擇乘法器數量多的FPGA型號會極大提高系統成本。所以為了提高ANC系統的實用性,需要對FPGA內部的乘法器進行復用。
2.1 乘法器資源復用技術
考慮到系統中FPGA的工作時鐘為50 MHz,而音頻模塊的采樣時鐘為32 kHz,滿足系統時鐘頻率遠大于數據時鐘頻率的條件。所以采用將同一時刻并行進行的乘法運算部分轉換為串行計算的方法對乘法器進行復用,即所謂的時間復用。時間復用的時序過程如圖3所示。
假設有N個并行的階數為M的濾波器,則當數據時鐘上升沿到來時,需要計算出N×M個乘法結果,即需要N×M個乘法器。而如果采用復用技術,乘法器在數據有效后接受控制器的統一調度,逐一計算各濾波器在該級的乘法運算,只要滿足兩次乘法運算的時間間隔大于乘法器輸出結果的時間,則N個乘法器串行計算的輸出結果正確。這樣并行濾波器所消耗的乘法器數目就會降為M個,大大節約了乘法器資源。
由于本系統是對相同類型的算法模塊進行乘法器復用,所以可以采用簡單的計數器實現調度控制,即在數據有效后對系統時鐘開始進行計數,在不同的計數值進行各算法模塊的乘法運算,同時在不同的計數值輸出各乘法運算結果。
2.2 系統分析
本文所實現的ANC系統所完成的功能是對環境噪聲中3個主要頻率分量進行主動控制,達到整體降噪的目的。降噪算法采用3個并聯的FxLMS濾波器實現,如果不采用資源復用技術,除了次級聲通道辨識以外,算法還需要3個128階FIR濾波器以及3個64階LMS自適應濾波器,理論上共需要960個乘法器。由于采用了復用技術,所以系統算法包括一個128階的次級聲通道辨識模塊、一個三輸入三輸出的128階FIR濾波器和一個三輸入三輸出的64階LMS自適應濾波器,只需要320個乘法器即可,相比復用前節約了2倍的乘法器資源。系統采用的FPGA芯片為Altera公司Stratix III系列中的EP3SE260F1152C2,系統實現后所消耗的資源及比例如表1所示。
由表1可以看出,FPGA的資源可以滿足算法要求,經調試后系統整體可以正常工作。
3 結果分析
對所搭建的ANC系統進行實際應用測試,測試所采用的初級噪聲為音箱發出的窄帶噪聲信號,其主要頻率為1 000 Hz、2 000 Hz和3 000 Hz。ANC系統工作之前,拾音器采集到的聲音為初級噪聲,ANC系統工作之后,拾音器采集到的聲音為初級噪聲和次級噪聲疊加以后的誤差噪聲信號。通過將ANC系統工作前后拾音器所采集到的信號的時域和頻域進行對比,即可以判斷預期的系統功能是否實現。
對參考信號頻率與噪聲頻率基本相同的情況進行測試,即參考信號的頻率成分1 000 Hz、2 000 Hz和3 000 Hz。圖4顯示了ANC系統工作前后的噪聲信號時域和頻域的對比。
定義收斂時間為時域波形中的誤差噪聲信號幅值降低到初級噪聲幅值的20%以下的時間,對噪聲時域波形的分析可以得出在無頻偏的情況下,ANC系統的收斂時間為12.5 ms。分析頻域圖可以得出,無頻偏情況下系統對于噪聲中1 000 Hz、2 000 Hz和3 000 Hz的頻率分量分別可以達到15.5 dB、14.3 dB和11.0 dB的衰減。基于DSP的FxLMS算法的系統在汽車發動機噪聲主動控制測試的結果為13.5 dB[10],可以看出本文所實現的系統在降噪效果和功能擴展方面具有明顯優勢。
4 結論
本文提出了一種基于FPGA的窄帶噪聲主動控制系統的設計方法。該系統克服了傳統ANC系統只能針對低頻窄帶噪聲控制應用的不足,使其更適于實際應用。此外,資源復用技術的應用大大減少了系統對于FPGA乘法器資源的消耗,降低了系統成本。由于FPGA的并行性特點,可以通過模塊復制將系統應用于多頻率多通道噪聲主動控制的環境。
通過對系統的實際測試驗證了系統噪聲控制的有效性。通過與不同噪聲頻率分析算法配合,可以將該系統應用于多種窄帶噪聲的控制領域。例如對于汽車車內發動機噪聲的主動控制,可以通過實時采集汽車發動機信號,分析出汽車發動機噪聲主要頻率,進而利用本文所提出的系統對其進行主動控制。但是本文系統自適應算法的內部參數,包括濾波器階數以及算法步長因子等是通過仿真實驗確定的,并沒有形成一個統一的選擇方法,還需要后續的研究加以完善,以擴大系統的實際應用范圍。
原文標題:【論文精選】窄帶噪聲主動控制系統的FPGA實現
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論