13 use IEEE.STD_LOGIC_1164.
all;
14 use IEEE.NUMERIC_STD.
all;
23 IN_Seed : in std_logic_vector(1 downto 0);
24 IN_UpNotDown : in std_logic;
25 IN_Towers : in TriggerTowers(8 downto 0);
27 OUT_Energy_L1 : out DataWords(9 downto 0);
28 OUT_Energy_L2 : out DataWords(9 downto 0);
29 OUT_Energy_L0 : out DataWords(5 downto 0);
30 OUT_Energy_L3 : out DataWords(5 downto 0);
31 OUT_Energy_HAD : out DataWords(5 downto 0);
33 OUT_JetCoreData : out DataWords(5 downto 0);
34 OUT_JetEnvData : out DataWords(11 downto 0)
40 signal Selector : std_logic_vector(2 downto 0);
41 signal ShiftTowers : TriggerTowers(8 downto 0) := (others => ZERO_TRIGGER_TOWER);
42 signal ShiftTowers2 : TriggerTowers(8 downto 0) := (others => ZERO_TRIGGER_TOWER);
45 signal OutEnergy_L0 : DataWords(OUT_Energy_L0'range) := (others => (others => '0'));
46 signal OutEnergy_L1 : DataWords(OUT_Energy_L1'range) := (others => (others => '0'));
47 signal OutEnergy_L2 : DataWords(OUT_Energy_L2'range) := (others => (others => '0'));
48 signal OutEnergy_L3 : DataWords(OUT_Energy_L3'range) := (others => (others => '0'));
49 signal OutEnergy_HAD : DataWords(OUT_Energy_HAD'range) := (others => (others => '0'));
51 signal OutJetCoreData : DataWords(OUT_JetCoreData'range) := (others => (others => '0'));
52 signal OutJetEnvData : DataWords(OUT_JetEnvData'range) := (others => (others => '0'));
56 Selector <= IN_UpNotDown & IN_Seed;
60 if rising_edge(CLK) then
62 ShiftTowers2 <= IN_Towers;
63 ShiftTowers <= ShiftTowers2;
73 OutEnergy_L0 <= (1 => ShiftTowers(4).Layer0(0), others => x"0000");
75 OutEnergy_L3 <= (2 => ShiftTowers(5).Layer3(0), 1 => ShiftTowers(4).Layer3(0), 0 => ShiftTowers(3).Layer3(0),
76 5 => ShiftTowers(8).Layer3(0), 4 => ShiftTowers(7).Layer3(0), 3 => ShiftTowers(6).Layer3(0));
78 OutEnergy_HAD <= (2 => ShiftTowers(5).Hadron(0), 1 => ShiftTowers(4).Hadron(0), 0 => ShiftTowers(3).Hadron(0),
79 5 => ShiftTowers(8).Hadron(0), 4 => ShiftTowers(7).Hadron(0), 3 => ShiftTowers(6).Hadron(0));
82 OutEnergy_L0 <= (1 => ShiftTowers(4).Layer0(0), others => x"0000");
84 OutEnergy_L3 <= (2 => ShiftTowers(5).Layer3(0), 1 => ShiftTowers(4).Layer3(0), 0 => ShiftTowers(3).Layer3(0),
85 5 => ShiftTowers(2).Layer3(0), 4 => ShiftTowers(1).Layer3(0), 3 => ShiftTowers(0).Layer3(0));
87 OutEnergy_HAD <= (2 => ShiftTowers(5).Hadron(0), 1 => ShiftTowers(4).Hadron(0), 0 => ShiftTowers(3).Hadron(0),
88 5 => ShiftTowers(2).Hadron(0), 4 => ShiftTowers(1).Hadron(0), 3 => ShiftTowers(0).Hadron(0));
97 OutEnergy_L1 <= (4 downto 2 => ShiftTowers(4).Layer1(2 downto 0), 1 downto 0 => ShiftTowers(3).Layer1(3 downto 2),
98 9 downto 7 => ShiftTowers(7).Layer1(2 downto 0), 6 downto 5 => ShiftTowers(6).Layer1(3 downto 2));
100 OutEnergy_L1 <= (4 downto 1 => ShiftTowers(4).Layer1, 0 => ShiftTowers(3).Layer1(3),
101 9 downto 6 => ShiftTowers(7).Layer1, 5 => ShiftTowers(6).Layer1(3));
103 OutEnergy_L1 <= (3 downto 0 => ShiftTowers(4).Layer1, 4 => ShiftTowers(5).Layer1(0),
104 8 downto 5 => ShiftTowers(7).Layer1, 9 => ShiftTowers(8).Layer1(0));
106 OutEnergy_L1 <= (2 downto 0 => ShiftTowers(4).Layer1(3 downto 1), 4 downto 3 => ShiftTowers(5).Layer1(1 downto 0),
107 7 downto 5 => ShiftTowers(7).Layer1(3 downto 1), 9 downto 8 => ShiftTowers(8).Layer1(1 downto 0));
109 OutEnergy_L1 <= (4 downto 2 => ShiftTowers(4).Layer1(2 downto 0), 1 downto 0 => ShiftTowers(3).Layer1(3 downto 2),
110 9 downto 7 => ShiftTowers(1).Layer1(2 downto 0), 6 downto 5 => ShiftTowers(0).Layer1(3 downto 2));
112 OutEnergy_L1 <= (4 downto 1 => ShiftTowers(4).Layer1, 0 => ShiftTowers(3).Layer1(3),
113 9 downto 6 => ShiftTowers(1).Layer1, 5 => ShiftTowers(0).Layer1(3));
115 OutEnergy_L1 <= (3 downto 0 => ShiftTowers(4).Layer1, 4 => ShiftTowers(5).Layer1(0),
116 8 downto 5 => ShiftTowers(1).Layer1, 9 => ShiftTowers(2).Layer1(0));
118 OutEnergy_L1 <= (2 downto 0 => ShiftTowers(4).Layer1(3 downto 1), 4 downto 3 => ShiftTowers(5).Layer1(1 downto 0),
119 7 downto 5 => ShiftTowers(1).Layer1(3 downto 1), 9 downto 8 => ShiftTowers(2).Layer1(1 downto 0));
127 OutEnergy_L2 <= (4 downto 2 => ShiftTowers(4).Layer2(2 downto 0), 1 downto 0 => ShiftTowers(3).Layer2(3 downto 2),
128 9 downto 7 => ShiftTowers(7).Layer2(2 downto 0), 6 downto 5 => ShiftTowers(6).Layer2(3 downto 2));
130 OutEnergy_L2 <= (4 downto 1 => ShiftTowers(4).Layer2, 0 => ShiftTowers(3).Layer2(3),
131 9 downto 6 => ShiftTowers(7).Layer2, 5 => ShiftTowers(6).Layer2(3));
133 OutEnergy_L2 <= (3 downto 0 => ShiftTowers(4).Layer2, 4 => ShiftTowers(5).Layer2(0),
134 8 downto 5 => ShiftTowers(7).Layer2, 9 => ShiftTowers(8).Layer2(0));
136 OutEnergy_L2 <= (2 downto 0 => ShiftTowers(4).Layer2(3 downto 1), 4 downto 3 => ShiftTowers(5).Layer2(1 downto 0),
137 7 downto 5 => ShiftTowers(7).Layer2(3 downto 1), 9 downto 8 => ShiftTowers(8).Layer2(1 downto 0));
139 OutEnergy_L2 <= (4 downto 2 => ShiftTowers(4).Layer2(2 downto 0), 1 downto 0 => ShiftTowers(3).Layer2(3 downto 2),
140 9 downto 7 => ShiftTowers(1).Layer2(2 downto 0), 6 downto 5 => ShiftTowers(0).Layer2(3 downto 2));
142 OutEnergy_L2 <= (4 downto 1 => ShiftTowers(4).Layer2, 0 => ShiftTowers(3).Layer2(3),
143 9 downto 6 => ShiftTowers(1).Layer2, 5 => ShiftTowers(0).Layer2(3));
145 OutEnergy_L2 <= (3 downto 0 => ShiftTowers(4).Layer2, 4 => ShiftTowers(5).Layer2(0),
146 8 downto 5 => ShiftTowers(1).Layer2, 9 => ShiftTowers(2).Layer2(0));
148 OutEnergy_L2 <= (2 downto 0 => ShiftTowers(4).Layer2(3 downto 1), 4 downto 3 => ShiftTowers(5).Layer2(1 downto 0),
149 7 downto 5 => ShiftTowers(1).Layer2(3 downto 1), 9 downto 8 => ShiftTowers(2).Layer2(1 downto 0));
160 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3),
161 3 => ShiftTowers(7).Layer2(1), 4 => ShiftTowers(7).Layer2(0), 5 => ShiftTowers(6).Layer2(3));
163 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(2), 1 => ShiftTowers(4).Layer2(1), 2 => ShiftTowers(4).Layer2(0),
164 3 => ShiftTowers(7).Layer2(2), 4 => ShiftTowers(7).Layer2(1), 5 => ShiftTowers(7).Layer2(0));
166 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(1),
167 3 => ShiftTowers(7).Layer2(3), 4 => ShiftTowers(7).Layer2(2), 5 => ShiftTowers(7).Layer2(1));
169 OutJetCoreData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(4).Layer2(2),
170 3 => ShiftTowers(8).Layer2(0), 4 => ShiftTowers(7).Layer2(3), 5 => ShiftTowers(7).Layer2(2));
172 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3),
173 3 => ShiftTowers(1).Layer2(1), 4 => ShiftTowers(1).Layer2(0), 5 => ShiftTowers(0).Layer2(3));
175 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(2), 1 => ShiftTowers(4).Layer2(1), 2 => ShiftTowers(4).Layer2(0),
176 3 => ShiftTowers(1).Layer2(2), 4 => ShiftTowers(1).Layer2(1), 5 => ShiftTowers(1).Layer2(0));
178 OutJetCoreData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(1),
179 3 => ShiftTowers(1).Layer2(3), 4 => ShiftTowers(1).Layer2(2), 5 => ShiftTowers(1).Layer2(1));
181 OutJetCoreData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(4).Layer2(2),
182 3 => ShiftTowers(2).Layer2(0), 4 => ShiftTowers(1).Layer2(3), 5 => ShiftTowers(1).Layer2(2));
193 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1), 4 => ShiftTowers(3).Layer2(0), 5 => ShiftTowers(5).Layer2(0),
194 6 => ShiftTowers(7).Layer2(3), 7 => ShiftTowers(7).Layer2(2), 8 => ShiftTowers(6).Layer2(2), 9 => ShiftTowers(6).Layer2(1), 10 => ShiftTowers(6).Layer2(0), 11 => ShiftTowers(8).Layer2(0)
198 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(3).Layer2(3), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1), 4 => ShiftTowers(5).Layer2(1), 5 => ShiftTowers(5).Layer2(0),
199 6 => ShiftTowers(7).Layer2(3), 7 => ShiftTowers(6).Layer2(3), 8 => ShiftTowers(6).Layer2(2), 9 => ShiftTowers(6).Layer2(1), 10 => ShiftTowers(8).Layer2(1), 11 => ShiftTowers(8).Layer2(0)
203 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(0), 1 => ShiftTowers(3).Layer2(2), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(5).Layer2(2), 4 => ShiftTowers(5).Layer2(1), 5 => ShiftTowers(5).Layer2(0),
204 6 => ShiftTowers(7).Layer2(0), 7 => ShiftTowers(6).Layer2(2), 8 => ShiftTowers(6).Layer2(3), 9 => ShiftTowers(8).Layer2(2), 10 => ShiftTowers(8).Layer2(1), 11 => ShiftTowers(8).Layer2(0)
208 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(5).Layer2(3), 4 => ShiftTowers(5).Layer2(2), 5 => ShiftTowers(5).Layer2(1),
209 6 => ShiftTowers(7).Layer2(1), 7 => ShiftTowers(7).Layer2(0), 8 => ShiftTowers(6).Layer2(3), 9 => ShiftTowers(8).Layer2(3), 10 => ShiftTowers(8).Layer2(2), 11 => ShiftTowers(8).Layer2(1)
213 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1), 4 => ShiftTowers(3).Layer2(0), 5 => ShiftTowers(5).Layer2(0),
214 6 => ShiftTowers(1).Layer2(3), 7 => ShiftTowers(1).Layer2(2), 8 => ShiftTowers(0).Layer2(2), 9 => ShiftTowers(0).Layer2(1), 10 => ShiftTowers(0).Layer2(0), 11 => ShiftTowers(2).Layer2(0)
218 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(3).Layer2(3), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1), 4 => ShiftTowers(5).Layer2(1), 5 => ShiftTowers(5).Layer2(0),
219 6 => ShiftTowers(1).Layer2(3), 7 => ShiftTowers(0).Layer2(3), 8 => ShiftTowers(0).Layer2(2), 9 => ShiftTowers(0).Layer2(1), 10 => ShiftTowers(2).Layer2(1), 11 => ShiftTowers(2).Layer2(0)
223 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(0), 1 => ShiftTowers(3).Layer2(2), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(5).Layer2(2), 4 => ShiftTowers(5).Layer2(1), 5 => ShiftTowers(5).Layer2(0),
224 6 => ShiftTowers(1).Layer2(0), 7 => ShiftTowers(0).Layer2(2), 8 => ShiftTowers(0).Layer2(3), 9 => ShiftTowers(2).Layer2(2), 10 => ShiftTowers(2).Layer2(1), 11 => ShiftTowers(2).Layer2(0)
228 OutJetEnvData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(5).Layer2(3), 4 => ShiftTowers(5).Layer2(2), 5 => ShiftTowers(5).Layer2(1),
229 6 => ShiftTowers(1).Layer2(1), 7 => ShiftTowers(1).Layer2(0), 8 => ShiftTowers(0).Layer2(3), 9 => ShiftTowers(2).Layer2(3), 10 => ShiftTowers(2).Layer2(2), 11 => ShiftTowers(2).Layer2(1)
239 OUT_Energy_L0 <= OutEnergy_L0;
240 OUT_Energy_L1 <= OutEnergy_L1;
241 OUT_Energy_L2 <= OutEnergy_L2;
242 OUT_Energy_L3 <= OutEnergy_L3;
243 OUT_Energy_HAD <= OutEnergy_HAD;
245 OUT_JetEnvData <= OutJetEnvData;
246 OUT_JetCoreData <= OutJetCoreData;