⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fifo.vhd

📁 fifo example vhdl code
💻 VHD
字号:
-------------------------------------------------------------------------------
-- Project     : Journal 2 - Async fifo
--             : Integrated Broadband Electronics. Course 34349 @ DTU/Denmark
-------------------------------------------------------------------------------
-- File        : fifo.vhd
-- Author      : Philip S鴈berg (philip-dev@soeberg.net)
-------------------------------------------------------------------------------
-- Description : top-level entity for async fifo thingy
-------------------------------------------------------------------------------
-- Revision    : 1.0     17/12/2005      Initial version
-------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

entity async_fifo is
	port (
		reset			: in std_logic;
		wclk			: in std_logic;
		rclk			: in std_logic;
		write_enable	: in std_logic;
		read_enable		: in std_logic;
--		fifo_occu_in	: out std_logic_vector(4 downto 0);	--I will provide empty and full signals, which I assume these are for?
--		fifo_occu_out	: out std_logic_vector(4 downto 0);
		empty			: out std_logic;
		full			: out std_logic;
		write_data_in	: in std_logic_vector(7 downto 0);
		read_data_out	: out std_logic_vector(7 downto 0)
	);
end async_fifo;

Architecture RTL of async_fifo is

component control is
	port (
		reset : in std_logic;		--asyn reset
		rdclk : in std_logic;		--read clock
		wrclk : in std_logic;		--write clock
		fifo_wr : in std_logic;		--write request signal
		fifo_rd : in std_logic;		--read request signal
		valid_rd : out std_logic;	--synchronized write request signal
		valid_wr : out std_logic;	--synchronized read request signal
		rd_ptr : out std_logic_vector(2 downto 0);	--read pointer (binary)
		wr_ptr : out std_logic_vector(2 downto 0);	--write pointer (binary)
		empty : out std_logic;		--empty signal
		full : out std_logic		--full signal
	);
end component;

component memory IS
	port (
	addra: IN std_logic_VECTOR(2 downto 0);
	addrb: IN std_logic_VECTOR(2 downto 0);
	clka: IN std_logic;
	clkb: IN std_logic;
	dina: IN std_logic_VECTOR(7 downto 0);
	doutb: OUT std_logic_VECTOR(7 downto 0);
	wea: IN std_logic);
END component;

signal adr_read : std_logic_vector(2 downto 0);
signal adr_write : std_logic_vector(2 downto 0);
--signal req_read : std_logic;
signal req_write : std_logic;

signal not_used_0 : std_logic;

begin

control0 : control
port map (
	reset		=> reset			,
	rdclk       => rclk             ,
	wrclk       => wclk             ,
	fifo_wr     => write_enable     ,
	fifo_rd     => read_enable      ,
	valid_rd    => not_used_0       ,
	valid_wr    => req_write        ,
	rd_ptr      => adr_read         ,
	wr_ptr      => adr_write        ,
	empty       => empty	        ,
	full        => full
);

memory0 : memory
port map (
	addra		=> adr_write		,
	addrb       => adr_read         ,
	clka        => wclk             ,
	clkb        => rclk             ,
	dina        => write_data_in    ,
	doutb       => read_data_out    ,
	wea         => req_write
);

end RTL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -