基于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 / 1psmodule 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_in1clk_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_in1wire 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)beginif(!rst_n)addra <= 'd0;elseaddra <= addra + 1'b1;endrom_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 / 1psmodule 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 beginrst_n = 0;rom_sel = 0;#200;rst_n = 1'b1;#200000;rom_sel = 1;#200000;rom_sel = 2;#200000;$stop;endendmodule

三.simulation

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

四.源代码

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【30天熟悉Go语言】11 数组的全方位使用与解析

作者&#xff1a;秃秃爱健身&#xff0c;多平台博客专家&#xff0c;某大厂后端开发&#xff0c;个人IP起于源码分析文章 &#x1f60b;。 源码系列专栏&#xff1a;Spring MVC源码系列、Spring Boot源码系列、SpringCloud源码系列&#xff08;含&#xff1a;Ribbon、Feign&…

OLED透明屏水波纹效果:打造独特的显示体验

OLED透明屏水波纹效果是一种独特的显示技术&#xff0c;通过模拟水波纹的视觉效果&#xff0c;为用户带来更加生动逼真的观感。 根据市场调研报告显示&#xff0c;OLED透明屏水波纹效果已经在广告、游戏和商业领域得到广泛应用&#xff0c;为品牌提供了新的展示方式&#xff0…

根据源码,模拟实现 RabbitMQ - 网络通讯设计,自定义应用层协议,实现 BrokerServer (8)

目录 一、网络通讯协议设计 1.1、交互模型 1.2、自定义应用层协议 1.2.1、请求和响应格式约定 ​编辑 1.2.2、参数说明 1.2.3、具体例子 1.2.4、特殊栗子 1.3、实现 BrokerServer 1.3.1、属性和构造 1.3.2、启动 BrokerServer 1.3.3、停止 BrokerServer 1.3.4、处…

【数据分析】波士顿矩阵

波士顿矩阵是一种用于分析市场定位和企业发展战略的管理工具。由美国波士顿咨询集团&#xff08;Boston Consulting Group&#xff09;于1970年提出&#xff0c;并以该集团命名。 波士顿矩阵主要基于产品生命周期和市场份额两个维度&#xff0c;将企业的产品或业务分为四个象限…

LAMP架构详解+构建LAMP平台之Discuz论坛

L A M P 一、LAMP架构简介1.1 LAMP架构的组成1.2 LAMP各组件的主要作用1.3 LAMP工作过程1.4 CGI和fastcgi 二、搭建Discuz论坛的思路三、编译安装Apache httpd3.1 前置准备3.2 移动apr包 apr-util包到安装目录中&#xff0c;并切换到 httpd-2.4.29目录中3.3 编译安装3.4 建立软…

dvwa xss通关

反射型XSS通关 low难度 选择难度&#xff1a; 直接用下面JS代码尝试&#xff1a; <script>alert(/xss/)</script>通关成功&#xff1a; medium难度 直接下面代码尝试后失败 <script>alert(/xss/)</script>发现这段代码直接被输出&#xff1a; 尝试…

开始MySQL之路——外键关联和多表联合查询详细概述

多表查询和外键关联 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。例如&#xff0c;一个商城项目就需要分类表&#xff0c;商品表&#xff0c;订单表等多张表。且这些表的数据之间存在一定的关系&#xff0c;接下来我们将在单表的基础上&#xff0c;一起学习多表…

Qt --- 自定义提示框 类似QMessagebox

QMessageBox::information(NULL, QString("title"), QString("I am information")); 以下是自定义提示框的代码&#xff0c;有图有真相&#xff01;提示框大部分都采用模态的形式&#xff0c;关于模态也不再多提&#xff01;所以父类为QDialog&#xff0c;…

若依移动端Ruoyi-App 项目的后端项目入门

后端项目运行 运行报错 Error creating bean with name sysConfigServiceImpl: Invocation of init method failed 数据库创建了。 代码连接数据库地方了也匹配上了。但是还是报错。 分析 &#xff1a; 想起来我电脑从来没有安装过redis 下载安装redis到windows 链接&…

【Mac】编译Spring 源码和Idea导入

今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。 笔者编译环境如下&#xff1a; Spring版本&#xff1a;5.28 https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE …

人工智能项目集合推荐(数据集 模型训练 C++和Android部署)

人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …

【C++初阶】模拟实现list

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

Consul的简介与安装

1、Consul简介 Consul是一套开源的分布式服务发现和配置管理系统&#xff0c;由HashiCorp公司用Go语言开发&#xff0c;Consul提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以一起使用以构建全方位的服…

Docker容器与虚拟化技术:GitHub账户注册

目录 一、实验 1.GitHub 一、实验 1.GitHub &#xff08;1&#xff09;GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。 &#xff08;2&#xff09;官网 GitHub: Let’s build from here …

DQL语句的用法(MySQL)

文章目录 前言一、DQL语句间接和语法1、DQL简介2、DQL语法 二、DQL语句使用1、基础查询&#xff08;1&#xff09;查询多个字段&#xff08;2&#xff09;为字段设置别名&#xff08;3&#xff09;去除重复记录 总结 前言 本文主要介绍SQL语句中DQL语句的功能和使用方法&#…

本地私有仓库、harbor私有仓库部署与管理

本地私有仓库、harbor私有仓库部署与管理 一、本地私有仓库1.本地私有仓库简介2.搭建本地私有仓库3.容器重启策略介绍 二、harbor私有仓库部署与管理1.什么是harbor2.Harbor的特性3.Harbor的构成4.harbor部署及配置5.客户端测试 三、Harbor维护1.创建2.普通用户操作私有仓库3.日…

opencv-全景图像拼接

运行环境 python3.6 opencv 3.4.1.15 stitcher.py import numpy as np import cv2class Stitcher:#拼接函数def stitch(self, images, ratio0.75, reprojThresh4.0,showMatchesFalse):#获取输入图片(imageB, imageA) images#检测A、B图片的SIFT关键特征点&#xff0c;并计算…

C#,《小白学程序》第四课:数学计算

1 文本格式 /// <summary> /// 《小白学程序》第四课&#xff1a;数学计算 /// 这节课超级简单&#xff0c;就是计算成绩的平均值&#xff08;平均分&#xff09; /// 这个是老师们经常做的一件事。 /// </summary> /// <param name"sender"></…

【操作记录】CLion 中引入 Gurobi 并使用 C++ 编程

文章目录 一、前言二、具体操作2.1 创建项目2.2 修改编译工具2.3 修改 CMakeLists.txt2.4 修改 main.cpp2.5 运行测试 一、前言 虽然C编程大部分人都会选择使用VS&#xff0c;但是作为 IDEA 的长期用户&#xff0c;我还是比较习惯 JetBrains 风格的编译器&#xff0c;所以就选…

YARN资源管理框架论述

一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性&#xff0c;并消除早期MapReduce框架中的JobTracker性能瓶颈&#xff0c;开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能&#xff08;资源管理和作业调度/监控&#xff09;分离&…