Timing analysis and CDC

Which is a correct way to pass multi-bit data safely to another clock domain?

  1. AAttaching a three-stage synchronizer to each data bit eliminates misalignment between bits, so this alone makes the transfer safe
  2. 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
  3. 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.

Practice this topic Back to topic

Books on Timing analysis and CDC Ad

As an Amazon Associate I earn from qualifying purchases.

More Timing analysis and CDC questions

  1. A pulse that is 1 for only one cycle (2 ns) in a 500 MHz clock domain is passed to a 100 MHz domain through a two-stage synchronizer. What problem can occur?
  2. To pass a level signal reliably from a 400 MHz domain to a 100 MHz domain through a synchronizer, the signal width should be at least 1.5 times the receiving clock period. What is the minimum width in sending-clock cycles?
  3. In toggle synchronization (a scheme in which the sending side generates and passes a level signal that inverts each time a pulse arrives), how is the original pulse recovered on the receiving side?
  4. What constraint applies when passing pulses from a fast clock domain to a slow one with toggle synchronization?
  5. In a four-phase handshake using req and ack, what is the correct signal sequence for passing one data item?