完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` FIR(Finite Impulse Response)滤波器,即有限脉冲响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。 Vivado集成的FIR IP核可以实现如下公式所示的N级卷积运算。 FIRIP核可以根据配置实现复用的乘累加单元,以实现面积最优化的设计;当然了,在速度性能要求极高的应用中,也可以配置并行的乘累加单元,以达到最大的FIR数据吞吐量。 FIRIP配置主页面如图所示。此页面可以配置基本的滤波参数。 通道配置页面如下。 输入输出的数据位宽可在Implementation页面配置。 实现的资源利用情况,如优化选项、存储器选项和DSP Slice选项等,可以在DetailedImplementation页面配置。 额外的控制接口,可以在Interface页面配置。 左侧的Freq.Response页面可以参考所使用的FIR滤波参数最终实现的滤波特性(低通、高通、低阻、高阻或带通、带阻等),这里我们使用的是一组IP默认的参数,低通滤波器。 而左侧的Implementation Details页面,则可以自由利用以及接口等信息。如图所示的ufix16_0表示输入数据为16位的无符号整数,而fix25_0则表示输出结果是25位的有符号整数。 详细配置可参看pg149-fir-compiler.pdf(/project/zstar_ex69/matlab文件夹下)。 我们例化的FIR IP核,有如下的接口,其功能和端口方向定义如下。 inputaclk; //时钟信号 input [15 : 0] s_axis_data_tdata; //unsigned(16.0),输入数据 inputs_axis_data_tvalid; //输入数据有效信号,高电平有效 outputs_axis_data_tready; //准备好接收输入数据,高电平有效 output [24 : 0] m_axis_data_tdata; //signed(25.0),FIR滤波结果输出 outputm_axis_data_tvalid; //FIR滤波结果输出有效,高电平有效 接口时序控制如图所示。图中很多信号本实例不涉及,可以忽略。s_axis_data_tvalid和s_axis_data_tready信号同时拉高时,s_axis_data_tdata被FIR IP核接收,进行处理。当m_axis_data_tvalid拉高时,表示输出FIR滤波结果m_axis_data_tdata有效。 使用/project/zstar_ex69/matlab文件夹下的test_data_generate_for_fir.m脚本,可以产生一组1000个点的余弦数据,存放在time_domain_cos.txt文件中,这组数据将作为FPGA的仿真输入激励,经过FIR滤波器进行滤波处理。 clc;clear`all;close all; format long g Fs = 1000; % Sampling frequency T = 1/Fs; % Sampling period L = 1000; % Length of signal t = (0:L-1)*T; % Time vector x1 = cos(2*pi*50*t)*(2^13); % First row wave %output time domain data x1_fix = round(x1,0); %convert to fixed signed(3.13) x1_fix(find(x1_fix<0)) =x1_fix(find(x1_fix<0))+(2^16); fid0 = fopen('time_domain_cos.txt','wt'); fprintf(fid0, '%16x ', x1_fix); fid0 = fclose(fid0); FPGA工程zstar_ex69的顶层是一个测试脚本,zstar_fir_sim.v文件。该测试脚本将time_domain_cos.txt文件的1000个数据读入,然后依次送入FIR滤波器IP核进行处理,输出结果写入fir_result.txt文本中。 `timescale 1ns/1ps module zstar_fir_sim( ); reg clk; reg [15 : 0] s_axis_data_tdata; //unsigned(16.0) reg s_axis_data_tvalid; wire s_axis_data_tready; wire [31 : 25] null; wire [24 : 0] m_axis_data_tdata; //signed(25.0) wire m_axis_data_tvalid; parameter DATA_NUM = 1000; //////////////////////////////////////////////////// //FIR IP Core fir_compiler_0 uut_fir_compiler_0 ( .aclk(clk), // input wireaclk .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(s_axis_data_tdata), // input wire [15 : 0] s_axis_data_tdata .m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid .m_axis_data_tdata({null,m_axis_data_tdata}) // output wire [31 : 0] m_axis_data_tdata ); //////////////////////////////////////////////////// integer i; reg[15:0] data_mem [DATA_NUM-1:0]; initial #500$readmemh("../../time_domain_cos.txt", data_mem); initial begin clk= 0; s_axis_data_tdata<=16'd0; s_axis_data_tvalid<=1'b0; #1000; @(posedgeclk); i<=1; #10000; @(posedgeclk); #100_000; $fclose(w1_file); #1000; $stop; end always @(*) begin if((i>0)&& (i elses_axis_data_tdata<= 16'd0; end always @(posedgeclk) begin if(i== 0) i<= 0; elseif(i<= DATA_NUM) begin if(s_axis_data_tready&&s_axis_data_tvalid)i<= i+1; else; end elseif(i< DATA_NUM+26) i<= i+1; else; end always @(posedgeclk) begin if((i>=1)&& (i<=DATA_NUM-1)) s_axis_data_tvalid<= 1'b1; elses_axis_data_tvalid<= 1'b0; end always #10 clk = ~clk; integer w1_file; initial w1_file =$fopen("./fir_result.txt","w"); always @(posedgeclk) begin if(m_axis_data_tvalid)begin $fwrite(w1_file,"%x ", m_axis_data_tdata); end end endmodule 如图所示,Vivado中打开zstar_ex69工程,在Project Manager àSimulation Sources àsim_1下,看到topmodule为高亮的zstar_fir_sim.v模块,点击Flow Navigator àSimulation àRun Simulation可以启动仿真。 |
|
相关推荐
2 个讨论
|
|
题主网盘链接失效了,可以再发个链接吗
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
879个成员聚集在这个小组
加入小组4487 浏览 0 评论
特权同学 Verilog边码边学 Lesson01 Vivado下载与安装
2601 浏览 1 评论
玩转Zynq连载50——[ex69] FIR滤波器IP仿真实例
4281 浏览 2 评论
玩转Zynq连载49——[ex68] MT9V034摄像头的图像FFT滤波处理
5228 浏览 1 评论
玩转Zynq连载48——[ex67] Vivado FFT和IFFT IP核应用实例
5225 浏览 0 评论
1913浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 14:53 , Processed in 0.383693 second(s), Total 42, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号