以下の接続でPCとFPGA間の高速転送をしたいプロジェクト。
今はRead120Mbps,Write100Mbpsくらい。
LinuxPC ←(USB-HS)→ USB3300 ←(ULPI)→ STM32H7B0 ←(OCTO SPI)→ FPGA
FPGA内ではAXIマスターポートをつける予定だけど、まだSPIクロックで動くBRAMにアクセスできるだけ。
USB転送はPCではlibusb、STM32ではtinyusbを使ってVendorSpecificなバルク転送をします。
OCTO SPIはSTM32はHALを使って、FPGAは適当に作ったRTLを使います。
- PCはLinuxPCならたぶん何でもよい
- 基板を1枚こしらえました(スケマ)
- この基板の動作確認は200Tのみ
- 8ピンのデータ用type-Cコネクタ
- 6ピンの電源用type-Cコネクタ
- USB3300-EZK
- 24MHz 3225 のパッシブクォーツ水晶発振器 (2と4がグランド)
- 1206 の抵抗とかコンデンサ
- コネクタは次の組み合わせでぎりぎり干渉しない
- 他…
- QMTECHのFPGA (どっちか1個)
- STM32H7
cd host/
cmake .
make
sudo ./main
firm/tinyusb
の下にtinyusbをクローンする- このリポジトリにあるファイルで上書きする
- usb_octospi.iocからプロジェクトを作る
- このリポジトリにあるファイルで上書きする
- ここに従って参照パスを追加する
- Right click the project, go to properties. in C/C++ General -> Paths and Symbols, in the "Includes" tab add a path, make it a workspace path, point it to the tinyusb/src directory. Then, in the "Source Location" tab, add folder, and also point it to tinyusb/src
- Add a tusb_config.h to your "Core/Inc"
- なひビバで次のどちらかのプロジェクトを再生してビルドする
- QMT100/
- QMT200/