Vivado FIR滤波器IP核实现

版权声明:本文为CSDN博主「FPGADesigner」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fpgadesigner/article/details/80621411

1.“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80594627
2.“FPGA数字信号处理(三)串行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80598992
3.“FPGA数字信号处理(四)Quartus FIR IP核实现” https://blog.csdn.net/fpgadesigner/article/details/80605869

IP核概述

这里写图片描述
Xilinx的FIR IP核属于收费IP,但是不需要像 Quartus那样通过修改license文件来破解。如果是个人学习,现在网络上流传的license破解文件在破解Vivado的同时也破解了绝大多数可以破解的IP核。只要在IP Catalog界面中FIR Compiler的License状态为“Included”即可正常使用。

IP核参数设置

和Quartus不一样,Vivado的FIR Compiler没有提供设计FIR滤波器和生成滤波器系数的功能,因此需要使用MATLAB等其它工具设计好滤波器再将系数导入到IP核中。MATLAB的FDATOOL工具在设计好滤波器后,可以直接生成IP核需要的coe文件,如下图所示:
这里写图片描述

在IP Catalog中打开FIR Compiler,主界面如下:
**配置界面一**:
左边的Tab可以切换看到FIR的模块图(管脚信息)、频率响应等信息。右边的Tab是对FIR滤波器进行设计。

配置界面一
1、IP核支持两种FIR系数输入方式,以“Vector”的形式直接写入;或者以“COE File”的形式导入coe文件;
2、2处默认为1,表示有几路滤波通道,此处选择 1 路;
3、3处的数据是16,无法更改,表示的是从刚刚加载的 .coe 文件中读取到 16 个滤波器系数(注意此时vector中系数只是系统默认的,与加载的coe文件无关);
4、Xilinx的FIR IP核支持多种滤波器结构,可以在“Filter Type”设置,本文选择传统的“Single Rate”结构。该IP核同样也支持系数重载。

除了单速率(Single Rate,即数据输出与输入速率相同)外,FIR Compiler还支持抽取(Decimation)和插值(Interpolation)应用于多速率信号处理系统。此外还支持希尔伯特变换(Hilbert)模式,可以在“Filter Type”中设置。

配置界面二
在这里插入图片描述
IP核支持多通道数据输入,可以在Channel Specification这个Tab中设置输入数据的通道数。还可以在Hardware Oversampling Specification中设置过采样模式,即输入数据的频率可以高出FIR系统时钟的频率。
该页面还需要配置系统时钟和数据采样时钟,在上一讲中设置 matlab 滤波器参数时是2kHz采样频率,所以此处选择输入采样时钟为2kHz,为了方便起见,此处设置系统时钟为 2kHz

配置界面三
在这里插入图片描述Implementation这个Tab中可以设置FIR系数的类型、量化方式、量化位宽(此值应该与MATLAB中的设置一致,否则频率响应是错的)和结构。本文由于是设计线性相位FIR,滤波器系数是对称的,因此选择为“Symmetric”,也可以选择为“Inferred”,软件会自动判断系数的结构。

其他配置界面保持默认。

IP核接口说明

Vivado的很多IP核采用的是AXI4接口,主要有数据(tdata)、准备好(tready)、有效(tvalid)几种信号,还有主机(m)和从机(s)之分。另外在Interface这个Tab还可以配置使用更多辅助的AXI4接口信号。

在这里插入图片描述
接下来介绍几个主要的接口:

这里写图片描述

在设置为多通道、可变系数模式时,还会用到其它的接口。上表中的接口已经足够完成一次单通道、固定系数的FIR滤波器设计。其它接口在后文的设计中使用到FIR滤波器的其它模式时,再做介绍。

需要注意,AXI4接口的tdata位宽是以字节为单位,即只会是8的倍数,虽然本例中实际输出数据位宽位25bit,因此需要结合设计的实际位宽做相应处理。

IP核配置完毕后summary
在这里插入图片描述

FPGA设计

IP核的接口在Verilog HDL中进行设计时,一定要参考官方文档中给出的时序图。在IP核的配置界面点击“documentation”,可以找到IP核的user guide。 也可以在Xilinx官网或DocNav工具中搜索pg149,查阅FIR Compiler的说明。

单通道、固定系数的FIR Compiler接口时序非常简单,Verilog HDL示例代码如下所示:

`timescale 1ns / 1ps

module Xilinx_FIRIP_liuqi
(
    input clk,                  //FPGA系统时钟/数据速率:2kHz
    input signed [11:0] Xin,    //数据输入频率为2kHZ
    output m_tvalid,            //FIR输出数据有效信号
    output signed [24:0] Yout   //滤波后的输出数据
);

wire s_tready;
wire signed [31:0] m_tdata;

fir fir_lowpass_500kHz
(
        .aclk                 (clk),
        .s_axis_data_tvalid   (1'b1),
        .s_axis_data_tready   (s_tready),
        .s_axis_data_tdata    ({{4{Xin[11]}},Xin}),
        .m_axis_data_tvalid   (m_tvalid),
        .m_axis_data_tdata    (m_tdata)
);

assign Yout =  m_tdata[24:0];
endmodule

程序中认为输入的采样数据始终有效,因此将s_axis_data_tvalid永远置1。由于s_axis_data_tdata为16bit位宽,但输入信号数据为12bit位宽,因此用拼接运算符{}在高位填充补码的符号位;由于m_axis_data_tdata为32bit位宽,但输出信号数据有效位仅有25bit位宽,因此仅需取低25bit作为FIR滤波器输出。当然不这么操作,直接将信号赋值到实例化接口,结果也是正确的,这样做只是为了更严谨。

仿真

使用MATLAB生成一个200khz+800kHz的混合频率信号,写入txt文件。编写Testbench读取txt文件对信号滤波,文件操作方法参考“Testbench编写指南(一)文件的读写操作”https://blog.csdn.net/fpgadesigner/article/details/80470972

在Vivado中进行仿真,对正弦信号的滤波如下图所示:
在这里插入图片描述
新建一个虚拟总线,取[23:0],仅保留一个符号位即可完整输出全部信息,与上一章用verilog实现的FIR滤波器一致。明显看到经过500Hz低通滤波器滤波后,输入的200+800Hz信号只剩下200Hz的单频信号。且当FIR滤波器输出有效时,m_tvalid信号置高。

  • 45
    点赞
  • 411
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Vivado 是一款由 Xilinx 公司提供的 FPGA 开发工具。FIR (Finite Impulse Response) 滤波器是一种数字滤波器,可以用于实现多种信号处理应用。Vivado 中提供了一个叫做 "FIR Compiler" 的 IP 核,可以用来快速设计和实现 FIR 滤波器。使用这个 IP 核,可以通过设置不同的参数来实现不同类型的滤波器,并且可以通过调整参数来获得高性能的滤波效果。 ### 回答2: Vivado是赛灵思公司推出的一款综合性设计软件,可以配合FPGA芯片进行数字电路设计和FPGA编程。FIR滤波器是一种数字滤波器,对输入信号进行滤波后输出符合要求的信号,其在信号处理系统中有着广泛的应用。在Vivado软件中,可以使用IP核的方式实现FIR滤波器FIR滤波器实现需要分为两个步骤:设计滤波器和生成硬件模块。在Vivado中,通过IP核的方式,可以轻松地实现FIR滤波器FIR滤波器的设计是通过数学模型进行的,根据要求选择合适的滤波算法和参数。在Vivado中,可以通过FIR Compiler IP核来快速进行滤波器设计。使用FIR Compiler IP核,需要选择合适的滤波器类型、抽样频率、窗函数和滤波器系数等参数。设计完成后,生成的FIR滤波器的模型可以直接用于生成硬件模块。同时,Vivado还提供了FIR Filter IP核和Programmable FIR Filter IP核来方便用户自定义FIR滤波器实现。 生成硬件模块是将FIR滤波器模型生成硬件模块的过程,在Vivado中,可以通过与FIR Compiler IP核配套的Core Generator来生成硬件模块。根据滤波器模型自动生成硬件模块,可以使得滤波器实现更加准确且避免了手工设计的误差。 除此之外,Vivado还提供了丰富的验证工具来验证FIR滤波器的正确性和性能。例如,通过使用Simulator,可以对FIR滤波器的行为进行仿真验证;而通过使用ILA调试器,则可以实时观测FIR滤波器的内部信号。这些工具使得FIR滤波器的开发和调试更加高效和便捷,为数字信号处理系统的开发提供了强有力的支持。 ### 回答3: Vivado是一款由Xilinx公司开发的综合性电子设计自动化(EDA)软件,可以支持大部分Xilinx芯片的设计和验证。其中FIR滤波器IP核Vivado中常用的IP核之一。 FIR滤波器是一种数字滤波器,通过有限长的单位脉冲响应来实现信号的滤波。在数字信号处理应用中,FIR滤波器广泛应用于音频过滤、数据压缩、系统识别等领域。 Vivado中的FIR滤波器IP核支持多种滤波器结构,包括直接形式、级联形式和带通滤波器结构。同时,用户也可以通过IP核的参数设置和调整来实现不同的滤波器特性,例如滤波器的通带、阻带、截止频率等。 在使用FIR滤波器IP核之前,用户需要首先完成Vivado软件的安装和基本设置,并在IP目录中添加FIR滤波器IP核。接下来,用户可以通过IP核的配置向导设置滤波器的输入输出端口、滤波器结构和特性等。 例如,用户可以选择直接形式的滤波器结构,并通过参数设置实现通带截止频率为1kHz、阻带截止频率为5kHz的低通滤波器。用户还可以设置滤波器的系数、采样频率和量化位数等重要参数。 完成IP核的配置后,用户可以将IP核添加到Vivado工程中,并与其他模块一起实现完整的数字信号处理系统。在设计验证时,用户可以通过波形仿真和IP核的性能分析来检查滤波器的正确性和效果。 总之,Vivado FIR滤波器IP核是一种高效和灵活的数字滤波器实现方法,可以帮助设计工程师快速构建出符合要求的滤波器系统。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值