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.vhd,v $
00015 --* $Revision: 1.6.2.4 $ *
00016 --* $Name: dev $ *
00017 --* $Author: mniegl $ *
00018 --* $Date: 2008/11/03 21:55:52 $ *
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.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 -- pragma translate_off
00050
00051 library unisim;
00052
00053 use unisim.vcomponents.all;
00054 -- pragma translate_on
00055
00056
00057
00058
00059 entity ddr2_mem is
00060 port (
00061 cntrl0_DDR2_DQ : inout (63 downto 0);
00062 cntrl0_DDR2_A : out (13 downto 0);
00063 cntrl0_DDR2_BA : out (1 downto 0);
00064 cntrl0_DDR2_RAS_N : out ;
00065 cntrl0_DDR2_CAS_N : out ;
00066 cntrl0_DDR2_WE_N : out ;
00067 cntrl0_DDR2_RESET_N : out ;
00068 cntrl0_DDR2_CS_N : out ;
00069 cntrl0_DDR2_ODT : out ;
00070 cntrl0_DDR2_CKE : out ;
00071 cntrl0_DDR2_DM : out (7 downto 0);
00072 SYS_CLK_P : in ;
00073 SYS_CLK_N : in ;
00074 CLK200_P : in ;
00075 CLK200_N : in ;
00076 SYS_RESET_IN : in ;
00077 cntrl0_CLK_TB : out ;
00078 cntrl0_RESET_TB : out ;
00079 cntrl0_WDF_ALMOST_FULL : out ;
00080 cntrl0_AF_ALMOST_FULL : out ;
00081 cntrl0_READ_DATA_VALID : out ;
00082 cntrl0_APP_WDF_WREN : in ;
00083 cntrl0_APP_AF_WREN : in ;
00084 cntrl0_BURST_LENGTH : out (2 downto 0);
00085 cntrl0_APP_AF_ADDR : in (35 downto 0);
00086 cntrl0_READ_DATA_FIFO_OUT : out (127 downto 0);
00087 cntrl0_APP_WDF_DATA : in (127 downto 0);
00088 cntrl0_APP_MASK_DATA : in (15 downto 0);
00089 cntrl0_DDR2_DQS : inout (7 downto 0);
00090 cntrl0_DDR2_DQS_N : inout (7 downto 0);
00091 cntrl0_DDR2_CK : out ;
00092 cntrl0_DDR2_CK_N : out ;
00093 LOCK_IN : in
00094 );
00095 end entity;
00096
00097
00098
00099
00100 architecture arc_ddr2_mem of ddr2_mem is
00101
00102
00103 component ddr2_mem_top_0
00104 port (
00105 DDR2_DQ : inout (63 downto 0);
00106 DDR2_A : out (13 downto 0);
00107 DDR2_BA : out (1 downto 0);
00108 DDR2_RAS_N : out ;
00109 DDR2_CAS_N : out ;
00110 DDR2_WE_N : out ;
00111 DDR2_RESET_N : out ;
00112 DDR2_CS_N : out ;
00113 DDR2_ODT : out ;
00114 DDR2_CKE : out ;
00115 DDR2_DM : out (7 downto 0);
00116 CLK_TB : out ;
00117 RESET_TB : out ;
00118 WDF_ALMOST_FULL : out ;
00119 AF_ALMOST_FULL : out ;
00120 READ_DATA_VALID : out ;
00121 APP_WDF_WREN : in ;
00122 APP_AF_WREN : in ;
00123 BURST_LENGTH : out (2 downto 0);
00124 APP_AF_ADDR : in (35 downto 0);
00125 READ_DATA_FIFO_OUT : out (127 downto 0);
00126 APP_WDF_DATA : in (127 downto 0);
00127 APP_MASK_DATA : in (15 downto 0);
00128 DDR2_DQS : inout (7 downto 0);
00129 DDR2_DQS_N : inout (7 downto 0);
00130 DDR2_CK : out ;
00131 DDR2_CK_N : out ;
00132 clk_0 : in ;
00133 clk_90 : in ;
00134 clk_50 : in ;
00135 ref_clk : in ;
00136 sys_rst : in ;
00137 sys_rst90 : in ;
00138 sys_rst_ref_clk_1 : in ;
00139 idelay_ctrl_rdy : in
00140 );
00141 end component;
00142
00143
00144 component ddr2_mem_infrastructure
00145 port (
00146 SYS_CLK_P : in ;
00147 SYS_CLK_N : in ;
00148 CLK200_P : in ;
00149 CLK200_N : in ;
00150 SYS_RESET_IN : in ;
00151 LOCK : in ;
00152 CLK : out ;
00153 CLK90 : out ;
00154 CLK50 : out ;
00155 CLK200 : out ;
00156 REFRESH_CLK : out ;
00157 sys_rst : out ;
00158 sys_rst90 : out ;
00159 sys_rst_ref_clk_1 : out
00160 );
00161 end component;
00162
00163
00164 component ddr2_mem_idelay_ctrl
00165 port (
00166 CLK200 : in ;
00167 RESET : in ;
00168 RDY_STATUS : out
00169 );
00170 end component;
00171
00172 signal idelay_ctrl_rdy : ;
00173 signal sys_rst : ;
00174 signal sys_rst90 : ;
00175 signal sys_rst_ref_clk_1 : ;
00176 signal clk_0 : ;
00177 signal clk_90 : ;
00178 signal clk_50 : ;
00179 signal ref_clk : ;
00180
00181 begin
00182
00183
00184 top_00 : ddr2_mem_top_0 port map
00185 (
00186 DDR2_DQ => cntrl0_DDR2_DQ,
00187 DDR2_A => cntrl0_DDR2_A ,
00188 DDR2_BA => cntrl0_DDR2_BA,
00189 DDR2_RAS_N => cntrl0_DDR2_RAS_N ,
00190 DDR2_CAS_N => cntrl0_DDR2_CAS_N ,
00191 DDR2_WE_N => cntrl0_DDR2_WE_N ,
00192 DDR2_RESET_N => cntrl0_DDR2_RESET_N ,
00193 DDR2_CS_N => cntrl0_DDR2_CS_N ,
00194 DDR2_ODT => cntrl0_DDR2_ODT ,
00195 DDR2_CKE => cntrl0_DDR2_CKE ,
00196 DDR2_DM => cntrl0_DDR2_DM,
00197 CLK_TB => cntrl0_CLK_TB,
00198 RESET_TB => cntrl0_RESET_TB ,
00199 WDF_ALMOST_FULL => cntrl0_WDF_ALMOST_FULL ,
00200 AF_ALMOST_FULL => cntrl0_AF_ALMOST_FULL ,
00201 READ_DATA_VALID => cntrl0_READ_DATA_VALID ,
00202 APP_WDF_WREN => cntrl0_APP_WDF_WREN ,
00203 APP_AF_WREN => cntrl0_APP_AF_WREN ,
00204 BURST_LENGTH => cntrl0_BURST_LENGTH ,
00205 APP_AF_ADDR => cntrl0_APP_AF_ADDR ,
00206 READ_DATA_FIFO_OUT => cntrl0_READ_DATA_FIFO_OUT,
00207 APP_WDF_DATA => cntrl0_APP_WDF_DATA ,
00208 APP_MASK_DATA => cntrl0_APP_MASK_DATA ,
00209 DDR2_DQS => cntrl0_DDR2_DQS ,
00210 DDR2_DQS_N => cntrl0_DDR2_DQS_N ,
00211 DDR2_CK => cntrl0_DDR2_CK,
00212 DDR2_CK_N => cntrl0_DDR2_CK_N ,
00213 --infrastructure signals
00214 clk_0 => clk_0,
00215 clk_90 => clk_90,
00216 idelay_ctrl_rdy => idelay_ctrl_rdy,
00217 clk_50 => clk_50,
00218 ref_clk => ref_clk,
00219 sys_rst => sys_rst,
00220 sys_rst90 => sys_rst90,
00221 sys_rst_ref_clk_1 => sys_rst_ref_clk_1
00222 );
00223
00224
00225 infrastructure0 : ddr2_mem_infrastructure
00226 port map (
00227 SYS_CLK_P => SYS_CLK_P,
00228 SYS_CLK_N => '0',
00229 CLK200_P => '0', --CLK200_P,
00230 CLK200_N => '0',
00231 SYS_RESET_IN => SYS_RESET_IN,
00232 LOCK => LOCK_IN, --lock_shift,
00233 CLK => clk_0,
00234 CLK90 => clk_90,
00235 CLK50 => clk_50,
00236 CLK200 => open,
00237 REFRESH_CLK => ref_clk,
00238 sys_rst => sys_rst,
00239 sys_rst90 => sys_rst90,
00240 sys_rst_ref_clk_1 => sys_rst_ref_clk_1
00241 );
00242
00243
00244 idelay_ctrl0 : ddr2_mem_idelay_ctrl
00245 port map (
00246 CLK200 => SYS_CLK_P,
00247 RESET => sys_rst,
00248 RDY_STATUS => idelay_ctrl_rdy
00249 );
00250
00251 end arc_ddr2_mem;