上周末老李给自己放了一个假,这周恢复更新。这一篇来讲一下如何解决上一篇如何设计一个同步FIFO(二)最后提出的问题。
在上一篇中,我们设计的基于双端口SRAM的同步FIFO结构如下,
我们说这个结构之所以使得FIFO的输出Q在读完SRAM之后保持稳定,其实需要SRAM本身可以保持RDATA在读操作之后的多个周期保持稳定。即SRAM本身的读时序如下图所示:图中cycle 4,5,6都没有读操作,SRAM的RDATA依然保持D0不变。
但是如果SRAM的读时序不能保证这样,而是只能保证数据RDATA valid一个周期,那么我们就无法使用上面的结构。
那么要怎么做才能达到我们想要的FIFO时序呢?大家可以很容易想到,如果想保持数据稳定,那还是要借助一级Flop的帮忙,即