library IEEE; use IEEE.std_logic_1164.all; entity Vtimegn6 is port ( MCLK, RESET, RUN, RESTART: in STD_LOGIC; -- clock, control inputs P_L: out STD_LOGIC_VECTOR (1 to 6) -- active-low phase outputs ); end Vtimegn6; architecture Vtimegn6_arch of Vtimegn6 is signal IP: STD_LOGIC_VECTOR (1 to 6); -- internal active-high phase signals signal T1: STD_LOGIC; -- first tick within phase begin process (MCLK, IP) begin if (MCLK'event and MCLK='1') then if (RESET='1') then T1 <= '1'; IP <= ('0','0','0','0','0','0'); elsif ((IP=('0','0','0','0','0','0')) or (RESTART='1')) then T1 <= '1'; IP <= ('1','0','0','0','0','0'); elsif (RUN='1') then T1 <= not T1; if (T1='0') then IP <= IP(6) & IP(1 to 5); end if; end if; end if; P_L <= not IP; end process; end Vtimegn6_arch;