马上注册,看完整文章,学更多FPGA知识。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
温馨提示:明德扬2023推出了全新课程——逻辑设计基本功修炼课,降低学习FPGA门槛的同时,增加了学习的趣味性,并组织了考试赢积分活动
本案例的编号为:001500000150,如果有疑问,请按编号在下面贴子查找答案:MDY案例交流【汇总贴】_FPGA-明德扬科教 (mdy-edu.com)
本文为明德扬原创及录用文章,转载请注明出处
大家好,近期我们会连载《FPGA至简设计原理与应用》一书,有兴趣的同学可以学习,也希望大家可以对我们的书提出宝贵的意见和建议。
《FPGA至简设计原理与应用》书籍连载索引目录
http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=989
读过的朋友可积极在贴后留言,书籍正式出版时,我们会从留言者中挑选20位幸运读者,幸运读者可获潘老师亲笔签名书籍一本。
注:手机浏览可能格式会乱,建议用电脑端进行浏览。
第一篇 FPGA基础知识
第五章 在线逻辑分析仪-SIGNALTAP
本文档编号:001500000032
需要看对应的视频,请点击视频编号:001300000078
1. 本章主要介绍在FPGA的开发过程中,在逻辑代码上板运行前都会进行仿真验证。本章主要介绍一个实时的信号分析工具获取FPGA内部的实时信号从而进行调试分析——SignalTap的工作原理、使用流程,并且通过3个案例又对SignalTap的使用步骤进行了详细说明。
2. ALTERA的文档
进行FPGA开发的过程中,在逻辑代码上板运行前都会进行仿真验证,而EDA仿真工具(如Modelsim等)的使用更是可以可以让工程师提早发现工程中出现的一些错误。但这并不代表经过仿真工具验证后的设计就能够达到预期。事实上,在上板运行时仍有可能遇到各种各样的问题。使用仿真工具进行验证的时候所设计Testbench的激励输入有时不能囊括一切可能发生的情况,并且由于软件仿真与实际硬件之间总是存在着细微的差别,诸如此类的原因导致工程师在上板运行时仍会发现各种设计问题。而很多情况下,在 FPGA 实时运行中需要查看某些信号,因此需要一个实时的信号分析工具获取FPGA内部的实时信号从而进行调试分析——SignalTapII 应运而生。
SignalTap是由Altera公司开发的一个在线、片内信号分析的工具,为设计开发者验证所用。其作用类似于一个数字逻辑分析仪,利用signaltap工具基本上可以代替数字逻辑分析仪。Signaltap是Quartus里最常用的工具,希望同学们可以熟练使用。
第1节 软件原理
在使用SignalTap前先来理解一下SignalTap的原理,从而有助于理解各个参数。
图1.5- 1 SignalTap基本工作原理 如图1.5- 1为SignalTap II的基本工作原理,通过此图可以直观的理解触发条件、采样时钟、采样深度等的概念(概念及相关设置见第三节)及其之间的关系。
在调试过程中,某些需要观察分析的信号被称为“被测信号”,可以存在多个被测信号。SignalTap II的基本工作过程如下:以被测信号为对象,根据需要设置合理的触发条件,在触发条件(如图中的被测信号下降沿)满足时的前后一段时间,每个采样时钟的上升沿会对被测信号进行一次采集,并将采集的信号值存储在内部的RAM中。工程师可以指定触发条件前后采多少个样点,如果RAM比较大,则可以保存比较多的数据。反之,如果RAM比较小,那么保存的数据自然比较少,RAM大小决定了观察数据的多少。
最后SignalTap将读出RAM中的数据并逐个在显示器中显示出来,因此SignalTap观测到的都是理想的,没有毛刺的信号,工程师可以在显示器中观测信号,从而达到对信号进行在线调试分析的目的。
第2节 软件界面
打开Quartus软件,在菜单栏中,选择Tools>SignalTal II Logic Analyzer后可以打开SignalTap工具。如下图1.5- 2:
图1.5- 2 SignalTap II打开方式
图1.5- 3 SignalTap使用界面
笔者在图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所示。
图1.5- 4 基本配置选择
随后设置采样时钟、采样深度以及采样信号。
图1.5- 5 采样设置
图1.5- 5为采样时钟及采样深度的设置。此处选择FPGA内部pll锁相环输出的信号c1作为采样时钟。这里需要注意的是,采样时钟不一定是工程里的时钟,内部任何信号都是可以作为采样时钟的。这里将采样深度设置为128,即共计可以观察到到128个采样点的数据。在setup窗口中双击空白地方,弹出如下图1.5- 6所示界面。
图1.5- 6 采样信号的选取
图1.5- 6中红色框表示的是选择哪一阶段的信号,例如选取的是综合前或是综合后的信号等。因为综合时软件会自动进行优化,有些信号可能会找不到。一般会选择pre-synthesis或Design Entry(all name)模式,在Nodes Found选择要观察的信号,将其添加到右边框中即可。 本例中选择key_col和rst_n信号来进行观察,如图1.5- 7所示:
图1.5- 7 选取好采样信号
采样信号选择好后即可进行触发条件的设置。观察trigger Conditions一列,key_col的默认值为xh(总线型信号的don’t care),rst_n的默认值为don’t care。在trigger Conditions一列中右击rst_n所在的行,将会出现6种触发条件供工程师选择。
图1.5- 8 SignalTap中六种触发条件
图1.5- 8中6种触发条件的含义如下: Don’t Care:表示不关心,也即任意,此信号的值不影响触发条件; Low:低电平触发; FallingEdge:下降沿触发; RisingEdge:上升沿触发; High:高电平触发; EitherEdge:双沿触发,即有变化时触发。 此处可以假定为上升沿触发,对key_col也进行触发条件的设置,具体设置如下所示。
图1.5- 9 设置上升沿触发
图1.5- 9中设置的触发条件含义为:当rst_n为上升沿并且key_col全为高(Fh)时触发。注意,这里多触发条件之间默认为“与”的关系,很多读者可能会误认为是“或”的关系。
最后进行综合并下载,点击“Run Analysis”按钮后查看结果。
如果触发条件成立,则可在Data窗口观察到采样波形,图1.5- 10是某一工程的采样结果,可以看到其采样波形与modelsim波形相似。点击波形后可以放大波形进行观看,右击波形则为缩小波形。
图1.5- 10 SignalTap采样信号波形
第4节 案例说明
本节中笔者将采用几个案例来对SignalTap的使用步骤进行详细的说明。
案例1: SignalTap的采样时钟不一定是时钟信号,也可以是其他任意的信号。SignalTap会在采样时钟的上升沿对信号值进行捕捉,如果没有时钟上升沿则SignalTap一直处于等待状态。
案例2: 观测时可以改变采样的深度以便观察到信号更长时刻的值。图1.5- 11中设置的深度为128,这意味着一共可以观察到128个点的值。如果这一观察量不够则可以将其设置成更大的数值。但需要注意的是,SignalTap需要使用到FPGA内部的RAM资源来保存采样的数据,所以采样深度越大,需要使用的的RAM就越大,与此同时占用的FPGA资源也就更多。然而FPGA的资源是有限的,当FPGA的内部资源不支持设置采样点数所占用的RAM资源数时,在编译时会出现报错提示。
图1.5- 11 采样深度设置 案例3: 通过设置segmented参数可以检查满足触发条件的次数。例如,发现按键存在失灵情况时,为了定位此问题需要检查按键按下的次数,判断其是否与捕捉到信号次数一致。该操作的主要设置如下: 1. 将segmented设置为32; 2. 将捕捉到信号key_vld拉到显示窗口,该信号为1表示捕捉到一个按键。 3. 设置触发条件为:key_vld的上升沿; 4. 按下run键,等待触发条件满足; 5. 按下按键4次。 6. 按停止捕捉键。 如果此时SignalTap波形界面出现5个窗口,其中前4个表示条件满足捕捉到key_vld的上升沿触发条件的窗口,则表示按下按键的次数与捕捉到的次数一致。否则代表发生错误,按键存在问题。
案例4: 添加信号后,如界面中该信号显示为红色,如图1.5- 12所示,则表示该信号的捕捉存在问题。
图1.5- 12 采样信号为红色出现该问题的可能性原因有: 1. 该信号在电路综合时被优化。 a) 虽然该信号已经产生,但其没有被视为条件进行调用,或者不是输出信号。此时系统认为信号是多余的,因此在综合时会将该信号优化掉。 b) 如果该信号是有用信号,不应该被优化掉。则说明电路有BUG,需要工程师去定位错误。
2. 组合逻辑信号一般是捕捉不到的。其解决方法为忽略该信号,可以将产生该信号的所有条件都调用出来,从而推敲结果是否正确。
案例5: 图1.5- 13中包含的一个案例触发条件是:当en为下降沿且en_tmp发生变化。注意,只有在采样时钟上升沿时捕捉到两个条件同时满足时才会进行触发。
图1.5- 13 触发条件设置
图1.5- 14 信号波形图
图1.5- 14所示波形中,在第5时钟上升沿时观察到en等于1,en_tmp等于1,其不满足条件。而在第6时钟时捕获到en的下降沿(之前为1,现在为0)与en_tmp的下降沿(之前为1,现在为0),可以看出第6个时钟满足触发条件。
在线逻辑分析仪是每个FPGA学习开发者必须熟练掌握的基本工具,是使用FPGA的必备能力之一。针对SignalTap的使用方法,下面链接中提供了6个训练工程,方便读者练习掌握这一工具。
|