SignalTap II应用小实例之触发位置
概述
SignalTap II一直以来都是笔者调试Altera FPGA设计的利器,最近比较有时间静下心来研究SignalTap II某些细节,虽然笔者有过不少关于SignalTap的使用,且也发表过一些博文介绍,但是还是有些有技巧如果加以利用是可以大大方便具体项目中的调试。比如本文将要介绍的触发条件位置的选择。
什么是触发位置
所谓触发位置,即trigger position。是指trigger采样位于缓存中的位置,我们知道在设置SignalTap的时候需要设置一个采样深度,缓存深度。那么触发位置的设置(或者说选择)就是指定trigger的位置,或者说指定当trigger发生时缓存数据段的选择。
图1:触发位置设置
如图1所示触发位置有三种选择,分别是“Pre trigger position”、“Center trigger position”和“Post trigger position”。这三个设置的意思,很明显就是缓存数据分别选择以trigger前、trigger为中心或者是以trigger后为主。Altera规定Pre,即12%before trigger,88%after;Center,即前后各50%;Post,即88%before,12%after。
实例演示触发位置不同选择
这个设置最大的好处是用户可以在线实时修改选择,而不需要重新编译工程。所以在实际调试工程的时候,找到触发条件后,常常有时候需要看trigger之后的信号情况,而有时候则需要观察trigger之前的状态,有了这个设置就非常方便了。
1、 首先我们来看设置为“Pre trigger position”的实例,如图2所示。
图2
2、 接着我们来看设置为“Center trigger position”的实例,如图3所示。
图3
3、 最后我们来看设置为“Center trigger position”的实例,如图4所示。
图4
结论
大家可以清楚看到图2、图3和图4的异同,相同点是触发的条件设置都是一样的,不同的就是触发后SignalTap显示的数据段不同,图2主要显示trigger 发生之后的数据,图3显示平均展示trigger前后的数据,而图4则主要显是了trigger发生之前的数据。
另外,需要注意的是SignalTap最多可以设置10个触发条件(trigger condition),如果设置了多个触发条件,那么触发数据缓存发生必须是所有触发条件都发生,而且存储数据的选择(即trigger position)依据最后一个条件产生。比如图2到图4的实例,笔者设置了两个触发条件,分别是在one_led_out为“four”和“eight”,如图5所示。而数据采集存储是以eight条件触发时为依据。
图5:触发条件设置
图6:放大察看触发位置
图6是为了更清晰地看到触发位置,从而放大了图2,可以看到触发位置位于从“seven”变化到“eight”处,即第二个触发条件“eight”发生时刻。
最后,如果有多个触发条件的时候,当有些触发条件在调试的时候如果不用时,可以disable这些触发条件,如图7所示,将触发条件中的“对号”去掉即可,需要的时候在选上。如图7所示我们去使能第二触发条件,然后重新运行SignalTap,那么获得的结果如图8所示,数据采样存储发生在单个触发条件“four”处。
图7:去使能某个触发条件
图8:采样存储触发发生在“four”时刻
SignalTap II应用小实例之触发位置的更多相关文章
- 【黑金原创教程】 FPGA那些事儿 SignalTap II 调试技巧
简介工具篇系列的第三本教程,讲述各种与SignalTap II 有关的调试技巧. 目录[黑金原创教程] FPGA那些事儿<工具篇III>:File01 - 上线调试与下线调试[黑金原创教程 ...
- SignalTap ii的使用
1.实现原理 SignalTap II获取实时数据的原理是在工程中引入Megafunction中的ELA(Embedded Logic Analyzer),以预先设定的时钟采样实时数据,并存储于FPG ...
- 从SignalTap II中获取“最真实”的仿真测试向量(ZZ)
在实际工作中,经常会遇到这样的情况:在硬件调试中采用SignalTap II反复多次编译并最终捕获到问题的原因时,才会发现,原来这个问题是逻辑问题,是可以在仿真环境下发现并快速解决的.先前没 ...
- 第47篇-解释执行的Java方法调用native方法小实例
举个小实例,如下: public class TestJNI { static { // 程序在加载时,自动加载libdiaoyong.so库 System.loadLibrary("dia ...
- winform 异步读取数据 小实例
这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...
- CSS应用内容补充及小实例
一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Objective-C之代理设计模式小实例
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Objective-C之@类别小实例
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- OC小实例关于init方法不小心的错误
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
随机推荐
- js生成随机数的方法实例总结
js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任意随机数就好理解了.比如实际中 ...
- HDU 2191 (13.12.2)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- Delphi 记事本 TMemo
Windows记事本记事本 描述: 用Delphi模仿的Windows记事本 界面和功能都和Windows的记事本一样,是用Memo实现的而不是RichEdit 可以执行以下功能 文件 ...
- 使用Partitioner实现输出到多个文件
1.需求 按学生的年龄段,将数据输出到不同的文件.这里我们分为三个年龄段:小于等于20岁.大于20岁小于等于50岁和大于50岁 2.实现 1.编写Partitioner,代码如下 public sta ...
- Java基础知识强化之集合框架笔记37:用户登录注册案例
1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢? ...
- css背景图与html插入img的区别
一直以来都认为css背景图与直接插入img图片的效果是差不多的,直到最近拜读了一位大神的作品,发现大部分图片都是通过背景图形式显示的,于是通过搜索各相关资料,在此总结了下二者的区别: 1. css中的 ...
- J2EE 读取文件路径
在J2ee中实现java类读取webcontent/web-inf/config.xml的实现代码 ,其中../config.xml相对于classes的路径 java.net.URL url = t ...
- SQL:42601
以前遇到SQL中触发器的问题, 添加一个字段后,发现以前的程序的SQL报错 看了下表定义,有这样的一行代码 CREATE TRIGGER chintai_keiyaku_audit AFTER INS ...
- WPF TextSelection获取选中部分内容
一.简单实例 //TextSelect继承自TextRange TextSelection selection = richTextBox.Selection; //1.获取选中内容 string r ...
- MyEclipse起步Tomcat报错“A configuration error occurred during…” MyEclipse起步Tomcat报错“A configuration error occurred during…”