歩き遍路 平成19年春(J1) 記録の準備

Visual C#で
   FT-2232HのSyncFIFOで多バイトLOOP転送


 Visual C#を使ってSyncFIFOで多バイトをLOOP転送しました。

 以前に記録した「Visual C#でFT2232HのSyncFIFOでLOOP転送」の多バイト転送機能の実験です。
 多バイトLOOP転送では、
FT2232Hが持つFIFOの容量を超える4150バイトを一度に転送して、パケットの繋ぎ、OSの処理具合、転送速度を確認します。

●FT2232H 同期FIFOで多バイトLOOP実験の構成と操作画面

 実験の構成と操作画面を次に示します。
 構成写真は「Visual C#でFT2232HのSyncFIFOでIN転送」と同じなので省略します。

 次に実験の構成を示します。
 ホストのパソコンにFT2232H用ドライバ D2XX とVisual C#で作成したプログラムを搭載します。 Visual C#のプログラムで 0〜255のデータを昇順に繰り返して4150バイト作成して送信します。又、4150バイト受信して送信データを同じか操作画面で確認します。
 FT2232Hは、FPGAボードの上に実装しました。FT2232Hの同期FIFOの信号をFPGAに接続して、FPGAで構成したシーケンサとFIFOで制御します。FPGAで構成したFIFOの容量はは16Kバイトで、FT2232Hからの全データを一旦格納してします。そして、受信完了すれば読み出して送信します。




 次は4150バイトの受信したデータを表示した操作画面です。
 「Big Loop」ボタンを押下すると 4150バイト作成してFT2232Hに送信します。 そして、4150バイト受信して操作画面に表示します。
 表示データは、0〜255を昇順に繰り返したかたまりが16回と0〜53なので送信データと同じです。





●FPGAに構成したシーケンサ

 次の状態遷移図は、FPGAに構成したシーケンサの動きを示します。
 ステートS1〜S4は、FT2232H のFIFOにデータが入力したか監視して、入力有れば読み出してFPGA内のFIFOに格納します。
 ステートS4は、受信が完了したか見極める時間を作っています。
 ステートS5とS6は、最後の1バイトをFIFOに格納します。
 ステートS10〜S13は、FT2232H の送信FIFOに空きがあるか監視して、空きが有るならFPGA内のFIFOからデータを読み出しFT2232H の送信FIFOに格納します。





●FT2232H 同期FIFOのLOOP転送

 次の波形は、LOOP転送全体です。
 ・左の赤丸は、FT2232H のFIFOからFPGA内のFIFOに格納する動きを示します。
  4_FtRdがHighでFT2232H のFIFOからデータを読み出します。1つの正パルスは8.5uSで512バイト読み出しています。
  続く1.5uSの LOW期間で次のデータを読み込のですが速すぎます。ダブルバッファ構成にしてるのでしょう。
  3個目と4個目の間に33.4uSの LOW期間が有ります。何でしょうか?パソコンが忙しいのでしょう。
  4150バイトのデータを読み込む時間は114.4uSです。
27.6nS/バイトです。速いですね。

 ・中央の赤丸は、データ入力完了を確認する期間を示します。今の時間は、十分長い適当な設定です。

 ・左の赤丸は、FPGA内のFIFOからデータを読み出し、FT2232H の送信FIFOに格納する動きを示します。
 4150バイトのデータを書き込む時間は87.2uSです。21nS/バイトです。速いですね。





●Visual C# で作ったプログラム

 Visual C# で作ったプログラムの一部を記録します。






ホームへ戻る