zoukankan      html  css  js  c++  java
  • SignalTap II进阶学习

    1. 多级触发

    有时候我们可能需要利用多个信号(最多10个)依次触发后,观察特定的值。这这时候我们可以增加触发条件来满足我们的需求。

    image image

    多个触发信号如上图所示,只有依次发生SW[0]上升沿、 SW[1]上升沿、SW[2]上升沿和SW[3]上升沿后,才会抓取得到信号。

    image

    2. 高级触发条件

    有时候我们的触发条件不能简单的高低电平或者上升沿、下降沿,可能是多个信号的逻辑电路,这时候需要使用高级触发条件。比如,三个信号只要出现上升沿或者下降沿时,触发抓取信号,即只要这三个信号有一个发生变化就抓信号。

    (1) 首先在Trigger Conditions里选择Advanced。

    image

    (2) 高级触发编辑窗口:

    image

    (3) 将3个信号节点选中拖进编辑窗口:

    image

    (4) 下一步是增加逻辑运算符到电路中,一个是逻辑或,另一个是电平和边沿检测器

    image

    image

    (5) 下一步是设置电平和边沿检测器的敏感属性,双击它,因为检测是否改变,所以选择“E”。

    image

    3. Buffer Acquisition Modes(缓冲区获取模式)

    一种是不分割连续,另一种是分割模式。

    image

    image

    image

    image

    image

    image

    将大小为256为的采样深度分为8个32个采样点的块,允许捕获8次触发事件,下面是触发条件为SW[0]任意边沿触发的捕获结果。

    image

    4. Use of Synthesis Keep Directive

    有时候我们需要观察一些中间信号,但是选用的过滤器为pre-synthesis,由于软件的优化,这些信号被优化掉了(wire型居多),使得我们获取这些信号。这时候一种方法就是利用综合语句Synthesis Keep Directive。

    image

    image

    如果没有综合语句keep,RTL视图如下图所示,那么就不存在我们要观察的信号了。

    image

    另外,还可以在Filter中选择Design Entry(all names),那么就会有你要的任何信号。

    image

    当然你也可以为wire分配寄存器,或者引出输出引脚,但是这样使设计复杂冗余。

    5. Power-Up Trigger

    通常情况下,SignalTapII只能探测当其Run起来以后器件运行情况,其未Run之前的情况就无法探测得到。往往我们有时候非常需要了解系统中上电伊始某些信号的状况(比如有些系统需要上电几秒甚至几毫秒内要完成的某些初始化动作),这是在以往SignalTapII无法办到的。自从SignalTapII加入了Power-up Trigger特性以后这个问题就得到了解决。

    image

    上电触发用在上电后且在ELA(内嵌逻辑分析仪)运行之前。

    具体步骤如下:

    1)使能Power-Up Trigger;

    2)为Power-up Trigger配置触发条件;

    3)重新编译工程并加载器件;

    4)首次Analizer Run显示的是Power-Up Trigger采集到的数据;

    5)持续Run回到Run-time Trigger模式。

    6. 重编译

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

    image

  • 相关阅读:
    [滤镜]的firefox兼容问题
    软件编程中的21条法则
    程序员!你应该读别人的心得,但是一定要自己注解
    致橡树——舒婷
    高级动物
    终于把网站最后一个模块了结了
    终于解决了网站程序中的问题
    北京杂种
    博客园驻小窝
    Eval函数
  • 原文地址:https://www.cnblogs.com/aikimi7/p/3511337.html
Copyright © 2011-2022 走看看