« PCIe-DMAデザインでDDR2コアをデュアルポート化 | トップページ | PCI Expressを扱うFPGAは何m秒でコンフィグすればよいか? »

2011.03.03

踊るクロック位相

Spartan-3のDCM_SPには、位相シフタ(phase shifter)が入っています。

Dcmps

この位相シフタを使うと、入力クロックの位相を、任意の量だけ、ダイナミックに変化させることができるといわれています。

動的に動かすというのを、実際にやってみました。
この位相シフタは内部で-255~+255までのカウンタを持っているそうで、PSCLKの立ち上がりで、遅延量が1つ減ったり増えたりします。遅延量の変化が完了するとPSDONEという信号が'1'になります。

注意しなければならないのは、PSCLKは止めてはいけないということです。PSCLKが'0'のままだとPSDONEは変化しません。PSCLKを出しっぱなしにして、PSENを制御するのが正解です。
PSENをアサートしてからPSDONEがアサートされるまでは、数μ秒かかることもありました。PSDONEを見るのは必須です。

入力クロック48MHzで実際に試してみると、-255~255の範囲というのはどうやら怪しくて、-384~+384くらいまで動いているように思われます。-255~255に限ってしまうと動く範囲も狭く(±90°くらいしか動かせない)、あまり動いた気がしません。しかし、最大で10.00nsまでしか動かせないようなことも書いてあるので、そういうものなのかもしれません。
また、DCMのSTATUS[0]が位相シフタのオーバーフローを表すということなのですが、±255を超えても反応しないように思えました。-400~+400を超えると、INCDECの方向を反転させても戻ってこなくなります。

結局、よくわかりませんが、シフト量は-255~255の範囲にしておいたほうが無難なのでしょう。範囲が狭くなるのは仕方がないようです。

こうして、クロックを動的に動かしてみた画像を撮影したので、動画をアップロードします。

上の波形が元のクロック(48MHz)。下の波形がシフトさせたクロックです。-384~+384の範囲で動かしています。使ったデバイスはSpartan-3Eです。

|

« PCIe-DMAデザインでDDR2コアをデュアルポート化 | トップページ | PCI Expressを扱うFPGAは何m秒でコンフィグすればよいか? »

コメント

コメントを書く



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




« PCIe-DMAデザインでDDR2コアをデュアルポート化 | トップページ | PCI Expressを扱うFPGAは何m秒でコンフィグすればよいか? »