同步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; 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 的实现通常是利用双口RAM 和读写地址产生模块来实现的。FIFO 的接口信号包括异步的写时钟(wr_...