随笔~~fifo的简单实现(ise)

fifo是一种先进先出的数据存储和缓冲器,其本质是RAM。fifo的位宽就是每个数据的位宽,fifo的深度简单来说是需要存多少个数据。fifo有同步fifo和异步fifo两种,同步即读写时钟相同,异步fifo即读写时钟不同。一般异步fifo用的较多,用来处理跨时钟域的问题。

1.在ise软件中,调用了一个8x256的同步fifo IP核,其主要配置如下图所示,

随笔~~fifo的简单实现(ise)_第1张图片

接口类型选择了Native,而AXI4类型主要用于与软核CPU通信中,尤其是在ZYNQ的PL和PS通信中。

随笔~~fifo的简单实现(ise)_第2张图片

选择相同的读写时钟,即同步fifo。选择的memory类型是Block RAM,两种类型的区别是,Block RAM是硬件存在的ram资源,是单纯的存储资源,需要整块使用;而Distributed ram是用逻辑单元拼出来的,用内部寄存器和查找表等资源搭建的RAM,深度不大于32.因为大了之后寻址布线可能长,用起来有问题,资源特别少的时候可以考虑搭建。

随笔~~fifo的简单实现(ise)_第3张图片

宽度为8位,深度为256,READ MODE默认,Standard FIFO为当给出读使能后,数据会延迟一拍;First-Word Fall-Through 则是当给出读使能,立即给出数据。

随笔~~fifo的简单实现(ise)_第4张图片

此页面上基本上都为fifo的标志信号,具体可以通过代码实现来查看各自的用途。

随笔~~fifo的简单实现(ise)_第5张图片

Programmable Full Type 和 Programmable Empty Type 是:根据需要设置提前多少个数据来给自己提示即将写满还是即将读空。比如说上图中252,就是提前3个数据将PROG_FULL标志拉高。

随笔~~fifo的简单实现(ise)_第6张图片

默认next,

随笔~~fifo的简单实现(ise)_第7张图片

最后给出设置的fifo的报告,点击generate生成ip。

在代码中,将输入数据有效和写满取反相与,来产生写使能信号,读标志和读空取反相与产生读使能信号。

 

你可能感兴趣的:(FPGA)