(57)【要約】【課題】ＣＰＵが異常動作をはじめた場合、ＣＰＵ監視回路が異常と判断するまでの時間にはタイムラグがあり、その間にプログラムが格納されている不揮発性メモリの領域に対して、異常データを書き込む可能性がある。この場合、リセットによりＣＰＵが再び立ち上がってプログラムを読み出すときＣＰＵが正常に立ち上がらない。【解決手段】ＣＰＵが立ち上がるとき、その最新のプログラムが格納されている不揮発性メモリのバンクに対する情報を予め保持し、ＣＰＵ暴走時でもそのバンクには異常データが書きこまれないようにしておく。具体的にはこのバンク信号とＣＰＵからのライトアクセスをオア回路に入力させ、バンク信号をゲート信号として利用することにより、このバンクへのアクセス時にはライト信号を出力させないようにする。【選択図】　　　図１
2004078757.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリのライトプロテクト回路であって、
ＣＰＵの立ち上げに用いられるプログラムが保持されている不揮発性メモリのバンクに対する情報を保持し該ＣＰＵが該バンクにアクセスするとき信号を出力するバンク監視回路と、
前記バンク監視回路の出力に基づき該ＣＰＵが前記バンクにアクセスするときは前記不揮発性メモリにライト信号を出力しないライト信号生成回路と、
を備えることを特徴とするライトプロテクト回路。
【請求項２】
前記ＣＰＵを監視し異常を検知するとアラーム信号を前記ライト信号生成回路へ出力するＣＰＵ監視回路を備える請求項１記載のライトプロテクト回路。
【請求項３】
設定により前記不揮発性メモリへの書き込みを禁止する信号を前記ライト信号生成回路へ出力するメモリプロテクト回路を備える請求項２記載のライトプロテクト回路。
【請求項４】
前記バンク監視回路は前記ＣＰＵが前記プログラムによって立ち上がるとき該ＣＰＵから前記保持すべき情報を受ける請求項１ないし３記載のライトプロテクト回路。
【請求項５】
前記バンク監視回路は、前記バンク以外のバンクに対する情報も保持することができる請求項１ないし４記載のライトプロテクト回路。
【請求項６】
前記ライト信号生成回路は、ＣＰＵが出力するアドレス情報をデコードして一致信号を出力するアドレスデコーダと、該アドレスデコーダの出力と前記バンク監視回路の出力する信号の論理積を出力するアンド回路と、該アンド回路の出力と前記ＣＰＵから入力するライト信号の論理和を出力するオア回路を備える請求項１ないし５記載のライトプロテクト回路。
【請求項７】
前記バンク監視回路は外部からの操作によりその情報を保持するバンクにライト信号を出力させることができる請求項１ないし６記載のライトプロテクト回路。
【請求項８】
前記オア回路は前記アンド回路の出力と前記ＣＰＵから入力するライト信号と前記ＣＰＵ監視回路からのアラーム信号と前記メモリプロテクト回路の出力する信号との論理和を出力する請求項６記載のライトプロテクト回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵが暴走し不揮発性メモリに異常データが書き込まれた場合でも、再びＣＰＵをスムーズに立ち上がらせることが可能な不揮発性メモリのライトプロテクト回路に関する。
【０００２】
【従来の技術】
ＣＰＵを搭載するユニットにおいて、ＣＰＵのプログラムを変更する場合に備えて、プログラムが書き換え可能な不揮発性メモリを搭載しプログラムを格納することが行われる。また外部インターフェースからプログラムをダウンロードし、プログラムを不揮発性メモリに格納することもしばしば行われる。このとき、不揮発性メモリのメモリ領域を複数のバンクに分割し、新しいプログラムを格納する領域、以前動作させたプログラムを格納している領域など、複数のプログラムを残しておく領域が設けられる。
【０００３】
一方、ＣＰＵはしばしば暴走し、通常動作から異常なルーチンに入りこむことがある。この為、ＣＰＵがあるタイミングでアクセスしないとアラーム信号を出力しＣＰＵの異常を監視するＣＰＵ監視回路を設置し、またＣＰＵが不揮発性メモリに対してライトマスクする・しないを設定できるメモリプロテクト機能を設置する場合が多い。
【０００４】
【発明が解決しようとする課題】
ＣＰＵは暴走すると異常動作に入り、上記メモリプロテクト機能を解除して、不揮発性メモリに対してライトアクセスを行い、格納されたプログラムを破壊する場合がある。このためＣＰＵ監視回路が異常を検知したときは、不揮発性メモリに対してライトパルスを出力しない処理をしている。
【０００５】
しかしＣＰＵが異常動作をはじめてから、ＣＰＵ監視回路がＣＰＵ異常と判断するまでにはタイムラグがあり、その間にプログラムが格納されている不揮発性メモリの領域に対して、異常データを書き込む可能性がある。この場合、リセットによりＣＰＵが再び立ち上がってプログラムを読み出したとき、ＣＰＵが正常に立ち上がらない。
【０００６】
本発明の目的は、上記のようなＣＰＵ暴走時に、ＣＰＵがブート時に読み出したプログラムが格納されている不揮発性メモリのバンクへのライトをマスクすることにより、不揮発性メモリに異常データが書き込まれても、リブート時にＣＰＵがスムーズに立ち上がらせるライトプロテクト回路を提供することにある。
【０００７】
【課題を解決するための手段】
本発明の第１のライトプロテクト回路は、ＣＰＵの立ち上げに用いられるプログラムが保持されている不揮発性メモリのバンクに対する情報を保持し該ＣＰＵが該バンクにアクセスするとき信号を出力するバンク監視回路と、バンク監視回路の出力に基づき該ＣＰＵが前記バンクにアクセスするときは不揮発性メモリにライト信号を出力しないライト信号生成回路とを備える。
【０００８】
上記ライトプロテクト回路は、さらにＣＰＵを監視し異常を検知するとアラーム信号をライト信号生成回路へ出力するＣＰＵ監視回路を備えることができ、またさらに、設定により前記不揮発性メモリへの書き込みを禁止する信号をライト信号生成回路へ出力するメモリプロテクト回路とを備えることができる。
【０００９】
上記ライトプロテクト回路において、バンク監視回路はＣＰＵが前記プログラムによって立ち上がるとき該ＣＰＵから保持すべき情報を受けることができる。またバンク監視回路は、前記バンク以外のバンクに対する情報も保持することができる。一方、前記ライト信号生成回路は、ＣＰＵが出力するアドレス情報をデコードして一致信号を出力するアドレスデコーダと、該アドレスデコーダの出力と前記バンク監視回路の出力する信号の論理積を出力するアンド回路と、該アンド回路の出力と前記ＣＰＵから入力するライト信号の論理和を出力するオア回路を備えることができる。前記ライト信号生成回路は外部からの操作によりライト信号を出力させる手段を備えることができる。上記オア回路にはＣＰＵ監視信号とメモリプロテクト回路のそれぞれの出力が入力される。
【００１０】
これらの構成により本発明のライトプロテクト回路は、ＣＰＵが暴走しても、ブート時のプログラムを保護し、ＣＰＵは前記プログラムによりリブートが可能になる。
【００１１】
【発明の実施の形態】
図１は本発明のライトプロテクト回路の適用された例を示すブロック図である。ここではＣＰＵ１は、不揮発性メモリ８、ブート用ＰＲＯＭ２、プログラムをダウンロードするための外部Ｉ／Ｆ３、ライト信号生成回路９、バンク監視回路７、ＣＰＵ監視回路５、およびメモリプロテクト回路６とバスで接続しており、アドレス、データ、チップセレクト信号、ライト信号などを該バスへ出力している。またリセット制御部４は、ＣＰＵ１、ＣＰＵ監視回路５、メモリプロテクト回路６、バンク監視回路７にリセット信号を送ることができる。
【００１２】
ＣＰＵ１は、不揮発性メモリ８内の複数のバンクから最新のプログラムが格納されているものを選択し、最新のプログラムで動作を開始する。このとき、ＣＰＵ１はどのメモリ領域（バンク）に保持されたプログラムで立ち上がったかの情報をバンク監視回路７に保存する。バンク監視回路７は、レジスタ構成になっており、上記ＣＰＵ１が保存するバンクに対するデータをセットし、電源がオフになるか再びプログラムの読み出しを開始するまでその値を保持する。ＣＰＵ監視回路５は、ＣＰＵ１の動作異常を監視する。ＣＰＵ監視回路５は例えばＣＰＵ１がある周期でアクセスしないと異常と判断する回路で構成し、異常時にはライト信号生成回路９とリセット制御部４にアラーム信号Ｓ２を出力する。メモリプロテクト回路６は、レジスターで、ライト許可／禁止に設定できる構成である。ライト禁止に設定しているときは、ＣＰＵ１の出力するアドレスが不揮発性メモリ８のメモリエリアであっても、該メモリ８へのライト信号をマスクするようにメモリプロテクト信号Ｓ３を出力する。ライトを許可にすると、ＣＰＵ１の出力するアドレスバスが不揮発性メモリ８のメモリエリアであれば、メモリプロテクト信号Ｓ３をネゲートする。
【００１３】
ライト信号生成回路９は、上記メモリプロテクト回路６においてライト許可の場合であり、かつＣＰＵ１の出力するアドレスバスが不揮発性メモリ８の領域であり、かつＣＰＵ監視回路５でＣＰＵ１に異常がない場合であり、かつバンク監視回路７が保持するバンクの領域ではない場合に、不揮発性メモリ８へライト信号Ｓ５を出力する。リセット制御部４は、電源電圧を監視する他、ＣＰＵ１の異常時、ＣＰＵ１をリブートする制御を行う。リセット制御部４はリセットパルスＳ６を出力することにより、ＣＰＵ１、ＣＰＵ監視回路５、メモリプロテクト回路６、およびバンク監視回路７を初期化する。リセット制御は、操作者の入力操作をトリガとして開始することもできるが、ＣＰＵ監視回路５からアラーム信号Ｓ２を受けて予め設定されたプログラムで自動的に開始、実行が可能である。
【００１４】
図２は上記バンク監視回路７の具体例を示す。図２のバンク監視回路７は、２つのフリップフロップ回路（ＦＦ）１０、遅延回路１１、アンド回路１２、アドレスデーコーダ１３を備える。ＣＰＵアドレスがこの回路７のアドレスと一致したときは、アドレスデコーダ１３はＨｉｇｈを出力する。リセットパルスがＦＦ１０のリセット端子に入力した後、リセット解除状態でＣＥ端子がＨｉｇｈのときデータ（Ｘ）（Ｘはバンクを特定する番号を示す）がライトパルスの立ち上がりエッジで取り込まれる。ＣＰＵが暴走している場合、またはリセットが解除された後さらにライトパルスが入力されても、図中の信号ａがＬｏｗであるためライトは不可となる。上記保持されるデータ（Ｘ）は、リセット制御部４から出力されるリセットパルスでクリアされるが、ＣＰＵ１が異常シーケンスに入っても変化しない。ここで、バンク監視回路７にセットするデータとして、ブートを開始したバンク以外のバンクのデータをセットすることも可能である。
【００１５】
図３はライト信号生成回路９の構成例を示す。ライト信号生成回路９は、アドレスデコーダ１３、アンド回路１２、およびオア回路１４を備えることができる。ライト信号生成回路９には、ＣＰＵ１からアドレスおよびライト信号が入力し、バンク監視回路７からバンク信号（Ｘ）が入力し、メモリプロテクト回路６からメモリプロテクト信号がＣＰＵ監視回路５からアラーム信号がそれぞれ入力する。アドレスデコーダ１３はＣＰＵが出力するアドレスバスをデコードし一致信号を出力し、アンド回路１２はこのデコーダ１３の出力信号とバンク信号（Ｘ）の論理積を出力する。アンド回路１２の出力は、リセット解除後でバンク信号（Ｘ）が出力されないときはＬｏｗである。一方、ＣＰＵ１がバンク監視回路７に所定のバンク情報を設定し、さらにＣＰＵ１がこの設定したバンクにアクセスしたときは、アンド回路１２の出力がＨｉｇｈになる。メモリプロテクト信号は通常時はＬｏｗであり、プロテクトしたいバンクの場合にはＨｉｇｈを出力する。アラーム信号は通常時はＬｏｗ、ＣＰＵ１が異常のときはＨｉｇｈを出力する。ＣＰＵ１が出力するライト信号は、ライト時がＬｏｗパルスである。
【００１６】
オア回路１４の出力はＬｏｗのときがライトパルスである。したがって、オア回路１４に入力されるＣＰＵライト信号以外の３つの信号はライト信号を出力させるためのゲート信号の機能を有し、これら３つの信号のうち１つでもＨｉｇｈがあるとライト信号は出力されない。
【００１７】
上述のライトプロテクト回路の動作例は、次のとおりである。ＣＰＵ１のリセットが解除されると、ＣＰＵ１は、ブート用ＰＲＯＭ２に格納されているプログラムにより、不揮発性メモリ８のバンクごとに保持されているチェックビットを読む。チェックビットには、プログラムの版数に対応するデータが記録されていて、全バンクのチェックビットを読み、最新のプログラムが格納されているバンクを探し、そのバンクのプログラムでブートを開始する。最新のプログラムでブートした時、チェックサムの計算結果、異常データであった場合は、次に新しいプログラムが格納されているバンクを探し、そこから再びブートを開始する。
【００１８】
ＣＰＵ１が正常に起動したら、所定のソフトウエアがブートを開始したバンクの情報をバンク監視回路７にセットする。バンク監視回路７は図２に示すように一度データがセットされるとリセット制御部４から出力されるリセットパルスでクリアされるような回路構成であり、ＣＰＵ１が異常シーケンスに入っても、セットされた情報や出力されるバンク信号（Ｘ）は変化しない。上述のように、バンク監視回路７にセットする情報として、ブートを開始したバンク以外の情報など複数のバンクをセットすることも可能である。
【００１９】
バンク監視回路７から出力されるバンク信号（Ｘ）はライト信号生成回路９に入力される。ライト信号生成回路９では、このバンク信号（Ｘ）と、ＣＰＵ１が出力するアドレスバスをデコードして生成されるバンク（Ｘ）のイネーブル信号との論理積を出力して、許可されたバンク（Ｘ）以外のイネーブル信号をマスクする信号とする。この信号は、さらにメモリプロテクト信号Ｓ３と、ＣＰＵアラーム信号Ｓ２と、ライト信号Ｓ６と共に論理和がとられ、上述のようにメモリプロテクト時またはＣＰＵアラーム時においても不揮発性メモリ８にライト信号が出力されない結果となる。
【００２０】
暴走したＣＰＵ１が、ＣＰＵ監視回路５によってＣＰＵ異常と判定されるまでの間に、不揮発性メモリ８に対してライトシーケンスに入ってしまった場合でも、あるいは暴走したＣＰＵ１がメモリプロテクト回路６でセットされたメモリプロテクトを解除して、同じくライト動作に入ってしまっても、ＣＰＵ１がバンク監視回路７にセットした不揮発性メモリ８のバンク（Ｘ）に対しライト信号が出力されないので、ＣＰＵ１がセットしたバンクに格納されているプログラムは保護されることになる。ただしセットしていないバンクのプログラムは保証されない。その後、ＣＰＵ監視回路５が出力したＣＰＵアラーム信号Ｓ２をリセット制御部４が受信し、リセットパルスＳ６を出力し、ＣＰＵ１を再ブートさせる。
【００２１】
なお、バンク（Ｘ）がプロテクトされている場合に、新たに外部Ｉ／Ｆ３からプログラムを格納するときは、ライト可能な例えばバンク（Ｙ）にデータを転送する。転送が終了するとチェックサムをそのエリアに書き込み、最新を意味するチェックビットデータも書き込む。このようなとき、ＣＰＵ１が暴走して、バンクに最新を意味するチェックビットデータを書き込んだ場合、再ブート時には、この「最新のバンク」のデータを読もうとするがチェックサムの計算結果でＮＧとなり、次に新しいバンクを探してそこからリブートを開始する。
【００２２】
図４は、本発明の他の実施の形態を示す。本発明ではバンク監視回路７が、ＣＰＵ１の暴走時に現在のプログラムを格納しているバンクに対してライトアクセスがあってもライト信号を出力しないようにマスクしている。しかし、例えばデバッグ初期の場合に、プログラムの書き換えを頻繁に行うようなとき、最新のプログラムの領域にデータを上書きして使うような方法が望ましい。そこで、図４に示されるように基板上にＳＷ部２０を設け、スイッチオン時は最新のプログラム領域へのライトを不可能にし、スイッチオフ時は、評価に用いるため、最新のプログラムの領域へのライトのマスクを解除しライト可能な構成にすることができる。
【００２３】
なお、図１に示した本発明のライトプロテクト回路では、バンク監視回路７とライト信号生成回路９とが本発明の基本構成部であり、これらの回路によって、本発明の目的であるＣＰＵが暴走したときに最新プログラムを保護するという目的を達成ができる。しかし、公知のＣＰＵ監視回路５、メモリプロテクト回路６も併せて構成することができる。
【００２４】
【発明の効果】
本発明のライトプロテクト回路は、ＣＰＵが立ち上がるとき、そのプログラムが格納されている不揮発性メモリのバンクの情報を保持し、該バンクへの書き込みを禁止しておくため、暴走したＣＰＵが再び立ち上がるととき、最新のプログラムで立ち上がることが可能となる。
【図面の簡単な説明】
【図１】本発明のライトプロテクト回路が適用されている構成例を示すブロック図。
【図２】本発明のライトプロテクト回路に用いられるバンク監視回路の構成例を示す図。
【図３】本発明のライトプロテクト回路に用いられるライト信号生成回路の構成例を示すブロック図。
【図４】本発明のライトプロテクト回路の他の構成を示すブロック図。
【符号の説明】
１　　ＣＰＵ
４　　リセット制御部
５　　ＣＰＵ監視回路
６　　メモリプロテクト回路
７　　バンク監視回路
８　　不揮発性メモリ
９　　ライト信号生成回路
【図１】
2004078757.tif 000003
【図２】
2004078757.tif 000004
【図３】
2004078757.tif 000005
【図４】
2004078757.tif 000006