こんにちは、マス男です。
本日は、JTAG 接続を使用して FPGA デバイスが起動しているかを確認する方法についてご紹介します。
JTAG モードについて
JTAG ( Joint Test Action Group )とは集積回路やデバッグなどに用いる、テストアクセスポート規格 IEEE 1149.1 の通称です。
JTAG は4本の信号( TCK, TDO, TDI, TMS )で構成されています。アルテラ社製 FPGA は JTAG 規格をサポートしています。
JTAG モードはどのデバイス、コンフュギュレーション・モードよりも優先されます。
例えば、MSEL ピンが AS モードに設定されていても、 JTAG モードを優先します。Figure8-23 に JTAG 回路図を示します。
USB-Blaster で基板と書き込みツール( インテル® Quartus® Prime Programmer )を接続し、JTAG モードでコンフィギュレーションを実行します。
USB-Blaster の10 ピンコネクタの信号配置は「 Intel® FPGA Download Cable User Guide 」に記載されています( figure3、Table3 )。
これらの資料を参照し、 JTAG 回路の配線設計を行いました。
「 Auto Detect 」でデバイスを認識
基板上で JTAG 回路の配線ができました。JTAG を経由して、デバイスにアクセスできるかどうか、確認してみたいと思います。
Programmer を開く => Auto Detect をクリックする( 図1 )。
図1. Programmer 画面
図2 のメッセージウインドウが表示されました。 つまり、正しく JTAG 配線ができ、かつ、デバイスが起動していることが分かりました。
図2. デバイスを認識できた時 ○
一方、 JTAG 信号配線に不具合がある、または、デバイスが起動していないときは図3の警告メッセージが表示されます。
図3. デバイスを認識できない時 ×
コンフィギュレーション失敗…
「 Auto Detect 」で正しく JTAG 配線でき、かつ、デバイスが起動していることを確認できました。しかし、 JTAG コンフィギュレーション実行をした時、以下の Warning が表示され、 コンフィギュレーションが失敗しました…
Warning =>「 CONF_DONE pin failed to go high in device 1. 」
マス男 「 CONF_DONE pin って何?」
ハチ先輩のコラム『コンフィギュレーション・シーケンス』にその答えが書かれていました。(まさに、新人エンジニアの赤面ブログが役立つ瞬間!)
ハチ先輩のコラムによると、コンフィギュレーションが失敗する原因として、大きく分けて2種類の原因があるそうです。
・ツール操作時のミス
・基板に関する問題
実は、マス男の基板はコンフィギュレーションが成功する時もあれば、失敗する時もあり、動作がとても不安定であり、基板に関する問題だったのです。。