区别系统上电复位和带电复位的方法技术方案

技术编号:2853205 阅读:525 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种区别系统上电复位和带电复位的方法,在可编程逻辑器件内部设置寄存器,利用可编程逻辑器件上电复位可预置的功能,设上电复位该寄存器值为A,而因外围其他操作(IO引脚或者寄存器写操作)引起的复位值为B,CPU启动以后,在CPU复位可编程逻辑器件之前,先读此寄存器的值,如果为A,则判断为上电复位,如果不为A,则判断为带电复位,然后,CPU复位可编程逻辑器件为下次判断做准备。本发明专利技术对于外围已有可编程逻辑器件的系统,无需增加额外硬件成本,并能可靠、简单地区别系统的上电复位和带电复位。

【技术实现步骤摘要】

本专利技术属于电路系统复位
,尤其涉及一种。
技术介绍
某些设备需要在系统重新启动后区别系统复位触发因素(上电复位还是带电复位),现有的常用方法是使用CPU外围SRAM来判断,系统启动以后往SRAM某个存储空间写入特定的数据(下面以0x55为例),系统复位启动以后再来读相同地址的数据,如果仍是0x55,则认为系统是带电复位,如果为其他的任何值,则判断为上电复位。此方法存在两个问题1、CPU外围经常是没有SRAM的,此种情况下如果专门从复位判断需求考虑增加一个SRAM从成本方面考虑是很不值得的;2、SRAM为随机存储器,上电以后,各存储空间数据不确定,存在上电后目标空间与预置数(上文提到的0x55)相同的可能,因此,判断是不可靠的,有误判的可能。因此,目前存在无法可靠判断复位类型的情况。
技术实现思路
为了克服现有无法可靠判断电路系统复位类型的不足,提供一种利用可编程器件寄存器。本文提供了一种,包括使能可编程逻辑器件的寄存器上电复位可预置功能,那么上电复位以后,设对应寄存器的值被预置为A;对器件编程,设置寄存器复位(指通过IO引脚或者写寄存器复位)值为B(B不等于A),系统(指CPU或者微控制器)启动以后,读取对应寄存器的值,如果为A,则判断为上电复位,否则判断为带电复位。系统在复位可编程逻辑器件之前读取对应寄存器的值。可编程逻辑器件的复位受系统直接或者间接控制。本专利技术的有益效果是对于稍复杂的电路系统,CPU外围一般都会有CPLD或者FPGA作Glue Logic,而且存储器接口一般也是软件开发方便接口,采用本专利技术在不增加任何系统硬件成本的情况下(只占用很少的逻辑资源),无需升级硬件即能可靠、简单的区别上电复位和带电复位,可广泛应用于有复位判断需求的各类电子产品。附图说明图1为D端为1(或0)的触发器; 图2为输入直接驱动输出示意图;图3为寄存器上电复位为0,与触发器D端无关。具体实施例方式本专利技术利用可编程器件寄存器上电状态可预知/设置的特点区别上电复位和带电复位。目前很多的可编程器件提供上电复位(PoR)寄存器可设置的功能,因此判断上电复位和带电复位只需作如下处理1、逻辑设计时使能可编程器件的寄存器上电复位可预值功能;2、逻辑设计中,使得可编程器件Reset信号有效以后对应的寄存器复位成与上电复位不同的某个值。CPU启动后,未复位可编程器件前,根据该寄存器的值即可判断是上电复位还是带电复位。下面详述本专利技术的一个较佳实施例。某网络设备要求区别系统是上电复位还是带电复位。如果是上电复位,则复位以后自检CPU小系统的DDR-SDRAM,并在日志文件中记录复位类型(上电复位)和时间信息;如果是带电复位,则复位后不再自检CPU小系统的DDR-SDRAM,并在日志文件中纪录复位类型(带电复位)和时间信息。单板CPU小系统上有作粘合逻辑用的某公司CPLD一片,CPLD挂在CPU的LoealBus上,逻辑上以SRAM方式提供访问接口。在该公司的IDE编译选项设置中,有power-up don’t care选项提供对此功能的使能选择。如果选中,那么,上电初始化以后的寄存器状态与综合结果直接相关,register的状态由上电时触发器D端状态确定,图1在上电期间的状态等效于图2。也就是说如果D端是1,Q端也为1,如果D端是0,Q端也是0。如果不选中power-up don’t care,那么,不管上电期间触发器D端状态如何,寄存器的值都为0(如图3所示)。此选项对于整个设计是全局有效的,会带来一定的面积开销。所有该开发环境支持的器件都有此功能。首先,在逻辑代码设计中设置一个8bit寄存器,复位时(指复位引脚出现有效复位信号,不包括上电复位)设置为0x55,该寄存器只读不可写(防止软件写操作破坏标志位);下面是Verilog描述的一段简单的示例代码module powerup(Data,Addr,Wr,Rd,Rst,CS);inout[7:0]Data;input[2:0]Addr;input Wr,Rd,Rst,CS; wire PldWr,PldRd;reg[7:0]PoR;reg[7:0]Reg1,Reg2,Reg3;reg[7:0]DataIn;assign PldWr=(CS==1′b1&&Rd==1′b1)?1Wr;assign PldRd=(CS==1′b1)?1Rd;assign Data=(PldRd==1′b1)?8′bzzzzzzzzDataIn;always@(posedge PldWr or negedge Rst)if(!Rst)beginPoR<=8′h55;//复位初始化位0x55Reg1<=8′h00;Reg2<=8′h00;Reg3<=8′h00;endelsecase(Addr)//没有对PoR的写操作,即PoR为只读,CPU无法改写;3′b001Reg1<=Data;3′b010Reg2<=Data;3′b011Reg3<=Data;default;endcasealways@(negedge PldRd)case(Addr)3′b000DataIn<=PoR;3′b001DataIn<=Reg1;3′b010DataIn<=Reg2; 3′b011DataIn<=Reg3;defaultDataIn<=8′h11;endcaseendmodule注如果将PoR位宽设为1,则资源上只占用一个触发器,无需8个。钩掉(不选中)Verilog编译器选项power-up don’t care;逻辑设计阶段其他的地方按照不需要改变。在硬件设计上,不可将看门狗之类的复位输出直接接到CPLD上,因为常用看门狗芯片提供上电复位,在上电后会发出复位脉冲,此时CPLD实际上是收到Reset信号后复位,破坏了上电复位后的寄存器初始数据,CPLD的复位信号可以由CPU的GPIO发出或者使用其它类似的处理。总之,上电以后,CPLD的复位信号应该由CPU直接或者间接控制(如通过写复位寄存器控制)。在软件设计上,CPU判断复位方式的步骤如下1、CPU启动;2、读CPLD相应的PoR寄存器;3、如果PoR为0x55,则判断为带电复位,后续不作内存自检,并且纪录日志事件为带电复位;如果PoR为0x00,则判断为上电复位,后续作内存自检,并且纪录日志事件为上电复位;4、复位CPLD使之所有寄存器进入预定状态,启动系统其它部分。本文档来自技高网...

【技术保护点】
一种区别系统上电复位和带电复位的方法,包括:使能可编程逻辑器件的寄存器上电复位可预置功能,上电复位以后,寄存器会自动复为预置值;系统启动以后,读取对应寄存器的数据,如果该数据为上述预置值,则判断为带电复位;如果该数据不是上述 预置值,则判断为上电复位。

【技术特征摘要】
1.一种区别系统上电复位和带电复位的方法,包括使能可编程逻辑器件的寄存器上电复位可预置功能,上电复位以后,寄存器会自动复为预置值;系统启动以后,读取对应寄存器的数据,如果该数据为上述预置值,则判断为带电复位;如果该数据不是上述预置值,则判断为上电复位。2.如权利要求1所述的区别系统上电复位和带电复位的方法,其特征...

【专利技术属性】
技术研发人员:李刚
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1