리미창고

[CDC] 2_Single Bit CDC: Toggle Synchronizer 본문

VLSI/Design

[CDC] 2_Single Bit CDC: Toggle Synchronizer

리미와감자 2025. 12. 7. 15:01

복습

 

이전 글에서 2-FF Synchronizer, Pulse Streching, Handshake CDC 기법을 공부했다.

 

2-FF Synchronizer는 CDC의 가장 기본적인 기법으로, 설계가 단순하고 효율적이다. Metastability 격리가 핵심 목표이며, Single Bit Level Control 신호를 처리할 때 주로 사용된다. 수신 클럭이 즉시 올바른 데이터를 받지 못하더라도, 레벨 신호인 경우 1~2 클럭 내에 올바른 값을 capture할 확률이 높다.

하지만 Fast → Slow Clock Domain의 Pulse 신호는 2-FF만으로는 감지되지 않고 사라질 수 있다. 이를 해결하기 위한 방법으로 (Pulse) Stretching과 Handshake 기법이 존재하며, 이 기법의 컨셉은 필요에 따라 Single Bit뿐 아니라 Multi Bit 신호에서도 적용할 수 있다. 다만 Single Bit에서는 경우에 따라 불필요하게 복잡해질 수 있다.

 

 

Toggle Synchronizer

 

다음으로 살펴볼 Toggle Synchronizer는 Fast → Slow Pulse 전달 문제를 해결하기 위해 고안된 기법이다. Level signal 처리에는 2-FF만으로 충분하지만, Fast → Slow Pulse 전달에서는 토글 변화를 감지하여 안전하게 이벤트를 전달할 수 있다.

 

 

송신 도메인에서 신호를 토글시키고(A_q), 수신 도메인에서는 토글 변화를 감지하여 이벤트를 인식(Sig_sync)한다.

 

동작 원리

  1. 송신 도메인(Fast Clock)
    • 이벤트가 발생하면 토글 신호를 1→0 또는 0→1로 바꿈.
    • 토글 신호는 계속 유지되며, 다음 이벤트 발생 시 다시 토글.
  2. 수신 도메인(Slow Clock)
    • 2-FF synchronizer를 통해 토글 신호를 안정화.
    • 이전 값과 현재 값을 비교(XOR 등)하여 토글이 발생했는지 감지.
    • 토글이 감지되면 이벤트가 발생했다고 인식.


핵심 아이디어는 신호가 펄스가 아니라 변화(0→1 또는 1→0)로 전달되기 때문에, 짧은 펄스가 느린 클럭 도메인에서 샘플링되지 않고 사라지는 문제를 해결할 수 있다.

 

특징

  • Pulse 신호 소실 방지: Fast → Slow Clock Domain에서 짧은 펄스가 사라지지 않고 감지 가능.
  • Single Bit 이벤트에 적합: IRQ, Done, Ready 등.
  • Level Signal에는 부적합: 단순 level signal에는 토글 변화가 의미가 없거나 불필요.
  • Fast → Slow에 유리: Slow → Fast로 전달할 때는 일반 2-FF synchronizer로도 충분.
  • 백투백 펄스 처리 제한: 한 이벤트가 처리 중일 때, 바로 다음 토글이 들어오면 누락 가능.
  • 추가 로직 필요: 토글 변화를 감지하는 XOR 또는 Edge 감지 회로 필요.

 

 

Single Bit CDC 기법 정리

CDC 기법 장점 단점 주요 사용처
2-FF Synchronizer - 가장 단순하고 효율적: 면적, 전력 소모, Latency 최소
- Metastability 격리: MTBF를 시스템 수명 이상으로 크게 증가시켜 안전성 확보
- 대부분의 CDC 기법들의 Base Layer
- Pulse Signal 손실 위험: Fast → Slow 전송 시 펄스가 캡처되지 않고 사라질 수 있음.
- Multi-bit 사용 불가: 비트 스큐(Skew) 문제로 데이터 무결성 보장 불가
- 단일 비트 Level Control 신호: Enable, Flag, Status 등
- 변화 속도가 느리고, 1~2클럭 지연이 기능에 영향 없는 경우
Pulse Stretching - Fast → Slow 안전
- 2-FF 대비 신호 손실 방지: 펄스를 강제로 늘려 느린 도메인에서 최소 1회 샘플링 보장
- 단순한 로직 추가로 구현 가능
- Clock Ratio 의존성: 클럭 주파수 비율이 고정되어야 하며, 변경 시 재설계 필요
- 안전성 취약: 클럭 비율 변화에 유연하게 대처하기 어려움
- Pulse Signal 전송: 클럭 비율이 고정되어 있고, 최소한의 펄스라도 반드시 전달되어야 하는 경우
Handshake - Fast → Slow 안전
- 가장 안전하고 강력함: 클럭 비율 F_fast/F_slow 관계없이 신호 손실 없음
- Metastability 격리 및 데이터 무결성 완벽 보장
- Latency 증가: REQ ↔ ACK 왕복 지연 발생
- 추가 로직 필요: FF 외에 제어 FSM 및 REQ/ACK 신호 필요
- Pulse Signal 전송: 반드시 놓쳐서는 안 되는 중요한 1-bit 이벤트 신호
- Multi-bit CDC의 기반: Multi-bit Handshake 구현 시 근본 원리
Toggle Synchronizer - Pulse 신호 전달에 적합: Pulse 폭과 무관 - 단순 레벨 신호에는 부적합 - Pulse Signal 전송: 반드시 놓쳐서는 안 되는 중요한 1-bit 이벤트 신호

 

표로 구분은 해놨지만, 이 CDC 기법들이 독립적인 것은 아니다. 대부분의 CDC 기법들은 2-FF Synchronizer를 기반으로 하며, 서로 조합해서 사용할 수 있다.

 

장점만 존재하는 CDC 기법은 없기 때문에, 적재적소에 사용하는 능력이 중요하다.

 

 

 

Reference

https://www.edn.com/synchronizer-techniques-for-multi-clock-domain-socs-fpgas/

 

Clock Domain Crossing Techniques & Synchronizers - EDN

Discover The Most Popular Clock Domain Crossing (CDC) Techniques & Synchronizers Including 2 Flip-Flop, Pulse, Toggle, Handshake, MUX, FIFO & More.

www.edn.com

https://www.youtube.com/watch?v=ovQ5VYlEc8o&list=PLZrXAuM5hwx5CNygbEjf992B2itYc06tP&index=3