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