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/coin/Attic/intime.vhd,v $
00015 --* $Revision: 1.1.2.6 $ *
00016 --* $Name: dev $ *
00017 --* $Author: mniegl $ *
00018 --* $Date: 2008/11/03 17:57:42 $ *
00019
00020
00021
00022 --* *
00023 --**************************************************************
00024
00025 library ieee;
00026
00027 use ieee.std_logic_1164.all;
00028
00029
00030
00031
00032
00033 entity intime is
00034
00035 port (
00036 CLK : in ;
00037 UPPER_BOUND_A : in (5 downto 0) := "101110";
00038 LOWER_BOUND_A : in (5 downto 0) := "010000";
00039 UPPER_BOUND_C : in (5 downto 0) := "101110";
00040 LOWER_BOUND_C : in (5 downto 0) := "010000";
00041 IRENA1 : in (7 downto 0);
00042 EWA1 : in (7 downto 0);
00043 HEINZ1 : in (7 downto 0);
00044 ANDREJ1 : in (7 downto 0);
00045 MARKO1 : in (7 downto 0);
00046 WILLIAM1 : in (7 downto 0);
00047 HARRIS1 : in (7 downto 0);
00048 HELMUT1 : in (7 downto 0);
00049 IRENA2 : in (7 downto 0);
00050 EWA2 : in (7 downto 0);
00051 HEINZ2 : in (7 downto 0);
00052 ANDREJ2 : in (7 downto 0);
00053 MARKO2 : in (7 downto 0);
00054 WILLIAM2 : in (7 downto 0);
00055 HARRIS2 : in (7 downto 0);
00056 HELMUT2 : in (7 downto 0);
00057 S_IRENA1 : in ;
00058 S_EWA1 : in ;
00059 S_HEINZ1 : in ;
00060 S_ANDREJ1 : in ;
00061 S_MARKO1 : in ;
00062 S_WILLIAM1 : in ;
00063 S_HARRIS1 : in ;
00064 S_HELMUT1 : in ;
00065 S_IRENA2 : in ;
00066 S_EWA2 : in ;
00067 S_HEINZ2 : in ;
00068 S_ANDREJ2 : in ;
00069 S_MARKO2 : in ;
00070 S_WILLIAM2 : in ;
00071 S_HARRIS2 : in ;
00072 S_HELMUT2 : in ;
00073 IRENA1_O : out (7 downto 0);
00074 EWA1_O : out (7 downto 0);
00075 HEINZ1_O : out (7 downto 0);
00076 ANDREJ1_O : out (7 downto 0);
00077 MARKO1_O : out (7 downto 0);
00078 WILLIAM1_O : out (7 downto 0);
00079 HARRIS1_O : out (7 downto 0);
00080 HELMUT1_O : out (7 downto 0);
00081 IRENA2_O : out (7 downto 0);
00082 EWA2_O : out (7 downto 0);
00083 HEINZ2_O : out (7 downto 0);
00084 ANDREJ2_O : out (7 downto 0);
00085 MARKO2_O : out (7 downto 0);
00086 WILLIAM2_O : out (7 downto 0);
00087 HARRIS2_O : out (7 downto 0);
00088 HELMUT2_O : out (7 downto 0);
00089 S_IRENA1_O : out ;
00090 S_EWA1_O : out ;
00091 S_HEINZ1_O : out ;
00092 S_ANDREJ1_O : out ;
00093 S_MARKO1_O : out ;
00094 S_WILLIAM1_O : out ;
00095 S_HARRIS1_O : out ;
00096 S_HELMUT1_O : out ;
00097 S_IRENA2_O : out ;
00098 S_EWA2_O : out ;
00099 S_HEINZ2_O : out ;
00100 S_ANDREJ2_O : out ;
00101 S_MARKO2_O : out ;
00102 S_WILLIAM2_O : out ;
00103 S_HARRIS2_O : out ;
00104 S_HELMUT2_O : out
00105 );
00106
00107 end intime;
00108
00109
00110
00111
00112
00113 architecture intime_arc of intime is
00114
00115 --*************************** Signal Declarations *****************************
00116 signal hit_irena1 : := '0';
00117 signal hit_ewa1 : := '0';
00118 signal hit_heinz1 : := '0';
00119 signal hit_andrej1 : := '0';
00120 signal hit_marko1 : := '0';
00121 signal hit_william1 : := '0';
00122 signal hit_harris1 : := '0';
00123 signal hit_helmut1 : := '0';
00124 signal hit_irena2 : := '0';
00125 signal hit_ewa2 : := '0';
00126 signal hit_heinz2 : := '0';
00127 signal hit_andrej2 : := '0';
00128 signal hit_marko2 : := '0';
00129 signal hit_william2 : := '0';
00130 signal hit_harris2 : := '0';
00131 signal hit_helmut2 : := '0';
00132 signal irena1_bc : (5 downto 0) := (others => '0');
00133 signal ewa1_bc : (5 downto 0) := (others => '0');
00134 signal heinz1_bc : (5 downto 0) := (others => '0');
00135 signal andrej1_bc : (5 downto 0) := (others => '0');
00136 signal marko1_bc : (5 downto 0) := (others => '0');
00137 signal william1_bc : (5 downto 0) := (others => '0');
00138 signal harris1_bc : (5 downto 0) := (others => '0');
00139 signal helmut1_bc : (5 downto 0) := (others => '0');
00140 signal irena2_bc : (5 downto 0) := (others => '0');
00141 signal ewa2_bc : (5 downto 0) := (others => '0');
00142 signal heinz2_bc : (5 downto 0) := (others => '0');
00143 signal andrej2_bc : (5 downto 0) := (others => '0');
00144 signal marko2_bc : (5 downto 0) := (others => '0');
00145 signal william2_bc : (5 downto 0) := (others => '0');
00146 signal harris2_bc : (5 downto 0) := (others => '0');
00147 signal helmut2_bc : (5 downto 0) := (others => '0');
00148 signal irena1_xy : (5 downto 0) := (others => '0');
00149 signal ewa1_xy : (5 downto 0) := (others => '0');
00150 signal heinz1_xy : (5 downto 0) := (others => '0');
00151 signal andrej1_xy : (5 downto 0) := (others => '0');
00152 signal marko1_xy : (5 downto 0) := (others => '0');
00153 signal william1_xy : (5 downto 0) := (others => '0');
00154 signal harris1_xy : (5 downto 0) := (others => '0');
00155 signal helmut1_xy : (5 downto 0) := (others => '0');
00156 signal irena2_xy : (5 downto 0) := (others => '0');
00157 signal ewa2_xy : (5 downto 0) := (others => '0');
00158 signal heinz2_xy : (5 downto 0) := (others => '0');
00159 signal andrej2_xy : (5 downto 0) := (others => '0');
00160 signal marko2_xy : (5 downto 0) := (others => '0');
00161 signal william2_xy : (5 downto 0) := (others => '0');
00162 signal harris2_xy : (5 downto 0) := (others => '0');
00163 signal helmut2_xy : (5 downto 0) := (others => '0');
00164
00165 --************************** Component Declarations ***************************
00166
00167
00168 component timewindow
00169 port(
00170 CLK : in ;
00171 UPPER : in (5 downto 0) := "101110";
00172 LOWER : in (5 downto 0) := "010000";
00173 VAL_IN : in (5 downto 0);
00174 VAL_OUT : out (5 downto 0);
00175 IN_TIME : out
00176 );
00177 end component;
00178
00179 --*************************************************************************
00180 --* main code
00181 --*************************************************************************
00182 begin -- intime_arc
00183
00184 -------------------------------------------------------------------------------
00185 -- input assignments
00186 -------------------------------------------------------------------------------
00187 irena1_bc <= IRENA1(5 downto 0) when S_IRENA1 = '1' else (others => '0');
00188 ewa1_bc <= EWA1(5 downto 0) when S_EWA1 = '1' else (others => '0');
00189 heinz1_bc <= HEINZ1(5 downto 0) when S_HEINZ1 = '1' else (others => '0');
00190 andrej1_bc <= ANDREJ1(5 downto 0) when S_ANDREJ1 = '1' else (others => '0');
00191 marko1_bc <= MARKO1(5 downto 0) when S_MARKO1 = '1' else (others => '0');
00192 william1_bc <= WILLIAM1(5 downto 0) when S_WILLIAM1 = '1' else (others => '0');
00193 harris1_bc <= HARRIS1(5 downto 0) when S_HARRIS1 = '1' else (others => '0');
00194 helmut1_bc <= HELMUT1(5 downto 0) when S_HELMUT1 = '1' else (others => '0');
00195
00196 irena2_bc <= IRENA2(5 downto 0) when S_IRENA2 = '1' else (others => '0');
00197 ewa2_bc <= EWA2(5 downto 0) when S_EWA2 = '1' else (others => '0');
00198 heinz2_bc <= HEINZ2(5 downto 0) when S_HEINZ2 = '1' else (others => '0');
00199 andrej2_bc <= ANDREJ2(5 downto 0) when S_ANDREJ2 = '1' else (others => '0');
00200 marko2_bc <= MARKO2(5 downto 0) when S_MARKO2 = '1' else (others => '0');
00201 william2_bc <= WILLIAM2(5 downto 0) when S_WILLIAM2 = '1' else (others => '0');
00202 harris2_bc <= HARRIS2(5 downto 0) when S_HARRIS2 = '1' else (others => '0');
00203 helmut2_bc <= HELMUT2(5 downto 0) when S_HELMUT2 = '1' else (others => '0');
00204
00205 -------------------------------------------------------------------------------
00206 -- time cuts
00207 -------------------------------------------------------------------------------
00208 Irena_1 : timewindow
00209 port map
00210 (
00211 CLK => CLK ,
00212 UPPER => UPPER_BOUND_C,
00213 LOWER => LOWER_BOUND_C,
00214 VAL_IN => irena1_bc,
00215 VAL_OUT => irena1_xy,
00216 IN_TIME => hit_irena1
00217 );
00218 Irena_2 : timewindow
00219 port map
00220 (
00221 CLK => CLK ,
00222 UPPER => UPPER_BOUND_C,
00223 LOWER => LOWER_BOUND_C,
00224 VAL_IN => irena2_bc,
00225 VAL_OUT => irena2_xy,
00226 IN_TIME => hit_irena2
00227 );
00228
00229 ewa_1 : timewindow
00230 port map
00231 (
00232 CLK => CLK ,
00233 UPPER => UPPER_BOUND_C,
00234 LOWER => LOWER_BOUND_C,
00235 VAL_IN => ewa1_bc,
00236 VAL_OUT => ewa1_xy,
00237 IN_TIME => hit_ewa1
00238 );
00239 ewa_2 : timewindow
00240 port map
00241 (
00242 CLK => CLK ,
00243 UPPER => UPPER_BOUND_C,
00244 LOWER => LOWER_BOUND_C,
00245 VAL_IN => ewa2_bc,
00246 VAL_OUT => ewa2_xy,
00247 IN_TIME => hit_ewa2
00248 );
00249
00250 heinz_1 : timewindow
00251 port map
00252 (
00253 CLK => CLK ,
00254 UPPER => UPPER_BOUND_C,
00255 LOWER => LOWER_BOUND_C,
00256 VAL_IN => heinz1_bc,
00257 VAL_OUT => heinz1_xy,
00258 IN_TIME => hit_heinz1
00259 );
00260 heinz_2 : timewindow
00261 port map
00262 (
00263 CLK => CLK ,
00264 UPPER => UPPER_BOUND_C,
00265 LOWER => LOWER_BOUND_C,
00266 VAL_IN => heinz2_bc,
00267 VAL_OUT => heinz2_xy,
00268 IN_TIME => hit_heinz2
00269 );
00270
00271 andrej_1 : timewindow
00272 port map
00273 (
00274 CLK => CLK ,
00275 UPPER => UPPER_BOUND_C,
00276 LOWER => LOWER_BOUND_C,
00277 VAL_IN => andrej1_bc ,
00278 VAL_OUT => andrej1_xy,
00279 IN_TIME => hit_andrej1
00280 );
00281 andrej_2 : timewindow
00282 port map
00283 (
00284 CLK => CLK ,
00285 UPPER => UPPER_BOUND_C,
00286 LOWER => LOWER_BOUND_C,
00287 VAL_IN => andrej2_bc ,
00288 VAL_OUT => andrej2_xy,
00289 IN_TIME => hit_andrej2
00290 );
00291
00292 marko_1 : timewindow
00293 port map
00294 (
00295 CLK => CLK ,
00296 UPPER => UPPER_BOUND_A,
00297 LOWER => LOWER_BOUND_A,
00298 VAL_IN => marko1_bc,
00299 VAL_OUT => marko1_xy,
00300 IN_TIME => hit_marko1
00301 );
00302 marko_2 : timewindow
00303 port map
00304 (
00305 CLK => CLK ,
00306 UPPER => UPPER_BOUND_A,
00307 LOWER => LOWER_BOUND_A,
00308 VAL_IN => marko2_bc,
00309 VAL_OUT => marko2_xy,
00310 IN_TIME => hit_marko2
00311 );
00312
00313 william_1 : timewindow
00314 port map
00315 (
00316 CLK => CLK ,
00317 UPPER => UPPER_BOUND_A,
00318 LOWER => LOWER_BOUND_A,
00319 VAL_IN => william1_bc ,
00320 VAL_OUT => william1_xy ,
00321 IN_TIME => hit_william1
00322 );
00323 william_2 : timewindow
00324 port map
00325 (
00326 CLK => CLK ,
00327 UPPER => UPPER_BOUND_A,
00328 LOWER => LOWER_BOUND_A,
00329 VAL_IN => william2_bc ,
00330 VAL_OUT => william2_xy ,
00331 IN_TIME => hit_william2
00332 );
00333
00334 harris_1 : timewindow
00335 port map
00336 (
00337 CLK => CLK ,
00338 UPPER => UPPER_BOUND_A,
00339 LOWER => LOWER_BOUND_A,
00340 VAL_IN => harris1_bc ,
00341 VAL_OUT => harris1_xy,
00342 IN_TIME => hit_harris1
00343 );
00344 harris_2 : timewindow
00345 port map
00346 (
00347 CLK => CLK ,
00348 UPPER => UPPER_BOUND_A,
00349 LOWER => LOWER_BOUND_A,
00350 VAL_IN => harris2_bc ,
00351 VAL_OUT => harris2_xy,
00352 IN_TIME => hit_harris2
00353 );
00354
00355 helmut_1 : timewindow
00356 port map
00357 (
00358 CLK => CLK ,
00359 UPPER => UPPER_BOUND_A,
00360 LOWER => LOWER_BOUND_A,
00361 VAL_IN => helmut1_bc ,
00362 VAL_OUT => helmut1_xy,
00363 IN_TIME => hit_helmut1
00364 );
00365 helmut_2 : timewindow
00366 port map
00367 (
00368 CLK => CLK ,
00369 UPPER => UPPER_BOUND_A,
00370 LOWER => LOWER_BOUND_A,
00371 VAL_IN => helmut2_bc ,
00372 VAL_OUT => helmut2_xy,
00373 IN_TIME => hit_helmut2
00374 );
00375
00376 -------------------------------------------------------------------------------
00377 -- output assignments
00378 -------------------------------------------------------------------------------
00379 S_IRENA1_O <= hit_irena1;
00380 S_EWA1_O <= hit_ewa1;
00381 S_ANDREJ1_O <= hit_andrej1;
00382 S_HEINZ1_O <= hit_heinz1;
00383 S_MARKO1_O <= hit_marko1;
00384 S_WILLIAM1_O <= hit_william1;
00385 S_HELMUT1_O <= hit_helmut1;
00386 S_HARRIS1_O <= hit_harris1;
00387 S_IRENA2_O <= hit_irena2;
00388 S_EWA2_O <= hit_ewa2;
00389 S_ANDREJ2_O <= hit_andrej2;
00390 S_HEINZ2_O <= hit_heinz2;
00391 S_MARKO2_O <= hit_marko2;
00392 S_WILLIAM2_O <= hit_william2;
00393 S_HELMUT2_O <= hit_helmut2;
00394 S_HARRIS2_O <= hit_harris2;
00395 IRENA1_O <= "00" & irena1_xy when hit_irena1 = '1' else (others => '0');
00396 EWA1_O <= "00" & ewa1_xy when hit_ewa1 = '1' else (others => '0');
00397 ANDREJ1_O <= "00" & andrej1_xy when hit_andrej1 = '1' else (others => '0');
00398 HEINZ1_O <= "00" & heinz1_xy when hit_heinz1 = '1' else (others => '0');
00399 MARKO1_O <= "00" & marko1_xy when hit_marko1 = '1' else (others => '0');
00400 WILLIAM1_O <= "00" & william1_xy when hit_william1 = '1' else (others => '0');
00401 HARRIS1_O <= "00" & harris1_xy when hit_harris1 = '1' else (others => '0');
00402 HELMUT1_O <= "00" & helmut1_xy when hit_helmut1 = '1' else (others => '0');
00403 IRENA2_O <= "00" & irena2_xy when hit_irena2 = '1' else (others => '0');
00404 EWA2_O <= "00" & ewa2_xy when hit_ewa2 = '1' else (others => '0');
00405 ANDREJ2_O <= "00" & andrej2_xy when hit_andrej2 = '1' else (others => '0');
00406 HEINZ2_O <= "00" & heinz2_xy when hit_heinz2 = '1' else (others => '0');
00407 MARKO2_O <= "00" & marko2_xy when hit_marko2 = '1' else (others => '0');
00408 WILLIAM2_O <= "00" & william2_xy when hit_william2 = '1' else (others => '0');
00409 HARRIS2_O <= "00" & harris2_xy when hit_harris2 = '1' else (others => '0');
00410 HELMUT2_O <= "00" & helmut2_xy when hit_helmut2 = '1' else (others => '0');
00411
00412 end intime_arc;