본문 바로가기
IT_Study/ASIC_Study

[CDC] 03. Multi-bit Clock Domain Crossing(1)

by 두번째얼룩 2022. 3. 19.

이전 포스트에서는 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]* 2-bit CDC Problem

수행할 수 있는 하나의 설루션은 두 개의 신호를 보내는 것이 아니라 아래 그림과 같이 한 개의 신호로 만들어서 보내는 방법이다. 

[2]* 2-bit to 1-bit CDC Solution

그런데, 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.

댓글