Using /FF as a Half Full flag in depth cascaded FIFO's

Question: If cascading two FIFO's in depth, can the full flag (/FF) of the first FIFO be used as the half full flag for both FIFO's?

 

Answer:

 No, this is not possible. The reason is that the data in a FIFO does not actually move. For example, if you have two 32K deep FIFOs cascaded by depth and you write 48K words, then you will have filled the first FIFO completely and the 16K of the second FIFO. In this case, the full flag of the first FIFO will be asserted because it is indeed full, while the full flag of the second FIFO will not be asserted. This would seem to be consistent with the behavior we want. However, the problem arrives when you read out of the FIFO. For example, say now that we read 16K words. These 16K words will come from the first FIFO, leaving 16K words left in the first FIFO and another 16K words in the second FIFO. Now, the full flag of the first FIFO will be disabled, even though as a whole we are indeed half full. This is why you cannot use the full flag for this purpose.