summaryrefslogtreecommitdiff
path: root/target/w3d_de1soc/intc.sv
blob: af78ef8f6a9f8a1643f84ee1d6385652bea133db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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