« INTESTを使ってFPGAをステップ実行させる | トップページ | PCI Expressの基板実装完了。即座に動作確認! »

2008.12.04

FPGAをステップ実行させて、波形を観る

ついに、JTAGスクリプトと、JTAGロジックアナライザがつながりました!

FPGAのクロックと入力信号を、パソコン上の簡単なスクリプトで作れるので、FPGAの動作が手にとるように見えます。FPGAをすごくゆっくりと動かし、その入出力信号をパソコンで操作するというわけです。
論より証拠。次の図をご覧下さい。

次の図は、Spartan3ANにバイナリカウンタをつくり、そのSpartan3ANをINTESTモードにし、JTAGを通じてクロックを注入しています。ついでに100サイクルごとにリセットパルスを与えています。

JTAG INTEST

(クリックで拡大します)

これはシミュレーションの結果ではありません。
実機です。
FPGAでバイナリカウンタを作って、JTAG INTESTを通じてクロックとリセットを与えて、FPGAが出力する波形をJTAGでキャプチャしたものです。
まぎれもなく、実際のFPGAの中の回路から出力されている波形です。

上の波形の元になる「FPGAの入力信号」は、


 for(int i=0;i<1000;i++)
 {
     if((i % 100) == 0) RESET = 1;
     else        RESET = 0;
     CLK <= 1;
     CLK <= 0;
 }
 

という、ごく簡単なスクリプトで作り出しています。

次の波形はもっと衝撃的で、Spartan3ANスタータキットのデフォルトの回路でINTESTを行って、数千サイクルのクロックを与えた際の波形(の一部)です。

Spartan3AN スタータキットの波形を解析

(クリックで拡大します)

INTESTは、FPGAが持っているJTAGのネイティブ機能なので、IPコアを埋め込まなくても、何もしなくても使えます。入手したFPGAボードのJTAG端子にJTAGケーブルをつなぎ、MITOUJTAGを起動すればよいのです。

自分で作った回路でなくても、このようにステップ実行できてしまい、全ての端子の波形が1サイクルごとに完璧に見えてしまいます。我ながら、非常に危険なものを作ったと思います。
もちろん、DCMとか使っていたらダメでしょうが、そのときはDCMで生成された波形もソフトウェアでエミュレートして与えればよさそうです。

つまり、DCMが使われておらず、なおかつ、特別な防御策も取られていないXILINX FPGAの動作は、どんなものでもデスクトップ上で簡単に解析できてしまうからです。
(なお、A社のFPGAはINTEST非対応なので勝手に解析はできません)

INTESTは、自分で作ったFPGAに対しては極めて強力なデバッグツールとなるはずです。INTESTが今後どのようなデバッグ手段として発展していくかはまだ未知数ですが、ここまで簡単かつインタラクティブにINTESTができるツールは他にはないでしょう。
この機能は、MITOUJTAG Pro 2.04b以降でご利用いただけます。MITOUJTAG Proを、MITOUJTAG Pro 2.04bへのバージョンアップするパッチは、本日、ダウンロードできるようにました。

ますます進化するMITOUJTAGをどうぞよろしくお願いします。

|

« INTESTを使ってFPGAをステップ実行させる | トップページ | PCI Expressの基板実装完了。即座に動作確認! »

コメント

コメントを書く



(ウェブ上には掲載しません)




« INTESTを使ってFPGAをステップ実行させる | トップページ | PCI Expressの基板実装完了。即座に動作確認! »