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_iobs_0.vhd,v $ *
00015 --* $Revision: 1.2.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_iobs_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 all the iobs modules. It is the interface
00037 -- between the main logic and the memory.
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_iobs_0 is
00051 port( CAL_CLK : in ;
00052 DDR_CK : out ((clk_width-1) downto 0);
00053 DDR_CK_N : out ((clk_width-1) downto 0);
00054 CLK : in ;
00055 CLK90 : in ;
00056 RESET0 : in ;
00057 RESET90 : in ;
00058 dqs_idelay_inc : in ((ReadEnable-1) downto 0);
00059 dqs_idelay_ce : in ((ReadEnable-1) downto 0);
00060 dqs_idelay_rst : in ((ReadEnable-1) downto 0);
00061 data_idelay_inc : in ((ReadEnable-1) downto 0);
00062 data_idelay_ce : in ((ReadEnable-1) downto 0);
00063 data_idelay_rst : in ((ReadEnable-1) downto 0);
00064 dqs_rst : in ;
00065 dqs_en : in ;
00066 wr_en : in ;
00067 wr_data_rise : in ((data_width-1) downto 0);
00068 wr_data_fall : in ((data_width-1) downto 0);
00069 mask_data_rise : in ((data_mask_width-1) downto 0);
00070 mask_data_fall : in ((data_mask_width-1) downto 0);
00071 rd_data_rise : out ((data_width-1) downto 0);
00072 rd_data_fall : out ((data_width-1) downto 0);
00073 dqs_delayed : out ((data_strobe_width-1) downto 0);
00074 DDR_DQ : inout ((data_width-1) downto 0);
00075 DDR_DQS : inout ((data_strobe_width-1) downto 0);
00076 DDR_DM : out ((data_mask_width-1) downto 0);
00077 ctrl_ddr_address : in ((row_address-1) downto 0);
00078 ctrl_ddr_ba : in ((bank_address-1) downto 0);
00079 ctrl_ddr_ras_L : in ;
00080 ctrl_ddr_cas_L : in ;
00081 ctrl_ddr_we_L : in ;
00082 ctrl_ddr_cs_L : in ;
00083 ctrl_ddr_cke : in ;
00084 DDR_ADDRESS : out ((row_address-1) downto 0);
00085 DDR_BA : out ((bank_address-1) downto 0);
00086 DDR_RAS_L : out ;
00087 DDR_CAS_L : out ;
00088 DDR_WE_L : out ;
00089 DDR_CKE : out ;
00090 ddr_cs_L : out
00091 );
00092 end mem_interface_top_iobs_0;
00093
00094 architecture arch of mem_interface_top_iobs_0 is
00095
00096 component mem_interface_top_infrastructure_iobs_0
00097 port( CLK : in ;
00098 DDR_CK : out ((clk_width-1) downto 0);
00099 DDR_CK_N : out ((clk_width-1) downto 0)
00100 );
00101 end component;
00102
00103 component mem_interface_top_data_path_iobs_0
00104 port ( CLK : in ;
00105 CLK90 : in ;
00106 CAL_CLK : in ;
00107 RESET0 : in ;
00108 RESET90 : in ;
00109 dqs_idelay_inc : in ((ReadEnable - 1) downto 0);
00110 dqs_idelay_ce : in ((ReadEnable - 1) downto 0);
00111 dqs_idelay_rst : in ((ReadEnable - 1) downto 0);
00112 dqs_rst : in ;
00113 dqs_en : in ;
00114 dqs_delayed : out ((data_strobe_width -1) downto 0);
00115
00116
00117 data_idelay_inc : in ((ReadEnable - 1) downto 0);
00118 data_idelay_ce : in ((ReadEnable - 1) downto 0);
00119 data_idelay_rst : in ((ReadEnable - 1) downto 0);
00120 wr_data_rise : in ((data_width -1) downto 0);
00121 wr_data_fall : in ((data_width -1) downto 0);
00122 wr_en : in ;
00123 rd_data_rise : out ((data_width -1) downto 0);
00124 rd_data_fall : out ((data_width -1) downto 0);
00125 mask_data_rise : in ((data_mask_width -1) downto 0);
00126 mask_data_fall : in ((data_mask_width -1) downto 0);
00127 DDR_DQ : inout ((data_width -1) downto 0);
00128 DDR_DQS : inout ((data_strobe_width -1) downto 0);
00129 DDR_DM : out ((data_mask_width -1) downto 0)
00130 );
00131 end component;
00132
00133 component mem_interface_top_controller_iobs_0
00134 port ( ctrl_ddr_address : in ((row_address - 1) downto 0);
00135 ctrl_ddr_ba : in ((bank_address - 1) downto 0);
00136 ctrl_ddr_ras_L : in ;
00137 ctrl_ddr_cas_L : in ;
00138 ctrl_ddr_we_L : in ;
00139 ctrl_ddr_cs_L : in ;
00140 ctrl_ddr_cke : in ;
00141 DDR_ADDRESS : out ((row_address - 1) downto 0);
00142 DDR_BA : out ((bank_address - 1) downto 0);
00143 DDR_RAS_L : out ;
00144 DDR_CAS_L : out ;
00145 DDR_WE_L : out ;
00146 DDR_CKE : out ;
00147 ddr_cs_L : out
00148 );
00149 end component;
00150
00151 begin
00152
00153 infrastructure_iobs_00: mem_interface_top_infrastructure_iobs_0 port map
00154 ( CLK => CLK,
00155 DDR_CK => DDR_CK,
00156 DDR_CK_N => DDR_CK_N
00157 );
00158
00159 data_path_iobs_00: mem_interface_top_data_path_iobs_0 port map
00160 ( CLK => CLK,
00161 CLK90 => CLK90,
00162 CAL_CLK => CAL_CLK,
00163 RESET0 => RESET0,
00164 RESET90 => RESET90,
00165 dqs_idelay_inc => dqs_idelay_inc,
00166 dqs_idelay_ce => dqs_idelay_ce,
00167 dqs_idelay_rst => dqs_idelay_rst,
00168 dqs_rst => dqs_rst,
00169 dqs_en => dqs_en,
00170 dqs_delayed => dqs_delayed,
00171 data_idelay_inc => data_idelay_inc,
00172 data_idelay_ce => data_idelay_ce,
00173 data_idelay_rst => data_idelay_rst,
00174 wr_data_rise => wr_data_rise,
00175 wr_data_fall => wr_data_fall,
00176 wr_en => wr_en,
00177 rd_data_rise => rd_data_rise,
00178 rd_data_fall => rd_data_fall,
00179 mask_data_rise => mask_data_rise,
00180 mask_data_fall => mask_data_fall,
00181 DDR_DQ => DDR_DQ,
00182 DDR_DQS => DDR_DQS,
00183 DDR_DM => DDR_DM
00184 );
00185
00186 controller_iobs_00: mem_interface_top_controller_iobs_0 port map
00187 ( ctrl_ddr_address => ctrl_ddr_address,
00188 ctrl_ddr_ba => ctrl_ddr_ba,
00189 ctrl_ddr_ras_L => ctrl_ddr_ras_L,
00190 ctrl_ddr_cas_L => ctrl_ddr_cas_L,
00191 ctrl_ddr_we_L => ctrl_ddr_we_L,
00192 ctrl_ddr_cs_L => ctrl_ddr_cs_L,
00193 ctrl_ddr_cke => ctrl_ddr_cke,
00194 DDR_ADDRESS => DDR_ADDRESS,
00195 DDR_BA => DDR_BA,
00196 DDR_RAS_L => DDR_RAS_L,
00197 DDR_CAS_L => DDR_CAS_L,
00198 DDR_WE_L => DDR_WE_L,
00199 DDR_CKE => DDR_CKE,
00200 ddr_cs_L => ddr_cs_L
00201 );
00202
00203 end arch;