タイミング解析とCDC
reqとackを使う4相ハンドシェイクで、データを1つ渡すときの信号の順序として正しいものはどれか。
- 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がそれぞれ1回ずつ上がって下がり、合計4回の変化で1回の受け渡しが終わります。送り側はデータを確定させてからreqを上げ、受け側は同期化したreqを見てデータを取り込み、ackを上げます。送り側は同期化したackを見てreqを下げ、受け側はreqが下がったのを見てackを下げます。reqとackは1ビットなので2段同期化回路で安全に渡せます。データを変えながらreqを上げると、受け側が変化中の値を取り込むおそれがあります。