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

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


 Visual C#を使って非同期FIFOで多バイトをLOOP転送しました。

 以前に記録した「Visual C#でFT2232HのSyncFIFOで多バイトLOOP転送」の非同期FIFO転送機能の実験です。
 非同期FIFO転送機能の実験では、
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に構成したシーケンサの動きを示します。
 ステートS4〜S8は、FT2232H のFIFOにデータが入力したか監視して、入力有れば読み出してFPGA内のFIFOに格納します。 ステートS5は、受信が完了したか見極める時間を監視しています。

 ステートS10〜S15は、FT2232H の送信FIFOに空きがあるか監視して、空きが有るならFPGA内のFIFOからデータを読み出しFT2232H の送信FIFOに格納します。





●FT2232H 非同期FIFOのLOOP転送

 次の波形は、LOOP転送全体です。信号サンプルクロックが200nSなので速い信号は歯抜けになっています。
 ・左の赤丸は、FT2232H のFIFOからFPGA内のFIFOに格納する動きを示します。
  4_FtRdがHighでFT2232H のFIFOからデータを一気に4150バイト読み出しています。切れ目無く読み出せるのはダブルバッファ構成にしてるからでしょう。
  4150バイトのデータを読み込む時間は520uSです。
127nS/バイトです。速いですね。

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

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





●詳細な波形

 詳細な波形を記録します。信号サンプルクロックは5nSです。

 FT2232H のFIFOからFPGA内のFIFOに格納する動きを示します。注目点を赤で示します。
 16_r_HifSeqCntr は、シーケンサのカウンタを示します。状態遷移図に示す動きになっています。




 FPGA内のFIFOからデータを読み出し、FT2232H の送信FIFOに格納する動きを示します。
 これも状態遷移図に示す動きになっています。







ホームへ戻る