How do you move data from a fast clock domain to a slow clock domain?
I understand that if you move from slow to fast you can double flop with fast clock or use the fast domain to catch the falling edge of the slow clock and then latch in the data.
still use fast clock to sample slow clock, then the delayed posedge of slow clock (this signal is synchronized to fast clock),if is signal is low, hold data in the slow domain , change the data output to fast clock domain only if this signal is high. In a word , avoiding changing data at the posedge of slow clock by holding the data under such occassions.
with faster clock domain in your design, you must define a efficient operation protocol for synchrony. the setup and hold time delay is key for consideration.
If we are taking about data lines then generally two techniques, using a protocol a simple protocol can work where an new data is indicated by a flag set and reset signal after data capture "u can use a flancter to do this". or the other ultimate choice is to use a async. FIFO. in both design you have to take care of metastability issue
If it is asyncronous signal , latch the i/p thru Flip Fliops (atleast 2 FF's) using Rx domain frequency .Here you will be losing 1 or 2 clks ,but probability of getting into Metastable is low.
Use FIFO for data lines & high speed transfers , but take care of FIFO depth.
Handshaking is also another method whereby one can sample the asyncronous signal using Handshaking signal from both the domains , here also speed matters at the cost of extra handshakes.
you can use two phase handshaking protocol to passing data from
one clock domain to another clock domain,
if you want high speed, use a asynchronous dual port fifo to
realize your dream.
peen1 said:
How do you move data from a fast clock domain to a slow clock domain?
I understand that if you move from slow to fast you can double flop with fast clock or use the fast domain to catch the falling edge of the slow clock and then latch in the data.
the attached file has some content on this problem.
peen1 said:
How do you move data from a fast clock domain to a slow clock domain?
I understand that if you move from slow to fast you can double flop with fast clock or use the fast domain to catch the falling edge of the slow clock and then latch in the data.