library IEEE; use IEEE.std_logic_1164.all; entity Vtimeg12 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 Vtimeg12; architecture Vtimeg12_arch of Vtimeg12 is signal IP, NEXTP: STD_LOGIC_VECTOR (1 to 6); -- internal active-high phase signals begin process (MCLK, IP, NEXTP) variable TEMP: STD_LOGIC_VECTOR (1 to 6); -- temporary for signal shift constant IDLE: STD_LOGIC_VECTOR (1 to 6) := ('0','0','0','0','0','0'); constant FIRSTP: STD_LOGIC_VECTOR (1 to 6) := ('1','0','0','0','0','0'); begin if (MCLK'event and MCLK='1') then if (RESET='1') then IP <= IDLE; NEXTP <= IDLE; elsif (RESTART='1') or (IP=IDLE and NEXTP=IDLE) then IP <= IDLE; NEXTP <= FIRSTP; elsif (RUN='1') then if (IP=IDLE) and (NEXTP=IDLE) then NEXTP <= FIRSTP; else TEMP := IP; IP <= NEXTP; NEXTP <= TEMP(6) & TEMP(1 to 5); end if; end if; end if; P_L <= not IP; end process; end Vtimeg12_arch;