【GPIFマスタ方式とスレーブFIFO方式の構成の違い】
【GPIFマスタ方式とは】
USB制御ICがマスタとなり、データ制御・データ転送を制御します。
USBコントロール転送とバルク転送の2種類を使用して、データのRD/.WR(バルク転送)、FPGAのハードウエアレジスタ制御(コントロール転送)ができます。
【スレーブFIFO方式とは】
FPGAがUSB制御IC内のFIFOにデータをWRしたり、そこからRDしてデータ転送を行います。
USBバルク転送だけを使用してデータ転送します。
【どちらが使いやすいのか...】
USBバルク転送は、大量のデータを送受信する場合に便利なデータ転送方式です。 USBコントロール転送は小さなデータをRD/WRするのに適した転送方式です。
スレーブFIFO方式の場合、FPGA内の8bitレジスタ制御でもUSBバルク転送を利用するので、データ転送のオーバーヘッドが大きくなります。 同じレジスタを定期的に読み出すポーリングや複数のレジスタ設定などは苦手な方式です。
GPIFマスタ方式は、大量のデータはスレーブFIFOの様にUSBバルク転送を使用し、小さなデータは効率よくUSBコントロール転送で取り扱えます。このため、レジスタアクセスの時間間隔が短くできます。参考:コマンド発行間隔
※USBバルク転送の実効データ転送レートもスレーブFIFOと同じかそれ以上の数値が得られています。
また、USB経由でFPGAのコンフィグを瞬時(0.1~0.5秒程度:デバイス規模に依存)に行えます。この機能を利用すると、システム運用中にFPGA回路の書き換えができ、FPGA容量以上の機能を実現することができます。