IP核实现fir滤波器设计Verilog代码VIVADO仿真

名称:IP核实现fir滤波器设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

IP核实现fir滤波器

设计fir滤波器,使用VIVADO的滤波器IP核,利用fir compiler 实现

1. 工程文件

2. 程序文件

3. 程序编译

4. Testbench

5. 仿真图

附:

调用IP核时的一些技巧

1. 设置完IP核后,点击下图,可以找到软件自动生成的例化代码,可以直接复制到代码中,避免自己写繁琐且易出错。

2. Vivado会针对一些IP核自动生成testbench,一般自动生成的testbench是VHDL写的,可以用来参考IP核的时序。如下图

可以新建VHDL的测试文件将自动生成的testbench复制过去,仿真一下看看控制时序。

部分代码展示:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2020/09/30 05:04:08
// Design Name: 
// Module Name: Multi_channel_filter
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
module Multi_channel_filter(
rst,clk,din,
rdy,dout);
    
inputrst;   //复位信号,高电平有效
inputclk;   //FPGA系统时钟,频率为100MHz
input    signed [15:0]din;  //数据输入频率为HZ
output      rdy;                   //输出数据有效指示信号
output      signed [31:0]dout; //滤波后的输出数据
reg clk_1MHz;
reg [6:0] cnt=7'd0;
   
reg s_axis_data_tlast=0;
wire [2 : 0] s_axis_data_tuser;
reg  s_axis_config_tlast=0;
reg [15 : 0] s_axis_config_tdata=16'd0;
wire s_axis_data_tready;
wire s_axis_config_tready;
wire m_axis_data_tvalid; 
wire m_axis_data_tlast; 
wire [2 : 0] m_axis_data_tuser; 
wire [39 : 0] m_axis_data_tdata; 
wire event_s_data_tlast_missing; 
wire event_s_data_tlast_unexpected; 
wire event_s_data_chanid_incorrect; 
wire event_s_config_tlast_missing; 
wire event_s_config_tlast_unexpected; 
//调用IP核
fir_compiler_0 i_fir_compiler_0 (
  .aclk(clk),                                                        // input wire aclk
  .s_axis_data_tvalid(clk_1MHz),                            // input wire s_axis_data_tvalid
  .s_axis_data_tready(s_axis_data_tready),                            // output wire s_axis_data_tready
  .s_axis_data_tlast(s_axis_data_tlast),                              // input wire s_axis_data_tlast
  .s_axis_data_tuser(s_axis_data_tuser),                              // input wire [2 : 0] s_axis_data_tuser
  .s_axis_data_tdata(din),                              // input wire [15 : 0] s_axis_data_tdata
  .s_axis_config_tvalid(1'b0),                        // input wire s_axis_config_tvalid
  .s_axis_config_tready(s_axis_config_tready),                        // output wire s_axis_config_tready
  .s_axis_config_tlast(s_axis_config_tlast),                          // input  wire s_axis_config_tlast
  .s_axis_config_tdata(s_axis_config_tdata),                          // input  wire [15 : 0] s_axis_config_tdata
  .m_axis_data_tvalid(m_axis_data_tvalid),                            // output wire m_axis_data_tvalid
  .m_axis_data_tlast(m_axis_data_tlast),
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值