FIR IP 学习记录

工具:

matlab filterdesigner 工具箱

vivado FIR IP核

实现:

1.matlab设计与测试

先用matlab设计目标滤波器,得到滤波器的抽头系数。

如图,根据需求选择 低通/高通/带通/带阻。

由于vivado用的是FIR IP核,所以设计方法选择FIR,FIR中有多种选项,根据需求选择即可。

滤波器阶数,可以指定阶数也可以选择最小阶(这里最小阶应该是指保证性能的情况下的最小阶数)。阶数越高性能越好,耗用资源越多。

频率设定:pass 和stop就是过渡带的起始点,而Fs很重要,硬性要求是要大于两倍的max(Fpass ,Fstop),但是根据测试的结果,Fs只做到上述最低要求的话(刚好等于两倍或者略大一点),有时根本滤不了目标信号。所以要在仿真中调试Fs得到理想结果。

赋值设定:Apass一般不用改,就是允许通过的信号的强度;Astop可以根据需求改,会影响滤波效果与占用资源的大小。

设置完滤波器参数后,修改滤波器算法为定点,并根据需求改字长。

随后生成滤波器函数用于在matlab中调用:

便可进行仿真,测试。

2.vivado功能性仿真

在matlab工具箱中生成抽头系数的coe文件。

在IP核中,在cofficient file中选择生成的coe文件,其他不用修改,filter type选择单时钟即可,

在时钟这块修改频率Fs,与matlab工具箱中设置的Fs大小一致。

implement 按照图中设置,确定符号类型和数据位宽。

即可完成fir ip核的设置,接口信号也简单,就是输入信号和输出信号,时钟与Fs频率保持一致。

测试结果:

sin a :  3Mhz

sin b:4Mhz

sin ab : 1MHz,7MHz。

fir 输出:1MHz

遇到的坑:

在vivdado上捣鼓了很久,滤波器用的采样频率为10MHz,输入信号分别为3MHz、4MHz,无论用高通,低通,带通,都没法滤出想要的信号,所有的信号都没被过滤,以为是vivado信号设置的问题,最后用matlab仿真发现,滤波器设置用10MHz的采样频率本身就不行,用50MHz就可以,(不知道为啥,10MHz已经满足奈奎斯特采样律了),仿真还是有用的,找到了问题。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值