|
CDC:cross-clock domain crossing。
(1) Meta-stability
-- why is bad?
The output of DFF2 is unpredictable.
-- Solution:
Add an additional flop in the destination domain.
(2) Data hold problem (data loss)
-- why is bad?
Possible that the signal in the faster clock domain of DFF1 is not held long enough to be captured in the much slower clock domain of DFF2.
-- Solution:
Inmplement pulse extenders.
(3) Re-convergence (correlation)
-- why is bad?
Due to branch latencies incorrect data can be processed at the re-convergent point.
-- Solution:
Implement a gray encoder before the clock crossing and not between the clock crossing. (gray code ensures only one bit on the converging bus changes within one clock cycle)
(4) Design intent (handshake, FIFO)