OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5885|回复: 2

FIR滤波器设计-至简设计与应用FPGA附带源码

[复制链接]

31

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-7-19
在线时间
8 小时
发表于 2018-11-14 10:03:52 | 显示全部楼层 |阅读模式
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:




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-12-7
在线时间
3 小时
发表于 2018-11-28 15:03:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-2-12
在线时间
1 小时
发表于 2020-2-12 21:40:33 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表