토글 동기화(Toggle Synchronizer)란?

송신 측에서 펄스가 올 때마다 반전하는 레벨 신호를 만들어 수신 측으로 동기화하고, 수신 측에서 1사이클 전의 값과 XOR을 취해 펄스로 되돌리는 방식. 수신 측 주기보다 짧은 펄스도 놓치지 않지만, 펄스 간격은 수신 측의 수 사이클 이상 띄워야 한다.

일본어 명칭: トグル同期

토글 동기화(Toggle Synchronizer)은(는) 타이밍 분석과 CDC 등 1개 분야의 연습 문제 3개에 나와요.

분야: 타이밍 분석과 CDC

도전해 보기: 토글 동기화(Toggle Synchronizer) 관련 문제

토글 동기화(송신 측에서 펄스가 올 때마다 반전하는 레벨 신호를 만들어 전달하는 방식)에서 수신 측이 원래 펄스를 복원하는 방법으로 올바른 것은?

  1. A동기화한 토글 신호를 그대로 펄스로 사용한다
  2. B동기화한 토글 신호와 수신 측 클럭의 AND를 취해 1사이클 폭의 펄스로 만든다
  3. C동기화한 토글 신호와, 그것을 1단 더 지연시킨 신호의 XOR를 취한다
정답과 해설 보기

정답: C. 동기화한 토글 신호와, 그것을 1단 더 지연시킨 신호의 XOR를 취한다

토글 동기화에서는 송신 측에서 펄스가 올 때마다 플립플롭의 값을 반전시켜, 0에서 1, 1에서 0으로의 변화로 이벤트를 나타냅니다. 레벨 신호이므로 수신 측 주기보다 짧은 펄스라도 사라지지 않습니다. 수신 측에서는 2단으로 동기화한 후 1단 더 지연시킨 값과 XOR를 취하면, 변화가 있었던 사이클에만 1이 되는 1사이클 폭의 펄스를 얻을 수 있습니다. 토글 신호를 그대로 사용하면 두 번째 이벤트에서 0으로 돌아갔을 때 놓칩니다. 클럭과의 논리 연산은 글리치의 원인이 됩니다.

토글 동기화로 펄스를 빠른 클럭 도메인에서 느린 클럭 도메인으로 전달할 때의 제약으로 올바른 것은?

  1. A다음 펄스까지의 간격을, 수신 측이 변화 검출을 마칠 때까지의 몇 사이클 이상 띄워야 한다
  2. B펄스 폭을 수신 측 클럭 주기의 1.5배 이상으로 늘려야 한다
  3. C송신 측과 수신 측의 클럭 주파수가 정수비여야 한다
정답과 해설 보기

정답: A. 다음 펄스까지의 간격을, 수신 측이 변화 검출을 마칠 때까지의 몇 사이클 이상 띄워야 한다

토글 동기화는 짧은 펄스라도 이벤트를 잃지 않는 방식이지만, 수신 측이 동기화의 몇 사이클 동안 변화 검출을 마치기 전에 다음 펄스가 오면 토글 신호가 0→1→0으로 돌아가 두 번의 이벤트가 모두 보이지 않게 될 수 있습니다. 예를 들어 수신 측이 100 MHz이고 검출에 3사이클이 걸린다면 펄스 간격은 30 ns 정도 이상 띄워야 합니다. 간격을 보장할 수 없을 때는 핸드셰이크로 수신 측의 응답을 기다리거나 비동기 FIFO를 사용합니다. 펄스 폭 늘리기나 주파수 비의 조건은 필요하지 않습니다.

해설 속 토글 동기화(Toggle Synchronizer)

토글 동기화(Toggle Synchronizer)이(가) 나오는 문제 (3)

  1. 토글 동기화(송신 측에서 펄스가 올 때마다 반전하는 레벨 신호를 만들어 전달하는 방식)에서 수신 측이 원래 펄스를 복원하는 방법으로 올바른 것은?
  2. 토글 동기화로 펄스를 빠른 클럭 도메인에서 느린 클럭 도메인으로 전달할 때의 제약으로 올바른 것은?
  3. 500 MHz 클럭 도메인에서 1사이클(2 ns)만 1이 되는 펄스를 100 MHz 도메인으로 2단 동기화기를 통해 전달했습니다. 일어날 수 있는 문제로 올바른 것은?

관련 용어

핸드셰이크(Handshake) 플립플롭(flip-flop) 글리치(glitch) 비동기 FIFO 동기화 회로(Synchronizer) 리커버리 체크(Recovery Check) 멀티사이클 패스(Multicycle Path) 슬랙(Slack) 크리티컬 패스(Critical Path) 클록 도메인(Clock Domain)

용어집으로 돌아가기