PCI ExpressのIPコアがWindowsXPで認識された
昨年の9月ごろから、少しづつ開発を進めてきたPCI Express IPコアですが、ようやくWindowsXPから認識されることができました。
前回の日記ではWindowsXPが起動中にフリーズすると書きましたが、原因はPCI Expressのフローコントロールがちゃんと設定されていなかっただけでした。
マルチファンクションの要求に対して正しく拒否応答するようにし、フローコントロールの部分を修正してみると、見事にWindowsXPが起動しました。
不明なデバイスとしてちゃんと認識されています。
プロパティを見てみると、「PCI Slot 5(PCIバス1,デバイス 0,機能0)」と表示されています。
そういえば、BIOSがいろいろ初期化している最初の時にはバス番号5番でいろんなリクエストが送られてきましたが、BIOSによる初期化の中盤からバス番号が1番になりました。きっと、PCIバス番号の再割り当てが行われたののだろうという推測が成り立ちます。
次に、プロパティをさらに詳しくみてみると、ベンダIDなどに設定した値などがデバイスインスタンスIDになっています。

そして、WindowsXP対応の、PCIのコンフィグレジスタやI/Oなどを見るツール(福田さんのPCIXP.EXE)を使わせてもらって、コンフィグレジスタを見てみると、見事に見えました!
ちなみに、使っているボードは、XILINXのSpartan3 PCI Expressスタータキットです。

世の中にはVirtex5LXTなんていうPCI Expressコア内蔵のFPGAも登場していますが、やはりSpartan3+外付けPHY用のIPコアを、今作る魅力というものもあるかと思います。
まだXC3S1000のSliceを14%しか使っていないし、BlockRAMは1個も使っていません。
140kゲート相当ですから、コンパクトでしょ?
| 固定リンク






コメント