同期なクロックと非同期なクロック
「クロックが同時である」を2つのクロックのFF間転送に拡張して、2つのクロックの時間差が管理されているとき「同期している」と言い、管理されていないとき「非同期である」と言う。
2つのオシレータから作られたクロックは周期が微妙に異なるため時間差自体もだんだん変化していくので、当然、非同期である。
では1つのオシレータ(発振源)から作られたクロックは同期しているかというと、そうとは限らない
例1) clkを2分周してclk_halfを作ると、clk_halfはclkより少し遅れるので、clk_halfのFFからclkのFFへの転送は同期と見なせるが、逆の転送はホールドタイムを確保するのが厳しく、同期しているとは見なせない。
なおFPGAではPLLで分周・逓倍できるようになっており、1つのPLLの出力クロック同士は同期していると見なせる。
例2) clkの反転~clkを作ると、dutyが50%に管理されていれば2つのクロックは同期していると見なしてよいが、立ち上がりと立ち下がりとで遅延が異なるバッファを通したりしてdutyが50%から大きく外れるようだと、同期しているとは見なせない。
例3) 別々のデバイス、基板、装置間の転送では、何も考えずにクロックを分配していると同期とは見なせない。FPGA1とFPGA2のFFクロック端子での時間差がいくら、と管理されていれば同期と見なせる。