使用高级触发器模式
ILA
核可在核生成时或插入时进行配置
,
以包含下列高级触发器功能
:
• 含最多
16
种状态的触发器状态机
• 每个状态均包含单向、双向或三向条件分支。
• 在触发器状态机程序中最多可使用
4
个计数器来保留多个事件的追踪记录。
• 在触发器状态机程序中最多可使用
4
个标记来表示某些分支的发生时间。
• 此状态机可执行“
goto
”、“
trigger
”及各种计数器和标记相关的操作。
如果硬件器件内运行的设计中的
ILA
核包含高级触发器功能
,
那么可通过将
ILA
仪表板的“
ILA
属性
(ILA Properties)
”
窗口中的触发器模式
(Trigger mode)
控制设置为
ADVANCED_ONLY
或
ADVANCED_OR_TRIG_IN
来启用高级触发器模
式功能。
指定触发器状态机程序文件
将“触发器
(Trigger)
”模式设置为
ADVANCED_ONLY
或
ADVANCED_OR_TRIG_IN
时
,
在
ILA
仪表板中会发生
2
项更
改
:
1.
在“
ILA
属性
(ILA Properties)
”窗口中会显示名为
Trigger State Machine
的新控件
2.
“基本触发器设置
(Basic Trigger Setup)
”窗口将被替换为“触发器状态机代码编辑器
(Trigger State Machine code
editor)
”窗口。
如果您首次指定
ILA
触发器状态机程序
,
那么“
Trigger State Machine code editor
”窗口将如下图所示。

要创建新的触发器状态机
,
请单击“
Create new trigger state machine
”链接
,
否则
,
请单击“
Open existing trigger
state machine
”链接以打开触发器状态机程序文件
(
扩展名为
.tsm
)
。您还可以使用“
Trigger state machine
”文本
文件和
/
或
ILA
仪表板的“
ILA Properties
”窗口中的“
Browse
”按钮来打开现有触发器状态机程序文件。
编辑触发器状态机程序
如果您创建了新的触发器状态机程序文件
,
那么默认情况下将以简单触发器状态机来填充触发器状态机代码编辑器窗口
(
请参阅下图
)
。

简单默认触发器状态机程序设计为对于任何
ILA
核配置都有效
,
与调试探针或触发器设置无关。这意味着您可针对
ILA
核单击“
Run Trigger
”
,
而无需修改触发器状态机程序。
但您可能想要修改触发器状态机程序以实现某些高级触发条件。位于上图所示简单状态机顶部的注释块提供了有关如何
在
Vivado IDE
中使用内置语言模板来构造触发器状态机程序的指示信息
(
请参阅下图
)
。在“触发器状态机语言描
述”中提供了
ILA
触发器状态机语言的完整描述
(
包括示例
)
。

编译触发器状态机
每次运行
ILA
触发器时
,
都会编译触发器状态机。如果您想编译触发器状态机而不运行或装备
ILA
触发器
,
请单击
“
ILA
仪表板
(ILA Dashboard)
”中的“编译触发器状态机
(Compile trigger state machine)
”按钮
(
如下图所示
)
。

启用触发器输入和输出端口
ILA
核可在核生成时配置为包含专用触发器输入端口
(
TRIG_IN
和
TRIG_IN_ACK
)
和专用触发器输出端口
(
TRIG_OUT
和
TRIG_OUT_ACK
)
。如果
ILA
核启用触发器输入端口
,
那么您可使用以下“触发器模式
(Trigger Mode)
”设置以在
TRIG_IN
端口上发生事件时触发
:
•
BASIC_OR_TRIG_IN
:
用于在
ILA
核的
TRIG_IN
管脚执行逻辑
OR
操作并且目标模式为
BASIC_ONLY
触发器模式时
触发
ILA
核。
•
ADVANCED_OR_TRIG_IN
:
用于在
ILA
核的
TRIG_IN
管脚执行逻辑
OR
操作并且目标模式为
ADVANCED_ONLY
触发器模式时触发
ILA
核。
•
TRIG_IN_ONLY
:
用于在
ILA
核的
TRIG_IN
管脚从低位转换至高位时触发
ILA
核。
如果
ILA
核启用触发器输出端口
,
那么您可使用以下
TRIG_OUT
模式来控制将触发事件传输至
TRIG_OUT
端口的过
程
:
•
DISABLED
:
禁用
TRIG_OUT
端口。
•
TRIGGER_ONLY
:
启用将基本
/
高级触发器条件的结果传输至
TRIG_OUT
端口的过程。
•
TRIG_IN_ONLY
:
将
TRIG_IN
端口传输至
TRIG_OUT
端口。
•
TRIGGER_OR_TRIG_IN
:
启用将基本
/
高级触发器条件的逻辑
OR
操作结果和
TRIG_IN
端口传输至
TRIG_OUT
端口
的过程。
配置采集模式设置
当
ILA
核状态为“触发前
(Pre-Trigger)
”、“等待触发
(Waiting for Trigger)
”或“触发后
(Post-Trigger)
”时
,
即可采集
数据样本
,
请参阅“查看触发和采集设置”章节了解更多详细信息。“采集
(Capture)
”模式控制用于选择采集每个样
本前的条件
:
• “
ALWAYS
”
:
在给定时钟周期内存储数据样本
,
忽略任何采集条件
• “
BASIC
”
:
仅当采集条件求值结果为“
true
”时
,
才在给定时钟周期内存储数据样本
您也可以使用
set_property
Tcl
命令来更改
ILA
核的采集模式。例如
,
要将
ILA
核
hw_ila_1
的采集模式更改为
“
BASIC
”
,
请使用以下命令
:
set_property CONTROL.CAPTURE_MODE BASIC [get_hw_ilas hw_ila_1]
相关信息
查看触发和采集状态
使用基本采集模式
使用基本采集模式来描述采集条件
,
即由参与其中的调试探针比较器组成的全局布尔公式。使用“基本采集设置
(Basic
Capture Setup)
”窗口
(
请参阅下图
)
来创建此采集条件和调试探针比较值。

配置“基本采集设置”窗口
在“基本采集设置
(Basic Capture Setup)
”窗口中配置调试探针和基本采集条件的过程与在“基本触发器设置
(Basic
Trigger Setup)
”窗口中处理调试探针的过程非常类似。
• 如需了解有关在“
Basic Capture Setup
”窗口中添加探针的信息
,
请参阅“在‘基本触发器设置’窗口中添加探
针”部分。
• 如需了解有关在“
Basic Capture Setup
”窗口中的每个探针上设置比较值的信息
,
请参阅“
ILA
探针比较值设置”
部分。
• 如需了解有关在“
Basic Capture Setup
”窗口中设置基本采集条件的信息
,
请参阅“设置基本触发条件”部分。主
要差异之一在于用于控制采集条件的
ILA
核属性称为
CONTROL.CAPTURE_CONDITION
。
相关信息
在“基本触发器设置”窗口中添加探针
ILA
探针比较值设置
设置基本触发条件
设置采集窗口数量
ILA
采集数据缓存可分为
1
个或多个采集窗口。每个窗口的深度均为
2
次幂
,
它表示样本数且范围为
1
到
(((
缓存大
小
) / (
窗口数
)) - 1)
。例如
,
如果
ILA
数据缓存深度为
1024
个样本
,
且分为
4
个采集窗口
,
那么每个窗口深度最大为
256
个样本。每个采集窗口都有各自独立的触发器掩码
,
对应于触发器事件
,
此类事件会导致填充采集窗口。
注释
:
不支持每个
ILA
缓存大小等于采集窗口数。
提示
:
请在整个
ILA
数据采集缓存填满之前单击“停止触发器
(Stop Trigger)
”
,
以上传并显示已填充的所有采
集窗口。例如
,
如果
ILA
数据缓存分为
4
个窗口
,
其中
3
个已填充数据
,
那么单击“
Stop Trigger
”就会停止
ILA
核
,
然后上传并显示
3
个已填充的采集窗口。
下表显示了将“采集窗口数
(Number of Capture Windows)
”设为大于
1
的值并将“触发器位置
(Trigger Position)
”设
为
0
时
,
Vivado
运行时软件与硬件之间的交互。

下表显示了将“
Number of Capture Windows
”设为大于
1
的值
,
并将“
Trigger Position
”设为大于
0
的值时
,
Vivado
运行时软件与硬件之间的交互。

在采集窗口中设置触发器位置
“采集模式设置
(Capture Mode Settings)
”窗口中的“触发器位置控制
(Trigger position control)
”或“
ILA
核属性
(ILA
Core Properties)
”窗口中的“
Trigger Position
”属性可用于设置采集的数据窗口中的触发器标记的位置。您可将触发器
位置设置为采集的数据窗口内的任意样本编号。例如
,
如果采集的数据窗口深度为
1024
个样本
:
• 样本编号
0
对应于采集的数据窗口中的第一个
(
最左侧
)
样本。
• 样本编号
1023
对应于采集的数据窗口中的最后一个
(
最右侧
)
样本。
• 样本编号
511
和
512
对应于采集的数据窗口中的
2
个“中心”样本。
您也可以使用
set_property
Tcl
命令来更改
ILA
核触发器位置
:
set_property CONTROL.TRIGGER_POSITION 512 [get_hw_ilas hw_ila_1]
设置采集窗口的数据深度
使用“采集模式设置
(Capture Mode Settings)
”窗口中的“数据深度控制
(Data Depth control)
”或“
ILA
核属性
(ILA
Core Properties)
”窗口中的“采集数据深度
(Capture data depth)
”属性来设置
ILA
核采集的数据窗口的数据深度。您
可将数据深度设置为从
1
到
ILA
核的最大数据深度之间的任意
2
次幂值
,
该值在核生成或插入时间之间设置。
注释
:
请参阅“在调试核上修改属性”部分
,
以详细了解在使用网表插入探测流程添加到设计中的
ILA
核上
,
如何设置
最大采集缓存数据深度。
您也可以使用
set_property
Tcl
命令来更改
ILA
核数据深度
:
set_property CONTROL.DATA_DEPTH 512 [get_hw_ilas hw_ila_1]