« 鹿島神宮へお参り | トップページ | 事務所の納会 »

2006.12.26

PCI Expressの開発再開

PCI Expressの開発を再開することにしました。

Spartan3 でPCI Expressの機器を開発する場合、Spartan3はPCI Expressの信号を直接出力することができませんので、高速シリアル変換のインタフェースチップを使うことになります。
このFPGAとPCI Expressチップとの間のインタフェースはPIPEと呼ばれています。

PIPEを8ビット幅にしておくと、250MHzの速度にもなります。単純にFPGAのロジックから信号を出力したのでは、うまくインタフェースすることができません。

この速度のレベルになると、FPGAは、外から入力したクロックをDCMをつかって位相シフトさせ、なおかつFPGAが出力したデータの遷移するタイミングをクロックから何ns後にするといった制約をUCFに書き、タイミング検証を行うといったテクニックが必要になります。

前回実験していたときには、FPGAが出力したデータが、PCI Expressボード上のチップに正しく伝わり、2.5Gbpsのシリアルに変換されパソコンに伝わり、パソコン側のチップセットで受信できているか、を検証するすべがなかったので、そこで行き詰まってしまいました。

そこで今回、下の写真のような治具を作りました。

Pcie20061226_1

この治具基板は、LVDSで100MHzのクロック信号を作りPCI Express基板に供給する役割と、PCI Expressの送信と受信の信号をループバックさせるということを行っています。

つまり、PCI Expressボード上のチップが出力したデータをループバックさせて再び取り込み、FPGAの中に仕込んだロジアナを使うことで、「FPGAが出力したデータがインタフェースチップに正しく伝わり、それが正しく受信できている」ことを確認するためのものです。

今日はこの基板を使って実験を行いました。

最初、全部ゼロを送ったり、同じデータの繰り返しならば正しく通信できたのですが、ちょっとでも複雑なパターンを送るとPCI Expressチップの受信回路がすぐにエラーを起こしてしまうという現象が観察されました。これはノイズなどでビットやシンボルのロックが外れたりしたときに起きる現象です。

どうやら、LVDSの振幅が僅かに強すぎたようです。REFCLKの信号に抵抗を挟んで若干弱めてやると、全くエラーは発生しなくなりました。PCI Expressチップが要求するリファレンスクロックは非常に微妙で難しい信号なようです。

エラーが出なくなったのを確認したら、FPGAで乱数を発生させつつ、5μ秒に一回「COM SKP SKP SKP」という制御コードを送ります。治具でループバックさせ、FPGA内のロジアナIPコアで取り込んでみたところ、ちゃんと正しく受信できていることがわかりました。
Pcie20061226_2

思ったようにPCI Expressの信号をFPGAから送信することができるようになりました。これでようやく、パソコンとつないでリンク確立シーケンスの実験ができるようになりました。

|

« 鹿島神宮へお参り | トップページ | 事務所の納会 »

コメント

コメントを書く



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




« 鹿島神宮へお参り | トップページ | 事務所の納会 »