デジタル電子回路設計において、クロックドメインクロッシング(CDC)、または単にクロッククロッシングとは、同期デジタル回路内の信号が1つのクロックドメインから別のクロックドメインへ通過することを指します。信号が十分な時間アサートされず、登録されない場合、入力クロック境界で非同期に見えることがあります。 [ 1 ]
同期システムは、クロック信号を生成する単一の電子発振器と、そのクロック領域(発振器からの信号によって直接クロックされるメモリ要素、およびそれらのメモリ要素の出力に接続された組み合わせ論理回路)から構成される。
光速遅延、タイミングスキューなどにより、このような同期システムのクロックドメインのサイズはクロックの周波数に反比例します。[ 2 ]初期のコンピュータでは、通常、すべてのデジタルロジックが単一のクロックドメインで動作していました。伝送線路の損失と歪みにより、標準的なPCB トレースで 66 MHzを超えるデジタル信号を伝送することは困難です(クロック信号は同期デジタルシステムで最も高い周波数です)。この速度よりも高速に動作する CPU は、必ず位相同期ループ(PLL) またはその他のオンチップ発振器を備えたシングルチップ CPUであり、最速の信号をオンチップに保持します。当初、各 CPU チップは独自の単一のクロックドメインで動作し、コンピュータの残りのデジタルロジックは別の低速のクロックドメインで動作していました。最近の CPU の中には、クロック速度が非常に速いものがあり、設計者は単一の CPU チップ上に複数の異なるクロックドメインを作成せざるを得ないものもあります。
異なるクロックドメインには、異なる周波数、異なる位相(クロック遅延の違いまたは異なるクロックソースによる)、またはその両方を持つクロックがあります。 [ 3 ]いずれにしても、2 つのドメインのクロックエッジ間の関係は信頼できません。
単一ビット信号をより高い周波数のクロックドメインに同期させるには、ソースドメインによってクロックされるフリップフロップを通して信号を登録し、より高い周波数でクロックされるデスティネーションドメインによって検出されるのに十分な時間信号を保持することで実現できます。
CDC のメタステーブル状態の問題が非同期クロック ドメイン間で発生する可能性があります。これは、同期クロック ドメインと非同期クロック ドメイン間で発生するリセット ドメイン クロッシングのメタステーブル状態とは対照的です。[ 4 ]宛先クロック ドメインでの CDC のメタステーブル状態の問題を回避するために、宛先ドメインには最低 2 段の再同期フリップフロップが含まれます。より低速のクロック ドメインを通過する 1 ビットの信号を同期させるのはより面倒です。通常、これには、各クロック ドメインに、信号が検出されたことを示す宛先ドメインからソース ドメインへのフィードバックの形式を備えたレジスタが必要です。[ 5 ]その他の潜在的なクロック ドメイン クロッシング設計エラーには、グリッチとデータ損失が含まれます。[ 6 ]
場合によっては、クロックゲーティングによって2つのクロックドメインが生成され、そのうち「遅い」ドメインが1秒ごとに切り替わることがあります。