首页 > 其他分享 >Verilog实现FIR低通滤波器,vivado平台开发,包含testbench

Verilog实现FIR低通滤波器,vivado平台开发,包含testbench

时间:2023-05-05 23:12:31浏览次数:33  
标签:FIR 滤波器 FPGA 低通滤波器 Verilog 信号 testbench 冲激响应

1.算法仿真效果

vivado2019.2仿真结果如下:

 

 

 

 

2.算法涉及理论知识概要

       FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

        在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足香农采样定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。

(1) 系统的单位冲激响应h (n)在有限个n值处不为零

(2) 系统函数H(z)在|z|>0处收敛,极点全部在z = 0处(因果系统)

(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。

设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 ≤ n ≤N —1,则滤波器的系统函数为

H(z)=∑h(n)*z^-k

就是说,它有(N—1)阶极点在z = 0处,有(N—1)个零点位于有限z平面的任何位置。

 

 

 

 

3.Verilog核心程序

本设计分为三级流水线完成

 

第一级,将输入信号延时

 

第二级,将输入信号与滤波系数相乘

 

第三级,将所有信号相加。

reg [15:0]	delay_pipeline [0:8];	 
reg [23:0]	product 			[0:8];	 
reg [26:0]	sum;							 
 
 
	
always@(posedge clk or negedge rst_n) begin
 
	if(!rst_n) begin
	
		delay_pipeline[0] <= 0;
		delay_pipeline[1] <= 0;
		delay_pipeline[2] <= 0;
		delay_pipeline[3] <= 0;
		delay_pipeline[4] <= 0;
		delay_pipeline[5] <= 0;
		delay_pipeline[6] <= 0;
		delay_pipeline[7] <= 0;
		delay_pipeline[8] <= 0;
	
	end
		
		
	else if(clk_en) begin
		
		delay_pipeline[0] <= filter_in;
		delay_pipeline[1] <= delay_pipeline[0];
		delay_pipeline[2] <= delay_pipeline[1];
		delay_pipeline[3] <= delay_pipeline[2];
	   delay_pipeline[4] <= delay_pipeline[3];
		delay_pipeline[5] <= delay_pipeline[4];
		delay_pipeline[6] <= delay_pipeline[5];
		delay_pipeline[7] <= delay_pipeline[6];
	   delay_pipeline[8] <= delay_pipeline[7];
	
	end
end

  

标签:FIR,滤波器,FPGA,低通滤波器,Verilog,信号,testbench,冲激响应
From: https://www.cnblogs.com/51matlab/p/17375641.html

相关文章

  • FirewallD入门手册
    导读FirewallD是iptables的一个封装,可以让你更容易地管理iptables规则-它并不是iptables的替代品。虽然iptables 命令仍可用于FirewallD,但建议使用FirewallD时仅使用FirewallD 命令。 FirewallD是iptables的前端控制器,用于实现持久的网络流量规则。......
  • UVA 12177 First Knight
    (提醒:原题面是\(m\)行\(n\)列,这里改成了\(n\)行\(m\)列)首先很好想到设\(dp_{u,v}\)为\((u,v)\)的期望步数\(dp_{u,v}=\begin{cases}\sum_{i=1}^4dp_{u+du_i,v+dv_i}\timesp_i&(u\not=n\operatorname{or}v\not=m)\\0&(u=n\operator......
  • MFC-CListCtrl-GetFirstSelectedItemPosition获取第一个选定项的位置
     POSITIONpos=mylist4.GetFirstSelectedItemPosition();//获取第一个选定项的位置/*返回值:成功返回行号;NULL,如果项未被选定*/str.Format(_T("pos=%d\r\n"),pos);OutputDebugString(str);   ......
  • [FireDAC][Phys]-330. Cannot generate update query. Update table undefined.
    在正式的查询SQL前,用了临时表存储查询条件,数据正常加载,结果编辑、保存时报错了代码是老早前写,现在看,其实完全可以直接用存储过程的结果,也不用中间再转一次,这个异常也就可以避过去了 ......
  • FIRE周年录
    FIRE周年录2023年4月22号,FIRE整一周年了。 我以为周年日是在27号,可能是和租房日期搞混了吧。 回想去年FIRE的因由:高昂的房价让人心灰意冷,转而考虑“躺平”;作为打工人辛辛苦苦挣钱,工资没到手就被划走了一部分:超过一年伙食费的税,我不相信会靠谱的各种“保险”,而权贵富豪们......
  • 防火墙 firewalld 的常用命令
    目录导航  基本用法  systemctl使用  配置firewalld-cmd  端口的开放关闭操作  对某个IP开放多个端口  firewalld是Linux中最长用的防火墙之一。初次配置后,后面基本没有什么多大的变动。但是想再次想要添加对应的防火墙断开,命令又忘记了。现对常用命令做一简单......
  • 【解决方法】正常游览Flash页面,解决主流游览器的不支持问题(如Edge,Firefox)
    环境:工具:Firefox84版本或者360游览器-某特殊版本系统版本:Windows10问题描述:描述:进入某需要Flash插件的管理网站,使用edge等最新主流游览器均无法调用Flash,开启IE模式也没有做用,网上的其他教程也因为时效性已经无法生效。问题解释:解释:各大主流游览器在2020年基本都......
  • oracle 分析函数 FIRST_VALUE、LAST_VALUE
    用SCOTT/TIGER登录。FIRST_VALUE、LAST_VALUE是两个分析函数。返回结果集中排在第一位和最后一位的值。使用FIRST_VALUE:SELECTDEPTNO,JOB,SUM(SAL),FIRST_VALUE(SUM(SAL))OVER(PARTITIONBYDEPTNOORDERBYSUM(SAL))FROMEMPGROUPBYDEPTNO,JOBORDERBYDEPTNO,JOB;......
  • linux防火墙查看状态firewall、iptable
    原文地址blog.csdn.netiptables防火墙1、基本操作`1.#查看防火墙状态2.serviceiptablesstatus4.#停止防火墙5.serviceiptablesstop7.#启动防火墙8.serviceiptablesstart10.#重启防火墙11.serviceiptablesrestart13.#永久......
  • Winform使用EFCore的CodeFirst(注入方式)
    1、新建项目使用vs创建一个winform的项目,这里就不演示了。2、拉取nuget包获取配置:Microsoft.Extensions.Configuration.Json注入:Microsoft.Extensions.DependencyInjectionmysqlEF:MySql.EntityFrameworkCore3、创建appsettings.json配置文件在项目......