핸드셰이크(Handshake)란?

송신 측의 요구(req)와 수신 측의 응답(ack)을 주고받아 데이터를 확실하게 전달하는 방식. 클록 도메인 사이에서는 req와 ack만 동기화하고 그동안 데이터를 고정해 두므로 안전하지만, 1회 전송에 수 사이클 이상 걸린다.

일본어 명칭: ハンドシェイク

핸드셰이크(Handshake)은(는) 타이밍 분석과 CDC, I/O 인터페이스와 버스, 논리 회로 등 3개 분야의 연습 문제 7개에 나와요.

분야: 타이밍 분석과 CDC

도전해 보기: 핸드셰이크(Handshake) 관련 문제

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를 올리면 수신 측이 변화 중인 값을 캡처할 우려가 있습니다.

핸드셰이크를 이용한 클럭 도메인 간 데이터 전송의 단점으로 올바른 것은?

  1. Areq와 ack의 동기화를 왕복시키므로 1회 전송에 여러 사이클이 걸려, 연속적인 대량 전송에는 적합하지 않다
  2. B멀티비트 데이터를 전달하면 비트별 동기화 어긋남으로 데이터가 깨진다
  3. C송신 측과 수신 측의 클럭 주파수가 같지 않으면 사용할 수 없다
정답과 해설 보기

정답: A. req와 ack의 동기화를 왕복시키므로 1회 전송에 여러 사이클이 걸려, 연속적인 대량 전송에는 적합하지 않다

4상 핸드셰이크에서는 req가 수신 측에 전달되기까지 동기화의 2사이클, ack가 송신 측에 돌아오기까지 2사이클이 걸리고, 각각이 0으로 돌아가는 데도 같은 만큼 걸리므로, 1회 전송에 양쪽 도메인을 합쳐 8사이클 이상이 걸립니다. 그래서 제어 레지스터의 설정값처럼 가끔 전달하는 데이터에 적합합니다. 데이터는 전송하는 동안 계속 안정되어 있으므로 비트 어긋남으로 인한 오류는 일어나지 않으며, 주파수 비도 상관없습니다. 매 사이클처럼 데이터를 흘려보낼 때는 비동기 FIFO를 사용합니다.

해설 속 핸드셰이크(Handshake)

핸드셰이크(Handshake)이(가) 나오는 문제 (7)

  1. req와 ack를 사용하는 4상 핸드셰이크로 데이터 하나를 전달할 때의 신호 순서로 올바른 것은?
  2. 핸드셰이크를 이용한 클럭 도메인 간 데이터 전송의 단점으로 올바른 것은?
  3. AXI 각 채널에서 사용되는 VALID와 READY에 의한 주고받기(핸드셰이크)에서 데이터가 전달되는 시점은?
  4. 비동기 신호를 플립플롭으로 받았을 때 셋업 시간이나 홀드 시간을 만족하지 못해 출력이 일시적으로 0도 1도 아닌 불확정 상태가 되는 것을 무엇이라고 합니까?
  5. 4비트 데이터의 각 비트에 각각 2단 동기화기를 달아 다른 클럭 도메인으로 전달했습니다. 데이터가 0111에서 1000으로 바뀔 때 일어날 수 있는 문제로 올바른 것은?
  6. 500 MHz 클럭 도메인에서 1사이클(2 ns)만 1이 되는 펄스를 100 MHz 도메인으로 2단 동기화기를 통해 전달했습니다. 일어날 수 있는 문제로 올바른 것은?
  7. 토글 동기화로 펄스를 빠른 클럭 도메인에서 느린 클럭 도메인으로 전달할 때의 제약으로 올바른 것은?

관련 용어

비동기 FIFO 토글 동기화(Toggle Synchronizer) AXI 플립플롭(flip-flop) 셋업 시간(Setup Time) 홀드 시간(Hold Time) 동기화 회로(Synchronizer) MTBF(평균 고장 간격) 그레이 코드(Gray Code) 리커버리 체크(Recovery Check)

용어집으로 돌아가기