The next question is more general. Just basically to get an idea if you know the parts of a FIFO and how they work together. I would recommend reading Cliff Cummings paper on the subject: http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO1.pdf
This is a short post, since Cliff covered this very thoroughly and there is no reason for me to add much. Key take aways:
Grey coding
Full/ empty generation and why they are pessimistic such that you won’t ever overflow or underflow the FIFO.