Spartan-6の問題仕様にMITOUJTAGが対応
突然ですが、Spartan-6のJTAGバウンダリスキャン機能には問題があります。
詳しい話は、昨年9月ごろに発見して 、 ここや ここに続報を書きました。問題の状況を簡単に言うと、「Spartan-6で、入力ピンあるいは未使用ピンとして作成したピンは、バウンダリスキャンで見ると出力に見えてしまう。」というものです。
XILINXのWebCASEに投げて得られた回答は、高速動作時にノイズがどうのこうのということで、いわゆる仕様だそうですが、納得がいきません。私は単純なソフトウェア(おそらくBitgen)のバグか、もしくは、ハードのバグを隠すためにあえてそういう仕様にしたのではないかと考えています。
ここでバグだ仕様だと議論しても仕方がありませんし、これ以上待ってもムダだと思われたので、MITOUJTAGのほうでSpartan-6の誤ったバウンダリスキャン仕様に対応させることにしました。
バウンダリスキャンに対応したデバイスは、ひとつのI/Oピンに対して、入力、出力、方向の3つのセル(レジスタ)がついています。Spartan-6では本来、出力ピンの場合は方向セルは0、入力ピンの場合は方向セルは1になります。しかし、入力ピンの方向セルが間違って0になるため、MITOUJTAGは出力ピンだと判断してしまいます。
次の図は、Spartan-6に適当なサンプルデザインを書き込んで、バウンダリスキャンしてみた際のイメージです。多くのピンが出力モードになっているのがわかります。
本当はこんなに出力ピンは多くありません。中心に近いところは未使用のはずです。
例えばE6番ピン。このピンは未使用ピンで、Hレベルを入力しているはずです。しかし、方向セルが'0'のままのため、出力ピンとして判断されてしまい、"L出力"として認識されてしまっています。
この問題に対処するため、「特定のピンでは、方向セルを無視して、入力セルの値だけ見る」という機能をMITOUJTAGに付け加えました。
これを1個1個指定すると面倒なので、ファイルからまとめて読み込みできるようにしました。読み込むファイルは*.padファイルです。PADファイルは、XILINXのISEで論理合成した際にピン配置の結果として生成されるファイルです。
これを読み込むと、次の図のようにいくつかのピンが入力ピンに変わります。
これで、すべてのピンの状態が正しく見えるようになりました。
その違いは、ロジアナモードでもはっきりとわかります。
実験用に、FPGAには、プッシュスイッチを押すとLEDがカウントアップするというデザインを書き込んでみました。
まず、対策する前の波形。
コンフィギュレーション中の状態から始まって、コンフィギュレーションが終わると、いきなりクロックやプッシュスイッチの信号が見えなくなっています。
コンフィギュレーションの前も後も、普通にクロックやスイッチの入力が見えています。
VO7670カメラをつないでみたら、そのカメラからの入力信号もはっきりと見えるようになりました。
このように、Spartan-6の入力ピンも正常に見えるようになりました。
ユーザ側の操作としては、UCFファイルのかわりにPADファイルを読み込めば、万事上手くいきます。
この修正パッチは11日土曜中にアップロードする予定です。
ご期待ください。
| 固定リンク
コメント