- elsif ce_i = '1' and address_i(11 downto 10) = "11" then
- if address_i(9 downto 0) = "0000000000" then
- data_o(0) <= tumbl_reset_s;
- data_o(1) <= tumbl_input_s.int;
- data_o(2) <= tumbl_input_s.halt;
- data_o(3) <= tumbl_input_s.trace;
- data_o(4) <= tumbl_state_s.halted;
- data_o(31 downto 5) <= (others => '0');
- elsif address_i(9 downto 0) = "0000000010" then
- data_o <= tumbl_state_s.pc;
- elsif address_i(9 downto 0) = "0000000011" then
- data_o(4 downto 0) <= tumbl_state_s.halt_code;
- data_o(31 downto 5) <= (others => '0');
- else
- data_o <= (others => 'X');
- end if;
+ elsif tumbl_reg_en_control_r = '1' then
+ data_o(0) <= tumbl_reset_s;
+ data_o(1) <= tumbl_input_s.int;
+ data_o(2) <= tumbl_input_s.halt;
+ data_o(3) <= tumbl_input_s.trace;
+ data_o(4) <= tumbl_state_s.halted;
+ data_o(31 downto 5) <= (others => '0');
+ elsif tumbl_reg_en_pc_r = '1' then
+ data_o <= tumbl_state_s.pc;
+ elsif tumbl_reg_en_halt_code_r = '1' then
+ data_o(4 downto 0) <= tumbl_state_s.halt_code;
+ data_o(31 downto 5) <= (others => '0');