1.创建并设置STP文件
STP是signal tap的缩写,在quartus界面中点击file,选中new,弹出下面框:
选中SignalTap II Logic A nalyzer File点击OK,弹出下面框:
2.在STP文件中添加实例(instance)
添加方法:在上图中的instance窗口中点击右键,选择create instance。
默认情况下,STP中有一个默认名为auto_signaltap_0的instance,双击auto_signaltap_0可以修改为自己定义的名字。
3.在instance中添加观测节点(nodes)
点击Edit,选中Add Nodes...(此处有一个需要注意的:上面的步骤必须在打开一个工程后操作,否则Edit中的Add Nodes...将会是灰色,无法选中),然后弹出:
这个时候就需要添加你所需要抓取的信号。Look in中选择抓取的信号所在的模块,Filter修改为:
SignalTap II:pre-synthesis.(这两步非常重要,否则的话在Nodes Found中会提示non-mathcad),在Named中输入所需抓取的信号名(貌似必须是全名),点击List,在Nodes Found中就会出现该信号,双击该信号,该信号就会出现在Selected Nodes里面。同样在Named中输入另外需要抓取的信号,使之出现在Selected Nodes里面。添加完所有的信号后,点击OK。
4.为instance添加采样时钟
点击软件中下部的Setup按键,在右边会出现:
点击上图的clk旁边的[...]将会弹出与上面一样的Noder Finder窗口,选择好合适的时钟信号。然后设置一些基本的参数:
采样深度,Sample depth 个人建议选大些,但是又不能超过FPGA资源,不然在后面的编译会报错。
RAM类型,这个默认为auto,不用管
触发,Trigger 这个在初期使用signal tap就选择默认,后期可以根据具体信号波形来设置。
5.重新编译添加了signal tap工程
在quartus10.1中一般在上面的步骤都做好后,关闭signal tap窗口一直点击OK就行。为了确保工程中的确添加了我们刚刚新建的stp文件,可以打开工程,选中Entity中的顶层,右键点击settings,就会出现:
选中左边的SignalTap II Logic Analyzer,在右边[...]选中刚刚新建的stp文件。
6.编译和下载代码
按照一般的方法,编译和生成sof文件。下载代码需要在SignalTap II中下载,双击stp文件,就会弹出:
给板子上电,并且连上JTAG线(有的称为仿真器)。界面就会变成:
点击右上角的SOF Manager后面的[...],选择好刚刚生成的SOF文件,然后点击program device。
7.抓取数据,观测波形
在下载好sof后,点击Instance Manager旁边的run analyzer(也就是红色的三角标志),就会弹出:
界面上就是抓取出来的信号波形,此时完成了signal tap的基本操作。
理论分析:
1.SignalTap II 的优缺点(摘自《altera FPGA/CPLD设计(基础篇)》(第2版))
优点: 1.不占用额外的I/O管脚
2.不占用PCB上的空间
3.不破坏信号的完整性
4.相对传统逻辑分析仪设备,SignalTap II 免费试用。
缺点:SignalTap II 中抓取数据的深度取决于RAM剩余大小,特别是在低端的FPGA中,特别是学习板中,由于RAM太小,抓取的数据太少,SignalTap II 基本对设计没有帮助。
2.触发位置的选择
以前似乎有四种选择,现在好像只能找到三种:
1.Pre trigger position :采样的数据12%为触发前,88%为触发后
2.Center trigger position :采样的数据50%为触发前,50%为触发后
3.Post trigger position :采样的数据88%为触发前,12%为触发后