library IEEE; use IEEE.std_logic_1164.all; entity Vreg16 is port (CLK, CLKEN, OE_L, CLR_L: in STD_LOGIC; D: in STD_LOGIC_VECTOR(1 to 16); -- Input bus Q: out STD_ULOGIC_VECTOR (1 to 16) -- Output bus (three-state) ); end Vreg16; architecture Vreg16 of Vreg16 is signal CLR, OE: STD_LOGIC; -- active-high versions of signals signal IQ: STD_LOGIC_VECTOR(1 to 16); -- internal Q signals begin process(CLK, CLR_L, CLR, OE_L, OE, IQ) begin CLR <= not CLR_L; OE <= not OE_L; if (CLR = '1') then IQ <= (others => '0'); elsif (CLK'event and CLK='1') then if (CLKEN='1') then IQ <= D; end if; end if; if OE = '1' then Q <= To_StdULogicVector(IQ); else Q <= (others => 'Z'); end if; end process; end Vreg16;