文档介绍:同时FIFO之VHDL描述
同时FIFO意思是说FIFO读写时钟是同一个时钟, 不一样于异步FIFO, 异步FIFO读写时钟是完全异步。 同时FIFO对外接口包含时钟, 清零, 读请求, 写请求, 数据输入总线, 数据输出总线, 空和满信号。 下面分别对同时FIFO对外接口信号作一描述:
1.  时钟, 输入, 用于同时FIFO读和写, 上升沿有效;
2.  清零, 输入, 异步清零信号, 低电平有效, 该信号有效时, FIFO被清空;
3.  写请求, 输入, 低电平有效, 该信号有效时, 表明外部电路请求向FIFO写入数据;
4.  读请求, 输入, 低电平有效, 该信号有效时, 表明外部电路请求从FIFO中读取数据;
5.  数据输入总线, 输入, 当写信号有效时, 数据输入总线上数据被写入到FIFO中;
6.  数据输出总线, 输出, 当读信号有效时, 数据从FIFO中被读出并放到数据输出总线上;
7.  空, 输出, 高电平有效, 当该信号有效时, 表明FIFO中没有任何数据, 全部为空;
8.  满, 输出, 高电平有效, 当该信号有效时, 表明FIFO已经满了, 没有空间可用来存贮数据。
使用VHDL描述FIFO将以上面接口为基础, 而且能够参数化配置FIFO宽度和深度。 先把对外接口描述出来吧。
---------------------------------------------------------------------------------------------------------
-- Designer : skycanny
-- Date : -1-29
-- Description : Synchronous FIFO created by VHDL
library ieee;
use ;
use ;
use ;
entity sfifo is
generic(width : positive
depth : positive
);
port
(
clk : in std_logic;
rst : in std_logic;
wq : in std_logic;
rq : in std_logic;
data        : in std_logic_vector(width - 1 downto 0);
q : in std_logic_vector(width - 1 downto 0);
empty : out std_logic;
full : out std_logic
);
end entity sfifo;
下面框图关键描述同时FIFO内部结构, 画出框图有利于对电路结构了解, 一样也有利于RTL代码编写 :
异步FIFO
FIFO (优异先出队列)是一个在电子系统得到广泛应用器件, 通常见于数据缓存和用于容纳异步信号频率或相位差异。 FIFO实现通常