同步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 : 2007-1-29
-- Description : Synchronous FIFO created by VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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;
-----------------------------------------------------------------------------------------------------------
欢迎访问skycanny的笔记(副站)
用户147800 2010-5-24 20:53
用户125619 2010-1-3 13:49
用户1527120 2009-8-17 14:58
ash_riple_768180695 2007-2-5 14:31