大多數(shù)熟知數(shù)字信號處理的工程師都知道濾波器的主要類型有四種。低通濾波器只允許頻率低于預(yù)設(shè)截止頻率的信號通過。高通濾波器與低通濾波器相反,只允許頻率高于截止頻率的信號通過。帶通濾波器只允許頻率在預(yù)設(shè)帶寬內(nèi)的信號通過,不允許其它頻率的信號通過。帶阻濾波器與帶通濾波器相反,不允許頻率在預(yù)設(shè)帶寬內(nèi)的信號通過,但允許其它頻率的信號通過。
結(jié)合濾波器階躍響應(yīng), 頻率響應(yīng)、脈沖響應(yīng)和階躍響應(yīng)提供了有關(guān)濾波器性能的所有信息,可用于判斷濾波器是否滿足設(shè)計(jì)要求。
頻率響應(yīng)
頻率響應(yīng)是工程師在考慮濾波器時所習(xí)慣關(guān)注的問題。它代表著濾波器改變頻域信息的性能。
通過頻率響應(yīng)可以觀察到截止頻率、阻帶衰減和通帶波紋。在該響應(yīng)中還可以清晰地觀察到通帶和阻帶之間的滾降,也稱為過渡帶。通帶中的波紋會給濾波信號造成影響。阻帶衰減則表明濾波器輸出中存在多少不必要的頻率。這對需要抑制特定頻率的應(yīng)用意義重大,比如在通信系統(tǒng)中為頻分多路復(fù)用通道濾波。
脈沖響應(yīng)
從脈沖響應(yīng)中可以抽象出濾波器的系數(shù)。但是,要實(shí)現(xiàn)濾波器的最佳性能,標(biāo)準(zhǔn)的方法是采用窗函數(shù)。窗函數(shù)指給截?cái)嗟拿}沖響應(yīng)應(yīng)用額外的數(shù)學(xué)函數(shù),以求減輕截?cái)鄮淼母弊饔谩?/p>
在圖 2 中,由于紋波的存在,脈沖響應(yīng)向外無限延伸,盡管紋波的振幅顯著降低,但永遠(yuǎn)不會降低至 0。因此,必須圍繞位于中心的主瓣,在兩側(cè)對稱地按 N+1 的系數(shù)截?cái)嗝}沖響應(yīng),這里 N 是期望的濾波器長度(切記 N應(yīng)為偶數(shù))。脈沖響應(yīng)被突然截?cái)鄷o濾波器的頻域性能帶來不良影響。如果對截?cái)嗟拿}沖響應(yīng)進(jìn)行離散傅里葉變換 (DFT),可以觀察到通帶和阻帶都有波紋出現(xiàn)以及滾降性能的下降。這就是為什么一般會采用窗函數(shù)來改善性能的原因。
階躍響應(yīng)
對脈沖響應(yīng)進(jìn)行積分所得的階躍響應(yīng)體現(xiàn)著濾波器的時域性能以及濾波器自身如何影響該性能。觀察階躍響應(yīng)時應(yīng)重點(diǎn)關(guān)注的三大參數(shù)分別是上升時間、過沖以及線性度。
上升時間指從振幅級的 10% 上升到 90% 所需的樣本數(shù)量,可顯示濾波器的速度。要在最終系統(tǒng)中具有實(shí)用性,濾波器必須能夠區(qū)分輸入信號中的不同事件,因此階躍響應(yīng)必須短于信號中各事件之間的間隔。
過沖是指濾波器添加至其正在處理的信號時產(chǎn)生的失真。降低階躍響應(yīng)中的過沖有助于判斷信號的失真是來自系統(tǒng),還是來自系統(tǒng)正在測量的信息。過沖不但可增大失真來源的不確定性,降低最終系統(tǒng)性能,而且還可導(dǎo)致系統(tǒng)無法滿足所需的性能要求。
如果信號的上半部分和下半部分是對稱的,則濾波器的相位響應(yīng)具有線性相位,這是確保階躍響應(yīng)的上升沿和下降沿相同的要件。
優(yōu)化濾波器,以在時域和頻域中同時實(shí)現(xiàn)良好的性能是非常困難的,在這一點(diǎn)上它也是毫無價(jià)值的。因此,必須明白需要處理的信息位于哪一個域中。對于 FIR 濾波器而言,需要處理的信息位于頻域中,因而頻率響應(yīng)占主導(dǎo)地位。
濾波器加窗
使用截?cái)嗝}沖響應(yīng)不能提供最佳性能數(shù)字濾波器,因?yàn)樗荒苷故救魏卫硐氲奶匦?。因此設(shè)計(jì)人員可采用視窗函數(shù)來改善濾波器的通帶紋波、滾降以及阻帶衰減性能。對于截?cái)嗾液瘮?shù),有許多視窗函數(shù)可以使用,如高斯、巴特利特、海明、布萊克曼以及凱塞等。不過最常用的兩種視窗函數(shù)是海明和布萊克曼。下面將詳細(xì)介紹這兩種視窗。
采用這兩種視窗不但可降低通帶紋波,而且還可提高濾波器的滾降和衰減性能。圖 3 是采用布萊克曼和海明視窗后截?cái)嗾液瘮?shù)的脈沖響應(yīng)和頻率響應(yīng)情況。如圖所示,兩種視窗均可顯著改善通帶紋波狀況。
濾波器的滾降不僅由視窗決定,而且還由濾波器的字長決定,即系數(shù)的數(shù)量,也就是常說的濾波器抽頭。
海明視窗:
w[i] = 0.42 – 0.52 cos (2PI*i/N)
布萊克曼視窗:
w[i] = 0.42 – 0.52 cos (2PI*i/N)
+ 0.08 cos(4PI*i/N)
方程式中 i 為 1 至 N 時,總數(shù)等于 N+1個點(diǎn)。
要將這些視窗應(yīng)用于截?cái)嗝}沖響應(yīng),必須用視窗系數(shù)乘以截?cái)嗝}沖系數(shù),得出所需的濾波器系數(shù)。
雖然視窗類型決定了滾降頻率,但經(jīng)驗(yàn)法則告訴我們,對于所需的跳變帶寬,需要的抽頭數(shù)量為:
N=4/BW
其中 BW 為跳變帶寬。
實(shí)現(xiàn)不同的濾波器拓?fù)?/strong>
無論最終得到的濾波器類型是什么(是帶通、帶阻還是高通),所有這些都始于低通濾波器的初始設(shè)計(jì)。如果知道如何設(shè)計(jì)低通濾波器和高通濾波器,將兩者相結(jié)合就可得到帶阻及帶通濾波器。
首先看如何將低通濾波器轉(zhuǎn)化成高通濾波器。最簡單的方法叫做頻譜翻轉(zhuǎn),即將阻帶轉(zhuǎn)換為通帶,將通帶轉(zhuǎn)換為阻帶。執(zhí)行頻譜翻轉(zhuǎn)的方法是翻轉(zhuǎn)每一個樣本,同時給中心樣本添加一個樣本。第二種轉(zhuǎn)換高通濾波器的方法為頻譜倒轉(zhuǎn),即鏡像頻譜響應(yīng),方法很簡單,就是倒轉(zhuǎn)每一個其它系數(shù)。
完成低通濾波器和高通濾波器的設(shè)計(jì)之后,就可通過組合便捷地生成帶通濾波器和帶阻濾波器。生成帶阻濾波器只需將高通濾波器和低通濾波器并行布置,然后將輸出加總。生成帶通濾波器則可通過將低通濾波器和高通濾波器串行布置來實(shí)現(xiàn)。
實(shí)際設(shè)計(jì)
上面的內(nèi)容現(xiàn)已詳細(xì)說明了窗式正弦濾波器的情況、視窗應(yīng)用的重要性以及如何生成不同拓?fù)涞臑V波器。不過在 FPGA 中實(shí)現(xiàn)濾波器之前,必須使用如 Octave、MATLAB® 或者 Excel等一種軟件工具生成一組濾波器系數(shù)。許多這些工具都可提供簡化的界面和選項(xiàng),幫助用戶以最少的工作量完成濾波器設(shè)計(jì),MATLAB 中的 FDA 工具就是最好的示例。
在為所需濾波器生成一組系數(shù)后,就可在 FPGA 中實(shí)現(xiàn)濾波器。無論決定采用的抽頭數(shù)量多寡,F(xiàn)IR 濾波器每一級的基本結(jié)構(gòu)是不變的,總是由乘法器、存儲以及加法器構(gòu)成。
現(xiàn)在在許多應(yīng)用中都可看到數(shù)字濾波器的身影,而 FPGA 則可為使用它們的系統(tǒng)設(shè)計(jì)人員帶來顯著優(yōu)勢。
大多數(shù)工程師青睞的、迄今為止最簡單的方法是使用賽靈思 COREGenerator™ 工具的 FIR Compiler,其可為定制和生成高級濾波器提供多種選項(xiàng)。用戶可將生成的系數(shù)以 COE 文件形式導(dǎo)入 FIR Complier。該文件內(nèi)含已經(jīng)為基數(shù)賦值的各種濾波器系數(shù)。
Radix=10;
Coefdata =
-0.013987944,
-0.01735736,
-0.005971498,
0.012068368,
0.02190073,
將這些系數(shù)加載后,F(xiàn)IR Compiler將顯示與所提供系數(shù)相對應(yīng)的該濾波器頻率響應(yīng),以及阻帶衰減與通帶紋波等基本性能特征。
在使用 FIR Compiler 工具完成濾波器定制后,只要用戶使用的是正確的仿真庫,CORE Generator 就可生成實(shí)現(xiàn)設(shè)計(jì)以及在實(shí)現(xiàn)之前的行為仿真過程中對其仿真所需的全部文件。
如果愿意,用戶還可以使用用戶自己生成的 HDL 實(shí)現(xiàn)該濾波器。這種方法一般只有在用戶最終實(shí)施目的是ASIC,只是將 FPGA 實(shí)施用作原型設(shè)計(jì)系統(tǒng)時使用。在這種情況下,第一步是量化濾波器系數(shù),以便使用浮點(diǎn)結(jié)果的固定數(shù)字表示。由于濾波器系數(shù)可以為正,也可以為負(fù),常見的做法是采用二的補(bǔ)碼格式表示這些系數(shù)。在完成系數(shù)的量化后,就可將其當(dāng)作常數(shù)用于HDL 設(shè)計(jì)中。
現(xiàn)在在許多應(yīng)用中都可看到數(shù)字濾波器的身影,而 FPGA 則可為需要使用它們的設(shè)計(jì)人員帶來顯著優(yōu)勢。使用基本數(shù)學(xué)工具,結(jié)合 FPGA 內(nèi)核生成工具或者直接使用 HDL,可便捷設(shè)計(jì)和實(shí)現(xiàn)窗式正弦濾波器。