利用FPGA設計IIR多相濾波器

2021-07-29 22:06:38 字數 1435 閱讀 2178

首先抱歉的是,最近一直在忙畢業和工作的事情,部落格一直沒有更新,所以就耽擱下來了,今天更新,新的一版的iir多想濾波器設計。

前一篇已經大概描述了利用iir濾波器的大概需求,這裡對本設計的重點進行描述,以便讓大家在設計的時候,盡量避免一些走入一些坑。

首先,說說為什麼要設計多相濾波器吧。對於一些設計來說,訊號的速率過高,比如有些訊號的取樣速率已經超過1ghz,需要進行實時處理,對於dsp和arm來說,這是mission impossible. 因為dsp和arm的實時處理速度還不能突破器件的理論極限。如果直接採用fpga進行處理,那仍然不能夠滿足要求。眾所周知,現在最好的fpga的工作始終也不超過1ghz。但是是不是就真的沒辦法處理了呢?當然是可以處理的,這就需要用到多相濾波器。

fir的多相濾波器主要是利用fir濾波器進行多項濾波器的設計,比較簡單,之需要將濾波器的抽頭係數進行分組,然後在不同的輸出相位把每個組進行不同的組合,即可得到相應的fir多相濾波器。這是fpga典型的利用面積換取資源的方式。如果你想把處理時鐘降低幾倍,這裡就要增加幾倍的硬體資源進行運算。(具體細節可以參考楊小牛的軟體無線電原理與應用)

但是採用fir濾波器本身就存在一些問題,而這主要的問題就是fir濾波器占用資源較多。本身採用乙個fir濾波器的話,完成乙個q值在20左右的濾波器設計,想要滿足通道和阻帶的要求,濾波器抽頭係數少則幾十階,多則幾百階。而fpga內部的乘法器資源是相當珍貴的。以常用的xc6slx100來說,dsp48的個數也不超過200個。所以大多數的設計都是不能夠滿足要求的。當然,這裡也不是說fir濾波器就一無是處了,最起碼它是線性相位的,可以滿足對並行資料的苛刻要求(線性相位)。

而在一般的設計場合,我們發現,利用iir濾波器進行誰家,就可以大大節省濾波器的乘法器消耗。所以我就在琢磨,如果利用iir濾波器進行多相濾波器設計,能不能夠成功呢?(答案是肯定的,因為我已經做出來了)但是iir濾波器在設計多相濾波器的時候,要注意它的一些苛刻要求。這裡首先給出對於乙個普通的iir濾波器的設計應該注意的問題。

fpga設計有個很大的特點,當你的程式執行在40m時鐘一下的時候,所有的乘法器資源都沒有問題,都可以在乙個時鐘就能夠輸出運算結果。但是當你需要乙個更高的時鐘使你的程式執行的更快的時候,麻煩就來了,這個時候乘法器不能夠在乙個時鐘輸出相應的運算結果,而iir濾波器存在乙個很大的問題,就死它有反饋,而這個反饋要求它必須在當前反饋計算結束以後,才能夠疊加,從而輸出濾波結果。這裡我們先看乙個典型的iir濾波器h(

z)=∑

n=1n

b(n)

z−n1

+∑m=

1ma(

m)z−

m 而其中墳墓中的係數a(m)就是相應的反饋支路。當乘法器不能夠在當前時鐘運算出輸入的資料和係數a(m)的乘法結果的時候,怎麼辦?那麼iir濾波器就要設計失敗了。這裡可以通過將濾波器進行延遲輸出,分子和分母都乘以分母的共軛,則可以將當前的反饋進行延時,讓iir濾波器可以工作在較高的時鐘下。

對於多相iir濾波器,則需要對該濾波器進行分解,示例如下

IIR數字濾波器設計

1 iir數字濾波器的差分方程和系統函式 iir數字濾波器是一類遞迴型的線性時不變因果系統,其差分方程可以寫為 y n i 0maix n i i 1nbiy n i y n i 0maix n i i 1nbiy n i 進行z變換,可得 y z i 0maiz ix z i 1nbiz iy z...

IIR和FIR濾波器設計低通濾波器

設原始訊號為 採用iir濾波器和fir濾波器設計低通濾波器,比較兩類濾波器的濾波結果。要求 採用matlab語言實現,並分析結果。首先對原始訊號進行頻譜分析,確定濾波器引數。通過分析加噪訊號的頻譜,雜訊訊號為 原始訊號為 iir濾波器設計 按照數字濾波器技術指標 通帶邊界頻率wp 通帶最大衰減 阻帶...

二階IIR濾波器結構與FPGA實現分析

iir濾波器係數都會經過量化,a1一般量化為2的整數次方 一般濾波器整體增益都會設定為1,舉例 輸入x 20位,增益gain量化為無符號數gain 18位,係數b1,b2,b3,a1,a2,a3量化18位,16位小數,表示範圍 2 輸出y 20位 section 1 x z gain 2 20,對輸...