xilinx IP核设计 FIR滤波器【小白专属 大佬勿喷 傻瓜教程】

1、滤波器阶数的获得 采样filter solutions软件

实现方法【lmplementation】选择数字方式【Digtal】,滤波器类型为FIR

选择滤波器阶数及截止频率

选择滤波器方式 这里我们选择低通

接下来选择采样频率 FPGA的时钟为50M 这里我们选择50M

最后选择加窗类型

到此为止 数字滤波器·设置完毕

整个设计完成界面如下

接下来查看抽头系数

点击Transfer Function

点击vec 抽头系数便可出现

需要用科学计数法 我们这里进行手动转化 结果如下

0.01862,0.02074,0.02282,0.02484,0.02678,0.02864,0.03039,0.03201,0.03349,0.03482,0.03598,0.03697,0.03777,0.03838,0.03878,0.03899,0.03899,0.03878,0.03838,0.03777,0.03697, 0.03598,0.03482,0.03349,0.03201,0.03039,0.02864,0.02678,0.02484,0.02282,0.02074,0.01862

中间用逗号隔开

2、FIR IP核的使用

fir ip核应该在DSP类目下 自己去找好了

在这里 导入抽头系数 可以直接导入文件 也可以手撸 我们选择后者

滤波器选择单一采样率 并设置好输入时钟

coefficient width直接影响精度 在小数的定点数中 根据位宽会损失一定的精度 位宽越高 越接近浮点数 误差越低 这个系数位宽一般我们选择10或者12

Coefficient Fractional Bits也会影响精度 可以通过修改它的值 观察左侧响应变化

输入数据类型选择有符号数

输入数据位宽为9位【仿真需要 实际可改 关于原因 后续介绍】

输出数据位宽为8位

并将输出进行截断【数字信号处理中的内容】

接下来的一页 默认即可 初始化完成

3、DDS IP核的使用【仿真需要】

例化两个DDS ip核 以产生两个不同频率信号叠加的波形 我们选择了100KHz与2MHz的信号进行叠加 以观看滤波效果

具体配置不再将 配置如下:

仅选择正弦波

输出可选

选择频率

配置完成

【关于占用了多少资源 我也没去考虑 emmm 也不会 正如师兄所言 随便用 资源不够了 就换资源丰富的片子 显然土豪作风 反正像我这种菜鸡也不会考虑 搞个32阶滤波器也无妨 反正我只关注效果】

4、例化

这就比较简单了 只是该注意下 两个有符号数相加问题 用如下语句:

assign sin_out_3 = $signed(sin_out_1)+$signed(sin_out_2);

方能实现两个正弦波相加 由于 8位加8位 会产生进位 所以输出设置为9位 则滤波器的输入也要设置为9位

例化很简单 简单到令人发指 根本不用写啥代码 就略过了

5、testbench的书写

这就更简单了 只需写个时钟就好

6、仿真

可以看出 2MHz的杂波被很好地滤掉了 【代码下载地址:verilogfir低通滤波器-硬件开发代码类资源-CSDN下载

  • 3
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨狼007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值