타이밍 분석과 CDC
req와 ack를 사용하는 4상 핸드셰이크로 데이터 하나를 전달할 때의 신호 순서로 올바른 것은?
- Areq를 1로 함과 동시에 데이터를 바꾸기 시작한다 → 수신 측이 ack를 1로 한다 → req와 ack를 동시에 0으로 한다
- B수신 측이 먼저 ack를 1로 한다 → 송신 측이 데이터를 확정하고 req를 1로 한다 → 수신 측이 데이터를 캡처한다 → req와 ack를 동시에 0으로 한다
- C데이터를 확정하고 req를 1로 한다 → 수신 측이 데이터를 캡처하고 ack를 1로 한다 → req를 0으로 한다 → ack를 0으로 한다
정답과 해설 보기
정답: C. 데이터를 확정하고 req를 1로 한다 → 수신 측이 데이터를 캡처하고 ack를 1로 한다 → req를 0으로 한다 → ack를 0으로 한다
4상 핸드셰이크에서는 req와 ack가 각각 한 번씩 올라갔다 내려가, 합계 4번의 변화로 한 번의 전달이 끝납니다. 송신 측은 데이터를 확정한 뒤 req를 올리고, 수신 측은 동기화한 req를 보고 데이터를 캡처한 뒤 ack를 올립니다. 송신 측은 동기화한 ack를 보고 req를 내리고, 수신 측은 req가 내려간 것을 보고 ack를 내립니다. req와 ack는 1비트이므로 2단 동기화기로 안전하게 전달할 수 있습니다. 데이터를 바꾸면서 req를 올리면 수신 측이 변화 중인 값을 캡처할 우려가 있습니다.