AR# 47540

Zynq-7000 SoC、USB - ソフトウェア リセット後の最初の SOF が破損することがある

説明

USB リセット プロセス中 (スピード ネゴシエーションおよびチャープ)、プロトコル エンジンによりポート制御に SOF コマンドが送信されると、ポート制御でこれらの SOF は除去されます。ただし、リセットの最後 (ホストからのチャープ応答の最後) にプロトコル エンジンにより SOF が送信されると、ULPI ポート制御によりアップデート opmode コマンドを送信する前に SOF が PHY に送信されます。これが原因で、無効なパケットがラインに送信されます。ULPI プロトコルでは無効なパケットは NOPID Tx コマンドで、その直後に STP パルスが続きます。

USB リセット (usb.PORTSCx[PR] = 0) 後、ULPI のリセット後の処理が完了するまで usb.USBCMD[RS] をイネーブルにしないでください。ULPI のリセット後の処理の完了は、prtsc.pr レジスタを読み出すことにより確認できます。このようにすると、ホストにより SOF が早く送信されることはなくなります。

ソリューション

影響:

深刻な問題ではありません。この問題は、内部カウンターの開始とリセット イベントのタイミングによって発生します。これはホスト ソフトウェアで判断することはできないので、ランダムに発生します。デバイスでは無効なパケットは無視されるはずなので、この問題は USB の点からは深刻な問題ではありません。

回避策:

USB リセット後、ULPI のリセット後の処理が完了するまで usb.USBCMD[RS] をイネーブルにしないでください。

対象となる構成:

USB コントローラーを使用するシステム

対象となるデバイス リビジョン:すべて。修正の予定はありません。(Xilinx Answer 47916) - Zynq-7000 デザイン アドバイザリ マスター アンサーを参照してください。


この問題を回避するには、USB リセット (usb.PORTSCx[PR] = 0) 後、ULPI のリセット後の処理が完了するまで usb.USBCMD[RS] をイネーブルにしないでください。ULPI のリセット後の処理の完了は、prtsc.pr レジスタを読み出すことにより確認できます。このようにすると、ホストにより SOF が早く送信されることはなくなります。

注記: この回避策によりこの問題が発生する確率は下がりますが、完全にはなくならないかもしれません。

AR# 47540
日付 05/23/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス