Timing analysis and CDC
Which is a drawback of transferring data between clock domains with a handshake?
- ASynchronization of req and ack makes a round trip, so each transfer takes many cycles, making it unsuited to continuous high-volume transfer
- BPassing multi-bit data corrupts it through misalignment of per-bit synchronization
- CIt can only be used when the sending and receiving clocks have the same frequency
Show answer and explanation
Answer: A. Synchronization of req and ack makes a round trip, so each transfer takes many cycles, making it unsuited to continuous high-volume transfer
In a four-phase handshake, req takes two synchronization cycles to reach the receiver and ack two cycles to return to the sender, and returning each to 0 takes the same again, so one transfer takes 8 or more cycles in total across both domains. It therefore suits data passed occasionally, such as control register settings. The data stays stable throughout the transfer, so errors from bit misalignment do not occur, and any frequency ratio works. For streaming data almost every cycle, use an asynchronous FIFO.