Xilinx FIR IP核设计滤波器

这篇具有很好参考价值的文章主要介绍了Xilinx FIR IP核设计滤波器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fir ip使用流程

使用matlab工具,根据具体需求设计出滤波器系数;
打开fir ip导入滤波器系数即可;

滤波器系数的生成

  1. 打开matlab使用fdatool工具,填入相应的参数生成系数;
    Fs=250;
    Fpass=50;
    Fstop=70;
    Apass=0.01;
    Astop=80;
    Xilinx FIR IP核设计滤波器
  2. 将滤波器系数设置为定点数输出;
    Xilinx FIR IP核设计滤波器
  3. 导出滤波器系数,生成coe文件;
    Xilinx FIR IP核设计滤波器

Fir ip核介绍

Xilinx FIR IP核设计滤波器
Select source:选择为coe文件;
Coefficient File:选择matlab生成的系数文件;
Filter Type:选择single rate单速率的滤波器;
其余的默认选择即可。
Xilinx FIR IP核设计滤波器
Input Sampling Frequency:选择输入的采样频率为250MHz;
Clock Frequency:时钟频率设置为250MHz
Xilinx FIR IP核设计滤波器
Coefficinet options:选择为有符号系数,数据位宽为16bit;
Data path options:输入数据16bit有符号数据,输出选择全刻度输出;
Xilinx FIR IP核设计滤波器
参数默认即可;
Xilinx FIR IP核设计滤波器
选择低电平复位即可;

Matlab生成仿真数据

clc;
clear all;
close all;
 
addpath('../../matlab_lib');
 
fs=250;
len=8192;
t=0:1/fs:(len-1)/fs;
fc1=10;
fc2=90;
 
sig_dat1=cos(2*pi*fc1*t);
sig_dat2=cos(2*pi*fc2*t);
sig_dat1=awgn(sig_dat1,60);
sig_dat2=awgn(sig_dat2,60);
sig_dat=sig_dat1+sig_dat2;
 
[f,fft_data]=data_fft(sig_dat',fs);
plot(f,fft_data);
 
sig_dat=round(sig_dat*2^15*0.45);
sig_dat=sign2com(sig_dat',16);
 
fp=fopen('sim_dat.bin','w');
fprintf(fp,'%04x\n',sig_dat);
fclose all;

Xilinx FIR IP核设计滤波器

Verilog fir设计

1.fir ip接口代码设计

module fir(
	input					i_clk				,
	input					i_rst				,
	input					i_din_vld			,
	input		[15:0]		i_din				,
	output	reg				o_dout_vld			,
	output	reg	[15:0]		o_dout			
);

	wire	[39:0]			m_axis_data_tdata	;
	wire					m_axis_data_tvalid	;
	
	fir_ip u_fir_ip (
		.aresetn			(~i_rst				),
		.aclk				(i_clk				),
		.s_axis_data_tvalid	(i_din_vld			),
		.s_axis_data_tready	(					),
		.s_axis_data_tdata	(i_din				),
		.m_axis_data_tvalid	(m_axis_data_tvalid	),
		.m_axis_data_tdata	(m_axis_data_tdata	)
	);
	
	always@(posedge i_clk)begin
		if(i_rst)begin
			o_dout_vld	<=0;
			o_dout		<=0;
		end
		else begin
			o_dout_vld	<=m_axis_data_tvalid;
			o_dout		<=m_axis_data_tdata[32:17];
		end
	end
	
endmodule
Verilog fir顶层设计
module fir_top(
	input				clk_250m	,
	input				rst_250m	,
	input				din_vld		,
	input	[15:0]		din			,
	output				dout_vld	,
	output	[15:0]		dout
);

	fir u_fir(
		.i_clk			(clk_250m	),
		.i_rst			(rst_250m	),
		.i_din_vld		(din_vld	),
		.i_din			(din		),
		.o_dout_vld		(dout_vld	),
		.o_dout			(dout		)
	);
endmodule

Verilog testbench编写

`timescale 1ns/1ps

module testbench();
	
	reg					clk_250m			;
	reg					rst_250m			;
	reg					din_vld				;
	reg		[15:0]		din					;
	wire				dout_vld			;
	wire	[15:0]		dout				;
	
	fir_top u_fir_top(
		.clk_250m		(clk_250m			),
		.rst_250m		(rst_250m			),
		.din_vld		(din_vld			),
		.din			(din				),
		.dout_vld		(dout_vld			),
		.dout			(dout				)
	);
	
	always #2.000		clk_250m=~clk_250m	;
	
	initial begin
		clk_250m=0;
		rst_250m=1;
		#200;
		rst_250m=0;
	end
	
	localparam			LEN	=	8192		;
	
	reg	[15:0]			sim_dat_buf[LEN-1:0];
	reg	[15:0]			dat_cnt				;
	integer				fp					;
	
	initial begin
		$readmemh("../matlab/sim_dat.bin", sim_dat_buf, 0, LEN-1);
		fp=$fopen("../matlab/sim_dat_out.bin", "w");
	end
	
	always@(posedge clk_250m)begin
		if(rst_250m)begin
			dat_cnt	<=0;
			din_vld	<=0;
			din		<=0;
		end
		else begin
			if(dat_cnt<LEN-1)begin
				dat_cnt	<=dat_cnt+1;
				din_vld	<=1;
				din		<=sim_dat_buf[dat_cnt];
			end
			else begin
				dat_cnt	<=0;
				din_vld	<=0;
			end
		end
	end
	
	reg		[11:0]				delay_cnt		;
	reg		[11:0]				write_cnt		;
	
	always@(posedge clk_250m)begin
		if(rst_250m)begin
			delay_cnt	<=0;
			write_cnt	<=0;
		end
		else begin
			if(delay_cnt<100)begin
				delay_cnt	<=delay_cnt+1;
			end
			else begin
				if(write_cnt<4096)begin
					$fwrite(fp,"%d\n",$signed(dout));
					write_cnt<=write_cnt+1;
				end
				else begin
					$fclose(fp);
				end
			end
		end
	end
endmodule

仿真结果

Xilinx FIR IP核设计滤波器
Xilinx FIR IP核设计滤波器
完整的工程和仿真文件工程下载文章来源地址https://www.toymoban.com/news/detail-451942.html

到了这里,关于Xilinx FIR IP核设计滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 窗函数法设计FIR数字滤波器

    一、   实验目的 1.1.1掌握用窗函数法设计FIR数字滤波器的原理和方法。 1.1.2熟悉线性相位FIR数字滤波器特性。 1.1.3了解各种窗函数对滤波特性的影响。 实验原理 窗函数设计法的基本原理是用有限长单位脉冲序列逼近与。由于往往是无限长序列,且是非因果的,所以用窗函数

    2024年02月05日
    浏览(37)
  • FIR数字滤波器设计——窗函数法

    本实验结合理论教材中FIR数字滤波器设计的教学内容中的窗函数设计法,学习和掌握窗函数法设计FIR数字滤波器的原理和实现过程,学习MATLAB设计FIR数字滤波器的相关函数的使用,掌握使用MATLAB设计FIR数字滤波器的过程与方法,从而加深对FIR数字滤波器常用指标和设计过程的

    2024年02月13日
    浏览(26)
  • 滤波器设计:FIR和IIR高、低、带通滤波器的实现及Matlab代码

    滤波器设计:FIR和IIR高、低、带通滤波器的实现及Matlab代码 引言: 滤波器作为信号处理中非常重要的一部分,广泛应用于数字信号处理、音频处理、图像处理等领域。本文主要讨论FIR(有限长冲激响应)和IIR(无限长冲激响应)两种常见滤波器的设计及其实现。 FIR滤波器

    2024年02月09日
    浏览(31)
  • 【Verilog 教程】7.3 Verilog 串行 FIR 滤波器设计

    串行 FIR 滤波器设计 设计说明 设计参数不变,与并行 FIR 滤波器参数一致。即,输入频率为 7.5 MHz 和 250 KHz 的正弦波混合信号,经过 FIR 滤波器后,高频信号 7.5MHz 被滤除,只保留 250KMHz 的信号。 串行设计,就是在 16 个时钟周期内对 16 个延时数据分时依次进行乘法、加法运算

    2024年02月06日
    浏览(36)
  • 【VHDL笔记】 FIR滤波器的设计(基于Quartus II软件)

    PS:此文章仅供参考 本文介绍了使用VHDL语言实现一个FIR滤波器的设计 以下是本篇文章正文内容,代码可供参考 通常数字滤波器常用于修正或改变时域中信号的属性。学过信号与系统的同学应该知道,最为普通的数字滤波器就是 线性时不变量(LTI)滤波器,线性时不变量滤波

    2023年04月13日
    浏览(39)
  • 基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。

    基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。 附: 1.配套quartus从MATLAB系数生成直到仿真成功说明文档。 2.配套仿真出波形(图1)的视频。      

    2024年02月10日
    浏览(40)
  • 解析使用FPGA逻辑实现FIR滤波器的几种架构

    有限脉冲响应(finite impulse response,FIR)数字滤波器         FIR滤波器的实质就是输入序列与系统脉冲响应的卷积,即:         其中,N为滤波器的阶数,也即抽头数;x(n)为第n个输入序列;h(n)为FIR滤波器的第n级抽头系数。         FIR滤波器基本结构如下:      

    2024年02月08日
    浏览(29)
  • STM32 FIR滤波器使用要点,STM32 DSP篇

    STM32搭配的CMSIS的DSP库已经写好了FIR,我们做的就是用好用稳定! 2.1使用MATLAB的Filter Designer生成滤波器的参数(直接在MATLAB命令中输入filterDesigner即可调出此工具,配置好参数后,选择Targets-Generate C header) 2.2调用arm_fir_init_f32或arm_fir_init_q31或arm_fir_init_q15等等视实际使用情况而

    2024年02月14日
    浏览(28)
  • 数字信号处理翻转课堂笔记17——窗函数法设计FIR滤波器及matlab实现

    对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著 (1)窗函数法设计FIR线性相位滤波器的原理; (2)加窗效应:加窗对滤波器特性的影响(难点); (3)典型窗函数及其主要特性和参数(重点); (4)窗函数法设计FIR滤波器的步骤(

    2024年01月16日
    浏览(41)
  • 基于FPGA的FIR滤波器的实现(5)— 并行结构FIR滤波器的FPGA代码实现

    并行结构,并行实现滤波器的累加运算,即并行将具有对称系数的输入数据进行相加,而后采用多个乘法器并行实现系数与数据的乘法运算,最后将所有乘积结果相加输出。这种结构具有最高的运行速度,因不需要累加运算,因此系数时钟频率可以与数据输出时钟频率保持一

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包