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

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

1.算法仿真效果
vivado2019.2仿真结果如下:

49d9220dd2d35d382a485d13e7ab00d1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
7cda6b36815a5e024f5a49a2edcab36a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

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 [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
相关文章
|
人工智能 小程序 前端开发
【uniapp小程序】uploadFile文件上传
【uniapp小程序】uploadFile文件上传
2060 0
|
SQL XML Oracle
达梦(DM)4、SpringBoot集成MyBatisPlus+达梦数据库(DM)
最近在做一个政府项目,由于项目之前使用的 MySQL 数据库,为了适配国产化,需要将 MySQL 换成 达梦数据库(DM),本次我选择了达梦数据库8(DM8),以下是切换过程
3680 0
达梦(DM)4、SpringBoot集成MyBatisPlus+达梦数据库(DM)
|
资源调度 监控 数据处理
【Flink】Flink集群有哪些角色?各自有什么作用?
【4月更文挑战第18天】【Flink】Flink集群有哪些角色?各自有什么作用?
|
9月前
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
基于电压矢量变换的锁相环simulink建模与仿真
本课题基于电压矢量变换的锁相环(PLL)在MATLAB2022a中进行Simulink建模与仿真。该模型通过ab坐标变换和低通滤波,实现对三相电网电压的快速准确锁相,尤其在电压不平衡条件下表现优异。系统仿真结果显示,PLL能有效提取基波正序电压分量,适用于负序电压前馈控制及双序电流环控制策略。相比传统单相PLL,该方法更稳健地应对电网不平衡和频率突变,广泛应用于电力质量监测、三相PFC电路控制及分布式发电系统的并网控制等领域。
|
缓存 算法 大数据
倚天710规模化应用 - 性能优化 - 软件预取分析与优化实践
软件预取技术是编程者结合数据结构和算法知识,将访问内存的指令提前插入到程序,以此获得内存访取的最佳性能。然而,为了获取性能收益,预取数据与load加载数据,比依据指令时延调用减小cachemiss的收益更大。
|
机器学习/深度学习 人工智能 安全
装机安全深度解析:从细节入手,筑牢数字世界的防护堤坝
装机安全是计算机使用过程中不可忽视的一环。它关乎到计算机的稳定运行、数据的保护以及个人隐私的维护。为了应对装机过程中的安全挑战,用户需要采取一系列措施来确保计算机的安全性和稳定性。这些措施包括硬件组装的安全措施、系统设置与软件安装的安全策略、数据备份与恢复计划以及安全意识与培训等。同时,用户还可以借鉴一些装机安全的最佳实践来提高计算机的安全性。展望未来,我们可以期待智能化的安全管理系统、更强大的加密技术以及更完善的法律法规为计算机安全提供更有力的保障。让我们从细节入手,共同筑牢数字世界的防护堤坝!
|
存储 Python
如何使用Python实现“猜数字”游戏
本文介绍了使用Python实现“猜数字”游戏的过程。游戏规则是玩家在给定范围内猜一个由计算机随机生成的整数,猜对则获胜。代码中,首先导入random模块生成随机数,然后在循环中获取玩家输入并判断大小,提供猜小、猜大提示。通过增加猜测次数限制、难度选择、优化输入提示和图形化界面等方式可优化游戏。这篇文章旨在帮助初学者通过实际操作学习Python编程。
1150 2
|
Java BI 调度
在Spring Boot中实现多线程任务调度
在Spring Boot中实现多线程任务调度