- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FX3の「同期スレーブFIFO」のサンプルデザインを使用して、FX3とホストPC間でUSB3.0の通信試験をしているのですが
ホストPC側でC++
StreamerからBULK OUTを行うとXfer
request rejected. NTSTATUS = c0000001のエラーメッセージが表示されて通信が停止する事象が発生しています。エラーコードより原因の特定はできますでしょうか?
【詳細】
BULK OUTのエラー発生時のGPIFIIのパケット読み出し波形を取得したところ、添付画像のような波形となっていました。1回目のパケット読み出しは問題なく成功しているのですが、2回目のパケット読み出しが異常な波形となっています。規定のパケット長(1024Byte)を読み出し終わる前にFLAG_Cがアサートされている上に、それよりも前にアサートされるべきFLAG_Dがアサートされません。
この結果を見ると、FLAG_Cがアサートされている理由は、C++ StreamerのBULK OUTの最後でショートパケットを受信しているためではないかと推測されますが、
その推測で正しいでしょうか? C++ StreamerのBULK OUTの仕様を教えて下さい。
また、上記が正しいとしても、FLAG_Cがアサートされているのに、それよりも前にアサートされるべきFLAG_Dがアサートされない理由が分かりません。
FLAGの動作としてこのような動作となるのは正しいのでしょうか? FLAGの動作について教えて下さい。
- 評価で使用しているサンプルF/W : AN65974の「SlaveFifoSync」のファームウェア
但し、下記について一部FWを修正して評価しております。
― LOOPBACK_SHRT_ZLPのDefineを無効、STREAM_IN_OUT のDefineを有効
マクニカ 荒井
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
こちら側ではお客様の状況が確認できないため、どこに問題があるかを明らかにし、問題を調べていきたく思います。
まず、大きく分けて、ホストアプリケーション、FX3、FPGA (Zynq7000評価キット ZC702)のうち一つ以上に問題が存在すると考えられます。
・ホストアプリケーションは、サイプレス社の用意したStreamerやControl Centerを利用し、現在Streamerアプリケーションでのみ投稿いただいた問題が発生しています。
・FX3では、AN65974の「SlaveFifoSync」のファームウェアを使用しています。(STREAM_IN_OUTに対応)
・FPGAは、ZC702を使用しているとのことですが、verilogはStreamerに対応した論理となっていますか?ピンマッピングは正しく行えていますか?PCLK (GPIF IIに供給するクロック)には100MHz、またはそれ以下の周波数のクロックを供給していますか?
今の所FPGA側の設定に原因があるのではないか、と感じているのですが、可能であればFPGAの設定情報をご提供いただけますでしょうか。
USB Protocolアナライザー等での調査は、各種設定が正しいことを確認できた後に行うことになるかと思います。
FYI: Control Centerアプリでもloopbackは確認できますが、より多くのデータを送った場合の動作を確認するにはBulkloopアプリケーションがご利用いただけます。(Bulkloopアプリケーションを使う場合にはそれに応じた論理をFPGAで使う必要があります。既にサイプレスで用意されているものを使用することも可能です。)
C#版 C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\c_sharp\bulkloop\bin\Release\BulkLoop.exe
C++版 C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\cpp\bulkloop\x86\Release\bulkloop.exe
よろしくお願い致します。
Hirotaka Takayama