Quartus的Signal Tap II的使用技巧

概述:

Signal Tap II全称Signal Tap II Logic Analyzer,是第二代系统级调试工具,它集成在Quartus II软件中,可以捕获和显示实时信号,是一款功能强大、极具实用性的FPGA片上调试工具软件。

传统的FPGA板级调试是由外接的逻辑分析仪连接到FPGA的控制引脚,将内部信号引出至引脚I/O上,接着进行板级调试。

        note:这种方法缺点是,需要逻辑分析仪,且效率很低,经常需要飞线,而且如果要测10个信号以上就非常庞杂,而且,考虑到100Mhz左右的信号完整性,不能用逻辑分析仪,要用高性能的示波器,测量的信号质量也存在失真的情况。

Signal Tap II在线逻辑分析仪克服了以上所有缺点,将采样逻辑电路编程后放在FPGA中,即,用FPGA资源来构成了嵌入式逻辑分析仪。

操作:

1、打开Signal Tap Logic Analyzer

在Quartus软件中打开待测工程,然后选择Signal Tap Logic Analyzer,

在弹出的New File from Template窗口选择Default (default selection)即可;

弹出Signal Tap Logic Analyzer界面,包含例化管理器(Instance Manager)、JTAG链配置(JTAG Chain Configuration)、节点列表和触发条件(Data与Set两个子界面可选)、信号配置(Signal Configuration)、分层设计(Hierarchy Display,分层显示)以及数据日志(Data Log),如下图。

2、实例管理

首先选择例化管理器,选中默认的auto_signaltap_0,可以增加、删除、重命名实例,这里一个实例可以理解为一组信号对+一个配置时钟,可以通过Enabled来选择该实例是否被编译到该工程中,因此可以有多组实例,方便分析各不同模块的信号。

3、时钟配置

选择信号配置,进行实例的时钟配置。

这里注意:只有在工程已进行过分析与阐释后,才能在signal tap中添加想要观察的时钟或者信号

弹出的Node Finder界面中,首先在Options-Filter栏选择:Signal Tap: Pre-synthesis,在Options-Look in栏中选择down_sampling_top.v模块,接着输入想要在down_sampling_top.v模块中查看的信号的时钟:clk_7_148m,然后search搜索,在Matching Nodes中双击即可将clk_7_148m添加到Nodes Found栏,并单击ok即可完成时钟的添加,如下图:

完成后根据需要选择采样深度即可,其他默认,如下图:

4、添加待抓取信号

双击节点列表和触发条件界面,弹出Node Finder窗口,与上一步添加时钟信号一样的设置,选择自己想要的信号,最后要记得单击insert按键才能正常将信号成功添加。

5、设置信号触发条件-直接默认即可

默认如下全选,不需要做修改:

Don't Care不设置触发方式
Low低电平触发
Falling Edge下降沿触发
Rising Edge上升沿触发
High高电平触发
Either Edge双边沿触发

这里的触发条件呢,会在你进行Run Analysis时起作用,此时在Setup界面下根据需要选择触发方式即可,很方便。

6、记得保存

选择保存路径为工程所在的quartus文件夹下,打开所在目录会发现多了一个stp1.stp文件,该文件即上述添加至工程中的分析文件。

7、开始编译

在工具栏选择Start Compilation 开始编译,等待工程编译完成即可。

8、选择烧录文件并下载

首先连接JTAG烧录器与FPGA板,并给FPGA板子上电,接着Scan Chain,识别FPGA器件,然后选择生成的sof文件,并单击开始下载。

9、查看抓取的波形

单击Run Analysis运行分析一次,也就是刷新采样一次,单击Autorun Analysis自动连续运行分析,也就是一直刷新采样。

补充:

1、在打开的波形窗口,左键单击放大波形窗口,右键单击缩小波形窗口;

2、波形窗口的数据默认16进制,可以选中信号名后,右键单击-Bus Display Format中选择十进制或者其他进制;

3、在Signal Tap Logic Analyzer中下载程序时软件比较卡,可以在Quartus 的Programmer中下载好以后直接在Signal Tap Logic Analyzer分析;

4、在上述第4步添加待住区信号时,如果有些wire/reg定义的信号不能被观察到,或者说stp1.stp中有的信号/时钟显示红色如下:

这表示sof文件烧录到fpga的逻辑资源中没有tx_vid_clk,可能是原来有后来.v模块中删除了,更有可能是有,但是被Quartus软件优化掉了,导致无法使用Signal Tap II观察,针对模块中有,但是signaltap中没有的情况,有两种解决办法:

        方法一、将wire/reg定义的信号改成端口信号(这种方法繁琐不推荐);

        方法二、在待观察的wire/reg定义的信号后面添加特殊字符:

wire        [9:0]       time_cnt  /*synthesis keep*/ ;

reg         [9:0]        time_cnt /*synthesis keep*/;

或者

(* noprune *) wire        [9:0]       time_cnt ;

(* noprune *) reg        [9:0]       time_cnt ;

prune    发音 /pruːn/:

v.修剪;删除;

n.李子干,西梅干;<非正式>讨厌的人,乏味的人;(树枝、灌木丛等的)修剪,修整

5、Signal Tap II除了支持电平、边沿触发外,还支持计数触发,如可以对time_cnt计数器设置具体的值来触发。

6、相同的工程,但是在不同平台上跑的sof与stp文件,如自己的PC1(win10 64环境中的Quartus)与服务器PC2(Ubuntu环境中的Quartus)上的sof与stp文件,能不能将服务器PC2上的sof与stp拿到自己的PC1上进行逻辑分析呢?

说明:

        服务器上跑的工程速度会快很多,比如自己的PC1上跑一个工程需要接近2个小时,但是服务器PC2上跑工程只需要1小时10分钟。

        服务器PC2没有接口可以用来设别JTAG,因此还是要用到自己的PC1来做逻辑分析。

        可以的,将服务器PC2上的sof与stp文件拿到自己的PC1上即可,如果在Signal Tap Logic Analyzer中的设置一样,则只需要将PC2上的sof拿到PC1上即可使用,如果不同,则需要将sof与stp同时挪到同一台机器上。

备注:

stp文件上的信号接口可以多设置,但不能少设置,就是说假如服务器PC2上的stp有20个观察信号,但是PC1上的stp只有10个观察信号,则需要将服务器PC2上的sof与stp同时拿到自己的PC1上进行逻辑抓取分析;

        反过来,自己的PC1上的stp有20个待观察信号,而服务器PC2上仅有10个待观察信号,可以将服务器PC2上的sof拿到自己的PC1上进行逻辑分析即可,不用将PC2上stp也拿到自己的PC1上,当然拿了更好,只是stp的兼容性变差了,如果自己的PC1后续还要跑工程,那就得根据需要重新设置stp了。

参考链接:

noprune keep preserve 区别


 

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

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

相关文章

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制

一、在工作空间下输入catkin_make进行编译 二、在工作空间中输入source ./devel/setup.bash后回车 三、机器人的运动控制在wpr_simulation中有一个例子程序&#xff0c;在工作空间中输入&#xff1a; roslaunch wpr_simulation wpb_simple.launch后回车 四、就会启动一个仿真环…

菜鸟网络Java实习一面面经

自我介绍&#xff0c;做过的项目 巴拉巴拉 你项目中用到redis&#xff0c;可以介绍一下为什么使用它吗&#xff1f; 基于内存操作&#xff0c;内存读写速度快。 支持多种数据类型&#xff0c;包括String、Hash、List、Set、ZSet等。 支持持久化。Redis支持RDB和AOF两种持久…

Transformer基本结构

Transformer基本结构 输入部分、编码部分、解码部分、输出部分 1、输入部分 原文本嵌入层及其位置编码器目标文本嵌入层及其位置编码器 位置编码器(PositionalEncoding)&#xff1a;将词汇位置不同可能会产生不同语义的信息加入到词张量中&#xff0c;以弥补位置信息的缺失 …

Win10 + 4090显卡配置深度学习环境 + gaussian-splatting配置 + 实测自己的场景

目录 1 安装Anaconda 2023.09版本 2 安装CUDA11.8 3 安装深度学习库Cudnn8.6.0 4 安装VSCODE2019 5 安装Colmap3.8 6 安装git 7 安装Python3.10 Pytorch2.0.0 7 安装项目 8 采集数据 8.1 IPhone 14 pro 拍摄30张照片左右 做预处理 8.2 生成colmap位姿等信息 8.3 开…

STM32——F407定时器概述

1 定时器分类 定时器类型数量位号位宽时钟捕获/比较输出DMA请求计数互补输出基本2TIM6,TIM716bitAPB1-有递增-通用2TIM2,TIM532bitAPB14通道有递增、递减、中心对齐-通用2TIM3,TIM432bitAPB14通道有递增、递减、中心对齐-通用1TIM916bitAPB14通道有递增-通用2TIM10、TIM1116bi…

独立站的营销策略:吸引顾客的秘密武器

一、独立站的重要性 独立站是指企业自主建立的电子商务网站&#xff0c;具有独立的域名和运营管理权。通过独立站&#xff0c;企业可以展示产品信息、提供在线服务、进行促销活动等&#xff0c;与顾客建立互动和信任关系。独立站的重要性在于它可以帮助企业建立品牌认知度、提…

面向对象基础-类与对象-封装

1、类与对象 1.1 概念 类&#xff1a;类是一个抽象的概念&#xff0c;用于描述一类对象的特点。 对象&#xff1a;根据类的概念所创造的实体。 【思考】一个对象可以没有对应的类嘛&#xff1f; 不可以&#xff0c;因为必须现有类才能创建对象。 1.2 类的内容 类中最基础的内容…

pygame学习(一)——pygame库的导包、初始化、窗口的设置、打印文字

导语 pygame是一个跨平台Python库(pygame news)&#xff0c;专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生&#xff0c;提供图像模块&#xff08;image&#xff09;、声音模块&#xff08;mixer&#xff09;、输入/输出&#xff08;鼠标、键盘、显示屏&#xff09;…

maven中dependencyManagement标签

简介 dependencyManagement正如其名&#xff0c;用于项目依赖的统一管理。 在父项目中的pom.xml文件中加入dependencyManagement标签即可完成依赖版本的声明。在声明完成后&#xff0c;子项目&#xff08;module&#xff09;中引用相同的依赖时可以不指定version标签自动引入…

【26.4K⭐】ShareX:一款开源免费、功能强大且丰富的截屏录屏软件

【26.4K⭐】ShareX&#xff1a;一款开源免费、功能强大且丰富的截屏录屏软件 在日常工作、学习和娱乐过程中&#xff0c;我们经常需要截取屏幕或者录制屏幕上特定区域中的内容并进行标记、编辑等操作。无论是为了记录重要的信息、分享有趣的内容&#xff0c;还是为了制作教程和…

toto的2023年终总结

第一次写年终总结&#xff0c;其实顺带是把大学四年的学习都给总结了一下&#xff0c;称之为大学总结更为合适吧&#xff1f; 其实把年终总结发在CSDN上有些不适&#xff0c;之前一直想着搭一个自己的博客也因为种种事情一直没有完成&#xff0c; 索性发在这里了&#xff0c;作…

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…

unity学习笔记----游戏练习03

一、修复植物种植的问题 1.当手上存在植物时&#xff0c;再次点击卡片上的植物就会在手上添加新的植物&#xff0c;需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…

分享一个学习Typescript最全的Github网站

一个专注研究Typescript的网站&#xff0c;&#x1f396;&#x1f396;&#x1f396;在这里你可以全面深入学习Typescript相关知识,通过动画方式讲解TS&#xff0c;还有很多常见问题解答。你还可以挑战相应的题目&#xff0c;快来学习吧 我就懒一点&#xff0c;直接原滋原味的…

c语言:打印平行四边形|练习题

一、题目 输入平行四边形的边数&#xff0c;用星号打印平行四边形 如图&#xff1a; 二、思路分析 图形分为两部分 1、左边的空格 2、右边的星号 因此&#xff0c;把空格和星号合起来&#xff0c;就是要求的图形 三、代码图片【带注释】 四、源代码【带注释】 #include <s…

【AI】计算机视觉VIT文章(Transformer)源码解析

论文&#xff1a;Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020 源码的Pytorch版&#xff1a;https://github.com/lucidrains/vit-pytorch 0.前言 …

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α &#xff0c; ∠ C B F ∠ β ∠ABC∠α&#xff0c;∠CBF∠β ∠ABC∠α&#xff0c;∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …

Linux基础知识学习3

vim编辑器 其分为四种模式 1.普通(命令)模式 2.编辑模式 3.底栏模式 4.可视化模式 vim编辑器被称为编辑器之神&#xff0c;而Emacs更是神之编辑器 普通模式&#xff1a; 1.光标移动 ^ 移动到行首 w 跳到下一个单词的开头…

C#中使用as关键字将对象转换为指定类型

目录 一、定义 二、示例 三、生成 使用as关键字可以将对象转换为指定类型&#xff0c;与is关键字不同&#xff0c;is关键字用于检查对象是否与给定类型兼容&#xff0c;如果兼容则返回true&#xff0c;如果不兼容则返回false。而as关键字会直接进行类型转换&#xff0c;如果…

小白备战蓝桥杯:Java集合与数据结构

目录 什么是集合&#xff1f; 集合的分类 <> : 泛型 浅谈泛型 代码示例 细说泛型 泛型类 泛型方法 泛型接口 泛型通配符 Collection接口 集合的通用遍历方式 1、迭代器遍历 2、增强for循环 3、forEach方法 4、代码示例 List接口 方法 List集合的遍历方…