USBテストプログラム
Artix-7ボードのDDR3メモリに対してUSB3.0を通じて高速に読み書きするテストプログラムをご用意しております。
概要
このプログラムを使用すると、
- USB3.0を通じたデータの転送 (8~256MByte)
- DDR3メモリへの書き込みと、比較
- FPGA内のパターンジェネレータによるパターン生成の確認
- 入力したデータの画像化
ができます。
また、C#で記述されており、ソースコードはお客様サイトからダウンロードすることができます。
画面イメージ
本プログラムは2つの画面で構成されています。
メインウィンドウ
イメージ表示ウィンドウ
ダウンロード
このアプリの実行ファイルは下記のリンクから入手できます。
ソースコードはこのページの最後部にございます。
- USBDDRTEST アプリケーション 291kbyte 2020/7/14 Update
更新履歴
2020/5/12 最初のリリース
2020/7/14 USB接続時にDLLが読み込めないエラーが出る問題を解決 (DLLを更新)
使用方法
① FPGAの書き込み
FPGAには「FPGAをUSB3.0データ収集装置として使うためのサンプルデザイン」を書き込んでおいてください。
② アプリの起動
USBDDRTEST.exeを起動します。
③ データ量の調整
スライダーを調整して送信したいデータ長に合わせます。
最大送信長は512MByteですが、Artix-7ボードは256MByteのメモリしか搭載していないので、512MByteに合わせた場合は読み書きエラーとなります。
④ 入力データソースの選択
IN data sourceを選択します
- Internal Registers・・FPGA内部に設けた16個の32bitレジスタから読み出します
- Read from BRAM・・FPGA内部に設けた512kByteのBRAMから読み出します
- Read from SDRAM・・FPGAボード上の256MByte DDR3 SDRAMから読み出します
- Pattern Generator・・FPGA内のパターンジェネレータから読み出します
パターンジェネレータを選択した場合のパターンは以下のとおりです。
- Sequential Number・・・FPGA内部でインクリメントするカウンタです
USBの読み出しデータ数と同期せずにフリーランしているため、バスのアイドル時間にFIFOが溢れるので不連続な部分が生じます。
- Horizontal gradation・・・横方向のグラデーションです
FPGA内のカウンタですが、640x480のVGA画像を意識し、USBの読み出しデータ数と同期してカウントアップしているので、横方向のグラデーションとなります。
- Vertical gradation・・・縦方向のグラデーションです
FPGA内のカウンタですが、640x480のVGA画像を意識し、USBの読み出しデータ数と同期してカウントアップしているので、縦方向のグラデーションとなります。
- Frame number・・・640x480の画像を読み出すたびにカウントアップする値です。連続して読み出すと明るさの変わる長方形が読み出されます。
- GPIO[31:0]・・・ボード上のGPIOの値が画像として読み出されます
- GPIO[63:32]・・・ボード上のGPIOの値が画像として読み出されます
- Random pattern・・・FPGA内で生成した疑似乱数が表示されます。
⑤ 出力ターゲットの設定
Out tansfer targetを設定します。
USBでデータを送る送信先です。
- Internal Registers・・FPGA内部に設けた16個の32bitレジスタに書き込みます
- Read from BRAM・・FPGA内部に設けた512kByteのBRAMに書き込みます
- Read from SDRAM・・FPGAボード上の256MByte DDR3 SDRAMに書き込みます
- None (not use)・・どこにも出力しません
また、内部レジスタやBRAM、SDRAMに送信するデータのパターンは以下の中から選択できます。
- Sequential Number・・・インクリメントする値を送信します
- Random pattern・・・乱数パターンを送信します
- Frame number・・・1回のデータを送信するたびにカウントアップする値です。連続して読み出すと明るさの変わる長方形が読み出されます。
- 00 FF 00 FF・・・00とFFを交互に送信してデータバスの品質をテストします
- 1 2 4 8 10 20 40 ・・・Walking-1を送信してデータバスの品質をテストします
⑥ 転送オプションの設定
以下のオプションを設定します。
- Random WAIT on BULK OUT・・・OUT転送の際に、一定の間隔ではなくクロック単位でランダムなWAITを入れます。IPコアの動作テストのためのものなので、普段は使う必要はありません。
- Continous Transfer・・・IN、OUTの動作を連続して繰り返し行います
- Compare and stop if error・・・IN/OUTの際に入出力データを比較します。エラーが起きていた場合にはループを停止します。
⑦ USB転送の実行
以下のボタンを押し、USBの転送を行います。
アイコン | 機能 |
---|---|
IN転送を実行します。画像表示ウィンドウが開いている場合は、受信したデータを画像として表示します。 | |
OUT転送を実行します。 | |
IN転送とOUT転送を実行します。Continuous TransferのチェックボックスがONになっている場合は、入出力データの比較を行います。 | |
現在のIN/OUT動作を停止します | |
画像ウィンドウを開きます | |
USB Resetを行います。なお、USB Resetを行うとその後の通信はできなくなります。 |
⑧ 結果の表示
IN/OUT転送を行うと、転送のかかった時間、実行速度、およびトータルの転送バイト数が表示されます。
IN/OUT転送の場合、比較してエラーが発生していた場合は、エラー内容が表示されループ動作は停止します。
ソースコードの公開
当プログラムはVisual Studio 2019のC#で開発されており、プロジェクトは公開されています。
特電Artix-7ボードをお買い上げのお客様は、ユーザ登録をしていただくことでダウンロードが可能になります。
- USBDDRTEST ソース付き 184kByte 2020/5/12
このプログラムにはUSBを通じてFPGAボードオープンすることや、データの送受信を行うサンプルが含まれています。これをベースに改良していくことで、USB3.0産業カメラや、USB3.0計測装置を迅速に開発することができます。