Virtex2のDCM
一部で性能が悪いと言われているVirtex2のDCMですが、実際にはどの程度なのでしょう。たまたま、XilinxのWebへいったところ、いつのまにかジッタ カリキュレータなるものを発見したので、いろいろと計算してみる。
まずは、30MHz、50MHzの源振から40~200MHzのクロックを作ってみる。青が30MHz、赤が50MHzのグラフである。太い線がJitterそのもの(ns)で、細い線が出力CLKに正規化した時の値である。
グラフを見れば一目瞭然だが、赤い線は3カ所で、青線は5カ所でジッタが少なくなる。DCMの出力周波数は、m/nで表されn=1の時、すなわち普通に数倍する方が特性が良い。100MHzを作るためには、30MHzを10/3倍するよりは、50MHzを2倍する方がよい。これはDLLの仕組みを考えればある程度予想できることだ。ジッタ自体は約0.1ns良くなる。
そこでふと思うのが、変にm/n倍しないで、正確な10MHzのクロックを入れていろいろなクロックを作ってみるのはどうだろう。
![]()
先ほどのグラフに、10MHz(緑)、20MHz(茶色)を加えてみた。残念ながら、10MHzの場合は割り算が存在しないがジッタは高い値で安定している。20MHzも10MHzよりましだが、高い値で安定している所は同じである。
結論としては、使いたい周波数の1/2や1/3等の源振を用意して、2倍3倍するのが賢い使い方。特に100MHzを越える当りでは、CLKのジッタが9%なのか13%なのかはハードウェアの動作に大きく影響を与える。
The comments to this entry are closed.


Comments