オシロスコープでFPGA→FT2232H間のハンドシェイク信号を見てみた。
CH1(黄色)がTXE#、CH2(ピンク)がWR#。
WR#のLを検出してTXE#がHになるまでの時間(t6)は5.0ns (仕様は1ns〜14nsの範囲)
WR#のLを検出してTXE#がHになるまでの時間(t6)は5.0ns (仕様は1ns〜14nsの範囲)
WR#サイクル後のTXE#のinactive期間(t7)が79ns (仕様は49ns以上)
WR#の幅は約36ns(仕様は30ns以上)
TXE#の周期は134nsでデータレートに換算すると7.46Mバイト/sec
ロジアナソフトのプログレスバーの動作時間から算出したデータレートの5.3Mバイト/secよりも高い。。。途中で速度が低下する事象でも発生してるんだろうか? そこで、データ転送中にHになるフラグ信号をFPGAの未使用ピンに出してそれを観測してみた。
以下(CH2・ピンクがフラグ信号)が観測した波形で、これによると転送時間は2.27secだった。
フラグ信号が途中でLに落ちているのはアップロードが2回に分かれているからであり、これはロジアナのバッファ構造に起因する。ロジアナのバッファはリングバッファになっており、データを時系列にするためには、ソフトウェアはまずカレントポインタからバッファの最終番地までを取り込み、次にバッファの先頭番地からカレントポインタまでを取り込む必要があるためである。以下はロジアナアプリのデータを取得する部分だ。
たまたま、カレントポインタの位置がバッファ先頭であればアップロードは1回で済むが、多くの場合はこのように前半・後半の2回になる。 また、それによる中断時間は28msec程度だ。
たまたま、カレントポインタの位置がバッファ先頭であればアップロードは1回で済むが、多くの場合はこのように前半・後半の2回になる。 また、それによる中断時間は28msec程度だ。
何れにしろ、上記波形からアップロードは約2秒で出来ている。。。が、ソフトウェアでは3秒程度要しているように見えている。この差の時間はソフトウェア(GUIやスレッド処理等)の処理時間なのかも知れない。
0 件のコメント:
コメントを投稿