摘要:本文对内部(集成在处理器内部)看门狗定时器(WTD)与外部(基于硬件) WDT的优势和劣势进行了对比。内部看门狗便于设计,但容易失效。MAXQ2000微控制器的WDT可以作为内部看门狗的一个例子。基于硬件的看门狗定时器需要占用额外的电路板空间,但在对于可靠性要求较高的设计中确实不可或缺的。本文给出了一个对照表,总结了每种WDT方案的优缺点。
本文介绍了一些针对具体应用选择最佳定时器的考虑。
具有WDT功能的系统非常适合检测误码,中断(包括存储器故障,EMI对存储器或接口放电)可能导致临时性的误码。这些误码会导致处理器输入、输出数据的极性翻转,当误码没引入到程序信息中时,微处理器将会执行错误的代码。很有可能造成处理器开始执行操作数,而非操作代码。程序开始执行这种错误代码时,将造成程序运行不正常,无法提供看门狗清零信号,从而导致处理器复位。合理的系统设计能够在复位后恢复系统的正常运行。
需要注意的是,WDT不能检测瞬态故障,按照定义,只有在WDT计数器达到预定的时间间隔时才会复位处理器。正是这一原因,需要选择一个最短超时周期,以便在系统失控之前由WDT产生复位,使系统恢复正常工作。
正确的软件操作能够在要求的期限内提供数字信号跳变,确保计数寄存器不会发生溢出。但当程序进入一个无限循环或出现“死机”时,将无法清零计数寄存器。发生这种情况时,看门狗将触发一次复位。WDT周期是计数器溢出的时间,为避免复位,必须在短于超时周期的时间内清零看门狗定时器。
有些WDT在基本计数寄存器架构的基础上增添了更多功能,例如:“窗检测”WDT或“最小/最大"超时WDT,这一功能会在发生过慢或过快的看门狗定清零时产生复位。如果在计数寄存器的数值低于某个门限时出现寄存器清零信号,器件将触发复位。简单地说,是在发生看门狗清零过快时触发复位,可以避免处理器工作在晶体标称频率的谐波状态下。另外一个功能是利用逻辑输入(外部看门狗)或寄存器位(内部看门狗)禁止WDT功能。
没有看门狗清零操作时,MAXQ2000'的WDT溢出,由此触发中断,经过512个系统时钟周期后自行复位。中断为保存调试信息提供了“最后一次机会”,大多数设计人员认为这一机会对于电路开发及故障排查至关重要。除了存储调试信息外,中断还用于从故障状态下恢复工作,清除看门狗计数器。后者会对系统的可靠性产生一定的影响。
与其它内部WDT类似,MAXQ2000的看门狗可以通过软件禁止。值得注意的是,这一功能可能是一把双刃剑:在程序运行失效时会禁止看门狗,导致系统的进一步混乱。
有些处理器将它们的WDT连接到一个独立于系统时钟的内部振荡器。虽然MAXQ2000的WDT时钟由系统时钟驱动,MAXQ2000的时钟电路可以在主时钟失效时切换到备份RC振荡器。
MAX6369 WDT的逻辑输入引脚可以禁止定时器工作,防止复位。它通常连接到微处理器的一个逻辑引脚,这种方式对可靠性构成一定的威胁,因为在程序运行失效时可能会意外禁止看门狗功能。大多数情况下,需要在上电过程中(处理器导入程序时)禁止看门狗功能。MAX6369在复位后提供了一个额外的长周期看门狗超时。看门狗第一次清零后恢复到常规超时周期。这种方式比从外部禁止看门狗功能或重新使能看门狗功能更加可靠。
外部看门狗定时器还可以监测VCC电源,在电压跌落到指定的门限以下时触发系统复位。有些定时器还提供了具有去抖动电路和ESD保护的手动复位输入。这种IC内部的电压检测器能够在整个工作温度范围内保持较高精度,优于集成在处于电源失效状态的微处理器内部的方案。
表1. 看门狗定时器比较
引言
看门狗定时器(WDT)在出现无效的软件运行状态时用来强行复位(硬件复位)嵌入式微处理器或微控制器,失效状态可以是简单地触发寄存器的某一位,或者是射线干扰或EMI (电磁辐射)。本文介绍了一些针对具体应用选择最佳定时器的考虑。
WDT的典型应用
防止微处理器闭锁是WDT的一个典型应用,通常,嵌入式软件有一个“主循环”程序,用其调用子程序以实现不同的任务。每次程序循环对WDT进行一次复位,如果任何原因造成程序循环操作失败,看门狗定时器则发生超时,对器件进行复位。具有WDT功能的系统非常适合检测误码,中断(包括存储器故障,EMI对存储器或接口放电)可能导致临时性的误码。这些误码会导致处理器输入、输出数据的极性翻转,当误码没引入到程序信息中时,微处理器将会执行错误的代码。很有可能造成处理器开始执行操作数,而非操作代码。程序开始执行这种错误代码时,将造成程序运行不正常,无法提供看门狗清零信号,从而导致处理器复位。合理的系统设计能够在复位后恢复系统的正常运行。
需要注意的是,WDT不能检测瞬态故障,按照定义,只有在WDT计数器达到预定的时间间隔时才会复位处理器。正是这一原因,需要选择一个最短超时周期,以便在系统失控之前由WDT产生复位,使系统恢复正常工作。
内部和外部WDT
WDT可以内置于微处理器,例如:MAXQ2000微控制器;也可以是一个独立的IC (外部WDT),或作为支持ASIC的一部分。无论是内部WDT,还是外部WDT,各有其优缺点。内部定时器有助于节省成本,但容易受程序运行失效的影响。相对成本较高的外部WDT具有一个独立的时钟源,能够提供更高的可靠性;经过适当配置,外部WDT不会受程序失效的影响。WDT的基本原理
WDT的核心电路是计数寄存器,时钟源连续递增计数寄存器的值,计数器发生溢出时,看门狗逻辑电路强制系统复位。为防止复位,必须周期性地将计数寄存器清零,称其为“喂狗”。外部WDT IC具有一个数字输入引脚,该引脚从低到高或从高到低的跳变将计数寄存器清零。内部WDT的“喂狗”操作则不同,例如,MAXQ2000的WDT,可以通过设置寄存器位(MOVE WDCN.0, #1)的方式复位看门狗。PIC微控制器及其它微处理器则通过专用指令(CLRWDT)复位计数寄存器。正确的软件操作能够在要求的期限内提供数字信号跳变,确保计数寄存器不会发生溢出。但当程序进入一个无限循环或出现“死机”时,将无法清零计数寄存器。发生这种情况时,看门狗将触发一次复位。WDT周期是计数器溢出的时间,为避免复位,必须在短于超时周期的时间内清零看门狗定时器。
有些WDT在基本计数寄存器架构的基础上增添了更多功能,例如:“窗检测”WDT或“最小/最大"超时WDT,这一功能会在发生过慢或过快的看门狗定清零时产生复位。如果在计数寄存器的数值低于某个门限时出现寄存器清零信号,器件将触发复位。简单地说,是在发生看门狗清零过快时触发复位,可以避免处理器工作在晶体标称频率的谐波状态下。另外一个功能是利用逻辑输入(外部看门狗)或寄存器位(内部看门狗)禁止WDT功能。
集成在微处理器内部的看门狗定时器
本文无法在有限的篇幅内列举各种微处理器(µP) WDT的案例,而是以MAXQ2000微控制器的内部WDT为例进行说明。该定时器比上述基本的计数寄存器复杂一些,类似于多数商用化微控制器芯片的WDT功能。没有看门狗清零操作时,MAXQ2000'的WDT溢出,由此触发中断,经过512个系统时钟周期后自行复位。中断为保存调试信息提供了“最后一次机会”,大多数设计人员认为这一机会对于电路开发及故障排查至关重要。除了存储调试信息外,中断还用于从故障状态下恢复工作,清除看门狗计数器。后者会对系统的可靠性产生一定的影响。
与其它内部WDT类似,MAXQ2000的看门狗可以通过软件禁止。值得注意的是,这一功能可能是一把双刃剑:在程序运行失效时会禁止看门狗,导致系统的进一步混乱。
有些处理器将它们的WDT连接到一个独立于系统时钟的内部振荡器。虽然MAXQ2000的WDT时钟由系统时钟驱动,MAXQ2000的时钟电路可以在主时钟失效时切换到备份RC振荡器。
看门狗定时器IC
专用的、外部WDT IC能够提供多项功能选择,许多厂商都可提供这种器件。有些器件,例如; MAX6752,具有“窗检测看门狗”功能。MAX6752还可通过外部电容调节看门狗的超时周期和复位脉冲宽度,以满足微处理器和具体应用的要求。MAX6369 WDT的逻辑输入引脚可以禁止定时器工作,防止复位。它通常连接到微处理器的一个逻辑引脚,这种方式对可靠性构成一定的威胁,因为在程序运行失效时可能会意外禁止看门狗功能。大多数情况下,需要在上电过程中(处理器导入程序时)禁止看门狗功能。MAX6369在复位后提供了一个额外的长周期看门狗超时。看门狗第一次清零后恢复到常规超时周期。这种方式比从外部禁止看门狗功能或重新使能看门狗功能更加可靠。
外部看门狗定时器还可以监测VCC电源,在电压跌落到指定的门限以下时触发系统复位。有些定时器还提供了具有去抖动电路和ESD保护的手动复位输入。这种IC内部的电压检测器能够在整个工作温度范围内保持较高精度,优于集成在处于电源失效状态的微处理器内部的方案。
结论
表1列举了外部和内部WDT的优势和劣势,采用外部看门狗定时器IC相对成本较高,但可满足高可靠性系统的要求。将WDT的禁止输入连接到微处理器(可以通过软件禁止看门狗复位),会影响内部看门狗定时器的可靠性。集成在微处理器内部的看门狗定时器比较适合对可靠性要求不高的应用,好处是能够降低成本。表1. 看门狗定时器比较
External WDTs | Internal WDTs | |
Pros |
|
|
Cons |
|
|
评论
查看更多