触发器状态机语言描述
触发器状态机语言用于描述映射到 ILA 调试核的高级触发器逻辑的复杂触发条件。触发器状态机具有下列特性 :
• 最多 16 种状态。
• 用于复杂状态转换的单向、双向和三向条件分支。
• 4 个内置 16 位计数器 , 用于对事件进行计数、实现定时器等。
• 4 个内置标记 (flag) , 用于监控触发器状态机执行状态。
• 触发器操作。
状态
每个状态机程序均可声明最多 16 种状态。每种状态均由状态声明和主体组成 :
state <state_name>:
<state_body>
Goto 操作
goto 操作用于执行状态转换。以下是使用 goto 操作在触发前执行状态过渡的示例 :
state my_state_0:
goto my_state_1;
state my_state_1:
trigger;
条件分支
触发器状态机语言支持对应每个状态的单向、双向和三向条件分支。
• 单向分支涉及使用 goto 操作 , 且其中不含任何 if / elseif / else / endif 结构 :
state my_state_0:
goto my_state_1;
• 双向条件分支使用 goto 操作 , 且其中包含 if / else / endif 结构 :
state my_state_0:
if (<condition1>) then
goto my_state_1;
else
goto my_state_0;
endif
• 三向条件分支使用 goto 操作 , 且其中包含 if / else / elseif / endif 结构 :
state my_state_0:
if (<condition1>) then
goto my_state_1;
elseif (<condition2>) then
goto my_state_2;
else
goto my_state_0;
endif
计数器
4 个内置 16 位计数器都具有固定名称 , 分别为 $counter0 、 $counter1 、 $counter2 和 $counter3 。计数器可
复位、递增 , 也可用于条件语句。
• 要将计数器复位 , 请使用 reset_counter 操作 :
state my_state_0:
reset_counter $counter0;
goto my_state_1;
• 要使计数器递增 , 请使用 increment_counter 操作 :
state my_state_0:
increment_counter $counter3;
goto my_state_1;
标记
标记 (Flag) 可用于监控触发器状态机程序执行时的进展情况。 4 个内置标记都具有固定名称 , 分别为 $flag0 、
$flag1 、 $flag2 和 $flag3 。标记可设置也可清除。
• 要设置标记 , 请使用 set_flag 操作 :
state my_state_0:
set_flag $flag0;
goto my_state_1;
• 要清除标记 , 请使用 clear_flag 操作 :
state my_state_0:
clear_flag $flag2;
goto my_state_1;