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 带阻滤波器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gapps如何选择
- 下一篇: dgrl格式读取_E+H孔板差压变送器_