本内容学习自领航者ZYNQ 之FPGA开发指南 V1.0
1.FIFO IP核简介
根据FIFO 工作的时钟域,可以将FIFO 分为同步FIFO 和异步FIFO。同步FIFO 是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作。异步FIFO 是指读写时钟不一致,读写时钟是互相独立的。Xilinx 的FIFO IP 核可以被配置为同步FIFO 或异步FIFO,其信号框图如下图所示。从图中可以了解到,当被配置为同步FIFO 时,只使用wr_clk,所有的输入输出信号都同步于wr_clk 信号。而当被配置为异步FIFO时,写端口和读端口分别有独立的时钟,所有与写相关的信号都是同步于写时钟wr_clk,所有与读相关的信号都是同步于读时钟rd_clk。
对于FIFO 需要了解一些常见参数:
FIFO 的宽度:FIFO 一次读写操作的数据位N;
FIFO 的深度:FIFO 可以存储多少个宽度为N 位的数据。
空标志:empty。FIFO 已空时由FIFO 的状态电路送出的一个信号,阻止FIFO 的读操作继续从FIFO中读出数据而造成无效数据的读出。
满标志:full。FIFO 已满或将要写满时由FIFO 的状态电路送出的一个信号,以阻止FIFO 的写操作继续向FIFO 中写数据而造成溢出。
读时钟:读FIFO 时所遵循的时钟,在每个时钟的上升沿触发。
写时钟:写FIFO 时所遵循的时钟,在每个时钟