13 use IEEE.STD_LOGIC_1164.
all;
14 use IEEE.NUMERIC_STD.
all;
23 IN_glob_Position : in AlgoRegister := (others => '0');
25 IN_Seed : in std_logic_vector(1 downto 0);
26 IN_UpNotDown : in std_logic;
27 IN_Towers : in TriggerTowers(8 downto 0);
29 OUT_EnergyL0 : out DataWords(1 downto 0);
30 OUT_EnergyL1 : out DataWords(5 downto 0);
31 OUT_EnergyL2 : out DataWords(5 downto 0);
32 OUT_EnergyL3 : out DataWords(1 downto 0);
34 OUT_REtaCoreData : out DataWords(5 downto 0);
35 OUT_REtaEnvData : out DataWords(14 downto 0);
37 OUT_WsCoreData : out DataWords(11 downto 0);
38 OUT_WsEnvData : out DataWords(14 downto 0);
40 OUT_HadCoreData : out DataWords(17 downto 0);
41 OUT_HadEnvDataL1 : out DataWords(5 downto 0);
42 OUT_HadEnvDataL2 : out DataWords(5 downto 0);
43 OUT_HadEnvDataL03 : out DataWords(1 downto 0)
49 signal Selector : std_logic_vector(2 downto 0);
50 signal ShiftTowers : TriggerTowers(8 downto 0) := (others => ZERO_TRIGGER_TOWER);
51 signal ShiftTowers2 : TriggerTowers(8 downto 0) := (others => ZERO_TRIGGER_TOWER);
54 signal OutEnergyL0 : DataWords(OUT_EnergyL0'range) := (others => (others => '0'));
55 signal OutEnergyL1 : DataWords(OUT_EnergyL1'range) := (others => (others => '0'));
56 signal OutEnergyL2 : DataWords(OUT_EnergyL2'range) := (others => (others => '0'));
57 signal OutEnergyL3 : DataWords(OUT_EnergyL3'range) := (others => (others => '0'));
59 signal OutREtaCoreData : DataWords(OUT_REtaCoreData'range) := (others => (others => '0'));
60 signal OutREtaEnvData : DataWords(OUT_REtaEnvData'range) := (others => (others => '0'));
62 signal OutWsCoreData : DataWords(OUT_WsCoreData'range) := (others => (others => '0'));
63 signal OutWsEnvData : DataWords(OUT_WsEnvData'range) := (others => (others => '0'));
65 signal OutHadCoreData : DataWords(OUT_HadCoreData'range) := (others => (others => '0'));
66 signal OutHadEnvDataL1 : DataWords(OUT_HadEnvDataL1'range) := (others => (others => '0'));
67 signal OutHadEnvDataL2 : DataWords(OUT_HadEnvDataL2'range) := (others => (others => '0'));
68 signal OutHadEnvDataL03 : DataWords(OUT_HadEnvDataL03'range) := (others => (others => '0'));
70 signal Edge : std_logic;
71 signal selector2 : std_logic_vector(1 downto 0);
74 Edge <= IN_glob_Position(EM_POSITION_ETA_ON_EDGE);
76 Selector <= IN_UpNotDown & IN_Seed;
77 Selector2 <= IN_UpNotDown & Edge;
81 if rising_edge(CLK) then
83 ShiftTowers2 <= IN_Towers;
84 ShiftTowers <= ShiftTowers2;
95 OutEnergyL0 <= (0 => ShiftTowers(4).Layer0(0), 1 => ShiftTowers(7).Layer0(0));
98 OutEnergyL0 <= (0 => ShiftTowers(4).Layer0(0), 1 => ShiftTowers(1).Layer0(0));
101 OutEnergyL0 <= (0 => ShiftTowers(4).Layer0(0), 1 => (others => '0'));
109 OutEnergyL1 <= (1 downto 0 => ShiftTowers(4).Layer1(1 downto 0), 2 => ShiftTowers(3).Layer1(3),
110 4 downto 3 => ShiftTowers(7).Layer1(1 downto 0), 5 => ShiftTowers(6).Layer1(3));
112 OutEnergyL1 <= (2 downto 0 => ShiftTowers(4).Layer1(2 downto 0),
113 5 downto 3 => ShiftTowers(7).Layer1(2 downto 0));
115 OutEnergyL1 <= (2 downto 0 => ShiftTowers(4).Layer1(3 downto 1),
116 5 downto 3 => ShiftTowers(7).Layer1(3 downto 1));
119 OutEnergyL1 <= (1 downto 0 => ShiftTowers(4).Layer1(3 downto 2), 2 => ShiftTowers(5).Layer1(0),
120 4 downto 3 => ShiftTowers(7).Layer1(3 downto 2), 5 => ShiftTowers(8).Layer1(0));
123 OutEnergyL1 <= (1 downto 0 => ShiftTowers(4).Layer1(1 downto 0), 2 => ShiftTowers(3).Layer1(3),
124 4 downto 3 => ShiftTowers(1).Layer1(1 downto 0), 5 => ShiftTowers(0).Layer1(3));
126 OutEnergyL1 <= (2 downto 0 => ShiftTowers(4).Layer1(2 downto 0),
127 5 downto 3 => ShiftTowers(1).Layer1(2 downto 0));
129 OutEnergyL1 <= (2 downto 0 => ShiftTowers(4).Layer1(3 downto 1),
130 5 downto 3 => ShiftTowers(1).Layer1(3 downto 1));
133 OutEnergyL1 <= (1 downto 0 => ShiftTowers(4).Layer1(3 downto 2), 2 => ShiftTowers(5).Layer1(0),
134 4 downto 3 => ShiftTowers(1).Layer1(3 downto 2), 5 => ShiftTowers(2).Layer1(0));
143 OutEnergyL2 <= (1 downto 0 => ShiftTowers(4).Layer2(1 downto 0), 2 => ShiftTowers(3).Layer2(3),
144 4 downto 3 => ShiftTowers(7).Layer2(1 downto 0), 5 => ShiftTowers(6).Layer2(3));
146 OutEnergyL2 <= (2 downto 0 => ShiftTowers(4).Layer2(2 downto 0),
147 5 downto 3 => ShiftTowers(7).Layer2(2 downto 0));
149 OutEnergyL2 <= (2 downto 0 => ShiftTowers(4).Layer2(3 downto 1),
150 5 downto 3 => ShiftTowers(7).Layer2(3 downto 1));
153 OutEnergyL2 <= (1 downto 0 => ShiftTowers(4).Layer2(3 downto 2), 2 => ShiftTowers(5).Layer2(0),
154 4 downto 3 => ShiftTowers(7).Layer2(3 downto 2), 5 => ShiftTowers(8).Layer2(0));
157 OutEnergyL2 <= (1 downto 0 => ShiftTowers(4).Layer2(1 downto 0), 2 => ShiftTowers(3).Layer2(3),
158 4 downto 3 => ShiftTowers(1).Layer2(1 downto 0), 5 => ShiftTowers(0).Layer2(3));
160 OutEnergyL2 <= (2 downto 0 => ShiftTowers(4).Layer2(2 downto 0),
161 5 downto 3 => ShiftTowers(1).Layer2(2 downto 0));
163 OutEnergyL2 <= (2 downto 0 => ShiftTowers(4).Layer2(3 downto 1),
164 5 downto 3 => ShiftTowers(1).Layer2(3 downto 1));
167 OutEnergyL2 <= (1 downto 0 => ShiftTowers(4).Layer2(3 downto 2), 2 => ShiftTowers(5).Layer2(0),
168 4 downto 3 => ShiftTowers(1).Layer2(3 downto 2), 5 => ShiftTowers(2).Layer2(0));
178 OutEnergyL3 <= (0 => ShiftTowers(4).Layer3(0), 1 => ShiftTowers(7).Layer3(0));
181 OutEnergyL3 <= (0 => ShiftTowers(4).Layer3(0), 1 => ShiftTowers(1).Layer3(0));
192 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3),
193 3 => ShiftTowers(7).Layer2(1), 4 => ShiftTowers(7).Layer2(0), 5 => ShiftTowers(6).Layer2(3));
195 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(2), 1 => ShiftTowers(4).Layer2(1), 2 => ShiftTowers(4).Layer2(0),
196 3 => ShiftTowers(7).Layer2(2), 4 => ShiftTowers(7).Layer2(1), 5 => ShiftTowers(7).Layer2(0));
198 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(1),
199 3 => ShiftTowers(7).Layer2(3), 4 => ShiftTowers(7).Layer2(2), 5 => ShiftTowers(7).Layer2(1));
201 OutREtaCoreData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(4).Layer2(2),
202 3 => ShiftTowers(8).Layer2(0), 4 => ShiftTowers(7).Layer2(3), 5 => ShiftTowers(7).Layer2(2));
204 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(3).Layer2(3),
205 3 => ShiftTowers(1).Layer2(1), 4 => ShiftTowers(1).Layer2(0), 5 => ShiftTowers(0).Layer2(3));
207 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(2), 1 => ShiftTowers(4).Layer2(1), 2 => ShiftTowers(4).Layer2(0),
208 3 => ShiftTowers(1).Layer2(2), 4 => ShiftTowers(1).Layer2(1), 5 => ShiftTowers(1).Layer2(0));
210 OutREtaCoreData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(1),
211 3 => ShiftTowers(1).Layer2(3), 4 => ShiftTowers(1).Layer2(2), 5 => ShiftTowers(1).Layer2(1));
213 OutREtaCoreData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(4).Layer2(2),
214 3 => ShiftTowers(2).Layer2(0), 4 => ShiftTowers(1).Layer2(3), 5 => ShiftTowers(1).Layer2(2));
224 OutREtaEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1),
225 4 => ShiftTowers(7).Layer2(3), 5 => ShiftTowers(7).Layer2(2), 6 => ShiftTowers(6).Layer2(2), 7 => ShiftTowers(6).Layer2(1),
226 8 => ShiftTowers(0).Layer2(1), 9 => ShiftTowers(0).Layer2(2), 10 => ShiftTowers(0).Layer2(3),
227 14 downto 11 => ShiftTowers(1).Layer2);
230 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(3).Layer2(2),
231 4 => ShiftTowers(8).Layer2(0), 5 => ShiftTowers(7).Layer2(3), 6 => ShiftTowers(6).Layer2(3), 7 => ShiftTowers(6).Layer2(2),
232 8 => ShiftTowers(2).Layer2(0), 9 => ShiftTowers(0).Layer2(2), 10 => ShiftTowers(0).Layer2(3),
233 14 downto 11 => ShiftTowers(1).Layer2);
235 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(1), 1 => ShiftTowers(5).Layer2(0), 2 => ShiftTowers(4).Layer2(0), 3 => ShiftTowers(3).Layer2(3),
236 4 => ShiftTowers(8).Layer2(1), 5 => ShiftTowers(8).Layer2(0), 6 => ShiftTowers(7).Layer2(0), 7 => ShiftTowers(6).Layer2(3),
237 8 => ShiftTowers(2).Layer2(0), 9 => ShiftTowers(2).Layer2(1), 10 => ShiftTowers(0).Layer2(3),
238 14 downto 11 => ShiftTowers(1).Layer2);
240 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(2), 1 => ShiftTowers(5).Layer2(1), 2 => ShiftTowers(4).Layer2(1), 3 => ShiftTowers(4).Layer2(0),
241 4 => ShiftTowers(8).Layer2(2), 5 => ShiftTowers(8).Layer2(1), 6 => ShiftTowers(7).Layer2(1), 7 => ShiftTowers(7).Layer2(0),
242 8 => ShiftTowers(2).Layer2(0), 9 => ShiftTowers(2).Layer2(1), 10 => ShiftTowers(2).Layer2(2),
243 14 downto 11 => ShiftTowers(1).Layer2);
246 OutREtaEnvData <= (0 => ShiftTowers(4).Layer2(3), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(3).Layer2(2), 3 => ShiftTowers(3).Layer2(1),
247 4 => ShiftTowers(1).Layer2(3), 5 => ShiftTowers(1).Layer2(2), 6 => ShiftTowers(0).Layer2(2), 7 => ShiftTowers(0).Layer2(1),
248 8 => ShiftTowers(6).Layer2(1), 9 => ShiftTowers(6).Layer2(2), 10 => ShiftTowers(6).Layer2(3),
249 14 downto 11 => ShiftTowers(7).Layer2);
251 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(3), 2 => ShiftTowers(3).Layer2(3), 3 => ShiftTowers(3).Layer2(2),
252 4 => ShiftTowers(2).Layer2(0), 5 => ShiftTowers(1).Layer2(3), 6 => ShiftTowers(0).Layer2(3), 7 => ShiftTowers(0).Layer2(2),
253 8 => ShiftTowers(8).Layer2(0), 9 => ShiftTowers(6).Layer2(2), 10 => ShiftTowers(6).Layer2(3),
254 14 downto 11 => ShiftTowers(7).Layer2);
257 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(1), 1 => ShiftTowers(5).Layer2(0), 2 => ShiftTowers(4).Layer2(0), 3 => ShiftTowers(3).Layer2(3),
258 4 => ShiftTowers(2).Layer2(1), 5 => ShiftTowers(2).Layer2(0), 6 => ShiftTowers(1).Layer2(0), 7 => ShiftTowers(0).Layer2(3),
259 8 => ShiftTowers(8).Layer2(0), 9 => ShiftTowers(8).Layer2(1), 10 => ShiftTowers(6).Layer2(3),
260 14 downto 11 => ShiftTowers(7).Layer2);
264 OutREtaEnvData <= (0 => ShiftTowers(5).Layer2(2), 1 => ShiftTowers(5).Layer2(1), 2 => ShiftTowers(4).Layer2(1), 3 => ShiftTowers(4).Layer2(0),
265 4 => ShiftTowers(2).Layer2(2), 5 => ShiftTowers(2).Layer2(1), 6 => ShiftTowers(1).Layer2(1), 7 => ShiftTowers(1).Layer2(0),
266 8 => ShiftTowers(8).Layer2(0), 9 => ShiftTowers(8).Layer2(1), 10 => ShiftTowers(8).Layer2(2),
267 14 downto 11 => ShiftTowers(7).Layer2);
276 OutWsCoreData <= (0 => BitLeftShift(ShiftTowers(3).Layer1(2), 2), 1 => ShiftTowers(3).Layer1(3), 2 => ShiftTowers(4).Layer1(1), 3 => BitLeftShift(ShiftTowers(4).Layer1(2), 2),
277 4 => BitLeftShift(ShiftTowers(6).Layer1(2), 2), 5 => ShiftTowers(6).Layer1(3), 6 => ShiftTowers(7).Layer1(1), 7 => BitLeftShift(ShiftTowers(7).Layer1(2), 2),
278 8 => BitLeftShift(ShiftTowers(0).Layer1(2), 2), 9 => ShiftTowers(0).Layer1(3), 10 => ShiftTowers(1).Layer1(1), 11 => BitLeftShift(ShiftTowers(1).Layer1(2), 2));
281 OutWsCoreData <= (0 => BitLeftShift(ShiftTowers(3).Layer1(3), 2), 1 => ShiftTowers(4).Layer1(0), 2 => ShiftTowers(4).Layer1(2), 3 => BitLeftShift(ShiftTowers(4).Layer1(3), 2),
282 4 => BitLeftShift(ShiftTowers(6).Layer1(3), 2), 5 => ShiftTowers(7).Layer1(0), 6 => ShiftTowers(7).Layer1(2), 7 => BitLeftShift(ShiftTowers(7).Layer1(3), 2),
283 8 => BitLeftShift(ShiftTowers(0).Layer1(3), 2), 9 => ShiftTowers(1).Layer1(0), 10 => ShiftTowers(1).Layer1(2), 11 => BitLeftShift(ShiftTowers(1).Layer1(3), 2));
285 OutWsCoreData <= (0 => BitLeftShift(ShiftTowers(4).Layer1(0), 2), 1 => ShiftTowers(4).Layer1(1), 2 => ShiftTowers(4).Layer1(3), 3 => BitLeftShift(ShiftTowers(5).Layer1(0), 2),
286 4 => BitLeftShift(ShiftTowers(7).Layer1(0), 2), 5 => ShiftTowers(7).Layer1(1), 6 => ShiftTowers(7).Layer1(3), 7 => BitLeftShift(ShiftTowers(8).Layer1(0), 2),
287 8 => BitLeftShift(ShiftTowers(1).Layer1(0), 2), 9 => ShiftTowers(1).Layer1(1), 10 => ShiftTowers(1).Layer1(3), 11 => BitLeftShift(ShiftTowers(2).Layer1(0), 2));
289 OutWsCoreData <= (0 => BitLeftShift(ShiftTowers(4).Layer1(1), 2), 1 => ShiftTowers(4).Layer1(2), 2 => ShiftTowers(5).Layer1(0), 3 => BitLeftShift(ShiftTowers(5).Layer1(1), 2),
290 4 => BitLeftShift(ShiftTowers(7).Layer1(1), 2), 5 => ShiftTowers(7).Layer1(2), 6 => ShiftTowers(8).Layer1(0), 7 => BitLeftShift(ShiftTowers(8).Layer1(1), 2),
291 8 => BitLeftShift(ShiftTowers(1).Layer1(1), 2), 9 => ShiftTowers(1).Layer1(2), 10 => ShiftTowers(2).Layer1(0), 11 => BitLeftShift(ShiftTowers(2).Layer1(1), 2));
300 OutWsEnvData <= (0 => ShiftTowers(3).Layer1(2), 1 => ShiftTowers(3).Layer1(3), 2 => ShiftTowers(4).Layer1(0),
301 3 => ShiftTowers(4).Layer1(1), 4 => ShiftTowers(4).Layer1(2),
302 5 => ShiftTowers(6).Layer1(2), 6 => ShiftTowers(6).Layer1(3), 7 => ShiftTowers(7).Layer1(0),
303 8 => ShiftTowers(7).Layer1(1), 9 => ShiftTowers(7).Layer1(2),
304 10 => ShiftTowers(0).Layer1(2), 11 => ShiftTowers(0).Layer1(3), 12 => ShiftTowers(1).Layer1(0),
305 13 => ShiftTowers(1).Layer1(1), 14 => ShiftTowers(1).Layer1(2)
308 OutWsEnvData <= (0 => ShiftTowers(3).Layer1(3), 1 => ShiftTowers(4).Layer1(0), 2 => ShiftTowers(4).Layer1(1),
309 3 => ShiftTowers(4).Layer1(2), 4 => ShiftTowers(4).Layer1(3),
310 5 => ShiftTowers(6).Layer1(3), 6 => ShiftTowers(7).Layer1(0), 7 => ShiftTowers(7).Layer1(1),
311 8 => ShiftTowers(7).Layer1(2), 9 => ShiftTowers(7).Layer1(3),
312 10 => ShiftTowers(0).Layer1(3), 11 => ShiftTowers(1).Layer1(0), 12 => ShiftTowers(1).Layer1(1),
313 13 => ShiftTowers(1).Layer1(2), 14 => ShiftTowers(1).Layer1(3)
316 OutWsEnvData <= (0 => ShiftTowers(4).Layer1(0), 1 => ShiftTowers(4).Layer1(1), 2 => ShiftTowers(4).Layer1(2),
317 3 => ShiftTowers(4).Layer1(3), 4 => ShiftTowers(5).Layer1(0),
318 5 => ShiftTowers(7).Layer1(0), 6 => ShiftTowers(7).Layer1(1), 7 => ShiftTowers(7).Layer1(2),
319 8 => ShiftTowers(7).Layer1(3), 9 => ShiftTowers(8).Layer1(0),
320 10 => ShiftTowers(1).Layer1(0), 11 => ShiftTowers(1).Layer1(1), 12 => ShiftTowers(1).Layer1(2),
321 13 => ShiftTowers(1).Layer1(3), 14 => ShiftTowers(2).Layer1(0)
324 OutWsEnvData <= (0 => ShiftTowers(4).Layer1(1), 1 => ShiftTowers(4).Layer1(2), 2 => ShiftTowers(4).Layer1(3),
325 3 => ShiftTowers(5).Layer1(0), 4 => ShiftTowers(5).Layer1(1),
326 5 => ShiftTowers(7).Layer1(1), 6 => ShiftTowers(7).Layer1(2), 7 => ShiftTowers(7).Layer1(3),
327 8 => ShiftTowers(8).Layer1(0), 9 => ShiftTowers(8).Layer1(1),
328 10 => ShiftTowers(1).Layer1(1), 11 => ShiftTowers(1).Layer1(2), 12 => ShiftTowers(1).Layer1(3),
329 13 => ShiftTowers(2).Layer1(0), 14 => ShiftTowers(2).Layer1(1)
338 OutHadCoreData <= (16 => ShiftTowers(6).Layer3(0), 11 => ShiftTowers(7).Layer3(0), 17 => ShiftTowers(8).Layer3(0),
339 12 => ShiftTowers(3).Layer3(0), 13 => ShiftTowers(4).Layer3(0), 09 => ShiftTowers(5).Layer3(0),
340 14 => ShiftTowers(0).Layer3(0), 10 => ShiftTowers(1).Layer3(0), 15 => ShiftTowers(2).Layer3(0),
341 06 => ShiftTowers(6).Hadron(0), 07 => ShiftTowers(7).Hadron(0), 08 => ShiftTowers(8).Hadron(0),
342 03 => ShiftTowers(3).Hadron(0), 04 => ShiftTowers(4).Hadron(0), 05 => ShiftTowers(5).Hadron(0),
343 00 => ShiftTowers(0).Hadron(0), 01 => ShiftTowers(1).Hadron(0), 02 => ShiftTowers(2).Hadron(0));
350 OutHadEnvDataL1 <= (3 => ShiftTowers(3).Layer1(3), 4 => ShiftTowers(4).Layer1(0), 5 => ShiftTowers(4).Layer1(1),
351 0 => ShiftTowers(0).Layer1(3), 1 => ShiftTowers(1).Layer1(0), 2 => ShiftTowers(1).Layer1(1));
354 OutHadEnvDataL1 <= (3 => ShiftTowers(4).Layer1(0), 4 => ShiftTowers(4).Layer1(1), 5 => ShiftTowers(4).Layer1(2),
355 0 => ShiftTowers(1).Layer1(0), 1 => ShiftTowers(1).Layer1(1), 2 => ShiftTowers(1).Layer1(2));
357 OutHadEnvDataL1 <= (3 => ShiftTowers(4).Layer1(1), 4 => ShiftTowers(4).Layer1(2), 5 => ShiftTowers(4).Layer1(3),
358 0 => ShiftTowers(1).Layer1(1), 1 => ShiftTowers(1).Layer1(2), 2 => ShiftTowers(1).Layer1(3));
361 OutHadEnvDataL1 <= (3 => ShiftTowers(5).Layer1(0), 4 => ShiftTowers(4).Layer1(2), 5 => ShiftTowers(4).Layer1(3),
362 0 => ShiftTowers(2).Layer1(0), 1 => ShiftTowers(1).Layer1(2), 2 => ShiftTowers(1).Layer1(3));
365 OutHadEnvDataL1 <= (3 => ShiftTowers(6).Layer1(3), 4 => ShiftTowers(7).Layer1(0), 5 => ShiftTowers(7).Layer1(1),
366 0 => ShiftTowers(3).Layer1(3), 1 => ShiftTowers(4).Layer1(0), 2 => ShiftTowers(4).Layer1(1));
370 OutHadEnvDataL1 <= (3 => ShiftTowers(7).Layer1(0), 4 => ShiftTowers(7).Layer1(1), 5 => ShiftTowers(7).Layer1(2),
371 0 => ShiftTowers(4).Layer1(0), 1 => ShiftTowers(4).Layer1(1), 2 => ShiftTowers(4).Layer1(2));
374 OutHadEnvDataL1 <= (3 => ShiftTowers(7).Layer1(1), 4 => ShiftTowers(7).Layer1(2), 5 => ShiftTowers(7).Layer1(3),
375 0 => ShiftTowers(4).Layer1(1), 1 => ShiftTowers(4).Layer1(2), 2 => ShiftTowers(4).Layer1(3));
378 OutHadEnvDataL1 <= (3 => ShiftTowers(8).Layer1(0), 4 => ShiftTowers(7).Layer1(2), 5 => ShiftTowers(7).Layer1(3),
379 0 => ShiftTowers(5).Layer1(0), 1 => ShiftTowers(4).Layer1(2), 2 => ShiftTowers(4).Layer1(3));
388 OutHadEnvDataL2 <= (3 => ShiftTowers(3).Layer2(3), 4 => ShiftTowers(4).Layer2(0), 5 => ShiftTowers(4).Layer2(1),
389 0 => ShiftTowers(0).Layer2(3), 1 => ShiftTowers(1).Layer2(0), 2 => ShiftTowers(1).Layer2(1));
392 OutHadEnvDataL2 <= (3 => ShiftTowers(4).Layer2(0), 4 => ShiftTowers(4).Layer2(1), 5 => ShiftTowers(4).Layer2(2),
393 0 => ShiftTowers(1).Layer2(0), 1 => ShiftTowers(1).Layer2(1), 2 => ShiftTowers(1).Layer2(2));
395 OutHadEnvDataL2 <= (3 => ShiftTowers(4).Layer2(1), 4 => ShiftTowers(4).Layer2(2), 5 => ShiftTowers(4).Layer2(3),
396 0 => ShiftTowers(1).Layer2(1), 1 => ShiftTowers(1).Layer2(2), 2 => ShiftTowers(1).Layer2(3));
399 OutHadEnvDataL2 <= (3 => ShiftTowers(5).Layer2(0), 4 => ShiftTowers(4).Layer2(2), 5 => ShiftTowers(4).Layer2(3),
400 0 => ShiftTowers(2).Layer2(0), 1 => ShiftTowers(1).Layer2(2), 2 => ShiftTowers(1).Layer2(3));
403 OutHadEnvDataL2 <= (3 => ShiftTowers(6).Layer2(3), 4 => ShiftTowers(7).Layer2(0), 5 => ShiftTowers(7).Layer2(1),
404 0 => ShiftTowers(3).Layer2(3), 1 => ShiftTowers(4).Layer2(0), 2 => ShiftTowers(4).Layer2(1));
408 OutHadEnvDataL2 <= (3 => ShiftTowers(7).Layer2(0), 4 => ShiftTowers(7).Layer2(1), 5 => ShiftTowers(7).Layer2(2),
409 0 => ShiftTowers(4).Layer2(0), 1 => ShiftTowers(4).Layer2(1), 2 => ShiftTowers(4).Layer2(2));
412 OutHadEnvDataL2 <= (3 => ShiftTowers(7).Layer2(1), 4 => ShiftTowers(7).Layer2(2), 5 => ShiftTowers(7).Layer2(3),
413 0 => ShiftTowers(4).Layer2(1), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(3));
416 OutHadEnvDataL2 <= (3 => ShiftTowers(8).Layer2(0), 4 => ShiftTowers(7).Layer2(2), 5 => ShiftTowers(7).Layer2(3),
417 0 => ShiftTowers(5).Layer2(0), 1 => ShiftTowers(4).Layer2(2), 2 => ShiftTowers(4).Layer2(3));
426 OutHadEnvDataL03 <= (0 => ShiftTowers(1).Layer0(0), 1 => ShiftTowers(4).Layer0(0));
428 OutHadEnvDataL03 <= (0 => ShiftTowers(7).Layer0(0), 1 => ShiftTowers(4).Layer0(0));
433 OUT_EnergyL0 <= OutEnergyL0;
434 OUT_EnergyL1 <= OutEnergyL1;
435 OUT_EnergyL2 <= OutEnergyL2;
436 OUT_EnergyL3 <= OutEnergyL3;
438 OUT_REtaCoreData <= OutREtaCoreData;
439 OUT_REtaEnvData <= OutREtaEnvData;
441 OUT_WsCoreData <= OutWsCoreData;
442 OUT_WsEnvData <= OutWsEnvData;
444 OUT_HadCoreData <= OutHadCoreData;
445 OUT_HadEnvDataL1 <= OutHadEnvDataL1;
446 OUT_HadEnvDataL2 <= OutHadEnvDataL2;
447 OUT_HadEnvDataL03 <= OutHadEnvDataL03;