00001 --**************************************************************
00002 --* *
00003 --* The source code for the ATLAS BCM "AAA" FPGA is made *
00004 --* available via the GNU General Public License (GPL) *
00005 --* unless otherwise stated below. *
00006 --* *
00007 --* In case of problems/questions/bug reports etc. please *
00008 --* contact michael.niegl@cern.ch *
00009 --* *
00010 --**************************************************************
00011
00012 --**************************************************************
00013 --* *
00014 --* $Source: /local/reps/bcmfpga/bcm_aaa/bcm_aaa/ddr/mem_interface_top_backend_fifos_0.vhd,v $ *
00015 --* $Revision: 1.3.2.3 $ *
00016 --* $Name: dev $ *
00017 --* $Author: mniegl $ *
00018 --* $Date: 2008/11/03 17:57:43 $ *
00019 --* *
00020 --**************************************************************
00021 -------------------------------------------------------------------------------
00022 -- Copyright (c) 2005 Xilinx, Inc.
00023 -- This design is confidential and proprietary of Xilinx, All Rights Reserved.
00024 -------------------------------------------------------------------------------
00025 -- ____ ____
00026 -- / /\/ /
00027 -- /___/ \ / Vendor: Xilinx
00028 -- \ \ \/ Version: 1.6
00029 -- \ \ Application : MIG
00030 -- / / Filename: mem_interface_top_backend_fifos_0.vhd
00031 -- /___/ /\ Date Last Modified: Wed Jun 1 2005
00032 -- \ \ / \Date Created: Mon May 2 2005
00033 -- \___\/\___\
00034 -- Device: Virtex-4
00035 -- Design Name: DDR1_SDRAM
00036 -- Description: This module instantiates the modules containing internal FIFOs
00037 -- to store the data and the address.
00038 -------------------------------------------------------------------------------
00039
00040
00041 library ieee;
00042
00043 use ieee.std_logic_1164.all;
00044
00045 library unisim;
00046
00047 use unisim.vcomponents.all;
00048 use work.mem_interface_top_parameters_0.all;
00049
00050 entity mem_interface_top_backend_fifos_0 is
00051 port( clk0 : in ;
00052 clk90 : in ;
00053 rst : in ;
00054 app_af_addr : in (35 downto 0);
00055 app_af_WrEn : in ;
00056 ctrl_af_RdEn : in ;
00057 af_addr : out (35 downto 0);
00058 af_Empty : out ;
00059 af_Almost_Full : out ;
00060 app_Wdf_data : in ((data_width*2 - 1) downto 0);
00061 app_mask_data : in ((data_mask_width*2 - 1) downto 0);
00062 app_Wdf_WrEn : in ;
00063 ctrl_Wdf_RdEn : in ;
00064 Wdf_data : out ((data_width*2 - 1) downto 0);
00065 mask_data : out ((data_mask_width*2 - 1) downto 0);
00066 Wdf_Almost_Full : out
00067 );
00068 end mem_interface_top_backend_fifos_0;
00069
00070 architecture arch of mem_interface_top_backend_fifos_0 is
00071
00072 component mem_interface_top_rd_wr_addr_fifo_0
00073 port( clk0 : in ;
00074 clk90 : in ;
00075 rst : in ;
00076 app_af_addr : in (35 downto 0);
00077 app_af_WrEn : in ;
00078 ctrl_af_RdEn : in ;
00079 af_addr : out (35 downto 0);
00080 af_Empty : out ;
00081 af_Almost_Full : out
00082 );
00083 end component;
00084
00085 component mem_interface_top_wr_data_fifo_16
00086 port( clk0 : in ;
00087 clk90 : in ;
00088 rst : in ;
00089 app_Wdf_data : in (31 downto 0);
00090 app_mask_data : in (3 downto 0);
00091 app_Wdf_WrEn : in ;
00092 ctrl_Wdf_RdEn : in ;
00093 Wdf_data : out (31 downto 0);
00094 mask_data : out (3 downto 0);
00095 wr_df_almost_full : out
00096 );
00097 end component;
00098
00099 component mem_interface_top_wr_data_fifo_8
00100 port( clk0 : in ;
00101 clk90 : in ;
00102 rst : in ;
00103 app_Wdf_data : in (15 downto 0);
00104 app_mask_data : in (1 downto 0);
00105 app_Wdf_WrEn : in ;
00106 ctrl_Wdf_RdEn : in ;
00107 Wdf_data : out (15 downto 0);
00108 mask_data : out (1 downto 0);
00109 wr_df_almost_full : out
00110 );
00111 end component;
00112
00113 signal wr_df_almost_full_w : (fifo_16-1 downto 0);
00114
00115 begin
00116
00117 Wdf_Almost_Full <= wr_df_almost_full_w(0);
00118
00119 rd_wr_addr_fifo_00: mem_interface_top_rd_wr_addr_fifo_0 port map
00120 ( clk0 => clk0,
00121 clk90 => clk90,
00122 rst => rst ,
00123 app_af_addr => app_af_addr,
00124 app_af_WrEn => app_af_WrEn,
00125 ctrl_af_RdEn => ctrl_af_RdEn,
00126 af_addr => af_addr,
00127 af_Empty => af_Empty,
00128 af_Almost_Full => af_Almost_Full
00129 );
00130
00131
00132 wr_data_fifo_160 : mem_interface_top_wr_data_fifo_16 port map
00133 ( clk0 => clk0 ,
00134 clk90 => clk90,
00135 rst => rst ,
00136 app_Wdf_data => app_Wdf_data(31 downto 0),
00137 app_mask_data => app_mask_data(3 downto 0),
00138 app_Wdf_WrEn => app_Wdf_WrEn,
00139 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00140 Wdf_data => Wdf_data(31 downto 0),
00141 mask_data => mask_data(3 downto 0),
00142 wr_df_almost_full => wr_df_almost_full_w(0)
00143 );
00144
00145
00146
00147 wr_data_fifo_161 : mem_interface_top_wr_data_fifo_16 port map
00148 ( clk0 => clk0 ,
00149 clk90 => clk90,
00150 rst => rst ,
00151 app_Wdf_data => app_Wdf_data(63 downto 32),
00152 app_mask_data => app_mask_data(7 downto 4),
00153 app_Wdf_WrEn => app_Wdf_WrEn,
00154 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00155 Wdf_data => Wdf_data(63 downto 32),
00156 mask_data => mask_data(7 downto 4),
00157 wr_df_almost_full => wr_df_almost_full_w(1)
00158 );
00159
00160
00161
00162
00163 end arch;