CN103678780A - 一种硬件容错电路 - Google Patents

一种硬件容错电路 Download PDF

Info

Publication number
CN103678780A
CN103678780A CN201310609798.5A CN201310609798A CN103678780A CN 103678780 A CN103678780 A CN 103678780A CN 201310609798 A CN201310609798 A CN 201310609798A CN 103678780 A CN103678780 A CN 103678780A
Authority
CN
China
Prior art keywords
chip
module
counter
hardware
hardware fault
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310609798.5A
Other languages
English (en)
Inventor
蔡立安
淳增辉
邓玉华
陈昊
郑霞
郭浩
徐鹏飞
汤灵
程晓
李三
张翼
邓松
徐翔
何裕舒
吴昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
722th Research Institute of CSIC
Original Assignee
722th Research Institute of CSIC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 722th Research Institute of CSIC filed Critical 722th Research Institute of CSIC
Priority to CN201310609798.5A priority Critical patent/CN103678780A/zh
Publication of CN103678780A publication Critical patent/CN103678780A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

本发明属于有线数字通信领域,具体为一种硬件容错电路,包括设有CPU的单板,其特征在于:所述CPU芯片具有一个硬件复位管脚、两个通用输入输出管脚和一组本地总线引脚,所述CPU芯片的硬件复位管脚、两个通用输入输出管脚和本地总线引脚分别直接联接到CPLD芯片,所述单板上的一条周期脉冲输入信号线联接到CPLD芯片。本发明具有如下优点:1、可根据喂狗信号变化周期的时间要求动态调整喂狗时间间隔参数,以适配不同的应用场景;2、可与多种CPU配套使用,兼容性高。

Description

一种硬件容错电路
技术领域
本发明属于有线数字通信领域,具体为一种硬件容错电路。
背景技术
在硬件电路系统设计中,无法保证单板的软硬件系统不存在任何错误,因此单板的容错技术是必不可少的,一般使用硬件看门狗电路来检测单板的运行健康状态,如果出现任务挂起等软件或硬件异常,则可以自动重启单板,达到容错的目的。
XPC860系列芯片是通信领域广泛使用的一款多用途微控制器芯片。在目前通用的电路设计中,一般使用XPC860系列芯片内置的看门狗模块或者是使用专用电路芯片来完成单板的看门狗功能,实现硬件容错。但分析这两种硬件电路实现,发现存在以下一些不足。
a)芯片内置看门狗采用内部寄存器控制,时钟分频因子以及计数值有限制,看门狗控制程序和应用程序之间有较紧密的联系,且无法进行合理调整,会导致应用程序功能受到约束。如XPC866芯片工作时钟处于100MHz情况下,最长喂狗时间间隔约为1.35秒,不利于完成嵌入式操作系统启动时相关的程序代码。
b) XPC860系列芯片内置的看门狗模块的控制非常严格,每次芯片硬件重启后只能打开或者关闭看门狗1次,不能灵活处理看门狗的开启、关闭,不利于单板应用软件的功能调试和集成。
c) 如果使用外置专用电路芯片来完成单板的看门狗功能,则喂狗时间间隔一般为确定值,如典型值在1.6s左右,无法实现动态的喂狗时间间隔以匹配单板在不同时期的容错需求。
发明内容
本发明的目的在于克服上述不足,提供一种可灵活控制、可动态调整喂狗时间间隔参数的硬件容错电路。
为实现上述技术目的,本发明提供的方案是:一种硬件容错电路,包括设有CPU的单板,所述CPU芯片具有一个硬件复位管脚、两个通用输入输出管脚和一组本地总线引脚。
所述CPU芯片的硬件复位管脚、两个通用输入输出管脚和本地总线引脚分别直接联接到CPLD芯片。
所述单板上的一条周期脉冲输入信号线联接到CPLD芯片,此周期脉冲输入信号线可以选用该单板上已有的一种周期脉冲信号,常见的情况是使用单板上一个时钟信号
而且,所述CPLD芯片包括计数器模块、复位脉冲发生器模块和计数上限寄存器模块,计数上限寄存器模块分别与本地总线、计数器模块联接,所述CPU芯片的一个通用输入输出管脚分别联接计数器模块和复位脉冲发生器模块,所述CPU芯片的另一个通用输入输出管脚联接计数器模块,所述单板上的周期脉冲输入信号线分别联接计数器模块和复位脉冲发生器模块,计数器模块与复位脉冲发生器模块联接。
而且,所述计数器模块包含高电平计数器和低电平计数器两个计数器。
而且,所述CPU芯片是XPC860系列芯片。
本发明具有如下优点:1、可将喂狗信号周期典型值灵活控制在100ms-4s之间,可根据喂狗信号变化周期的时间要求动态调整喂狗时间间隔参数,以适配不同的应用场景;2、可与包括XPC860系列芯片在内的多种CPU配套使用,只要该CPU芯片能提供一个硬件复位管脚、两个通用输入输出管脚以及一组本地总线引脚即可实现,兼容性高。
附图说明
图1为本发明容错电路设计图。
图2为本发明容错电路的CPLD功能原理框图。
图3为本发明容错电路的工作时序图。
图4为本发明容错电路的计数上限寄存器读时序图。
图5为本发明容错电路的计数上限寄存器写时序图。
具体实施方式
下面结合附图及实施例对本发明作进一步说明。
本实施例提供一种硬件容错电路,如图1所示,包括设有CPU的单板,所述CPU芯片具有一个硬件复位管脚(下文称HReset)、两个通用输入输出管脚(下文称GPIO)和一组本地总线引脚。
所述CPU芯片的HReset、两个GPIO和本地总线引脚分别直接联接到CPLD芯片。CPU芯片通过控制两个GPIO管脚输出高低电平来控制CPLD的内部看门狗电路工作,这两个GPIO在分别称作WDFeed和WDEnable,分别完成喂狗和看门狗启停控制功能。CPU芯片通过控制本地总线信号实现对CPLD内部看门狗控制寄存器的操作。
所述单板上的一条周期脉冲输入信号线(下文称WDClk)联接到CPLD芯片,此周期脉冲输入信号可以选用该单板上已有的一种周期脉冲信号,常见的情况是使用单板上一个时钟信号。
CPU芯片通过设置内部寄存器值使WDEnable和WDFeed引脚成为输出端口,连接CPLD芯片,提供看门狗使能信号和喂狗信号,CPLD芯片通过内部逻辑操作控制HReset信号对CPU芯片进行复位。考虑到系统初上电时期CPU管脚状态的不可预知性,将HReset和WDEnable通过2个4.7千欧的电阻上拉到逻辑高电平Vcc。CPU芯片通过控制本地总线实现对看门狗内部寄存器的操作,本地总线一般由8位数据线、1根片选和1根读写信号线组成,CPLD芯片通过内部逻辑来实现参数寄存器的功能。
当看门狗使能信号WDEnable有效时,看门狗通过WDFeed信号的高低电平变化来判断单板是否出现软硬件故障,如果WDFeed信号的高电平或低电平维持时间大于看门狗计数器的最大计数时间,看门狗则认为软件或硬件出现故障,此时CPLD内部看门狗会驱动HReset管脚将CPU硬复位,使CPU重新开始启动运行恢复到工作状态,达到单板容错的目的。
进一步的,如图2所示,所述CPLD芯片包括计数器模块、复位脉冲发生器模块和计数上限寄存器模块。计数上限寄存器模块分别与本地总线、计数器模块联接,实现对看门狗计数器计数阀值的控制。所述CPU芯片的一个通用输入输出管脚分别联接计数器模块和复位脉冲发生器模块,所述CPU芯片的另一个通用输入输出管脚联接计数器模块,所述单板上的周期脉冲输入信号线分别联接计数器模块和复位脉冲发生器模块,计数器模块与复位脉冲发生器模块联接。
进一步的,所述计数器模块包含高电平计数器和低电平计数器两个计数器。他们以WDClk上的时钟为计数时钟。高电平计数器负责对喂狗信号WDFeed的高电平进行计数,当WDFeed为低电平时计数器清零,否则高电平计数器加1;低电平计数器负责对WDFeed的低电平进行计数,当WDFeed为高电平时计数器清零,否则低电平计数器加1。一旦任何一个计数器的计数超过计数阀值,则输出低电平到复位脉冲发生器。复位脉冲发生器模块能够利用工作时钟WDClk输出低电平复位脉冲,当计数器输出低电平,并且使能信号WDEnable有效时,则脉冲发生器模块开始工作,输出低电平复位脉冲到HReset。
进一步的,所述CPU芯片是XPC860系列芯片。
整个容错电路的基本工作原理以及工作时序如图3所示(注:T1=T2<8ms*计数上限寄存器值,T3>8ms*计数上限寄存器值)。主要过程如下:
1)      单板加电后,XPC860的GPIO管脚默认为输入,由于上拉电阻R1存在,WDEnable信号为高电平,CPLD芯片的看门狗电路处于不工作状态,HReset输出高电平,系统正常启动;
2)      CPU控制WDFeed输出周期为T2的周期信号,开始喂狗;
3)      CPU控制将WDEnable信号线置为低电平,CPLD内部计数器开始工作,内部计数器先清零后,再开始使用WDClk作为计数时钟开始计数;
4)      如果CPU在CPLD内部计数达到设定的计数阀值之前控制WDFeed电平发生了变化,CPLD内部计数电路重新开始计数,不产生复位;如果CPU无法在CPLD内部计数达到设定的计数阀值之前控制WDFeed电平变化,CPLD内部计数电路则判定该单板已处于异常状态,并驱动HReset管脚输出一个负脉冲,实现对CPU的硬件复位;
5)      系统复位后,此时XPC860的GPIO管脚默认为输入,由于上拉电阻R1存在, WDEnable信号回到默认的高电平,看门狗停止工作并释放对HReset引脚的控制,HReset回到默认的高电平,系统重新回到第1步;
6)      如果在任意时刻,CPU控制将WDEnable信号线置为高电平,则CPLD内部计数电路停止工作,同时内部计数器清零,单板在没有容错电路的情况下工作。
根据上面的时序以及工作原理,当CPLD判断单板出现了软硬件异常,则驱动HReset管脚将CPU硬复位,使CPU重新开始启动运行恢复到工作状态,达到单板容错的目的。
为了能够动态调整参数,寄存器模块包含一个计数上限控制寄存器,能够通过XPC860的本地总线进行读写控制,可以动态调整该数值,实现对计数器的阀值进行控制,控制喂狗信号变化周期的时间,典型值可以控制在100ms-4s之间,以适配不同的应用场景,一般内部使用一个8位寄存器。因此本地总线接口由WDcs(使用XPC860的CS7管脚),D0~D7(D0是MSB),R/W组成。其中,WDcs是片选,D0~D7是数据总线,R/W是读写控制信号。读寄存器的时序图如图4所示,写寄存器的时序图如图5所示。读写时序说明如下:
1)      不进行读写操作时,WDcs为高电平,D0~D7处于高阻态;
2)      当WDcs从高电平变为低电平且R/W为高电平时,开始进行读操作;
3)      CPLD在WDcs变低之后小于75ns的时间内使数据稳定到D0~D7数据总线上;
4)      CPU在WDcs为低电平期间完成数据总线上电平状态的读取;
5)      CPLD在WDCS信号变高后的5ns内仍然维持数据总线上电平状态;
6)      当R/W为低电平且WDcs从高电平变为低电平时,开始进行写操作;
7)      CPU需要在WDcs变低之后小于75ns的时间内稳定D0~D7数据总线上的电平状态。
8)      CPLD在WDcs为低电平期间完成数据总线上电平状态的存储;
9)      CPU需要在WDcs变高之后至少10ns内仍然维持数据总线上的电平状态。
作为一个具体实施例,本发明的CPU芯片选用MPC866PCVR100A,逻辑芯片选用EPM7256AEQI144芯片,看门狗的工作时钟采用4.096MHz晶振产生的时钟源输入作为WDClk,经CPLD芯片内部分频后提供看门狗工作时钟;CS7(引脚A3)、D0~D7、RD/WR(引脚B1)用作本地总线信号;将XPC866芯片的GPIO端口PC6(引脚R19)用作WDFeed信号,PC7(引脚M16)用作WDEnable信号,XPC866芯片通过设置内部寄存器值使该GPIO端口引脚成为输出端口,提供控制时序。使用XPC866芯片的HRESET(引脚N4)用作复位使用。
具体逻辑关系如下:
--看门狗寄存器读写
PROCESS(WDcs) 
BEGIN
    IF(WDcs = '0') THEN
         IF(R/W = '1') THEN
               D <= COUNT_RES;
             ELSE
               COUNT_RES <= D;
         END IF;
    END IF;
END PROCESS;
--使用本板4.096M时钟产生内部计数器工作周期脉冲,周期为8ms
PROCESS(WDClk) 
    VARIABLE iCNT_test: integer RANGE 0 TO 32767;
BEGIN
    IF(WDClk 'EVENT AND WDClk = '1') THEN
         iCNT_test := iCNT_test + 1;
         IF(iCNT_test = 0)THEN
               WDPulse8 <='0';
         ELSE
               WDPulse8 <='1';
         END IF;
    END IF;   
END PROCESS;
--计数器实现
 PROCESS(WDPulse8)
--iCNT_1,iCNT_0分别用于高电平计数和低电平计数
VARIABLE iCNT_1,iCNT_0 : integer RANGE 0 TO 260;
BEGIN
    IF(WDEnable = '0') THEN
         IF(WDPulse8 'EVENT AND WDPulse8 = '1') THEN
               IF(WDFeed = '0') THEN
                     IF(iCNT_1 > COUNT_RES) THEN
                          iERR1 <= '1';
                          iCNT_0 := 0;
                     ELSE
                          iCNT_1 := iCNT_1+1;
                          iERR1 <= '0';
                          iCNT_0 := 0;
                     END IF;
               ELSE
                     IF(iCNT_0 > COUNT_RES) THEN
                          iERR0 <= '1';
                          iCNT_1 := 0;
                       ELSE
                             iCNT_0 := iCNT_0+1;
                             iERR0 <= '0';
                             iCNT_1 := 0;
                       END IF;
               END IF;
         END IF;
    ELSE
         IERR1 <= '0';
         IERR2 <= '0';
    END IF;
    SOFTCHECK <= NOT (IERR1 OR IERR2);
END PROCESS;
--产生48ms负脉冲, 复位CPU, 同时硬件自动置WDEnable无效
PROCESS(WDPulse8)
VARIABLE iCNT_2 : integer RANGE 0 TO 8;
BEGIN
    IF(WDEnable = '0') THEN
         IF(SOFTCHECK = '1') THEN
               HRESET <= '1';
iCNT_2  := 7;
         ELSIF(WDPulse8 'EVENT AND WDPulse8 = '1') THEN
               iCNT_2 := iCNT_2+1;
         END IF;
         IF(iCNT_2 < 6) THEN
               HRESET <='0';
         ELSE
               HRESET <= '1';
         END IF;
ELSE
         HRESET <= '1';
iCNT_2  := 7;
END IF;
END PROCESS;
在该电路的具体应用场景中,可以根据实际要求,动态调整内部寄存器COUNT_RES的参数值,改变喂狗信号WDFeed的周期需求,以满足不同的应用场景。在上例中的典型参数值及对应的喂狗信号的周期如表1。
表1  典型参数值
序号 内部寄存器值 喂狗信号周期(2*T1)
1 255 4S
2 127 2S
3 65 1S
4 27 400ms
5 7 100ms
在单板的工作过程中,需要根据上层软件的实际要求按照合理的方式使用该容错电路功能,具体使用方法为:
1)不需要该功能时,如系统应用程序初始化好之前或者软件调试过程期间,关闭看门狗;
2)设置喂狗间隔,具体数值可参考表1;
3)通过应用软件定时控制CPU芯片的WDFeed引脚产生周期性的跳变信号(喂狗);
4)开启看门狗;
5)继续定时控制WDFeed产生周期性的跳变信号(喂狗);
6)看门狗电路正常工作。
在本实施案例中,输入时钟信号为4.096MHz时钟,但本设计也不局限于使用该频率,也可以根据实际情况,使用单板上的128KHz、512KHz、2.048MHz、8.192MHz和16.384MHz等时钟作为输入,该类型时钟在电信设备中属于常用的基本时钟,很方便即可以获取。更改输入时钟之后适当修改CPLD内部计数器iCNT_test的最大值即能正常工作。见表2。
表2  内部计数器典型参数值
序号 输入时钟频率 计数器最大值
1 16.384MHz 131071
2 8.192MHz 65535
3 4.096MHz 32767
4 2.048MHz 16383
5 512KHz 4095
6 128 KHz 1023
在本实施案例中,单板使用的CPU芯片选用MPC866PCVR100A,但本设计可以适应不同的CPU芯片,只要能提供一个硬件复位、2个GPIO以及一组本地总线引脚即可实现,可以适用于多种CPU芯片使用。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进或变形,这些改进或变形也应视为本发明的保护范围。

Claims (4)

1.一种硬件容错电路,包括设有CPU的单板,其特征在于:所述CPU芯片具有一个硬件复位管脚、两个通用输入输出管脚和一组本地总线引脚,所述CPU芯片的硬件复位管脚、两个通用输入输出管脚和本地总线引脚分别直接联接到CPLD芯片,所述单板上的一条周期脉冲输入信号线联接到CPLD芯片。
2.根据权利要求1所述的一种硬件容错电路,其特征在于:所述CPLD芯片包括计数器模块、复位脉冲发生器模块和计数上限寄存器模块,计数上限寄存器模块分别与本地总线、计数器模块联接,所述CPU芯片的一个通用输入输出管脚分别联接计数器模块和复位脉冲发生器模块,所述CPU芯片的另一个通用输入输出管脚联接计数器模块,所述单板上的周期脉冲输入信号线分别联接计数器模块和复位脉冲发生器模块,计数器模块与复位脉冲发生器模块联接。
3.根据权利要求2所述的一种硬件容错电路,其特征在于:所述计数器模块包含高电平计数器和低电平计数器两个计数器。
4.根据权利要求1或2或3所述的一种硬件容错电路,其特征在于:所述CPU芯片是XPC860系列芯片。
CN201310609798.5A 2013-11-28 2013-11-28 一种硬件容错电路 Pending CN103678780A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310609798.5A CN103678780A (zh) 2013-11-28 2013-11-28 一种硬件容错电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310609798.5A CN103678780A (zh) 2013-11-28 2013-11-28 一种硬件容错电路

Publications (1)

Publication Number Publication Date
CN103678780A true CN103678780A (zh) 2014-03-26

Family

ID=50316316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310609798.5A Pending CN103678780A (zh) 2013-11-28 2013-11-28 一种硬件容错电路

Country Status (1)

Country Link
CN (1) CN103678780A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572331A (zh) * 2015-01-08 2015-04-29 国家电网公司 具有电源监视和上电延时使能的监控模块
CN109977476A (zh) * 2019-02-28 2019-07-05 中国兵器工业集团第二一四研究所苏州研发中心 一种硬件电路中判断外部引脚互连关系的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694464B1 (en) * 1997-05-30 2004-02-17 Quickturn Design Systems, Inc. Method and apparatus for dynamically testing electrical interconnect
CN1506825A (zh) * 2002-12-10 2004-06-23 深圳市中兴通讯股份有限公司 一种看门狗实时可调复位方法和装置
CN1716212A (zh) * 2004-06-29 2006-01-04 联想(北京)有限公司 一种灾难恢复系统及方法
CN1908856A (zh) * 2005-08-05 2007-02-07 中兴通讯股份有限公司 一种复位电路装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694464B1 (en) * 1997-05-30 2004-02-17 Quickturn Design Systems, Inc. Method and apparatus for dynamically testing electrical interconnect
CN1506825A (zh) * 2002-12-10 2004-06-23 深圳市中兴通讯股份有限公司 一种看门狗实时可调复位方法和装置
CN1716212A (zh) * 2004-06-29 2006-01-04 联想(北京)有限公司 一种灾难恢复系统及方法
CN1908856A (zh) * 2005-08-05 2007-02-07 中兴通讯股份有限公司 一种复位电路装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李丙玉 等: ""一种FPGA实现看门狗电路功能的方法"", 《硅谷》 *
王首浩 等: ""基于CPLD的系统硬件看门狗设计"", 《单片机与嵌入式系统应用》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572331A (zh) * 2015-01-08 2015-04-29 国家电网公司 具有电源监视和上电延时使能的监控模块
CN104572331B (zh) * 2015-01-08 2017-09-19 国家电网公司 具有电源监视和上电延时使能的监控模块
CN109977476A (zh) * 2019-02-28 2019-07-05 中国兵器工业集团第二一四研究所苏州研发中心 一种硬件电路中判断外部引脚互连关系的方法

Similar Documents

Publication Publication Date Title
US8656220B2 (en) System-on-chip and debugging method thereof
US20190272252A1 (en) Method of processing deadlock of i2c bus, electronic device and communication system
JP6074052B2 (ja) 仮想gpio
CN103324546B (zh) 一种延时喂狗的方法及装置
CN105703749B (zh) 一种低功耗精确的休眠定时器电路及方法
CN112540943B (zh) 一种防止i2c接口错误唤醒soc系统的电路结构及方法
CN101369237A (zh) 一种看门狗复位电路及复位方法
US20200042034A1 (en) Using a stuttered clock signal to reduce self-induced voltage noise
CN1700701A (zh) 对基于链路的系统互连进行物理层初始化的方法和装置
CN201021986Y (zh) 看门狗复位电路
CN107305526B (zh) 一种用于微控制器的调试器
CN111142630A (zh) 一种处理器板卡
CN103678780A (zh) 一种硬件容错电路
CN109002412B (zh) 基于I2C总线hold time定位通信故障的系统及方法
CN100373328C (zh) 一种嵌入式系统的复位电路及控制方法
CN100373361C (zh) 外设lpc总线接口时序转换方法、装置及输入输出系统
CN203250312U (zh) 一种接口形式可扩展的通用核心处理子板
CN201035573Y (zh) 一种闪存微控制器
CN206363301U (zh) 超低功耗的type_c接口协议芯片
CN105354157A (zh) 配置iic器件的方法、装置和系统
CN100419693C (zh) 计算机系统状态监控电路
CN102231700A (zh) 交换卡切换信息的下发方法和交换卡热备份系统
CN109684251A (zh) 一种芯片io数据的处理方法及一种芯片
CN106776091A (zh) 看门狗电路
US7574618B2 (en) Interface circuit

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140326

RJ01 Rejection of invention patent application after publication