【無線射頻電路】-FIR與IIR低通濾波器的最簡(jiǎn)最快實(shí)現(xiàn)_第1頁
【無線射頻電路】-FIR與IIR低通濾波器的最簡(jiǎn)最快實(shí)現(xiàn)_第2頁
【無線射頻電路】-FIR與IIR低通濾波器的最簡(jiǎn)最快實(shí)現(xiàn)_第3頁
【無線射頻電路】-FIR與IIR低通濾波器的最簡(jiǎn)最快實(shí)現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

----宋停云與您分享--------宋停云與您分享----FIR與IIR低通濾波器的最簡(jiǎn)最快實(shí)現(xiàn)在設(shè)計(jì)單片機(jī)程序的過程中,常常需要利用ADC采集外界模擬信號(hào)。有一些信號(hào)我們比較關(guān)注它的直流與低頻重量,盼望將高頻噪聲濾除,就需要借助低通濾波器。

低通濾波器常見的利用電子電路實(shí)現(xiàn)的方式是一階RC無源濾波器。簡(jiǎn)潔講就是這樣:

RC濾波器的各類計(jì)算略,有需要請(qǐng)谷歌。

RC濾波器用于單片機(jī)ADC輸入有很多缺點(diǎn)。假如R的取值較小,就要求C較大,同時(shí)輸入信號(hào)阻抗不能過大;假如R的取值較大,則ADC采樣瞬間釋放的電荷會(huì)使得端口電壓上升而無法在采樣時(shí)間內(nèi)釋放到穩(wěn)定水平。這會(huì)導(dǎo)致采樣精度問題。

而即便使用一個(gè)運(yùn)放來緩沖RC濾波器的輸出,再接入ADC,也只解決了輸入阻抗問題,ADC電路受外界干擾仍舊會(huì)在轉(zhuǎn)換結(jié)果中產(chǎn)生噪聲。因此,我們盼望在單片機(jī)內(nèi)部利用程序來實(shí)現(xiàn)低通濾波,徹底擺脫高頻噪聲。

數(shù)字低通濾波器有兩種形式,IIR和FIR。

IIR是無限脈沖響應(yīng)濾波器,它的特點(diǎn)是輸出與無限久以前的輸入有關(guān)。這就猶如上面RC濾波器的響應(yīng),隨著時(shí)間消逝,輸出電壓只會(huì)無限接近于輸入電壓,而不會(huì)等于。

用c語言實(shí)現(xiàn)IIR低通很簡(jiǎn)潔:

intlast=0;

//下面的函數(shù)以固定頻率運(yùn)行,函數(shù)輸出就是IIR低通濾波器的輸出。

intlowpass()

{

intthis=ADC();

last=(this*1+last*15)/16;//新的last是舊的last*15/16+this*1/16

returnlast;

}假如對(duì)函數(shù)返回值作圖,得到的波形就會(huì)和RC濾波器的波形一樣。要轉(zhuǎn)變截止頻率,只需要轉(zhuǎn)變函數(shù)其次句中新的last的組成(例如改成3/4和1/4,截止頻率會(huì)提高)。

值得留意的是,上述代碼使用了整數(shù)乘法和2的n次冪除法,因此編譯優(yōu)化后,在8位平臺(tái)上運(yùn)行超快。假如你使用帶有浮點(diǎn)運(yùn)算模塊的平臺(tái),請(qǐng)直接使用浮點(diǎn)數(shù)。

IIR的特點(diǎn)是節(jié)約內(nèi)存,上面的濾波器只使用了兩個(gè)變量。

IIR的缺點(diǎn)是不穩(wěn)定。假如你把15改成17,明顯這個(gè)濾波器的輸出會(huì)在一段時(shí)間后溢出。你必需負(fù)責(zé)保證IIR濾波器穩(wěn)定。

FIR是有限脈沖響應(yīng)濾波器,它的特點(diǎn)是輸出與有限久以前(一段時(shí)間內(nèi))的輸入有關(guān)。由于數(shù)字系統(tǒng)中采樣是離散的,每一段時(shí)間內(nèi)的采樣數(shù)是固定的,所以FIR濾波器的每一個(gè)輸出值,可通過對(duì)之前的若干個(gè)數(shù)量固定的采樣值進(jìn)行計(jì)算得到。特殊是,由于對(duì)固定數(shù)量的采樣值的計(jì)算在FPGA電路中可以并行實(shí)現(xiàn),因此FIR濾波器經(jīng)常被用于基于FPGA的數(shù)字信號(hào)處理系統(tǒng)。相對(duì)的,IIR濾波器不依靠之前的采樣,但依靠于之前的濾波器狀態(tài)(存在反饋),因此在大部分比一階低通濾波器簡(jiǎn)單的應(yīng)用場(chǎng)合,IIR濾波器的各項(xiàng)特性沒有FIR穩(wěn)定(若要實(shí)現(xiàn)穩(wěn)定,對(duì)計(jì)算精度要求較高),而且計(jì)算起來比FIR要慢,設(shè)計(jì)上也沒有通用性。

下面我用c語言實(shí)現(xiàn)一個(gè)最簡(jiǎn)潔的FIR低通。我們將最近的8次采樣值加起來,求平均值,作為輸出。

intbuf[8];

intlowpass()

{

intk=7;

while(k--)

buf[k]=buf[k-1];//將buf[6]移到buf[7],buf[5]移到buf[6],等等,以空出buf[0]

}

buf[0]=ADC();

return(buf[0]+buf[1]+...+buf[7])/8;

}

這個(gè)濾波器的時(shí)域圖像有點(diǎn)像這樣:

值得留意的是,上面這個(gè)函數(shù)可以被進(jìn)一步簡(jiǎn)化,以加速計(jì)算。上面這種濾波器有另一個(gè)名字:滑動(dòng)平均濾波器,這個(gè)濾波器大部分股民應(yīng)當(dāng)很熟識(shí)。

雖然時(shí)域圖像很美觀,但是這個(gè)濾波器的頻域圖像一點(diǎn)也不美觀:

可見,隨著點(diǎn)數(shù)的增加,圖像看起來只是從右向左縮水,對(duì)高頻的抑制并不好。

所以假如想要獲得比較好的低通效果,不應(yīng)當(dāng)增加點(diǎn)數(shù),而應(yīng)當(dāng)將多個(gè)一樣的FIR濾波器串聯(lián)使用(一個(gè)的輸出作為下一個(gè)的輸入)。

注:pass是"遍'的意思,表示迭代次數(shù)。

上面是串聯(lián)使用的幅頻響應(yīng)。而時(shí)域圖像也很美觀:

結(jié)尾給出的是寫這篇文章時(shí)順手找到的資料。大家肯定要學(xué)會(huì)使用谷歌搜尋英文關(guān)鍵詞,由于老外比我們對(duì)待學(xué)問的態(tài)度更嚴(yán)厲?也更開放。

http://analog/media/en/technical-documentation/dsp-book/dsp_book_Ch15.pdf

剛才的滑動(dòng)平均濾波器,時(shí)間簡(jiǎn)單度是O(n)(設(shè)每次處理n個(gè)采樣)。

可以優(yōu)化為O(1)的形式:

intbuf[8];

intk=0;

intresult=0;

intlowpa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論