eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
LoadGenerator.vhd
Go to the documentation of this file.
1 
11 
12 library IEEE;
13 use IEEE.STD_LOGIC_1164.all;
14 use IEEE.NUMERIC_STD.all;
15 
17 entity LoadGenerator is
18  generic (PHASE200 : integer := 2;
19  PHASE280 : integer := 3
20  );
21  port (IN_Load : in std_logic;
22  CLK200 : in std_logic;
23  CLK280 : in std_logic;
24  OUT_Load200 : out std_logic;
25  OUT_Load280 : out std_logic
26  );
27 end LoadGenerator;
28 
30 architecture Behavioral of LoadGenerator is
31 
32  signal LoadR : std_logic := '0';
33  signal Load280_i : std_logic := '0';
34  signal Load_delay280 : std_logic_vector(PHASE280 downto 0) := (others => '0');
35  signal Load_delay200 : std_logic_vector(PHASE200 downto 0) := (others => '0');
36 -- ####### Mark signals ########
37  attribute keep : string ;
38  attribute max_fanout : integer;
39  attribute keep of Load280_i : signal is "true" ;
40  attribute max_fanout of Load280_i : signal is 40;
41 
42 -- #######################################
43 begin
44 
45  process(IN_Load)
46  begin
47  if rising_edge(IN_Load) then
48  LoadR <= not LoadR;
49  end if;
50  end process;
51 
52  process(CLK200)
53  begin
54  if rising_edge(CLK200) then
55  Load_delay200(0) <= LoadR;
56  Load_delay200(PHASE200 downto 1) <= Load_delay200(PHASE200-1 downto 0);
57  OUT_Load200 <= Load_delay200(PHASE200) xor Load_delay200(PHASE200-1);
58  end if;
59  end process;
60 
61  process(CLK280)
62  begin
63  if rising_edge(CLK280) then
64  Load_delay280(0) <= LoadR;
65  Load_delay280(PHASE280 downto 1) <= Load_delay280(PHASE280-1 downto 0);
66  Load280_i <= Load_delay280(PHASE280) xor Load_delay280(PHASE280-1);
67  end if;
68  end process;
69  OUT_Load280 <= Load280_i;
70 
71 end Behavioral;
Load generator.