Verilog | 看门狗

一、 看门狗简介

看门狗:也称看门狗定时器,是常见于系统的一种外设;看门狗似乎就是一条看门的狗,如果系统一切正常则看门狗不叫,如果程序不正常,则看门狗则会将程序咬死(即程序强制复位)。

看门狗的作用:当一段程序跑飞,卡死或不受控制时,能使得系统强制重启;

喂狗:当看门狗被初始化后,需要在程序中每进行一段时间就重置看门狗模块的定时器计数值,防止程序被咬死;

程序咬死:当程序出现问题时(跑飞或锁死),导致看门狗定时器的计数值没能及时重置,当计数值达到设置的阈值后,看门狗定时器则输出复位信号,使得CPU强制复位;

二、看门狗分类

硬件看门狗:看门狗实际上就是一个计数器,硬件看门狗就是以硬件实现的一种计数器,其可以集成在单片机,SOC等系统中,使用硬件看门狗不用消耗额外的软件资源;

软件看门狗:利用软件实现软件计数器,利用该计数器判断是否计数达到阈值,达到阈值则调用软件复位程序,常与定时器中断一起使用;

窗口看门狗:独立看门狗在0-重载值之间都可以进行喂狗操作,这样如果程序跑飞反复在喂狗,则程序无法复位;窗口看门狗则对喂狗的时间设置了阈值(上下限),喂狗操作只能在阈值间进行喂狗,其他时间喂狗都无效;

三、实现

`timescale 1ns / 1psmodule wtd #(parameter COUNTER_WIDTH = 16) (input                        ref_clk,       //system reference clockinput                        nrst,          //system reset signal, Valid: 1'b0input                        en,            //system enable signal, Valid: 1'b1input  [COUNTER_WIDTH - 1:0] up_threshold,  //system upside thresholdoutput [COUNTER_WIDTH - 1:0] count,         //system clock counteroutput                       wtd_rst
);/**************************wtd inner signal design**************************/reg  [COUNTER_WIDTH - 1:0] count_r;wire                       rst_req;/**************************wtd inner signal connect**************************/assign rst_req = (count == up_threshold) ? 1'b1 : 1'b0;//    计数器assign count   = count_r;always @(posedge ref_clk) beginif (~nrst) begincount_r <= 'b0;end else beginif (en) beginif (count_r < up_threshold) count_r <= count_r + 1'b1;else count_r <= count_r;end else begincount_r <= count_r;endendend//边沿检测reg din_dff;assign wtd_rst = (rst_req) & (~din_dff);always @(posedge ref_clk) beginif (~nrst) begindin_dff <= 0;end else begindin_dff <= rst_req;endendendmodule

tb代码

`timescale 1ns / 1psmodule wtd_tb;       // wtd Parameters
parameter PERIOD         = 10;
parameter COUNTER_WIDTH  = 16;// wtd Inputs
reg   clk                              = 0 ;
reg   rst_n                                 = 0 ;
reg   en                                   = 0 ;
reg   [COUNTER_WIDTH - 1:0]  up_threshold  = 0 ;// wtd Outputs
wire  [COUNTER_WIDTH - 1:0]  count         ;
wire  wtd_rst                              ;initial
beginforever #(PERIOD/2)  clk=~clk;
endinitial
beginup_threshold = 20;rst_n  =  0;#(PERIOD*2) rst_n  =  1;en = 1;endwtd #(.COUNTER_WIDTH ( COUNTER_WIDTH ))u_wtd (.ref_clk                 ( clk                             ),.nrst                    ( rst_n                                ),.en                      ( en                                  ),.up_threshold            ( up_threshold  [COUNTER_WIDTH - 1:0] ),.count                   ( count         [COUNTER_WIDTH - 1:0] ),.wtd_rst                 ( wtd_rst                             )
);initial
begin#10000  $finish;
endendmodule

在这里插入图片描述

另外为了方便看门狗产生的复位信号能够被采样会考虑增加脉冲扩展

代码写的比较简单,作为了解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549880.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

软件看门狗实现

一文看懂看门狗&#xff08;附STM和英飞凌芯片应用&#xff09; 文章目录 一文看懂看门狗&#xff08;附STM和英飞凌芯片应用&#xff09;(一)看门狗概述(二)硬件看门狗(三)软件看门狗 (一)看门狗概述 看门狗定时器&#xff08;WDT&#xff0c;Watch Dog Timer&#xff09;是单…

为HttpClient开启HTTP/2

正文 .Net Core在调用其他服务时&#xff0c;调用通常使用HttpClient&#xff0c;而HttpClient默认使用HTTP/1.1 。 配置 HttpClient 以使用 HTTP/2 h2 连接 自 .NET Core 3.0 发布以来&#xff0c; .NET 开发人员可以使用 HttpClient 启用 HTTP/2 。 设置 HTTP/2 的方法 De…

Linux系统软件看门狗

1.看门狗定义 Linux 自带了一个 watchdog 的实现&#xff0c;用于监视系统的运行&#xff0c;包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。 内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备&a…

软件看门狗怎么设计

有几个看门狗 主控内部有条看门狗&#xff0c;叫做内部狗&#xff0c;有的产品外部有充电ic&#xff0c;也能起到看门狗的作用&#xff0c;一般和主控采用IIC通讯&#xff0c;叫做外部狗。 环境 以RTOS为例子&#xff0c;介绍看门狗设计 设计目的 1.能监控到每个线程是否有…

STM32看门狗详解

看门狗的作用&#xff1a;防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应&#xff0c;如果出现这种问题&#xff0c;看门狗就会把单片机复位 独立看门狗&#xff08;IWDG&#xff09;&#xff1a; 时钟来源&#xff1a;内部低速时钟&#xff08;LSI&#xff0…

linux看门狗定时器,看门狗定时器的作用

看门狗定时器(WDT&#xff0c;Watch Dog TImer)是单片机的一个组成部分&#xff0c;它实际上是一个计数器&#xff0c;一般给看门狗一个数字&#xff0c;程序开始运行后看门狗开始倒计数。如果程序运行正常&#xff0c;过一段时间CPU应发出指令让看门狗复位&#xff0c;重新开始…

独立看门狗

一、独立看门狗概述 1、为什么需要看门狗&#xff1f; 单片机的工作易受到外界电磁场干扰&#xff0c;造成程序跑飞&#xff0c;而陷入死循环&#xff0c;造成整个系统陷入停滞状态。出于对单片机运行状态进行实时监测的考虑&#xff0c;便产生了一种专门用于监测单片机程序运…

Prometheus+Grafana+AlertManager监控Linux主机状态

文章目录 PrometheusGrafanaAlertManager监控平台搭建开始监控Grafana连接Prometheus数据源导入Grafana模板监控Linux主机状态 同系列文章 PrometheusGrafanaAlertManager监控平台搭建 Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter …

STM32看门狗简述

概述 看门狗一般分为硬件看门狗和软件看门狗&#xff0c;主要用来解决程序CPU异常&#xff0c;程序跑飞挂死等问题&#xff0c;提高系统的可靠性。 硬件看门狗是利用一个定时器电路&#xff0c;其定时输出连接到电路的复位端&#xff0c;程序在一定时间范围内对定时器清零(俗…

国内大公司的开源项目一览表(包含mysql读写分离等)

原文地址&#xff1a;http://gad.qq.com/article/detail/34413?sessionUserTypeBFT.PARAMS.239074.TASKID&ADUIN731373934&ADSESSION1508293481&ADTAGCLIENT.QQ.5533_.0&ADPUBNO26719 奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qih…

BAT、360、新浪 小米 网易等大公司开源项目

阿里巴巴开源的好软件太多&#xff0c;请自行选择所需&#xff0c;我列几个我们用的 阿里巴巴 Alibaba https://github.com/alibaba/ https://github.com/thx 1.分布式key/value存储系统 Tair Tair是由淘宝网自主开发的Key/Value结构数据存储系统&#xff0c;在淘宝网有着大规…

【GeoDa实用技巧100例】022:geoda生成空间权重矩阵(邻接矩阵、距离矩阵)

geoda生成空间权重矩阵(邻接矩阵、距离矩阵),车式矩阵、后式矩阵、K邻接矩阵。 文章目录 一、概述二、“车式”邻接的gal文档生成三、“后式”邻接gal文档生成四、k最近邻居gat文档生成五、查看gal和gat文档一、概述 空间权重矩阵(或相应的表格形式)一般需要用计算机软件生…

一些官方的github地址

阿里巴巴开源github地址:https://github.com/alibaba 腾讯开源github地址:https://github.com/Tencent 奇虎360github地址:https://github.com/Qihoo360 小米开源github地址:https://github.com/XiaoMi 豆瓣开源github地址:https://github.com/douban 网易开源github地址…

32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩 就是前端页面如果改动的比较多&#xff0c;那么响应就会比较慢&#xff0c;可以通过设置HTTP响应压缩来提高响应&#xff0c;如果前端改动少&#xff0c;那么就不需要启动这个响应压缩。 目的&#xff1a;为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…

Android Jetpack Compose中使用字段验证的方法

Android Jetpack Compose中使用字段验证的方法 数据验证是创建健壮且用户友好的Android应用程序的关键部分。随着现代UI工具包Jetpack Compose的引入&#xff0c;处理字段验证变得更加高效和直观。在这篇文章中&#xff0c;我们将探讨如何在Android应用中使用Jetpack Compose进…

快速搭建 Linux 学习平台

最近换了一个新的笔记本电脑&#xff0c;原来的学习环境没了&#xff0c;所以就重新搭建一下&#xff0c;顺便把这个过程给记录下来&#xff0c;希望可以帮助有需要的人。一个学习环境最主要的目的是简化学习需要准备的时间&#xff0c;不需要花费太多的时间在哪些不必要的细枝…

ZD Soft Screen Recorder 注册汉化版 【好用的屏幕录制软件】

ZD Soft Screen Recorder 汉化版捕获计算机屏幕上的内容与声音&#xff0c;并保存为各种格式压缩的视频文件。你在屏幕上看到的一切都可以在高帧速率连续进行记录。其结果视频在记录时间内清晰再现画面内容&#xff0c;所以是声音。 ZD Soft Screen Recorder 也能够拍摄图像的截…

树莓派控制ZD-8731两相步进电机驱动器

之前写过一篇驱动步进电机的文章&#xff0c;可以跟这篇参考着看。请戳这里&#xff01; 一、硬件&#xff1a; 树莓派3B ZD-8731驱动器 与驱动器配套的步进电机 电源 驱动器需要24V电源供电&#xff08;用电很危险&#xff0c;请注意安全&#xff01;&#xff09; 二、…

linux内核编译无线网卡,ZD1211B芯片USB无线网卡Linux驱动的编译

我用的无线网卡芯片是zd1211b的&#xff0c;在网上找到很多驱动都不好用&#xff0c;最后在这里上找到好用的驱动 我们用的Linux内核是2.6.14的。驱动的交叉编译非常简单&#xff0c;在其Makefile中修改交叉编译器&#xff0c;然后把相应的KERNEL_SOURCE&#xff0c;MODPATH&am…

c -2 数组 指针 %zd 结构体

数组的初始化方式 初始化方式 int a[3] {10, 9, 6};int a[3] {10,9};int a[] {11, 7, 6};int a[4] {[1]11,[0] 7}; 数组与函数 数组作为函数参数,可以省略元素个数. 数组作为函数参数.传递是整个数组的地址,修改函数形参, 数组元素的值,会影响到外面的实参数组. 数组当做函…