summaryrefslogtreecommitdiff
path: root/target/w3d_de1soc/intc.sv
diff options
context:
space:
mode:
Diffstat (limited to 'target/w3d_de1soc/intc.sv')
-rw-r--r--target/w3d_de1soc/intc.sv30
1 files changed, 30 insertions, 0 deletions
diff --git a/target/w3d_de1soc/intc.sv b/target/w3d_de1soc/intc.sv
new file mode 100644
index 0000000..af78ef8
--- /dev/null
+++ b/target/w3d_de1soc/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