Timing analysis and CDC
Which is a correct way to pass multi-bit data safely to another clock domain?
- AAttaching a three-stage synchronizer to each data bit eliminates misalignment between bits, so this alone makes the transfer safe
- BHold the data on the sending side, synchronize only a 1-bit valid signal, and have the receiving side capture the data after seeing it
- CPlace the per-bit synchronizers close to each other to eliminate misalignment between bits
Show answer and explanation
Answer: B. Hold the data on the sending side, synchronize only a 1-bit valid signal, and have the receiving side capture the data after seeing it
With multi-bit data, the problem of per-bit synchronization results differing by one cycle cannot be solved by adding stages or by careful placement. A typical method is to hold the data on the sending side without synchronizing it and pass only a 1-bit control signal through a synchronizer. By the time the receiving side sees the control signal change, the data has long been stable, so it can be captured as is. However, the data must not change until the receiving side has finished capturing it. For continuous high-volume transfer, use an asynchronous FIFO.