타이밍 분석과 CDC

req와 ack를 사용하는 4상 핸드셰이크로 데이터 하나를 전달할 때의 신호 순서로 올바른 것은?

  1. Areq를 1로 함과 동시에 데이터를 바꾸기 시작한다 → 수신 측이 ack를 1로 한다 → req와 ack를 동시에 0으로 한다
  2. B수신 측이 먼저 ack를 1로 한다 → 송신 측이 데이터를 확정하고 req를 1로 한다 → 수신 측이 데이터를 캡처한다 → req와 ack를 동시에 0으로 한다
  3. 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를 올리면 수신 측이 변화 중인 값을 캡처할 우려가 있습니다.

이 분야 연습하기 분야로 돌아가기

타이밍 분석과 CDC의 다른 문제

  1. 핸드셰이크를 이용한 클럭 도메인 간 데이터 전송의 단점으로 올바른 것은?
  2. 비동기 FIFO에서 쓰기 포인터와 읽기 포인터를 그레이 코드로 변환한 후 상대 도메인으로 동기화하는 이유로 올바른 것은?
  3. 4비트 바이너리 0110(10진수 6)을 그레이 코드로 변환한 것은?
  4. 깊이 16워드인 비동기 FIFO에서 쓰기 포인터와 읽기 포인터를 주소보다 1비트 많은 5비트로 하는 이유로 올바른 것은?
  5. 5비트 그레이 코드 포인터를 사용하는 깊이 16워드의 비동기 FIFO에서, 쓰기 측에서 가득 참(full)을 판정하는 조건으로 올바른 것은?