타이밍 분석과 CDC
4비트 데이터의 각 비트에 각각 2단 동기화기를 달아 다른 클럭 도메인으로 전달했습니다. 데이터가 0111에서 1000으로 바뀔 때 일어날 수 있는 문제로 올바른 것은?
- A비트마다 캡처되는 사이클이 어긋나 1111이나 0000 같은 중간 값을 받는 경우가 있다
- B동기화기를 거치면 모든 비트가 같은 사이클에 맞춰지므로 문제는 일어나지 않는다
- C4비트 모두 메타스테이블 상태가 되어 그대로 0으로도 1로도 돌아오지 않게 된다
정답과 해설 보기
정답: A. 비트마다 캡처되는 사이클이 어긋나 1111이나 0000 같은 중간 값을 받는 경우가 있다
2단 동기화기는 비트마다 변화를 캡처하는 것이 이번 에지인지 다음 에지인지가 확정되지 않습니다. 0111에서 1000으로의 변화에서는 4비트가 모두 바뀌므로, 일부 비트만 새 값이 된 1111이나 0000, 0100 등을 1사이클 동안 받을 수 있습니다. 수신 측이 그 값을 사용하면 오동작합니다. 메타스테이블 상태는 시간이 지나면 0이나 1로 안정됩니다. 카운터 값이라면 그레이 코드로 변환하여 1비트만 바뀌도록 하고, 임의의 데이터라면 핸드셰이크나 비동기 FIFO를 사용합니다.