1、almost full 和 almost empty flags用来指示只剩一个字了。
2、Programmable full and empty status flags可以由用户自定义内容设定或者用专用的输入口进行设定。
3、对于V5的block RAM和built-in FIFO可以使用内嵌的寄存器。使用这个寄存器可以提高FIFO的性能,但是增加延迟。
4、FIFO常用于:跨时钟域操作和数据位宽转换。例如:两个独立的时钟域,独立的数据位宽,可以利用一个FIFO进行连接,如下图所示:
FIFO可以自动完成数据位宽的转换。
5、当需要用到大块的FIFO时,可以使用V5 built-in FIFO
6、First-Word Fall-Through(FWFT)特性是指,可以在没有进行读操作的时候,就可以提前知道下一个数据是什么,并且自动将这个数据放到输出数据线(DOUT)上。FWFT在要求低访问延迟时,很有用。
这几种FIFO支持FWFT特性:block RAM, distributed RAM, V5 built-in FIFO
7、FIFO接口信号
在写操作时,注意一下几个信号:
(1)、FULL:当FULL有效时,所有的写操作都将被忽略,并且这时对FIFO的写操作不会对FIFO造成损坏。
(2)、ALMOST_FULL:当这个信号有效时,说明还可以再进行一次写操作
(3)、FROG_FULL:当FIFO得数据大于或者等于设定的门限时,这个信号有效;当FIFO得数据小于这个设定的门限时,这个信号无效。
(4)、OVERFLOW:这个信号用来指示在前一个时钟周期的写请求(WR_EN)被拒绝,因为FIFO已经满了。
(5)、PROG_FULL_THRESH:用来设定PROG_FULL的有效时的数据数目,和无效时的数据数目
在读操作时,注意一下几个信号:
(1)、FROG_EMPTY:当FIFO的数据数量小于等于设定的门限时,这个信号有效。
(2)、RD_DATA_COUNT[C:0]:这个值表明FIFO中可以读取的数据的数目,在读操作的时候,通过对这个数据进行判断,可以保证当FIFO中没有数据的时候,停止读操作。当发生一次读操作时,会在下一个时钟的上升沿对RD_DATA_COUNT进行改变。即写入一个数据的时候rd_data_count+1,当读出一个数据的时候,rd_data_count-1。
(3)、UNDERFLOW:表明前一次读操作被拒绝了,因为FIFO已经空了。
文章评论(0条评论)
登录后参与讨论