SignalTapII及SignalProbe使用指南

更新时间:2023-09-23 03:12:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SignalTapII及SignalProbe使用指南

1. SignalTapII支持器件及下载电缆

SignalTapII内嵌式逻辑分析仪需要占用ALMs/LEs布线资源和RAM采样存储资源,支 持下面的器件系列:StratxiII、Stratix、StratixIIGX、StratixGX、CycloneII、Cyclone、APEXII、APEX20K/E/C、Excalibur和Mercury。SignalII逻辑分析仪支持目前Altera所有下载电缆,包括USB Blaster、ByteBlasterII、ByteBlasterMV和MasterBlaster。 2. SignalTapII工作流程及资源消耗

1配置ELA(Embedded Logic Analyzer)○。

2通过QuartusII软件完成布局布线,ELA下载至FPGA中。 ○

3ELA采样到内部触发信号。 ○

4ELA通过JTAG电路与QuartusII软件发生通信,以图形化的界面显示出来。 ○

ELA占用片内LE资源由信号通道数及触发级数决定,占用片内RAM资源由信号通道数及采样深度来决定。Altera建议选择选择通道数量和采样深度时要考虑二者之间的平衡,以免占用太多RAM资源,影响原本的逻辑设计。比如不推荐同时使用1024个最大通道数和128K最大采样深度(相当于消耗了32,768 个M4K的资源)。下表给出了在Statix/Cyclone器件中使用ELA的资源占用情况。

Number of Channels 8 32 256 Number of Channels 8 32 256 M4Ks Based on Sample Depth 256 < 1 2 16 512 1 4 32 2K 4 16 128 8K 16 64 512 32K 64 256 Logic Elements Trigger Level 1 316 566 2900 Trigger Level 2 371 773 4528 Trigger Level 3 426 981 6156

3. SignalTapII设计流程

在设计中嵌入SignalTapII有两种方法:一是创建一个SignalTapII文件(.stp),然后定义STP文件的详细内容;二是用MegaWizard Plug-In Manager建立并配置STP文件,然后用MegaWizard实例化一个HDL输出模块。

1) 创建STP文件

在QuartusII软件中选择File菜单下New命令,弹出的New对话框中选择Other Files标签栏,选择SignalTap II File。或者选择Tools菜单下SignalTapII Logic Analyzer命令打开一个已经存在的STP文件。一个SignalTapII窗口如下图所示。

2) 使用MegaWizard Plug-In Manager

使用MegaWizard Plug-In Manager建立SignalTapII逻辑分析仪不需要建立STP文件,生成一个可以在设计中实例化的HDL文件。选择Tools菜单下MegaWizard Plug-In Manager命令,在弹出的对话框中选择SignalTapII Logic Analyzer,选择输出文件类型和名称之后,就需要完成对ELA的各种设置。如下图所示,另外列出成功实例化之后端口的描述表。

端口名 acq_data_in acq_trigger_in acq_clk trigger_in Trigger_out 在设计中实例化SignalTapII文件以后,为了在目标FPGA器件中适配逻辑分析仪,

类 型 输入 输入 输入 输入 输入 是否必要 否 否 是 否 否 描 述 表示在SignalTapII中被监听的信号 用于触发分析仪的触发输入信号 SignalTapII捕获数据的采样时钟 用于触发SignalTapII的输入信号 触发事件发生使能输出信号 必须编译QuartusII工程文件。编译完加入了SignalTapII逻辑分析仪实例化模块的设计工程以后,要捕获并观测数据,必须从SignalTapII MegaWizard的输出文件建立STP文件,选择File菜单下Create/Update Menu->Create SignalTapII File from Design Instance(s)命令,输入STP文件名,则根据SignalTapII MegaWizard中的设置自动建议并打开STP文件。如下图所示。

4. SignalTapII窗口说明及设置

1) Instance Manager

Instance窗口显示了每个Instance的资源消耗,还可以通过右键创建新的Instance,便于用户分组不同的观测信号。通过选择当前不同的Instance可以分别进行信号的设置和观测。

2) Signal Configuration

如下图所示,图中标注的地方是用来设置采集时钟的。采集时钟在上升沿处采集数据,设计者可以使用设计中的任意信号作为采集时钟,但Altera建议最好使用全局时钟,而不要使用门控时钟。另外时钟信号是不可以作为待采样数据的,就算将时钟信号放入观测窗口,触发采样之后也无法观测到正确的信号。如果用户没有分配采集时钟,QuartusII软件会自动建立一个名为auto_stp_external_clk的时钟引脚。在设计中用户用户必须为这个引脚单独分配一个器件引脚,在PCB上必须有一个外部时钟信号来驱动该引脚。

3) Sample Depth

设置每次数据信号的采样深度,SignalTapII支持0-512Kbits。(当使用外部逻辑分析仪时可以选择采样深度为0)另外如果使用的器件为Stratix或StratixII,可以选择作为数据采样的RAM类型。对于用户来说,手动合理分配RAM类型是有一定的必要性。

4) Data Capture

在Buffer acquisition mode栏中,在Circular列表中可以选择数据触发的位置,包括: ● Pre trigger position:保存触发信号发生之前的信号状态信息 。

● Center trigger position:保存触发信号发生前后的数据信息,各占一半。 ● Post trigger position:保存触发信号发生之后的信号状态信息。

● Continuous trigger position:连续保存触发采样数据,直到设计者停止采集数据

为止。

选择Circular类型Buffer时,采集数据被放置在一个环形数据缓冲区中。在数据采集过程中,新的数据可以替代旧的数据,如下图左所示,这个环形数据缓冲区的大小等于用户设置的数据采样深度。图右显示了采用Circular作为数据获取Buffer的采样数据结果。

选择Segmented类型Buffer时,数据获取Buffer会分成用户自定义的小块。比如4K的RAM会分成4个1K的Segments。当数据触发时,采样数据被收集到一个Segment里,所有的Segment被填满之后收集工作会重新开始。在下图中可以看到,同样的逻辑分析设置采用Segmented作为Buffer得到的数据采样结果不同于Circular类型。

5) Trigger

● Trigger Level

SignalTapII的多级触发特性为设计者提供了更精确的触发条件设置功能,最高可以设置10级触发。在多级触发中,SignalTapII首先对第一级触发模式进行触发;当第一级触发表达式满足条件,测试结果为TRUE时,SignalTapII对第二级触发表达式进行测试;依此类推,直到所有触发级完成测试,并且最后一级触发条件测试结果为TRUE时,SignalTapII开始捕获信号状态。一般来说简单的测试只需要选择一级触发就可以了。 ● Trigger-In

Trigger-In设置SignalTapII的外部触发信号,可以是任意的I/O引脚。如果没有指定I/O管脚,软件会自动生成名为“auto_stp_trigger_in_n”的管脚,其中后缀n从1开始。在“Pattern”列表中可以选择触发方式:“Don’t Care”(无关项触发)、“Low ”(低电平触发)、“High”(高电平触发)、“Falling Edge”(下降沿触发)、“Rising Edge”(上升沿触发)和“Either Edge”(双沿触发)。 ● Trigger-Out

Trigger-Out设置指定的触发输出信号连接到外部I/O管脚,可以作为外部测试设备的同步信号或者另一个SignalTapII文件的Instance内部触发事件。如果没有指定I/O管脚,软件会自动生成名为“auto_stp_trigger_out_n”的管脚,其中后缀n从1开始。在“Level”列表中可以选择“Active Low”(信号从高电平变为低电平)和“Active High”(信号从低电平变为高电平)两种不同的输出方式。另外触发信号输出相对实际触发时刻都会有4个时钟周期的延迟。

6) Waveform Viewer

如下图所示,Viewer窗口包含了Setup和Data两个标签栏。Setup标签栏内可以选择需捕获的信号或触发信号,包括完成最多10级的触发设置。Data标签栏内则显示了所有信号的捕获结果。

在Setup标签栏内用来添加待观测信号,可以通过“Edit”菜单下“Add Nodes…”命令,右键点击快捷菜单“Add Nodes…”命令,或双击标签栏内空白处这三种方式来添加信号。在弹出的“Nodes Filter”对话框中,在Filter列表中只能在“SignalTapII:

Pre-systhensis”和“SignalTapII:Post-fitting”两种过滤器做信号选择,其他过滤器的信号是无法在SignalTapII下被捕获的。Pre-systhensis下信号在对当前设计进行Analysis & Elaboration(Processing->Start菜单下)操作以后存在,表示RTL信号。如果对设计修改以后,执行Analysis & Elaboration命令后就可以快速加入一个新的节点名。Post-fitting下信号在对当前设计进行物理综合优化以及布局布线后存在。需要注意的是,不是所有信号都可以被选择为待观测信号的。

被选择信号列表中的“Data Enable”核选框控制是否作为被捕获的信号,如果不选则可以降低采样memory的大小。“Trigger Enable”核选框控制是否作为触发信号。通过不同的核选,可以区分选择被捕获信号和触发信号,达到节省ELA资源消耗的目的。

在Setup窗口下可以完成对触发信号的简单设置(Base Triggering),如下图所示。通过右键单击Trigger Levels标签栏下的列表项可以完成触发设置。可以看到在下图中设置了10级触发(图中没有显示完全),每级触发都设置了不同的条件。(此设计是用来捕获七段数码管的显示值,为了显示数码管可能出现的全部数值,所以选择了10级的触发级数。)右键点击出来的快捷菜单可以分别选择“Don’t care”、“Low”、“High”、“Failing Edge”、“Rising Edge”和“Either Edge”的触发设置。

Setup窗口下的“Debug Port Out”列表可以通过点击右键使能或禁用Debug Port,将ELA捕获到的信号通过布线资源连接到外部空余的I/O管脚上。如果使能Debug Port,QuartusII软件将自动生成一个名为“auto_stp_debug_out_m_n”的引脚,如下图所示。其中m代表定义instance的序号,n代表在待捕获信号列表中定义Debug Port时的序号。需要注意的是,当使能Debug Port之后重新编译工程,是可以在Assignment Editor下对Debug Port管脚进行约束的。如果没有约束,QuartusII软件会自动分配管脚,可以在Compilation Report->Fitter->Resource Section->Output Pins下的报告中看到Debug Port被软件自动分配到哪个管脚上。

Setup窗口下还有一个“Incremental Route”使能选项,可以实现增量式布线的

功能,在不需要完全重新编译的情况下实现节点之间的切换,提高布线效率。(比如添加/删除Instance、待测数据或触发信号;修改采样时钟或存储深度;使能或修改Trigger-In/Trigger-Out;使能Debug Port。这几种情况下需要实现重新编译。)

实现增量式布线之前需要使能“Smart Recompilation”的功能,在QuartusII软件下打开Assignments菜单下Setting对话框,SignalTapII Logic Analyzer标签栏下打开下图中的画红框的选项。

除了需要打开“Smart Recompilation”选项之外,还可以在下图所示的红框中设置已分配节点的数目。在Data栏和Trigger设置已分配节点数目是指这些节点可以作为布线预留节点,保证以后可以再添加信号。一般情况下选择Auto就可以了。需要注意的是,添加“Post-Fitting”类型节点会引起增量式布线,如果添加“Pre-Synthesis”类型节点QuartusII软件会认为是一个完全的重新编译过程。

7) JTAG Chain Configuration

建立好STP文件并完成编译之后,即可以将包含ELA信息的配置文件通过JTAG链下载至FPGA内部,点击下图中的配置按钮完成文件下载。如果用户的JTAG链上串联了多个FPGA,可以分别对每个FPGA下载sof文件并做ELA信号逻辑分析。多个

FPGA可以在下图中的“Device”下拉框来选择,通过“@1”、“@2”、“@3”…这样的前缀来区分。

8) Acquire Data

将包含ELA信息的sof文件下载至FPGA后,即可以进行信号的捕获。如下图所示,SignalTapII支持一次性捕获信号和持续捕获信号两种方式。

5. SignalTapII其他用法

1) Mnemonic Table

比如设置触发信号条件时会用到状态机或编解码(七段码等),可以通过用户自定义触发数据。打开“Edit”菜单下“Mnemonic Table Setup”或在setup窗口右键快捷菜单点击“Mnemonic Table Setup”。下图中是一个七段码的设置。设置完成后在“Trigger Levels”列表下右键弹出的快捷菜单中可以选择刚设置的“Mnemonic Table”中的值。

2) QuartusII Netlist Optimization

在QuartusII软件中设置某些综合的优化选项是不适合SignalTapII的,可能会导致SignalTapII节点丢失。如果使用SignalTapII,综合选项中有关“Register Re-timing”和“WYSIWYG Re-synthesis”的优化功能都是禁用的。(Settings->Analysis & Synthesis Settings->Synthesis Netlist Optimizations)另外在SignalTapII下的节点为了保证不会与综合优化选项冲突,可以在Assignments Editor下Logic Option设置“Netlist Optimizations”为“Never Allow”。如下图所示。

3) Advanced Triggering

相对于以上介绍的Basic Trigger,SignalTapII还可以设置更为复杂的触发信号。在Trigger Levels列表下选择Advanced,就会弹出新的触发信号设置窗口。

如上图所示,“Node List”列出了可供选择的触发信号节点,这些节点都为“Pre-Synthesis”类型。“Object Library”列出了可建立逻辑的函数,将所需函数直接拖到“Advanced Trigger Condition Editor”下即可以进行图形化的编辑。下表显示了“Object Library”下所用到的逻辑函数。

需要注意的是,如果Object的参数设置显示为下图中的白色背景,表示具有实时可配置性。参数发生改变后需要再次编译是不会导致一次完全编译的,这样便节省了编译时间。

6. SignalProbe增量式布线

1) SignalProbe支持器件

SignalProbe利用多余的I/O管脚(测试引脚)将需观察的内部信号节点通过增量式布线引出来,可以节省大约10%的编译时间。SignalProbe不会影响已完成编译节点的布局功能,也不会降低设计的Fmax。SignalProbe支持的器件为:Stratix,StratixII,

StratixGX,Cyclone,MAXII,Excalibur,APEXII和APEX20K/E/C。

2) 使用SignalProbe

(a) 使能“Smart Compilation”

打开Assignments菜单下Settings->Compiler Process Settings使能下图中红框部分。

(b) 预留SignalProbe输出引脚

在Assignmets Editor下Pin栏约束SignalProbe引脚。管脚名称可以不在module下定义,随便取一个名字就行。但此管脚在硬件电路上是连接到测试管脚上,方便使用外部仪表做测试。在Reserved下拉框中选择“As SignalProbe output”预留管脚。

(c) 申明SignalProbe Source

打开Assignments菜单下Settings->SignalProbe Settings,点击“Assign SignalProbe Pins…”按钮,在弹出的对话框中设置SignalProbe Source。

(d) 完成SignalProbe编译

打开Processing菜单下Start->Start SignalProbe Compilation,或者直接选择完全编译。 (e) 下载器件

本文来源:https://www.bwwdw.com/article/ugcd.html

Top