基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

基于xilinx-IP的多通道FIR滤波器

前言

作为一个有一定工作经验(划水好多年)的FPGA工程师,很多模块都已经学习过或者使用过,但是如果让我重新实现,感觉又是一脸懵。因此,这是我发文档的原因。对于自己来说,这是一个总结归纳的过程,对读者,可能是一次解惑。

后期,将会逐渐分享DDR/ETH/SERDES/PCIe/SPI/FFT/FIR等等应用、调试经历。2022.8.4@gz

预告:下一篇文章,将讲述FFT这个IP的使用以及注意事项。

本文末尾有相关的仿真文件,但是没有好好的整理以及写注释,将就着看,不懂得可以留言问。

如果有疑惑的地方,可以站内信->共同探讨!

  • 一、       概述

在项目中,需要实现一个多通道的FIR滤波器,滤波器的信号速率不高,是一个300Hz~4KHz范围的滤波器。问题在于多通道,预计是需要实现16通道的。如果是实现16通道并行的滤波器,即使这个滤波器是串行结构,那消耗的资源也是非常可观的。幸好,xilinx提供的IP中支持实现多通道的滤波器。

有点感慨:xilinx提供的这个fir滤波器IP,功能实在是有点强大。不但可以实现多种结构的滤波器,还支持多通道、多组系数等功能,另外,matlab提供了超级简便的系数生成模块,弄一个fir模块,简直便捷到飞起。

瞬时,觉得自己以前手撕代码写的滤波器,有点low的感觉。

使用xilinx提供的FIR滤波器IP,要点有:

1、 如何使用matlab设计fir滤波器系数并且导出coef文件;

2、 如何对vivado提供的FIR滤波器系数进行重载;

3、 如何对vivado提供的FIR滤波器系数进行切换;

4、 如何使用vivado提供的FIR滤波器实现多通道应用;(本文重点

  • 二、       IP配置

1.   目标滤波器参数

滤波器描述

在配置IP之前,我们预先使用matlab获得了对应的FIR滤波器系数。FIR滤波器是一个300Hz~3KHz的带通滤波器,系数量化成16bit450阶。信号的采样率:6.4kHz

IP运行时钟:120MHz的时钟;

 

滤波器设置选项

图片[1]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

通道设置

图片[2]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

实现设置

图片[3]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

详细实现方案

图片[4]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

接口设置

图片[5]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

最终滤波器设计

图片[6]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

2.   IP接口信号说明

S_axis_data_tlast:该信号表示滤波器信号输入的最后一个。如何理解?比如,在设计中一共有16个通道的滤波器,也就是相当于有16个独立的滤波器。在输入端,只有一组信号输入接口,如果是并行的,那么s_axis_data_tdata应该有16*32bit位宽,实际上只有32bit。因此,需要使用tuser结合tlast来对各个通道进行数据输入。而tlasttuser=15的时候需要拉高。其余的时候置地。如图:

图片[7]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

图片[8]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

图片[9]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

event_s_data_chanid_incorrect:如果tuser信号输入不正确,这个信号会拉高的。

图片[10]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

如何区分输出通道信号?

图片[11]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

图片[12]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

3.   仿真结果

图片[13]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

图片[14]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

仿真事项设置

 

图片[15]-基于xilinx-IP的多通道FIR滤波器-FPGA常见问题社区-FPGA CPLD-ChipDebug

 

  • 三、       总结与感想

到此,如何使用该IP实现多通道滤波器,已经基本搞明白了。需要注意的是,最好是自己建立一个简单的仿真工程,尝试多设置一下系数,就可以更好的理解与设置;

经验如下

1、 注重event标志信号,如果有置高的,就必须检查输入信号是否不符合要求;

2、 注意检查输入输出的时序关系,最好仿真一下;

相关的仿真工程文件

链接: https://pan.baidu.com/s/1htwozeuPkYoDQsb0MUlExQ?pwd=wy33 

请登录后发表评论

    没有回复内容