ハンドシェイクとは

はんどしぇいく

送り側の要求(req)と受け側の応答(ack)をやり取りして、データを確実に受け渡す方式。クロックドメインの間ではreqとackだけを同期化し、その間データを止めておくので安全だが、1回の転送に数サイクル以上かかる。

「ハンドシェイク」は、3分野の7問の練習問題に出てきます(タイミング解析とCDC, インターフェース・バス規格, 論理回路など)。

この用語の分野: タイミング解析とCDC

ハンドシェイクの練習問題に挑戦

reqとackを使う4相ハンドシェイクで、データを1つ渡すときの信号の順序として正しいものはどれか。

  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がそれぞれ1回ずつ上がって下がり、合計4回の変化で1回の受け渡しが終わります。送り側はデータを確定させてから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を使います。

解説の中の「ハンドシェイク」

「ハンドシェイク」が出てくる問題(7問)

  1. reqとackを使う4相ハンドシェイクで、データを1つ渡すときの信号の順序として正しいものはどれか。
  2. ハンドシェイクによるクロックドメイン間のデータ転送の欠点として正しいものはどれか。
  3. AXIの各チャネルで使われるVALIDとREADYによる受け渡し(ハンドシェイク)で、データが受け渡されるのはどのときか。
  4. 非同期の信号をフリップフロップで受けたときに、セットアップ時間やホールド時間を満たせず、出力が一時的に0とも1とも定まらなくなる状態を何と呼ぶか。
  5. 4ビットのデータの各ビットに、それぞれ2段の同期化回路を付けて別のクロックドメインに渡した。データが 0111 から 1000 に変わるときに起こりうる問題として正しいものはどれか。
  6. 500 MHz のクロックドメインで1サイクル(2 ns)だけ1になるパルスを、100 MHz のドメインに2段同期化回路で渡した。起こりうる問題として正しいものはどれか。
  7. トグル同期でパルスを速いクロックドメインから遅いクロックドメインへ渡すときの制約として正しいものはどれか。

タイミング解析とCDCの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

同期化回路 クロックドメイン 非同期FIFO メタステーブル トグル同期 AXI フリップフロップ セットアップ時間 ホールド時間 MTBF(平均故障間隔)

用語集の一覧へ