基于verilog设计一个硬件看门狗

本文介绍了看门狗定时器的基本概念及其作用,包括硬件看门狗、软件看门狗和窗口看门狗的不同特点,并详细阐述了看门狗模块的设计方法,如计数器、边沿检测器和信号延迟模块的具体实现。


一、 看门狗简介

  看门狗:也称看门狗定时器,是常见于系统的一种外设;
看门狗似乎就是一条看门的狗,如果系统一切正常则看门狗不叫,如果程序不正常,则看门狗则会将程序咬死(即程序强制复位)。
  看门狗的作用:当一段程序跑飞,卡死或不受控制时,能使得系统强制重启;
  喂狗:当看门狗被初始化后,需要在程序中每进行一段时间就重置看门狗模块的定时器计数值,防止程序被咬死;
  程序咬死:当程序出现问题时(跑飞或锁死),导致看门狗定时器的计数值没能及时重置,当计数值达到设置的阈值后,看门狗定时器则输出复位信号,使得CPU强制复位;


二、看门狗分类

  硬件看门狗:看门狗实际上就是一个计数器,硬件看门狗就是以硬件实现的一种计数器,其可以集成在单片机,SOC等系统中,使用硬件看门狗不用消耗额外的软件资源;
  软件看门狗:利用软件实现软件计数器,利用该计数器判断是否计数达到阈值,达到阈值则调用软件复位程序,常与定时器中断一起使用;
  窗口看门狗:独立看门狗在0-重载值之间都可以进行喂狗操作,这样如果程序跑飞反复在喂狗,则程序无法复位;窗口看门狗则对喂狗的时间设置了阈值(上下限),喂狗操作只能在阈值间进行喂狗,其他时间喂狗都无效;


三、看门狗模块设计

3.1 看门狗模块设计框图

在这里插入图片描述

3.2 顶层

module wtd_counter_top#(
    parameter integer   COUNTER_WIDTH = 16,
    parameter integer   RST_SIG_WIDTH = 2
    )(
        input  wire                            ref_clk,//system reference clock
        input  wire                               nrst,//system reset signal, Valid: 1'b0
        input  wire                                 en,//system enable signal, Valid: 1'b1
        input  wire [COUNTER_WIDTH - 1:0] up_threshold,//system upside threshold
        output wire [COUNTER_WIDTH - 1:0]        count,//system clock counter
        output wire                            wtd_rst 
    );

   wire                    rst_req;
   wire [RST_SIG_WIDTH :0] rst_req_dff; 

   assign rst_req  = (count == up_threshold) ? 1'b1:1'b0;
   assign wtd_rst = |rst_req_dff;

   genvar DFF_inist_index;
   generate 
        for(DFF_inist_index = 0
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PPRAM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值