« RXprogのLinux対応 | トップページ | もうじきARTIX-7でLinuxが起動しそうです »

2013.10.16

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の速度を変える必要があります。

Iseconfigoption

EXPARTAN-6T(基板Rev C)のコンフィグROMはこんな回路になっていて、4bitでFPGAとつながっています。いわゆるQSPIというものです。ROMの型番も4bitモードに対応したW25Q32が使われています。

Exp6tspirom

このコンフィグオプション変更の効果を、「MITOUJTAG」というバウンダリスキャンソフトで見てみましょう。

まず、Config Rateを26MHzにして、SPI buswidthが1の場合の各端子の状態をみてみます。

Spibootx1

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秒にまで短縮されました。

Spibootx2

最後に、SPIのビット幅を4bitにしてみます。

MISO2とMISO3まで使われて、4bitで転送していることがわかります。コンフィグ時間は0.107秒にまで短縮されました。

Spibootx4

SPIのビット幅を増やしていけば、FPGAのコンフィグを速くすることができて、PCI Expressの規定時間内に起動することができるようになるでしょう。

さて、XC6SLX45Tだからいいのですが、KintexやVirtex-7の大きいやつだったらどうなるのでしょう・・?
たとえQSPIやBPIを使おうとも、PCI Expressの規定時間内に起動することはできなくなります。

やはりLX45Tくらいが適切な大きさなのだと思います。

|

« RXprogのLinux対応 | トップページ | もうじきARTIX-7でLinuxが起動しそうです »

コメント

コメントを書く



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




« RXprogのLinux対応 | トップページ | もうじきARTIX-7でLinuxが起動しそうです »