URL
https://opencores.org/ocsvn/neorv32/neorv32/trunk
[/] [neorv32/] [trunk/] [rtl/] [core/] [neorv32_xirq.vhd] - Diff between revs 66 and 69
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 66 |
Rev 69 |
Line 208... |
Line 208... |
-- IRQ Arbiter --------------------------------------------------------------
|
-- IRQ Arbiter --------------------------------------------------------------
|
-- -----------------------------------------------------------------------------
|
-- -----------------------------------------------------------------------------
|
irq_arbiter: process(clk_i)
|
irq_arbiter: process(clk_i)
|
begin
|
begin
|
if rising_edge(clk_i) then
|
if rising_edge(clk_i) then
|
|
cpu_irq_o <= '0';
|
if (irq_run = '0') then -- no active IRQ
|
if (irq_run = '0') then -- no active IRQ
|
if (irq_fire = '1') then
|
if (irq_fire = '1') then
|
|
cpu_irq_o <= '1';
|
irq_run <= '1';
|
irq_run <= '1';
|
irq_src <= irq_src_nxt;
|
irq_src <= irq_src_nxt;
|
end if;
|
end if;
|
else -- active IRQ, wait for CPU to acknowledge
|
else -- active IRQ, wait for CPU to acknowledge
|
if (wren = '1') and (addr = xirq_source_addr_c) then -- write _any_ value to acknowledge
|
if (wren = '1') and (addr = xirq_source_addr_c) then -- write _any_ value to acknowledge
|
Line 221... |
Line 223... |
end if;
|
end if;
|
end if;
|
end if;
|
end if;
|
end if;
|
end process irq_arbiter;
|
end process irq_arbiter;
|
|
|
-- interrupt request --
|
|
cpu_irq_o <= irq_run;
|
|
|
|
|
|
end neorv32_xirq_rtl;
|
end neorv32_xirq_rtl;
|
|
|
No newline at end of file
|
No newline at end of file
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.