Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

トリガー

トリガー条件とは何ですか?

トリガー条件は、FPGA からデータをキャプチャするタイミングを定義する論理ステートメントです。トリガー条件を使用して、FPGA 上の対象イベント周辺のデータをキャプチャします。キャプチャ ウィンドウの数 を目的の値に設定して、イベントの複数の発生をキャプチャします。トリガー条件は、1 つ以上の FPGA 信号に対する値比較テストで構成されます。次に例を示します。

counter == 100

すべてのトリガー比較は同期されます。ブール信号のエッジ条件を指定すると、IP コアは現在のサンプリング値と前のクロック サイクルのサンプリング値を比較します。

fifo_full == 'Rising edge' 

トリガー条件は、同じクロック サイクルで条件のすべての項が真である場合に満たされます。信号ごとに 1 つの値の比較のみ使用できます。

receiver_state == 3 OR message_detected == 'High'
fifo_cnt == 0 AND fifo_pop == 'High'

トリガー条件では、論理演算子の 1 つのタイプのみを使用できます。AND 条件と OR 条件を混在させることはできません。

fifo_empty == 'Rising edge' OR fifo_full == 'Rising edge' OR memctrl_state == 2
receiver_state == 3 AND message_addr == 148 AND pkt_type == 5

トリガー条件では複数の比較演算子を使用できます。

fifo_empty == 'Rising edge' OR fifo_full != 'LOW' OR memctrl_state == 2
receiver_state == 3 AND message_addr > 148 AND pkt_type >= 5

トリガー条件では、X または x (don't care 値) を使用できます。比較中、トリガー条件は X の位の値を無視します。トリガー条件が 0b1X1 の場合、可能なトリガー条件値は 0b101 または 0b111 です。

receiver_state == 3 AND message_addr == 148 AND pkt_type == 0b1X1

シーケンシャルトリガー

シーケンシャル トリガーを使用すると、複数の段階でトリガー条件のセットを指定して、FPGA から指定されたデータをキャプチャできます。シーケンシャル トリガーを使用すると、指定されたトリガー条件がすべて順番に発生した後にのみ、MATLAB® または Simulink® にデータを読み取ることができます。トリガー ステージが複数ある場合は、FPGA Data Capture Component Generator ツールの 最大トリガー ステージ パラメータを 1 より大きい値に設定します。Max trigger stages は、トリガー条件を提供するためのトリガー ステージの最大数を設定します。たとえば、Max trigger stages が 3 の場合、FPGA Data Capture ツールまたは FPGA Data Reader ブロックの Trigger タブには最大 3 つのトリガー ステージを含めることができます。

FPGA Data Capture screen with 3 trigger stages

各ステージの 1 つ以上の信号に一致する特定の値によってトリガー条件を定義します。たとえば、トリガーステージ数が 3 で、信号が 10 個存在する場合、これらのトリガー条件を設定できます。

  • ステージ 1 のトリガー条件:

    ((signal1 > 10) and (signal3 == true) and (signal7 < 5));
  • ステージ2のトリガー条件:

    ((signal1 == 0b0110) or (signal4 == 0XXX) or (signal8 < 5));
  • ステージ3のトリガー条件:

    ((signal2 != 5) and (signal6 == true) and (signal8 == 8));

トリガー条件を設定する

生成時に、トリガー条件で使用できるようにする信号を指定します。信号は、データをキャプチャせずにトリガーになる場合もあれば、トリガーとキャプチャされた信号の両方になる場合もあります。トリガーとして指定した信号を使用して、キャプチャ時にトリガー条件を変更できます。FPGA 上のデータ キャプチャ IP コアは、MATLAB からトリガー定義を受信し、イベントを検出するためにオンチップ マルチプレクサを構成します。

FPGA Data Capture ツールまたは FPGA Data Reader ブロックを使用する場合は、Trigger タブでトリガー条件を設定します。表の各行は、1 つの信号の値の比較です。信号値を結合するには、トリガー結合演算子を使用します。このタブに信号を表示するには、生成時に信号をトリガーとして指定する必要があります。

FPGA Data Capture screen showing trigger condition on counter signal

hdlverifier.FPGADataReader System object™ の場合、setTriggerConditionsetTriggerComparisonOperator、および setTriggerCombinationOperator オブジェクト関数を使用してトリガー条件を構成します。構成を確認するには、displayTriggerCondition オブジェクト関数を呼び出します。

どの信号に対してもトリガー条件を有効にしない場合、データ キャプチャ IP コアはデータを直ちにキャプチャします。

トリガー位置

キャプチャ バッファ内のトリガー検出サイクルの相対位置を変更できます。この機能を使用して、トリガー イベントの前後を問わず、関連データをキャプチャします。

FIFO 設計へのプッシュとポップのレートをデバッグするとします。信号 fifo_empty または fifo_fullHigh 値にトリガーを設定できます。

デフォルトでは、トリガーが検出されたクロック サイクルは、キャプチャ バッファーの最初のサンプルになります。IP コアは、fifo_full がハイに変化するサイクルからバッファをキャプチャします。

fifo_full 条件をデバッグするには、トリガー条件が発生する前の信号を観察します。キャプチャ設定で、スライダーの目盛りを使用して、Trigger position をウィンドウ深度の 3/4 に変更します。たとえば、Sample depth が 128、Number of capture windows が 1、Number of trigger stages が 1 の場合、ウィンドウの深さ は 128 になります。トリガー イベントはそのウィンドウのサンプル 96 にあります。IP コアは、トリガー イベント前の 96 個のサンプルとトリガー イベント後の 36 個のサンプルを含むバッファーをキャプチャします。この設定では、トリガー イベントに至るまでの経緯とその後の状況を示すデータがキャプチャされます。トリガー イベントの位置は、fifo_full の垂直カーソルで表示されます。

Trigger position を 0 から window depth-1 までの範囲のサンプル数に設定できます。トリガー位置を window depth-1 に設定すると、最後のサンプルはトリガーが発生したサイクルに対応します。

トリガー イベントの複数回の発生を観察するには、Number of capture windows を目的の数値に変更します。

この例では、Number of capture windows は 4、Number of trigger stages は 1、Sample depth は 128、Trigger position は 0 です。HDL IP は 4 つのウィンドウをキャプチャします。各 window depth は 32 サンプルで、fifo_full がハイに変化したときに開始します。

参考

ツール

オブジェクト

ブロック

関連する例

詳細