Xilinx FIFO IP core 使用小结

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已经空了。

原文:http://bbs.ednchina.com/BLOG_ARTICLE_633255.HTM



你可能感兴趣的:(FPGA)