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_data_path_0.vhd,v $
00015 --* $Revision: 1.3.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_data_path_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 -- Description :
00040 -------------------------------------------------------------------------------
00041
00042
00043 library ieee;
00044
00045 use ieee.std_logic_1164.all;
00046
00047 use ieee.std_logic_unsigned.all;
00048
00049 use ieee.numeric_std.all;
00050 library work;
00051 use work.ddr2_mem_parameters_0.all;
00052 -- pragma translate_off
00053
00054 library unisim;
00055
00056 use unisim.vcomponents.all;
00057 -- pragma translate_on
00058
00059
00060
00061
00062
00063 entity ddr2_mem_data_path_0 is
00064 port (
00065 CLK : in ;
00066 CLK90 : in ;
00067 CAL_CLK : in ;
00068 RESET0 : in ;
00069 RESET90 : in ;
00070 RESET_CAL_CLK : in ;
00071 CTRL_DUMMYREAD_START : in ;
00072 idelay_ctrl_rdy : in ;
00073 WDF_DATA : in (dq_width*2-1 downto 0);
00074 MASK_DATA : in (dm_width*2-1 downto 0);
00075 CTRL_WREN : in ;
00076 CTRL_DQS_RST : in ;
00077 CTRL_DQS_EN : in ;
00078 dqs_delayed : in (data_strobe_width-1 downto 0);
00079 CTRL_DUMMY_WR_SEL : in ;
00080 dummy_write_flag : in ;
00081 wr_data_rise : out (data_width-1 downto 0);
00082 wr_data_fall : out (data_width-1 downto 0);
00083 mask_data_rise : out (data_mask_width-1 downto 0);
00084 mask_data_fall : out (data_mask_width-1 downto 0);
00085 wr_en : out ;
00086 dqs_rst : out ;
00087 dqs_en : out ;
00088 dqs_idelay_inc : out (ReadEnable-1 downto 0);
00089 dqs_idelay_ce : out (ReadEnable-1 downto 0);
00090 dqs_idelay_rst : out (ReadEnable-1 downto 0);
00091 data_idelay_inc : out (ReadEnable-1 downto 0);
00092 data_idelay_ce : out (ReadEnable-1 downto 0);
00093 data_idelay_rst : out (ReadEnable-1 downto 0);
00094 SEL_DONE : out
00095 );
00096 end entity;
00097
00098
00099
00100
00101
00102 architecture arc_data_path of ddr2_mem_data_path_0 is
00103
00104
00105 component ddr2_mem_data_write_0
00106 port (
00107 CLK : in ;
00108 CLK90 : in ;
00109 RESET0 : in ;
00110 RESET90 : in ;
00111 WDF_DATA : in (dq_width*2-1 downto 0);
00112 MASK_DATA : in (dm_width*2-1 downto 0);
00113 CTRL_WREN : in ;
00114 CTRL_DQS_RST : in ;
00115 CTRL_DQS_EN : in ;
00116 CTRL_DUMMY_WR_SEL : in ;
00117 wr_data_fall : out (dq_width-1 downto 0);
00118 wr_data_rise : out (dq_width-1 downto 0);
00119 mask_data_fall : out (data_mask_width-1 downto 0);
00120 mask_data_rise : out (data_mask_width-1 downto 0);
00121 wr_en : out ;
00122 dqs_rst : out ;
00123 dqs_en : out
00124 );
00125 end component;
00126
00127
00128 component ddr2_mem_tap_logic_0
00129 port (
00130 CLK : in ;
00131 CAL_CLK : in ;
00132 RESET0 : in ;
00133 RESET_CAL_CLK : in ;
00134 CTRL_DUMMYREAD_START : in ;
00135 idelay_ctrl_rdy : in ;
00136 dqs_delayed : in (data_strobe_width-1 downto 0);
00137 dqs_idelay_inc : out (ReadEnable-1 downto 0);
00138 dqs_idelay_ce : out (ReadEnable-1 downto 0);
00139 dqs_idelay_rst : out (ReadEnable-1 downto 0);
00140 data_idelay_inc : out (ReadEnable-1 downto 0);
00141 data_idelay_ce : out (ReadEnable-1 downto 0);
00142 data_idelay_rst : out (ReadEnable-1 downto 0);
00143 SEL_DONE : out
00144 );
00145 end component;
00146
00147 begin
00148
00149
00150 data_write_10 : ddr2_mem_data_write_0
00151 port map (
00152 CLK => CLK,
00153 CLK90 => CLK90,
00154 RESET0 => RESET0,
00155 RESET90 => RESET90,
00156 WDF_DATA => WDF_DATA,
00157 MASK_DATA => MASK_DATA,
00158 CTRL_WREN => CTRL_WREN,
00159 CTRL_DQS_RST => CTRL_DQS_RST,
00160 CTRL_DQS_EN => CTRL_DQS_EN,
00161 CTRL_DUMMY_WR_SEL => CTRL_DUMMY_WR_SEL,
00162 dqs_rst => dqs_rst,
00163 dqs_en => dqs_en,
00164 wr_en => wr_en,
00165 wr_data_rise => wr_data_rise,
00166 wr_data_fall => wr_data_fall,
00167 mask_data_rise => mask_data_rise,
00168 mask_data_fall => mask_data_fall
00169 );
00170
00171
00172 tap_logic_00 : ddr2_mem_tap_logic_0
00173 port map (
00174 CLK => CLK,
00175 CAL_CLK => CAL_CLK,
00176 RESET0 => RESET0,
00177 RESET_CAL_CLK => RESET_CAL_CLK,
00178 CTRL_DUMMYREAD_START => CTRL_DUMMYREAD_START,
00179 idelay_ctrl_rdy => idelay_ctrl_rdy,
00180 dqs_delayed => dqs_delayed,
00181 dqs_idelay_inc => dqs_idelay_inc,
00182 dqs_idelay_ce => dqs_idelay_ce,
00183 dqs_idelay_rst => dqs_idelay_rst,
00184 data_idelay_inc => data_idelay_inc,
00185 data_idelay_ce => data_idelay_ce,
00186 data_idelay_rst => data_idelay_rst,
00187 SEL_DONE => SEL_DONE
00188 );
00189
00190 end arc_data_path;