- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Sirs and Madams,
I would like to translate KBA232781, please confirm to my work.
Regards,
Masashi
- Labels:
-
Community translation
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Masashi-san
Confirm to work this KBA.
THanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jenna-san,
I translated KBA2322781 into Japanese.
We would appreciate it if you could confirm.
Regards,
Masashi
/***************************************************************************/
Version: **
質問:
FX3 SDKにおいてCYU3P_GPIF_ERR_INVALID_STATE GPIFエラーが発生するのは何故ですか?
回答:
GPIFエラーの CYU3P_GPIF_ERR_INVALID_STATEは、ステートマシンが無効な状態に達すると発生します。無効な状態とは、 GPIF II デザイナーツールによって生成された、.hファイルが定義されていない状態です。ほとんどの場合、これは、ミラー状態がステートマシンで使用されている場合に発生します。ミラー状態の詳細については、GPIF Designer User Guide (gpif2_designer_userguide.pdf)のsection 4.5 – GPIF II constraintsを参照してください。このドキュメントはFX3 SDKで利用可能であり、SDKインストール後、次の場所にあります。C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\GPIFII_Designer
ステートマシンでミラー状態が使用されている場合、ステートに関連付けられているすべてのミラー状態の状態番号は、GPIF IIデザイナーツールによって生成された .h ファイルでは定義されません。したがって、ミラー状態を利用するステートマシンでは、ステートマシンがいずれかのミラー状態に達すると、GPIFエラーのCYU3P_GPIF_ERR_INVALID_STATEがトリガーされる可能性があります。これは、ステートマシンの機能には影響しません。
GPIFエラーのCYU3P_GPIF_ERR_INVALID_STATEについて、もう1つの考えられる理由としては、ミラー状態の使用にも関連しています。図1は、 AN65974で提供されるスレーブFIFOステートマシンの例でその理由を示しています。
図1. スレーブFIFOステートマシン
図1のスレーブFIFOステートマシンは、ミラー状態を識別するためにSLWRとPKENDを使用します。ステートマシンの構築中に、GPIF II設計者は、IDLE状態およびDSS_STATE状態からの出力遷移方程式からSLWRおよびPKENDが削除されることを警告します。 SLWRとPKENDがIDLE状態からの出力遷移方程式から削除されると、次のようになります。
IDLE-> READ:式:!SLCS & !SLRD & !SLOE when (WR, PKEND)= (1, 1)
IDLE-> WRITE:式:!SLCS & SLRD when (WR, PKEND) = (0, 1!)
IDLE-> SHORT:式:!SLCS & SLRD when (WR, PKEND) = (0, 0!)
IDLE-> ZLP:式:!SLCS & SLRD when (WR, PKEND) = (1, 0!)
これは、IDLE状態とそのミラー状態からの遷移方程式が(!SLCS & !SLRD & !SLOE)または(!SLCS and SLRD)のいずれかになる可能性があることを意味します。
ここで、DSS_STATEがステートマシンで使用されていないと仮定します。最初にSLCSをアサートし、次に次のクロックサイクルでSLRDをアサートすることによって読み取りを開始すると、問題が発生する可能性があります。遷移方程式(!SLCS & SLRD)は最初のクロックサイクルで一致し、ステートマシンは無効な状態に遷移します。これは、読み取り操作の場合、(WR, PKEND)が(1, 1)になるためです。 (WR, PKEND)=(1, 1)の場合、遷移方程式が!SLCS & !SLRD & !SLOEの場合にのみ、ステートマシンは有効な状態にジャンプできます。これが満たされないため、ステートマシンはINVALID状態にジャンプします。
この問題を回避する唯一の方法は、(WR, PKEND)=(1, 1)の場合に、「!SLCS & SLRD」の式に一致する場所に有効な状態を配置することです。これは、ステートマシンのDSS_STATE状態です。このDSS_STATE状態がステートマシンに存在しない場合、GPIFエラーCYU3P_GPIF_ERR_INVALID_STATEがトリガーされます。
したがって、ミラー状態を利用するカスタムステートマシンを開発するときは、CYU3P_GPIF_ERR_INVALID_STATEを回避するために、ステートマシンが入力の任意の組み合わせに対して有効な状態に遷移できることを確認してください。必要に応じて、有効な状態(AN65974のDSS_Stateなど)を使用できます。