一 FPGA 使用的 FIFO 一般指的是对数据的存储具有先 进先出特性的一个缓存器,常被用于数据的缓存,或者高速异步数据的交互也即所谓的跨时钟域信号传递。特点:它与 FPGA 内部的 RAM 和 ROM 的区别是没有外部读写地址线,采取顺序写入数据,顺序读出数据的方式, 使用起来简单方便,由此带来的缺点就是不能像 RAM 和 ROM 那样可以由地址线决定读取或写入某个指定 的地址。
同步 FIFO 是指读时钟和写时钟 为同一个时钟,在时钟沿来临时同时发生读写操作。异步 FIFO 是指读写时钟不一致,读写时钟是互相独立的。
“almost_empty”和“almost_full”这两个信号分别被看作“empty”和“full”的警告信号,他们相 对于真正的空(empty)和满(full)都会提前一个时钟周期拉高。
实验任务:本节的实验任务是使用 Vivado 生成 FIFO IP 核,并实现以下功能:当 FIFO 为空时,向 FIFO 中写入数 据,写入的数据量和 FIFO 深度一致,即 FIFO 被写满;然后从 FIFO 中读出数据,直到 FIFO 被读空为止, 以此向大家详细介绍一下 FIFO IP 核的使用方法。
二 程序设计
创建FIFO的IP核,具体设置见笔记。创建pll的ip核。50m和100m。
ip_fifo.v: 例化pll的ip核(ip核重新创建),FIFOip核,读和写模块以及fifo读写时钟阈下的ila。