SUZAKUの動作を見る
SUZAKUの動作をMITOUJTAGでデバッグする
SUZAKUというSpartan3のXC3S400FT256を搭載したFPGAボードがあります。(アットマークテクノ社製)
このSpartan3はBGAなので、オシロスコープでピンの状態を観察することができません。そこで、FPGAの動作を観察するためには、MITOUJTAGがとても有効に使えることを実証します。
SUZAKUとJTAG接続
下の写真のようにSUZAKUをJTAGで接続するのですが、SUZAKUのSpartan3のJTAGは2.5Vロジックなので、JTAGケーブル側も2.5Vロジックに対応したものを使う必要があります。

そこで、NP1003EをUSB-JTAGケーブル化してSUZAKUのFPGAへJTAGで接続しました。
?
なぜならば、XILINX Parallel III互換のパラレルケーブルではなく、NP1003EでSUZAKUにJTAG接続したのは、SUZAKUが出す2.5Vロジックをパラレルケーブルでは正しく受信できないためです。NP1003Eで作ったJTAGケーブルでは、FPGAでJTAG信号を操作しているため、2.5Vロジックでも対応することができます。
?
?
MITOUJTAG-0.1.5を起動し、Nahitech-USB2ケーブルで接続し、自動認識すると、「XC3S400_BARE」が認識されます。

次に、パッケージを選択します。画面に現れた灰色の四角を右クリックし、「Change Device」を選択します。
すると、次の図のように同じJTAG IDCODEを持つデバイスの一覧が表示されますので、「XC3S400_FT256」を選択します。

XC3S400_FT256を選択したら、「S」と書かれたボタンを押します。
すると、BGAの裏側のピンの状態をサンプリングし、ロジックHとLに応じて色分けして表示されます。
ピンの状態をリアルタイムにサンプリングして表示するには、緑色の三角形のボタンを押します。

また、デバイスの絵を右クリックして「load pin definition」を選択し、SUZAKUのCDROMの中にある"top.ucf"を読み込みます。そして、MITOUJTAGのToolメニューからJTAGロジックアナライザを起動します。
すると、次の図のようにFPGAの動作状態を波形で表示することができます。なお赤の線はFPGAが出力している信号で、緑の線はFPGAが入力している状態であることを表しています。

このように、MITOUJTAGを使うと、JTAGを使ってBGAパッケージの裏側の信号を見たり、FPGAがその信号を入力しているか出力しているかの区別まで、知ることができることがお分かり頂けたかと思います。
?
MITOUJTAGのメリット
なお、これら信号の観察は基本的にFPGAの動作に影響を与えません。FPGAの動作を停止させることなく、すべての信号をJTAGで観察することができます。
?
また、JTAGのEXTESTやINTESTという機能を用いると、動作中のFPGAを停止させ、その信号線の状態を自由に書き換えてしまうことができます。
EXTESTというのはFPGAの端子の状態を自由に操作し、FPGAの外側に対して信号を出力する機能です。一方、INTESTというのはFPGAに入力される信号を自由に操作し、FPGAの内部回路の動作を確かめる機能です。
MITOUJTAGでは、EXTESTあるいはINTEST状態で端子の絵をクリックすると、その端子を自由自在に操作することができます。下の図はSUZAKUのFPGAに対してINTESTを実行している最中の図です。
マウスクリックでクロックをL->H->Lと遷移させ、FPGAの動作を目で確認することができます。
ただし、SUZAKUではSDRAMを使用しているため、EXTESTあるいはINTESTを行うとSDRAMのリフレッシュが停止するので、その上で動くLinuxのプログラムは停止します。

このように、MITOUJTAGを使うとFPGA開発環境が劇的に改善され、開発効率の飛躍的な向上が期待できます。
