はじめに
System Console (システム・コンソール)は、FPGA でデザインを実動作させながら JTAG 経由のデバッグが行える Quartus® Prime に搭載されているハードウェア制御のデバッグツールです。
簡単なレジスターへのアクセスであれば、Nios® V プロセッサーを実装していなくても System Console でデバッグが可能です。
今回は、Terasic 社の Agilex™ 3 評価ボード “Atum A3 Nano” に簡単なサンプルを用いて System Console をご紹介します。
1. サンプルデザイン
ここで使用するサンプルデザインは、下図のとおりです。
今回は System Console を使用して DIP スイッチの PIO、LED の PIO へアクセスします。
Platform Designer の構成は、下図のとおりです。
この赤点線枠の PIO モジュールのレジスターの値を読んだり、値を書いたりしましょう。
<Notes>
サンプルプロジェクトの Platform Designer システムを起動する場合は、Quartus® Prime の Project Navigator ウィンドウを Files タブに切り替え、src/pd_sys.qsys をダブルクリックすると、GUI が起動します。
2. 環境の準備
- Quartus® Prime Pro Edition
- Atum A3 Nano (FPGA に JTAG アクセス可能なボード)
-
サンプルデザイン sc_demo_agx3.qar
サンプルデザインのアーカイブファイルの展開方法
qar ファイルは、Quartus® Prime 専用のアーカイブファイルです。このファイルの展開方法は、次のとおりです。
- Quartus® Prime を起動します。
-
ダウンロードした sc_demo_agx3.qar を、エクスプローラーなどのファイルブラウザーから Quartus® Prime の GUI 上にドラッグ & ドロップします。
-
Restore Archive Project ウィンドウが表示されます。Destination folder 欄に展開先のフォルダー指定し、[OK] ボタンをクリックしてください。梱包されたファイルが展開され、Quartus® Prime にプロジェクトがセットされます。
※注意: 指定フォルダーのパスには、全角およびスペースは含まないでください。
3. 操作フロー
事前準備
- Quartus® Prime の File メニュー > Open Project から、サンプルデザイン用プロジェクト sc_demo_top.qpf を選択し [開く] ボタンをクリックします。
-
Atum A3 Nano と PC を USB ケーブルで接続します。
- ボードに電源を投入します。
3-1. System Console を起動
Quartus® Prime の Tools メニュー > System Debugging Tools >System Console を選択し、System Console の GUI を起動します。
3-2. JTAG 接続確認
事前準備のとおり、ボードと PC がダウンロードケーブルで接続され、ボードに電源が投下されていれば、System Console 起動時に自動で JTAG 接続が検出されます。
もし、手動で検出させる場合は、System Console 内の File メニュー > Refresh Connections をクリックしてください。
3-3. sof ファイルをダウンロード
Atum A3 Nano 上の Agilex™ 3 に sof ファイル (ビットストリームファイル) をダウンロードするため、
System Explorer ペイン内 devices フォルダー下の Agilex™ 3 に対して 右クリック > Program device > sc_demo_top.sof を選択します。
Atum A3 Nano 上の LED3 が点滅しはじめます。
3-4. サービス開始
-
FPGA 内に存在する Avalon-MM Master サービスの場所 (パス) を一覧表示するため、Tcl Console ペインにおいて、次のコマンドを入力します。
get_service_paths master
サンプルデザインでは、AvalonーMM Master が1つ表示されます。
System Explorer ペイン内 devices フォルダー > FPGA 型番 > (link) フォルダー > JTAG フォルダー下でも AvalonーMM Master を確認することができます。
-
FPGA 内の1番目の AvalonーMM Master を指定し、変数 (例では m) に置き換えるため、次のコマンドを入力します。
set m [lindex [get_service_paths master] 0]
-
指定した master サービスとの接続を開始するため、次のコマンドを入力します。
open_service master $m
-
指定したサービスに対して排他制御を取得するため、次のコマンドを入力します。
claim_service master $m pio_debug
3-5. デバッグ実行
- AvalonーMM Master に接続されている sw_pio コンポーネントのレジスターにアクセスしてみましょう。
これは、Atum A3 Nano 上の DIP スイッチ SW0/SW1 に接続されています。
では、DIP スイッチをスライドさせ、その際の sw_pio コンポーネントのレジスターの値を読み取ってみましょう。
データを読み取るためのコマンドの構文は次のとおりです。
master_read_8 <service-path> <address> <size>
sw_pio コンポーネントのアドレスは Platform Designer で 0x10 に指定してありますので、次のように入力します。
master_read_8 $m 0x10 1すると、ボード上の DIP スイッチの状態を読みった返り値が表示されます。
- 次に、AvalonーMM Master に接続されている led_pio コンポーネントのレジスターにアクセスしてみましょう。
これは、Atum A3 Nano 上の LED1/LED2/LED3 に接続されています。
では、led_pio コンポーネントのレジスターに値を書き込み、各 LED を点灯・消灯させてみましょう。
データを書き込むためのコマンドの構文は次のとおりです。
master_write_8 <service-path> <address> <size>
led_pio コンポーネントのアドレスは Platform Designer で 0x00 に指定してありますので、次のように入力し、それぞれ実行します。
master_write_8 $m 0x00 0x2master_write_8 $m 0x00 0x5master_write_8 $m 0x00 0x7すると、ボード上の DIP スイッチの状態を読みった返り値が表示されます。
このように、簡単に FPGA 内部のレジスターにアクセスが可能です。
3-6. サービス終了
指定した master サービスとの接続を終了するため、次のコマンドを入力します。
close_service master $m
File メニュー > Exit で System Console を閉じます。
4. おわりに
System Console は難しそうに見えて、実はコマンド数個で実行できるため、実際に触ってみると意外と簡単なデバッグツールです。
今回は PIO にアクセスしましたが、Platform Designer で Avalon-MM バスに接続されているものはすべてアクセス可能です。また、システムクロックの確認やリセット状態のモニターを素早く簡単に行うこともできるため、ボード立ち上げの際にも役立ちます。
メーカーや弊社の関連コンテンツを参考に、実際にトライしてみてください。
- System Console ※ Video Demonstrations に掲載されているリンク先のビデオを視聴する際は、 JavaScript の有効化、および Adobe Flash Player の最新バージョンが必要です。
- System Console Overview (Altera YouTube チャンネル)
- On-Chip Debugging Using System Console (Altera YouTube チャンネル)
- Quartus Prime Pro Edition User Guide Debug Tools (公式ドキュメント)
- System Console and Toolkit Tcl Command Reference Manual (公式ドキュメント)
- FPGA システム・デバッグ・ツール "System Console" を使ってみよう (マクニカ Web コンテンツ)
- System Console におけるダッシュボードの 作成手順とサンプル紹介 (マクニカ Web コンテンツ)
- System Console コマンドを Toolkit API GUI で操作しよう (マクニカ Web コンテンツ)
Agilex™ 3 でやってみた ~ すぐに学べる FPGA の基本機能と使い方~ に戻る