Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] For clock crossing FIFO why don't the signals empty & full goto both clock domains?

Status
Not open for further replies.

matrixofdynamism

Advanced Member level 2
Joined
Apr 17, 2011
Messages
593
Helped
24
Reputation
48
Reaction score
23
Trophy points
1,298
Activity points
7,681
For clock crossing FIFO why don't the signals empty & full goto both clock domains?

Here is a picture of the Dual Clock FIFO used to "transmit multi-bit signals from one clock domain to another" and it is "usually implemented as a wrapper around a dual port RAM". It is from a book.

Untitled.jpg

It is not clear to me when exactly are the signals full and empty asserted. Why does signal full only goto the "write clock domain" and empty only goto the "read clock domain"?

I mean, the write clock domain may know when to stop writing because of the full signal, but how does it know when to start writing again since it does not get the empty signal?
Similarly, the read clock domain gets the empty signal so it knows when to stop reading, but it does not get the full signal so how does it know when to start reading?
 

Re: For clock crossing FIFO why don't the signals empty & full goto both clock domain

As Full and empty signals are flags, writing will start as soon as the full flag goes low.
and reading starts again as soon as empty flag goes low.

Now when to set these flags high and low depends on what logic has been used. there are multiple ways to do that though.
 

Re: For clock crossing FIFO why don't the signals empty & full goto both clock domain

for the simple case, "full" only matters in the write-domain as a way to stop overflows. "empty" only matters in the read domain to stop underflows.

For the write side, there is no reason to look at empty -- if you ever see full = false you know you can write data NOW!

For the read side, there is no reason to look at full -- if you ever see empty = false you know you can read data NOW!
 

Re: For clock crossing FIFO why don't the signals empty & full goto both clock domain

aha, so that is how it works. I thought that once the FIFO was filled in the writer waited until it was empty before filling it to full again.
 

Re: For clock crossing FIFO why don't the signals empty & full goto both clock domain

aha, so that is how it works. I thought that once the FIFO was filled in the writer waited until it was empty before filling it to full again.
You can design logic around the FIFO that does just that. And it may even make some sense for some application.
But the overall throughput of such a system will be less then half of "write as long as not full / read as long as not empty".
 

Re: For clock crossing FIFO why don't the signals empty & full goto both clock domain

aha, so that is how it works. I thought that once the FIFO was filled in the writer waited until it was empty before filling it to full again.

A specific example of doing something like this is when you have a pcketized interface and you need to perform data transfers in a burst. In this situation you would enable the FIFO read count or a programmable level flag to indicated when the burst can start.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top