да никак не делать.. один источник прерывания - один обработчик.
если есть желание и время пошаманить и хватает 8-ми регистров - берете пикоблаз для кулранеров. он не примитивами описан а поведенчески, открываете его и в програмном счетчике видите
--**************************** COUNTER: process begin wait until rising_edge(clk); if interrupt = '1' then count_value <= "11111111"; elsif reset = '1' then count_value <= "00000000"; elsif T_state = '0' then if normal_count = '1' then count_value <= count_value + 1; elsif i_return = '1' then count_value <= selected_load_value + 1; else count_value <= selected_load_value; end if; end if; end process; program_count <= count_value; --****************************
тобишь - в коде четко забит адрес перехода и событие.
если хотите увеличить кол-во прерываний:
entity pblaze ......... interrupt : in std_logic_vector(скоканада-1 downto 0); ........
правите все файлы в которых обрабатывается прерывание типа так
было irq_out <= irq_in and EN; стало irq_out(0) <= irq_in(0) and EN; irq_out(1) <= irq_in(1) and EN; ... irq_out(скоканада-1) <= irq_in(скоканада-1) and EN;
и тада можна будет править програмный счетчик так
--**************************** COUNTER: process begin wait until rising_edge(clk); if interrupt(0) = '1' then count_value <= "11111111"; elsif interrupt(1) = '1' then count_value <= "11111110"; ....................................... elsif interrupt(скоканада-1) = '1' then count_value <= "11111101"; elsif reset = '1' then count_value <= "00000000"; elsif T_state = '0' then if normal_count = '1' then count_value <= count_value + 1; elsif i_return = '1' then count_value <= selected_load_value + 1; else count_value <= selected_load_value; end if; end if; end process; program_count <= count_value; --****************************
и в асме тада так можно
startup: jump main ;startup procedure int_routine1: returni enable int_routine2: returni enable main: enable interrupt end: jump end address ff jump int_routine1 address fe jump int_routine2
ваще я канечно все это не проверял в железе, но по опыту использования пикоблаза - думаю будет работать
--------------------
однако..
|