tag 标签: signaltap

相关博文
  • 热度 20
    2016-4-21 17:59
    1428 次阅读|
    0 个评论
    1.ROM的读取       由于 ROM 是一种只读存储器,所以我们需要一个初始化文件来配置 ROM 中的 存储数据,因此接下来,我们需要首先建立这样的配置文件,在 Quartus 中,配 置文件可以选择 MIF 文件 ip核配置 代码: module ROM( clk, rst_n, data ); input clk,rst_n; output data; wire addr; rom_ctrl rom_ctrl( .clk(clk), .rst_n(rst_n), .addr(addr) ); my_rom my_rom( .address(addr), .clock(clk), .q(data) ); endmodule /* ROM 控制器的功能就是不断地输出 0—1023 递增的地址数据, 遍历 ROM 所有存储空间 */ module rom_ctrl( clk, rst_n, addr ); input clk,rst_n; output reg addr; always @(posedge clk or negedge rst_n) if(!rst_n) addr = 0; else if(addr 1023) addr = addr + 1; else addr = 0; endmodule 仿真:   2. Rom_Signaltap调试(SignalTapII 嵌入式逻辑分析仪)         在线调试也称作板级调试,它是将工程下载到 FPGA 芯片后分析代码运行的 情况。有人会以为,我们已经做过仿真了,甚至是时序仿真都通过了,还会存在 问题么?但是在实际中,还有以下情况我们需要用到在线调试: Ⅰ、  仿真不全面而没有发现的 FPGA 设计错误。很多情况下,由于太复杂,无法 做到 100%的代码覆盖率 ; Ⅱ、  在板级交互中,存在异步事件,很难做仿真,或者仿真起来时间很长,无法 运行; Ⅲ、  除了本身 FPGA 外,还可能存在板上互连可靠性问题、电源问题和 IC 之间的 信号干扰问题,都可能导致系统运行出错 ;         SignalTap II  基本上采用了典型外部逻辑分析仪的理念和功能,却无需额外的 逻辑分析设备、测试  I/O 、电路板走线和探点,只要建立一个对应的 .stp  文件并 做相关设置后,与当前工程**编译, 用一根  JTAG  接口的下载电缆连接到要调 试的  FPGA  器件即可。  SignalTap II  对  FPGA  的引脚和内部的连线信号进行捕获后, 将数据存储在一定的  RAM  块中。因此,用于保存采样时钟信号和被捕获的待测 信号的  RAM  块,也会占用逻辑资源(  LE )、  Memory  资源 (Block RAM) 和布线资 源。占用逻辑资源的多少基于信号或者被监测的通道数量,以及触发条件的复杂 程度;所使用的存储器数量取决于被监测的通道数量和采样深度。理论上可支持 1024  个通道,每个通道可采集  128k Bit  数据,但是这两个极限值没办法同时满足, 因为若同时满足,则等价于占用  32768  个  M4K  模块,没有  FPGA  器件能够提供那 么多存储器资源。     在rom的基础上修改.imf文件0-126,127-改成三角波形,然后仿真   在使用 SignalTap II时需要修改ip核中的数据,   设置 SignalTap II 的clk信号,  添加需要的data,以及 addr  保存后重新全编译工程,然后在 SignalTap II 查看抓取的波形 同样数据可以再in-system memory content editor中查看             
  • 热度 25
    2013-12-3 10:07
    3279 次阅读|
    0 个评论
      SignalTap II应用小实例之采样数据缓存类型 概述            本文笔者介绍另外一个SignalTap II应用小实例,即设置SignalTap使用不同的数据缓存类型,SignalTap在触发条件发生的时候,有两种不同的缓存采样数据的类型,用户可以根据自己实际调试的情况进行选择,以便更好地调试自己的逻辑设计。   什么是采样数据缓存类型          所谓采样数据缓存类型,即SignalTap II的buffer type设置。默认的时候这个选项不用设置,除非用户需要改变buffer类型,如图1所示。   图1:缓存类型设置           如图1所示,默认的时候选择框是没有选上的,即这时候得buffer类型是环形(即circular,笔者理解其实就是连续使用buffer),如图2所示。数据是被循环地采集到缓存里直到触发条件发生,数据的存储类似FIFO,触发条件发生后,后面的数据继续被采集并存入缓存,直到缓存被填满。   图2:环形缓存示意图           如果选上如图1所示的勾选项,那么就设置buffer类型为分段模式(即Segmented),如图1所示,如果选择Segmented后面还有一个设置框,即分别可以设置分段的数量以及每个分段的大小。注意,所谓的buffer,其大小就是如图1所示sample depth已经指定好了的。每个分段可以看作一个独立的环形缓存区,触发条件设置对每个分段有效,每次触发条件发生数据填满一个分段 ,直到所有分段填满为止,非常适合触发条件循环发生,并需要查看多个触发点的状况。   实例演示 2 种不同缓存类型的使用             上一篇博文以及我们平时一般使用的都是circular缓存类型,这里就不做介绍了,本节主要介绍下Segmented缓存类型的使用情况。如图3所示,我们勾选设置使用Segmented缓存类型,并选择16个分段,即每个分段64个采样深度(因为我们设置总的采样深度是1K)。   图3:选择数据缓存类型为Segmented           前面我们知道每个分段可以看作一个环形缓冲区,每次触发条件发生就会“切换”一个分段。所以这时候设置触发条件要十分小心,如果还如上篇博文那样设置七段码为触发条件,那么SignalTap II运行的结果就如图4所示。   图4:设置触发条件不当时运行结果            图4是笔者还是设置“one_led_out”为“three”时候运行的结果,由于“three”条件存在很长时间,所以除了头尾两个分段,中间所有分段都存储了一个sample,因为下一个时钟周期触发条件又满足要求,所以要立即“切换”到下一个分段,我们来看看放大后的结果,如图5所示。   图5:分段0填满了数据,而分段1只有一个sample     图6:只保存了一个采样值的分段7          所以如果我们修改触发条件,设置cnt_one_enable的上升沿来触发,由于两次上升沿之间相隔足够的长度,所以这时候每个分段都能填满数据,如图7所示。   图7:修改触发条件,所有分段填满了采样数据     结论           所以这个buffer的类型设置有两种,根据实际需要选择合适的buffer类型,可以方便逻辑设计的调试。如果需要查看多个触发点状况,可以考虑使用分段buffer类型。需要注意的是修改buffer类型需要重新编译工程。
  • 热度 27
    2013-9-4 16:53
    3398 次阅读|
    3 个评论
    SignalTap II 应用小实例之触发位置 概述          SignalTap II 一直以来都是笔者调试 Altera FPGA 设计的利器,最近比较有时间静下心来研究 SignalTap II 某些细节,虽然笔者有过不少关于 SignalTap 的使用,且也发表过一些博文介绍,但是还是有些有技巧如果加以利用是可以大大方便具体项目中的调试。比如本文将要介绍的触发条件位置的选择。 什么是触发位置     所谓触发位置,即 trigger position 。是指 trigger 采样位于缓存中的位置,我们知道在设置 SignalTap 的时候需要设置一个采样深度,缓存深度。那么触发位置的设置(或者说选择)就是指定 trigger 的位置,或者说指定当 trigger 发生时缓存数据段的选择。 图 1 :触发位置设置    如图 1 所示触发位置有三种选择,分别是“ Pre trigger position ”、“ Center trigger position ”和“ Post trigger position ”。这三个设置的意思,很明显就是缓存数据分别选择以 trigger 前、 trigger 为中心或者是以 trigger 后为主。 Altera 规定 Pre ,即 12%before trigger , 88%after ; Center ,即前后各 50% ; Post ,即 88%before , 12%after 。 实例演示触发位置不同选择          这个设置最大的好处是用户可以在线实时修改选择,而不需要重新编译工程。所以在实际调试工程的时候,找到触发条件后,常常有时候需要看 trigger 之后的信号情况,而有时候则需要观察 trigger 之前的状态,有了这个设置就非常方便了。 1、 首先我们来看设置为 “ Pre trigger position ”的实例,如图 2 所示。 图 2 2、 接着我们来看设置为 “ Center trigger position ”的实例,如图 3 所示。 图 3 3、 最后我们来看设置为 “ Center trigger position ”的实例,如图 4 所示。 图 4 结论 大家可以清楚看到图 2 、图 3 和图 4 的异同,相同点是触发的条件设置都是一样的,不同的就是触发后 SignalTap 显示的数据段不同,图 2 主要显示 trigger 发生之后的数据,图 3 显示平均展示 trigger 前后的数据,而图 4 则主要显是了 trigger 发生之前的数据。 另外,需要注意的是 SignalTap 最多可以设置 10 个触发条件( trigger condition ),如果设置了多个触发条件,那么触发数据缓存发生必须是所有触发条件都发生,而且存储数据的选择(即 trigger position )依据最后一个条件产生。比如图 2 到图 4 的实例,笔者设置了两个触发条件,分别是在 one_led_out 为“ four ”和“ eight ”,如图 5 所示。而数据采集存储是以 eight 条件触发时为依据。 图 5 :触发条件设置 图 6 :放大察看触发位置 图 6 是为了更清晰地看到触发位置,从而放大了图 2 ,可以看到触发位置位于从“ seven ”变化到“ eight ”处,即第二个触发条件“ eight ”发生时刻。 最后,如果有多个触发条件的时候,当有些触发条件在调试的时候如果不用时,可以 disable 这些触发条件,如图 7 所示,将触发条件中的“对号”去掉即可,需要的时候在选上。如图 7 所示我们去使能第二触发条件,然后重新运行 SignalTap ,那么获得的结果如图 8 所示,数据采样存储发生在单个触发条件“ four ”处。 图 7 :去使能某个触发条件 图 8 :采样存储触发发生在“ four ”时刻
  • 热度 15
    2013-8-15 16:33
    2302 次阅读|
    0 个评论
    调试工具: Altera的SignalTap II 目标器件:Altera的ArriaGX 主要功能模块:Altera的FIFO函数             由于项目中使用到了很多的FIFO,而且需要将两组相互独立的FIFO里的数据读出来进行组合并存入下一级FIFO,这个应用在我之前的有关FIFO"读空"和"写满"的博文里有过介绍,并给出了简单的仿真波形。最近上板调试项目这部分功能,其实FIFO的操作没有问题,只是在系统测试的时候总是觉得数据“失配”,查很多地方都正常,最后怀疑是否是在最起始的FIFO“组合”的时候出现了问题。花了两天时间调试,确实发现有偶发的FIFO失配问题,只是不太清楚是什么原因造成这种失配。          首先来解释一下这里所谓的“失配”问题,举个例子,有两个功能模块A和B,它们处理完的数据分别存放在FIFO-A和FIFO-B中,只有当这两个FIFO同时非空的时候才从这两个FIFO里各读出一个数据并组合成一个新的数据存入下一个FIFO,我们称其为FIFO-C,FIFO-C里的数据用于下一级处理,这里不做介绍。也就是说FIFO-A和FIFO-B中的数据是一一对应的.          系统能确保,当有信号时,功能模块A和B总是能各产生一个数据并存入各自FIFO,所以写FIFO-C的时候应该不会出现“失配”问题,即FIFO-A的第一数据和FIFO-B的第二个数据组合并写入FIFO-C,这就是失配。实际调试发现确实出现了这种失配问题。 图1:FIFO的数据写入控制时序          图1是一开始抓取的模块B的数据输出,也即对应的FIFO-B的写数据端口控制,比如图1明明显示当前写入的“143EB”,而实际读出的数据表现为“C4”。由于抓取的信号不够,所以似乎是告诉我图1所示的写时序存在问题,我一开始就怀疑是否逻辑中数据走线延时太长,导致写信号到达FIFO的写控制端口的时候,而数据却未到达,所以导致错误地将“C4”写入到了FIFO。我之所以这样怀疑是因为我抓取的是FIFO第一个数据。          经过不断的测试,我开始怀疑自己的上述怀疑。没有办法只得拉出更多的信号到SignalTapII里进行观察验证。确实,我的上述怀疑是错误的,FIFO的读写控制经过了严格仿真,不应该轻易出现错误的,问题的实质是在我认为的“第一个”数据写入FIFO-B之前,FIFO被意外的写入的了一个不需要的数据,即FIFO的写请求上“意外”地出现了另一个写请求,在图1所示的时刻之前将“C4”写入到FIFO-B。      图2显示了这个意外被写入的数据完整过程,由于一开始没有拉出FIFO的empty信号,其实如果有了这个信号,我应该在做图1所示的测试的时候就不应该首先怀疑是FIFO的写操作控制问题,因为在FIFO写第一个数据之前,FIFO已经是非空了,说明已经有另外一个数据被写入到FIFO了,那么就应该查为什么有这么一个不应该写入的数据被写入到了FIFO。可惜当时并没有观测empty,所以导致多纠结了半天(实际上,由于工程太大,添加过多的信号会导致meomory的消耗,并每次修改SignalTap需要重新编译,所以一开始并没有添加那么多“非关键”信号进入SignalTap)。 图2:被意外地插入到FIFO开头的数据             图2清晰地显示了当系统刚刚进入正常操作模式的时候模块B即出现一个“伪有效”数据,并被处理后写入到FIFO-B。而此时模块A并没有这样的数据,所以模块C在不知情的情况下从FIFO-A和FIFO-B中组合失配的数据到FIFO-C,而且就是这样一个意外的数据导致后面所有的有效数据都失配。           由于这种意外情况发生几率很低,所以测试的时候很花了一番精力才抓取的该“事件”,并最终在系统上进行了规避。  
  • 热度 24
    2013-1-4 00:04
    1941 次阅读|
    0 个评论
    随着FPGA的更进一步学习,慢慢的走进了NIOS II ,NIOS II 的学习中由于要用到SDRAM,所以先拿ARAM练练手,毕竟SRAM简单吗,呵呵,可是Modelsim一直有问题,所以就想用SignalTap II来在线仿真,搜着就搜到了这篇文章,就转载于此。谢谢博主…… 本文转自:http://www.cnblogs.com/daqiang/archive/2012/07/17/2596568.html 原文:ALTERA官方英文版。需要的点下载 SignalTap.pdf 。 本文由本人原创翻译,水平有限,仅学习所用,有错误请指正。 一、例子 我们使用如图1所示的verilog代码所实现的开关电路作为例子。这个电路把DE系列开发板上的前8个开关简单的和对应的8个红色LED相连接。它是这样工作的:在时钟(CLOCK_50)的上升沿读取开关的值,放入对应的寄存器,寄存器的输出与红色LED直接相连接。   按照图1代码实现该电路,锁定引脚,编译整个工程等等,这些在这里不再重复累述。   二、使用SignalTap II软件 在本文的第一部分,我们将建立SignalTap逻辑分析仪来探测8个LED开关的值,同时,我们将设定逻辑分析仪的触发信号为当第一个开关(LED )为高电平。 1. 选择File-New打开逻辑分析仪窗口,该窗口如图2所示。选择SignalTap II逻辑分析仪文件并点击OK。   2. SignalTap II界面如图3所示。保存文件并命名为switches.stp。在下一步如图4所示对话框中点击OK,接下来出现对话框”Do you want to enable SignalTap II file ‘switches.stp’ for the current project?”询问是否在当前工程中使用SignalTap II,点击Yes(图5)。现在,SignalTap II文件switches.stp已经和当前工程相关联了。   注意:如果我们需要在工程中不使用该SignalTap II文件,或者不使用SignalTap II逻辑分析仪,在Quartus II界面中选择Assignments-Settings。然后在打开窗口左边的分类列表中选择SignalTap II Logic Analyzer,如图6所示。可以把Enable SignalTap II Logic Analyzer前面的勾去掉来关闭逻辑分析仪。在一个工程中可能同时会有多个SignalTap文件,但在同一时刻只能有一个有效。多个SignalTap II文件是非常有用的,比如工程很大,在工程中不同的部分都需要用SignalTap II来捕捉信号,这样探测不同的部分时我们只需要使用不同的SignalTap II文件就可以了,避免反复设定SignalTap II文件。按照步骤1和步骤2可以建立新的SignalTap II文件,不同的SignalTap II文件拥有不同的文件名。如果要改变当前工程中已经关联的SignalTap II文件,在图6中的SignalTap II File name选择框中点右边的浏览按钮,选择所需要的SignalTap II文件,然后点击Open,最后点击OK就可以了。在本教程中,我们选中Enable SignalTap II Logic Analyzer选项并使用switches.stp文件。设定好后点击OK按钮关闭设置窗口。 3. 现在我们需要把工程中想要观察的信号结点添加进来。在SignalTap II窗口中的Setup标签页中,双击灰色字体记号”Double-click to add nodes”的区域,就会打开Node Finder窗口,如图7所示。在Filter区域中,选择SignalTap II:pre-synthesis,然后单击List,在Nodes Found区域中将会显示在工程中能被观察到的节点列表。在这里我们选中SW ,SW …到SW ,然后单击””按钮,这样就把要观察的开关节点添加到SignalTap II中。最后单击OK。   4. 在SignalTap II逻辑分析仪能正常工作之前,我们需要为SignalTap II模块指定驱动时钟,在例化时,SignalTap II模块包含在我们的设计中。在SignalTap窗口Signal Configuration面板中的单击Clock部分右边的”…”打开Node Finder窗口。点击List,显示所有能被添加为时钟的信号节点,然后双击CLOCK_50,结果如图8所示,最后点击OK。   5. 在SignalTap窗口中Setup标签页中,选中Trigger Conditions列中的单选框,然后在单选框右边的下拉菜单中选择Basic。右键节点SW 相对应的Trigger Conditions单元,选择High,如图9所示。这样设置以后,当DE系列开发板上对应的第一个开关被设置为高电平时,逻辑分析仪将会开始运行捕捉数据。注意到我们可以右键Trigger Conditions列单元中的添加进来的任何信号节点,并可以选择一系列不同的触发条件。当所有这些条件都同时满足时实际的触发条件才成立。在本文中,我们选择触发条件SW 为高电平,SW ,SW …SW 设为默认值Don’t Care,即触发条件和SW ,SW …SW 的值无关。   6. 接下来我们还需要正确的建立硬件环境。首先,确保DE系列开发板已经和电脑连接好且电源已经开启。然后,在SignalTap II窗口右上方中的Hardware部分,单击Setup,打开如图10所示的窗口,在Available Hardware Items菜单中双击USB-Blaster,最后点击Close。   7. 最后一步就是重新编译整个工程。在Quartus II窗口中,选择Processing-Start Compilation,接下来会弹出提示说需要保存改动,这里选择Yes。编译完后,打开Tools-Programmer,把重新编译的工程下载到DE系列开发板上。   三、使用逻辑分析仪观察信号 现在工程中嵌入的SignalTap II逻辑分析仪已经例化完成,并已经加载到DE系列开发板上,我们可以像使用外部的逻辑分析仪一样使用SignalTap II逻辑分析仪来观察信号。 1. 首先把DE系列开发板上所有的开关(0-7)设为低,当开关0的值变为1时,我们将会观察到这些开关的值。 2. 在SignalTap窗口,选择Processing-Run Analysis或者单击 图标。接着,单击SignalTap II窗口中的Data标签页。这时,我们应该得到和图11相似的界面。注意到这时SignalTap II Instance Manager面板中状态Status中显示”Waiting for trigger”,这是因为触发条件(开关0的值变为1)没有满足。(我们在之前的步骤中把开关0的值初始化设为0,如果没有初始化开关0的值为0,现在可以把它设为0然后再一次点击Run Analysis)。   3. 现在,我们可以把DE系列开发板上的开关0的值设为1来观察逻辑分析仪的触发特性。我们应该会得到如图12所示的数据。注意到数据窗口中不仅显示了8个开关节点在满足触发条件之后的数据值,还包含触发之前的一段数据值。为了更进一步的观察,我们可以把开关0-7的值设置为任意组合然后再次单击Run Analysis。当开关0的值再一次被设为1时,我们将在SignalTap II Logic Analyzer中观察到所有开关的数值。   四、高级触发选项 相比如上述的SignalTap II的基本触发控制,有时在一个设计中我们可能会需要一个更复杂的触发条件。在下面的部分中,我们将讲述如何使用高级触发条件来设置更复杂的触发条件。 4.1 多级触发 在这部分中,我们设置SignalTap II的触发条件为:当开关0,1,2,3的值依次从0变为1,即开关0-3的上升沿按顺序到来时。 1. 单击SignalTap II窗口中的Setup标签页。 2. 在Signal Configuration面板中,在Trigger Conditions下拉菜单中选择4,如图13所示(你可能需要往下滚动Signal Configuration面板才能看到该菜单)。这样,我们将在节点列表窗口中看到3个新的触发条件列表。 3. 右键点击触发条件1中对应SW 的单元,并选择上升沿Rising Edge。进行同样的操作把触发条件2中SW ,触发条件3中SW 和触发条件4中SW 的触发条件设为Rising Edge。这时,我们应该会得到如图14相似的Setup标签页界面。   4. 重新编译整个工程然后把配置文件重新加载到DE系列开发板上。 5. 回到SignalTap II窗口,单击Data标签页,然后点击Processing-Run Analysis。注意到窗口显示状态将一直会是”Waiting for trigger”直到满足相应的触发条件。接下来,按顺序依次把开关的值从0设为1,开关1的值从0设为1,开关2的值从0设为1,开关3的值从0设为1。 完成这些工作后,我们将会观察到如图15所示的所有开关的值。我们可以按照这一部分所讲述的方法建立不同的触发条件,然后在DE系列开发板上检验这些触发条件。 如果我们需要连续的观察逻辑分析仪,可以点击”Run Analysis”旁边的”Autorun Analysis”按钮,这样,在任何时刻,只要满足触发条件,要观察的信号值就会立刻得到更新显示而不需要再次选择”Run Analysis”。点击 图标可以停止”Autorun Analysis”功能。   4.2 高级触发条件 在这个部分中,我们将学习如何设置高级触发条件。这次,我们将把触发条件设为:当开关0,开关1和开关2中的任何一个发生跳变(上升沿或下降沿)。这意味着当这3个开关中的一个的值改变时,逻辑分析仪将会更新显示所有观察信号的值。注意,我们可以把要观察信号的不同组合逻辑功能来作为逻辑分析仪的触发条件。作为本例,我们设置为上诉的触发方式,当我们学会了本教程后,可以自己体验下设置不同的高级触发方式。 1. 打开switches工程。 2. 打开SignalTap窗口并选择Setup标签页,在Signal Configuration面板中确认多级触发的值为1。 3. 在信号节点列表中的Trigger Conditions列中,确认Trigger Conditions复选框已经选中,然后在下拉菜单中选择Advanced,如图16所示。这将立即弹出如图17所示的窗口,该窗口允许你使用SignalTap中观察的信号节点中的不同信号来建立一个逻辑电路,作为触发条件。     4. 在图17窗口的Node List部分中,高亮选中SW ,SW 和SW ,然后把它们拖曳到右边空白处的Advanced Trigger窗口,如图18所示。注意,我们也可以单独的对每个信号节点进行拉入和拖出。   5. 现在,我们需要添加必须的逻辑运算符到我们的电路中。我们需要1个OR门和3个边沿检测器。单击左下Object Library窗口Logical Operators左边的+号,可以找到OR门,如图19所示,然后把OR门拖入到Advanced Trigger Condition Editor窗口中。   6. 这次,单击Edge Level Edtector并把它拖入编辑窗口中。重复3次,然后把这些元件组成如图20所示的电路。3个输入SW ,SW 和SW 分别和3个edge and level detector连接,3个detector的输出再和OR门相连。OR门的输出连接到输出脚Result上,输出脚本身就已经在编辑窗口中的了。   7. 我们现在需要设置每个edge and level detector,让它们都能检测到下降沿或者上升沿。双击第一个detector,打开如图21所示窗口,在Setting输入框中输入E然后单击OK。这代表着当输入出现下降沿或者上升沿时,detector的输出为1。重复上诉步骤设置第二和第三个detector。   8. 为了测试上诉高级触发条件,重新编译工程然后重新配置DE系列开发板。接下来按照之前部分的方法运行SignalTap。我们应该会注意到,每当板上的开关0,1,2中的其中一个的值发生改变,SignalTap II逻辑分析仪都将会被触发。   五、采样深度和缓存获取模式 在本部分中,我们将学习怎样设置采样深度逻辑分析仪的Sample Depth和两种缓存获取模式。我们将使用之前的工程并使用分段缓存。分段缓存允许我们把数据获取缓存分成几个独立并划分好大小的部分。本例中,我们将把采样深度为256bits的缓存分成8个32bits的部分。这样将会允许我们捕捉发生在8个连续触发时间附近的8个不同事件。 1. 把触发配置设回Basic并只有一级触发。检查触发条件是否为SW 的跳变沿。 2. 在SignalTap II窗口中的Signal Configuration面板中的Data面板的Sample Depth下拉菜单中选择256。这个选项允许我们指定在我们的设计中的触发时刻附近总共有多少个采样点。如果我们需要更多的采样点来调试我们的设计,可以选择更大的采样深度。注意,如果采样深度选择过大,在我们的设计中将可能会不够资源来实现,这样,设计就会编译不过。如果这种情况发生,请减小采样深度的大小。 3. 在SignalTap II窗口的Signal Configuration面板中的Data部分,选中Segmented。然后在Segmented右边的下拉菜单中,选择8 32 sample segments。完成后的类似界面如图22所示。   4. 重新编译工程并加载配置文件。好了,我们可以使用分段获取模式Segmented Acquistion mode来观察我们的设计。 5. 回到SignalTap II窗口并单击Processing-Run Analysis。现在,反复拨动开关SW 并在两次拨动之间改变其他7个开关的值。当我们完成8次SW 的值改变时,采样缓存中的值将显示在data窗口中,这些显示的采样值是8个开关在触发时刻附近的数值。一种可能出现的波形如图23所示。该波形来源于实践者在改变SW 的值时同时改变其他开关的状态。   5.1使用Synthesis Keep指令 有时我们设计中的线网型wire变量在Quartus II编译中有可能会被优化掉。一个简单的例子如下面的verilog代码所示:   该电路的原理图如图25所示。标注ab和abc的三角符号元件为Quartus II插入的缓存模块,这些缓存并不改变通过它们的信号的值。   我们想利用SignalTTap II来观察输入SW 和输出LEDR 的值。同时,我们也想要观察内部信号wire ab的值。然而,如果没有加/*synthesis keep*/指令,只是按通常的verilog代码来编译,wire ab将会被优化掉,如图26所示:   因此,如果我们需要观察这个内部信号,我们可以告诉Quartus II我们不想把这个线网信号优化掉。加入/*synthesis keep*/指令在所声明的wire类型变量所在行的分号之前。图24所示代码已经包含了这句指令。按下面操作我们将可以观察到这个线型变量。 1.建立新的Quartus II工程threeInputAnd,并把图24所给出的verilog代码输入到工程文件中,编译工程。 2.打开Tools-SignalTap II Logic Analyzer,然后在SignalTap II窗口的Setup面板中,右键并选择Add Nodes。 3.在Filter区域中,选择SignalTap II:pre-synthesis,点击List。然后把节点ab,SW ,SW ,SW 和LEDR 加入到Selected Nodes List中并单击OK。 4.在Signal Configuration面板中,选择CLOCK_50作为时钟信号。 5.设置触发条件为当ab的值变高电平。 6.导入相关的引脚分配文件。 7.重新编译工程。 8.打开Tool-Programmer下载配置文件到DE系列开发板上。 9.再次打开SignalTap窗口,选择Data标签页。把DE系列开发板上的所有开关拨到值为0的位置。然后,单击Processing-Run Analysis启动逻辑分析仪。 10.把前两个开关拨到值为1的位置,这时,触发条件满足,观察信号。
相关资源
  • 所需E币: 4
    时间: 2019-12-25 17:11
    大小: 90.88KB
    上传者: 978461154_qq
      TheSignalTapEmbeddedLogicanalyzermegafunctioncapturessignalsfromanyinternalnodeorI/OpinofanAPEXIIorAPEX20Kdeviceinreal-timeatsystemspeed.SignalTapanalysisalsoworkswithallexistingEDAsynthesistooldesignflows.SignalTapanalysisalsoeliminatestheneedforexternalprobesanddesignfilechangestocapturesignalsfromaninternalnode.ThelogicanalyzercontrolsandsignalcapturedisplayareallaccessiblefromtheQuartusIIdesignsoftware.TheMasterBlasterTMorByteBlasterMVTMcommunicationscablessupportdatatransferbetweentheAPEXIIorAPEX20KdeviceandtheQuartusIIsoftwareforwaveformdisplayofsignalscapturedbySignalTaplogicanalysis.……
  • 所需E币: 5
    时间: 2019-12-25 16:59
    大小: 58KB
    上传者: 二不过三
    不错的资料,与大家分享希望以后大家能够把好的资料分享,共同进步!|技术文章||||用SignalTap嵌入逻辑分析仪验证PLD设计||作者:Altera公司||||||要说ASIC设计者的经验有所提示的话,那么将来的百万门级可编程逻辑设计中验||证会耗费大半的设计周期。随着设计复杂度的增加,传统的设计验证方法如仿真||需要其它技术和工具的补充,因为这些可编程芯片系统(SOPC)进行完全的真实||模拟是不可在适当的时间内完成。而且,设计规模的陡增必然需要新的工具来观||察已编程期间的内部操作。尤其是随着第三方IP使用的增加,它们需要获取内部||探测来验证操作,使其和设计的其它部分相分离。最后,由于封装技术的提高,||必须开发新的方法以使于对象BGA之类日趋小型化和大规模封装的硬件进行验证。||一种新的技术SignalTap,业已开发满足这些需求。SignalTap允许设计者在PLD运||行期间同时监视内部信号。通过下载电缆或传统的分析设备连接到用户工作部的P||C板卡上,便可……
  • 所需E币: 3
    时间: 2019-12-25 11:30
    大小: 112.76KB
    上传者: wsu_w_hotmail.com
    使用SignalTapII逻辑分析仪调试FPGA……
  • 所需E币: 3
    时间: 2019-12-25 09:52
    大小: 1.21MB
    上传者: givh79_163.com
    SignalTapⅡ嵌入式逻辑分析仪的使用……
  • 所需E币: 5
    时间: 2019-12-25 03:35
    大小: 75KB
    上传者: 2iot
    singnaltap的应用入门[pic]……
  • 所需E币: 4
    时间: 2019-12-24 19:11
    大小: 397.27KB
    上传者: wsu_w_hotmail.com
    【应用笔记】使用SignalTapII嵌入式逻辑分析仪调试NiosII系统(DebuggingNiosIISystemswiththeSignalTapIIEmbeddedLogicAnalyzer)该应用笔记指导你使用在软件执行期间由NiosII处理器产生的动态信息,来调试你的系统设计。ThisapplicationnoteguidesyoutodebugyoursystemdesignusingdynamicinformationprovidedduringsoftwareexecutionbytheNios®IIprocessor.AshorttutorialdemonstrateshowtousetheNiosIIplug-in,SignalTap®IILogicAnalyzer,andNiosIISoftwareBuildTools(SBT)forEclipsetotriggeron,capture,andtracethesignalswhichilluminatetheLEDs.DebuggingNiosIISystemswiththeSignalTapIIEmbeddedLogicAnalyzerAN-446-2.0ApplicationNoteThisapplicationnoteguidesyoutodebugyoursystemdesignusingdynamicinformationprovidedduringsoftwareexecutionbytheNiosIIprocessor.AshorttutorialdemonstrateshowtousetheNiosIIplug-in,SignalTapIILogicAnalyzer,andNiosIISoftwareBuildTools(SBT)forEclipset……
  • 所需E币: 3
    时间: 2019-12-24 18:56
    大小: 385.82KB
    上传者: givh79_163.com
    【应用笔记】在SOPC系统中使用SignalTapII嵌入式逻辑分析仪(UsingSignalTapIIEmbeddedLogicAnalyzersinSOPCBuilderSystems)SignalTapII嵌入式逻辑分析仪是一个系统级调试工具,可以捕获和实时显示SOPC设计中的信号。TheSignalTap®IIEmbeddedLogicAnalyzer(ELA)isasystem-leveldebuggingtoolthatcapturesanddisplaysreal-timesignalsinasystem-on-a-programmable-chip(SOPC)design.ByusingaSignalTapIIELAinsystemsgeneratedbySOPCBuilder,designerscanobservethebehaviorofhardware(suchasperipheralregisters,memorybuses,andotheron-chipcomponents)inresponsetosoftwareexecution.UsingSignalTapIIEmbeddedLogicAnalyzersinSOPCBuilderSystemsNovember2007,ver.1.1ApplicationNote323IntroductionTheSignalTapIIEmbeddedLogicAnalyzer(ELA)isasystem-leveldebuggingtoolthatcapturesanddisplaysreal-timesignalsinasystem-on-a-programmable-chip(SOPC)design.ByusingaSignalTapIIELAinsystemsgeneratedbySOPCBuilder,designerscanobservethe……