PCIexpressはPCIに代わるPCの拡張ボード用のインターフェイスとして、とても一般的なものです。 PCIeを搭載したFPGAボードではPCIe側からFPGAボード上のメモリを参照・書き換えできるような 仕組みが一般的です。しかし、FPGAボードをデータ収集装置や制御装置として使用する場合には、 高速なシリアル通信のようにストリーム入出力として使用できるほうが便利です。 本製品はこのような目的のために開発されました。

簡単でお手軽なFPGA組み込み用PCIexpress ストリーム通信モジュール




  • 本製品は、CycloneIV -GX FPGA開発ボードおよびスターターキット用のQsysを含むQuartusIIの サンプルプロジェクト、およびWindows/Linuxドライバで構成されます。プロジェクトを論理合成する だけですぐにPCIexpress通信によるストリームデータ入出力を体験できます。
  • 簡単シンプル、FPGA側はAvalonSTインターフェイスにて、PC側はWindowsおよび Linux 2.6用のドライバが用意されていますので、   open/close/read/writeを用いて通常のストリーム入出力としてシリアル通信感覚で FPGAのデータを読み書きすることが出来ます。
  • Linuxでの読み・書き・ループバックのテストプログラムも添付。QuartusIIのプロジェクト もドライバからテスト入力やループバックを切り替えられるように対応しています。
  • FPGA側のデータは64bit パケット付きAvalonSTバスで転送されます。SPIやUART通信では ボトルネックになりがちですが、100MHzで動作させた場合、800MB/sの広帯域です。
  • PCIexpressの高速動作にはDMA転送が肝心ですが、DMAへの命令発行と転送終了には タイムラグがあり、トータルのスループットを実現するには適切なバッファリングと タイミングが必要です。本モジュールではRead/Writeに独立したDMAを持ち、FPGAからPCIe への転送にはAvalonSTパケットのサイズを取得して必要な転送サイズをPCIeに通知する 仕組みを追加することで効率的な転送を実現しました。本モジュールならGen1、x4レーン Linuxドライバにて、FPGA->PCで実測約450MB/s、PC->FPGAで実測約235MB/sの速度を実現しています。 (Gen1、x1レーンならばFPGA->PCで約166MB/s, PC->FPGAで約115MB/s)


  • FPGAからPCへのFIFOは必要ですが、それ以外はFPGA側にバッファ用のメモリを持ちません。 極力メモリリソースに余裕があるPC側にバッファを確保する構造になっていますので、   限られたFPGAのハードウェアリソースを有効に活用することが出来ます。


Linux/Windows両対応

Linux2.6用にはデバイスドライバとCUIテストアプリケーションが用意されています。 テストプログラムはCのソースコードが付属します。
また、Windows7 32bit/64bit 用のにはデバイスドライバおよび サンプルのC#ソースコード付きテストプログラム付属します。
すぐに動作確認が出来るだけでなく、お客様アプリケーションを作成する際の リファレンスとしても使用できます。 デザインはPC->FPGAへの書き込みのほか、FPGA内に組み込まれたダミーデータ発生器よりFPGA->PCへの読み出し、およびPC->FPGA->PCのループバックがテストできるようになっています。


更に高速なデザインへ

本デザインはアルテラ社の「CycloneIV GX 開発キット」および「CycloneIV GX スターターキット」にて動作検証されたQuartusIIプロジェクトが用意されています。
Alterra社のPCIexpressのハードIP搭載FPGAは多彩で、ArriaやStratixシリーズのような、 上位のFPGAにはGen2やx8, x16の高速なものも用意されています。本モジュールは Qsysで作成されており、アルテラ社のIPを使用していますので、お客様により、 対応するFPGAデバイスに最適なPCIeハードウェアIPの設定を行うなど最低限の変更 で高速な通信が実現できるはずです。
お客様のターゲットボードにて動作確認済みのモジュールが必要な場合には別途 対応いたしますので、お気軽にご相談ください。
ライセンス形態
  • 使用台数などの制限はございません。価格はお問い合わせください。
製品内容
  • qar形式Quartus用プロジェクトファイル一式
    (CycloneIVGXFPGA開発ボードおよびスターターキット用)
  • Linux2.6用デバイスドライバ
  • Linux用テストプログラム(CUI)およびCソースコード
  • Windows7/8用デバイスドライバ
  • Windows7/8用テストプログラム(GUI)およびC#ソースコード VisualStudio2013用
アクセスカウンター