CYUSB3014-BZXIのGPIF2におけるWatermarkの指定

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

FX3を使ってFPGA I/Fを実現するため、GPIF2を使って設計しています。

BULKIN転送において、途中のデータが抜けることがあります。

USB通信上はデータのWrite自体は問題なく見えるのですが、気になったことがあります。

AN65974の"9.3 General Formulae for Using Partial Flags"を

拝見すると、FLAGの変化はWatermarkとデータバス幅に依存する記載があります。

pastedImage_0.png

現在、Watermark=8、バス幅は32bitで設定していますが、その場合、

Wartermarkに設定したフラグが立ってから

8*(32/32)-4 = 4

4回Writeがされると本来のReadyに設定したフラグが立つはずなのですが、

FPGA側の波形を見ると8回Writeができてしまっています。

これにより、本来の数より多い回数のWriteがされてデータが抜けている

可能性があります。

FLAGの挙動はWatermarkとReady、それにBus幅の指定以外に依存することはありますでしょうか。

他に注意すべき点はありますでしょうか。

0 件の賞賛
1 解決策

以下の環境でWrite転送(IN転送)を行い、状況を再現しようとしましたが、状況が再現できませんでした。

PIB_SOCKET_1 (thread 1) as IN transfer.

PCLK: 100 MHz

Single Write (バースト転送なし)

DMA Buffer Size: 1KB, buffer数: 2

FLAGA DMA Flag: Current_Thread_DMA_Ready

FLAGB DMA Flag: Current_Thread_DMA_WaterMark

API: CyU3PGpifSocketConfigure (1,CY_U3P_PIB_SOCKET_1,8,CyFalse,1);

Application Software: C++ Streamer (Cypressで提供しているサンプルソフトウェア)

上記環境で、断続的なwriteをするテストを実施しましたが、WaterMarkの計算式通り、4回のWrite後にFLAGAが有効になることが確認されました。

過去の様々な情報も確認していますが、こういった事象は現状確認されておらず、お客様の設定や使い方に懸念があります。

まず、以下の点についてご確認いただけますでしょうか?

Q1. AN65974の"表 3. 同期スレーブ FIFO のタイミング パラメーター"をすべて満たしていますか?特に、SLWR信号がtWRS, tWRH(セットアップタイム、ホールドタイム)を満たしていますか?PCLKは100MHz以下ですか?

Q2. いかなる場合もsingle write時に4回分余分にWriteされていますか?

Q3. PIBエラーはありますか?

よろしくお願い致します。

Hirotaka Takayama

元の投稿で解決策を見る

0 件の賞賛
8 返答(返信)
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

ご認識いただいております通り、Watermark = 8, Bus幅 = 32bitで設定された場合、式より、8*(32/32) - 4 = 4 となり、

4回Writeがされると本来のReadyに設定したフラグが立つと考えられます。

FLAGの挙動は、Watermark、Ready、Bus幅の指定により決まります。

GPIF-II designer上の設定がFX3のprojectに反映されていることを改めてご確認ください。

また、AN65974をベースにしていると思われますが、CyU3PGpifSocketConfigure() APIの各設定を教えていただけますでしょうか?

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

ご回答ありがとうございます。

設定は下記です。

#define WATER_MARK_VAL 8

CyU3PGpifSocketConfigure (0,CY_U3P_PIB_SOCKET_0,WATER_MARK_VAL,CyFalse,1);

CyU3PGpifSocketConfigure (1,CY_U3P_PIB_SOCKET_1,WATER_MARK_VAL,CyFalse,1);

CyU3PGpifSocketConfigure (3,CY_U3P_PIB_SOCKET_3,WATER_MARK_VAL,CyFalse,1);

GPIF2から出力されたヘッダは取り込んでおり、SDK側で反映されていることは確認しております。

以上です。

0 件の賞賛

いただいた波形では、PIB_SOCKET_1をP2Uチャネル、PIB_SOCKET_3をU2Pチャネルとして使っていると思いましたが、PIB_SOCKET_0はどのように使われていますでしょうか。

なんにせよ、同様の現象を再現できるかをAN65974 FWと連続的にデータを書き込まないようなFPGA configurationにて確認し、報告させていただきます。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

PIB_SOCKET_0はPIB_SOCKET_1と同じ設定で使用しています。

・PIB_SOCKET_0(thread0) : IN transfer (Host PCのBULKIN,CX3側が送信)

・PIB_SOCKET_1(thread1) : IN transfer (Host PCのBULKIN,CX3側が送信)

・PIB_SOCKET_2(thread2) : No transfer 未使用

・PIB_SOCKET_3(thread3) : OUT transfer (Host PCのBULKOUT,CX3側が受信)

です。

また、転送は

Read時(一番上の波形)が

- FLAGA,B=11のときは、バーストリード

- FLAGA=1、FLAGB=0のときは、シングルリード

Write時(真中の波形)が

- FLAGA,B=11、FLAGA=1、FLAGB=0

  いずれの場合もシングルライト

となっています。

0 件の賞賛

以下の環境でWrite転送(IN転送)を行い、状況を再現しようとしましたが、状況が再現できませんでした。

PIB_SOCKET_1 (thread 1) as IN transfer.

PCLK: 100 MHz

Single Write (バースト転送なし)

DMA Buffer Size: 1KB, buffer数: 2

FLAGA DMA Flag: Current_Thread_DMA_Ready

FLAGB DMA Flag: Current_Thread_DMA_WaterMark

API: CyU3PGpifSocketConfigure (1,CY_U3P_PIB_SOCKET_1,8,CyFalse,1);

Application Software: C++ Streamer (Cypressで提供しているサンプルソフトウェア)

上記環境で、断続的なwriteをするテストを実施しましたが、WaterMarkの計算式通り、4回のWrite後にFLAGAが有効になることが確認されました。

過去の様々な情報も確認していますが、こういった事象は現状確認されておらず、お客様の設定や使い方に懸念があります。

まず、以下の点についてご確認いただけますでしょうか?

Q1. AN65974の"表 3. 同期スレーブ FIFO のタイミング パラメーター"をすべて満たしていますか?特に、SLWR信号がtWRS, tWRH(セットアップタイム、ホールドタイム)を満たしていますか?PCLKは100MHz以下ですか?

Q2. いかなる場合もsingle write時に4回分余分にWriteされていますか?

Q3. PIBエラーはありますか?

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

ご質問いただいた点について回答致します。

Q1. AN65974の"表 3. 同期スレーブ FIFO のタイミング パラメーター"をすべて満たしていますか?特に、SLWR信号がtWRS, tWRH(セットアップタイム、ホールドタイム)を満たしていますか?PCLKは100MHz以下ですか?

A1. はい。タイミング的には問題はありません。

Q2. いかなる場合もsingle write時に4回分余分にWriteされていますか?

A2. はい。常に4回分多くWriteされています。

Q3. PIBエラーはありますか?

A3. ありません。

以上です。

0 件の賞賛

各質問事項について、ご確認いただきまして誠にありがとうございます。

こちらでは再現できていない現象であるため、まず、元のAN65974のFirmwareでは正しく動作するか確認していただくことは可能でしょうか?

これが問題なく動作した場合、そこから、変更されているFirmwareの項目を一つずつご確認いただき、動作が正しくなくなる状況を見つけていただけますと幸いです。

または、使用しているFX3 FirmwareのソースコードとGPIF-IIのプロジェクトファイルをお送りいただければ、設定に問題がないかどうかを確認致します。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

了解しました。

取得が叶うかわかりませんが、ファイル一式が入手できましたら展開致します。

また、ANに付随するリファレンスのFWでの動作確認も可能か否かを見ます。

以上です。

0 件の賞賛