// SPI 发送 0xC0 看门狗禁用
// SPI 发送 0xC1 看门狗使能
// SPI 发送 0xC2 看门狗清除
always @(posedge clk_40mhz or negedge rst_n) begin
if (!rst_n) begin
watch_dog_en <= 1'b1; // 禁用看门狗
watch_dog_clr <= 1'b0; // 清除看门狗计数器标志
tick_cnt <= 32'd0; // 清除计数器
led_reg <= 1'b0; // LED打开
end else begin
if (rx_dv) begin
case (rx_byte)
8'hC0:watch_dog_en <= 1'b0; // 禁用看门狗
8'hC1:watch_dog_en <= 1'b1; // 启用看门狗
8'hC2:watch_dog_clr <= 1'b1; // 清除看门狗计数器
endcase
end else begin
if ((watch_dog_en)&&(~watch_dog_clr)) begin
tick_cnt <= tick_cnt + 1; // 每个时钟周期计数一次
if (tick_cnt >= 32'd40000000) begin // 10秒钟的计数值
watch_dog_clr <= 1'b1; // 清除看门狗计数器标志 使能
led_reg <= ~led_reg; // 超时,反转LED
end
end else begin
tick_cnt <= 32'd0; // 清除计数器
watch_dog_clr <= 1'b0; // 清除看门狗计数器标志
end
end
end
end