本设计的最初思路来源:实现高可靠性数字伺服控制器软、硬件看门狗的双冗余设计要求,目前缺少军品级国产化硬件看门狗器件,在满足系统要求的情况下减少元器件的种类。 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 工装电缆禁止看门狗功能,防止看门狗的误操作。 本设计适用于以微控制器与FPGA或CPLD联合使用的数字控制系统中。利用FPGA或CPLD的剩余资源没计看门狗模块,相当于硬件看门狗的一种,其基本功能和特点有:当软件跑飞且主控芯片内部看门狗工作异常时,可为系统进行复位操作;可关闭主控芯片内部的软件看门狗,优化软件代码;可节省专用的看门狗芯片,且在不同时序要求上灵活修改;可根据系统要求增加与主控芯片的握手信号。 2.2 DSP上电过程及复位时序分析 DSP上电初始化时序如图2所示。WDT是喂狗信号输出,在定时器中断或主循环中使其电平周期性取反;RST是上电复位信号。Trst是上电复位信号的脉宽,约为100 ms;Twork是从上电时到首次进入定时器中断程序的时间,约为130 ms。在主程序中首先使WDT输出低电平,则从上电复位完成到WDT变为低电平的时间A为DSP复位后自身的各项配置所占用的时间。在定时器中每次取反WDT信号,则到WDT第一次变为高电平的时间B为各软件模块及中断初始化所占用的时间。A+B为系统初始化所用的时间,约为30ms。 由此可见,如果系统程序跑飞,则每次复位都要经过A、B两个过程,约30 ms的时间;那么在CPLD软件的看门狗模块中,每次在给出复位信号后都要等待DSP的初始化完成(约30 ms)后再开始对喂狗信号监测并计时。 选择看门狗定时器溢出上限以5ms为例,从程序跑飞到重新正常运行大约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_fiag,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 基于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 硬件平台验证 在伺服控制器上对基丁CPLD的硬件看门狗功能进行验证。DSP上电初始化完成后,先止常输出喂狗信号一段时间,然后停止输出喂狗信号,通过示波器捕获CPLD输出的系统复位信号,波形如图6所示,光标1是系统复位信号SYS_RST波形,光标2是DSP输出的喂狗信号WDT波形。从波形图前半段可以看出,WDT正常喂狗时,SYS_RST保持高电平,当WDT保持高电平一段时间后SYS_RST输出低电平,实现系统复位。复位后经过一段时间的初始化过程后,WDT开始正常喂狗。 通过以上软件的功能仿真和硬件平台上的验证,可以看出,基于FPGA/CPLD的系统外部硬件看门狗的功能得到实现,与预期目标吻合。 结语 在数字伺服控制系统中,利用其中已包含的CPLD或FPGA电路设计硬件看门狗模块,既可以满足系统对硬件看门狗功能的需求,又可以节省专用的看门狗芯片,节省电路板的空间,提高了系统的可靠性,提高了可编程逻辑器件的资源利用率,并且可以针对不同的系统上电、复位等时序要求灵活配置时间参数。经验证,没计达到了看门狗电路的功能要求,能够有效保证软件的可靠性,亦可应用于其他数字控制系统平台。
|