一种采用FPGA实现的通用看门狗电路

2015-11-24 01:57韩振国
大众科技 2015年11期
关键词:看门狗计数器寄存器

高 毅 韩振国

(中航工业西安航空计算技术研究所,陕西 西安 710015)

一种采用FPGA实现的通用看门狗电路

高 毅 韩振国

(中航工业西安航空计算技术研究所,陕西 西安 710015)

为了保障嵌入式系统的实时性,提高系统的可靠性,通常采用看门狗电路对系统运行情况进行监控并在必要时对系统进行复位。文章介绍了一种用FPGA实现的看门狗电路,其配置灵活、使用简便,可以满足多种系统要求。

看门狗;FPGA

嵌入式系统广泛应用于工业自动化、医疗仪表、航空航天等领域,其抗干扰能力是衡量系统性能的重要指标,特别是在对可靠性有严格要求的机载航空电子系统中,看门狗是保障系统稳定运行的重要手段,可以及时监控嵌入式系统软件是否在规定的时间内执行了规定的指令,如果发现进入错误状态可以及时发起中断或复位。

1 看门狗的原理

看门狗是一种监控系统的运行状况的手段,通过软硬件结合的方式实现对系统运行状况的监控。稳定运行的软件会在执行完特定指令后进行喂狗,若在一定周期内看门狗没有收到来自软件的喂狗信号, 则认为系统故障,会进入中断处理程序或强制系统复位。看门狗的工作流程见图1,系统上电后根据不同的工作模式可以选择使能看门狗的时机,若看门狗被使能则计数器开始计数,如果在设定的时间内没有及时喂狗则会发生看门狗超时。看门狗主要由寄存器、计数器和狗叫模块构成;通过寄存器对看门狗进行基本设置,计数器计算狗叫时间,狗叫模块决定看门狗超时后发出的中断或复位方式。

图1 看门狗工作流程

2 看门狗的实现

用FPGA实现看门狗接线简单、通用性好,可以根据系统需求进行灵活配置,可以选择将看门狗功能模块挂接在不同的系统总线上;看门狗计时分辨率可配置;超时时间可配置;中断模式可配置;狗叫输出形式可配置。如图2所示,FPGA实现的看门狗分三个功能模块,总线接口模块、看门狗核模块和复位模块,通过修改顶层文件,可以实现对看门狗功能的配置。

图2 看门狗功能实现图

总线接口模块可以通过修改顶层文件实现将看门狗挂接在不同总线上。既可以选择将看门狗功能模块挂接在LBE或HLP等异步总线上,也可以挂接在PCI或PCIE等同步总线上,同时支持8位、16位或32位的数据访问。同时总线接口模块还完成地址信号、数据信号、读写控制信号等信号和看门狗时钟的同步工作,保障读写信号的低电平有效时间大于两个看门狗时钟周期;保障写信号下降沿之后的一个时钟周期内片选信号和地址信号已经稳定;保障片选信号读信号地址信号稳定后两个时钟周期输出数据信号稳定。

看门狗核实现看门狗的核心功能,内置计时分辨率、超时时间、看门狗使能、喂狗等寄存器,只需修改寄存器值就可以实现不同的功能配置。

计时分辨率配置,FPGA逻辑中可以灵活选择接入不同的看门狗时钟,通过软件配置分频因子,设置需要的计时分辨率。例如:如果看门狗时钟接入的是66MHz,分频因子配置为66,那么计时分辨率为1us。

看门狗超时时间配置,配置看门狗超时寄存器可以设定看门狗超时时间,即多长时间内没有进行软件喂狗操即触发看门狗叫。如果计时分辨率是1 us, 那么超时时间可以设置成1us~71.5min 的任意值;如果计时分辨率是50ns,那么超时时间可以设置成50ns~3.5min 的任意值。

使能看门狗,产品上电后可以通过向看门狗使能寄存器中写“1”来使能看门狗。通过这种方式可以控制何时启动看门狗工作,可以选择上电即启动看门狗也可以在某种模式下选择过一段时间再使能看门狗。一旦看门狗使能则所有配置寄存器变成只读模式以保障系统稳定运行。

看门狗叫方式配置,通过配置相应的寄存器可以将看门狗中断模式配置为电平模式或脉冲模式,脉冲宽度可调以满足不同的系统需求。看门狗复位信号也提供几种配置方式:可以选择狗叫后立即发出复位信号也可以选择狗叫几次再发出复位信号;发出的复位信号可以接入如图2的复位模块和软件复位配合发出快速复位信号,也可以直接输出到外部复位芯片的输入端以产生较长的复位信号。

表1 通用看门狗寄存器

3 看门狗功能仿真

3.1电平式狗叫方式

根据某系统需求配置看门狗参数如下:看门狗时钟使用100MHz;分频系数配置为10,表示看门狗计数器的分辨率是为10 * 10ns = 100ns;设置超时计数器值配置为5,表示看门狗超时时间为5 * 100ns = 0.5us;使能看门狗,超时计数器(cur_timecnt)从5,4,3,… 开始递减;脉冲宽度寄存器(cur_pulsetimecnt)填全0,即看门狗中断为电平保持模式;喂狗一次(feed_dog_reg),看门狗超时计数器重新计数一次;超过0.5us不喂狗,即看门狗超时,看门狗中断信号wdg_int_L出现持续低电平;喂狗后电平升高,看门狗计数器重新计数。狗叫次数上限(cur_dogbarkcnt)设置为3,即发生连续三次看门狗超时即发出复位信号wdg_ResetOut_L。

图3 电平式狗叫仿真图

3.2脉冲式狗叫方式

看门狗时钟、分频系数、超时计数器的配置与电平式狗叫方式配置为相同。脉冲宽度寄存器(cur_pulsetimecnt)填4,表示采用中断脉冲模式,脉冲时间为: 4 * 100ns = 0.4us;喂狗一次(feed_dog_reg),超时计数器重新计数一次;超过0.5us不喂狗,看门狗中断信号wdg_int_L出现持续0.4us的负脉冲,0.4us后脉冲自动撤销。

图4 脉冲式狗叫仿真图

3.3看门狗驱动及测试

以FPGA实现的看门狗电路驱动程序编写非常简便,使能看门狗、禁止看门狗、喂狗、设置超时时间等函数都只用向相应的寄存器地址赋值即可。

由于不同系统需求不同,这里只提供一个简单通用测试方法:看门狗中断处理函数只做中断次数加1并打印中断次数;看门狗测试函数挂接并使能中断服务程序后进行喂狗、使能看门狗操作,延迟一段时间后检查中断次数是否大于1,若中断次数大于1则认为看门狗超时后能发出中断信号,看门狗基本功能正常。

4 小结

用FPGA实现看门狗电路配置灵活成本低廉可以满足大部分系统的需求,能有效监控系统程序运行状况在程序跑飞时及时保护中断现场,在突发状况下及时复位系统避免系统失控。经过多个系统的应用和完善这种看门狗实现方式性能稳定可靠有良好的抗干扰效果,大大提高了系统可靠性。

[1] 王幸之.单片机应用系统电磁干扰与抗干扰技术[M].北京:北京航空航天大学出版社,2006.

[2] 李广弟,朱月秀.单片机基础[M].北京:北京航空航天大学出版社,2001.

[3] 王路,王楠.软硬件结合实现的“看门狗”技术[J].现代电子技术,2006,(8):88-89.

A general watchdog circuit implemented by FPGA

Generally, watchdog is used to monitor operating status of an embedded system and reset it if necessary, for ensuring real-time and improving reliability. This paper introduces a watchdog implemented in FPGA, which can be configured flexibly and is easy to use, to meet the requirement of various systems.

Watchdog;FPGA

TM925

A

1008-1151(2015)11-0001-02

2015-10-11

高毅(1983-),女,中航工业西安航空计算技术研究所工程师,硕士,研究方向为高性能数据信号处理技术。

猜你喜欢
看门狗计数器寄存器
采用虚拟计数器的电子式膜式燃气表
STM32和51单片机寄存器映射原理异同分析
一种嵌入式计算机系统的看门狗设计
Lite寄存器模型的设计与实现
把他叫醒
计数器竞争冒险及其处理的仿真分析
把它叫醒
把它叫醒
三值绝热多米诺可逆计数器设计
基于单片机的仰卧起坐计数器