본문 바로가기
IT_Study/ASIC_Study

[CDC] 00_CDC(Clock Domain Crossing) 이란 무엇인가?

by 두번째얼룩 2021. 12. 28.

일반적으로 디지털 설계에서는 동일한 Clock Domain 내에서 로직을 구성한다. 아래 그림처럼 두 개의 레지스터(Reg_X, Reg_Y)에는 동일한 Clock(clk_A)으로 동기화되어 있으며, 그 사이에 존재하는 로직은 동일한 Clock으로 1-Cycle 안에 처리 될 수 있도록 설계한다. 동일 Clock Domain으로 구성되어 있으므로, clk_A의 clock period와 Reg_X의 Clock to Q delay와 Combo Logic의 Delay와 Reg_Y의 Setup/Hold를 계산하여 타이밍을 맞출 수 있다.  

동일 Clock domain에서의 레지스터들의 관계 Block diagram

 

그런데 다른 Clock을 사용하는 부분 간에 신호를 주고 받아야 할 경우가 발생한다. 아래 그림과 같이 다른 Clock domain을 가진다면 어떻게 타이밍을 맞출 수 있을 까? clk_A와 clk_B는 서로 다른 주기와 phase를 갖는 다면, 두 Clock의 edge 관계가 계속 변하기 때문에 Register 간의 타이밍을 맞출 수 없다.

다른 Clock domain에서의 레지스터들의 관계 Block diagram

타이밍을 맞추지 못한다는 말은 Register의 Setup/Hold 시간을 보장할 수 없다는 것과 같다. 그러면 Register의 Setup/Hold 시간을 보장할 수 없는 경우, 어떠한 문제가 발생하는 지 다음 글에서 자세히 알아보겠다. 

 

 

댓글