能防止程序故障的中央处理单元的制作方法

文档序号:6410541阅读:244来源:国知局
专利名称:能防止程序故障的中央处理单元的制作方法
技术领域
本发明涉及一种能防止程序故障的中央处理单元(CPU),特别涉及一种改进的能防止程序故障的CPU,在由于噪声而从存储器中读取异常数据时,使该CPU复位,以防止程序故障。


图1是说明常规中央处理单元(CPU)的方框图。
如该图所示,常规CPU包括指定要执行指令的地址的程序计数器1;输出由程序计数器1指定的地址指令的存储器2;存储从存储器2输出的指令操作码“opcode”的指令寄存器3;对存储在指令寄存器3中的操作码解码,并输出控制信号的指令解码器4;根据指令解码器4的控制信号执行指令的执行单元5。
下面参照图1说明常规CPU的运行情况。
程序计数器1通过地址总线把下一步要执行的指令的地址发送到存储器2,存储器2与程序计数器1协同输出相应的指令。
指令寄存器存储来自存储器2的指令操作码,并把该码输出到指令解码器4。指令解码器4对所提供的操作码解码,并把执行指令所必需的控制信号发送到执行单元5。于是,执行单元5执行该指令。
然而,常规CPU会执行由于其中的噪声而产生的不希望的指令,因而致使程序运行发生故障。即,当噪声掺进了系统外部电源或时钟信号中时,程序计数器1工作,于是从存储器2中读取不希望的指令,从而导致程序运行发生故障。
因此,本发明的一个目的是提供一种防止程序故障的中央处理单元(CPU),克服常规技术中存在的问题。
本发明的另一个目的是提供 种能防止程序故障的CPU,在由于噪声而从存储器中读取异常数据时,使该CPU复位,以防止程序故障。
为了实现上述目的,提供一种能防止程序故障的CPU,该CPU包括指定要执行指令的地址的程序计数器;存储根据程序计数器从存储器输出的指令的第一指令寄存器;根据第一内部时钟信号读取存储在第一指令寄存器中的指令的第二指令寄存器;根据第二内部时钟信号读取存储在第一指令寄存器中的指令的第三指令寄存器;根据启动信号工作的比较器,用于比较存储在第二指令寄存器和第三指令寄存器中的指令是否相同;根据比较器的输出信号输出复位信号的复位控制器;根据比较器的输出信号,对存储在第三指令寄存器中的指令的操作码解码,并输出控制信号以及程序计数值改变指令的指令解码器;根据解码器的控制信号执行指令的执行单元;检测复位控制器的输出信号的边沿,及输出边沿检测信号的边沿检测器;以及根据边沿检测信号和指令解码器的输出信号,输出启动信号的启动信号发生器。
下面的说明将会更清楚地显示本发明的其它优点、目的和特点。
通过下面的详细说明和所给的只是说明性的各附图,会更充分地理解本发明,但本发明并不限于此,其中图1是表示常规中央处理单元(CPU)的方框图;图2是表示本发明的CPU的方框图;图3A至3L是为了说明图2的CPU的运行的时序图。
图2是本发明的中央处理单元(CPU)的方框图。
根据本发明的CPU包括指定要执行指令的地址的程序计数器(PC)10;存储根据程序计数器(PC)10从存储器20输出的指令的指令寄存器(IR)30a;根据内部时钟信号400读取存储在指令寄存器30a中的指令的指令寄存器(IR-1)30b;根据内部时钟信号200读取存储在指令寄存器(IR)30a的指令的指令寄存器(IR-2)30c;根据启动信号600工作的比较器80,用于比较存储在指令寄存器(IR-1)30b和指令寄存器(IR-2)30c中的指令是否相同;根据比较器80的输出信号500,对存储在指令寄存器(IR-2)30c中的指令的指令码解码,并输出控制信号以及计数器值改变指令400的指令解码器(ID)40;根据指令解码器(ID)40的控制信号执行指令的执行单元(EU)50;检测复位控制器的输出信号700的边沿,并输出边沿检测信号800的边沿检测器70;以及根据边沿检测信号和指令解码器(ID)40的输出信号,输出启动信号600的启动信号发生器60。
下面参照图2和3L说明根据本发明的能防止程序故障的CPU的运行情况。
根据由程序计数器(PC)10指定的地址,从存储器20中读取的指令与系统循环的周期同步地存储在指令寄存器(IR)30a中,在系统时钟的每个周期交替地读取存储在指令寄存器(IR)30a中的指令,将这些指令存储于指令寄存器(IR-1)30b和(IR-2)30c,并用比较器80比较这些指令。
这里,如果存储在指令寄存器(IR-1)30b和(IR-2)30c的指令相同,则执行单元(EU)50执行存储在指令寄存器(IR-2)30c中的指令,如果存储在指令寄器(IR-1)30b和(IR-2)30c的指令不同,则复位控制器90的复位信号70的电平变换,程序计数器(PC)10复位。
下面将参照所图3所示中的时序图详细说明上述过程。
本发明中,假定以图3A所示的系统时钟的两个周期为一个循环。
所以,指令寄存器(IR-1)30b在第一系统时钟的下降沿接通,指令寄存器(IR-2)30c在第二系统时钟的上升沿和第二循环的起始上升沿接通。
如果通过复位针输入外部复位信号,则复位控制器90输出复位信号700,如图3C所示,使CPU复位。
如图3L所示,这里,边沿检测器70检测复位信号700的下降沿,并在一个循环内保持高电平。
另外,启动信号发生器60在每个循环内每个系统时钟信号周期输出高电平信号600。这里,在边沿检测器70的输出信号和指令解码器(ID)40的输出信号400变成高电平的时间间隔内,输出低电平信号600。
因此,启动信号发生器60在一个循环内皆输出低电平信号600,程序计数器(PC)10伎能该信号600,比较器80禁止该信号。
如图3D所示,程序计数器(PC)10与第一循环的系统时钟同步地增加要执行指令的地址,并向存储器20输出信号,指令寄存器(IR)30a与一个循环的系统时钟同步地从存储器20读取0001、0002地址指令,如在(F-1)和(F-2)所示的那样。
这里,由于指令寄存器(IR-1)30b根据控制信号300,在第一系统时钟的下降沿接通,指令寄存器(IR-1)30b存储由指令寄存器(IR)30a移位来的第一地址指令。
另外,附图中,“En”表示执行单元(EU)50执行“n”地址指令,“Fn”表示从存储器20读取“n”地址指令,“Sn”表示来自存储器20且存储于指令寄存器30a中的“n”地址指令被转移到指令寄存器(IR-1)30b和(IR-2)30c。
由于指令寄存器(IR-2)30c根据控制信号200在第二系统时钟的上升沿和第二循环起始上升沿接通,指令寄存器(IR-2)30c在第二系统时钟的上升沿接通时,存储由指令寄存器(IR)30a转移来的第一地址指令,在指令寄存器(IR-2)30c在第二循环起始上升沿接通时,如在S-2’所示的那样,存储由指令寄存器(IR)30a转移来第二地址指令。
此时,指令解码器(ID)40对在第二系统时钟的上升沿转移的第一地址指令解码,执行单元(EU)50执行该指令。
然后,当例行程序在第二循环时,由于边沿检测器70的输出信号800和指令解码器(ID)40的输出信号400皆为低电平,如图3I所示,启动信号发生器60在系统时钟信号的一个周期内输出高电平信号600,程序计数器(PC)10禁止该信号,而比较器80允许该信号。
结果,程序计数器(PC)10在系统时钟信号的一个周期内不增加要执行的指令的地址。
另外,指令寄存器(IR-1)30b根据控制信号300在第一系统时钟的下降沿接通,如在S-2所示的那样,存储由指令寄存器(IR)30a转移的第二指令(F-2’)。
因此,比较器80在第二循环的第一时钟信号输入期间接通,比较存储在指令寄存器(IR-1)30b中如在S-2’过程中的指令和存储在指令寄存器(IR-2)30c中如在S-2过程中的指令。如果存储在指令寄存器(IR-1)30b中的指令和存储在指令寄存器(IR-2)30c中的指令相同,则如图3J所示,输出低电平信号600。
此时,程序计数器(PC)10被禁止,不增加执行指令的地址。所以存储在指令寄存器(IR)30a中的第二地址指令,如在F-2和F-2’过程中的指令是相同的指令,则移位到指令寄存器(IR-1)30b的指令,如在S-2和S-2’过程中的指令是相同的指令。
此后,当启动信号发生器60在第二时钟信号的一个周期内输出低电平信号时,程序计数器(PC)10增加要重执行的指令的地址,指令寄存器(IR)30a与系统时钟信号同步地从存储器20中读取0003地址指令,如在F-3所示的那样。
另外,指令寄存器(IR-2)30c在第二系统时钟的上升沿接通时,如在S-2所示的那样,存储由指令寄存器(IR)30a移位的第二地址指令,指令寄存器(IR-2)30c在第三循环的起始上升沿接通时,存储由指令寄存器(IR)30a转移的第三地址指令。
此时,由指令解码器(ID)40对在第二系统时钟的上升沿移位的第二地址的指令解码,并由执行单元(EU)50执行该指令。
然后,与上述过程相同,例行程序在第三循环,根据启动信号发生器60的高电平信号600,启动比较器80,程序计数器(PC)10不增加执行命令的地址。
另外,指令寄存器(IR-1)30b根据控制信号300,在第一系统时钟的下降沿接通,如在S-3所示的那样,存储由指令寄存器(IR)30a转移的第三地址的指令。
因此,如上所述,在第三循环的第一时钟信号输入期间,比较器80比较存储在指令寄存器(IR-1)30b中如在S-2’过程中的指令和存储在指令寄存器(IR-2)30c如在S-2过程中的指令,并输出低电平信号600,如图3J所示。
然后,指令寄存器(IR-2)30c在第二系统时钟的上升沿接通时,如在F-3’所示的那样,存储由指令寄存器(IR)30a转移的第三指令,指令寄存器(IR-2)30c在第四循环的起始上升沿接通时,如在S-4’所示的那样,存储由指令寄存器(IR)30a转移的第三地址指令。
此时,由指令解码器(ID)40对在第二系统时钟的上升沿转移的第三地址指令解码。如果对第三地址指令的解码的结果是该指令为转移到第十七地址的指令,则如图3K所示,指令解码器(ID)40向启动信号发生器60输出改变程序计数器(PC)10的值的指令400。
结果,程序计数器(PC)10从第四循环跳到第十七地址指令的地址,启动信号发生器60在第四周期的一个周期内保持低电平,禁止比较器80。
按与上述相同的方式进行其余的过程。
另外,在第六循环的一个系统时钟周期内,从存储器读取的第十九地址指令由于外部电源和噪声而不正常时,存储在指令寄存器(IR-1)30b中如在S-19过程中的指令,与存储在指令寄存器(IR-2)30c中如在S-19’过程中的指令不相同。
因此,如图3J所示,比较器80输出高电平失配信号500,如图3C所示,复位控制器90输出内部复位信号,以将CPU复位。
另外,在将CPU复位后,与第一循环后的操作一样,进行第七循环后的操作。
如上所述,本发明的能防止程序故障的中央处理单元比较从不同系统时钟周期读取的指令,在读取的指令正常时,执行指令,在由于噪声而使读取的指令不正常时,将CPU复位,以便防止存储在存储器中的程序出故障。
尽管本发明为了说明而公开了优选实施例,很显然,在不脱离如所附权利要求书中所述的本发明的范围和精神实质的情况下,本领域的普通技术人员可以作同各种改型、附加和替换。
权利要求
1.一种能防止程序故障的中央处理单元,包括指示要执行指令的地址的程序计数器;存储根据程序计数器从存储器输出的指令的第一指令寄存器;根据第一内部时钟信号读取存储在第一指令寄存器中的指令的第二指令寄存器;根据第二内部时钟信号读取存储在第一指令寄存器的指令的第三指令寄存器;根据启动信号工作的比较器,用于比较存储在第二指令寄存器和第三指令寄存器中的指令是否相同;根据比较器的输出信号输出复位信号的复位控制器;根据比较器的输出信号,对存储在第三指令寄存器中的指令的操作码解码,并输出控制信号以及程序计数值改变指令的指令解码器;根据解码器的控制信号执行指令的执行单元;检测复位控制器的输出信号的边沿,及输出边沿检测信号的边沿检测器;根据边沿检测信号和指令解码器的输出信号,输出启动信号的启动信号发生器。
2.根据权利要求1的CPU,其特征在于所述第一内部时钟信号为一个循环内的第一系统时钟下降沿检测信号,所述第二内部信号为每个系统时钟的上升沿检测信号。
3.根据权利要求1的CPU,其特征在于所述启动信号发生器在每个循环的系统时钟的第一周期输出高电平启动信号。
4.根据权利要求3的CPU,其特征在于在边沿检测信号或指令解码器的输出信号为高电平时,所述启动信号发生器输出与系统时钟周期无关的低电平信号。
5.根据权利要求1的CPU,其特征在于所述第二指令寄存器在每个循环的第一系统时钟的下降沿接通,所述第三指令寄存器在第二系统时钟的上升沿和下一循环的起始上升沿接通。
6.根据权利要求1的CPU,其特征在于在存储在第二指令寄存器和第三指令寄存器中的指令不同时,所述复位控制器变换复位信号的电平。
全文摘要
一种防止能程序故障的改进的CPU,在由于噪声而使从存储器读取的数据不正常时,通过使CPU复位,能够防止程序出故障。
文档编号G06F9/38GK1158454SQ9611405
公开日1997年9月3日 申请日期1996年12月31日 优先权日1995年12月31日
发明者韩大根 申请人:Lg半导体株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1