diff options
Diffstat (limited to 'rtl')
| -rw-r--r-- | rtl/intc.sv | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/rtl/intc.sv b/rtl/intc.sv new file mode 100644 index 0000000..af78ef8 --- /dev/null +++ b/rtl/intc.sv @@ -0,0 +1,30 @@ +module intc +( + input logic clk, + rst_n, + + input logic irq_timer, + irq_jtaguart, + + input logic avl_address, + avl_read, + avl_write, + input logic[31:0] avl_writedata, + + output logic avl_irq, + output logic[31:0] avl_readdata +); + + logic[31:0] status, mask; + + assign status = {30'b0, irq_jtaguart, irq_timer} & mask; + assign avl_irq = |status; + assign avl_readdata = avl_address ? mask : status; + + always @(posedge clk or negedge rst_n) + if(!rst_n) + mask <= 0; + else if(avl_write && avl_address) + mask <= avl_writedata; + +endmodule |
