文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.006
中文引用格式: 彭昊,,黃駿雄,江先陽,,等. 多通道高保真音頻信號IIR濾波器設計[J].電子技術應用,,2015,41(11):24-26,,30.
英文引用格式: Peng Hao,,Huang Junxiong,Jiang Xianyang,,et al. Multi-Channel IIR filter design based on FPGA[J].Application of Electronic Technique,,2015,41(11):24-26,,30.
0 引言
數(shù)字濾波器是現(xiàn)代數(shù)字信號處理系統(tǒng)的重要組成部分,,具有模擬濾波器所無法替代的優(yōu)越特性,在語音處理領域更是有著很廣泛的運用,。數(shù)字濾波器根據(jù)單位脈沖響應的不同,,可分為有限脈沖響應濾波器(FIR)和無限脈沖響應濾波器(IIR)。FIR濾波器的優(yōu)點在于具有良好的相位特性,,IIR濾波器的優(yōu)點在于擁有良好的幅頻特性,。IIR和FIR濾波器相比,,在低階數(shù)時就可以達到很好的頻率濾波性能,但其相位特性是非線性的[1],。
音頻信號可以視為不同頻率正弦波信號的疊加,。通過對于音頻信號系統(tǒng)的頻譜分析,可以很清晰地分辨出需要保留的信號以及需要抑制的噪聲信號,。因為人耳對于聲音的相位變化是不敏感的,所以在音頻信號的濾波中,,IIR濾波器的應用相比于FIR更有優(yōu)勢[2],。
另一方面,隨著娛樂媒體的發(fā)展,,高精度的多通道處理更是進行音頻信號處理的重要而基本的需求之一,。由于軟件的串行特性,多通道的音頻信號在處理上往往需要預先搭建特別的平臺,,這使得采用軟件實現(xiàn)的方式既不經(jīng)濟又缺乏擴展性,。目前的設計很多都是針對單通道進行實現(xiàn),而音頻信號往往又存在需要多個聲道混合產(chǎn)生立體聲的問題,。一種傳統(tǒng)的做法是通過DSP專用芯片來實現(xiàn)實時性的音頻信號處理[3-5],,但這種方式中實現(xiàn)并行多通道傳輸往往需要消耗額外的器件資源;而另外一種通過FPGA實現(xiàn)的濾波器方案采用以FPGA內(nèi)部的SOPC實現(xiàn)的一種軟件方式,,并沒有涉及到使用FPGA良好的硬件器件特性實現(xiàn)多路復用的方法[6],。針對這一問題,本文基于FPGA設計了一款可擴展的時分復用多通道IIR濾波器,。
1 IIR濾波器的設計
1.1 系統(tǒng)的穩(wěn)定性判斷
穩(wěn)定性是一個濾波器的重要指標,。IIR濾波器的系統(tǒng)傳遞函數(shù)是復變量z的有理函數(shù),其分子和分母都是z-1的多項式,,因此H(z)可以表示為:
其中ci(i∈[1,,M])是零點di(i∈[1,N])的極點,。一個線性時不變系統(tǒng)當且僅當它的系統(tǒng)傳遞函數(shù)H(z)的極點都處于單位圓內(nèi)時(包括單位圓)是穩(wěn)定的,。由于實際的PCB板內(nèi)部的電磁干擾輸出端會出現(xiàn)一個幅度極小頻率極低的干擾噪聲,在后級放大后使得噪聲不能忍受,,所以濾波器希望能濾掉采樣率為48 kHz的音頻信號中因PCB中噪聲干擾產(chǎn)生的一個極低的噪聲信號,,目標濾波器的濾波器斜率為12 dB/OCT,中心頻率為6 Hz,。
1.2 系數(shù)量化轉(zhuǎn)換
由理論設計出的理想數(shù)字濾波器傳輸函數(shù)的系數(shù)ai,、bi如果用二進制表示是無限精度的。在實現(xiàn)時硬件只有限位寬,,所以必須對數(shù)字濾波器傳遞函數(shù)的系數(shù)進行量化轉(zhuǎn)換,。具體來說在FPGA中實現(xiàn)差分方程時,,一般是把這些非整數(shù)系數(shù)乘以2L然后取整[7-8]。當L值足夠大的時候,,就可以保證IIR濾波器的精度,。而當濾波器的系數(shù)乘以2L,從硬件上可以相應轉(zhuǎn)化為左移L位操作,,左移操作無需消耗乘法邏輯單元從而節(jié)約了邏輯資源,。系數(shù)量化轉(zhuǎn)換完成后可以通過Matlab驗證濾波器系數(shù)是否滿足穩(wěn)定條件。
1.3 系數(shù)的簡化問題
高保真的音頻信號一般是24位的有效數(shù)據(jù),,為了保證濾波后音頻信號的精度,,濾波器系數(shù)也設為24位。通過使用巴特沃斯型IIR濾波器可以將零點全部調(diào)整到單位圓與X軸Y軸的交點處,,從而將ai系數(shù)全部調(diào)整為整數(shù),。在此基礎上將系數(shù)乘以2L(L為整數(shù))后可以將乘法操作轉(zhuǎn)化為移位操作節(jié)省邏輯資源。
依據(jù)應用需要,,目標濾波器的中心頻率為6 Hz,,所需要的濾波器衰減斜率為12 dB/OCT,即一個二階濾波器,。采用Matlab的fdatool工具設置對應參數(shù)并選擇濾波器為巴特沃斯逼近,,生成滿足條件的濾波器系數(shù)[9-10],如表1所示,。
基于1.1節(jié)的穩(wěn)定性分析可知,,這一濾波器是一個穩(wěn)定的二階IIR濾波器,其差分方程可以描述為:
y(n)=a1x(n)+a2x(n-1)+a3x(n-2)+b2y(n-1)+b3y(n-2)
=x(n)-2x(n-1)+x(n-2)-1.998 89y(n-1)
+0.998 89y(n-2)(2)
依據(jù)式(2)和上述分析,,這一濾波器在硬件實現(xiàn)上可簡化為兩個24位乘法器以及數(shù)據(jù)的移位,、求和操作。
1.4 多路時分復用分析
提供多通道可擴展支持有兩種方式:(1)在資源限制小的情況下,,綜合考慮所需要的濾波器的最大工作頻率以及所需要的通道數(shù),,利用FPGA資源的豐富性對單一濾波器結(jié)構進行邏輯復用從而實現(xiàn)并行方式的多路擴展;(2)在所需要的濾波器的工作能力要求不高的情況下,,根據(jù)所需要的通道數(shù),,通過時分復用的方式使用單一的邏輯資源實現(xiàn)多路通道的擴展方案減少資源消耗。由于音頻信號傳輸?shù)乃俾释桓?,使用時分復用單一邏輯的方式會比使用邏輯復用的方式更為經(jīng)濟,,本文基于這一目標設計實現(xiàn)一個4通道的二階IIR濾波器,更多通道的情況將采取類似的思路進行擴展,。
常用的音頻數(shù)據(jù)格式中一次采樣的音頻信號占32位,,如I2S數(shù)據(jù)格式中一次采樣中有24位有效數(shù)據(jù)而另外8位恒定為0,相當于一次采樣保有32個時鐘周期的可利用時間,。在4路數(shù)據(jù)并行情況下,,每一路數(shù)據(jù)計算及緩存值的更新共同所需的時鐘周期數(shù)為Tqt≤32/4=8,,也即設計的濾波器操作周期最大不能大于8。從式(2)發(fā)現(xiàn)每一路信號都需要保存4個中間結(jié)果:x(n-1),,x(n-2),,y(n-1),y(n-2),。由于這些中間結(jié)果之間有強烈的數(shù)據(jù)延遲依賴關系,,即x(n-1)、x(n-2)分別為在第n次計算時第n-1次及第n-2次的數(shù)據(jù)輸入值,,y(n-1),、y(n-2)分別為第n-1次的數(shù)據(jù)輸出值以及第n-2次的數(shù)據(jù)輸出值,在時分復用操作過程中可以利用這一延遲關系節(jié)省時間,。
2 IIR濾波器硬件電路實現(xiàn)
2.1 濾波計算控制狀態(tài)機
前面已經(jīng)給出濾波器每一次的計算周期數(shù)不能高于8,在這不多于8個周期內(nèi)要能夠穩(wěn)定處理中間數(shù)據(jù)的保存和刷新工作采用狀態(tài)機實現(xiàn),。觀察式(2)在采用的設計方法情況下,,其計算過程的第n次輸入的數(shù)據(jù)x(n)僅需要進行移位和加減操作;y(n-1)和y(n-2)需要使用乘法單元,。這一部分的計算利用延遲特性可以從上一路計算結(jié)束時開始,,進而形成流水線提升整個計算效率。
設計中采用的算法狀態(tài)轉(zhuǎn)換圖如圖1,。其中所示的每一個狀態(tài)均占用一個周期,,正好能滿足只要有數(shù)據(jù)輸入整個計算過程為8個周期。為了合理地利用延遲,,從S0狀態(tài)時即可對RAM中的數(shù)據(jù)進行預讀,,這樣在讀入數(shù)據(jù)后的下一個周期,乘法器單元能自動地進行乘法計算,,同時在S3狀態(tài)時得到乘法的輸出結(jié)果,;乘法器采用3級流水線結(jié)構剛好和這一計算過程匹配,充分利用數(shù)據(jù)的延遲特性,,并且能極大地提高該設計的計算能力,,對于后續(xù)的擴展有著關鍵意義。對于系數(shù)部分的移位和求和過程,,則在S1和S2狀態(tài)分別執(zhí)行以節(jié)省時間,。
2.2 多路復用濾波器結(jié)構
設計采用的濾波器結(jié)構如圖2所示。寬度為24的4路待處理數(shù)據(jù)從外部輸入后,,首先將24位的待計算值送入常系數(shù)運算處理單元[11],,這一運算中,首先對于a1,、a2,、a3系數(shù)左移L位,,然后求和a1、a2所對應部分的結(jié)果sum1,,再將sum1與a3移位后所對應的部分求和得到常系數(shù)運算處理單元計算結(jié)果,。在進行移位操作的同時從RAM表中取出參與該次計算的y(n-1)、y(n-2),,并分別在相應乘法單元中進行運算,,得到乘法計算的部分和,隨后將各乘法單元以及常系數(shù)運算處理單元的運算結(jié)果輸入求和單元進行運算,,并根據(jù)參數(shù)的擴展量2L截取求和單元輸出的[L+23:L]作為最終輸出,,這一部分的值還將作為下次計算的y(n-1)存入RAM數(shù)據(jù)保存區(qū)中。為了實現(xiàn)更多的多路擴展,,在采用類似機制的同時,,需要對于RAM數(shù)據(jù)保存區(qū)的存儲單元大小進行適當調(diào)整,以使得容量足夠處理相應多路條件下的中間數(shù)據(jù),。
2.3 目標濾波器資源占用情況
目標濾波器選用的器件為Xilinx公司的Spartan 3AN XC3S700A一款非DSP強化型FPGA,。目標濾波器對應的主要資源消耗情況如表2所示,可見所消耗的資源數(shù)非常低,。乘法器的消耗主要是采用24位乘24位的乘法器IP核來處理音頻信號,。目標濾波器在該器件上可達到的最大工作頻率為129.121 MHz,遠遠高于實際使用的時鐘頻率,,說明這一邏輯可以適用于時鐘頻率更高或同時滿足更多通路的時分復用操作的環(huán)境中,。
3 仿真測試與討論
本文采用Matlab SE 10.1a與ISE Design Suite 14.7聯(lián)合仿真來測試所設計的IIR濾波器。在測試流程中將比對Matlab軟件計算結(jié)果和硬件計算結(jié)果,,從而判斷硬件實現(xiàn)的成效,。仿真測試中,采用一個1.5 kHz幅值為1的正弦波信號疊加上一個3 Hz幅值為3的正弦波信號作為低頻噪聲,。先使用Matlab產(chǎn)生這一激勵信號形成文件然后在測試中讀取這一文件,。為了驗證該硬件濾波器的性能,將Xilinx與Matlab數(shù)據(jù)聯(lián)合仿真的輸出結(jié)果通過Matlab繪制成頻譜圖如圖3所示,,同時利用modelsim將測試的多路濾波的結(jié)果顯示如圖4所示,。
圖3所示為信號處理前的頻譜圖,由于仿真中使用的噪聲信號頻率很低,,中頻部分幾乎沒有信號,,所以將處理前的頻譜分為0~15 Hz,1 000 Hz~2 000 Hz顯示,;圖4為處理后的頻譜,。對比圖3與圖4可見對于3 Hz的噪聲信號通過設計的濾波器后,幅值減為原來的一半,,實現(xiàn)了-3 dB的衰減,。圖5顯示每一個數(shù)據(jù)均能保持4次計算結(jié)束信號周期的時長說明了該濾波器具有多通道時分復用的功能,。
4 小結(jié)
本文根據(jù)實際的音頻信號處理工程需求,設計了一款基于時分復用方式實現(xiàn)4通道語音信號濾波的二階IIR濾波器,。通過Matlab和modelsim的聯(lián)合仿真,,讀取輸出數(shù)據(jù)導入Matlab并通過繪制出對應頻譜,驗證了該濾波器的幅度頻率特性滿足設計目標要求,。
在設計中將傳輸函數(shù)的系數(shù)轉(zhuǎn)換為整數(shù),,從而將乘法計算轉(zhuǎn)化為簡單的移位操作節(jié)約FPGA專有乘法器單元,這一優(yōu)化形式可以方便地拓展到其他應用中,。
文章提出了兩種通道擴展的方式,。本設計目標濾波器依據(jù)所處理的音頻信號特點采用了其中的時分復用方式。此外,,因為二階濾波器是高階濾波器的基本單元,,高階濾波器可以通過二階濾波器以級聯(lián)方式來實現(xiàn)[12],所以本文所設計的IIR濾波器對于實現(xiàn)更復雜語音信號處理所需的高階IIR濾波器有一定的參考意義,。
參考文獻
[1] 周利清,,蘇菲.數(shù)字信號處理基礎(第二版)[M].北京:北京郵電大學出版社,2007.
[2] 趙力.語音信號處理(第二版)[M].北京:機械工業(yè)出版社,,2011.
[3] 謝海霞,孫志雄.IIR濾波器的DSP實現(xiàn)[J].電子器件,,2013,,36(2):194-196.
[4] 崔景安,徐寧.實時音頻信號采集系統(tǒng)中的數(shù)字濾波器的設計及實現(xiàn)[J].內(nèi)蒙古大學學報(自然科學版),,2014,,41(3):336-339.
[5] 欒軍山,陳華.實時音頻處理系統(tǒng)中的IIR濾波器設計及Lattice結(jié)構實現(xiàn)[J].制造業(yè)自動化,,2011,,33(5):97-100.
[6] 邸麗霞,張彥軍,,劉怡文.基于SOPC的高速IIR濾波算法的實現(xiàn)[J].科學技術與工程,,2013,13(33):9978-9982.
[7] 秦宏伍,,史浩,,崔·尤里·謝爾蓋維奇.基于FPGA的IIR濾波器整數(shù)設計[J].微計算機信息,2007,,23(122).
[8] MEYER-BEASE.Digital signal processing with field programmable gate arrays[M].Springer,,2007.
[9] 劉彬.MATLAB環(huán)境下IIR濾波器設計,仿真與驗證[J].電子測量技術,,2011,,34(4):7-10.
[10] 薛定宇,,張曉華.控制系統(tǒng)與計算機輔助設計——MATLAB語言與應用(第二版)[M].北京:清華大學出版社,2000.
[11] 張大為,,姜靜,,劉迪.基于FPGA的IIR低通數(shù)字濾波器的設計[J].船電技術,2012(2).
[12] 王衛(wèi)兵.高階IIR數(shù)字濾波器的FPGA描述[J].現(xiàn)代電子技術,,2005,,207(16):3-4.