<meta name="keywords" content="庄家克星时时彩,FIR滤波器设计-FPGA附带源码" />

FIR滤波器设计-FPGA附带源码

宣布时间:2018年11月14日 10:11    宣布者: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:用来设置滤波器的抽头个数。可以在specify 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://badahub.com/thread-549976-1-1.html     【打印本页】
您须要登录后才可以揭晓议论 登录 | 急速注册

厂商推荐

关于我们  -  服务条目  -  应用指南  -  站点舆图  -  友谊链接  -  联系我们
庄家克星时时彩-时时彩qq群-时时彩平台推荐 © 版权一切   | 京公网安备110108881021702
回顶部