ILA 交叉触发
ILA 交叉触发功能支持在 ILA 核之间以及在 ILA 核与处理器 ( 如 Zynq ® -7000 SoC ) 之间进行交叉触发。如需在位于不
同时钟域中的 2 个 ILA 核之间执行触发 , 或者要在处理器与 ILA 核之间执行硬件 / 软件交叉触发 , 可使用该功能。
要使用交叉触发功能 , 在核生成时 , 应配置 ILA 核心以使其包含专用触发器输入端口 ( TRIG_IN 和 TRIG_IN_ACK ) 和
专用触发器输出端口 ( TRIG_OUT 和 TRIG_OUT_ACK ) 。如果要使用 ILA 触发器输入或输出信号 , 则必须使用将 ILA
核添加到设计中的 HDL 例化方法。

TRIG_OUT_ACK 是 ILA 核 ( 另一个 ILA 、用户设计或处理器 ) 的指示信号 , 表明已正确接收到 TRIG_OUT , 它会导致
ILA 在接收到 TRIG_OUT_ACK 时拉低 TRIG_OUT 信号。
换言之 , TRIG_OUT 将保持高电平直至 TRIG_OUT_ACK 可用为止。如果 TRIG_OUT_ACK 信号绑定到低电平 , 那么
TRIG_OUT 将保持高电平 , 直至用户重新装备 ILA 为止。届时 TRIG_OUT 才会转至低电平。如果 TRIG_OUT_ACK 绑
定到低电平 , 那么您可重新装备 ILA 。
以下显示了典型的交叉触发设置 , 其中 ILA2 交叉触发到 ILA1 内。 ILA2 的 TRIG_OUT 信号连接到 ILA1 的 TRIG_IN 信
号。 ILA1 的 TRIG_IN_ACK 信号则连接到 ILA2 的 TRIG_OUT_ACK 信号。
(ILA 2) trig_out -> (ILA 1) trig_in
(ILA 1) trig_in_ack -> (ILA 2) trig_out_ack


• 假定驱动 trig_in 端口的逻辑与 ILA clk 保持同步。
• 当 trig_in 断言有效后 , trig_in_ack 信号需经过 1 个时钟周期后才能断言有效。
• 当使用 trig_in 或者满足触发条件后 , trig_out 信号需经过 9 个时钟周期才能断言有效。
• 仅当触发器信号断言无效后 , trig_in_ack 和 trig_out_ack 信号才会转至低电平。
如需获取有关在 FPGA 互连结构与 Zynq-7000 SoC 处理器之间使用交叉触发功能的详细教程 , 请参阅《 Vivado Design
Suite 教程 : 嵌入式处理器硬件设计》 ( UG940 ) 。
例化调试核
生成调试核后 , 在 HDL 源代码中将其例化 , 然后将其连接到要探测的信号以便对其进行调试。以下是 Verilog HDL 源
文件中的 ILA 实例的示例 :
u_ila_0
(
.clk(clk),
.probe0(counterA),
.probe1(counterB),
.probe2(counterC),
.probe3(counterD),
.probe4(A_or_B),
.probe5(B_or_C),
.probe6(C_or_D),
.probe7(D_or_A)
);
注释 : 不同于旧的 VIO 和 ILA v1.x 核 , 新的 ILA 核实例无需连接至 ICON 核实例。而改为将 Debug Hub 核 ( dbg_hub )
自动插入已综合的设计网表 , 以便在新的 ILA 核与 JTAG 扫描链之间提供连接。
对包含调试核的设计执行综合
下一步 , 在 Vivado Design Suite 中单击“ Run Synthesis ”或者运行以下 Tcl 命令来对包含调试核的设计执行综合 :
launch_runs synth_1
wait_on_run synth_1
您也可以使用 synth_design Tcl 命令来对设计执行综合。如需了解有关各种设计综合方法的更多详细信息 , 请参阅
《 Vivado Design Suite 用户指南 : 综合》 ( UG901 ) 。
在已综合的设计内查看调试核
完成设计综合后 , 您可打开已综合的设计 , 以查看调试核并修改其属性。单击 Flow Navigator 中的“ Open
Synthesized Design ”以打开已综合的设计 , 然后选中“ Debug ”窗口布局以打开“ Debug ”窗口 , 其中会显示您的
ILA 调试核已连接到 Debug Hub 核 ( dbg_hub ) , 请参阅下图。

更改 Debug Hub 核的 BSCAN 用户扫描链
您可通过如下方式来查看和更改 Debug Hub 核的 BSCAN 用户扫描链索引 : 选择“ Debug ”窗口中的“ dbg_hub ”、
选择“ Properties ”窗口中的“ Debug Core Options ”视图 , 然后更改“ C_USER_SCAN_CHAIN ”属性的值 ( 请参阅下
图 ) 。
重要提示 ! 对于 Debug Hub 核 , C_USER_SCAN_CHAIN 默认值为 1 。如果对于 Debug Hub 核使用的扫描链值
不为 1 , 则必须在器件上通过硬件管理器来手动更改这些值。请参阅“硬件器件编程”以获取更多详细信息。
重要提示 ! 如果您计划使用 Microprocessor Debug Module (MDM) 或者其它将 BSCAN 原语与 Vivado 逻辑调试
核搭配使用的 IP , 那么您需要将 dbg_hub 的 C_USER_SCAN_CHAIN 属性设置为与其它 IP 扫描链设置不冲突
的用户扫描链。否则 , 可能导致后续实现流程中出错。
