引言
在以单片机、DSP等处理器为核心的数字系统中,看门狗是不可缺少的一部分,特别是在对可靠性要求极高的系统中,如箭上伺服控制器,由于箭体内强弱电交叉使用,或者地面测试环境复杂多变,会产生诸多干扰和辐射。它们的冲击会使CPU在执行指令时的地址码或操作码发生变化,甚至将操作数作为操作码执行,导致程序跑飞。为使系统在规定时间内重新正常工作,一种有效的措施是采用硬件看门狗技术。
本设计的最初思路来源:实现高可靠性数字伺服控制器软、硬件看门狗的双冗余设计要求,目前缺少军品级国产化硬件看门狗器件,在满足系统要求的情况下减少元器件的种类。
1看门狗技术的实现方式
看门狗实现方式可分为以下两种:
硬件看门狗——采用一个独立于CPU的定时器电路或芯片,如MAX706或TPS3823等,周期性地产生复位脉冲,而CPU必须及时“喂狗”(在复位脉冲发出前对此定时器进行清零处理),否则看门狗发挥作用,复位脉冲会使CPU重启。
软件看门狗——利用CPU内部的定时器中断替代看门狗定时器电路,在中断程序中复位CPU,这同样发挥了看门狗的作用。但由于CPU中断存在优先级、屏蔽以及中断自身故障等原因,都可能导致软件看门狗工作异常。软件看门狗往往采用一些其他软件设计措施提高其可靠性。
2基于CPLD的硬件看门狗设计
2.1硬件平台
此设计基于箭上数字伺服控制器,以TI公司的TMS320F2812(下面简称为DSP)为控制核心,SM1032则用来实现对A/D、D/A和1553B 总线的片选信号和逻辑控制信号译码,并在此基础上增加了硬件看门狗功能。与其相关的电路连接如图1所示,其中看门狗使能信号EN与DSP_JTAG电路相连,在DSP下载程序或在线仿真时可通过专用的JTAG工装电缆禁止看门狗功能,防止看门狗的误操作。
图1TMS3320F2812电路连接图
本设计适用于以微控制器与FPGA或CPLD联合使用的数字控制系统中。利用FPGA或CPLD的剩余资源设计看门狗模块,相当于硬件看门狗的一种,其基本功能和特点有:当软件跑飞且主控芯片内部看门狗工作异常时,可为系统进行复位操作;可关闭主控芯片内部的软件看门狗,优化软件代码;可节省专用的看门狗芯片,且在不同时序要求上灵活修改;可根据系统要求增加与主控芯片的握手信号。
2.2DSP上电过程及复位时序分析
DSP 上电初始化时序如图2所示。WDT是喂狗信号输出,在定时器中断或主循环中使其电平周期性取反;RST是上电复位信号。Trst是上电复位信号的脉宽,约为100 ms;Twork是从上电时到首次进入定时器中断程序的时间,约为130 ms。在主程序中首先使WDT输出低电平,则从上电复位完成到WDT变为低电平的时间A为DSP复位后自身的各项配置所占用的时间。在定时器中每次取反 WDT信号,则到WDT第一次变为高电平的时间B为各软件模块及中断初始化所占用的时间。A+B为系统初始化所用的时间,约为30 ms。
图2DSP上电初始化时序
由此可见,如果系统程序跑飞,则每次复位都要经过A、B两个过程,约30 ms的时间;那么在CPLD软件的看门狗模块中,每次在给出复位信号后都要等待DSP的初始化完成(约30 ms)后再开始对喂狗信号监测并计时。
选择看门狗定时器溢出上限以5 ms为例,从程序跑飞到重新正常运行大约35 ms。设定控制系统给伺服发送控制指令信号的周期是20 ms,伺服机构常态速度10°/s,最大速度是20°/s,20 ms的时间摆动的角度是0.2°和0.4°,该角度是其控制姿态的最小步长,因此35 ms以内的热复位时间最多丢失两条指令,伺服机构在可控范围之内。此外,软件代码还有一定的优化余量,初始化时间和看门狗定时器溢出上限还可进一步减少。
2.3看门狗设计要考虑的几点问题
① 喂狗方式:可分为电平喂狗和边沿喂狗,本设计采用后者。与电平喂狗相比较,边沿喂狗在状态机的设计中可以减少状态数量,从而节省CPLD资源,且DSP的喂狗也很容易,只要取反WDT电平,就可被认为已喂狗,简化软件代码。
② 定时器溢出上限:根据具体需要灵活设定,这里暂定5 ms。
③ 输出系统复位信号脉宽:这里只要超过DSP所需的512个时钟周期即可,以30 MHz晶振为例,时长约为171 μs。
④ 系统上电初始化时间:系统上电复位后DSP需要一断时间初始化,而这段时间内不能喂狗,所以CPLD不能检测是否有喂狗信号,否则会造成连续的错误复位,使DSP无法正常工作,因此在CPLD代码设计时需要越过初始化阶段再去检测喂狗信号。
⑤ 与主控芯片的握手信号:根据系统任务需求,可增加与主控芯片的握手信号。例如,当主控芯片需要实现总线写程序功能时,对DSP片内的Flash进行写操作,此时不能对DSP进行复位,DSP也无法输出喂狗信号,这就需要在总线写程序之前通过总线与CPLD实现握手与应答,关闭看门狗功能,程序写入完成后系统重新加电即可正常工作。为了简化功能描述,本设计未加入握手设计。
2.4看门狗状态机的设计
此设计采用Mealy 型状态机,使用Verilog HDL语言编写代码,信号、寄存器说明如下所示:Count,时间计数器;NUM1,定时器溢出上限(5 ms);NUM2,输出复位脉冲宽度(大于171 μs);NUM3,上电复位后等待DSP初始化的时间(30 ms);WDT_flag,3位宽移位寄存器,接收喂狗信号,比较首末位是否相等来判断是否有喂狗信号;SYS_RST,看门狗输出的系统复位信号;WAIT、IDLE、ADDING、ERROR、KEEPING,状态机的5个状态;EN,看门狗功能使能信号,高电平禁止,低电平使能。
图 3为状态转移图。在任意状态时如果EN使能信号被禁止,则状态机进入IDLE状态。在图上不一一标出EN的条件转移曲线。系统上电复位后进入WAIT状态,等待NUM3时间使DSP完成初始化;进入IDLE状态,如使能看门狗功能;进入ADDING状态累加计时,如果在限定时间NUM1内监测到喂狗信号,表明程序运行正常,返回IDLE状态等待下一次喂狗信号,如果超过NUM1未收到喂狗信号,认为程序已经跑飞,进入EEROR状态;EEROR状态中输出复位信号并清零计数器;进入KEEPING状态,使低电平保持一段时间NUM2,这段时间超过DSP所需的复位时间即可;进入WAIT状态,复位后重新等待DSP完成初始化,循环往复。
图3状态转移图
图4仿真波形1
3基于CPLD的硬件看门狗的仿真与验证
3.1功能仿真
使用Modelsim软件进行功能仿真,可以看出EN信号和WDT(喂狗信号)的变化对SYS_RST输出的影响。编写测试文件对EN使能、禁止,WDT信号喂狗间隔小于、大于定时器溢出上限,以及不喂狗等情况进行仿真。
仿真波形1如图4所示。EN处于使能状态,WDT在限定时间内有边沿变化时,对应的移位寄存器也发生变化,使 WDT_flag[2]!=WDT_flag[0],喂狗成功,不会输出复位信号;在SYS_RST第二个低电平处,对应的WDT超过了限定时间没有变化,故输出复位信号。
仿真波形2如图5所示。由仿真波形可看出,在EN高电平时,不会输出喂狗信号,使能信号测试通过,喂狗信号在EN使能时如不能在限定时间内喂狗,则输出系统复位信号。由仿真波形看出功能得到实现。
3.2硬件平台验证
图5仿真波形2
在伺服控制器上对基于CPLD的硬件看门狗功能进行验证。DSP上电初始化完成后,先正常输出喂狗信号一段时间,然后停止输出喂狗信号,通过示波器捕获 CPLD输出的系统复位信号,波形如图6所示,光标1是系统复位信号SYS_RST波形,光标2是DSP输出的喂狗信号WDT波形。从波形图前半段可以看出,WDT正常喂狗时,SYS_RST保持高电平,当WDT保持高电平一段时间后SYS_RST输出低电平,实现系统复位。复位后经过一段时间的初始化过程后,WDT开始正常喂狗。
图6看门狗实现复位的波形图
通过以上软件的功能仿真和硬件平台上的验证,可以看出,基于FPGA/CPLD的系统外部硬件看门狗的功能得到实现,与预期目标吻合。
结语
在数字伺服控制系统中,利用其中已包含的CPLD或FPGA电路设计硬件看门狗模块,既可以满足系统对硬件看门狗功能的需求,又可以节省专用的看门狗芯片,节省电路板的空间,提高了系统的可靠性,提高了可编程逻辑器件的资源利用率,并且可以针对不同的系统上电、复位等时序要求灵活配置时间参数。经验证,设计达到了看门狗电路的功能要求,能够有效保证软件的可靠性,亦可应用于其他数字控制系统平台。