作者: wujieluoji,来源: 无界逻辑(微信号:wujieluoji)微信公众号
FIFO(First In First Out)先进先出,在FPGA设计中使用非常广泛,常用于时钟域的转换,两个模块的交互通道等。我们从时钟,复位,功能,读模式,资源,状态,端口,详细枚举了FPGA中FIFO的分类和特性,FIFO接口时序图应该铭记于心,此处略过,以后方便时补充。
异步FIFO和同步FIFO
按照读写的时钟域是否相同,FIFO可以分为异步FIFO和同步FIFO。时钟域相同称之为同步FIFO(Sync FIFO),时钟域不相同称之为异步FIFO(Async FIFO)。异步FIFO的复位一般也是一个异步复位接口,复位后,在读写侧,分别有两个Busy信号,表示,复位过程是否结束。
Data FIFO和Frame FIFO
按照FIFO中计数粒度,FIFO可以分为普通的Data FIFO和Frame FIFO。重点解释一下Frame FIFO,如在接收以太报文时,每一帧非固定长度,最后帧尾进行CRC的校验,如果此时CRC错误,则需要把报文及时丢弃。这里帧FIFO就可以应用在这种情况。接收到的帧数据不停的送入FIFO中缓存。当收到帧尾CRC校验正确,则给Frame FIFO一个last的标志,此时FIFO状态变为非空。当收到帧尾CRC校验错误,则给Frame FIFO一个last和err的标志,此时FIFO会丢弃收到的数据报文,状态依旧保持为空。也就是说,FIFO控制器需同时维护以帧和DATA为粒度的读写计数器,用来产生空满标志。FPGA中,没有帧FIFO IP,需要自己写帧FIFO控制器,外接RAM实现。
FWFT FIFO
First Word Fall Through,自动的将最新数据放在dout上。也就是说,非空时,数据就在dout上。rd_en/pop_en可以理解为此数据已经使用,请送出下一个数据。通俗的说法,就是数据当拍有效。使用起来比较方便。
ZERO DELAY FIFO
拓展介绍一个零延时FIFO,作者在ASIC项目中使用过。在FIFO为空的情况下,当拍讲数据写入FIFO,则同时FIFO为非空,且数据出现在Dout总线上,可被读取,此中场景,FIFO并未引入的延时,实现数据的透传。
你还了解哪些FIFO的知识,上面没有提及的,请联系作者!