触发器状态机语言描述
触发器状态机语言用于描述映射到
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;