【FPGA検証ノウハウ】Vivado™ロジックアナライザーを便利に使ってみる(Advanced triggerの使い方)~記述編~

皆さん、こんにちは。
実機でFPGAの動作確認を行う場合、Vivado™に搭載されているロジックアナライザーを使うことが多いかと思います。
信号を選んで、値を設定して単純にトリガーをかけるだけならよいのですが、複雑な条件を設定してトリガーをかけたくなることはありませんか?
本ブログでは、ロジックアナライザーを便利にする「Advanced trigger」の使い方を紹介したいと思います。今回は記述編です。
それでは、はじめましょう。
このブログは「FPGA設計ブログ一覧」の
6. 実機評価のひとつです。
目次
はじめに
いろいろ探したのですが、前回お伝えしたLanguage TemplatesやUG908以外に詳しい資料などは公開されていないようです。
そのため、これらの資料から筆者が調査した範囲での説明となりますので、あらかじめご了承ください。
また、条件はあまり複雑なものには対応できないようです。
記述した条件が有効なのかはコンパイルを行いエラーが無ければOK、
エラーメッセージが表示された場合にはその内容をご確認いただき、修正してください。
記述前提
Language TemplatesやUG908に記載されている説明内容を簡単にまとめると、次のようになります。
- 条件をステートとして設定し、16段まで設定可能
- ひとつのステートに設定できる条件分岐は、「if ~ elseif ~ else ~」の最大3つまで
- 条件には観測している信号の他に16bitのアップカウンタが4つまで使用可能
- 状態監視用に4つのフラグが使用可能 ※フラグは条件には使用できない
- 大文字・小文字の区別はない
演算子
論理演算で使用できるのは次の2つ
||
値の比較で使用できるのは次の6つ
!=
>
>=
<
<=
カウンタの比較で使用できるのは次の2つ
!=
値
表現できる進数は次の3つ
'b <binary>
'u <integer>
数値は、0~Fの数と、X(Don't care)、R(立ち上がり)、F(立ち下がり)、B(両エッジ)、N(変化なし)。
数字の区切りとして _(アンダースコア)が使えるようです。
- ※
- B、N はhexとbinaryの両方で使用できます。
- ※
- X、R、F はbinaryで使用できます。
カウンタとフラグ
カウンタとフラグは名称が決まっているので、そのまま使用します。
$COUNTER1
$COUNTER2
$COUNTER3
$FLAG0
$FLAG1
$FLAG2
$FLAG3
カウンタの制御には次の2つがあります。
RESET_COUNTER <クリア>
フラグの制御には次の2つがあります。
CLEAR_FLAG <クリア>
記述例
記述例を示します。
# #はコメント文
# ステートに条件を書いていきます
# ラベル hogeという1つめのステート。ラベルの最後には:(コロン)
state hoge:
# 信号名 u_top/u_sub/boo が立ち上がったら
if (u_top/u_sub/boo == 1'bR) then
# フラグ0番のセット
SET_FLAG $FLAG0;
# mogeという名前のステートに移動
# 動作の最後には;(セミコロン)
goto moge;
else
# フラグ0番とカウンタ0番のクリア
# 実際はRun triggerを行った際にクリアされるようなので、
# 条件の最初方にこのようなクリア記述は不要です
CLEAR_FLAG $FLAG0;
RESET_COUNTER $COUNTER0;
# 条件不成立の場合も行き先を記述する必要があるようです
goto hoge;
endif
# ラベル mogeという2つめのステート
state moge:
# 信号名 u_top/u_sub/foo が立ち下がって且つ、カウンタ0番が0x4ならば
if ((u_top/u_sub/foo == 1'bF) && ($COUNTER0 == 16'h0004)) then
CLEAR_FLAG $FLAG0;
RESET_COUNTER $COUNTER0;
# トリガー実行
trigger;
# 信号名 u_top/u_sub/foo が立ち下がったら
elseif (u_top/u_sub/foo == 1'bF) then
# カウンタ0番をインクリメント
INCREMENT_COUNTER $COUNTER0;
goto moge;
else
goto moge;
endif
いかがでしたでしょうか。
記述に関してはHDLに似ているため、さほど難しくはないと思います。
次回は記述した内容でトリガーがかかるか実践してみたいと思います。
最後までご覧いただきましてありがとうございました!
これからもTECHブログを通じて、皆様の設計にお役立てできればと思います。
次回のブログもどうぞよろしくお願いいたします。
このブログは「FPGA設計ブログ一覧」の
6. 実機評価のひとつです。
弊社ではFPGA設計や回路図設計、レイアウト設計、ソフトウェア設計、筐体設計などを受託開発しています。サービス内容をWEBサイトに掲載していますので、ぜひご覧ください。
FPGAの活用に際して設計検討などありましたら、お気軽にお問い合わせください。