《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 數(shù)字濾波器輸入輸出的設計與實現(xiàn)

數(shù)字濾波器輸入輸出的設計與實現(xiàn)

2013-07-19
關(guān)鍵詞: FPGA 數(shù)字濾波器
濾波器是任何信號處理系統(tǒng)的關(guān)鍵組成部分,,隨著現(xiàn)代應用的日趨復雜,,濾波器設計的復雜程度也日益提高,。采用 FPGA 設計和實現(xiàn)的高性能濾波器的能力是模擬方法所望塵莫及的,。另外,采用FPGA 設計的數(shù)字濾波器可以避免模擬設計中存在的某些問題,,特別是組件漂移和容差(在高可靠應用中,,由溫度過高,、老化和輻射問題造成)。這些模擬問題會顯著降低濾波器的性能,,特別是在通帶紋波等方面,。
當然, 數(shù)字模型也有自身的缺陷,。濾波器數(shù)學運算中的舍入可能會帶來問題,,因為舍入誤差會被累加,給性能造成不良影響,,比如增大濾波器的噪聲基底,。工程師可以采取多種方法最大程度地減輕這種影響,例如使用收斂舍入可以獲得比傳統(tǒng)舍入更好的性能,。最終,, 舍入誤差問題的嚴重性與模擬器件相比得到了顯著降低。
將 FPGA 作為濾波器構(gòu)建模塊的主要優(yōu)勢之一在于,,如果因為集成原因或者需求變動原因需要調(diào)整性能,,允許在設計過程的后期修改或者更新濾波器的參數(shù),且產(chǎn)生的影響很小,。
濾波器類型和拓撲結(jié)構(gòu)
大多數(shù)熟知數(shù)字信號處理的工程師都知道濾波器的主要類型有四種,。低通濾波器只允許頻率低于預設截止頻率的信號通過。高通濾波器與低通濾波器相反,,只允許頻率高于截止頻率的信號通過,。帶通濾波器只允許頻率在預設帶寬內(nèi)的信號通過,不允許其它頻率的信號通過,。帶阻濾波器與帶通濾波器相反,不允許頻率在預設帶寬內(nèi)的信號通過,,但允許其它頻率的信號通過,。
大多數(shù)數(shù)字濾波器都采用下列兩種方法之一來實現(xiàn): 有限脈沖響應(FIR) 和無限脈沖響應 (IIR)。首先我們深入探討如何設計和實現(xiàn) FIR 濾波器,。這種濾波器也常被稱為窗口 sinc濾波器,。
為什么我們首先以 FIR 濾波器為重點呢?兩種濾波器的最大區(qū)別在于有無反饋,。對未采用反饋的 FIR 濾波器,,在給定的輸入響應下,濾波器的輸出最終會穩(wěn)定為 0,。而對采用反饋的IIR 濾波器,,在相同的給定輸入下,輸出不會穩(wěn)定為 0,。
FIR 濾波器的設計由于未采用反饋,,故天生具有穩(wěn)定性,因為濾波器的所有極點都與原點重合。IIR 濾波器就沒有這么幸運,。由于在設計 IIR 濾波器的時候,,必須精心考慮其穩(wěn)定性,這樣窗口 sinc 濾波器對新接觸 DSP 技術(shù)的工程師來說,,更加易于理解和實現(xiàn),。
如果要求工程師繪制理想低通濾波器在頻域中的原理框圖,大多數(shù)工程師會畫出和圖 1 一樣的圖,。
圖 1 所示的頻率響應一般稱為“磚墻型”濾波器,。這是因為通帶和阻帶之間的過渡非常陡峭,要比現(xiàn)實中能夠?qū)崿F(xiàn)的陡峭很多,。這種頻率響應還具備其它“理想”特性,,例如沒有通帶波紋以及具有理想的阻帶衰減。
如果將該圖圍繞 0 Hz 進行對稱擴展,,同時擴展到 +/- FS Hz(FS 指采樣頻率),,然后對響應進行離散傅里葉逆變換 (IDFT),就可以得到該濾波器的脈沖響應,,如圖 2 所示,。
這就是圖 1 所示理想濾波器頻率響應的時域表示法,也稱為濾波器內(nèi)核,。FIR 或窗口 sinc 濾波器正是由這個響應而得名,,因為畫出 sinc 函數(shù)的曲線可以得到脈沖響應:

結(jié)合濾波器階躍響應, 頻率響應,、脈沖響應和階躍響應提供了有關(guān)濾波器性能的所有信息,,可用于判斷濾波器是否滿足設計要求。

頻率響應
頻率響應是工程師在考慮濾波器時所習慣關(guān)注的問題,。它代表著濾波器改變頻域信息的性能,。

通過頻率響應可以觀察到截止頻率、阻帶衰減和通帶波紋,。在該響應中還可以清晰地觀察到通帶和阻帶之間的滾降,,也稱為過渡帶。通帶中的波紋會給濾波信號造成影響,。阻帶衰減則表明濾波器輸出中存在多少不必要的頻率,。這對需要抑制特定頻率的應用意義重大,比如在通信系統(tǒng)中為頻分多路復用通道濾波,。

脈沖響應
從脈沖響應中可以抽象出濾波器的系數(shù),。但是,要實現(xiàn)濾波器的最佳性能,,標準的方法是采用窗函數(shù),。窗函數(shù)指給截斷的脈沖響應應用額外的數(shù)學函數(shù),,以求減輕截斷帶來的副作用。

在圖 2 中,,由于紋波的存在,,脈沖響應向外無限延伸,盡管紋波的振幅顯著降低,,但永遠不會降低至 0,。因此,必須圍繞位于中心的主瓣,,在兩側(cè)對稱地按 N+1 的系數(shù)截斷脈沖響應,,這里 N 是期望的濾波器長度(切記 N應為偶數(shù))。脈沖響應被突然截斷會給濾波器的頻域性能帶來不良影響,。如果對截斷的脈沖響應進行離散傅里葉變換 (DFT),,可以觀察到通帶和阻帶都有波紋出現(xiàn)以及滾降性能的下降。這就是為什么一般會采用窗函數(shù)來改善性能的原因,。

階躍響應
對脈沖響應進行積分所得的階躍響應體現(xiàn)著濾波器的時域性能以及濾波器自身如何影響該性能,。觀察階躍響應時應重點關(guān)注的三大參數(shù)分別是上升時間、過沖以及線性度,。

上升時間指從振幅級的 10% 上升到 90% 所需的樣本數(shù)量,,可顯示濾波器的速度。要在最終系統(tǒng)中具有實用性,,濾波器必須能夠區(qū)分輸入信號中的不同事件,,因此階躍響應必須短于信號中各事件之間的間隔。

過沖是指濾波器添加至其正在處理的信號時產(chǎn)生的失真,。降低階躍響應中的過沖有助于判斷信號的失真是來自系統(tǒng),,還是來自系統(tǒng)正在測量的信息。過沖不但可增大失真來源的不確定性,,降低最終系統(tǒng)性能,,而且還可導致系統(tǒng)無法滿足所需的性能要求。

如果信號的上半部分和下半部分是對稱的,,則濾波器的相位響應具有線性相位,,這是確保階躍響應的上升沿和下降沿相同的要件,。

優(yōu)化濾波器,,以在時域和頻域中同時實現(xiàn)良好的性能是非常困難的,在這一點上它也是毫無價值的,。因此,,必須明白需要處理的信息位于哪一個域中。對于 FIR 濾波器而言,,需要處理的信息位于頻域中,,因而頻率響應占主導地位,。

濾波器加窗
使用截斷脈沖響應不能提供最佳性能數(shù)字濾波器,因為它不能展示任何理想的特性,。因此設計人員可采用視窗函數(shù)來改善濾波器的通帶紋波,、滾降以及阻帶衰減性能。對于截斷正弦函數(shù),,有許多視窗函數(shù)可以使用,,如高斯、巴特利特,、海明,、布萊克曼以及凱塞等。不過最常用的兩種視窗函數(shù)是海明和布萊克曼,。下面將詳細介紹這兩種視窗,。

采用這兩種視窗不但可降低通帶紋波,而且還可提高濾波器的滾降和衰減性能,。圖 3 是采用布萊克曼和海明視窗后截斷正弦函數(shù)的脈沖響應和頻率響應情況,。如圖所示,兩種視窗均可顯著改善通帶紋波狀況,。

 

濾波器的滾降不僅由視窗決定,,而且還由濾波器的字長決定,即系數(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個點,。

要將這些視窗應用于截斷脈沖響應,,必須用視窗系數(shù)乘以截斷脈沖系數(shù),得出所需的濾波器系數(shù),。

雖然視窗類型決定了滾降頻率,,但經(jīng)驗法則告訴我們,對于所需的跳變帶寬,,需要的抽頭數(shù)量為:
N=4/BW

其中 BW 為跳變帶寬,。

實現(xiàn)不同的濾波器拓撲
無論最終得到的濾波器類型是什么(是帶通、帶阻還是高通),,所有這些都始于低通濾波器的初始設計,。如果知道如何設計低通濾波器和高通濾波器,將兩者相結(jié)合就可得到帶阻及帶通濾波器,。

 

首先看如何將低通濾波器轉(zhuǎn)化成高通濾波器,。最簡單的方法叫做頻譜翻轉(zhuǎn),即將阻帶轉(zhuǎn)換為通帶,,將通帶轉(zhuǎn)換為阻帶,。執(zhí)行頻譜翻轉(zhuǎn)的方法是翻轉(zhuǎn)每一個樣本,,同時給中心樣本添加一個樣本。第二種轉(zhuǎn)換高通濾波器的方法為頻譜倒轉(zhuǎn),,即鏡像頻譜響應,,方法很簡單,就是倒轉(zhuǎn)每一個其它系數(shù),。

完成低通濾波器和高通濾波器的設計之后,,就可通過組合便捷地生成帶通濾波器和帶阻濾波器。生成帶阻濾波器只需將高通濾波器和低通濾波器并行布置,,然后將輸出加總,。生成帶通濾波器則可通過將低通濾波器和高通濾波器串行布置來實現(xiàn)。

實際設計
上面的內(nèi)容現(xiàn)已詳細說明了窗式正弦濾波器的情況,、視窗應用的重要性以及如何生成不同拓撲的濾波器,。不過在 FPGA 中實現(xiàn)濾波器之前,必須使用如 Octave,、MATLAB® 或者 Excel等一種軟件工具生成一組濾波器系數(shù),。許多這些工具都可提供簡化的界面和選項,幫助用戶以最少的工作量完成濾波器設計,,MATLAB 中的 FDA 工具就是最好的示例,。

在為所需濾波器生成一組系數(shù)后,就可在 FPGA 中實現(xiàn)濾波器,。無論決定采用的抽頭數(shù)量多寡,,F(xiàn)IR 濾波器每一級的基本結(jié)構(gòu)是不變的,總是由乘法器,、存儲以及加法器構(gòu)成,。

現(xiàn)在在許多應用中都可看到數(shù)字濾波器的身影,而 FPGA 則可為使用它們的系統(tǒng)設計人員帶來顯著優(yōu)勢,。

大多數(shù)工程師青睞的,、迄今為止最簡單的方法是使用賽靈思 COREGenerator™ 工具的 FIR Compiler,其可為定制和生成高級濾波器提供多種選項,。用戶可將生成的系數(shù)以 COE 文件形式導入 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ù)相對應的該濾波器頻率響應,,以及阻帶衰減與通帶紋波等基本性能特征。

在使用 FIR Compiler 工具完成濾波器定制后,,只要用戶使用的是正確的仿真庫,,CORE Generator 就可生成實現(xiàn)設計以及在實現(xiàn)之前的行為仿真過程中對其仿真所需的全部文件,。

如果愿意,,用戶還可以使用用戶自己生成的 HDL 實現(xiàn)該濾波器,。這種方法一般只有在用戶最終實施目的是ASIC,只是將 FPGA 實施用作原型設計系統(tǒng)時使用,。在這種情況下,,第一步是量化濾波器系數(shù),以便使用浮點結(jié)果的固定數(shù)字表示,。由于濾波器系數(shù)可以為正,,也可以為負,常見的做法是采用二的補碼格式表示這些系數(shù),。在完成系數(shù)的量化后,,就可將其當作常數(shù)用于HDL 設計中。

現(xiàn)在在許多應用中都可看到數(shù)字濾波器的身影,,而 FPGA 則可為需要使用它們的設計人員帶來顯著優(yōu)勢,。使用基本數(shù)學工具,結(jié)合 FPGA 內(nèi)核生成工具或者直接使用 HDL,,可便捷設計和實現(xiàn)窗式正弦濾波器,。

 

 

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。