----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date:    10:29:16 02/12/2010 
-- Design Name: 
-- Module Name:    eval_asyn_fifo - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity eval_asyn_fifo is
    Port (
    		din : in  unsigned (31 downto 0);
           dout : out  unsigned (31 downto 0);
           rst : in  STD_LOGIC;
           clk_w : in  STD_LOGIC;
           clk_r : in  STD_LOGIC;
           full : out  STD_LOGIC;
           empty : out  STD_LOGIC;
           read : in  STD_LOGIC;
           write : in  STD_LOGIC);
end eval_asyn_fifo;

architecture Behavioral of eval_asyn_fifo is

	signal read0	: std_logic;
	signal empty0	: std_logic;
	signal write1	: std_logic;
	signal full1	: std_logic;
	signal dout0	: unsigned (31 downto 0);

begin

	read0	<= not full1;
	write1	<= not empty0;
	
	uut0: entity work.fifo_async
	GENERIC MAP
	(
		addr_width			=> 4,
		data_width			=> 32,
		almost_full_thresh	=> 6,
		almost_empty_thresh	=> 2,
		allow_full_writes	=> false,
		allow_empty_reads	=> false,
		do_last_read_update	=> true
	)
	PORT MAP
	(
		rst			=>	rst,
		clk_w		=>	clk_w,
		clk_r		=>	clk_r,
		we			=>	write,
		re			=>	read0,
		data_w		=>	din,
		data_r		=>	dout0,
		fifo_full	=>	full,
		fifo_empty	=>	empty0,
		fifo_afull	=>	open,
		fifo_aempty	=>	open

	);

	uut1: entity work.fifo_sync
	GENERIC MAP
	(
		addr_width			=> 10,
		data_width			=> 32,
		almost_full_thresh	=> 6,
		almost_empty_thresh	=> 2,
		allow_full_writes	=> false,
		allow_empty_reads	=> false,
		do_last_read_update	=> true
	)
	PORT MAP
	(
		rst			=>	rst,
		clk			=>	clk_r,
		we			=>	write1,
		re			=>	read,
		data_w		=>	dout0,
		data_r		=>	dout,
		fifo_full	=>	full1,
		fifo_empty	=>	empty,
		fifo_afull	=>	open,
		fifo_aempty	=>	open

	);

end Behavioral;

