ZYNQ UltraScale+のJTAGに異常を発見
Ultra96ボードを入手して、さっそくやってみたことはJTAGのテストです。
ボードから12Vの電源と、JTAGの配線を引き出してテスト開始です。
MITOUJTAGで認識させてみると、XCZU3しか見つかりません。実際にはXCZU3のほかにARMのDAPというのがつながっているので2個のデバイスが見つかるはずなのですが・・
そこで、SVFプレイヤーを用いて
STATE RESET; STATE IDLE; SDR 128 TDI (00000000000000000000000000000000) TDO (00000000000000000000000000000000);
というコマンドを実行して、JTAGの低レベルなデバッグをしてみると、XCZU3のIDCODEが1bitずれたものが読み出されました。
ARM DAPのDRが1bitになっていて(ZYNQ7000では32bitあった)、JTAG IDCODEが存在していないことがわかります。これは、ちょっと問題です。ARM DAPのIRは4bit長なので規格どおりですが。
この点は、ARM DAPのBSDLを作成して手動で追加すれば何とかなりました。
MITOUJTAGのバウンダリスキャンで、端子のI/Oが見えているように見えます。
また、端子のAA3、AA4あたりをEXTESTで動かすとLEDがチカチカするので、MITOUJTAGから操作もできていることがわかりました。
しかし、問題はここからです。基板上のSW4を押してもそれに相当する端子の状態が変化しないのです。
これはUltraScale+の持つJTAGのバグではないかと思います。
本来、JTAGバウンダリスキャンでは、I/Oパッドから入力した値は入力セルから読み出されます。
しかし、コンフィギュレーションされたUltraScale+では、なぜか出力セルから読み出されます。
これが仕様なのか設計ミスなのかわかりませんが、JTAGの動作としては間違っているように思われます。
なお、バウンダリスキャンセルを手動で書き換えて、出力セルの値を見るようにすると、一見正しい動作をするのですが、FPGAが出力する値を読めなくなってしまうので、これも正しくありません。
BSDLファイルが間違っているというわけではなく、チップレベルで間違っているようです。
それから、DDR4メモリの端子が全く動いていないことも気になります。Ultra96ボードのデフォルトのSDカードでは、DDRメモリは使用していないのでしょうか。
| 固定リンク
コメント