XILINX PCI Express IPの非同期クロック動作
PCI Expressはマザーボードから送られてくるリファレンスクロックに同期して動作するのが標準的な動作なのですが、リファレンスクロックを使わずに、ボード上に乗せた発振器をベースにした非同期動作も規格上は可能です。なお、リファレンスクロックを使う動作のことをslot clockingといいます。
XILINX(AMD)のPCI Expressコアは非同期クロックを使って動作できるようですが、非同期クロックは使えないという記述もあります。
例えばPG054には以下のような記述があります。
実際に、XILINXのXDMAコアで非同期コアが使えるかどうか試してみることにしました。
コアのIPを開くとMISCの中に、Enable Slot Clock Configurationというチェックボックスがあります。デフォルトでこれがチェックされているのでオフにします。
これで論理合成を行うと、コアの中のPCIE_ASYNC_ENがtrueにセットされ、非同期動作が利用できるようになるようです。
しかしながら、現実的にはうまくいきません。
PCI ExperssにはSSC(スペクトラム拡散クロック)とASPM(電源管理の何か)があるためです。
ASPMはPCの総合的な電源管理の仕組みでBIOSより下にあるものなのですが、通信データがない場合に低消費電力状態に落とすという動作があります。これはWindowsの電源管理の中でオフにすることはできます。
スペクトラム拡散によってPCI Expressのデータレートは速くなったり遅くなったりするのですが、XILINXのギガビットトランシーバはリファレンスクロックが一定速度であれば、データレートの変化に追従することができません。そのため、SSCとASPMをオフにしないと使えないというわけです。
しかし、SSCについてはBIOS(UEFI)で無効にできなければどうすることもできません。
実際に実験してみたようすを動画にしました。
一番左端のLEDがPCI Expressのリンクアップを示すもので、一瞬だけリンクアップしてもすぐに切れてしまうことがわかります。
結論としては、XILINXのPCIeコアでは非同期クロックは使えないと思ったほうがよいでしょう。
| 固定リンク
コメント