同期設計の基本 #
同期設計 の基本は下記3点。
- FFのCLK端子にはCLKのみを入れる
- CLK信号はFFのCLK端子のみに入れる
- 組み合わせ回路でループを作らない
組合せ回路でループを作ると発振するかラッチを形成する。Intelの推奨にもあるように組み合わせループは危険性の高いデザイン構造です。
- ループの動作はロジックを介した伝搬遅延に依存しますが、この伝搬遅延は変化する可能性があるため、ループの動作は予測不能となります。 ループは無限ループの原因となる可能性がある。
- 同期回路とすることで記憶素子であるDFFはCLKの立下りか立ち上がりのみで変化するようになる。
メリット/デメリット #
同期設計とするメリットは、満たすべきタイミング条件が2つのFF間の転送タイミングのみとなることである。
一方、非同期設計のデメリットは、
- 非同期設計よりも回路規模が大きくなる
- 消費電力が大きくなる
しかしながら、これらのデメリットは通常問題ないレベルであるので、同期設計とすべきである。
クロックスキューとジッタ #
同期設計では全てのFFに同時にクロック信号が入力される必要があるが、現実では厳密に同時ではない。配線遅延等によりFF毎に時間差があるのが普通である。この時間差を クロックスキュー (clock skew) と呼び、通常最も早くクロックと最も遅いクロックの時間差で定義する。
またクロック信号のエッジ位置も常に一定というわけではない。発信器の周波数変動や信号波形の歪みによって、位置がばらつきのが通常である。この時間的なばらつきを ジッター (jitter) をいう。
通常、クロックスキューはグローバルクロックに入っているならば一定の範囲内に収まるよう保証されている。しかしグローバルクロックを使っていなければこのタイミングは保証されないことになる。