はじめに
FPGA のデバッグといえば、まず思い浮かぶのが SignalTap Logic Analyzer という方も多いと思います。
SignalTap Logic Analyzer は内部信号をリアルタイムで「観察」できる強力なツールです。しかし、FPGA 開発においては「観察」だけでなく、任意の信号を与えて動作を確認したい場面も少なくありません。
そこで登場するのが In-System Sources and Probes (ISSP) です。ISSP は、JTAG を使用して FPGA の内部に信号を注入したり、制御信号を与えたりすることができるツールで、SignalTap とは異なるアプローチでデバッグを支援します。
本記事では、Agilex™ 3 FPGA を使って、ISSP の基本的な使い方や設定方法、実際に信号を与えて動作を確認する手順を紹介します。SignalTap との違いや、ISSP ならではの活用シーンにも触れながら、FPGA デバッグの幅を広げるヒントをお届けします。
1. 環境セットアップ
ページ下部より、zip ファイルをダウンロードして PC 任意の場所に解凍してください。
今回使用した環境は以下になります。
使用ツール:Quartus® Prime Pro Edition V25.1.1
使用開発キット:Terasic 社:Atum A3 Nano
zip ファイルを展開しましたら、 Quartus を開いてメニュー欄から、File => Open Project => golden_top.qpf を選択してください。これでプロジェクトが開かれました。
プロジェクトの準備ができましたら青い三角のコンパイルボタンを押してください。これで検証の準備は完了です。
コンパイル中に以下にてデザインについて解説します。
2. デザインの説明
デザインは以下のようにカウンタだけのシンプルな構成になっています。
最後に呼び出しているモジュールが ISSP になり、ISSP は上記のようにデザインに組み込んで使用します。
下記にブロック図も示します。
今回のケースでは 4bit カウンタをボードの上のボタンと ISSP のどちらからでも制御できるようにし、その結果を同じく ISSP と基板上の LED から確認できるようにしています。
今回用意したデザインはすでに ISSP IP を組み込んでいますが実際に使用する場合には以下のように IP Catalog から呼び出して使用します。
呼び出された IP は以下のように Probe Port (信号の確認)、Source Port (ユーザーデザインへの入力の駆動)の項目からデバッグに必要なポートの本数を選択できます。
今回は 4bit のカウンタの出力確認のために Probe Port を "4"、リセットとカウントアップの入力信号の為に Source Port を "2" として生成したデザインを組み込んでいますので、HDL 内のコメントアウト部分と合わせてご確認ください。
3. In-System Sources and Probes の操作
コンパイルが終了しましたら、Terasic 社の Agilex™ 3 評価ボード、"Atum A3 Nano"と PC を USB ケーブルで接続しボードの電源を入れます。
Quartus のメニュー欄から Tools の中にある In-System Sources and Probes Editor を選択します。
ボードにデザインを書き込みます。Hardware の欄から"Atum A3 Nano"を選択し、書き込みファイルとしてコンパイルで生成された golden_top.sof を選択し、Program Device ボタンを押します。
( golden_top.sof は output_files フォルダ内に生成されます)
これで準備は整いました。まずはボードが動作しているか確認してみましょう。KEY0 のボタンを押すごとに LED が1bit ずつカウントアップしていることが確認できます。16回押すと元の状態(すべて消灯)に戻ります。
次は ISSP から操作します。 各信号を制御しやすくするためにプラスマークのボタンを押してバス表記から 1bit 表記に変えます。
LED がすべて消灯している状態で issp_source[0] の Data 部分をクリックして 0 から 1 に変えてください。
(JTAG 通信でデータのやり取りを行っているため、環境によっては反映に数秒かかる場合があります)
先ほど KEY0 のボタンを押したように基板上の LED が光ります。 "1"の状態はボタンを押し続けている状態になる為、もう一度 Data 部分をクリックして 1 から 0 に変えてください。
これを繰り返すと先ほどと同じように LED を 1bit ずつカウントアップさせることができます。これが "Source" 機能です。
次は "Probe" 機能を見てみましょう。 LED が光っている状態で Read Probe Data のボタンを押します。
Probe Data と LED の相関が取れていることが分かります。
LED のパターンを変えて再度 Read Probe Data ボタンを押すと波形が更新されます。
このように ISSP の機能を使用すると、基板上に信号入力やプローブするポイントがなくても、疑似的に外部入力、外部出力を仮想的に再現し、動作確認を行うことができます。
4.終わりに
ISSP は"Source" 機能も "Probe" 機能も最大で 512bit までの信号を扱えるため複雑なデザインでもデバッグ可能です。
基板上に信号の入出力を用意できない場合でも、外部制御を行いデバッグを行うことができ、設計の検証精度と開発効率が飛躍的に向上します。ぜひ日々の設計業務にお役立てください。
おすすめ記事/資料はこちら
「Agilex™ 3 でやってみた」シリーズ一覧はこちら