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; } ...
随机推荐
- 【转】jQuery列表拖动排列-jquery list dragsort插件参数和使用方法
转自:http://www.itokit.com/2014/0820/75058.html 我们在编辑页面元素排序的时候,我推荐使用jquery插件:dragsort. dragsort官网地址:ht ...
- 纪录参加noip2015(pj+tg)复赛
作为一个既参加了pj又参加了tg的初三蒟蒻,本次复赛不得不算一次很happy的事(可以不做周末作业,可以逃掉小班培训) 昨年参加pj的时候,一题眼瞎,二题作死,只有三题蒙了一点分,简直差到一种境界. ...
- K倍动态减法游戏
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2580 #include <iostream> #include <string.h> ...
- jquery做个日期选择适用于手机端
第一步:做个 文本框用于显示年月日的 第二步:点击文本框触发bootstrap模态框并显示 第三步:我是建一个外部js页面写的 js中获得当前时间是年份和月份,形如:201208 //获取 ...
- hive运行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException:
hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Jo ...
- jquery+正則表達式验证邮箱格式的样例
js: $("#email").blur(function(){ //获取id相应的元素的值,去掉其左右的空格 var email = $.trim($('#email').val ...
- Secant Method (Website)
Secant Method: https://www.youtube.com/watch?v=qC9xnsfOd30 Secant Method : http://mathworld.wolfram ...
- 移植opencv库到zedboard(制作运行库镜像) 分类: OpenCV ZedBoard ubuntu shell Eye_Detection 2014-11-08 18:48 172人阅读 评论(0) 收藏
主要参考rainysky的博客 http://ledage.eefocus.com/sj229335457/blog/13-06/295352_ad954.html opencv的话只需要将lib这个 ...
- nginx代理人server结合tomcat采用
相信非常多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那到底它有什么作用呢?可能非常多人未必了解. 说到反向代理,可能非常多人都听说,但详细什么是反向代理,非常多人预计就 ...
- 腾讯QQ企业邮箱POP3/SMTP设置
腾讯企业邮箱支持通过client进行邮件管理. POP3/SMTP协议 收发邮件server地址分别例如以下. 接收邮件server:pop.exmail.qq.com (port 110) 发送邮件 ...