EXPARTAN-6Tが起動しない!? -FPGAの起動を速くするには…
あるお客様から、パソコンに挿したEXPARTAN-6Tが電源投入時に認識しない、というご連絡をいただきました。リセットしたときには起動して認識するそうです。
おそらくFPGAのコンフィギュレーションに時間がかかっていて、BIOSがPCI Expressを探しにいくまでの間にFPGAが起動していないのではないかと思われます。
規格によれば、PCI Expressの周辺機器は、500ms以内に起動しなければいけないことになっています。これはFPGAにとっては結構厳しい制約です。
XC6SLX45ではコンフィグデータは1.45MByteですから、11600Mbitあります。もし、ISEのデフォルトのとおり2Mbpsでコンフィグしたら6秒近くかかります。
ですから、ISEのGenerating Programming FileのオプションでSPIの速度を変える必要があります。
EXPARTAN-6T(基板Rev C)のコンフィグROMはこんな回路になっていて、4bitでFPGAとつながっています。いわゆるQSPIというものです。ROMの型番も4bitモードに対応したW25Q32が使われています。
![]()
このコンフィグオプション変更の効果を、「MITOUJTAG」というバウンダリスキャンソフトで見てみましょう。
まず、Config Rateを26MHzにして、SPI buswidthが1の場合の各端子の状態をみてみます。
PROGがLになるとINIT端子もLになります。その後、PROGがHに解放されるとCFG_CCLKが出力され、CFG_MISOにデータが出力されます。といってもコンフィギュレーションデータはほとんどが0なので、バウンダリスキャンで見てもあまり変化しているようには見えません。
CFG_CCLKが出力されている時間がコンフィギュレーション期間です。この時間を測ってみると、0.421秒でした。1.45MByte×8÷26MHz÷1 = 0.446秒ですから、だいたいあっています。
ただ、コンフィグ開始してから0.446秒かかってしまうとPCI Expressの規定時間内に起動できるかどうかは微妙です。
![]()
次にConfig Rateを26MHzで、SPI buswidthが2の場合の各端子の状態をみてみます。
先ほどの波形との違いは、CFG_MOSIまで動いているということです。データバスが2bitになったため、コンフィグ時間は約半分の0.212秒にまで短縮されました。
![]()
最後に、SPIのビット幅を4bitにしてみます。
MISO2とMISO3まで使われて、4bitで転送していることがわかります。コンフィグ時間は0.107秒にまで短縮されました。
SPIのビット幅を増やしていけば、FPGAのコンフィグを速くすることができて、PCI Expressの規定時間内に起動することができるようになるでしょう。
さて、XC6SLX45Tだからいいのですが、KintexやVirtex-7の大きいやつだったらどうなるのでしょう・・?
たとえQSPIやBPIを使おうとも、PCI Expressの規定時間内に起動することはできなくなります。
やはりLX45Tくらいが適切な大きさなのだと思います。
| 固定リンク







コメント