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_user_interface_0.vhd,v $
00015 --* $Revision: 1.3.2.4 $ *
00016 --* $Name: dev $ *
00017 --* $Author: mniegl $ *
00018 --* $Date: 2008/11/03 18:48:14 $ *
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_user_interface_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
00052 library unisim;
00053
00054 use unisim.vcomponents.all;
00055
00056
00057
00058
00059 entity ddr2_mem_user_interface_0 is
00060 port (
00061 CLK : in ;
00062 clk90 : in ;
00063 RESET : in ;
00064 READ_DATA_RISE : in (data_width-1 downto 0);
00065 READ_DATA_FALL : in (data_width-1 downto 0);
00066 CTRL_RDEN : in ;
00067 COMP_DONE : out ;
00068 APP_AF_ADDR : in (35 downto 0);
00069 APP_AF_WREN : in ;
00070 CTRL_AF_RDEN : in ;
00071 APP_WDF_DATA : in (dq_width*2-1 downto 0);
00072 APP_MASK_DATA : in (dm_width*2-1 downto 0);
00073 APP_WDF_WREN : in ;
00074 CTRL_WDF_RDEN : in ;
00075 READ_DATA_FIFO_OUT : out (dq_width*2-1 downto 0);
00076 READ_DATA_VALID : out ;
00077 AF_ADDR : out (35 downto 0);
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 AF_ALMOST_FULL : out ;
00082 AF_EMPTY : out
00083 );
00084
00085 end entity;
00086
00087
00088
00089
00090 architecture user_interface_arc of ddr2_mem_user_interface_0 is
00091
00092
00093 component ddr2_mem_rd_data_0
00094 port (
00095 CLK : in ;
00096 RESET : in ;
00097 READ_DATA_RISE : in (data_width-1 downto 0);
00098 READ_DATA_FALL : in (data_width-1 downto 0);
00099 CTRL_RDEN : in ;
00100 COMP_DONE : out ;
00101 READ_DATA_FIFO_RISE : out (data_width-1 downto 0);
00102 READ_DATA_FIFO_FALL : out (data_width-1 downto 0);
00103 READ_DATA_VALID : out
00104 );
00105 end component;
00106
00107
00108 component ddr2_mem_backend_fifos_0
00109 port (
00110 clk0 : in ;
00111 clk90 : in ;
00112 rst : in ;
00113 --Write address fifo signals
00114 app_af_addr : in (35 downto 0);
00115 app_af_WrEn : in ;
00116 ctrl_af_RdEn : in ;
00117 af_addr : out (35 downto 0);
00118 af_Empty : out ;
00119 af_Almost_Full : out ;
00120 --Write data fifo signals
00121 app_Wdf_data : in (dq_width*2-1 downto 0);
00122 app_mask_data : in (dm_width*2-1 downto 0);
00123 app_Wdf_WrEn : in ;
00124 ctrl_Wdf_RdEn : in ;
00125 Wdf_data : out (dq_width*2-1 downto 0);
00126 mask_data : out (dm_width*2-1 downto 0);
00127 Wdf_Almost_Full : out
00128
00129 );
00130 end component;
00131
00132 signal read_data_fifo_rise_i : (dq_width-1 downto 0);
00133 signal read_data_fifo_fall_i : (dq_width-1 downto 0);
00134
00135 begin
00136
00137
00138 READ_DATA_FIFO_OUT <= (read_data_fifo_rise_i & read_data_fifo_fall_i);
00139
00140
00141 rd_data_00 : ddr2_mem_rd_data_0
00142 port map (
00143 CLK => CLK,
00144 RESET => RESET,
00145 CTRL_RDEN => CTRL_RDEN,
00146 COMP_DONE => COMP_DONE,
00147 READ_DATA_RISE => READ_DATA_RISE,
00148 READ_DATA_FALL => READ_DATA_FALL,
00149 READ_DATA_FIFO_RISE => read_data_fifo_rise_i,
00150 READ_DATA_FIFO_FALL => read_data_fifo_fall_i,
00151 READ_DATA_VALID => READ_DATA_VALID
00152 );
00153
00154
00155 backend_fifos_00 : ddr2_mem_backend_fifos_0
00156 port map (
00157 clk0 => CLK,
00158 clk90 => clk90,
00159 rst => RESET,
00160 app_af_addr => APP_AF_ADDR,
00161 app_af_WrEn => APP_AF_WREN,
00162 ctrl_af_RdEn => CTRL_AF_RDEN,
00163 af_addr => AF_ADDR,
00164 af_Empty => AF_EMPTY,
00165 af_Almost_Full => AF_ALMOST_FULL,
00166 app_Wdf_data => APP_WDF_DATA,
00167 app_mask_data => APP_MASK_DATA,
00168 app_Wdf_WrEn => APP_WDF_WREN,
00169 ctrl_Wdf_RdEn => CTRL_WDF_RDEN,
00170 Wdf_data => WDF_DATA,
00171 mask_data => MASK_DATA,
00172 Wdf_Almost_Full => WDF_ALMOST_FULL
00173 );
00174
00175 end user_interface_arc;