fpga实操训练(signal tap调试)

news2024/11/19 19:32:58

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        编写软件的同学都知道,如果需要调试软件的话,除了要学会打印信息日志之外,另外一个很重要的方面,就是学会使用调试软件的各个命令操作。windows上面的调试软件一般是visual studio,linux上面的调试软件则是gdb。调试软件基本不占用什么资源,对于简单的bug、复杂的bug都能够达到很好的调试效果。

        那么今天,对于fpga调试也是一样的,需要学习对应的调试软件。特别对于fpga模块内部的逻辑,如果需要查看它们的信号逻辑,就要用到sigal tap这个软件了。这是quartus自带的调试工具,不需要额外安装。它的基本原理,就是把需要调试的信号先用ram保存下来,再用jtag送出来供开发者分析。所以,在这过程当中,可能会占用fpga上的ram资源,另外整个工程需要重新编译、综合,比较费时费力。

        为了说明怎么使用signal tap软件,可以找一个demo演示一下,

module led_test(clk, rst, led);

input clk;
input rst;
output led;


wire clk;
wire rst;
reg[3:0] led;

reg[31:0] count;
wire[7:0] data;


always @(posedge clk or negedge rst)
	if(!rst)
		count <= 32'd0;
	else if(count == 32'd4999_9999)
		count <= 32'd0;
	else
		count <= count + 1'b1;


always@(posedge clk or negedge rst)
	if(!rst)
		led <= 4'd0;
	else if(count == 32'd4999_9999)
		led <= ~led;

endmodule


        首先有这么一个verilog代码,先简单编译、综合下,确保没有问题,再进行引脚bind,

         一切准备妥当,就可以开始准备signal tap的配置了。选择“Tools”-》“Signal Tap Logic Analyzer”,

         不出意外,可以看到这样的界面,

         这就是signal tap的界面。可以先把jtag配置下,

         接着在右侧Signal Configuration里面选择clk信号,注意这里的Filter选择pre-synthesis,

         下面就是在左下侧“Setup”窗口中添加需要查看验证的信号,这里添加count和led,选择insert。

         这一切都准备好了,界面是这样的,

         走到这一步,下面就可以退出这个窗口。系统会提示你,是否需要保存stp文件,保存即可,

         接着,会继续提示你,是否把stp文件添加到当前工程,保存即可,

         不出意外,你会看到stp文件已经被添加到当前工程当中。

         前面,我们讨论过,signal tap会占用fpga片上资源的。待会重新综合完之后,我们就可以看到结果了。和之前综合操作一样,重新综合一下,报告如下所示,

         上面这是添加了stp文件之后综合的结果。可以发现,logic elements和memory bits都使用了一些。可以对比下,如果没有stp文件是什么样的情形。只需要单击“Assignments”-》“Setting”-》“Signal Tap Logic Analyzer”,去除enable之前的小箭头,

        综合后的结果是这样的,

         当然,这里需要演示如何使用signal tap,所以我们还是要打开这个开关的。等综合好生成sof文件之后,就可以烧入了。烧入过程和之前其他项目的烧入是一样,没有特殊之处。

         重新打开signal tap窗口,可以双击左侧stp2.stp文件,然后按下F6,“Data”窗口就会显示相关信号,

        可以看到信号一直在采集。可以按下Esc,先停止采集,修正一下采集的触发条件,比如将LED修正为上升沿触发,选择上图中的“Setup”按钮,选中信号,右击按钮,

         重新按下F6,就会看到这样的采集信号,

        这样看上去信号就比较有意义了。注意,在这过程中开发板还是一直工作运行的,这和软件调试不一样的。将鼠标移动到信号上面,左击是放大,右击是缩小。 剩下来的工作,就是需要自己花时间慢慢掌握,变得比较熟练起来。

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

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

相关文章

http 库的服务端实现

前言 net/http 库的客户端实现(上) net/http 库的客户端实现(下) net/http 库的服务端实现 上两篇文章介绍了 http 客户端的实现&#xff0c;这篇文章看一下服务端的实现 服务端 使用 net/http 库可以快速搭建HTTP服务&#xff0c;HTTP服务端主要包含两部分&#xff1a; …

5G无线技术基础自学系列 | 5G网络切换问题分析

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线通信的最大特点在于其具有移动性&a…

提高搜狗PR最好的方法与搜狗PR权重在线查询

搜狗PR是什么? 搜狗PR值全称为搜狗PageRank(网页级别)&#xff0c;是搜狗用于用来标识网页的等级、重要性的一种方法&#xff0c;是搜狗用来衡量一个网站的好坏的重要标准之一。 搜狗在揉合了诸如Title标识和Keywords标识等所有其它因素之后&#xff0c;通过PageRank来…

react学习

1. React概述 1.1 什么是react&#xff1f; React 是一个用于构建用户界面的 JavaScript 库 用户界面:HTML页面(前端) React 主要用来写HTML页面&#xff0c;或构建Web应用如果从 MVC 的角度来看&#xff0c;React 仅仅是视图层(V)&#xff0c;也就是只负责视图的染&#xff0…

Day44——Dp专题

文章目录子序列问题27.最长递增子序列28、最长连续递增序列29、最长重复子数组30、最长公共子序列31、不相交的线32、最大子序和33、判断子序列34、不同的子序列35、两个字符串的删除操作36、编辑距离37、回文子串38、最长回文子序列动态规划总结篇背包问题系列股票系列子序列系…

java论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码

ssm开发的论坛系统&#xff0c;用户注册后可以发布帖子&#xff0c;其他人可以评论回复点赞评论和点赞回复&#xff0c;用户可以在个人中心管理自己的帖子&#xff0c;以及查看自己对他人的回复&#xff0c;和他人对自己的回复。 演示视频&#xff1a; https://www.bilibili.c…

图(Graph)的定义

图(Graph)的定义 文章目录图(Graph)的定义●图的形式化定义:G (V,E)●无向图和有向图的表示形式:● 有向图和无向图的定义●抽象数据类型定义ADT●图形结构属于复杂的非线性结构● 图由顶点的集合和边的集合构成 ●图的形式化定义:G (V,E) • 集合V(vertex):顶点的有限集合,…

多线程基础入门

文章目录前言一、认识线程&#xff08;一&#xff09;概念1.线程是什么2.为啥要有线程&#xff08;轻量级进程&#xff09;为什么线程比进程更轻量经典面试题&#xff1a;谈谈进程和线程的区别和联系3.线程的结构&#xff08;二&#xff09;第一个多线程程序&#xff08;三&…

Java中的自旋锁,手动实现一个自旋锁

自旋锁 CAS是实现自旋锁的基础&#xff0c;CAS利用CPU指令保证了操作的原子性&#xff0c;已达到锁的效果。自旋是指尝试获取锁的线程不会立即阻塞&#xff0c;而是采用循环的方式去尝试获取锁&#xff0c; 当线程发现锁被占用时&#xff0c;会不断循环判断锁的状态&#xff0…

计算机网络最新复习【太原理工大学】

课后题 Word 版&#xff0c;提取码&#xff1a;5201https://pan.baidu.com/s/13xzx8qr8Mnh4TWTS_dEYxA 目录 一、题型 二、考点 一、题型 1. 选择题 40 个&#xff0c;每个 1 分&#xff0c;共 40 分。&#xff08;大部分可一眼看出答案&#xff09; 2. 填空题 15 个&…

最长上升子序列优化(贪心+二分)(超级详细的讲解)

最长上升子序列优化&#xff08;贪心二分一、回顾1、问题描述2、动规代码弊端二、优化1、算法优化2、代码实现一、回顾 1、问题描述 2、动规代码弊端 我们之前的动规代码的时间复杂度是O(n2)O(n^2)O(n2)。如果大家还不知道动态规划的逻辑的话&#xff0c;建议大家先去看一下动…

我国用电信息采集系统行业应用需求及市场容量分析 现6省上线运行

用户用电信息采集系统是通过对配电变压器和终端用户的用电数据的采集和分析&#xff0c;实现用电监控、推行阶梯定价、负荷管理、线损分析&#xff0c;最终达到自动抄表、错峰用电、用电检查&#xff08;防窃电&#xff09;、负荷预测和节约用电成本等目的。建立全面的用户用电…

VuePress初学之利用模板theme创建一个个人博客网站

目录前言官方文档创建项目创建目录安装VuePress初始化项目创建文档修改package.json运行项目修改README.md的编码显示官方默认主题创建.vuepress文件创建config.js修改README.md补充logo资源运行效果更多默认主题配置开源主题vuepress-theme-reco安装脚手架初始化项目安装npm运…

为什么说L2毫秒接口的应用比较广泛?

和其它的数据接口一样&#xff0c;这L2毫秒接口也起到了一个媒介的作用&#xff0c;将所有的股票信息都传递到了另外一个软件上。因为市场上的股票种类很多&#xff0c;所以每一种股票都具有其特有的信息&#xff0c;是进行股票买卖的基础。 为什么说L2毫秒接口的应用比较广泛…

MCU-51:矩阵键盘

题目一、矩阵键盘介绍1.1 矩阵键盘1.2 扫描的概念二、编程2.1 LCD屏显示“HelloWord”2.2 矩阵键盘程序三、矩阵键盘应用一、矩阵键盘介绍 1.1 矩阵键盘 在键盘中按键数量较多时&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式 采用逐行或逐列的“扫描…

Flowable学习笔记(一):SpringBoot项目整合Flowable

1.基于k8s部署Mysql 参考&#xff1a;k8s部署mysql 我安装是去掉了卷挂载。安装过程可能出现磁盘容量不够&#xff0c;可以通过df -h查看。 镜像下载得比较慢&#xff0c;可以先用docker拉取镜像。 2.搭建SpringBoot项目 (1)搭建maven项目&#xff0c;pom.xml依赖如下&am…

一文带你深入理解【Java基础】· 网络编程(下)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

我国农村水利水电行业项目投资、水电站建设及装机容量情况分析

一、农村水利水电行业投资情况 根据水利部数据显示&#xff0c;2020年农村水利水电累计下达投资428.63亿元&#xff08;其中中央投资214.84亿元&#xff0c;地方投资213.79亿元&#xff09;。其中&#xff0c;中央预算内投资97.75亿元&#xff0c;中央财政水利发展资金100.96亿…

【MindStudio训练营第一季】基于U-Net网络的图像分割的MindStudio实践

前情说明 本作业基于Windows版MindStudio 5.0.RC3&#xff0c;远程连接ECS服务器使用&#xff0c;ECS是基于官方分享的CANN6.0.RC1_MindX_Vision3.0.RC3镜像创建的。 基于ECS&#xff08;Ascend310&#xff09;的U-Net网络的图像分割 1. U-Net网络介绍&#xff1a; U-Net模…

第12章_数据库其它调优策略

第12章_数据库其它调优策略 1.数据库调优的措施 1.1调优的目标 尽可能节省系统资源&#xff0c;以便系统可以提供更大负荷的服务。(吞吐量更大)。合理的结构设计和参数调整&#xff0c;以提高用户操作响应的速度。(响应速度更快)减少系统的瓶颈&#xff0c;提高MySQL数据库整…