モノ創りで国造りを

ハード/ソフト問わず知見をまとめてます

今更ですが、USB3.0を使いこなしたい

EZ-USB FX3の使い方

 

EZ-USB FX3とは:

 EZ-USB FX3とはUSB3.0を容易に使えるようにするためのIC。一般的なペリフェラル用IFに加えて柔軟に仕様を変更できる汎用のIFも備える。

f:id:yuji2yuji:20191205203216p:plain



IF:

・I2C:マスタとして動作、100kHz/200kHz/1MHz

・I2S:トランスミッタorレシーバとして動作、100kHz/400kHz/1MHz

・UART:フロー制御に対応、300bps ~ 4608Kbps

・SPI:トランザクションサイズは4bit~32bit、最大33MHz、4モードに対応

・GPIF Ⅱ:最大100MHz、8/16/32bit、プログラマブル、マスタorスレーブどちらも可能

 

 外部クロックは19.2MHz/26MHz/38.4MHz/52MHzに対応。内部で19.2MHzが生成される?

 電源は、各IF毎に異なる電圧を供給可能。

 

ブート方法:

 ブート方法はPMODEのピン設定で選択可能。通常は次のいずれかで行う。

 ・PMODE[2:0]  = F11:USBでファームウェアを読み込んで起動する

 ・PMODE[2:0]  = 0F1:SPI ROMで起動

EZ-USB FX3とFPGAとの接続:

 EZ-USB FX3はGPIF Ⅱを介してFPGAと接続可能。

f:id:yuji2yuji:20191205203247p:plain




FPGAコンフィギュレーションはEZ-USB FX3を介して行うことも可能。外部メモリを削減できる。

f:id:yuji2yuji:20191205203306p:plain


EZ-USB FX3とイメージセンサの接続:

 EZ-USB FX3はGPIF Ⅱを介してイメージセンサと接続できる。

f:id:yuji2yuji:20191205203327p:plain



外部デバイスとのデータ通信:

 EZ-USB EX3と外部デバイスはソケットを介して接続される。各ソケットはペリフェラル用IF毎に存在する。ただしGPIF はソケット4つあり?対応するソケットを介して接続される。スレッドとソケットは1:1対応。

f:id:yuji2yuji:20191205203352p:plain



自動DMAチャネル:

 GPIFソケットはDMAバッファが一杯になったことをUSBソケットに通知できる。

 USBソケットはDMAバッファが空になったことをGPIFソケットに通知できる。

 外部データを加工しない場合は上記の手法を用いる。

 

手動DMAチャネル:

 GPIFソケットはDMAバッファが一杯になったことをCPUに通知し、CPUはUSBソケットに伝達する。

 USBソケットはDMAバッファが空になったことをCPUに通知し、CPUはGPIFソケットに伝達する。

 外部データを加工する場合は上記の手法を用いる。

 

ソケットはデータ管理のため、DMAバッファアドレス、バッファサイズ、ディスクリプタチェーンを仕様する。つまり、アドレスとバッファサイズと次のアドレスのポインタを用いて順次データを転送する。

 

DMAディスクリプタの切り替えには数usの時間を要する。通常のデータ転送では非常に大きな時間である。DMAディスクリプタ変更の際に、アクティブなGPIFスレッド(ソケット)を切り替えることで待ち時間0で転送用DMAバッファを切り替えられる。

f:id:yuji2yuji:20191205203417p:plain



参考:

EZ-USB FX3 入門 https://www.cypress.com/file/140781/download