100MHzでDDRクロック出力

100MHz以上でデューティーサイクルを確実に50%にするには、CLKINのクロックが50%でもDCMのデューティーサイクル調整機能を使用する必要がある。クロック転送でCLK0,CLK90,CLK180,またはCLK270,出力を使用する場合は、DUTY_CYCLE_CORRECTION属性を TRUEに設定する。DCMのその他の出力は通常デューティーサイクルが50%に調整される。


特に200MHz以上では以下の様な回路の使用が推奨される。DCMからCLKx及びCLKx180出力を両方使用し、DDR出力フリップフロップ(ODDR2)のC0及びC1入力それぞれを駆動する。DDRフリップフロップのD0入力はVcc、D1入力にはGNDに接続する。各DCM出力は個別にグローバルバッファを駆動しており、デューティーサイクルの歪みが最小限に抑えられる。高周波数では、1つのクロックを使用してDDRフリップフロップ内で1つの入力を反転すると、約150psのデューティーサイクルの歪みが発生しするので推奨されない。


250MHz以上の周波数では、LVDSなどの差動信号規格を使用してクロックを分配する。最高のパフォーマンスを達成するには、クロック入力とクロックフィードバックパスに差動グローバルバッファ(IBUFGDS/OBUFDS)を使用する必要がある。IBUFGDSを使用すると、ディバイスの一辺にあるグローバルバッファ入力がすべて使用されてしまうが、高周波数のクロック転送で最良のクロックが得られる。


参考
Spartan-3 ジェネレーシ ョ ン FPGA ユーザー ガイド v1.4