国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

FIR濾波器設計-FPGA附帶源碼

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


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

Ø  易于設計
但FIR也有自身的缺點:同樣指標的濾波器,FIR需要更多的參數,即實現時消耗更多的計算單元,產生更大的延遲。

1.2   FIR濾波器的原理
      信號通過一個FIR濾波器其實就是信號與FIR濾波器的系數進行卷積(即乘累加)的過程。我們以一個簡單信號模型為例,了解一下FIR波形器的原理。
     現在有三組信號,分別是:
     信號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與低通濾波器進行卷積運算,其結果再除以2,得到如下數據:1 1 1 1.5 2 2 2?梢钥吹,低頻信號經過低通濾波器后,各個點仍然保持了其形狀,而且在1變成2時,還變平緩了。
     信號2與低通濾波器進行卷積運算,其結果再除以2,得到如下數據:1 1 1 1 1 1 1。可以看到,直流信號與輸入的信號完成相同。
信號3與低通濾波器進行卷積運算,其結果再除以2,得到如下數據:1.5 1.5 1.5 1.51.5 1.5 1.5。可以看到,高頻信號經過低通濾波器后,已經完成消去了形狀,變成了直流信號。
      再考慮另一種濾波器模型,高通濾波器:1 -1
     信號1與高通濾波器進行卷積運算,其結果再除以2,得到如下數據:0 0 0 -0.5 0 0 0。可以看到,低頻信號經過高通濾波器后,信號變化基本上消失。
     信號2與低通濾波器進行卷積運算,其結果再除以2,得到如下數據:0 0 0 0 0 0 0?梢钥吹剑绷餍盘柸匀皇菦]有變化。
     信號3與低通濾波器進行卷積運算,其結果再除以2,得到如下數據:-0.5 0.5 -0.5 0.5-0.5 0.5 -0.5 0.5?梢钥吹,高頻信號已經仍然保持了變化的形狀。
由這兩個例子可以看出,FIR濾波器其實就是信號與FIR濾波器的系數進行卷積(即乘累加)的過程。通過調整濾波器系數、抽頭個數,就可實現低通、高通、帶通等濾波器。
1.3    FIR濾波器的設計1.3.1  matlab產生濾波器系數
     打開matlab在其命令窗口輸入fdatool 按下回車


     調出FIR濾波器的設計界面。


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


點擊export


      點擊之后打開工作區里的Num。


    而后將下圖第一列的數據復制粘貼到txt文件中。


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


這樣就得到濾波器的系數了。
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生成的系數文件,點擊import,導入成功后可以看到下圖的 frequency response界面的波形發生變化


     在coefficient界面,還可以設置系數的格式、數據位寬等。


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

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


     本案例是FPGA內部產生正弦信號,這個正弦信號一路輸出給DA通道1,另一路經過FIR濾波器后,輸出給DA通道2。


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


下圖是200KHz的信號圖。


下圖是300KHz的信號圖。


下圖是400KHz的信號圖,可以看到已經衰減了。


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


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


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


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


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

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


將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    正弦信號設計
     假設產生的正弦信號命名為sin_data信號。sin_data是從表XX中選擇出來的值,該表一共有128個點。該表的產生方法,請看案例“信號發生器和DA轉換”一章的內容。


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















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

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

廠商推薦

  • Microchip視頻專區
  • PIC18-Q71系列MCU概述
  • 安靜高效的電機控制——這才是正確的方向!
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人午夜看片在线观看 | 97精品一区二区三区在线不卡 | 国产在线精品成人一区二区三区 | www.四虎com| 欧美一区永久视频免费观看 | 亚洲影视在线 | 欧美精品亚洲精品日韩经典 | 幻女free性zozo仙踪林 | 羞羞免费网站在线 | 特黄特色的视频免费播放 | 国产精品每日更新在线观看 | 男女免费高清在线爱做视频 | 国产精品1区2区3区在线播放 | 日本 免费 高清 | 四虎永久免费网站免费观看 | 手机看片日本 | 成人欧美视频 | 国产第4页 | 在线播放国产不卡免费视频 | 麻豆精品视频在线观看 | 欧美区一区 | 国产成人精品18 | 美女紧身裤裆看光了下面 | 日韩国产成人精品视频 | 亚洲经典一区 | 91婷婷色| 日本欧美一区二区三区在线观看 | 欧美日韩国产一区二区 | 91亚洲欧美 | 777久久婷婷成人综合色 | 免费99视频有精品视频高清 | 91精品国产麻豆福利在线 | 亚洲日本韩国欧美 | 国内精品视频在线播放一区 | 在线高清国产 | 国产成人精品亚洲日本在线 | 欧美xxxx新一区二区三区 | 欧美亚洲另类综合 | 久久精品影视 | 久久99热精品免费观看无卡顿 | 亚洲精品在线免费观看视频 |