亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IIR數(shù)字濾波器的FPGA實現(xiàn)

電子工程師 ? 來源:FPGA設(shè)計論壇 ? 作者:FPGA設(shè)計論壇 ? 2021-04-04 12:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、關(guān)于IIR數(shù)字濾波器

當(dāng)然關(guān)于IIR濾波器的知識,想必大家在教材上都已經(jīng)很熟了,這里我就簡單說一下自己的理解好了。

正如前面說的,IIR數(shù)字濾波器,即無限長單位脈沖響應(yīng)數(shù)字濾波器。所謂無限長單位脈沖響應(yīng),也就是說,對于一個系統(tǒng),我們給其輸其激勵,在輸出端得到的一串序列hn是無限長的,又因為我們討論的都是因果系統(tǒng),即只考慮n大于零的部分,所以,hn可以表示為0《= hn 《 無窮大。

前面還說了,IIR區(qū)別于FIR濾波器的還一個特點(diǎn)就是他的反饋結(jié)構(gòu),即IIR濾波器的輸出,不僅與輸入激勵有關(guān),還與當(dāng)前的輸出值也有關(guān),用差分方程來表示就是

60e11814-8f65-11eb-8b86-12bb97331649.jpg

根據(jù)這個差分方程可以看出:

1、跟FIR濾波器的差分方程進(jìn)行對比的話會發(fā)現(xiàn),IIR濾波器的差分方程等式右邊的前半部分跟FIR濾波器的差分方程類似,都是對輸入信號進(jìn)行的卷積運(yùn)算,只不過FIR濾波器是將輸入信號與系統(tǒng)的單位脈沖響應(yīng)進(jìn)行卷積,而這里是輸入信號跟IIR濾波器的零點(diǎn)系數(shù)進(jìn)行卷積

2、后半部分是IIR濾波器的極點(diǎn)部分,也可以看做是一個N階的FIR濾波器,運(yùn)算對象是系統(tǒng)的輸出信號的一部分與極點(diǎn)系數(shù)的一部分。

3、因此,IIR濾波器的輸出就可以看成是 兩個FIR濾波器的運(yùn)算,即

61659aee-8f65-11eb-8b86-12bb97331649.jpg

ao即Y(n)的系數(shù)

然而IIR濾波器的表示形式還有一種方式,就是我們常說的系統(tǒng)函數(shù),即對差分方程中的輸入輸出進(jìn)行Z變換,并通過移位運(yùn)算得到H(z),而它也就是系統(tǒng)單位脈沖響應(yīng)的Z變換

61c89932-8f65-11eb-8b86-12bb97331649.jpg

二、關(guān)于零極圖

我們知道,系統(tǒng)函數(shù)的分子分母都是一個乘加多項式,既然這樣,分子分母就可以進(jìn)行因式分解,也就是我們書本上的系統(tǒng)的零極點(diǎn)表達(dá)式

零極圖的作用可不小,既然我們?yōu)V波器的系統(tǒng)函數(shù)完全可以用零極點(diǎn)來表示,也就是說,我們?yōu)V波器的性質(zhì),也可以通過零極圖來分析,比如可以通過零極圖來看系統(tǒng)的單位脈沖響應(yīng)的形狀,系統(tǒng)的因果性與穩(wěn)定性之類的

1、零極圖與單位脈沖響應(yīng)

629df67c-8f65-11eb-8b86-12bb97331649.jpg

看上面這張圖,現(xiàn)在假如有個IIR數(shù)字濾波器,假設(shè)只有一個極點(diǎn),極點(diǎn)位置的不同會導(dǎo)致濾波器單位脈沖響應(yīng)形狀的不同,總結(jié)如下:

1、極點(diǎn)在單位圓內(nèi)時,單位脈沖響應(yīng)的形狀呈下降收斂狀,極點(diǎn)在單位圓上時,單位脈沖響應(yīng)的形狀呈直線狀,極點(diǎn)在單位圓外時,單位脈沖響應(yīng)的形狀呈上升發(fā)散狀,且離單位圓越遠(yuǎn),放大倍數(shù)越大

2、單位脈沖響應(yīng)的形狀主要是由濾波器的極點(diǎn)位置決定,零點(diǎn)位置主要是影響單位脈沖響應(yīng)的幅度特性和相位特性(上圖中雖然沒有畫出零點(diǎn),大家可以通過matlab仿真總結(jié)出這條結(jié)論)

2、零極圖與濾波器的因果性,穩(wěn)定性

通過教材我們已經(jīng)知道了,我們所研究的都是因果系統(tǒng),而因果系統(tǒng)的收斂域不包括任何一個極點(diǎn)。為什么呢?因為極點(diǎn)是導(dǎo)致系統(tǒng)函數(shù)趨于無窮大的點(diǎn),一旦收斂域包含了極點(diǎn),那就會導(dǎo)致系統(tǒng)函數(shù)不收斂,因此,因果系統(tǒng)的收斂域必須大于離單位圓原點(diǎn)最遠(yuǎn)的那個極點(diǎn),也就是說,只要知道了一個因果系統(tǒng)的極點(diǎn)分布,那么他的收斂域也就已經(jīng)確定了。假如定義一個系統(tǒng)的極點(diǎn)分別為 : 1 ,-2,0.5,-3,那么這個系統(tǒng)的收斂域就是 z 》 3.

關(guān)于穩(wěn)定性問題,我們知道,只有當(dāng)系統(tǒng)函數(shù)的收斂域包含單位圓的時候,單位脈沖響應(yīng)絕對可和,這時候系統(tǒng)才是穩(wěn)定的,又由于之前說的因果性, 系統(tǒng)函數(shù)的收斂域不能包含任何一個極點(diǎn),因此我們知道,只有當(dāng)極點(diǎn)在單位圓內(nèi)的時候才符合要求,因此,極點(diǎn)在單位圓內(nèi)成了系統(tǒng)穩(wěn)定的必要條件。

三、關(guān)于IIR濾波器的設(shè)計方法

其實,我們書本上介紹的什么脈沖響應(yīng)不變法,雙線性變換法之類的設(shè)計方法,設(shè)計過程都太過于繁瑣,想必大家都深有體會,可能原理不是很難理解,但是真正讓我們?nèi)ナ謩尤ニ阋粋€題,還不知道要算到什么時候。但是matlab為我們提供好了設(shè)計函數(shù),我們甚至不需要知道那些變換方法,也可以設(shè)計出符合要求的濾波器。但是,書本上既然寫了,總有他寫這些東西的目的,可能我們實在不好理解他的運(yùn)算過程,但是也要大體上知道這回事,畢竟人家是當(dāng)時的科學(xué)巨匠的畢生心血,哪有那么好懂~是吧,我們只要是會用就不錯了,下面就簡單總結(jié)一下這幾種方法:

IIR數(shù)字濾波器都是經(jīng)過低通模擬濾波器變換而來的,因為模擬濾波器的理論已經(jīng)很成熟了,而且有大量的數(shù)據(jù)供我們直接使用,比如巴特沃斯濾波器的設(shè)計過程,已經(jīng)給我提供好了求最小濾波器階數(shù)和零極點(diǎn)的公式,只要我們將濾波器指標(biāo)帶進(jìn)去計算就好了。

至于這些公式怎么來的,說實話我也看不懂,只知道是一大片數(shù)學(xué)公式推導(dǎo)而來,很多朋友一看到這群數(shù)學(xué)公式肯定就迷糊了,甚至是失去了學(xué)習(xí)的興趣了,太過繁瑣的數(shù)學(xué)公式的推導(dǎo),使得我們的教材變得枯燥無味,我是過來人我深有體會,雖然這樣的教材很嚴(yán)謹(jǐn),但是卻抹殺了學(xué)生的積極性,并沒有取得好的教學(xué)目的,其實還是感覺那句老話說的對“高手在民間啊”,很多一些不出名的關(guān)于信號處理的書,卻硬是把信號處理這門課寫的生動有趣,讓人一讀便懂,甚至有種豁然開朗的感覺。再反觀我們使用的教材,雖然獲得了什么什么教學(xué)獎,然而感覺并沒有真正站在學(xué)生的角度在寫這本書,學(xué)生看到只是大片的數(shù)學(xué)公式,也就喪失了信心了。

常用的模擬濾波器設(shè)計模型大概有這幾種,巴特沃斯濾波器,切比雪夫濾波器、和橢圓濾波器,這幾個濾波器都模擬低通濾波器,要想得到其他類型的濾波器,需要經(jīng)過變換,然而這幾種提供了詳細(xì)的設(shè)計資料,有了這些資料,我們就能通過變換將其變換為我們需要的其他類型的數(shù)字濾波器。

例如,我想設(shè)計一個IIR帶通濾波器,根據(jù)需要

1、 我需要先確定濾波器指標(biāo),主要包括通帶最大衰減,阻帶最小衰減,通帶截止頻率,阻帶截止頻率

2、有了這4個模擬帶通濾波器的指標(biāo),我們可以用頻率變換公式將這4個指標(biāo)轉(zhuǎn)換為相應(yīng)模擬低通濾波器的指標(biāo)。

3、有了低通濾波器的指標(biāo),就可以根據(jù)經(jīng)典濾波器的資料,設(shè)計成相應(yīng)的模擬低通濾波器。

4、 對模擬低通濾波器進(jìn)行頻率變換,得到我們想要的模擬帶通濾波器

5、最后可以通過脈沖響應(yīng)不變法或者雙線性變換法,得到我們需要的數(shù)字帶通濾波器

下面就總結(jié)一下這兩種變換方法

脈沖響應(yīng)不變法

上面說了,需要通過脈沖響應(yīng)不變法或者雙線性變換法將模擬帶通濾波器轉(zhuǎn)換為我們需要的數(shù)字帶通濾波器。既然是模擬濾波器,也就是說,是單位脈沖響應(yīng)ht的拉普拉斯變換,如果對模擬濾波器的系統(tǒng)函數(shù)進(jìn)行逆拉普拉斯變換就可以得到ht,有了ht,再通過抽樣不就可以轉(zhuǎn)化為hn了嘛,所以,脈沖響應(yīng)不變法可以總結(jié)如下:

1、對模擬濾波器的系統(tǒng)函數(shù)進(jìn)行逆拉普拉斯變換得到時域上連續(xù)的系統(tǒng)的單位沖激響應(yīng)ht

2、對ht進(jìn)行n點(diǎn)等間隔抽樣,得到時域上離散的系統(tǒng)的單位脈沖響應(yīng)hn

3、對hn進(jìn)行Z變換,得到數(shù)字濾波器的系統(tǒng)函數(shù)H(Z)

需要注意的是,在對時域上連續(xù)信號進(jìn)行等間隔抽樣的時候,我們知道,時域抽樣等同于頻域的周期延拓,如果不滿足一定的條件,就會導(dǎo)致信號的頻域混疊 ,而這個條件,就是我們采樣定理所給出的,即必須得保證模擬濾波器的帶寬是有限帶寬,并且采樣頻率fs 》 2fmax.

看下面這張圖我來解釋一下

63409d28-8f65-11eb-8b86-12bb97331649.jpg

這里我來解釋一下采樣定理,假如有一個帶限模擬信號,他的時域和頻域波形如圖第一排所示,可以看到在頻域,他的帶寬為2Ωmax,即最大角頻率為Ωmax

而Ωmax= 2πfmax,這里的fmax是模擬頻率,單位是hz,跟角頻率不同

現(xiàn)在用一個頻率為fs的信號對原模擬信號在時域進(jìn)行等間隔抽樣,采樣信號在頻域的波形如圖第二排所示,角頻率Ωs = 2πfs,是一個周期為Ωs的周期信號

圖上第三排是模擬信號經(jīng)采樣后的時域波形與頻域波形,時域波形很直觀,就是由連續(xù)信號變?yōu)榱穗x散信號,頻域波形變成了原模擬信號波形的周期延拓,周期為2π

大家知道,在數(shù)字頻域,角頻率w = Ω / fs ,所以我們看到在Ωs的正下方對應(yīng)的是2π,數(shù)字頻域0到2π之間對應(yīng)的當(dāng)然就是π,而這里的π對應(yīng)的模擬頻率,當(dāng)然就是fs/2,而數(shù)字頻域的wmax 則對應(yīng) Ωmax / fs ,即 wmax = 2πfmax / fs

所以,要想保證經(jīng)采樣后的信號的頻譜不發(fā)生頻率混疊,就必須要保證wmax 《 π

因此推得 fs 》 2fmax

正是因為如此,脈沖響應(yīng)不變法只能用來設(shè)計低通和帶通濾波器,不能設(shè)計高通和帶阻濾波器,因為后兩者在數(shù)字頻域π處均存在頻譜分量

63680f2a-8f65-11eb-8b86-12bb97331649.jpg

雙線性變換法

雙線性變化法相對于脈沖響應(yīng)不變法適應(yīng)性更強(qiáng),不存在混疊失真的情況,但是計算過程也是相當(dāng)?shù)膹?fù)雜,具體過程其實書上都有寫,只不過就是太過繁瑣,讓人看得不爽。好在matlab為我們提供了設(shè)計好的函數(shù),matlab工具箱里的函數(shù) butter ellip cheby1 cheby2 等函數(shù)都是基于雙線性變換法來設(shè)計的函數(shù),可以直接將跳過復(fù)雜的設(shè)計過程,由我們制定的濾波器指標(biāo)直接生成數(shù)字濾波器的零極點(diǎn)系數(shù)。

既然這樣,我們之前還那么多廢話干什么?直接講matlab設(shè)計不就好了?其實并不是這樣,知識是一個體系,只有有了前面的知識做鋪墊,才能為以后的設(shè)計打下基礎(chǔ),要不然只會調(diào)用matlab函數(shù),不懂為什么這樣的,到后面就遇到瓶頸了。

好了,在了解這些理論知識之后我們就可以來設(shè)計我們的濾波器,其實當(dāng)這些東西都掌握的差不多的時候,你會發(fā)現(xiàn)設(shè)計濾波器并不是很難

和FIR濾波器一樣,我先把濾波器要求說明一下,然后再按照設(shè)計要求進(jìn)行設(shè)計

四、IIR濾波器的matlab設(shè)計與FPGA實現(xiàn)

要求設(shè)計一個IIR低通數(shù)字濾波器,要求::

1、 設(shè)計成切比雪夫II型濾波器

2、截止頻率為500hz,阻帶最小衰減為60db,采樣頻率為2000hz,,濾波器階數(shù)為7

3、合成信號為100,500,800hz的正弦信號的疊加

4、要求分別采用直接II型結(jié)構(gòu)和級聯(lián)型結(jié)構(gòu)分別在FPGA上實現(xiàn),并通過modelsim仿真出濾波后的100HZ正弦波

5、級聯(lián)結(jié)構(gòu)為了提高運(yùn)行速度采用流水線結(jié)構(gòu)設(shè)計

6、通過matlab對modelsim輸出的數(shù)據(jù)進(jìn)行仿真,看是否符合要求

前面說過了,matlab為我們提供了IIR濾波器設(shè)計的工具箱,我們可以直接調(diào)用函數(shù),就可以直接由濾波器指標(biāo)設(shè)計成數(shù)字濾波器

645a84f8-8f65-11eb-8b86-12bb97331649.jpg

如上圖所示,我們直接調(diào)用cheby2型函數(shù),送人濾波器設(shè)計指標(biāo),直接就可以設(shè)計出符合要求的濾波器,可以說,就這么幾行代碼,一個濾波器就設(shè)計完成了。但是,我們不僅要設(shè)計出濾波器,還要實現(xiàn)它,并且是FPGA硬件實現(xiàn),光有這些數(shù)據(jù)是不行的,上面設(shè)計的濾波器輸出如下

64fbc25a-8f65-11eb-8b86-12bb97331649.jpg

可以看到,這些數(shù)據(jù)是無法在FPGA上實現(xiàn)的,我們需要將他們量化,具體進(jìn)行多少bit的量化才可以設(shè)計出符合要求的濾波器,需要通過matlab仿真才知道。當(dāng)然,由上面的系數(shù)構(gòu)成的濾波器是理想濾波器,當(dāng)然他們的位數(shù)不僅僅是這幾位,是因為matlab顯示的原因,后面還有很多位數(shù)沒有顯示出來,要知道,我們是要將這些數(shù)據(jù)送到FPGA內(nèi)部的寄存器中進(jìn)行運(yùn)算的,不可能將所有位數(shù)都表示完整,只能表示個近似值,這就導(dǎo)致了有限字長效應(yīng),使得實際濾波器與理想濾波器還是有些差別的,因此,我們需要將這些系數(shù)進(jìn)行量化,將量化后的濾波器系數(shù)求出幅頻響應(yīng),與理想濾波器的幅頻響應(yīng)進(jìn)行對比,來確定量化位數(shù)

65506c1a-8f65-11eb-8b86-12bb97331649.jpg

上圖就是通過仿真來確定濾波器的量化位數(shù),函數(shù)QuantIIRDirectArith是用來計算實際情況下濾波器的單位脈沖響應(yīng)的,是人為編寫的函數(shù),其中的算法我們可以不去深究,只知道輸入量化后的濾波器系數(shù)和需要濾波器輸出的位數(shù),就可以計算出實際濾波器的輸出情況,與理想濾波器進(jìn)行對比,從而確定量化位數(shù),這里仿真出來,當(dāng)量化位數(shù)為16的時候,波形就幾乎與理想情況吻合

65c98af0-8f65-11eb-8b86-12bb97331649.jpg

對于系數(shù)的量化問題,這里也不能像FIR濾波器一樣直接進(jìn)行量化了,因為IIR濾波器不僅存在乘加運(yùn)算,還存在除法運(yùn)算。前面說了,IIR濾波器的輸出,可以看做是兩個FIR濾波器相減之后再除以系數(shù)a(0),這里的系數(shù)a(0) 就是極點(diǎn)系數(shù)的第一項,既然要除以這個系數(shù),只要保證這個系數(shù)是2的整數(shù)次冪,就可以通過向右移位的方式來進(jìn)行相除。例如,經(jīng)過處理和量化之后,極點(diǎn)系數(shù)的第一項為1024,那么就相當(dāng)于把兩個FIR濾波器的運(yùn)算結(jié)果右移10位就好了

661dad92-8f65-11eb-8b86-12bb97331649.jpg

這也可以算是一種算法了,大家可以帶一個數(shù)進(jìn)去試試,就知道這種算法的原理了,經(jīng)過這種方式的量化后,我們得到的濾波器系數(shù)就變?yōu)?/p>

6677cd04-8f65-11eb-8b86-12bb97331649.jpg

從這量化后的系數(shù)我們可以看出,零點(diǎn)部分完全就是一個FIR濾波器,極點(diǎn)部分還不太像,因為系數(shù)不對稱,這樣的話,我們有了濾波器的零極點(diǎn)系數(shù),剩下的就是FPGA實現(xiàn)了。

對于FPGA的實現(xiàn)過程,零點(diǎn)部分完全和FIR濾波器的運(yùn)算過程相同,就是將輸入信號存入寄存器之后,對輸入信號進(jìn)行對稱系數(shù)累加,再分別與濾波器的零點(diǎn)系數(shù)進(jìn)行相乘,最后將結(jié)果相加輸出濾波器極點(diǎn)部分zero(n)

極點(diǎn)部分跟零點(diǎn)部分類似,只有一點(diǎn)稍微需要注意,由于IIR濾波器存在反饋結(jié)構(gòu),濾波器的輸出也是極點(diǎn)部分的輸入。極點(diǎn)部分的累加相乘跟零點(diǎn)部分稍有不同,首先,極點(diǎn)部分不存在對稱結(jié)構(gòu),因此不需要將輸入信號進(jìn)行對稱相加,只需要直接與極點(diǎn)系數(shù)相乘。還有就是,極點(diǎn)系數(shù)的第一項不參與相乘,因為他是輸出Y(n) 的系數(shù),從第二項開始才進(jìn)行乘加運(yùn)算,例如pole_coe(1)*y(n-1) , pole_coe(2)*y(n-2)。..。..。.

前面說過,零點(diǎn)部分與極點(diǎn)部分進(jìn)行減法運(yùn)算,結(jié)果再除以Y(n)的系數(shù)之后,就是IIR濾波器的輸出

66c14ff6-8f65-11eb-8b86-12bb97331649.jpg

在用FPGA實現(xiàn)IIR濾波器的時候要注意這幾點(diǎn),我總結(jié)如下

1 、 首先要注意,不管是存儲數(shù)據(jù)的寄存器型變量還是線型變量都不要忘記定義成有符號型數(shù)據(jù)

2、 要注意字長問題,兩個N位數(shù)據(jù)相加,至少需要N+1位寄存器存儲結(jié)果才能保證結(jié)果不溢出,兩個N位數(shù)據(jù)相乘,至少需要2N位寄存去存儲,大部分情況下,2N-1位就可以了

3、最后的截尾處理,如果不能夠保證截取的位數(shù)能夠?qū)⑤敵龅臄?shù)據(jù)完整表示,可以考慮放棄精度,舍棄低位取高位。例如上面,假如我截取sum_div的0到15位不能夠表示IIR濾波器的輸出,也就是說有些IIR濾波器輸出的數(shù)據(jù)要大于2^15,因此,截尾的時候可以考慮截取1到16位作為結(jié)果,這樣做話相當(dāng)于降低了量化位數(shù),精度降低了,但可以保證輸出正確幅度的波形

下面是將疊加信號進(jìn)行濾波后的輸出情況

6734e880-8f65-11eb-8b86-12bb97331649.jpg

五、級聯(lián)結(jié)構(gòu)的IIR濾波器的FPGA實現(xiàn)

其實在實際應(yīng)用中,應(yīng)用最廣泛的還是級聯(lián)型結(jié)構(gòu),因為這種結(jié)構(gòu)的系統(tǒng)函數(shù)除了一個系數(shù)之外完全是由零極點(diǎn)構(gòu)成,而且占用資源少,速度快。

級聯(lián)結(jié)構(gòu)說白了就是幾個直接型結(jié)構(gòu)的IIR濾波器相乘罷了,有了直接型結(jié)構(gòu)的基礎(chǔ),再來設(shè)計級聯(lián)結(jié)構(gòu)就很簡單了。

設(shè)計級聯(lián)結(jié)構(gòu)的關(guān)鍵一步就是如何將直接結(jié)構(gòu)的濾波器系數(shù)轉(zhuǎn)換為級聯(lián)結(jié)構(gòu)的系數(shù),其實這也是一個算法問題,說實話這個算法我也沒看明白,就是通過一系列的數(shù)學(xué)運(yùn)算,將直接型結(jié)構(gòu)轉(zhuǎn)化為了級聯(lián)結(jié)構(gòu)的系數(shù)

6804c000-8f65-11eb-8b86-12bb97331649.jpg

可以看到,我們設(shè)計好直接型結(jié)構(gòu)濾波器之后,直接調(diào)用轉(zhuǎn)換函數(shù),就可以得到級聯(lián)結(jié)構(gòu)的濾波器系數(shù),其中b0為增益系數(shù),就是放在零點(diǎn)部分外面的那個系數(shù)。轉(zhuǎn)換函數(shù)是人為寫的,我也不太懂為什么是這樣轉(zhuǎn)換的,既然別人已經(jīng)做好了這種算法,我們實在看不懂的話就直接拿來用好了

函數(shù)Qcoe是量化函數(shù),就是前面講過的,要將極點(diǎn)系數(shù)量化為2的整數(shù)次冪的量化函數(shù)。

經(jīng)過這樣的處理之后,就會得到了四個直接型結(jié)構(gòu)的IIR濾波器,每階IIR濾波器的計算方法都跟前面直接型濾波器的計算方法相同,這里不做解釋。

級聯(lián)型結(jié)構(gòu)在進(jìn)行FPGA實現(xiàn)的時候要注意每一階濾波器的輸出數(shù)據(jù)的位寬,即通過matlab仿真出每級濾波器輸出數(shù)據(jù)的最大值,算一下用多少位的寄存器才能表示這個數(shù)值,下面是合成信號依次通過各級濾波器,并計算每通過一級濾波器后的輸出位寬

6880c830-8f65-11eb-8b86-12bb97331649.jpg

合成信號每通過一級濾波器,就相當(dāng)于對信號進(jìn)行了一次濾波,通過仿真可以看到,每通過一級濾波器,輸出的信號更加趨于圓滑

68eadb80-8f65-11eb-8b86-12bb97331649.jpg

級聯(lián)結(jié)構(gòu)的FPGA實現(xiàn)過程是比較費(fèi)勁的,因為要設(shè)計多級濾波器,雖熱每級濾波器的代碼都是直接型濾波器,但其中的零極點(diǎn)系數(shù)的運(yùn)算還是需要我們自己修改,而且還有仿真好每級濾波器的輸出是否正常。但是沒辦法,因為IIR濾波器幾乎沒有IP核可以調(diào)用,我們也只能手寫了

在進(jìn)行零極點(diǎn)系數(shù)乘積運(yùn)算的過程中,我們一方面可以調(diào)用乘法器來進(jìn)行運(yùn)算,另一方面可以利用移位的方式進(jìn)行乘法運(yùn)算

69592c84-8f65-11eb-8b86-12bb97331649.jpg

例如上圖,474可以分解成幾個2的整數(shù)次冪的形式的累加形式,因此,可以通過移位的方式實現(xiàn)乘法運(yùn)算

采用級聯(lián)方式實現(xiàn)FPGA的過程要注意的是每級濾波器的輸出位數(shù),保證每級濾波器的輸出數(shù)據(jù)沒有溢出,其他地方都跟直接型類似

至于采用流水線結(jié)構(gòu)實現(xiàn)級聯(lián)結(jié)構(gòu),就是在每級濾波器的輸出部分加一個寄存器,每來一個時鐘將數(shù)據(jù)輸出,這一點(diǎn)很簡單了,想必能看到這里的朋友對FPGA這點(diǎn)技巧還是很了解的。

下面是modelsim仿真輸出的各級濾波器的波形,與matlab仿真結(jié)果相比幾乎相同,證明我們的結(jié)果是正確的

69c28008-8f65-11eb-8b86-12bb97331649.jpg

原文標(biāo)題:零基礎(chǔ)學(xué)FPGA(三十) IIR數(shù)字濾波器的FPGA實現(xiàn)筆記

文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22049

    瀏覽量

    618333
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8137

    瀏覽量

    182036

原文標(biāo)題:零基礎(chǔ)學(xué)FPGA(三十) IIR數(shù)字濾波器的FPGA實現(xiàn)筆記

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32單片機(jī)片上數(shù)字濾波器操作文檔 快速入門數(shù)字濾波器在單片機(jī)上的實現(xiàn)

    這個文檔,是為了幫助大家快速入門數(shù)字濾波器在單片機(jī)上的實現(xiàn)。
    的頭像 發(fā)表于 06-23 16:53 ?579次閱讀
    STM32單片機(jī)片上<b class='flag-5'>數(shù)字濾波器</b>操作文檔 快速入門<b class='flag-5'>數(shù)字濾波器</b>在單片機(jī)上的<b class='flag-5'>實現(xiàn)</b>

    基于FPGA的FIR數(shù)字濾波器設(shè)計

    在現(xiàn)代通信信號處理領(lǐng)域中,隨著各種精密計算和快速計算的發(fā)展對信號處理的實時性、快速性的要求越來越高。以往的模擬濾波器無法克服電壓漂移、溫度漂移和噪聲等問題,從而帶來了許多誤差和不穩(wěn)定因素。而數(shù)字濾波器具有穩(wěn)定性高、精度高、設(shè)計靈活、實現(xiàn)
    的頭像 發(fā)表于 03-06 12:31 ?1272次閱讀
    基于<b class='flag-5'>FPGA</b>的FIR<b class='flag-5'>數(shù)字濾波器</b>設(shè)計

    模擬電路在數(shù)字濾波器中的作用是什么?

    模擬電路在數(shù)字濾波器之前
    發(fā)表于 02-12 08:32

    ADS1293內(nèi)部的數(shù)字濾波器是怎么樣的作用?

    請問ADS1293內(nèi)部的數(shù)字濾波器是怎么樣的作用? 從DS中我看到該AFE有數(shù)字濾波器,請問它是心電算法中常見的低通濾波器嗎?效果如何?可以配置嗎
    發(fā)表于 01-20 07:37

    模擬濾波器數(shù)字濾波器的轉(zhuǎn)換步驟

    將模擬濾波器轉(zhuǎn)換為數(shù)字濾波器是一個涉及多個步驟的過程,旨在保持濾波器性能的同時,適應(yīng)數(shù)字信號處理的需求。以下是將模擬濾波器轉(zhuǎn)換為
    的頭像 發(fā)表于 11-26 10:03 ?1909次閱讀

    ADS1256的數(shù)字濾波器時可以自己設(shè)置嗎?

    想問下TI,ADS1256的數(shù)字濾波器時可以自己設(shè)置嗎,還是通過ADC的DATA RATE的設(shè)置,默認(rèn)是設(shè)置到相對于的數(shù)字濾波
    發(fā)表于 11-26 07:13

    數(shù)模轉(zhuǎn)換數(shù)字濾波器的結(jié)合應(yīng)用

    數(shù)模轉(zhuǎn)換(DAC)與數(shù)字濾波器的結(jié)合應(yīng)用在現(xiàn)代電子系統(tǒng)中非常普遍,這種結(jié)合能夠顯著提高系統(tǒng)的性能、精度和可靠性。以下是對數(shù)模轉(zhuǎn)換數(shù)字濾波器結(jié)合應(yīng)用的介紹: 一、數(shù)模轉(zhuǎn)換
    的頭像 發(fā)表于 11-25 16:20 ?992次閱讀

    ADC3663數(shù)字濾波器如何使用呢?

    板上用到了ADC3663,看數(shù)據(jù)手冊上,它可以有數(shù)字濾波功能,甚至不需要前級的抗混疊濾波器(這么理解對嗎)。 我想問下,這個數(shù)字濾波器如何使用呢?咱們是否有推薦的資料,如源碼等。 因為看了手冊也不知道從何處著手呢
    發(fā)表于 11-18 07:12

    基于FPGA實現(xiàn)FIR數(shù)字濾波器

    數(shù)字信號處理系統(tǒng)中,有限脈沖響應(yīng)(finite impulse response,F(xiàn)IR)數(shù)字濾波器是一個非常重要的基本單元。近年來,由于FPGA具有高速度、高集成度和高可靠性的特點(diǎn)而得到快速發(fā)展
    的頭像 發(fā)表于 11-05 16:26 ?1787次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>FIR<b class='flag-5'>數(shù)字濾波器</b>

    Δ-Σ ADC中的數(shù)字濾波器類型

    電子發(fā)燒友網(wǎng)站提供《Δ-Σ ADC中的數(shù)字濾波器類型.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 09:50 ?4次下載
    Δ-Σ ADC中的<b class='flag-5'>數(shù)字濾波器</b>類型

    數(shù)字濾波器實現(xiàn)方法

    數(shù)字濾波器是一種通過對數(shù)字信號進(jìn)行處理來完成對數(shù)字信號或模擬信號進(jìn)行濾波的儀器。其實現(xiàn)方式多樣,可以從硬件和軟件兩個角度進(jìn)行探討,同時涉及多
    的頭像 發(fā)表于 08-20 16:06 ?2088次閱讀

    AMC1210四通道數(shù)字濾波器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《AMC1210四通道數(shù)字濾波器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-19 09:15 ?0次下載
    AMC1210四通道<b class='flag-5'>數(shù)字濾波器</b>數(shù)據(jù)表

    數(shù)字濾波器的原理和應(yīng)用

    數(shù)字濾波器是一種由數(shù)字乘法器、加法器和延時單元組成的算法或裝置,其輸入和輸出均為數(shù)字信號。它的主要功能是通過一定的運(yùn)算關(guān)系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分,以達(dá)到期望的響應(yīng)特性。
    的頭像 發(fā)表于 08-05 16:19 ?2594次閱讀
    <b class='flag-5'>數(shù)字濾波器</b>的原理和應(yīng)用

    如何區(qū)分IIR濾波器和FIR濾波器

    對信號進(jìn)行處理的系統(tǒng),它可以按照預(yù)定的規(guī)則改變信號的頻譜特性。在數(shù)字信號處理中,濾波器通常用于去除噪聲、抑制干擾或提取特定頻率成分。IIR和FIR濾波器是兩種基本的
    的頭像 發(fā)表于 07-19 09:44 ?6664次閱讀

    iir濾波器和fir濾波器的優(yōu)勢和特點(diǎn)

    (Infinite Impulse Response)濾波器是一種具有無限脈沖響應(yīng)的數(shù)字濾波器。它的輸出不僅取決于當(dāng)前的輸入值,還取決于之前的輸入值。IIR濾波器通常由遞歸
    的頭像 發(fā)表于 07-19 09:28 ?3151次閱讀