일반적으로 디지털 설계에서는 동일한 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을 사용하는 부분 간에 신호를 주고 받아야 할 경우가 발생한다. 아래 그림과 같이 다른 Clock domain을 가진다면 어떻게 타이밍을 맞출 수 있을 까? clk_A와 clk_B는 서로 다른 주기와 phase를 갖는 다면, 두 Clock의 edge 관계가 계속 변하기 때문에 Register 간의 타이밍을 맞출 수 없다.
타이밍을 맞추지 못한다는 말은 Register의 Setup/Hold 시간을 보장할 수 없다는 것과 같다. 그러면 Register의 Setup/Hold 시간을 보장할 수 없는 경우, 어떠한 문제가 발생하는 지 다음 글에서 자세히 알아보겠다.
'IT_Study > ASIC_Study' 카테고리의 다른 글
[CDC] 05. Gray Code vs. Binary Code(1) (4) | 2022.03.26 |
---|---|
[CDC] 04. Multi-bit Clock Domain Crossing(2) (8) | 2022.03.21 |
[CDC] 03. Multi-bit Clock Domain Crossing(1) (4) | 2022.03.19 |
[CDC] 02. Two Flip-flop Synchronizer Usage Example (10) | 2022.03.18 |
[CDC] 01. Metastability란 무엇인가? (0) | 2022.02.21 |
댓글