본문 바로가기

Digital Design

CDC와 Metastable

오늘은 CDC(Clock Domain Crossing)와 Metastable에 대해 알아보겠습니다. 먼저 CDC는 이름에서 예상할 수 있듯, clock과 관련된 용어인데요.

디지털 회로에서 clock은 아주 필수적인 요소입니다. 사람으로 따지면 공기와 같습니다. 계속해서 공급해줘야 신체를 움직일 수 있듯 디지털 회로에 clock이 끊기지 않고 toggle 해주어야 디지털 회로가 잘 동작할 수 있습니다.

이렇게 하나의 디지털 시스템은 clock 베이스로 움직이는데 이 clock이라는 것은 속도를 갖습니다. 100MHz의 속도를 가질수도 있고 80MHz를 가질 수도 있습니다. clock speed는 Architecture Engineer가 시스템의 큰 그림을 그릴 때 결정됩니다.

여기서 중요한 것은 하나의 디지털 시스템에서 서로 다른 speed를 갖는 clock을 사용할 수 있다는 것 입니다. 이것을 서로 다른 clock domain을 갖는다고 합니다.

 

서로 다른 속도의 clock domain A(100MHz)와 B(66.7MHz)가 있다고 해보겠습니다. 만약 임의의 신호 X가 A domain에서 B domain으로 넘어간다고 하면 어떻게 신호처리를 해야할까요?

바로 이 상황. 서로 다른 clock domain으로 신호를 보내야 할 때 사용하는 기법이 바로 오늘 주제인 clock domain crossing 입니다.

 



반도체 설계 회사 직무면접 단골 주제죠. 중요하니 잘 알아두셔야 합니다. 물론 현업에서도 아주 중요한 개념입니다.



만약, CDC 처리를 해주지 않는다면 어떤 일이 생길까요?

아래 그림처럼 A domain에서 B domain으로 신호가 넘어간다고 가정해보면 B domain의 flip flop으로 data를 챘을 때 신호 Q’은 0인지 1인지 확실하게 말할 수 없습니다. 아래 두 가지 케이스를 보시죠.

 

Case 1

첫 번째 케이스 입니다. Domain A의 신호 X가 Flip flop을 통과하여 Domain B로 넘어와서 Flip flop을 또 거친 후에 CLK B와 동기화 된 신호가 생성됐습니다. 그럼 다음 케이스를 보시겠습니다.

 

Case 2

두 번째 케이스에서는 같은 타이밍에 X가 Domain A의 Flip flop을 거친 후 Domain B로 넘어와 Flip flop으로 입력되었지만 CLK B로 동기화시키지 못했습니다. 이와 같은 경우를 Metastable 상태에 빠졌다고 합니다.

 

이와 같이 경우에 따라 이전 Domain의 신호를 새로운 Domain의 Clock이 채지 못하는 경우가 생기기 때문에 Clock Domain Crossing이 필요합니다.

 

정리하면 Clock Domain이 바뀌는 경우 Metastable 상태에 빠지는 것을 막기 위해 Clock Domain Crossing이 필요하다고 할 수 있겠습니다.

 

이 Metastable에 대해 조금 더 깊이 이해하기 위해서는 Setup time과 Hold time의 개념을 알아야 하는데요 다음 시간에 알아보도록 하겠습니다. 그리고 분량이 된다면 여러 가지 CDC 기법에 대해 알아보도록 하겠습니다.

 


 

좋아요와 댓글은 큰 힘이 됩니다.

 

Vamos!

'Digital Design' 카테고리의 다른 글

I2C의 장점과 여러 가지 모드  (0) 2024.10.13
Set up time과 Hold time  (0) 2024.05.20