EZ-USB FX2とSpartan-6
開発中のSpartan-6ボードで、EZ-USB FX2を通じたデータ転送ができるようになりました。
といっても、Spartan-3用に作成したデザインをSpartan-6にもってきただけなのですが、ばっちり動きました。
ISEは意外と賢く、ソースファイル中でSpartan-3用のプリミティブを指定したら自動的にSpartan-6用のに置き換わるみたいです。ただし、DCMの中のJF_FACTORYとかいうアトリビュートだけは消してやらねばなりません。
それ以外の注意点はとくになく、動いたという感じです。
そして、サンプルとして、FPGAで307200バイトの乱数列を作って、それをUSB経由でパソコンに取り込みました。
このデータをVGA画像(640×480)として画面に表示すると、砂嵐のように見えます。
このように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個と出ます。
いや、でもSpartan-6にはそんなにたくさんのBlockRAMはありません。
データシートには18kbのが32個と書かれています。このブロックRAMは2分割して9k×2として使うこともできますが、どう数えても96個もないです。謎です。
論理合成時間からBitファイルの生成までにかかった時間は、Core2の2.4GHzのマシンで1分弱でした。
ISE11.2はそんなに重くありません。
リソースの利用率はまだ1%とスカスカです。Spartan-6は、かなりいろいろ入る感じがします。
さて、明日はDDR2 SDRAMの検証に入りましょう。
| 固定リンク
コメント