library ieee; use ieee.std_logic_1164.all; entity dcc_bit_0 is port( reset : in std_logic; clk_100MHz : in std_logic; clk_1MHz : in std_logic; go : in std_logic; fin : out std_logic; dcc_0 : out std_logic ); end dcc_bit_0; architecture behaviour of dcc_bit_0 is type state is (idle, out_0, out_1); signal cs, fs : state; signal inc_cpt : std_logic; signal raz_cpt : std_logic; signal cpt : integer range 0 to 200; signal out_value : std_logic := '0'; begin dcc_0 <= out_value; --MAE process(clk_100MHz, reset) begin if reset = '1' then fs <= idle; elsif rising_edge(clk_100MHz) then if cs = idle then fin <= '0'; out_value <= '0'; raz_cpt <= '0'; if go = '1' then inc_cpt <= '1'; fs <= out_0; end if; elsif cs = out_0 then out_value <= '0'; if cpt > 99 then fs <= out_1; end if; elsif cs = out_1 then out_value <= '1'; if cpt > 199 then fs <= idle; fin <= '1'; inc_cpt <= '0'; raz_cpt <= '1'; end if; end if; cs <= fs; end if; end process; --Compteur de Temporisation process(clk_1MHz, reset, raz_cpt) begin if reset = '1' or raz_cpt = '1'then cpt <= 0; elsif rising_edge(clk_1MHz) then if inc_cpt = '1' then cpt <= cpt + 1; end if; end if; end process; end behaviour;