verilog学习笔记- 3)SignalTap II 软件的使用

news2024/11/16 23:38:03

目录

SignalTap II简介:

SignalTap II使用:


SignalTap II简介:

SignalTap II 全称 SignalTap II Logic Analyzer,是第二代系统级调试工具,可以捕获和显示实时信号,是 一款功能强大且极具实用性的 FPGA 片上调试工具软件。SignalTap II 可以选择要捕获的信号、捕获的触发 方式以及捕获的数据样本深度,实时数据提供给工程师帮助debug。

传统的 FPGA 板级调试是由外接的逻辑分析仪连接到 FPGA 的控制管脚,然后将内部信号引出至引脚 IO 上,进行板级调试。这种方法的缺点是首先我们需要一个逻辑分析仪,而逻辑分析仪一般价格都比较昂贵,且对于需要测试几十个引脚的时候,选择使用外接的逻辑分析仪就比较繁琐了。SignalTap II 在线逻辑 分析仪克服了以上所有的缺点,其借用了传统逻辑分析仪的理念以及大部分的功能,将这些功能植入到 FPGA 的设计当中,编程后存放在电路板的目标器件中,使用 FPGA 资源来构成嵌入式逻辑分析仪。SignalTap II不需要将待测信号引出至I/O上,也不需要电路板走线或者探点,当然更不需要外部的逻辑分析仪的花费, 它集成在 Altera 公司提供的 FPGA 开发工具 Quartus II 软件中。


SignalTap II使用:

在 Quartus 软件界面的菜单栏中,点击【Tool】→【SignalTap II Logic Analyzer】操作界面如图 

SignalTap 软件界面

接下来我们添加需要观察的信号,双击节点列表和触发条件的空白区域

我们在节点发现器中首先将 Filer 设置为 SignalTap II:pre-synthesis,再点击【List】按钮,此时 Nodes Found 一栏就会出现我们工程代码中的信号,然后我们将 counter、sys_rst_n 和 led 添加至右侧 Selected Nodes 一栏 中,添加方法是直接双击 Node Found 一栏的信号名,如果需要删除的话,可以直接双击 Selected Nodes 一 栏的信号名,接下来我们点击【OK】按钮,完成信号的添加 

这里需要注意的是,如果我们发现添加的信号变成了红色,或者有些 reg 与 wire 定义的信号可以观察, 有些不可以,这是因为 reg 与 wire 被 Quartus 软件优化掉了,导致无法使用 SignalTap 观察。这里有两种方 法解决这个问题,第一种就是将 reg 与 wire 信号改成输出端口信号,但这种方式较为繁琐;第二种方法就 是在待观察的 wire 信号旁边加上/*synthesis keep*/;对于 reg 信号则加/*synthesis noprune*/,如下所示:

添加完信号之后,接下来我们在信号配置页面中,添加采样时钟,添加方法如图

在信号配置页面 Clock 一栏中,点击右侧的【...】按钮,点击后弹出的页面如图

这个页面和添加待观察信号的页面一样,我们将系统时钟(sys_clk)作为采样数据的时钟添加至 Selected Nodes 一栏中,然后点击【OK】按钮。接下来需要设置采样的深度,我们在信号配置页面 Sample depth 一 栏中将采样深度设置为 2K,这里采样深度的值越大,所能观察信号的时间范围也就越长,但同时所消耗的 FPGA RAM 资源也就越大,设置后的界面如图

接下来保存我们的分析文件,点击 SignalTap 软件菜单栏的【File】→【Save】,如图

我们将分析文件保存在工程所在路径 par 文件夹下,然后点击【保存】按钮。接下来会弹出是否将分析 文件添加至工程的页面,我们直接点击【YES】

我们返回到 Quartus 软件界面,在工程文件导航窗口可以看到 File 一栏多了一个 stp1.stp 文件,这个文 件就是我们刚才添加至工程中的分析文件,如图所示。接下来我们需要对工程进行全编译

工程编译完成后,首先将 USB Blaster 下载器一端连接电脑,另一端连接开发板的 JTAG 接口,然后连 接开发板的电源线,并打开电源开关。接下来我们重新回到 SignalTap 软件界面,我们在JTAG 链配置窗口 中点击【Setup】找到 USB-Blaster[USB-0],这时我们在点击【Scan Chain】则会出现如图

从该图中我们可以看出,SignalTap 软件已经成功识别到我们的下载器和开发板芯片(如果没有识别到, 请检查电脑和开发板是否通过 USB Blaster 连接完成,并且开发板电源已经打开)。接下来我们给开发板下 载程序,这里需要注意的是,SignalTap 软件也是可以给开发板下载程序的,同样也是在 JTAG 链配置页面 的 SOF Manager 一栏中,点击【...】按钮,选择工程所在路径 output_files 文件夹下的 flow_led.sof,选中后 点击 Open 按钮,如图

下载程序按钮下载程序,程序下载完后,点击 SignalTap 软件工具栏中的开始分析图标

上图中第一个图标表示只运行一次;第二个图标表示自动运行,也就是会一直刷新采样的波形;第三 个图标表示停止运行。我们点击第一个开始运行图标即可采集到数据

可以通过点击和右击波形图的方式进行放大和缩小,数据默认是以 16 进 制显示的,为了方便观察数据,我们将格式改成无符号的十进制。操作方式是选中 counter 信号名

右击选择【Bus Display Format】→【Unsigned Decimal】

SignalTap 软件支持通过设置触发方式来采集波形,在 SignalTap 信号列表 Setup 一栏中,右击 sys_rst_n 信号的 Trigger Conditions 方框内的图标。

Don‘t Care 表示不关心,即不设置触发方式;Low 表示低电平触发;Falling Edge 表示下 降沿触发;Rising Edge 表示上升沿触发;High 表示高电平触发;Either Edge 表示双沿触发。由于按键复位 信号在未按下是高电平,按下之后变为低电平,所以这里设置为下降沿触发方式,然后点击【Data】一栏, 返回到波形显示页面。

再次点击工具栏中的运行一次的工具按钮,SignalTap 软件界面如图

这时我们可以看到,由于 SignalTap 软件一直等不到复位按键按下,所以它也一直不能触发,直到我们 按下复位按键之后,它便能采样到下降沿,从而进行触发。这里我们按下复位按键。

这时我们可以看到,SignalTap 软件进行了触发,然后我们分析波形可以看到,当复位按键按下以后, counter 计数器变为 0,led 变为初始状态 1h(2‘b01),这和我们的代码是一致的。这里我们需要说明的是 SignalTap 支持的触发条件除电平、边沿等触发条件外,也可以对 counter 计数器设置具体的值来触发,大家 可以试一试。如果两个或者以上的信号都设置了触发条件,那么最终仅仅当这些条件同时满足时,采样才执行。

如果大家调试好后不想要 SignalTap 的调试文件跟着工程一 起编译了(SignalTap 的调试文件编译会占用大量资源)可以直接从工程中把.stp 文件删除,或者点击 Assignments 打开 setting 找到 SignalTap 的使能开关,把它关掉即可

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

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

相关文章

IO模型详解

什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll跟IO模型有什么关系?有几种经典IO模型呢?BIO、NIO、AIO到底有什么区别的? 什么是IO呢? IO,英文全称是Input/Output,翻译过来就是输入/输出。平时我们听得挺多,就是什么磁盘IO,网络I…

LCHub:2023年低代码开发平台市场规模将增长25%至100亿美元

随着企业希望变得更加敏捷、业务流程更加自动化,并创建新的Web和移动应用来满足消费者的需求,自动化开发工具正在成为关键因素,尤其在IT人才持续短缺的情况下。 根据调研机构最近进行的一项研究,面对持续的IT技能短缺,低代码和无代码平台等能够实现流程自动化并使员工能…

便捷生活,你我共享 | 美格智能Cat.1模组为共享经济赋能

近年来,共享经济在国内的兴起,主要基于两大优势,一是资源共享,为人们的生活带来便捷;二是绿色低碳,符合社会的发展潮流。作为近年来经济发展的新业态,共享经济的快速普及,以及带来的…

SpringMVC的请求参数传递

1,简单参数类型 单个参数 发送: http://localhost/commonParam?nameitcast接收: Controller public class UserController {RequestMapping("/commonParam")ResponseBodypublic String commonParam(String name){System.out.pr…

LeetCode:12. 整数转罗马数字

12. 整数转罗马数字1)题目2)思路3)代码4)结果1)题目 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 字符 数值 I 1 V …

带有数字化伪装外观,全新ID.7轿车即将全球首发

一切就绪,ID.7即将出场!今年的CES展会将于2023年1月5日至8日在拉斯维加斯举行。展览期间,大众汽车集团(美国)将展出基于模块化电驱动平台(MEB)打造的首款纯电三厢轿车。展车将采用智能伪装外观&…

Vue3+TS封装axios

1.实现最基础的封装 将其封装为一个类,而不是一个函数的原因是因为类可以创建多个实例,适用范围更广,封装性更强一些。 index.ts // index.ts import axios from axios import type { AxiosInstance, AxiosRequestConfig } from axiosclas…

爬虫学习-selenium模块

与爬虫的关联可以便携的获取网站中动态加载的数据便携实现模拟登录基于游览器自动化的一个模块(按键精灵脚本)使用流程环境安装pip install selenium下载一个游览器的驱动程序:谷歌浏览器驱动安装 - 琳达的博客 - 博客园 (cnblogs.com)from s…

测试开发 | TestNG 与 Junit 对比,测试框架如何选择?

TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下:1. Junit 更适合隔离性比较强的单元测试;2. TestNG 是比 Junit 涵盖功能更全面的测试框架,具…

世界第一虚拟乐队举办了一场 AR 音乐会 #Gorillaz

“世界第一虚拟乐队” 是谁?23 年前,一支名为 Gorillaz 的乐队在英国埃塞克斯横空出世。和当时主流乐队形式不同的是,这支乐队以虚拟形象出现,凭借着过硬的音乐制作实力和别具一格的虚拟乐队形象,不久后就席卷了全球&a…

如何打造敏捷项目管理团队?【金曼说4】

曾经乔布斯说过他此生最骄傲的事不是创造了苹果,而且团队。由此也说明团队的重要性。一支优秀的团队能打造出无数优秀的产品和项目。无论是在商场还是战场上,快速反应和适应能力都至关重要,在技术和干扰性力量导致变革速度加快的时代更是如此…

HTML 常见面试题

一、HTML5(超文本标记语言,第五次重大修改)二、HTML5新特性①:新的语义标签 header footer nav aside article section②:新的表单控件 calendar date time email url search③:音频、视频( aud…

地产2022价值启示录:房企必须闯过的“三重门”

回顾2022年,中国最大的经济变向之一,无疑就是地产增量时代的落幕。过去一整年,地产行业在“冷热交替”中前行。上半年,疫情、交付延期、停贷潮等阴霾萦绕在众多房企头顶上,市场需求疲软之下业绩下滑,难以看…

《MySQL系列-InnoDB引擎10》InnoDB关键特性-异步IO

InnoDB 关键特性 InnoDB存储引擎的关键特性包括: Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 异步IO 为…

在外打工好久不回老家,用python为家里贴上新年春联

每逢春节,无论城市还是农村, 家家户户都要挑漂亮的红春联贴于门上,辞旧迎新,增加喜庆的节日气氛。 唠叨神话 据说这一习俗起于宋代,在明代开始盛行, 到了清代,春联的思想性和艺术性都有了很…

SpringBoot @ConfigurationProperties使用详解

SpringBoot ConfigurationProperties使用详解 目录SpringBoot ConfigurationProperties使用详解1.1 简述1.2 场景一1.3 场景二1.4 场景三1.5 聊聊EnableConfigurationProperties1.1 简述 在Spring Boot中注解ConfigurationProperties有三种使用场景,而通常情况下我…

51单片机学习笔记_6 IO通信:电脑与单片机之间的通信

通信 单片机还可以通过IO口实现多种通信。 串行通信:一条数据线,一次发1bit,发很久。 并行通信:多条数据线,同时发送,发的速度快多了但是费用高、接收困难、抗干扰性差。 异步通信:发送和接…

PMP、ACP、软考证书,当前哪些值得一考?

看自己的偏向吧,要说考的话,是都值得考的。ACP和PMP都是美国PMI发起的考试,软考是国内的考试。PMP是项目管理证书,学习的内容是项目管理,包含大约一半的敏捷项目管理的内容,ACP的内容都是敏捷项目管理&…

操作系统第三次实验-动态分区存储管理(python代码实现)

一、实验目的: 目的:熟悉并掌握动态分区分配的各种算法,熟悉并掌握动态分区中分区回收的各种情况,并能够实现分区合并。 任务:用高级语言模拟实现动态分区存储管理。 二、实验内容: 1、实验内容 分区分配算…