基于FPGA的高效FIR濾波器設計與實現(xiàn)
摘要: 給出了一種基于FPGA的數(shù)字濾波器的設計方法。該方法先通過MATLAB設計出一個具有具體指標的FIR濾波器, 再對濾波器系數(shù)進行處理, 使之便于在FPGA中實現(xiàn), 然后采用基于分布式算法和CSD編碼的濾波器結構進行設計, 從而避免了乘法運算, 節(jié)約了硬件資源,其流水線的設計方式也提高了運行速度。Matlab和Modelsim仿真表明, 該設計功能正確, 能實現(xiàn)快速濾波。
本文引用地址:http://m.butianyuan.cn/article/191285.htm0 引言
數(shù)字濾波器在語音與圖像處理、模式識別、雷達信號處理、頻譜分析等應用中都具有重要作用。它能避免模擬濾波器所無法克服的溫漂和噪聲等問題, 同時比模擬濾波器精度高、穩(wěn)定性好、體積小、更加靈活, 因而得到廣泛應用。在聲波測井中, 通常需要對信號進行精確的濾波,并且對濾波器具有嚴格的實時性要求。本文利用輔助Matlab設計工具, 設計了一種基于FPGA且可滿足測井需求的高階快速數(shù)字濾波器。
1 線性相位FIR濾波器結構
數(shù)字濾波器的種類很多, 分類的方法也不盡相同。從數(shù)字濾波器的單位沖擊響應來看, 數(shù)字濾波器分為有限沖激響應數(shù)字濾波器(FIR) 和無限沖激響應數(shù)字濾波器(IIR)。相對于IIR濾波器,F(xiàn)IR濾波器可以進行準確的線性相位設計, 而且其結構具有穩(wěn)定的量化濾波器系數(shù)。針對于聲波測井處理具有線性相位要求的聲波信號, FIR濾波器是首選。
在時域中, FIR濾波器的輸入輸出過程是一個輸入信號與單位脈沖響應進行線性卷積的過程, 其差分方程表達式為:
其中, y (n) 為濾波輸出, x (n) 為采樣數(shù)據(jù), h (n) 為濾波器抽頭系數(shù)。其結構如圖1 (a)所示, 圖中, N-1階FIR濾波器要用N個系數(shù)描述, 通常, 需要N個乘法器和N-1個兩輸入加法器才能實現(xiàn)。不難發(fā)現(xiàn), 乘法器的系數(shù)正好是傳輸函數(shù)的系數(shù), 因此, 該結構且稱為直接型結構。
對于系數(shù)對稱的FIR線性相位濾波器, 可將式(1) 寫成如下形式:
系數(shù)對稱的改進型FIR濾波器的結構如圖1(b) 所示。該結構把系數(shù)對稱(相同或相反) 的抽頭合并之后再作乘法, 這樣可使乘法器數(shù)量降為原有的一半, 但也增加了額外的加法器。
圖1 FIR濾波器結構
2 設計方法與指標
FDATool是Matlab信號處理工具箱里專用的濾波器設計分析工具, 該工具的主要作用是按照設計指標提取濾波器系數(shù)。用FDATool設計數(shù)字濾波器的關鍵在于濾波器類型、窗函數(shù)、濾波器階數(shù)、截止頻率等參數(shù)的選擇。其中窗函數(shù)用于決定阻帶衰減和過渡帶帶寬, 常用的窗函數(shù)有矩形窗、漢寧窗、海明窗和布萊克曼窗。矩形窗和漢寧窗阻帶衰減較小, 而布萊克曼窗過渡帶較大, 相對來說, 海明窗更符合設計要求, 它的最小阻帶可以達到54.5dB, 歸一化過渡帶帶寬為3.11π/M (濾波器階數(shù)N=2M+1)。針對聲波測井信號, 設計時應進行表1所列的參數(shù)設置。
表1 濾波器參數(shù)選擇
圖2所示是該濾波器的幅頻和相頻響應曲線,該曲線在通帶內(nèi)保持線性相位, 阻帶衰減大于52dB, 過渡帶帶寬為1.65kHz。抽頭系數(shù)可以在工具箱中量化為定點整型數(shù)據(jù), 以便在FPGA實現(xiàn)階數(shù)為127的濾波器, 該濾波器一共有128個系數(shù)。對于階數(shù)較大的濾波器來說, 其量化對阻帶衰減和過渡帶的影響極小。
圖2 濾波器幅頻和相頻響應特性曲線
評論