SignalTap 逻辑分析仪的使用

一、操作步骤
每一操作步骤的具体过程此处不再赘述了,已经有了很多很好的教程。
此处主要是对大概过程的记录(方便后续忘记咋用时回看)以及个别个人认为需要注意的点的记录。

1、创建stp文件。
2、添加时钟。
SIGNALTAP的采样时钟,不一定是时钟信号,可以是其他任意的信号。总之,SIGNALTAP会在采样时钟的上升沿去捕捉信号的值,如果没有上升沿,则会一直等待。例如下图所示,就是以按键信号key【0】为采样时钟。在key【0】由0变1时,就会采样一个值。
SignalTap 逻辑分析仪的使用_第1张图片
若该工程使用到几个模块,并且每个模块的时钟不一定相同,则我们选择采样时钟时,要根据我们要测试的信号所在的模块的时钟是什么。
3、添加待观察信号和触发条件
Filter中的【pre_synthesis】表示综合前设计中的信号,与Verilog设计中存在的信号最为贴近;
【post-fitting】表示添加了综合优化、布局布线之后的一些信号,与设计电路的物理结构最为接近。
触发条件含义:在采样时钟的上升沿,当所有触发使能信号都满足触发条件时,将会出现触发。
4、设置仿真模式。
① 采样深度:表示采多少个样点的信号。
② 采样模式:分段采样【Segmented】与循环采样。
循环采样:在信号触发后连续采样至采样深度;
分段采样:将采样深度分为N段,信号每触发一次就采样一段长度的数据,需要连续触发N次来填满整个存储。
e.g.8 16 sample segments:分成8段,每段16个采样点。
5、捕获信号、分析信号。
如何用模拟形式观察输出波形:
在信号名上单击右键,选择【Bus Display Format】-【Unsigned Line Chart】即可查看模拟信号输出。

问题总结

  1. 出现instance not found
    SignalTap 逻辑分析仪的使用_第2张图片
    原因: .pof不匹配。FPGA之前固化了别的程序,现在的.stp自然烧不进去。
    解决:编译之后,将现在的.sof烧写进去。

  2. 修改STP文件时,只有改变信号的触发条件(高低电平、上升沿、下降沿、任意边沿、不关心)时,不用重编译,其他的改变都需要重新编译工程。

  3. 在不使用Signaltap后,可在Settings中设置综合时不综合Signaltap。
    【Signaltap II Logic Analyzer->去掉Enable Signaltap II Logic Analyzer前面的勾勾】

  4. 文件输出:【File-Export】可以把Signalt采样到的数据保存为其他格式的文件。其中有csv【适合配合MATLAB使用】,tbl,bmp,jpg,vcd五种格式。

  5. 因为Signaltap不带频率计,因此要手动设置时间单位(可以用来计算频率)。设置时间单位:【右击顶部时间轴-Time Units】~采样时钟是50M时,周期为20ns。

  6. Signaltap里面的触发器本身具有滤波作用,因此一些小的毛刺无法被采集到。实际波形还需以示波器观察到的波形为准。

  7. 在Signaltap中观察wire和reg信号的方法。
    ①在待观察的wire信号旁边加上/synthesis keep/;

wire [31:0] readdata /* synthesis keep = 1 */;
wire    <net_name>/* synthesis keep */;

②对于没有output的reg信号,Quartus在综合时也采用了最佳方式,因此,在SIgnalTap II中不能观察该信号。
【解决方法】:
对于reg信号则加/synthesis noprune/ 或者 /* synthesis preserve */
两者的不同之处在于:
/synthesis noprune/避免Quartus II优化掉没output的reg。
/synthesis preserve/避免Quartus II将reg优化为常数,或者合并重复的reg。

若是想观察整个模块中的reg信号,则在module之后添加/synthesis noprune/

module test(clk,rst,data)/*synthesis noprune*/

参考资料
https://zhuanlan.zhihu.com/p/98076737
https://blog.csdn.net/k331922164/article/details/47623501

你可能感兴趣的:(FPGA开发工具,fpga)