process(EPPDSTB, EPPWR) begin if (EPPDSTB = '0' and EPPWR = '1') then -- data read UsbDB <= DATA; else UsbDB <= (others => 'Z'); end if; case ADR is when x"00" => DATA <= x"01"; when x"01" => DATA <= result_int(15 downto 8); when x"02" => DATA <= result_int(23 downto 16); when x"03" => DATA <= result_int(31 downto 24); when others => DATA <= (others => '0'); end case; EPPWAIT <= not (EPPASTB and EPPDSTB); end process;