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/ddr2/ddr2_mem_backend_fifos_0.vhd,v $
00015 --* $Revision: 1.3.2.4 $ *
00016 --* $Name: dev $ *
00017 --* $Author: mniegl $ *
00018 --* $Date: 2008/11/03 21:23:00 $ *
00019
00020
00021 --* *
00022 --**************************************************************
00023 -------------------------------------------------------------------------------
00024 -- Copyright (c) 2005 Xilinx, Inc.
00025 -- This design is confidential and proprietary of Xilinx, All Rights Reserved.
00026 -------------------------------------------------------------------------------
00027 -- ____ ____
00028 -- / /\/ /
00029 -- /___/ \ / Vendor: Xilinx
00030 -- \ \ \/ Version: 1.6
00031 -- \ \ Application : MIG
00032 -- / / Filename: ddr2_mem_backend_fifos_0.vhd
00033 -- /___/ /\ Date Last Modified: Wed Jun 1 2005
00034 -- \ \ / \Date Created: Mon May 2 2005
00035 -- \___\/\___\
00036 --
00037 -- Device: Virtex-4
00038 -- Design Name: DDR2_V4
00039 -------------------------------------------------------------------------------
00040
00041
00042 library ieee;
00043
00044 use ieee.std_logic_1164.all;
00045
00046 use ieee.std_logic_unsigned.all;
00047
00048 use ieee.numeric_std.all;
00049 library work;
00050 use work.ddr2_mem_parameters_0.all;
00051 -- pragma translate_off
00052
00053 library unisim;
00054
00055 use unisim.vcomponents.all;
00056 -- pragma translate_on
00057
00058
00059
00060
00061 entity ddr2_mem_backend_fifos_0 is
00062 port(
00063 clk0 : in ;
00064 clk90 : in ;
00065 rst : in ;
00066 --Write address fifo signals
00067 app_af_addr : in (35 downto 0);
00068 app_af_WrEn : in ;
00069 ctrl_af_RdEn : in ;
00070 af_addr : out (35 downto 0);
00071 af_Empty : out ;
00072 af_Almost_Full : out ;
00073 --Write data fifo signals
00074 app_Wdf_data : in (dq_width*2-1 downto 0);
00075 app_mask_data : in (dm_width*2-1 downto 0);
00076 app_Wdf_WrEn : in ;
00077 ctrl_Wdf_RdEn : in ;
00078 Wdf_data : out (dq_width*2-1 downto 0);
00079 mask_data : out (dm_width*2-1 downto 0);
00080 Wdf_Almost_Full : out
00081 );
00082 end entity;
00083
00084
00085
00086
00087 architecture arc_backend_fifos of ddr2_mem_backend_fifos_0 is
00088
00089
00090 component ddr2_mem_rd_wr_addr_fifo_0
00091 port(
00092 clk0 : in ;
00093 clk90 : in ;
00094 rst : in ;
00095 --Write address fifo signals
00096 app_af_addr : in (35 downto 0);
00097 app_af_WrEn : in ;
00098 ctrl_af_RdEn : in ;
00099 af_addr : out (35 downto 0);
00100 af_Empty : out ;
00101 af_Almost_full : out
00102
00103 );
00104 end component;
00105
00106
00107 component ddr2_mem_wr_data_fifo_16
00108 port (
00109 clk0 : in ;
00110 clk90 : in ;
00111 rst : in ;
00112 --Write data fifo signals
00113 app_Wdf_data : in (31 downto 0);
00114 app_mask_data : in (3 downto 0);
00115 app_Wdf_WrEn : in ;
00116 ctrl_Wdf_RdEn : in ;
00117 Wdf_data : out (31 downto 0);
00118 mask_data : out (3 downto 0);
00119 wr_df_almost_full : out
00120
00121 );
00122 end component;
00123
00124
00125 component ddr2_mem_wr_data_fifo_8 is
00126 port(
00127 clk0 : in ;
00128 clk90 : in ;
00129 rst : in ;
00130 --Write data fifo signals
00131 app_Wdf_data : in (15 downto 0);
00132 app_mask_data : in (1 downto 0);
00133 app_Wdf_WrEn : in ;
00134 ctrl_Wdf_RdEn : in ;
00135 Wdf_data : out (15 downto 0);
00136 mask_data : out (1 downto 0);
00137 wr_df_almost_full : out
00138 );
00139 end component;
00140
00141 signal wr_df_almost_full_w : ((fifo-1) downto 0);
00142
00143 begin
00144
00145 Wdf_Almost_Full <= wr_df_almost_full_w(0);
00146
00147
00148 rd_wr_addr_fifo_00 : ddr2_mem_rd_wr_addr_fifo_0
00149 port map (
00150 clk0 => clk0,
00151 clk90 => clk90,
00152 rst => rst,
00153 app_af_addr => app_af_addr,
00154 app_af_WrEn => app_af_WrEn,
00155 ctrl_af_RdEn => ctrl_af_RdEn,
00156 af_addr => af_addr,
00157 af_Empty => af_Empty,
00158 af_Almost_full => af_Almost_Full
00159
00160 );
00161
00162
00163 wr_data_fifo_160 : ddr2_mem_wr_data_fifo_16
00164 port map (
00165 clk0 => clk0,
00166 clk90 => clk90,
00167 rst => rst,
00168 app_Wdf_data => app_Wdf_data(31 downto 0),
00169 app_mask_data => app_mask_data(3 downto 0),
00170 app_Wdf_WrEn => app_Wdf_WrEn,
00171 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00172 Wdf_data => Wdf_data(31 downto 0),
00173 mask_data => mask_data(3 downto 0),
00174 wr_df_almost_full => wr_df_almost_full_w(0)
00175 );
00176
00177
00178 wr_data_fifo_161 : ddr2_mem_wr_data_fifo_16
00179 port map (
00180 clk0 => clk0,
00181 clk90 => clk90,
00182 rst => rst,
00183 app_Wdf_data => app_Wdf_data(63 downto 32),
00184 app_mask_data => app_mask_data(7 downto 4),
00185 app_Wdf_WrEn => app_Wdf_WrEn,
00186 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00187 Wdf_data => Wdf_data(63 downto 32),
00188 mask_data => mask_data(7 downto 4),
00189 wr_df_almost_full => wr_df_almost_full_w(1)
00190 );
00191
00192
00193 wr_data_fifo_162 : ddr2_mem_wr_data_fifo_16
00194 port map (
00195 clk0 => clk0,
00196 clk90 => clk90,
00197 rst => rst,
00198 app_Wdf_data => app_Wdf_data(95 downto 64),
00199 app_mask_data => app_mask_data(11 downto 8),
00200 app_Wdf_WrEn => app_Wdf_WrEn,
00201 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00202 Wdf_data => Wdf_data(95 downto 64),
00203 mask_data => mask_data(11 downto 8),
00204 wr_df_almost_full => wr_df_almost_full_w(2)
00205 );
00206
00207
00208 wr_data_fifo_163 : ddr2_mem_wr_data_fifo_16
00209 port map (
00210 clk0 => clk0,
00211 clk90 => clk90,
00212 rst => rst,
00213 app_Wdf_data => app_Wdf_data(127 downto 96),
00214 app_mask_data => app_mask_data(15 downto 12),
00215 app_Wdf_WrEn => app_Wdf_WrEn,
00216 ctrl_Wdf_RdEn => ctrl_Wdf_RdEn,
00217 Wdf_data => Wdf_data(127 downto 96),
00218 mask_data => mask_data(15 downto 12),
00219 wr_df_almost_full => wr_df_almost_full_w(3)
00220 );
00221
00222 end arc_backend_fifos;
00223