Debounce 회로의 원리에 대해 학습하던 중, Flip-Flop을 여러개를 연결하면 신호의 안정성이 더욱 증가한다는 글을 읽은적이 있다. 위의 그림과 같이 첫 번째 Flip-Flop 출력 값은 "Metastable" 상태여서 안정적안 Input Data를 출력하지 못하고, 두 번째 Flip-Flop에서 안정적인 Data를 출력할 수 있다 하는데.. 처음에 봤을 땐 이게 뭔소린가 싶었다.
애초에 Flip-Flop을 사용하는 이유가 Logic이 Clk과 동기적으로 동작하게 하여
신호를 안정화 하는건데, 안정화를 또 안정화 한다?
메타스테이블 상태란?
- Flip-Flop은 클록 신호에 따라 입력 신호를 출력으로 전달하는데, 입력 신호가 클록의 타이밍 조건(Setup Time, Hold Time)을 만족하지 못하여 0도 1도 아닌 상태를 메타스테이블 상태라 한다.
- 메타스테이블 상태는 Flip-Flop이 일시적으로 결정되지 않은 상태에 머무르거나, 출력이 불안정한 상태가 되는 현상을 의미하기도 한다.
- 이런 상태는 예상치 못한 신호 전파를 유발하거나 시스템 전체의 동작을 방해할 수 있다.
아무래도 Propogation Delay로 인해 Data가 불안정한 상태를 뜻하는 것 같은데,
여러 개의 Flip-Flop을 사용하면 메타스테이블을 방지할 수 있는걸까?
Flip-Flop을 여러 개 사용하면 왜 안정화되는가?
여러 Flip-Flop을 직렬로 연결하는 구조(일반적으로 2-Stage or 3-Stage Synchronizer)를 사용하면, 메타스테이블 상태를 방지하거나 완화할 수 있다.
1. 확률적 완화
메타스테이블 상태는 시간이 지나면서 자연스럽게 안정 상태로 수렴할 확률이 높아진다.
- 첫 번째 Flip-Flop이 메타스테이블 상태에 빠지더라도, 두 번째 Flip-Flop에서 안정 상태로 전환될 가능성이 높아진다.
- 이런 방식으로 여러 단계(Stages)를 거치면, 메타스테이블 상태가 시스템에 영향을 줄 확률이 지수적으로 감소한다.
2. 시간적 여유 확보
- 첫 번째 Flip-Flop이 메타스테이블 상태에 있을 동안, 다음 Flip-Flop은 충분한 클록 주기를 통해 신호를 안정화할 시간을 확보하게 된다.
- 이렇게 함으로써 클록 도메인 사이의 타이밍 불일치에 의한 문제를 효과적으로 완화할 수 있다.
Metastability를 방지하는 Logic은 서로 다른 클럭 도메인에서 전달되는 신호를 처리할 때 많이 사용된다.
'이론 공부 > 기타 학습' 카테고리의 다른 글
Load Capacitance에 따른 Delay (Latency, Throughput) (0) | 2025.01.08 |
---|---|
Layout 설계 시 무엇을 더 중요시 해야하는가 (Area vs Timing vs Reusablity) (0) | 2025.01.07 |
CMOS 설계 시, PMOS의 WIDTH는 무엇을 기준으로 설계되는가? (0) | 2025.01.06 |
여러 always@()문을 사용할 때 주의 사항 (0) | 2025.01.06 |
Synthesis 단계에선 무슨일이 일어날까? (2) | 2025.01.06 |