Re: How to decide between Handshake & fifo in async des
sakshi gupta said:
on what basis we can decide ,we have to use fifo or Hanshake technique for data transfer between async clock domains ?
It's possible to use either, both, or neither, depending upon what exactly you're doing.
If the receiving logic has a sufficiently fast clock relative to the data rate, it may be possible to have the sender always drive its data and a single "data ready" signal long enough for the receiver to notice it. It will be okay if the data ready signal and actual data change simultaneously if both will be valid for at least two receiver clocks. If desired, the data_ready signal could toggle on each byte, to avoid having to have two detectable edges per byte.
Handshaking without other latching may be used in cases where the sender is willing to hold data on its output until it has been received, but doesn't know how long that will take, and the receiver is willing to wait for the sender to provide data after it's requested (but again doesn't know how long that will take).
A queue allows a sender to offload its data as fast as it wants, without regard for the receiver, unless or until the queue becomes full, and allows a receiver to grab data as fast as it wants, without regard for the sender, whenever the queue is not empty. An important caveat with a queue, however, is that the sender must know what the receiver will want before the receiver says it wants it. If the sender can't know what data will be required until the receiver is wanting to hear it, a queue will be useless.