Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module InterruptConverter (/*AUTOARG*/
- // Outputs
- edge_irq, irq_counter,
- // Inputs
- clk, rst_n, level_irq
- ) ;
- input clk;
- input rst_n;
- input level_irq;
- output reg edge_irq;
- output reg [7:0] irq_counter = 0;
- reg [3:0] shift_register = 0;
- always @ ( posedge clk or negedge rst_n ) begin
- if (!rst_n) begin
- shift_register <= 0;
- end else begin
- shift_register <= { shift_register[2:0], level_irq };
- if (shift_register[3] == 1 &&
- shift_register[2:0] != 3'b111) begin
- edge_irq <= 1;
- end else begin
- edge_irq <= 0;
- end
- end
- end
- always @ ( negedge level_irq or negedge rst_n ) begin
- if (!rst_n) begin
- irq_counter <= 0;
- end else begin
- irq_counter <= irq_counter + 1;
- end
- end
- endmodule // InterruptConverter
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement