濾波器是任何信號(hào)處理系統(tǒng)的關(guān)鍵組成部分,隨著現(xiàn)代應(yīng)用的日趨復(fù)雜,濾波器設(shè)計(jì)的復(fù)雜程度也日益提高。采用 FPGA 設(shè)計(jì)和實(shí)現(xiàn)的高性能濾波器的能力是模擬方法所望塵莫及的。另外,采用FPGA 設(shè)計(jì)的數(shù)字濾波器可以避免模擬設(shè)計(jì)中存在的某些問(wèn)題,特別是組件漂移和容差(在高可靠應(yīng)用中,由溫度過(guò)高、老化和輻射問(wèn)題造成)。這些模擬問(wèn)題會(huì)顯著降低濾波器的性能,特別是在通帶紋波等方面。
當(dāng)然, 數(shù)字模型也有自身的缺陷。濾波器數(shù)學(xué)運(yùn)算中的舍入可能會(huì)帶來(lái)問(wèn)題,因?yàn)樯崛胝`差會(huì)被累加,給性能造成不良影響,比如增大濾波器的噪聲基底。工程師可以采取多種方法最大程度地減輕這種影響,例如使用收斂舍入可以獲得比傳統(tǒng)舍入更好的性能。最終, 舍入誤差問(wèn)題的嚴(yán)重性與模擬器件相比得到了顯著降低。
將 FPGA 作為濾波器構(gòu)建模塊的主要優(yōu)勢(shì)之一在于,如果因?yàn)榧稍蚧蛘咝枨笞儎?dòng)原因需要調(diào)整性能,允許在設(shè)計(jì)過(guò)程的后期修改或者更新濾波器的參數(shù),且產(chǎn)生的影響很小。
濾波器類型和拓?fù)浣Y(jié)構(gòu)
大多數(shù)熟知數(shù)字信號(hào)處理的工程師都知道濾波器的主要類型有四種。低通濾波器只允許頻率低于預(yù)設(shè)截止頻率的信號(hào)通過(guò)。高通濾波器與低通濾波器相反,只允許頻率高于截止頻率的信號(hào)通過(guò)。帶通濾波器只允許頻率在預(yù)設(shè)帶寬內(nèi)的信號(hào)通過(guò),不允許其它頻率的信號(hào)通過(guò)。帶阻濾波器與帶通濾波器相反,不允許頻率在預(yù)設(shè)帶寬內(nèi)的信號(hào)通過(guò),但允許其它頻率的信號(hào)通過(guò)。
大多數(shù)數(shù)字濾波器都采用下列兩種方法之一來(lái)實(shí)現(xiàn): 有限脈沖響應(yīng)(FIR) 和無(wú)限脈沖響應(yīng) (IIR)。首先我們深入探討如何設(shè)計(jì)和實(shí)現(xiàn) FIR 濾波器。這種濾波器也常被稱為窗口 sinc濾波器。
為什么我們首先以 FIR 濾波器為重點(diǎn)呢??jī)煞N濾波器的最大區(qū)別在于有無(wú)反饋。對(duì)未采用反饋的 FIR 濾波器,在給定的輸入響應(yīng)下,濾波器的輸出最終會(huì)穩(wěn)定為 0。而對(duì)采用反饋的IIR 濾波器,在相同的給定輸入下,輸出不會(huì)穩(wěn)定為 0。
FIR 濾波器的設(shè)計(jì)由于未采用反饋,故天生具有穩(wěn)定性,因?yàn)闉V波器的所有極點(diǎn)都與原點(diǎn)重合。IIR 濾波器就沒(méi)有這么幸運(yùn)。由于在設(shè)計(jì) IIR 濾波器的時(shí)候,必須精心考慮其穩(wěn)定性,這樣窗口 sinc 濾波器對(duì)新接觸 DSP 技術(shù)的工程師來(lái)說(shuō),更加易于理解和實(shí)現(xiàn)。
如果要求工程師繪制理想低通濾波器在頻域中的原理框圖,大多數(shù)工程師會(huì)畫出和圖 1 一樣的圖。
圖 1 所示的頻率響應(yīng)一般稱為“磚墻型”濾波器。這是因?yàn)橥◣Ш妥鑾еg的過(guò)渡非常陡峭,要比現(xiàn)實(shí)中能夠?qū)崿F(xiàn)的陡峭很多。這種頻率響應(yīng)還具備其它“理想”特性,例如沒(méi)有通帶波紋以及具有理想的阻帶衰減。
如果將該圖圍繞 0 Hz 進(jìn)行對(duì)稱擴(kuò)展,同時(shí)擴(kuò)展到 +/- FS Hz(FS 指采樣頻率),然后對(duì)響應(yīng)進(jìn)行離散傅里葉逆變換 (IDFT),就可以得到該濾波器的脈沖響應(yīng),如圖 2 所示。
這就是圖 1 所示理想濾波器頻率響應(yīng)的時(shí)域表示法,也稱為濾波器內(nèi)核。FIR 或窗口 sinc 濾波器正是由這個(gè)響應(yīng)而得名,因?yàn)楫嫵?sinc 函數(shù)的曲線可以得到脈沖響應(yīng):
結(jié)合濾波器階躍響應(yīng), 頻率響應(yīng)、脈沖響應(yīng)和階躍響應(yīng)提供了有關(guān)濾波器性能的所有信息,可用于判斷濾波器是否滿足設(shè)計(jì)要求。
頻率響應(yīng)
頻率響應(yīng)是工程師在考慮濾波器時(shí)所習(xí)慣關(guān)注的問(wèn)題。它代表著濾波器改變頻域信息的性能。
通過(guò)頻率響應(yīng)可以觀察到截止頻率、阻帶衰減和通帶波紋。在該響應(yīng)中還可以清晰地觀察到通帶和阻帶之間的滾降,也稱為過(guò)渡帶。通帶中的波紋會(huì)給濾波信號(hào)造成影響。阻帶衰減則表明濾波器輸出中存在多少不必要的頻率。這對(duì)需要抑制特定頻率的應(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)鄮?lái)的副作用。
在圖 2 中,由于紋波的存在,脈沖響應(yīng)向外無(wú)限延伸,盡管紋波的振幅顯著降低,但永遠(yuǎn)不會(huì)降低至 0。因此,必須圍繞位于中心的主瓣,在兩側(cè)對(duì)稱地按 N+1 的系數(shù)截?cái)嗝}沖響應(yīng),這里 N 是期望的濾波器長(zhǎng)度(切記 N應(yīng)為偶數(shù))。脈沖響應(yīng)被突然截?cái)鄷?huì)給濾波器的頻域性能帶來(lái)不良影響。如果對(duì)截?cái)嗟拿}沖響應(yīng)進(jìn)行離散傅里葉變換 (DFT),可以觀察到通帶和阻帶都有波紋出現(xiàn)以及滾降性能的下降。這就是為什么一般會(huì)采用窗函數(shù)來(lái)改善性能的原因。
階躍響應(yīng)
對(duì)脈沖響應(yīng)進(jìn)行積分所得的階躍響應(yīng)體現(xiàn)著濾波器的時(shí)域性能以及濾波器自身如何影響該性能。觀察階躍響應(yīng)時(shí)應(yīng)重點(diǎn)關(guān)注的三大參數(shù)分別是上升時(shí)間、過(guò)沖以及線性度。
上升時(shí)間指從振幅級(jí)的 10% 上升到 90% 所需的樣本數(shù)量,可顯示濾波器的速度。要在最終系統(tǒng)中具有實(shí)用性,濾波器必須能夠區(qū)分輸入信號(hào)中的不同事件,因此階躍響應(yīng)必須短于信號(hào)中各事件之間的間隔。
過(guò)沖是指濾波器添加至其正在處理的信號(hào)時(shí)產(chǎn)生的失真。降低階躍響應(yīng)中的過(guò)沖有助于判斷信號(hào)的失真是來(lái)自系統(tǒng),還是來(lái)自系統(tǒng)正在測(cè)量的信息。過(guò)沖不但可增大失真來(lái)源的不確定性,降低最終系統(tǒng)性能,而且還可導(dǎo)致系統(tǒng)無(wú)法滿足所需的性能要求。
如果信號(hào)的上半部分和下半部分是對(duì)稱的,則濾波器的相位響應(yīng)具有線性相位,這是確保階躍響應(yīng)的上升沿和下降沿相同的要件。
優(yōu)化濾波器,以在時(shí)域和頻域中同時(shí)實(shí)現(xiàn)良好的性能是非常困難的,在這一點(diǎn)上它也是毫無(wú)價(jià)值的。因此,必須明白需要處理的信息位于哪一個(gè)域中。對(duì)于 FIR 濾波器而言,需要處理的信息位于頻域中,因而頻率響應(yīng)占主導(dǎo)地位。
濾波器加窗
使用截?cái)嗝}沖響應(yīng)不能提供最佳性能數(shù)字濾波器,因?yàn)樗荒苷故救魏卫硐氲奶匦浴R虼嗽O(shè)計(jì)人員可采用視窗函數(shù)來(lái)改善濾波器的通帶紋波、滾降以及阻帶衰減性能。對(duì)于截?cái)嗾液瘮?shù),有許多視窗函數(shù)可以使用,如高斯、巴特利特、海明、布萊克曼以及凱塞等。不過(guò)最常用的兩種視窗函數(shù)是海明和布萊克曼。下面將詳細(xì)介紹這兩種視窗。
采用這兩種視窗不但可降低通帶紋波,而且還可提高濾波器的滾降和衰減性能。圖 3 是采用布萊克曼和海明視窗后截?cái)嗾液瘮?shù)的脈沖響應(yīng)和頻率響應(yīng)情況。如圖所示,兩種視窗均可顯著改善通帶紋波狀況。
濾波器的滾降不僅由視窗決定,而且還由濾波器的字長(zhǎng)決定,即系數(shù)的數(shù)量,也就是常說(shuō)的濾波器抽頭。
海明視窗:
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í),總數(shù)等于 N+1個(gè)點(diǎn)。
要將這些視窗應(yīng)用于截?cái)嗝}沖響應(yīng),必須用視窗系數(shù)乘以截?cái)嗝}沖系數(shù),得出所需的濾波器系數(shù)。
雖然視窗類型決定了滾降頻率,但經(jīng)驗(yàn)法則告訴我們,對(duì)于所需的跳變帶寬,需要的抽頭數(shù)量為:
N=4/BW
其中 BW 為跳變帶寬。
實(shí)現(xiàn)不同的濾波器拓?fù)?/h2>
無(wú)論最終得到的濾波器類型是什么(是帶通、帶阻還是高通),所有這些都始于低通濾波器的初始設(shè)計(jì)。如果知道如何設(shè)計(jì)低通濾波器和高通濾波器,將兩者相結(jié)合就可得到帶阻及帶通濾波器。
首先看如何將低通濾波器轉(zhuǎn)化成高通濾波器。最簡(jiǎn)單的方法叫做頻譜翻轉(zhuǎn),即將阻帶轉(zhuǎn)換為通帶,將通帶轉(zhuǎn)換為阻帶。執(zhí)行頻譜翻轉(zhuǎn)的方法是翻轉(zhuǎn)每一個(gè)樣本,同時(shí)給中心樣本添加一個(gè)樣本。第二種轉(zhuǎn)換高通濾波器的方法為頻譜倒轉(zhuǎn),即鏡像頻譜響應(yīng),方法很簡(jiǎn)單,就是倒轉(zhuǎn)每一個(gè)其它系數(shù)。
完成低通濾波器和高通濾波器的設(shè)計(jì)之后,就可通過(guò)組合便捷地生成帶通濾波器和帶阻濾波器。生成帶阻濾波器只需將高通濾波器和低通濾波器并行布置,然后將輸出加總。生成帶通濾波器則可通過(guò)將低通濾波器和高通濾波器串行布置來(lái)實(shí)現(xiàn)。
實(shí)際設(shè)計(jì)
上面的內(nèi)容現(xiàn)已詳細(xì)說(shuō)明了窗式正弦濾波器的情況、視窗應(yīng)用的重要性以及如何生成不同拓?fù)涞臑V波器。不過(guò)在 FPGA 中實(shí)現(xiàn)濾波器之前,必須使用如 Octave、MATLAB? 或者 Excel等一種軟件工具生成一組濾波器系數(shù)。許多這些工具都可提供簡(jiǎn)化的界面和選項(xiàng),幫助用戶以最少的工作量完成濾波器設(shè)計(jì),MATLAB 中的 FDA 工具就是最好的示例。
在為所需濾波器生成一組系數(shù)后,就可在 FPGA 中實(shí)現(xiàn)濾波器。無(wú)論決定采用的抽頭數(shù)量多寡,F(xiàn)IR 濾波器每一級(jí)的基本結(jié)構(gòu)是不變的,總是由乘法器、存儲(chǔ)以及加法器構(gòu)成。
現(xiàn)在在許多應(yīng)用中都可看到數(shù)字濾波器的身影,而 FPGA 則可為使用它們的系統(tǒng)設(shè)計(jì)人員帶來(lái)顯著優(yōu)勢(shì)。
大多數(shù)工程師青睞的、迄今為止最簡(jiǎn)單的方法是使用賽靈思 COREGenerator? 工具的 FIR Compiler,其可為定制和生成高級(jí)濾波器提供多種選項(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ù)相對(duì)應(yīng)的該濾波器頻率響應(yīng),以及阻帶衰減與通帶紋波等基本性能特征。
在使用 FIR Compiler 工具完成濾波器定制后,只要用戶使用的是正確的仿真庫(kù),CORE Generator 就可生成實(shí)現(xiàn)設(shè)計(jì)以及在實(shí)現(xiàn)之前的行為仿真過(guò)程中對(duì)其仿真所需的全部文件。
如果愿意,用戶還可以使用用戶自己生成的 HDL 實(shí)現(xiàn)該濾波器。這種方法一般只有在用戶最終實(shí)施目的是ASIC,只是將 FPGA 實(shí)施用作原型設(shè)計(jì)系統(tǒng)時(shí)使用。在這種情況下,第一步是量化濾波器系數(shù),以便使用浮點(diǎn)結(jié)果的固定數(shù)字表示。由于濾波器系數(shù)可以為正,也可以為負(fù),常見(jiàn)的做法是采用二的補(bǔ)碼格式表示這些系數(shù)。在完成系數(shù)的量化后,就可將其當(dāng)作常數(shù)用于HDL 設(shè)計(jì)中。
現(xiàn)在在許多應(yīng)用中都可看到數(shù)字濾波器的身影,而 FPGA 則可為需要使用它們的設(shè)計(jì)人員帶來(lái)顯著優(yōu)勢(shì)。使用基本數(shù)學(xué)工具,結(jié)合 FPGA 內(nèi)核生成工具或者直接使用 HDL,可便捷設(shè)計(jì)和實(shí)現(xiàn)窗式正弦濾波器。
評(píng)論
查看更多