基於狀態的觸發流程可讓您定義自訂的觸發流程,以組織您的觸發條件。這些範例顯示一般觸發流程情境的範本,並說明以狀態為基礎的觸發流程有用的各種情境。在所有這些範例中,您可以使用「一個視窗」中的「所有狀態」顯示模式,將流程描述直接貼到SignalTap II 狀態的觸發流量標籤中,並修改描述以符合您的除錯情境。
基於狀態的觸發流程說明
確定包含觸發動作的狀態是否為第一,
因為有條件的對帳單是優先順序。
如果 (c1 >= 5)
觸發器;
否則如果 ( ! 條件 1 )
增量 c1;
如果 (條件 1 &c1 < 5)
重設 c1;
資料分析結果
基於狀態的觸發流程說明
狀態 ST1:
如果 (條件 1 與 c1 > 0 &c1 < 5)
觸發器;
如果 (! 條件 1 與 c1 < 6)
增量 c1;
如果 (條件 1 &c1 > 5)
重設 c1;
在未發生條件 1 的長序列中,如果有條件聲明,則第二個則新增了 Boolean 狀態 c1 <6,以防止計數器封包。
資料分析結果
基於狀態的觸發流程說明
狀態 ST1:
如果 (c1 >= 5)
觸發器;
否則,如果 ( 條件 1 )
增量 c1;
資料分析結果
群體價值第 5 次轉換的導火索
方法 #1:使用邊緣敏感觸發器
觸發條件的設定
針對此案例,我們可以定義邊緣敏感的觸發條件,偵測到所有匯流排轉換至所需的群組值。我們需要在資料匯流排上的任何位進行邊緣偵測,從邏輯上進行 AND,相較于我們期望的群組價值。在此情況下,需要進階觸發條件。下方顯示進階觸發條件編輯器的設定。
基於狀態的觸發流程說明
狀態 ST1:
如果 (c1 >= 5)
觸發器;
其他如果 (條件 1)
增量 c1;
資料分析結果
方法 #2:使用簡單的觸發器與基於狀態的觸發流程
觸發條件的設定
由於為大型匯流排值設定進階觸發條件可能很麻煩,因此這種替代方法使用基本的觸發器,並使用狀態式的觸發流程來偵測匯流排轉換至所需的群組值。
基於狀態的觸發流程說明
狀態 ST1:
如果 (條件 1)
開始
增量 c1;
goto ST2;
結束
狀態 ST2:
如果 (c1 >= 5)
觸發器;
等候條件;維持在此狀態,直到條件 1 為錯誤,不容忽視
所有非匯流排轉換的條件 1 的發生
否則如果 (! 條件 1)
開始
goto ST1;
結束
資料分析結果
請注意,與第一種方法相比,擷取資料的方式略有差異。在此情況下,會使用等級敏感的觸發器來執行觸發條件。如果匯流排值在資料分析開始時就將所需的群組值停放,則此方法包含計數中的群組值。由於第一種方法僅計算匯流排轉換至所需的群組價值,如果收購開始時群組值已停在匯流排上,則第一種方法會忽略第一次出現群組值。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 ( 條件 1 ||條件3 )
goto ST2;
其他如果 (條件2)
goto ST3;
否則如果 ( ! 條件2 )
goto ST1;
狀態 ST3:
觸發器;
資料分析結果
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 ( 條件 1 )
goto ST2;
其他如果 (條件2)
觸發器;
還
goto ST1;
資料分析結果
在條件 1 和條件 3 之間未發生的情況下觸發
觸發條件的設定
三種基本的觸發條件定義為所需的群組值。請再次注意 Mnemonics 的使用。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 ( 條件 3 )
goto ST4;
否則如果 ( ! 條件2 )
goto ST3;
還
goto ST1;
狀態 ST3:
如果 ( 條件 3 )
goto ST4;
狀態 ST4:
觸發器;
資料分析結果
第 5 次連續發生狀況的觸發因素 1
觸發條件的設定
設定標籤中將一個基本的觸發條件定義為所需的值。下圖所示的 TrigCond1 是使用 Mnemonic 表格設定的值 AA 設定的別名。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( c1 >= 5 )
觸發器;
否則,如果 ( 條件 1 )
增量 c1;
否則如果 ( ! 條件 1 )
重設 c1;
資料分析結果
違反序列後觸發:狀態 1-> 狀況2->狀況3->狀況4
觸發條件的設定
四個基本的觸發條件已設定為所需的序列值。所顯示的所有四個觸發條件皆使用 Mnemonics。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST3;
否則,如果 ( 條件2 )
goto ST4;
其他如果 ( 條件 3 )
goto ST5;
否則,如果 ( 條件 4 )
goto ST2;
還
觸發器;
狀態 ST2:
如果 ( 條件 4 )
goto ST2;
否則,如果 (條件 1)
goto ST3;
還
觸發器;
狀態 ST3:
如果 (條件 1)
goto ST3;
其他如果 (條件2)
goto ST4;
還
觸發器;
狀態 ST4:
如果 (條件2)
goto ST4;
否則,如果 (條件 3)
goto ST5;
還
觸發器;
狀態 ST5:
如果 (條件 3)
goto ST5;
否則,如果 (條件 4)
goto ST2;
還
觸發器;
資料分析結果
觸發一系列邊緣
觸發條件的設定
針對所需序列設定了三種邊緣敏感的基本觸發條件。這個範例尋找在通道 1 上上升的邊緣,在通道 2 上下降的邊緣,接著在通道 3 上上升的邊緣。
基於狀態的觸發流程說明
狀態 ST1:
如果 (條件 1)
goto ST2;
狀態 ST2:
如果 (條件2)
goto ST3;
狀態 ST3:
如果 (條件 3)
觸發器;
還
goto ST1;
資料分析結果
在條件 1 上觸發,接著在 5 個頻率週期後依條件 2 觸發
觸發條件的設定
兩個基本的觸發條件定義為所需的群組值。請再次注意,對於 TrigCond1 和 TrigCond2 使用 Mnemonics。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 ( 條件 1)
goto ST2;
否則如果 ( ! 條件2 )
增量 c1;
如果 (條件 2 & c1 >= 5)
觸發器;
如果 (條件 2 與 c1 < 5)
goto ST1;
資料分析結果
在條件 1 上觸發,接著在 5 個樣本中執行條件 2
觸發條件的設定
兩個基本的觸發條件定義為所需的群組值。請再次注意,對於 TrigCond1 和 TrigCond2 使用 Mnemonics。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 ( 條件 1)
goto ST2;
否則如果 (! 條件 2)
增量 c1;
如果 (條件 2 & c1 <= 5)
觸發器;
如果 (條件 2 與 c1 > 5)
goto ST1;
資料分析結果
在 5 個樣本中,在條件 1 未遵循條件 2 的情況下觸發
觸發條件的設定
兩個基本的觸發條件定義為所需的群組值。請再次注意,對於 TrigCond1 和 TrigCond2 使用 Mnemonics。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件 1 )
goto ST2;
狀態 ST2:
如果 (c1 == 5)
觸發器;
否則,如果 ( 條件 1)
goto ST2;
否則如果 (! 條件 2)
增量 c1;
資料分析結果
5 個連續轉換後觸發
觸發條件的設定
此範例需要觸發條件才能擷取受監視匯流排上的任何轉換活動。需要進階的觸發條件,因為需要 OR 條件。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( c1 == 5 )
觸發器;
否則如果 (! 條件 1)
重設 c1;
否則,如果 ( 條件 1 )
增量 c1;
資料分析結果
當情況 1 在條件 2 和條件 3 之間發生不到 5 次時觸發
觸發條件的設定
此範例需要三個邊緣敏感的觸發條件,每個觸發條件包含與所需群組值的比較。這可以使用進階觸發條件編輯器來完成。下圖顯示三個邊緣敏感觸發條件之一的範例。
基於狀態的觸發流程說明
狀態 ST1:
如果 ( 條件2)
開始
重設 c1;
goto ST2;
結束
狀態 ST2:
如果 (條件 3)
goto ST3;
否則,如果 ( 條件2)
goto ST1;
否則,如果 ( 條件 1 )
增量 c1;
否則,如果 (條件 3 & (c1 >= 5 ))
goto ST1;
狀態 ST3:
觸發器;