Xilinx FIR IP core滤波器系数的重载方法

总结起来就是有两种方法,一种是只利用config channel 来选择滤波器组,另外一种方法是使用reload channel 动态输入滤波器组的系数值,然后配合使用config channel 来重载滤波器系数。


看到这个标题大部分人都会想到系数重载。我一开始也是这么理解的,这个让我在读Vivado提供的FIR compiler的文档时犯了极大错误。我有一个module需要在运行的过程根据输入信号来调整系数。我的第一反应就是系数重载。所以,我在看完IP core的基本输入输出端口就直接看FIR core关于reload信道的部分。然后,我就发现reload的工作方式异常复杂(其实后面发现其实不复杂),再次就不多说。在完整看完IP core文档第二遍的时候,灵感一现。发现自己犯了一个极大的错误(浪费了自己一个周时间)。其实,可以直接通过config来控制选择系数组。所以,我不用重载而用修改这两个字。


其实,在输入系数的时候,就可以同时输入几组滤波器系数。而后来只需要通过config信道来选择用哪一组滤波器就可以了。

IP core生成时,有两种方式可以输入系数,就是vector方式和.coe file方式。第一种方式理解上比较简单,就是直接在Coefficient Vector内输入系数就好。但是,我不建议这种方式,这种方式在实际操作比较复杂,而且容易出错。第二种方式,实际操作比较容易,且不易出错。可以直接通过MATLAB产生.coe文件,在Vivado FIR IP core生成的时候直接导入就好(以下过程也只就第二种方式介绍)。


记下来介绍如何同时导入几组滤波器系数吧。假如两个滤波器的coe文件如下:

Coefficient set 0 :1 2 3 4 3 2 1;

Coefficient set 1 : 2 3 4 5 4 3 2;

则同时输入的coe文件就会是:

Coefficient :1 2 3 4 3 2 1 2 3 4 5 4 3 2;

并且需要将Numberof Coefficient sets设置为2。而后,直接在config信道上选择系数的组别就好。

若系数长度相差太多,就可以用reload来重载系数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值