色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

FIR濾波器設(shè)計-FPGA附帶源碼

發(fā)布時間:2018-11-14 10:07    發(fā)布者:luckyb1
1      項目背景 (源碼下載,至簡設(shè)計法輔導(dǎo)交流群:5444538371.1 FIR和IIR濾波器
      FIR(Finite Impulse Response)Filter:有限沖激響應(yīng)濾波器,又稱為非遞歸線性濾波器。
      FIR濾波器,顧名思義,其脈沖響應(yīng)由有限個采樣值構(gòu)成。長度(抽頭數(shù))為N、階數(shù)為N−1的FIR系統(tǒng)的轉(zhuǎn)移函數(shù)、差分方程和單位沖激響應(yīng)分別如下列三式所示。


      IIR(Infinite Impulse Response)Filter:無限沖激響應(yīng)濾波器,又稱為遞歸線性濾波器。
      FIR相對與IIR來說,具有如下的優(yōu)點:
Ø  可以具備線性相位特性
      線性相位的概念:如果濾波器的N個實值系數(shù)為對稱或者反對稱結(jié)構(gòu),該濾波器具有線性相位。        W(n)=±W(N−1−n)W(n)=±W(N−1−n)
線性相位的特性:通過線性相位濾波器的信號的所有頻率部分具有相同的延遲量。

Ø  易于設(shè)計
但FIR也有自身的缺點:同樣指標的濾波器,F(xiàn)IR需要更多的參數(shù),即實現(xiàn)時消耗更多的計算單元,產(chǎn)生更大的延遲。

1.2   FIR濾波器的原理
      信號通過一個FIR濾波器其實就是信號與FIR濾波器的系數(shù)進行卷積(即乘累加)的過程。我們以一個簡單信號模型為例,了解一下FIR波形器的原理。
     現(xiàn)在有三組信號,分別是:
     信號1:低頻信號,即在時域上變化慢的信號,其輸入先后為1 1 1 1 2 2 2 2。
     信號2:直流信號,其輸入先后為1 1 1 1 1 1 1 。
    信號3:高頻信號,即在時域上變化快的信號,其輸入先后為1 2 1 2 1 2 1 2 。
     簡單的濾波器模型
     低通濾波器:1 1
     信號1與低通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):1 1 1 1.5 2 2 2?梢钥吹,低頻信號經(jīng)過低通濾波器后,各個點仍然保持了其形狀,而且在1變成2時,還變平緩了。
     信號2與低通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):1 1 1 1 1 1 1?梢钥吹,直流信號與輸入的信號完成相同。
信號3與低通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):1.5 1.5 1.5 1.51.5 1.5 1.5?梢钥吹剑哳l信號經(jīng)過低通濾波器后,已經(jīng)完成消去了形狀,變成了直流信號。
      再考慮另一種濾波器模型,高通濾波器:1 -1
     信號1與高通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):0 0 0 -0.5 0 0 0?梢钥吹剑皖l信號經(jīng)過高通濾波器后,信號變化基本上消失。
     信號2與低通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):0 0 0 0 0 0 0?梢钥吹,直流信號仍然是沒有變化。
     信號3與低通濾波器進行卷積運算,其結(jié)果再除以2,得到如下數(shù)據(jù):-0.5 0.5 -0.5 0.5-0.5 0.5 -0.5 0.5?梢钥吹,高頻信號已經(jīng)仍然保持了變化的形狀。
由這兩個例子可以看出,F(xiàn)IR濾波器其實就是信號與FIR濾波器的系數(shù)進行卷積(即乘累加)的過程。通過調(diào)整濾波器系數(shù)、抽頭個數(shù),就可實現(xiàn)低通、高通、帶通等濾波器。
1.3    FIR濾波器的設(shè)計1.3.1  matlab產(chǎn)生濾波器系數(shù)
     打開matlab在其命令窗口輸入fdatool 按下回車


     調(diào)出FIR濾波器的設(shè)計界面。


      在波形設(shè)計界面中,我們重要關(guān)注以下選項。
      Response Type:選擇可以選擇濾波器的類型,可選擇:lowpass低通濾波器、Highpass高通濾波器、bandpass帶通濾波器、bandstop帶阻濾波器。
     Fs(采樣頻率):
      Fstop :信號截止頻率
     Fpass:
     Filter Order:用來設(shè)置濾波器的抽頭個數(shù)?梢栽趕pecify order中輸入個數(shù),也可以選擇Minimumorder,讓系統(tǒng)計算滿足要求的前提下的最小抽頭個數(shù)。
     點擊Design Filter,就可以計算出抽頭系數(shù)。
     產(chǎn)生系數(shù)后點擊file 菜單里的Export 將系數(shù)保存到工作區(qū)


點擊export


      點擊之后打開工作區(qū)里的Num。


    而后將下圖第一列的數(shù)據(jù)復(fù)制粘貼到txt文件中。


注意復(fù)制后需在兩個系數(shù)間插入逗號(英文輸入狀態(tài)下的的逗號)。


這樣就得到濾波器的系數(shù)了。
1.3.2FPGA生成FIR IP核
     打開工程后,在IP catalog這一界面中選擇DSP下一目錄中選擇Filter 在選擇選擇 FIR II


     首先在Fitter這一界面做如下操作


     Filter Type
    Interpolation Factor:
    Decimation Factor:
    Max Number of channels:

    Clock rate:填寫本IP核的工作時鐘頻率。
     clock slack:
     Input sample rate (msps):采樣率
     點擊coefficients,進入coefficients界面。
     這一界面點擊import from file ,彈出一下界面,找出我們之前用matlab生成的系數(shù)文件,點擊import,導(dǎo)入成功后可以看到下圖的 frequency response界面的波形發(fā)生變化


     在coefficient界面,還可以設(shè)置系數(shù)的格式、數(shù)據(jù)位寬等。


      其它選項不改按默認的來點擊finish即可。
     以上就是生成 FIR濾波器的主要步驟。

2    設(shè)計目標
     本次案例將使用到采樣率大于100M的雙通道的示波器。將示波器的兩個通道,分別與FPGA的DA通道1和DA通道2相連,觀察兩路DA的輸出。其連接示意如下圖所示。


     本案例是FPGA內(nèi)部產(chǎn)生正弦信號,這個正弦信號一路輸出給DA通道1,另一路經(jīng)過FIR濾波器后,輸出給DA通道2。


      正弦信號的頻率受開發(fā)板上的3個撥碼開關(guān)控制,用3位信號key表示,一共可以產(chǎn)生8種頻率。
     正弦信號的頻率 約等于: 100KHz * (key+1)。
     例如,當key等于0時,產(chǎn)生約100KHz的正弦信號;
    當key等于1時,產(chǎn)生約200KHz的正弦波;
     當key等于7時,產(chǎn)生約800KHz的正弦波。
      FIR濾波器是低通濾波器,其截止頻率是500KHz,這樣原則上超過500KHz的信號就會被濾除。濾波器的輸出給通道2。
     下面是示波器的顯示效果,其中黃色是通道1輸出的信號(上面的波形),下面藍色是通道2的輸出信號(下面的波形)。
     下圖是100KHz的信號圖。


下圖是200KHz的信號圖。


下圖是300KHz的信號圖。


下圖是400KHz的信號圖,可以看到已經(jīng)衰減了。


       下圖是500KHz的信號圖,可以看到已經(jīng)衰減的很小了。


       下圖是600KHz的信號圖,可以看到通道2已經(jīng)沒有波形。


     下圖是700KHz的信號圖,可以看到通道2已經(jīng)沒有波形。下圖是800KHz的信號圖,可以看到通道2已經(jīng)沒有波形。


下圖是800KHz的信號圖,可以看到通道2已經(jīng)沒有波形。


3  設(shè)計實現(xiàn)3.1 頂層接口
      新建目錄:D:\mdy_book\fir_prj。在該目錄中,新建一個名為fir_prj.v的文件,并用GVIM打開,開始編寫代碼。
     我們要實現(xiàn)的功能,概括起來就是FPGA產(chǎn)生控制AD9709,讓其中的通道A未濾波的正弦信號,讓通道B輸出濾波后的正弦信號。為了控制AD9709的工作模式,就要控制AD9709的MODE、SLEEP管腳;為了控制通道A,就需要控制AD9729的CLK1、WRT1、DB7~0P1管腳;為了控制通道B,就需要控制AD9729的CLK2、WRT2、DB7~0P2管腳。根據(jù)設(shè)計目標的要求,整個工程需要以下信號:
1.       使用clk連接到晶振,表示50M時鐘的輸入。
2.       使用rst_n連接到按鍵,表示復(fù)位信號。
3.       使用3位信號key,表示三位撥碼開關(guān)。
4.       使用dac_mode信號連接到AD9709的MODE管腳,用來控制其工作模式。
5.       使用dac_sleep信號連接到AD9709的SLEEP管腳,用來控制其睡眠模式。
6.       使用dac_clka信號連接到AD9709的CLK1管腳,用來控制通道A的時鐘。
7.       使用dac_wra信號連接到AD9709的WRT1管腳,用來控制通道A的寫使能。
8.       使用8位信號dac_da連接到AD9709的DB7~0P1管腳,用來控制通道A的寫數(shù)據(jù)。
9.       使用dac_clkb號連接到AD9709的CLK2腳,用來控制通道B時鐘。
10.    使用dac_wrb號連接到AD9709的WRT2腳,用來控制通道B使能。
11.    使用8位信號dac_db接到AD9709的DB7~0P2腳,用來控制通道B寫數(shù)據(jù)。

      綜上所述,我們這個工程需要11個信號,時鐘clk,復(fù)位rst_n,撥碼開關(guān)的輸入key,dac_mode、dac_sleep、dac_clka、dac_wra、dac_da、dac_clkb、dac_wrb和dac_db信號,其中dac_da和dac_db是8位信號,其他都是1位信號。下面表格表示了硬件電路圖的連接關(guān)系。


將module的名稱定義為fir_prj,代碼如下:


      其中clk、rst_n是1位的輸入信號,dac_da和dac_db是8位的輸出信號,key是3位輸入信號,dac_mode,dac_clka,dac_wra,dac_sleep,dac_clkb,dac_wrb是一位輸出信號。


3.2    正弦信號設(shè)計
     假設(shè)產(chǎn)生的正弦信號命名為sin_data信號。sin_data是從表XX中選擇出來的值,該表一共有128個點。該表的產(chǎn)生方法,請看案例“信號發(fā)生器和DA轉(zhuǎn)換”一章的內(nèi)容。


      很自然地定義一個7位的選擇信號addr。我們只要控制好addr,就能方便得到sin_data。因此可以寫出下面代碼。















本文地址:http://www.54549.cn/thread-549976-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表