Timing analysis and CDC
In a four-phase handshake using req and ack, what is the correct signal sequence for passing one data item?
- ASet req to 1 and start changing the data at the same time → the receiver sets ack to 1 → set req and ack to 0 simultaneously
- BThe receiver first sets ack to 1 → the sender settles the data and sets req to 1 → the receiver captures the data → set req and ack to 0 simultaneously
- CSettle the data and set req to 1 → the receiver captures the data and sets ack to 1 → set req to 0 → set ack to 0
Show answer and explanation
Answer: C. Settle the data and set req to 1 → the receiver captures the data and sets ack to 1 → set req to 0 → set ack to 0
In a four-phase handshake, req and ack each rise and fall once, so one transfer completes with four transitions in total. The sender settles the data before raising req, and the receiver, seeing the synchronized req, captures the data and raises ack. The sender, seeing the synchronized ack, lowers req, and the receiver, seeing req fall, lowers ack. req and ack are single bits, so they can be passed safely through two-stage synchronizers. Raising req while changing the data risks the receiver capturing a value in transition.