1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| architecture Behavioral of reset_process is
component pulse_after
Port ( rst : in STD_LOGIC;
clk : in STD_LOGIC;
launch : in STD_LOGIC;
nb_period : in integer;
pulse_size : in integer;
s_out : out STD_LOGIC
);
end component;
signal EN : STD_LOGIC := '0';
signal test: STD_LOGIC_VECTOR(7 downto 0) := "00000000";
signal launch_timer : STD_LOGIC_VECTOR(7 downto 0) := "00000001";
begin
timer0 : pulse_after
port map (rst, clk, launch_timer(0), 10, 10, test(0));
timer1 : pulse_after
port map (rst, clk, launch_timer(1), 10, 10, test(1));
timer2 : pulse_after
port map (rst, clk, launch_timer(2), 10, 10, test(2));
timer3 : pulse_after
port map (rst, clk, launch_timer(3), 10, 10, test(3));
timer4 : pulse_after
port map (rst, clk, launch_timer(4), 10, 10, test(4));
timer5 : pulse_after
port map (rst, clk, launch_timer(5), 10, 10, test(5));
timer6 : pulse_after
port map (rst, clk, launch_timer(6), 10, 10, test(6));
timer7 : pulse_after
port map (rst, clk, launch_timer(7), 10, 10, test(7));
process (rst, clk, EN)
begin
if rst = '1' then
launch_timer <= "00000001";
rdy <= '0';
elsif falling_edge (EN) then
case launch_timer is
when "00000001" => launch_timer <= "00000010";
when "00000010" => launch_timer <= "00000100";
when "00000100" => launch_timer <= "00001000";
when "00001000" => launch_timer <= "00010000";
when "00010000" => launch_timer <= "00100000";
when "00100000" => launch_timer <= "01000000";
when "01000000" => launch_timer <= "10000000";
when "10000000" => rdy <= '1';
when others => launch_timer <= launch_timer;
end case;
end if;
end process;
EN <= test(0) or test(1) or test(2) or test(3) or test(4) or test(5) or test(6) or test(7);
end Behavioral; |
Partager