クロック同期設計
クロック同期設計 (クロックどうきせっけい) は、デジタル論理回路の設計技術のひとつである。 クロック信号と呼ばれる一定の周期でHi-Lowを繰り返す信号をフリップフロップに入力すると、データ信号などフリップフロップに入力された他の信号をクロック信号の周期に合わせて遅延させることができる。 これを間に挟むように用いて論理回路を構成すれば、その中の論理回路はそのクロック周期を越えない限り設計者はタイミング設計ではクロック信号からの遅れ要素だけ考慮すれば済む。回路規模がクロック周期を超えることをタイミング・バイオレーションと呼ぶ。このような回路をクロック同期回路と呼ぶ。またそのクロック信号を回路全体に行き渡らせ全ての回路をクロック同期させれば、設計者はタイミング・バイオレーションのみ気を付けることで調和を保った回路を設計することができる。このことをクロック同期設計と呼ぶ。
クロックの種類
同期のためのクロックはラッチの制御や速度などに依存して複数種類がある
- 単相クロック
- フリップフロップなどに向け、エッジトリガとして用いる。
- 2相クロック
- 2相ノンオーバラップクロック
- レベルトリガのラッチなどに用いる。φ1、φ2の2つの異なる位相を持ち、互いにトリガ期間が重なっていないクロック。順序回路にφ1クロック、φ2クロックと挟み込むように配置し、ノンオーバラップ期間を設ける事でデータスルーを抑える。
- 2相ノンオーバラップクロック
同期式と非同期式
論理レベルで遅延を考慮しない場合は発生しないが、遅延のある実回路では、「ハザード」や「グリッチ」と呼ばれる信号のバタツキが発生する場合がある。例えば、カウンタ回路で7から8へと桁上がりする場合、"0111"から"1000"へと変化する間、先に下位桁だけが変化して上位桁が下位桁からの桁上げ信号を処理している間は正しい出力に変化しないために伝播遅延で生じるしばらくの間だけ"0110"や"0100"、"0000"となる事がある。
非同期式の回路で、ハザードやグリッチを放置して、例えば全桁が0となる度に何かの動作を命じていれば、4や8、16といった桁上がり動作でハザードが生じる度に思わぬ誤動作を起こす危険がある。
同期式では、多くの場合、内部のフリップ・フロップ回路がマスター・スレーブ構成のように前後に2重となっていて、出力だけを見ればクロック入力に合わせて前段の結果を後段に伝える動作だけを整然と行なっている。前段の側ではクロックの遷移直後は入力信号にハザードが現れることを考慮して外部入力が安定する頃合である(1相式クロックの場合)クロックの逆相で情報を前段に取り込んでおく。
同期式では少しでもクロックのタイミングに遅れた入力はその時点で意味を失うが、非同期式では入力の変化は伝播遅延による波を形づくって上流から下流へ伝わって行くだけである。
- 同期式の問題点
- クロック信号の分配に細心の注意が求められる
- クロック信号が伝播遅延したりエッジがなまっていたりすると、確実な動作が期待出来ない
- 多数のゲートが同時に動作する
- 高速変化にも追従して安定した電源を各ゲートへ供給しないと、電源電圧が降下したり、グランドレベルが不安定となりスレッシュホールド・レベルが変化して、動作速度も落ちる
- 不要電磁放射の尖頭電力が高まる
- 回路規模が大きくなる傾向がある
- 電力消費と発熱が増す
- ダイが大きくなり、コストが増す
- 遅延そのものが増す
近年はクロック非同期設計の利点が注目されつつある。近年のCAD技術の進歩および回路シミュレーション環境の変化によりクロック非同期設計をデジタル論理回路に適用しても設計、検証が十分に行える可能性が出てきた。クロック非同期設計には、消費電力、不要な電磁波の強度、回路ごとに最適な動作速度の選択、などの利点があるため、多くの試作検討が行われている。