エンジニア風味 (Engineer-taste)

電子系エンジニアのメモ帳

FT232HのSYNC 245 FIFOモード(その1)

FT232H(もしくはFT2232H)はSYNC 245 FIFOモードというのがあり、BitBangモードの数十倍程度の転送レートがあることが知られています。
SYNC245FIFOモードで動かすためには、EEPROMの書き換えが必要で、その辺は、こことか、ここに書いてあるので省略します。

SYNC245FIFOモードはFT232H側からクロックを出して、それに同期するようにデータを乗せてあげるとPCにデータを取り込むことができるのですが、PC側のデータ取り込みが間に合わない場合にはTXE#ステータスをHighにすることで、入力制限をかけます(PCに取り込む場合。コマンドはFT_READですが、ステータスはTXE#です)。
下表の赤で囲んだ部分を使えば、信号の受け渡しができます(データ8ビット、クロック1ビット、ステータス入力出力が各1ビット)。
f:id:engineer-paju:20181229215805p:plain
また、公式ページによれば、
f:id:engineer-paju:20181229220114p:plain
こんな感じにFT232Hから外部回路(ここではFPGA)に一方的に制御をかければOKとなっています。
で、FPGAを0-255までのFree Runにしてみたところ、データロスが発生しました。
f:id:engineer-paju:20181229221921j:plain
Free Runでなく、0-255まで各データを4回ずつにすると、先頭部分が欠けるという現象も出ました。

f:id:engineer-paju:20181230121328p:plain
データ入力が正しくできたとき
f:id:engineer-paju:20181230121436p:plain
入力データの一部が消失しています

その2に続きます。