/usb-ospi

STM32H7を使ってUSB-HSをOCTO SPIに変換してPCとFPGAをUSBで通信する

Primary LanguageC

PCとFPGAをUSB接続する

概要

以下の接続で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を使います。

部品

使い方

ホスト

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"

FPGA

  • なひビバで次のどちらかのプロジェクトを再生してビルドする
    • QMT100/
    • QMT200/