이전 포스트에서는 1-bit CDC(Clock domain crossing)를 수행하는 방법과 주의할 점에 대해서 언급하였다. 이번 포스트에서는 1-bit이 아닌 multi-bit CDC를 수행하는 방법에 대해서 알아보도록 하겠다.
multi-bit CDC에서 가장 주의해야 할 점은 모든 BIT이 동일한 순간에 전달되어야 한다는 것이다.
1-bit CDC에서는 1-bit 만 전송이 되므로 전달되는 타이밍은 크게 중요하지 않았다. 그렇기 때문에, 1-bit CDC 방식을 multi-bit CDC에 적용한다면 각 bit이 전송되는 시점이 다 다를 수 있다. 이는 의도하지 않는 동작이며, 이로 인해 오동작을 일으킬 수 있다.
'전송되는 시점이 왜 달라 지는 가?'에 조금 더 자세히 살펴보자. Clock 2 domian에서의 edge로 Clock 1 domain의 신호를 capture 할 텐데, Clock 1 domain에 전달하는 신호가 모두 동일한 시점에 전달되기는 어렵다. 이 말은 각 bit 사이에 skew가 존재한다는 의미가 되므로 타이밍에 따라 이전 신호 혹은 다음 신호를 capture 하거나, metastable 상태에 빠질 수 있다.
아래 그림의 에제로 좀 더 살펴보자. 아래는 b_load, b_en 두 신호가 Clock domain(aclk)으로 건너가고 있다. 이 두 신호는 skew를 가질 수 있으며, 이를 aclk로 capture 한다. b_load는 high인 구간에서 제대로 capture를 수행하였고, b_en는 Low에서 High 변하는 시점에 capture를 수행하여 metastable 상태에 빠졌다. 아쉽게도 High로 수렴하지 않았고, Low로 수렴하였다. 그 결과 b_load 신호는 alck로 2-cycle 이후 High가 되었으며,b_en 신호는 3-cycle 이후 High로 변했다. 두 신호가 모두 High일 때 동작을 수행하지만, CDC 이후에는 두 신호 시점이 다르게 전달되었기 때문에 의도한 동작은 수행되지 않았다,
수행할 수 있는 하나의 설루션은 두 개의 신호를 보내는 것이 아니라 아래 그림과 같이 한 개의 신호로 만들어서 보내는 방법이다.
그런데, 2개의 신호를 하나로 줄이지 못하는 상황이라면, 어떻게 해야 할까?
해당 내용에 대해서는 다음 포스트에서 다루도록 하겠다.
Reference
*[1]: Understanding Metastability in FPGAs, Altera Corporation
*[2]: Cummings, Clifford E. "Clock domain crossing (CDC) design & verification techniques using SystemVerilog." SNUG-2008, Boston (2008).
*[3]: S. Beer, J. Cox, T. Chaney and D. M. Zar, "MTBF Bounds for Multistage Synchronizers", 2013 IEEE 19th International Symposium on Asynchronous Circuits and Systems, 2013, pp. 158-165, doi: 10.1109/ASYNC.2013.18.
'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] 02. Two Flip-flop Synchronizer Usage Example (10) | 2022.03.18 |
[CDC] 01. Metastability란 무엇인가? (0) | 2022.02.21 |
[CDC] 00_CDC(Clock Domain Crossing) 이란 무엇인가? (2) | 2021.12.28 |
댓글