57--vivado 带阻滤波器
目标:
实现带阻滤波器。参数如下:
阻带频率1:100KHz;
阻带频率2:300KHz;
通过频率1:50KHz;
通过频率2:350KHz;
通带波动:<1dB;
阻带衰减:>40dB。
ip核coe 文件:
; XILINX CORE Generator™Distributed Arithmetic FIR filter coefficient (.COE) File
; Generated by MATLAB® 9.2 and the DSP System Toolbox 9.4.
; Generated on: 07-Jun-2020 11:37:46
Radix = 16;
Coefficient_Width = 16;
CoefData = 02ec,
fee3,
ff5b,
0017,
00d5,
010b,
0066,
ff49,
fe92,
fed8,
ffc4,
0045,
ff8e,
fdfb,
fce4,
fd62,
ff2b,
00a3,
005b,
fe91,
fd41,
fe62,
01db,
0534,
05a5,
02e8,
000b,
011f,
0745,
0e98,
1045,
07b9,
f6fc,
e66a,
5f84,
e66a,
f6fc,
07b9,
1045,
0e98,
0745,
011f,
000b,
02e8,
05a5,
0534,
01db,
fe62,
fd41,
fe91,
005b,
00a3,
ff2b,
fd62,
fce4,
fdfb,
ff8e,
0045,
ffc4,
fed8,
fe92,
ff49,
0066,
010b,
00d5,
0017,
ff5b,
fee3,
02ec;
详细实现步骤可参考之前的博文。
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/06/07 11:43:39
// Design Name:
// Module Name: bandstop
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module bandstop(input clk,input s_axis_data_tvalid,input s_axis_data_tvalid_1,output [15:0]m_axis_data_tdata_0,output [15:0]m_axis_data_tdata_1,output [15:0]m_axis_data_tdata_2,output [16:0]s1,//44+200output [16:0]s2,//200+400output [39:0]m_axis_data_tdata_fir,output [39:0]m_axis_data_tdata_fir1);wire event_pinc_invalid_0,event_pinc_invalid_1,event_pinc_invalid_2;wire event_poff_invalid_1,event_poff_invalid_0,event_poff_invalid_2;wire m_axis_phase_tvalid_0,m_axis_phase_tvalid_1,m_axis_phase_tvalid_2;wire m_axis_phase_tdata_0,m_axis_phase_tdata_1,m_axis_phase_tdata_2;wire m_axis_data_tvalid1,m_axis_data_tvalid2,m_axis_data_tvalid0;//44kHzdds_compiler_0 dds0 (.aclk(clk), // input wire aclk.m_axis_data_tvalid(m_axis_data_tvalid0), // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata_0), // output wire [15 : 0] m_axis_data_tdata.m_axis_phase_tvalid(m_axis_phase_tvalid_0), // output wire m_axis_phase_tvalid.m_axis_phase_tdata(m_axis_phase_tdata_0), // output wire [15 : 0] m_axis_phase_tdata.event_pinc_invalid(event_pinc_invalid_0), // output wire event_pinc_invalid.event_poff_invalid(event_poff_invalid_0) // output wire event_poff_invalid
);//200kHzdds_compiler_1 dds1 (.aclk(clk), // input wire aclk.m_axis_data_tvalid(m_axis_data_tvalid1), // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata_1), // output wire [15 : 0] m_axis_data_tdata.m_axis_phase_tvalid(m_axis_phase_tvalid_1), // output wire m_axis_phase_tvalid.m_axis_phase_tdata(m_axis_phase_tdata_1), // output wire [15 : 0] m_axis_phase_tdata.event_pinc_invalid(event_pinc_invalid_1), // output wire event_pinc_invalid.event_poff_invalid(event_poff_invalid_1) // output wire event_poff_invalid
);//400kHzdds_compiler_2 dds2(.aclk(clk), // input wire aclk.m_axis_data_tvalid(m_axis_data_tvalid2), // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata_2), // output wire [15 : 0] m_axis_data_tdata.m_axis_phase_tvalid(m_axis_phase_tvalid_2), // output wire m_axis_phase_tvalid.m_axis_phase_tdata(m_axis_phase_tdata_2), // output wire [15 : 0] m_axis_phase_tdata.event_pinc_invalid(event_pinc_invalid_0), // output wire event_pinc_invalid.event_poff_invalid(event_poff_invalid_1) // output wire event_poff_invalid
);
c_addsub_0 add1 (.A(m_axis_data_tdata_0), // input wire [15 : 0] A.B(m_axis_data_tdata_1), // input wire [15 : 0] B.S(s1) // output wire [16 : 0] S
);
c_addsub_1 add2 (.A(m_axis_data_tdata_1), // input wire [15 : 0] A.B(m_axis_data_tdata_2), // input wire [15 : 0] B.S(s2) // output wire [16 : 0] S
);
wire s_axis_data_tready;
wire m_axis_data_tvalid_f1;
wire m_axis_data_tvalid_f0;
fir_compiler_0 fir1 (.aclk(clk), // input wire aclk.s_axis_data_tvalid(s_axis_data_tvalid_1), // input wire s_axis_data_tvalid.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready.s_axis_data_tdata(s1), // input wire [23 : 0] s_axis_data_tdata.m_axis_data_tvalid(m_axis_data_tvalid_f0), // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata_fir) // output wire [39 : 0] m_axis_data_tdata
);
fir_compiler_1 fir2 (.aclk(clk), // input wire aclk.s_axis_data_tvalid(s_axis_data_tvalid), // input wire s_axis_data_tvalid.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready.s_axis_data_tdata(s2), // input wire [23 : 0] s_axis_data_tdata.m_axis_data_tvalid(m_axis_data_tvalid_f1), // output wire m_axis_data_tvalid.m_axis_data_tdata(m_axis_data_tdata_fir1) // output wire [39 : 0] m_axis_data_tdata
);endmodule
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/06/07 13:18:49
// Design Name:
// Module Name: tb_bandstop
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module tb_bandstop();reg s_axis_data_tvalid;reg s_axis_data_tvalid_1;reg clk;// reg m_axis_data_tvalid;wire [15:0]m_axis_data_tdata_0;wire [15:0]m_axis_data_tdata_1;wire [15:0]m_axis_data_tdata_2;wire [16:0]s1;//44+200wire [16:0]s2;//200+400wire [39:0]m_axis_data_tdata_fir;wire [39:0]m_axis_data_tdata_fir1;bandstop u1(.clk(clk),.m_axis_data_tdata_0(m_axis_data_tdata_0),.m_axis_data_tdata_1(m_axis_data_tdata_1),.m_axis_data_tdata_2(m_axis_data_tdata_2),.s1(s1),.s2(s2),.s_axis_data_tvalid(s_axis_data_tvalid),.m_axis_data_tdata_fir(m_axis_data_tdata_fir),.m_axis_data_tdata_fir1(m_axis_data_tdata_fir1),.s_axis_data_tvalid_1(s_axis_data_tvalid_1));initial begins_axis_data_tvalid<=1'b1;s_axis_data_tvalid_1<=1'b1;clk<=1'b0;endalways #5 clk<=~clk;
endmodule
s1,s2为混合波,分别对其进行滤波后可发现只剩下阻带外频率的信号。
57--vivado 带阻滤波器相关推荐
- 【 Vivado 】在工程模式下通过jou文件来学习 Tcl 命令
Xilinx 的数据手册UG895提供了一些系统级设计的方法,写得很详细,详细到得不到重要的消息(我菜). Tcl命令在工程模式下以及非工程模式下有一些差异,具体什么差异,这里暂时不说,后面我想应该会 ...
- Vivado中MIG核中DDR的读写控制
本文使用Vivado 2015.4在Nexys4 DDR(以下简称N4DDR)开发板上实现DDR的读写. · FPGA如果需要对DDR进行读写,则需要一个DDR的控制器.根据官方的文档(UG586,下 ...
- 基于vivado的fir ip核的重采样设计与实现
创建vivado工程 1. 首先打开vivado,创建一个新的project(勾选create project subdirectory选项),并将工程命填为firfilter. 2.选择工程创建的类 ...
- 【youcans 的 OpenCV 例程 200 篇】103. 陷波带阻滤波器消除周期噪声干扰
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 【youcans 的 OpenCV 例程 200 篇】102. 陷波带阻滤波器的传递函数
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...
- 【OpenCV 例程200篇】89. 带阻滤波器的传递函数
[OpenCV 例程200篇]89. 带阻滤波器的传递函数 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5.1 带 ...
- 【OpenCV 例程200篇】57. 低通高斯滤波器
[OpenCV 例程200篇]57. 低通高斯滤波器 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 图像滤波是在尽可 ...
- Vivado工程配置petalinux实现linux下网卡驱动
0.说明 基于Vivado工程配置petalinux实现linux下控制PL端GPIO 完成对linux网卡的驱动 实验内容: 完成一个vivado工程,导出硬件信息 创建petalinux工程,导入 ...
- 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
在VIVADO上实现的非常简易的RISC-V CPU设计 一.实验要求重述: 1.实验目的 2.实验要求: 二.学习准备: 1.什么cpu? 2.cpu需要具有哪些部件? 3.什么是RISC_CPU? ...
- 向量旋转(或矢量旋转或坐标轴旋转)后xy坐标重定位(vivado+cordic ip核+matlab) - 适用于数学爱好者
大家在高中大学应该学过以下角度转换公式(两公式形式不同本质相同),vivado中有现成的角度转换ip核cordic供使用,本文参考官方手册数据进行一次转角实验 在vivado pg105-cordic ...
最新文章
- java三大特性:封装、继承、多态
- 人类在计算机设计方面已经进入了一个误区
- (WPF)WPF要点之事件-深入浅出WPF笔记
- Galgame研发日志:独立游戏制作前应当进行的第一步
- 各种排序算法的C++实现
- UI5 navigation logic
- 从mysql读取图片_如何从sql数据库内读取图片
- 用赫夫曼树进行文件解压
- 异动分析技术解决方案—异动归因之指标拆解
- java 井字棋 人机_一个井字棋tictactoe游戏的java实现 | Soo Smart!
- 记一次解决curl https证书问题
- android+word转html,word与html互转(1) -- word转html
- Eclipse + Gradle实现APK分包
- Spring 一二事(1)
- 非专业学生如何系统的学习计算机编程?
- spring data JPA的使用
- 即兴演讲的秘诀结构(一)
- FAT32 学习及注意事项
- 在美国OpenSky电商平台上使用MasterCard虚拟信用卡海淘购物攻略教程
- 左右手坐标转换 四元数