diff --git a/rtl/alarm_latch.v b/rtl/alarm_latch.v new file mode 100644 index 0000000..a0fba00 --- /dev/null +++ b/rtl/alarm_latch.v @@ -0,0 +1,15 @@ +module alarm_latch ( + input wire clk, input wire rst_n, input wire timeout, + input wire heartbeat_rise, input wire acknowledge, + output reg alarm +); + reg recovered; + always @(posedge clk or negedge rst_n) begin + if (!rst_n) begin alarm <= 0; recovered <= 0; end + else if (timeout && !heartbeat_rise) begin alarm <= 1; recovered <= 0; end + else begin + if (heartbeat_rise) recovered <= 1; + if (acknowledge && recovered) begin alarm <= 0; recovered <= 0; end + end + end +endmodule