« UltraScale+用のJTAG書き込みアルゴリズム | トップページ | Spartan-7ボードを設計しています »

2018.08.22

ZYNQ UltraScale+のJTAGに異常を発見

Ultra96ボードを入手して、さっそくやってみたことはJTAGのテストです。

Uscale1

ボードから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が見えているように見えます。

Uscale2

また、端子のAA3、AA4あたりをEXTESTで動かすとLEDがチカチカするので、MITOUJTAGから操作もできていることがわかりました。

Uscale3

しかし、問題はここからです。基板上のSW4を押してもそれに相当する端子の状態が変化しないのです。

Uscale4

これはUltraScale+の持つJTAGのバグではないかと思います。

sun

本来、JTAGバウンダリスキャンでは、I/Oパッドから入力した値は入力セルから読み出されます。

Bscan1_2

しかし、コンフィギュレーションされたUltraScale+では、なぜか出力セルから読み出されます。

Bscan2

これが仕様なのか設計ミスなのかわかりませんが、JTAGの動作としては間違っているように思われます。

なお、バウンダリスキャンセルを手動で書き換えて、出力セルの値を見るようにすると、一見正しい動作をするのですが、FPGAが出力する値を読めなくなってしまうので、これも正しくありません。

Bscan3

BSDLファイルが間違っているというわけではなく、チップレベルで間違っているようです。

sun

それから、DDR4メモリの端子が全く動いていないことも気になります。Ultra96ボードのデフォルトのSDカードでは、DDRメモリは使用していないのでしょうか。

|

« UltraScale+用のJTAG書き込みアルゴリズム | トップページ | Spartan-7ボードを設計しています »

コメント

コメントを書く



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




« UltraScale+用のJTAG書き込みアルゴリズム | トップページ | Spartan-7ボードを設計しています »