DE0-nanoのバウンダリスキャン

平成24年11月23日

Terassic社からDE0-nanoという評価ボードが発売されています。コンパクトなサイズにALTERAのCyclone4が搭載されていて、1万円を切る価格という激安ボードです。このボードをMITOUJTAGでスキャンしてみます。

写真1 DE0-nanoの外観

JTAG信号が出ていない!

このボードはオンボードでUSB-Blasterが搭載されていて、逆にJTAGコネクタのピンヘッダは出ていません。

でも、大丈夫。最近のMITOUJTAGはUSB-Blasterに対応しているからです。

ケーブルの自動認識でUSB-Blasterと表示されます。(ちょっと格好悪いけど)

図2 MITOUJTAGでUSB-Blasterが認識された

 

デバイスの自動認識~バウンダリスキャン

次に、デバイスの自動認識。しかし、残念ながらCycloneIIIのEP3C25F256が認識されてしまいました。

どうやら、Cyclone IIIとCyclone IVはデバイスのIDCODEが一緒なのです。

図3 Cyclone3として認識されてしまう・・

 

しかし、バウンダリスキャンスキャン結果は正しいように思われます。少なくともプッシュボタンスイッチを押すと、回路図どおりのピンが変化するからです。

図4 しかし、バウンダリスキャン結果は正しい

 

おそらく、ALTERAの中の人が、JTAGのIDCODEを間違って付けてしまったか、Cyclone3とCyclone4は設計が同じなのかもしれません。謎ですね。

 

正しくCycloneIVをバウンダリスキャンするには

ALTERAのWebサイトから、CycloneIVのBSDLファイルをダウンロードしてきます。それをMITOUJTAGに読みこませると、ちゃんとCycloneIVのEP4CE22F17となりました。

 

図5 ダウンロードしたBSDLファイルを使うと正しくCycloneIVを表示した

 

DE0-Nanoに最初から入っているFPGAのデザインを動かして(つまりケーブルをつないだだけで自分では何も書き込んでいない)、I/O端子の波形も見ることができました。

 

図6 デフォルトのFPGAが動いているときの動作 

 

LEDがPWMでじわじわ点滅しているので、それが見えています。また、J15番とE1番ピンはプッシュスイッチなので、それを押したタイミングでLレベルになるのも見えています。

 

DE-0 nanoへの書き込み

MITOUJTAG 2.40cと、それ以前のバージョンのMITOUJTAGでCyclone4に書き込むには、パッチが必要です。

パッチはこちらのページ /download.html にある、

書き込みアルゴリズムの更新 更新日:平成24年12月22日」を適用してください。

 

ここで、MITOUJTAGの書き込み機能を起動します。

図7 書き込みダイアログ

書き込むファイルは、QualtusIIで生成した非圧縮RBF形式にしてください。SOFからの直接の書き込みはまだできません。

 

開始ボタンを押すと、びゅーーっと進捗バーが進んで、RBFファイルが書き込まれます。

図8 書き込み中のようす

     

しばらくすると、書き込みが完了して、私が作ったナイトライダー風LEDチカチカが起動しました。

 

図9 書き込んだ後にバウンダリスキャン

 

MITOUJTAGでは、このように書き込んだ直後から動いている端子の状態が見えます。

FPGAを起動させない技がある

単純に書き込むだけだとQualtusIIのJTAG Programmerにもできるので、MITOUJTAGならではの「かゆいところに手が届く機能」をつけました。

Cyclone4の書き込みアルゴリズムを解析していて、面白いことを発見したのです。この特徴を使うと、コンフィグROMから起動させたり、させなかったりすることができます。そういうJTAG命令が隠されていたのです。

 

MITOUJTAGのCyclone4書き込みダイアログで、「Reconfigration from ROM」というチェックを外して、Eraseをします。すると・・

 

図10 Reconfiguration from ROMのチェック

 

なんと、Cyclone4はコンフィグROMから起動せずに、完全に未コンフィグの状態に留まるのでした。つまり、コンフィグROMに何かのデータが入っている状態であっても、ROMを消さずに、FPGAを未コンフィグの状態にできます。

 

すべてのピンは静かな状態になって、コンフィグROMにつながるピンだけが出力になっているのがわかります。

 

図11 未コンフィグの状態にとどまらせることができた

 

まとめ

このように、ZED Boardのデフォルトのデザインについては全く知識がないものの、端子の状態だけは自由自在に見たり操作することができました。MITOUJTAGを使えば、このようなことが簡単にできます。