« Spartan-6ボードの実装完了!即動作確認 | トップページ | Spartan-6とDDR2メモリの動作、即、確認 »

2009.09.13

EZ-USB FX2とSpartan-6

開発中のSpartan-6ボードで、EZ-USB FX2を通じたデータ転送ができるようになりました。
Sp6_usb20if

といっても、Spartan-3用に作成したデザインをSpartan-6にもってきただけなのですが、ばっちり動きました。

ISEは意外と賢く、ソースファイル中でSpartan-3用のプリミティブを指定したら自動的にSpartan-6用のに置き換わるみたいです。ただし、DCMの中のJF_FACTORYとかいうアトリビュートだけは消してやらねばなりません。
それ以外の注意点はとくになく、動いたという感じです。

そして、サンプルとして、FPGAで307200バイトの乱数列を作って、それをUSB経由でパソコンに取り込みました。
このデータをVGA画像(640×480)として画面に表示すると、砂嵐のように見えます。
Usbtest

このようにVGA画像サイズのデータの取り込みというケースを想定して、USBの実効転送速度を測った結果は、
・IN方向 39MBytes/sec (312Mbit/sec)
・OUT方向 29MBytes/sec (232Mbit/sec)
でした。

ここにも書いたとおり、USB2,0 HighSpeedモードの実効速度は、
32.768Mbps/sec×N(整数)という単純な式で表されます。

この式は、「125μ秒周期のマイクロフレームの中に、何個のバルク転送パケット(512バイト)を詰め込むことができるか」という単純な計算です。N=9以上になるとパソコンのUSBチップの応答性に激しく左右されます。

今回使用したパソコンの場合、IN方向のNは9~10で、OUT方向のNは7でした。
実用的なデータで測って40MByte/sと30MBytes/sということで、まずまずの性能といえるのではないかと思います。

ところで、このデザインでは、USBのIN用とOUT用にそれぞれFIFOのバッファを入れているのですが、ISE11.2でSynthesizeが終了したときのレポートで、ブロックRAMの使用率が2個/96個と出ます。
Sp6_bram_96

いや、でもSpartan-6にはそんなにたくさんのBlockRAMはありません。
データシートには18kbのが32個と書かれています。このブロックRAMは2分割して9k×2として使うこともできますが、どう数えても96個もないです。謎です。

論理合成時間からBitファイルの生成までにかかった時間は、Core2の2.4GHzのマシンで1分弱でした。
ISE11.2はそんなに重くありません。
リソースの利用率はまだ1%とスカスカです。Spartan-6は、かなりいろいろ入る感じがします。
Usbtest_summary

さて、明日はDDR2 SDRAMの検証に入りましょう。

|

« Spartan-6ボードの実装完了!即動作確認 | トップページ | Spartan-6とDDR2メモリの動作、即、確認 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Spartan-6ボードの実装完了!即動作確認 | トップページ | Spartan-6とDDR2メモリの動作、即、確認 »