基于FPGA的FIR低通滤波器实现(附工程源码),matlab+vivado19.2+simulation

基于FPGA的FIR低通滤波器实现(附工程源码)


文章目录

  • 基于FPGA的FIR低通滤波器实现(附工程源码)
  • 前言
  • 一、matlab设计FIR滤波器,生成正弦波
    • 1.设计FIR滤波器
    • 1.生成正弦波.coe
  • 二、vivado
    • 1.fir滤波器IP核
    • 2.正弦波生成IP核
    • 3.时钟IP核设置
    • 4.顶层文件/测试文件代码
  • 三.simulation
  • 四.源代码


前言

本文为FPGA实现FIR滤波器仿真过程,附源代码。


提示:以下是本篇文章正文内容,下面案例可供参考

一、matlab设计FIR滤波器,生成正弦波

1.设计FIR滤波器

打开MATLAB在命令行窗口输入:
fadtool
回车后在滤波器设计界面设置滤波器参数如下
在这里插入图片描述
之后点击如图标志,设置定点,在菜单栏"目标(R)"出选择生成对应滤波器系数.COE文件
在这里插入图片描述

1.生成正弦波.coe

matlab代码如下

width=8;    %rom的位宽
depth=1024; %rom的深度
x=linspace(0,2*pi,depth);   %在一个周期内产生1024个采样点
y_sin=sin(x);    %生成余弦数据
y_sin=round(y_sin*(2^(width-1)-1))+2^(width-1)-1;   %将余弦数据全部转换为整数

fid=fopen('C:\Users\lys\Desktop\fir\sin.coe','w');   %创建.coe文件
fprintf(fid,'%d,\n',y_sin);   %向.coe文件中写入数据
fclose(fid);   %关闭.coe文件

二、vivado

1.fir滤波器IP核

设置参数如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.正弦波生成IP核

参数设置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.时钟IP核设置

参数设置如下:
在这里插入图片描述
在这里插入图片描述

4.顶层文件/测试文件代码

`timescale 1ns / 1ps

module fir_top(
    input clk,
    input rst_n,
    input [1:0]rom_sel,
    output [7:0]douta,
    output [7:0]fir_out_data
    );

    wire clk_10m;
    wire clk_1;
    wire clk_2;
    wire clk_3;
   
//    clk_wiz_0 instance_name(
//        .clk_out1(clk_1),     // output clk_out1
//        .clk_out2(clk_2),
//        .clk_out3(clk_3),
//        .clk_out4(clk_10m),
//        .reset(rst_n), // input resetn
//        .locked(),       // output locked
//        .clk_in1(clk)
//    );      // input clk_in1
    
  clk_wiz_0 instance_name
   (
    // Clock out ports
    .clk_out1(clk_1),     // output clk_out1
    .clk_out2(clk_2),     // output clk_out2
    .clk_out3(clk_3),     // output clk_out3
    .clk_out4(clk_10m),     // output clk_out4
    // Status and control signals
    .resetn(rst_n), // input reset
    .locked(),       // output locked
   // Clock in ports
    .clk_in1(clk));      // input clk_in1
    
    wire clk_rom;
    assign clk_rom = (rom_sel == 0)?clk_1:((rom_sel == 1)?clk_2:clk_3);
    
    reg [9:0]addra;
    always@(posedge clk_rom or negedge rst_n)begin
        if(!rst_n)
            addra <= 'd0;
        else
            addra <= addra + 1'b1;
    end
    
      
    rom_fir rom_inst (
        .clka(clk_rom),    // input wire clka
        .ena(1'b1),      // input wire ena
        .addra(addra),  // input wire [9 : 0] addra
        .douta(douta)  // output wire [7 : 0] douta
    );

    wire [7:0]fir_in_data;
    assign fir_in_data = douta - 'd128;

    fir fir_inst (
        .aclk(clk),                              // input wire aclk
        .s_axis_data_tvalid(clk_10m),  // input wire s_axis_data_tvalid
        .s_axis_data_tready(),  // output wire s_axis_data_tready
        .s_axis_data_tdata(fir_in_data),    // input wire [7 : 0] s_axis_data_tdata
        .m_axis_data_tvalid(),  // output wire m_axis_data_tvalid
        .m_axis_data_tdata(fir_out_data)    // output wire [7 : 0] m_axis_data_tdata
    );

endmodule

`timescale 1ns / 1ps

module fir_top_tb;

    reg clk;
    reg rst_n;
    reg [1:0]rom_sel;
    wire [7:0]douta;
    wire [7:0]fir_out_data;
    
    fir_top fir_top_inst(
        .clk    (clk),
        .rst_n  (rst_n),
        .rom_sel(rom_sel),
        .douta  (douta),
        .fir_out_data(fir_out_data)
    );
    
    initial clk = 0;
    always#10 clk = ~clk;
    
    initial begin
        rst_n = 0;
        rom_sel = 0;
        #200;
        rst_n = 1'b1;
        #200000;
        rom_sel = 1;
        #200000;
        rom_sel = 2;
        #200000;
        $stop;
    end
    
endmodule

三.simulation

只为测试功能,未考虑滤波器性能,所以效果不佳,结果实现如下
在这里插入图片描述

四.源代码

https://download.csdn.net/download/qq_42761380/88243346

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/87208.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux共享库基础及实例

共享库是将库函数打包成一个可执行文件&#xff0c;使得其在运行时可以被多个进程共享。 目标库 回顾下构建程序的一种方式&#xff1a; 将每个源文件编译成目标文件&#xff0c;再通过链接器将这些目标文件链接组成一个可执行程序。 gcc -g -c prog.c mod1.c mod2.c gcc -g …

2023国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线

目录 1.C/C在大数据时代的应用 1.1&#xff1a;C/C数据处理 1.2&#xff1a;C/C数据库 1.3&#xff1a;C/C图像处理和计算机视觉 1.3.1&#xff1a;导读 2.C/C程序员未来的发展路线 2.1&#xff1a;图导 1.C/C在大数据时代的应用 C/C在大数据时代中仍然是一种被广泛应用的编…

如何使用Wireshark进行网络流量分析?

如何使用Wireshark进行网络流量分析。Wireshark是一款强大的网络协议分析工具&#xff0c;可以帮助我们深入了解网络通信和数据流动。 1. 什么是Wireshark&#xff1f; Wireshark是一个开源的网络协议分析工具&#xff0c;它可以捕获并分析网络数据包&#xff0c;帮助用户深入…

Python(八十五)格式化字符串

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

MySQL 主从配置

环境 centos6.7 虚拟机两台 主&#xff1a;192.168.23.160 从&#xff1a;192.168.23.163 准备 在两台机器上分别安装mysql5.6.23&#xff0c;安装完成后利用临时密码登录mysql数据修改root的密码&#xff1b;将my.cnf配置文件放至/etc/my.cnf&#xff0c;重启mysql服务进…

jsp 图书销售系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 图书销售系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

SpringBoot 使用 Sa-Token 完成权限认证

一、设计思路 所谓权限认证&#xff0c;核心逻辑就是判断一个账号是否拥有指定权限&#xff1a; 有&#xff0c;就让你通过。没有&#xff1f;那么禁止访问&#xff01; 深入到底层数据中&#xff0c;就是每个账号都会拥有一个权限码集合&#xff0c;框架来校验这个集合中是…

异步I/O优化Python代理程序性能

作为一名爬虫程序员&#xff0c;你是否曾经遇到过需要处理大量网络请求的情况&#xff1f;你是否想要提高你的Python代理程序的性能&#xff0c;让它更快、更高效&#xff1f;别担心&#xff0c;我来给你分享一些关于异步I/O如何优化Python代理程序性能的实用知识。 首先&…

Haproxy 搭建集群实验

Haproxy HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;是免费、快速并且可靠的一种解决方案。 HAProxy非常适用于并发大&#xff08;并发达1w以上&#xff09;web站点&#xff0c;这些站点通常又需要会话保持或七层处理。 HAProxy的主要特性 可…

Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知

文章目录 PrometheusGrafanaAlertManager监控平台搭建新建SpringBoot项目为Prometheus提供指标新建项目&#xff0c;引入依赖新建接口&#xff0c;运行程序 推送指标到pushgateway 开始监控Grafana连接Prometheus数据源导入Grafana模板监控SpringBoot项目 邮件告警通知同系列文…

SAP‘s ECC6 EoL(End of Life) 支持服务声明 2027?

前言 一、EoL公告信息&#xff0c;2027&#xff1f; 二、继续使用ECC6.0的选项 1.引入第三方支持 2.S/4 HANA 3.SAP Business ByDesign 4.SAP Business One 总结 最新的公告是&#xff1a;2027年&#xff0c;SAP ECC 6.0将停止得到支持&#xff0c;并退出主流SAP支持&am…

PostgreSQL-研究学习-介绍与安装

PostgreSQL-预研 是个很厉害的数据库的样子 ψ(*&#xff40;ー)ψ 官方文档&#xff1a;http://www.postgres.cn/docs/12/ 总的结论和备注 PgSQL 支持对JSON的支持很强大&#xff0c;以及提供了很多数学几何相关的数据类型【例&#xff1a;点&#xff0c;线条&#xff0c;几何…

亿级短视频,如何架构?

说在前面 在尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常指导大家面试架构&#xff0c;拿高端offer。 前几天&#xff0c;指导一个年薪100W小伙伴&#xff0c;拿到字节面试邀请。 遇到一个 非常、非常高频的一个面试题&#xff0c;但是很不好回答&#xff0…

【Java 高阶】一文精通 Spring MVC - 转换器(五)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

table,设置 数据相同时, 合并列

<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…

红日靶场(一)vulnstack1 渗透过程分析

文章目录 环境搭建信息收集PhpMyAdmin 后台 Getshellinto outfileMysql日志文件写入shell CS后渗透MSF后渗透知识补充nmap参数分类参数速查表 dirsearch 环境搭建 ip段设置 kali (coleak)&#xff1a;192.168.145.139 Windows 7 (stu1)&#xff1a;192.168.10.181、192.168.1…

Java后端:html转pdf实战笔记

1、htmltopdf有什么用? htmltopdf 是一款基于wkhtmltopdf技术的html转pdf文档java类库,支持html转pdf和url转pdf。 2、什么是wkhtmltopdf wkhtmltopdf是一个用webkit网页渲染引擎开发的用来将html转成 pdf的工具,可跟多种脚本语言进行集成来转换文档,有windows、linux等平…

云南森林火灾vr消防模拟安全演练系统训练消防员火灾和事故的适应和应对能力

据统计,每一场破坏性地震发生后,会引发次生的灾害,而火灾是其中之一。导致火灾的原因,推测是地震时使供电线路短路,引燃易燃物,火灾就随即发生。所以,在日常生活中,定期的消防演练还是非常必要的, VR消防&#xff0c;是VR公司深圳华锐视点利用VR虚拟现实技术&#xff0c;将VR和…

发力服务业务,龙湖集团半程领跑赢在“智慧”

成立三十载&#xff0c;龙湖集团一直是房地产行业“特立独行”的存在。 一方面&#xff0c;龙湖在对外战略方面长期量入为出&#xff0c;从不背上过重的“包袱”。 不久前&#xff0c;一则消息引发市场关注&#xff1a;龙湖集团提前偿还17亿元债务&#xff0c;已基本全部还清…
最新文章