如图所示,在赛灵思官方提供的FIFO IP里,同步FIFO(Common Clock)可以由BRAM、DRAM和移位寄存器构成,或者由内建的FIFO构成,异步FIFO(Independent Clocks)可以由BRAM、DRAM和内建的FIFO构成。 本文主要实现基于移位寄存器的同步FIFO。 实现的思路为: 设置一个计数器,记录目前FIFO内部的数据个数,外部每向FIFO写入一个数据,移位寄存器就进行一次移位,而读出数据的位置则根据FIFO内数据的个数来确定。 以下是实现的代码:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/07/22 16:43:50