第五章 在线逻辑分析仪-SIGNALTAP

简介: 第五章 在线逻辑分析仪-SIGNALTAP

第五章 在线逻辑分析仪-SIGNALTAP


ps:仿真实在pc端进行仿真,和fpga一点关系也没有,而signaltap是直接反馈芯片的信号。


进行 FPGA 开发的过程中,在逻辑代码上板运行前都会进行仿真验证,而 EDA 仿真工具(如 Modelsim 等)的使用更是可以可以让工程师提早发现工程中出现的一些错误。但这并不代表经过仿真工具验证后的设计就能够达到预期。事实上,在上板运行时仍有可能遇到各种各样的问题。使用仿真工具进行验证的时候所设计 Testbench 的激励输入有时不能囊括一切可能发生的情况,并且由于软件仿真与实际硬件之间总是存在着细微的差别,诸如此类的原因导致工程师在上板运行时仍会发现各种设计问题。而很多情况下,在 FPGA 实时运行中需要查看某些信号,因此需要一个实时的信号分析工具获取 FPGA 内部的实时信号从而进行调试分析——SignalTap II 应运而生。


SignalTap 是由 Altera 公司开发的一个在线、片内信号分析的工具,为设计开发者验证所用。其作用类似于一个数字逻辑分析仪,利用 signaltap 工具基本上可以代替数字逻辑分析仪。Signaltap 是Quartus 里最常用的工具,希望同学们可以熟练使用。


第1节 软件原理


在使用 SignalTap 前先来理解一下 SignalTap 的原理,从而有助于理解各个参数。

1670839205813.jpg

如图 1.5- 1 为 SignalTap II 的基本工作原理,通过此图可以直观的理解触发条件、采样时钟、采样深度等的概念(概念及相关设置见第三节)及其之间的关系。

在调试过程中,某些需要观察分析的信号被称为“被测信号”,可以存在多个被测信号。

SignalTap II 的基本工作过程如下:以被测信号为对象,根据需要设置合理的触发条件,在触发条件(如图中的被测信号下降沿)满足时的前后一段时间,每个采样时钟的上升沿会对被测信号进行一次采集,并将采集的信号值存储在内部的 RAM 中。工程师可以指定触发条件前后采多少个样点,如果 RAM 比较大,则可以保存比较多的数据。反之,如果 RAM 比较小,那么保存的数据自然比较少,RAM 大小决定了观察数据的多少。最后 SignalTap 将读出RAM 中的数据并逐个在显示器中显示出来,因此 SignalTap 观测到的都是理想的(这说明再出现一些特殊信号时候,你是检测不出来的),没有毛刺的信号,工程师可以在显示器中观测信号,从而达到对信号进行在线调试分析的目的。


第2节 软件界面


打开 Quartus 软件,在菜单栏中,选择 Tools>SignalTal II Logic Analyzer 后可以打开 SignalTap 工具。如下图 1.5:

1670839220352.jpg

1670839228125.jpg

图 1.5- 3 中将需要注明的地方进行了标记,接下来将对各处功能进行详细介绍:


图 1.5- 3 中所标识的 1—4 为基本的软硬件配置:

1 为下载线选择;

2 为硬件检测(识别相关的 FPGA 设备);

3 为工程配置文件选择(sof 文件);

4 为加载 sof 文件(1-3 均完成后即可加载文件)。


图示 5—7 为采样设置:

5 为选择采样时钟,采样时钟要根据具体需要进行设置, 可以为模块的工作时钟,也可以为内部信号;

6 为采样深度设置,采样深度并非越大越好,要根据分析需求进行合理设置;

7 为触发位置选择,包括前段触发、中间触发、后端触发三种方式,以触发点为参考,根据触发位置的不同能得到不同时间段的信号值。


图示左边区域 8—9 为信号设置,包括添加信号,设置信号触发条件等。在 8 中空白处双击即可添加信号界面,根据需要添加工程中的相应信号,添加信号后即可设置其触发条件。


图中标识的 10 为资源使用情况指示,如果资源多于 FPGA 本身的资源,综合时会出现报错从而无法进行分析。


最上面的 11 为运行操作按钮,开始运行后,待触发条件满足后会显示波形。


第3节 使用流程


首先需要选择下载线方式、FPGA 芯片型号、工程配置文件,如下图 1.5- 4 所示:

1670839245082.jpg

随后设置采样时钟、采样深度以及采样信号。

1670839253322.jpg

图 1.5- 5 为采样时钟及采样深度的设置。此处选择 FPGA 内部 pll 锁相环输出的信号 c1 作为采样时钟。这里需要注意的是,采样时钟不一定是工程里的时钟,内部任何信号都是可以作为采样时钟的。这里将采样深度设置为 128,即共计可以观察到到 128 个采样点的数据。在 setup 窗口中双击空白地方,弹出如下图 1.5- 6所示界面。

1670839261021.jpg

图 1.5- 6 中红色框表示的是选择哪一阶段的信号,例如选取的是综合前或是综合后的信号等。因为综合时软件会自动进行优化,有些信号可能会找不到。一般会选择 pre-synthesis 或 Design Entry(all name)模式,在 Nodes Found 选择要观察的信号,将其添加到右边框中即可。


本例中选择 key_col 和 rst_n 信号来进行观察,如图 1.5-7所示:

1670839269579.jpg

采样信号选择好后即可进行触发条件的设置。观察 trigger Conditions 一列,key_col 的默认值为 xh(总线型信号的 don’t care),rst_n 的默认值为 don’t care。在 trigger Conditions 一列中右击 rst_n 所在的行,将会出现 6 种触发条件供工程师选择。

1670839278464.jpg

图 1.5- 8 中 6 种触发条件的含义如下:

Don’t Care:表示不关心,也即任意,此信号的值不影响触发条件;

Low :低电平触发;

Falling Edge:下降沿触发;

Rising Edge:上升沿触发;

High:高电平触发;

Either Edge:双沿触发,即有变化时触发。

此处可以假定为上升沿触发,对 key_col 也进行触发条件的设置,具体设置如下所示。

1670839287369.jpg

图 1.5- 9 中设置的触发条件含义为:当 rst_n 为上升沿并且 key_col 全为高(Fh)时触发。注意,这里多触发条件之间默认为“与”的关系,可能会被误认为是“或”的关系。最后进行综合并下载,点击“Run Analysis”按钮后查看结果。


如果触发条件成立,则可在 Data 窗口观察到采样波形,图 1.5- 10 是某一工程的采样结果,可以看到其采样波形与 modelsim 波形相似。点击波形后可以放大波形进行观看,右击波形则为缩小波形。

1670839307834.jpg


第4节 案例说明


本节中将采用几个案例来对 SignalTap 的使用步骤进行详细的说明。


案例 1:SignalTap 的采样时钟不一定是时钟信号,也可以是其他任意的信号。SignalTap 会在采样时钟的上升沿对信号值进行捕捉,如果没有时钟上升沿则 SignalTap 一直处于等待状态。


案例 2:观测时可以改变采样的深度以便观察到信号更长时刻的值。图 1.5- 11 中设置的深度为128,这意味着一共可以观察到 128 个点的值。如果这一观察量不够则可以将其设置成更大的数值。


但需要注意的是,SignalTap 需要使用到 FPGA 内部的 RAM 资源来保存采样的数据,所以采样深度越大,需要使用的的 RAM 就越大,与此同时占用的 FPGA 资源也就更多。然而 FPGA 的资源是有限的,当 FPGA 的内部资源不支持设置采样点数所占用的 RAM 资源数时,在编译时会出现报错提示。

1670839319475.jpg

案例 3:通过设置 segmented 参数可以检查满足触发条件的次数。例如,发现按键存在失灵情况时,为了定位此问题需要检查按键按下的次数,判断其是否与捕捉到信号次数一致。


该操作的主要设置如下:


将 segmented 设置为 32;

将捕捉到信号 key_vld 拉到显示窗口,该信号为 1 表示捕捉到一个按键。

设置触发条件为:key_vld 的上升沿;

按下 run 键,等待触发条件满足;

按下按键 4 次。

按停止捕捉键。

如果此时 SignalTap 波形界面出现 5 个窗口,其中前 4 个表示条件满足捕捉到 key_vld 的上升沿触发条件的窗口,则表示按下按键的次数与捕捉到的次数一致。否则代表发生错误,按键存在问题。


案例 4:添加信号后,如界面中该信号显示为红色,如图 1.5- 12 所示,则表示该信号的捕捉存在问题。

1670839329841.jpg

采样信号为红色出现该问题的可能性原因有:


该信号在电路综合时被优化。

a) 虽然该信号已经产生,但其没有被视为条件进行调用,或者不是输出信号。此时系统认为信号是多余的,因此在综合时会将该信号优化掉。

b) 如果该信号是有用信号,不应该被优化掉。则说明电路有 BUG,需要工程师去定位错误。


组合逻辑信号一般是捕捉不到的。其解决方法为忽略该信号,可以将产生该信号的所有条件都调用出来,从而推敲结果是否正确。


案例 5:图 1.5- 13 中包含的一个案例触发条件是:当 en 为下降沿且 en_tmp 发生变化。注意,只有在采样时钟上升沿时捕捉到两个条件同时满足时才会进行触发。

1670839343196.jpg

图 1.5- 14 所示波形中,在第 5 时钟上升沿时观察到 en 等于 1,en_tmp 等于 1,其不满足条件。而在第 6 时钟时捕获到 en 的下降沿(之前为 1,现在为 0)与 en_tmp 的下降沿(之前为 1,现在为0),可以看出第 6 个时钟满足触发条件。


在线逻辑分析仪是每个 FPGA 学习开发者必须熟练掌握的基本工具,是使用 FPGA 的必备能力之一。针对 SignalTap 的使用方法,下面链接中提供了 6 个训练工程以方便练习掌握这一工具。

工程训练网址:请点击


第5节 6个工程案例


5.1 案例1


5.2 案例2


5.3 案例3


5.4 案例4


5.5 案例5


5.6 案例6

相关文章
|
Python
解决GNURadio自定义Python OOT块-导入块时报错问题
解决GNURadio自定义Python OOT块-导入块时报错问题
804 0
|
存储 C语言 芯片
STM32的ISP下载的原理是什么呢?
STM32的ISP下载的原理是什么呢?
764 0
|
Linux Perl
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
解决脚本实现:sed -i 替换变量,变量中含有特殊转义字符的问题
|
4月前
|
存储 弹性计算 运维
阿里云服务器如何续费?通常续费有哪些优惠政策?云服务器续费常见问题解答
阿里云ECS服务器的续费流程与优惠政策参考:续费支持PC端、App端及API三种方式,其中PC端推荐批量操作,API适合自动化运维。进阶续费策略涵盖自动续费、续费降配、续费变配及统一到期日管理,帮助用户灵活应对业务变化。本文还解读了当前"99计划"长效低价实例——经济型e实例99元/年、通用算力型u1实例199元/年,均支持新购与续费同价,活动截止2027年3月31日,有效避免"首年便宜、续费暴涨"的困境,适合个人开发者与中小企业长期低成本上云。
阿里云服务器如何续费?通常续费有哪些优惠政策?云服务器续费常见问题解答
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
3257 2
|
Linux Windows
【已解决】ValueError: num_samples should be a positive integer value, but got num_samples=0
【已解决】ValueError: num_samples should be a positive integer value, but got num_samples=0
|
XML 网络协议 机器人
ROS1 Noetic主从机通信使用详解
这篇文章详细介绍了在ROS1 Noetic环境下配置主从机通信的步骤,包括获取IP和主机名、设置`/etc/hosts`文件、配置ROS环境变量以及测试通信是否成功。同时,文章还提供了一些ROS环境变量的相关知识和参考资料链接。
1543 0
|
弹性计算 运维 负载均衡
SLB介绍
SLB产品介绍
1268 4