(57)【要約】【課題】  ＣＰＵに負荷をかけずに、周辺モジュールの診断を行うことができるマイコンを提供する。【解決手段】  ＣＰＵ１０、ＣＰＵが実行する命令およびデータを記憶するＲＯＭ２０およびＲＡＭ２１、周辺モジュール６０，６１，６２、ＣＰＵとＲＯＭおよびＲＡＭが接続されるＣＰＵバス７０、周辺モジュールが接続される周辺バス８０、ＣＰＵバスと周辺バスを接続するバスブリッジ３０を有するマイコンにおいて、周辺バスに接続されるＲＡＭ５０と、ＲＡＭに記憶された診断プログラムを読み出して処理を行う診断モジュール４０とを有し、診断モジュール４０は、診断プログラムでアドレス指定される周辺モジュールのレジスタを読み出して、診断プログラムで指定される比較条件に基づき、診断プログラムで指定される比較データと周辺モジュールのレジスタの値とを比較し、この比較条件が成立したか否かを示す信号を出力する。【選択図】  図１
2006172331.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵが実行する命令およびデータを記憶する第１のメモリと、周辺モジュールと、前記ＣＰＵと前記第１のメモリが接続されるＣＰＵバスと、前記周辺モジュールが接続される周辺バスと、前記ＣＰＵが前記周辺モジュールをアクセスする場合に、前記ＣＰＵバスと前記周辺バスを接続するバスブリッジとを有するマイクロコントローラであって、
前記周辺バスに接続される第２のメモリと、前記第２のメモリに記憶された診断プログラムを読み出して処理を行う診断モジュールとを有し、
前記診断モジュールは、前記診断プログラムでアドレス指定される前記周辺モジュールのレジスタを読み出して、前記診断プログラムで指定される比較条件に基づき、前記診断プログラムで指定される比較データと前記周辺モジュールのレジスタの値とを比較し、この比較条件が成立したか否かを示す信号を出力することを特徴とするマイクロコントローラ。
【請求項２】
ＣＰＵと、前記ＣＰＵが実行する命令およびデータを記憶する第１のメモリと、周辺モジュールと、割込み要求を前記ＣＰＵに通知する割込みコントローラと、前記ＣＰＵと前記第１のメモリが接続されるＣＰＵバスと、前記周辺モジュールが接続される周辺バスと、前記ＣＰＵが前記周辺モジュールをアクセスする場合に、前記ＣＰＵバスと前記周辺バスを接続するバスブリッジとを有するマイクロコントローラであって、
前記周辺バスに接続される第２のメモリと、前記第２のメモリに記憶された診断プログラムを読み出して処理を行う診断モジュールとを有し、
前記診断モジュールは、前記診断プログラムでアドレス指定される前記周辺モジュールのレジスタを読み出して、前記診断プログラムで指定される比較条件に基づき、前記診断プログラムで指定される比較データと前記周辺モジュールのレジスタの値とを比較し、この比較条件が成立したか否かを判定し、比較条件が不成立の場合には、前記割込みコントローラに診断エラー割込み要求を出力し、
前記割込みコントローラは、前記診断モジュールからの診断エラー割込みを前記ＣＰＵに通知し、
前記ＣＰＵは、前記診断エラー割込みに対応するプログラム処理を実行することを特徴とするマイクロコントローラ。
【請求項３】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式を含むことを特徴とするマイクロコントローラ。
【請求項４】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式を含むことを特徴とするマイクロコントローラ。
【請求項５】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、次に読み出す診断プログラムのアドレスを指定する形式を含むことを特徴とするマイクロコントローラ。
【請求項６】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、前記診断モジュールの処理を終了させることを指定する形式を含むことを特徴とするマイクロコントローラ。
【請求項７】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、
次に読み出す診断プログラムのアドレスを指定する形式と、
診断モジュールの処理を終了させることを指定する形式と、のいずれの形式であるかを識別するための情報を有することを特徴とするマイクロコントローラ。
【請求項８】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記読み出す周辺モジュールレジスタのビット長を示す情報を有することを特徴とするマイクロコントローラ。
【請求項９】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記周辺モジュールレジスタと比較データの比較条件として、一致、不一致、大きい、小さいを指定する情報を有することを特徴とするマイクロコントローラ。
【請求項１０】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記診断プログラムが、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記診断プログラムの実行後に、読み出した周辺モジュールのレジスタに、前記診断プログラムで指定した比較データの値を書き込む機能を有することを特徴とするマイクロコントローラ。
【請求項１１】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記診断モジュールが診断プログラムの実行後に、読み出した周辺モジュールのレジスタに、前記診断プログラムで指定した比較データの値を書き込むか否かを指定する情報を有することを特徴とするマイクロコントローラ。
【請求項１２】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記診断プログラムが、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記診断プログラムの実行後に、前記第２のメモリ中の前記診断プログラムで指定した比較データに、読み出した周辺モジュールのレジスタの値を書き込む機能を有することを特徴とするマイクロコントローラ。
【請求項１３】
請求項１または２記載のマイクロコントローラにおいて、
前記診断プログラムは、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式の場合に、前記診断モジュールが診断プログラムの実行後に、前記第２のメモリ中の前記診断プログラムで指定した比較データに、読み出した周辺モジュールのレジスタの値を書き込むか否かを指定する情報を有することを特徴とするマイクロコントローラ。
【請求項１４】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記第２のメモリに記憶されたプログラムを読み出して処理を実行することを指定するための診断イネーブルレジスタを有し、前記診断イネーブルレジスタは、前記ＣＰＵから診断実行可および診断実行不可のいずれの値にも設定可能であることを特徴とするマイクロコントローラ。
【請求項１５】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記第２のメモリに記憶されたプログラムを読み出して処理を実行中であるか否かを示すための診断実行中状態レジスタを有し、前記診断実行中状態レジスタは、前記ＣＰＵから読み出し可能であることを特徴とするマイクロコントローラ。
【請求項１６】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記第２のメモリに記憶された、前記診断モジュールの処理を終了させることを指定する形式のプログラムを読み出した場合に、診断が終了したことを外部に出力する信号を有することを特徴とするマイクロコントローラ。
【請求項１７】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記第２のメモリに記憶された、前記診断モジュールの処理を終了させることを指定する形式のプログラムを読み出した場合に、診断が終了したことを外部に出力するか否かを指定するための診断終了割込みイネーブルレジスタを有し、前記診断終了割込みイネーブルレジスタは、前記ＣＰＵから読み出しおよび書き込み可能であることを特徴とするマイクロコントローラ。
【請求項１８】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、診断が終了したか否かを示すための診断終了状態レジスタを有し、前記診断終了状態レジスタは、前記ＣＰＵから読み出し可能であることを特徴とするマイクロコントローラ。
【請求項１９】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、前記第２のメモリに記憶された、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータとを指定する形式と、
読み出す周辺モジュールレジスタのアドレスと、前記周辺モジュールレジスタの値と比較するデータと、前記周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式と、のいずれかの形式のプログラムを実行し、前記プログラムで指定した診断条件が不成立の場合に、診断エラー割込み信号を出力するか否かを指定するための診断エラー割込みイネーブルレジスタを有し、前記診断エラー割込みイネーブルレジスタは、前記ＣＰＵから読み出しおよび書き込み可能であることを特徴とするマイクロコントローラ。
【請求項２０】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、診断エラーが発生したか否かを示すための診断エラー状態レジスタを有し、前記診断エラー状態レジスタは、前記ＣＰＵから読み出しおよび書き込み可能であることを特徴とするマイクロコントローラ。
【請求項２１】
請求項１または２記載のマイクロコントローラにおいて、
前記診断モジュールは、診断プログラムの実行後に次の診断プログラムを読み出すまでのウエイトサイクル数を設定するウエイトサイクルレジスタを有し、前記ウエイトサイクルレジスタは、前記ＣＰＵから読み出しおよび書き込み可能であることを特徴とするマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに係わり、特に高い信頼性を必要とする制御機器において使用されるマイクロコントローラに適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、マイクロコントローラ（以下「マイコン」という）は、家電製品、ＡＶ機器、携帯電話、自動車、産業機械等の機器に組み込まれ、メモリに記憶されているプログラムにしたがって処理を行うことで、それぞれの機器の制御を行う装置である。
【０００３】
このマイコンは、機器に組み込まれて利用されるというその性質上、機器の制御を行うために必要な性能を備え、かつ、安価であることが要求される。さらに、動作保証される使用条件の下で、正常に動作するという信頼性に対する要求も強い。
【０００４】
また、マイコンには、ＣＰＵ、メモリの他に、タイマー、Ａ／Ｄ変換、通信など、様々な種類の周辺モジュールが多数搭載されている。従来から用いられている高信頼化技術として、ＥＣＣやパリティチェック、ソフトウエア自己診断がある。ＥＣＣ、パリティチェックはメモリ等の記憶素子に冗長なビットを付加しておくことにより、記憶素子に記憶されるデータが壊れた場合に、これを読み出し時に訂正、またはエラーを検出するものである。ソフトウエア自己診断とは、ＣＰＵのプログラム実行によって、ＣＰＵ自身、メモリ、周辺モジュールが正しく機能するかを調べるものである。ソフトウエア自己診断は、診断のためのプログラムがあれば良いため、幅広く適用されている。ＥＣＣやパリティチェックは、自動車エンジン制御用など使用される環境が過酷で、特に信頼性が要求される分野において適用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、従来の診断技術のうち、ソフトウエア自己診断は、プログラムのみで実現でき、特別なハードウエアを必要としない。しかしながら、ＣＰＵのプログラム実行でこれを行うため、本来の機器制御に割り当てられる処理能力が低下することになる。言い換えると、機器制御の処理能力を落とさなくするには、ソフトウエア自己診断に必要な性能分を加算した、高性能なマイコンが必要ということになり、コストが高くなるという問題がある。あるいは、コストを優先して、使用するマイコンの処理能力で足りる範囲内に診断プログラムの処理を抑える必要がある。
【０００６】
また、ＥＣＣやパリティチェックは、専用の論理回路でエラー訂正、エラー検出を行うため、ＣＰＵの処理に負荷をかけない。しかしながら、診断の対象が記憶素子に限定される。また、エラー訂正、エラー検出を行う論理回路が必要である。
【０００７】
このように、従来技術を用いて周辺モジュールの診断を行う場合、ソフトウエア自己診断による方法では、ＣＰＵの処理負荷が高くなるという問題がある。ＥＣＣやパリティチェックによる方法では、専用の論理回路が必要であり、これらの回路を必要としないマイコン用に設計済みの周辺モジュールを再利用できない。また、診断の対象が記憶素子に限定されるという制限がある。
【０００８】
そこで、本発明の目的は、上記課題を解決し、ＣＰＵに処理負荷をかけずに、周辺モジュールの診断を行うための技術を提供することにある。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１１】
上記目的を達成するため、本発明は、ＣＰＵと、ＣＰＵが実行する命令およびデータを記憶する第１のメモリと、タイマー、Ａ／Ｄ変換、通信などの機能を有する周辺モジュールと、ＣＰＵと第１のメモリが接続されるＣＰＵバスと、周辺モジュールが接続される周辺バスと、ＣＰＵが周辺モジュールをアクセスする場合に、ＣＰＵバスと周辺バスを接続するバスブリッジとを有する構成において、さらに、周辺バスに接続される第２のメモリと、第２のメモリに記憶された診断プログラムを読み出して処理を行う診断モジュールとを有する。この構成により、診断モジュールは、診断プログラムでアドレス指定される周辺モジュールのレジスタを読み出して、診断プログラムで指定される比較条件に基づき、診断プログラムで指定される比較データと周辺モジュールのレジスタの値とを比較し、この比較条件が成立したか否かを示す信号を出力する。このように、診断モジュールが診断プログラムに定義される条件に一致するか否かを判定することで、周辺モジュールの診断をＣＰＵに負荷をかけずに行うことができる。
【００１２】
また、本発明は、さらに、割込み要求をＣＰＵに通知する割込みコントローラを有する構成により、診断モジュールが診断プログラムに定義される条件に一致するか否かを判定し、比較条件が不成立の場合には、割込みコントローラに診断エラー割込み要求を出力し、割込みコントローラが診断モジュールからの診断エラー割込みをＣＰＵに通知し、ＣＰＵが診断エラー割込みに対応するプログラム処理を実行することができる。
【発明の効果】
【００１３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１４】
本発明によれば、ＣＰＵに負荷をかけることなく、周辺モジュールの診断を行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
本発明の概念は、プログラム（命令）に従って処理を行うマイコンに適用され、プログラムを処理するＣＰＵと、プログラムとデータを記憶する第１のメモリと、ＣＰＵがプログラムを読み出し、データを読み書きするためのＣＰＵバスとからなるＣＰＵバス接続系と、タイマー、Ａ／Ｄ変換、通信などの機能を有する周辺モジュールと、周辺モジュールへのデータの読み書きを行うための周辺バスとからなる周辺バス接続系と、ＣＰＵが周辺モジュールをアクセスする場合に、ＣＰＵバスと周辺バスを接続するバスブリッジとを有する構成において、周辺バスに接続され、周辺モジュールの診断プログラムを記憶する第２のメモリと、周辺バスに接続され、診断プログラムを読み出して解読し、周辺モジュールのレジスタを読み出して、診断プログラムに定義される条件に一致するか否かを判定し、結果を出力する機能を有する診断モジュールとを有するものである。さらに、割込み要求をＣＰＵに通知する割込みコントローラを有し、診断モジュールが診断プログラムに定義される条件に一致するか否かを判定し、比較条件が不成立の場合には、割込みコントローラに診断エラー割込み要求を出力し、割込みコントローラが診断モジュールからの診断エラー割込みをＣＰＵに通知し、ＣＰＵが診断エラー割込みに対応するプログラム処理を実行するものである。以下に詳細に説明する。
【００１７】
図１は、本発明を適用した一実施の形態のマイコンを説明するためのブロック図である。
【００１８】
本実施の形態のマイコン１は、プログラムを実行するＣＰＵ１０と、プログラムおよびデータを記憶する第１のメモリとして機能するＲＯＭ２０およびＲＡＭ（１）２１と、ＣＰＵ１０とＲＯＭ２０およびＲＡＭ２１が接続されるＣＰＵバス７０と、タイマー、Ａ／Ｄ変換、通信などの機能を有する周辺モジュール（１）６０，（２）６１，（Ｎ）６２と、周辺モジュール６０，６１，６２の診断プログラムを記憶する第２のメモリとして機能するＲＡＭ（２）５０と、ＲＡＭ５０に記憶された診断プログラムを読み出して処理を行う診断モジュール４０と、周辺モジュール６０，６１，６２とＲＡＭ５０および診断モジュール４０が接続される周辺バス８０と、ＣＰＵバス７０と周辺バス８０を接続するバスブリッジ３０と、周辺バス８０とＣＰＵ１０および診断モジュール４０に接続され、割込み要求をＣＰＵ１０に通知する割込みコントローラ９０と、周辺バス８０に接続され、外部とのデータの入出力を行う外部バスコントローラ９１などを備えて構成される。
【００１９】
このマイコン１は、外部バスコントローラ９１を通じて外部バス２に接続され、また、周辺モジュール６２が通信端子を通じてネットワーク３に接続され、さらに、周辺モジュール６１がアナログ入力端子を通じてセンサー４に接続されている。
【００２０】
ＣＰＵバス７０は、ＣＰＵ１０がプログラムの読み出し、データの入出力のためのアクセスを行うために使用する信号線の束で、アクセスの種類を示すコマンド、アドレス、データの情報を含む。
【００２１】
周辺バス８０は、ＲＡＭ５０の読み出しと書き込み、周辺モジュール６０，６１，６２に含まれるレジスタの読み出しおよび書き込みのためのアクセスを行うために使用する信号線の束である。
【００２２】
バスブリッジ３０は、ＣＰＵ１０が診断モジュール４０、ＲＡＭ５０、周辺モジュール６０，６１，６２をアクセスする場合に、ＣＰＵバス７０と周辺バス８０を接続して、コマンド、アドレス、データを転送する機能を有する。
【００２３】
診断モジュール４０は、ＲＡＭ５０に記憶された診断プログラムを読み出し、解読し、周辺モジュール６０，６１，６２に含まれるレジスタを読み出して、診断プログラムに定義される条件に一致するか否かを判定し、結果を出力する。診断モジュールの判定結果は、例えば割込みコントローラ９０に入力され、判定結果が不一致の場合には、周辺モジュールのレジスタの値が不正であるとみなし、ＣＰＵ１０に割り込み処理を実行させるという使用方法が考えられる。
【００２４】
図２は、図１における診断モジュール４０の主要な機能を説明するためのブロック図である。
【００２５】
制御状態レジスタ４００は、診断モジュール４０の動作を制御するとともに、状態を知るためのレジスタである。診断プログラムアドレスレジスタ４０１は、診断プログラムのアドレスを保持するレジスタである。診断対象アドレスレジスタ４０２は、診断対象となる周辺モジュールレジスタのアドレスを保持するレジスタである。診断対象データレジスタ４０３は、診断対象となる周辺モジュールレジスタのデータを保持するレジスタである。比較データレジスタ４０４は、診断対象データレジスタ４０３と比較するデータを保持するレジスタである。マスクデータレジスタ４０５は、診断対象データレジスタ４０３と比較データレジスタ４０４の比較を行うビットを指定するレジスタである。比較条件レジスタ４０６は、診断対象データレジスタ４０３と比較データレジスタ４０４の比較条件を保持するレジスタである。
【００２６】
これらのレジスタは、図１における周辺バス８０を使ってアクセスされる。８００３は、周辺バス８０のデータバスであり、診断モジュール４０のレジスタの書き込み端子に接続される。診断プログラムアドレスレジスタ４０１は、周辺バス８０からの書き込みの他、診断モジュール４０が生成する診断プログラムアドレスの書き込みが行われる。４１１は診断プログラムアドレス生成回路であり、診断プログラムアドレスレジスタ４０１のデータ４０１０を入力して、次の診断プログラムアドレス４１１０を生成する。４１０は、診断プログラムアドレス書き込みデータの選択回路で、その出力データ４１００が診断プログラムアドレスレジスタ４０１への書き込みデータとなる。診断モジュール出力データ選択回路４１３は、制御状態４０００、診断プログラムアドレス４０１０、診断対象アドレス４０２０、診断対象データ４０３０、比較データ４０４０、マスクデータ４０５０、比較条件４０６０からデータを選択し、診断モジュール読み出しデータ４１３０を出力する。診断モジュール読み出しデータ４１３０は、バッファ４２２を介して、周辺バスデータ８００３に出力される。
【００２７】
比較回路４３２は、診断対象データ４０３０とマスクデータ４０５０をマスク回路４３０で演算した結果４３００と、比較データ４０４０とマスクデータ４０５０をマスク回路４３１で演算した結果４３１０を、比較条件４０６０に基づき比較し、比較結果４３２０を出力する。マスク回路４３０と４３１におけるマスク演算は、入力データの論理積で行うことができる。
【００２８】
制御論理４４０は、周辺バス８０から診断モジュール４０のレジスタのアクセスに対してのデータ読み出しと書き込みの制御と、診断プログラム実行の制御を行う。周辺バス８０からのアクセスにおいては、周辺バスコマンド８００１を入力し、アクセス無し、読み出し、書き込みの操作の解読を行う。また、周辺バスアドレス８００２を入力し、アクセス対象となるレジスタの判定を行う。診断プログラムの実行時には、診断モジュール４０が周辺バス８０のアクセスを行う。周辺バス要求信号４４０１を出力し、周辺バスの使用許可を示す周辺バス要求応答信号８０００が返ると、周辺バスアクセスを開始する。制御論理４４０が生成した周辺バスコマンド４４００を、バスドライバ４２０を通じて、周辺制御バス８００１に出力する。また、診断プログラム読み出し時には、診断プログラムアドレス４０１０を選択回路４１２で選択し、選択された信号４１２０をバスドライバ４２１を通じて周辺アドレスバス８００２に出力する。診断対象の周辺モジュールレジスタ読み出し時には、診断対象アドレス４０２０を選択回路４１２で選択し、選択された信号４１２０をバスドライバ４２１を通じて周辺アドレスバス８００２に出力する。診断プログラムの実行において、診断終了を示すプログラムを実行した場合、診断終了割込み信号４４０２を出力することができる。また、比較結果４３２０が不一致を示した場合、診断エラー割り込み信号４４０３を出力することができる。
【００２９】
図３は、診断プログラムの形式を示す図である。（１）は、次に読み出す診断プログラムのアドレスを指定する形式である。すなわち、診断プログラムのアドレスを設定するための形式であり、８ビットのコマンド部分と３２ビットの診断プログラムアドレス部分からなる。（２）は、読み出す周辺モジュールレジスタのアドレスと、周辺モジュールレジスタの値と比較するデータとを指定する形式である。すなわち、周辺モジュールレジスタの比較の方法を設定するための形式であり、８ビットのコマンド部分と３２ビットの診断対象アドレス部分とＤビットの比較データ部分からなる。（３）は、読み出す周辺モジュールレジスタのアドレスと、周辺モジュールレジスタの値と比較するデータと、周辺モジュールレジスタの比較するビットを指定するマスクデータとを指定する形式である。すなわち、周辺モジュールレジスタのマスク付き比較の方法を設定するための形式であり、８ビットのコマンド部分と３２ビットの診断対象アドレス部分とＤビットの比較データ部分とＤビットのマスクデータ部分からなる。（４）は、診断モジュールの処理を終了させることを指定する形式である。すなわち、診断プログラム実行の終了を設定するための形式であり、８ビットのコマンド部分からなる。
【００３０】
図４は、図３における診断プログラムのコマンドの形式を示す図である。図４において、２ビットのＴＰ１、ＴＰ０は、図３における（１）〜（４）のいずれの形式であるかを識別するための情報である。すなわち、コマンドのタイプを表すフィールドであり、その値と意味を図５に示す。値が００の場合、診断プログラムの形式は、図３における（１）の診断プログラムアドレス設定形式である。値が０１の場合、診断プログラムの形式は、図３における（４）の診断終了形式である。値が１０の場合、診断プログラムの形式は、図３における（２）の比較形式である。値が１１の場合、診断プログラムの形式は、図３における（３）のマスク付き比較形式である。
【００３１】
図４において、２ビットのＳＺ１、ＳＺ０は、図３における（２），（３）のいずれかの形式の場合に、読み出す周辺モジュールレジスタのビット長を示す情報である。すなわち、診断対象データのサイズを表すフィールドであり、図３における（２）の比較形式の比較データのビットサイズＤを指定し、（３）のマスク付き比較形式の比較データとマスクデータのビットサイズＤを指定する。ＳＺ１、ＳＺ０の値と意味を図６に示す。値が００の場合、データサイズは８ビットであることを示す。値が０１の場合、データサイズは１６ビットであることを示す。値が１１の場合、データサイズは３２ビットであることを示す。値が１０の場合、データサイズは未定義である。図３において比較データを参照する（２）および（３）の形式の診断プログラムの場合、ＳＺ１、ＳＺ０は、００、０１、１１のいずれかの値でなくてはならない。（１）および（４）の形式の診断プログラムの場合、ＳＺ１、ＳＺ０は意味を持たないため、いかなる値であっても良い。
【００３２】
図４において、２ビットのＣＭ１、ＣＭ０は、図３における（２），（３）のいずれかの形式の場合に、周辺モジュールレジスタと比較データの比較条件として、一致、不一致、大きい、小さいを指定する情報である。すなわち、診断対象データの比較条件を表すフィールドであり、その値と意味を図７に示す。値が００の場合、比較条件は「診断対象データと比較データが一致」となる。値が０１の場合、比較条件は「診断対象データと比較データが不一致」となる。値が１０の場合、比較条件は「診断対象データが比較データより大きい」となる。値が１１の場合、比較条件は「診断対象データが比較データより小さい」となる。図３において比較を行わない（１）および（４）の形式の診断プログラムの場合、ＣＭ１、ＣＭ０は意味を持たないため、いかなる値であっても良い。
【００３３】
図４において、１ビットのＵＰＴは、図３における（２），（３）のいずれかの形式の場合に、診断モジュール４０が診断プログラムの実行後に、読み出した周辺モジュールのレジスタに、診断プログラムで指定した比較データの値を書き込むか否かを指定する情報である。すなわち、診断プログラムの実行後に診断対象レジスタを比較データの値に更新するか否かを表すビットであり、その値と意味を図８に示す。値が０の場合、更新を行わないことを示し、値が１の場合、比較データで上書きすることを示す。図３において比較を行わない（１）および（４）の形式の診断プログラムの場合、ＵＰＴは意味を持たないため、いかなる値であっても良い。
【００３４】
図４において、１ビットのＵＰＥは、図３における（２），（３）のいずれかの形式の場合に、診断モジュール４０が診断プログラムの実行後に、ＲＡＭ５０中の診断プログラムで指定した比較データに、読み出した周辺モジュールのレジスタの値を書き込むか否かを指定する情報である。すなわち、診断プログラムの実行後に診断プログラム中の比較データ部分を診断対象データの値に更新するか否かを表すビットであり、その値と意味を図９に示す。値が０の場合、更新を行わないことを示し、値が１の場合、診断対象データで上書きすることを示す。図３において比較を行わない（１）および（４）の形式の診断プログラムの場合、ＵＰＥは意味を持たないため、いかなる値であっても良い。
【００３５】
図１０は、図２における制御状態レジスタ４００の詳細を示す図である。ビット１５〜８のＥＸ、ＩＥＤ、ＩＥＲ、ＷＣＹは診断モジュール４０の動作を設定するための制御ビットであり、ＣＰＵ１０によって書き込みを行う。
【００３６】
ＥＸは、診断イネーブルビットと呼び、ＲＡＭ５０に記憶されたプログラムを読み出して処理を実行することを指定するためのレジスタに格納され、ＣＰＵ１０から診断実行可および診断実行不可のいずれの値にも設定可能である。診断モジュール４０に診断プログラムを実行させたい場合に１を書き込む。ＥＸビットを１から０に書き換えると、現在実行中の診断プログラムが終了した後、停止状態になる。
【００３７】
ＩＥＤは、診断終了割込みイネーブルビットと呼び、ＲＡＭ５０に記憶された診断モジュール４０の処理を終了させることを指定する形式のプログラムを読み出した場合に、診断が終了したことを外部に出力するか否かを指定するためのレジスタに格納され、ＣＰＵ１０から読み出しおよび書き込み可能である。図３における（４）の診断終了形式のプログラムを実行した後に、割込み信号を発生させたい場合に１を書き込む。
【００３８】
ＩＥＲは、診断エラー割込みイネーブルビットと呼び、ＲＡＭ５０に記憶された図３における（２），（３）のいずれかの形式のプログラムを実行し、プログラムで指定した診断条件が不成立の場合に、診断エラー割込み信号を出力するか否かを指定するためのレジスタに格納され、ＣＰＵ１０から読み出しおよび書き込み可能である。図３における（２）および（３）の形式の診断プログラムを実行し、比較結果が不一致となった場合に割込みを発生させたい場合に１を書き込む。
【００３９】
ＷＣＹは、ウエイトサイクル数フィールドと呼び、診断プログラムの実行後に次の診断プログラムを読み出すまでのウエイトサイクル数を設定するレジスタに格納され、ＣＰＵ１０から読み出しおよび書き込み可能である。診断プログラム間に発生させるウエイトサイクル数を指定する。ＷＣＹの値とウエイトサイクル数の関係は、本発明を適用するマイコンにおいて適宜決定すれば良いが、例えばウエイトサイクル数は２のＷＣＹ乗とするなどが考えられる。
【００４０】
ビット３〜１のＦＥＸ、ＦＥＤ、ＦＥＲは、診断モジュール４０の状態を表すビットである。
【００４１】
ＦＥＸは、診断実行中フラグと呼び、ＲＡＭ５０に記憶されたプログラムを読み出して処理を実行中であるか否かを示すためのレジスタに格納され、ＣＰＵ１０から読み出し可能である。診断モジュール４０が診断プログラムを実行中である場合には１、停止状態にある場合には０が読み出される。
【００４２】
ＦＥＤは、診断終了フラグと呼び、診断が終了したか否かを示すためのレジスタに格納され、ＣＰＵ１０から読み出し可能である。診断モジュール４０が図３における（４）の診断終了形式のプログラムを実行した後に値が１にセットされる。
【００４３】
ＦＥＲは、診断エラーフラグと呼び、診断エラーが発生したか否かを示すためのレジスタに格納され、ＣＰＵ１０から読み出しおよび書き込み可能である。図３における（２）および（３）の形式の診断プログラムを実行し、結果が不一致となった場合に１にセットされる。
【００４４】
ビット７〜４とビット０のＲＳＶは予約ビットである。
【００４５】
図１１は、診断モジュール４０の処理を示すフローチャートである。まず、診断可能か否かの判定を行う（Ｓ１）。この診断可能か否かの判定は、図１０の制御状態レジスタ４００を使って行う。ＥＸ＝１かつＦＥＤ＝０かつＦＥＲ＝０の場合に、診断可能となる。すなわち、ＥＸ＝１により診断プログラムの実行が許可されており、ＦＥＤ＝０により診断が終了しておらず、ＦＥＲ＝０により診断エラーが発生していない場合に、診断プログラムの実行が可能となる。上記以外の条件では、診断モジュール４０は待機状態となる。
【００４６】
診断可能状態（Ｙ）になると、診断モジュール４０はＲＡＭ５０に記憶された診断プログラムを読み出す（Ｓ２）。診断プログラムのコマンドを解析し（Ｓ３）、その形式が比較またはマスク付き比較の場合、アドレス設定の場合、診断終了の場合で、それぞれの処理を行う。
【００４７】
比較またはマスク付き比較の場合、コマンドに続く診断対象アドレス、比較データ、マスクデータを読み出し（Ｓ４）、続いて周辺モジュールレジスタを読み出し（Ｓ５）、比較データとの比較を行う（Ｓ６）。一致の場合は次のウエイト処理（Ｓ１０）へ進み、不一致の場合は制御状態レジスタのＦＥＲを１にセットして（Ｓ７）、ウエイト処理（Ｓ１０）へ進む。この時、制御状態レジスタのＩＥＲが１に設定されている場合は、診断エラー割込みを発生させる。
【００４８】
コマンドがアドレス設定の場合、コマンドに続く診断プログラムアドレスを読み出し、図２における診断プログラムアドレスレジスタ４０１に設定して（Ｓ８）、次のウエイト処理（Ｓ１０）に進む。
【００４９】
コマンドが診断終了の場合、制御状態レジスタのＦＥＤを１にセットして（Ｓ９）、次のウエイト処理（Ｓ１０）に進む。
【００５０】
ウエイト処理（Ｓ１０）では、図１０の制御状態レジスタ４００のＷＣＹで決まるサイクル数の間ウエイト状態となり、診断可能か否かの判定処理（Ｓ１）に戻る。
【００５１】
図１２は、診断プログラム実行時の周辺バス８０の動作を表したタイムチャートである。診断モジュール４０は診断可能状態になると、周辺バス８０のバスマスタであるバスブリッジ３０に周辺バス要求を出力する。バスブリッジ３０は周辺バス８０のバス権を渡せるタイミングで周辺バス要求応答を返す。これを受けて診断モジュール４０は周辺バス８０のアクセスを開始する。診断プログラムｉは、図３における（２）の比較形式であり、ＲＡＭ５０からコマンドＰｉＲ１、診断対象アドレスＰｉＲ２、比較データＰｉＲ３を読み出し、続いて診断対象アドレスが示す周辺モジュールレジスタから診断対象データＤｉＲ１を読み出す。診断プログラムｉの実行が終わるとウエイト処理に入り、次の診断プログラムｊの実行に移る。
【００５２】
図１３は、診断プログラムの実行で、比較結果が不一致となり診断エラー割込みが発生する場合を表したタイムチャートである。診断プログラムｋは、図３における（３）のマスク付き比較形式であり、ＲＡＭ５０からコマンドＰｋＲ１、診断対象アドレスＰｋＲ２、比較データＰｋＲ３、マスクデータＰｋＲ４を読み出し、続いて診断対象アドレスが示す周辺モジュールレジスタから診断対象データＤｋＲ１を読み出す。マスク付き比較の結果が不一致となったため、診断エラー割込みが出力される。
【００５３】
図１４は、図３における（１）の診断プログラムアドレス設定の形式を実行した場合を表したタイムチャートである。診断プログラムｎは、図３における（１）の診断プログラムアドレス設定形式であり、ＲＡＭ５０からコマンドＰｎＲ１、診断プログラムアドレスＰｎＲ２を読み出す。ＰｎＲ２は図２における診断プログラムアドレスレジスタ４０１に設定される。診断プログラムｎの実行後、ウエイト処理に入り、ＰｎＲ２をアドレスとして診断プログラム１のコマンドＰ１Ｒ１を読み出す。
【００５４】
図１５は、図１におけるＲＡＭ５０に記憶される診断プログラムの例を示す図である。図１５において、１列のデータは１バイトである。診断プログラム１は、マスク付き比較形式であり、１バイトのコマンド１、４バイトの診断対象アドレス１、１バイトの比較データ１、１バイトの比較マスクデータ１からなる。診断プログラム２もマスク付き比較形式であるが、比較データと比較マスクデータのサイズが２バイトの例を示す。診断プログラムｎは、診断対象アドレス設定形式であり、１バイトのコマンドｎ、４バイトの診断対象アドレスｎからなる。診断対象アドレスｎの値は、診断プログラム１のコマンド１のアドレスとすれば、診断プログラム１から診断プログラムｎまでを無限に実行できる。
【００５５】
図１６は、本発明を適用した別の実施の形態のマイコンを説明するためのブロック図である。
【００５６】
本実施の形態のマイコン１は、図１におけるＲＯＭ２０がマイコン１に内蔵されない代わりに、外部バス２に外部のＲＯＭ５が接続されて構成される。他の構成は、図１と同様である。
【００５７】
ＣＰＵ１０は、外部バス２を介してＲＯＭ５から命令およびデータを読み出すことによってプログラムを実行する。ＲＯＭ５には診断モジュール４０が実行するプログラムも記憶されている。診断モジュール４０はＲＯＭ５から診断プログラムを読み出して実行することもできるし、例えばマイコン１をリセットした後にＲＯＭ５からＲＡＭ５０に診断プログラムを転送しておくことにより、ＲＡＭ５０から読み出して実行することも可能である。
【００５８】
以上のように、前記各実施の形態（図１、図１６）のマイコン１によれば、ＣＰＵ１０が接続されたＣＰＵバス７０とは別の周辺バス８０に接続され、周辺モジュール６０，６１，６２の診断プログラムを記憶するＲＡＭ５０と、このＲＡＭ５０に記憶された診断プログラムを読み出して処理を行う診断モジュール４０とを有することにより、診断モジュール４０が、ＲＡＭ５０から診断プログラムを読み出して解読し、周辺モジュール６０，６１，６２のレジスタを読み出して、診断プログラムに定義される条件に一致するか否かの判定による診断を行うことができるので、ＣＰＵ１０に負荷をかけることなく、周辺モジュール６０，６１，６２の診断を行うことができる。
【００５９】
本実施の形態に対して、例えば診断モジュールを持たない従来技術（図１７）のマイコン１では、周辺バス８０に接続されたＲＡＭ５０および診断モジュール４０がなかった。そのため、周辺モジュール６０，６１，６２のレジスタをＣＰＵ１０がソフトウエア処理で診断する場合には、ＲＡＭ２１にその診断用のプログラムを用意し、ＣＰＵ１０が診断プログラムおよび周辺モジュールレジスタを読み出して比較を行うことで実現できる。ただし、ＣＰＵバス７０に比べて周辺バス８０は低速クロックで動作させるため、ＣＰＵ１０が周辺モジュールをアクセスする場合には、多くのウエイトサイクルが入る。また、周辺モジュール診断を割込みによって起動させる場合には、割込み処理のオーバヘッドが加わる。このような課題が従来技術にはあったが、本実施の形態においては、上記のようにこれらの課題を解決することができる。
【００６０】
さらに、本実施の形態によれば、割込み要求をＣＰＵ１０に通知する割込みコントローラ９０を有することにより、診断モジュール４０が診断プログラムに定義される条件に一致するか否かを判定し、比較条件が不成立の場合には、割込みコントローラ９０に診断エラー割込み要求を出力し、割込みコントローラ９０が診断モジュール４０からの診断エラー割込みをＣＰＵ１０に通知し、ＣＰＵ１０が診断エラー割込みに対応するプログラム処理を実行することができる。
【００６１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００６２】
本発明は、マイコンに係わり、特に高い信頼性を必要とする制御機器において使用されるマイコンに適用して有効である。
【図面の簡単な説明】
【００６３】
【図１】本発明を適用した一実施の形態のマイコンを説明するためのブロック図である。
【図２】本発明を適用した一実施の形態において、図１における診断モジュールの主要な機能を説明するためのブロック図である。
【図３】本発明を適用した一実施の形態において、診断プログラムの形式を示す図である。
【図４】本発明を適用した一実施の形態において、図３における診断プログラムのコマンドの形式を示す図である。
【図５】本発明を適用した一実施の形態において、図４においてコマンドの形式を表すＴＰ１、ＴＰ０フィールドの値と意味を示す図である。
【図６】本発明を適用した一実施の形態において、図４において診断対象データのサイズを表すＳＺ１、ＳＺ０フィールドの値と意味を示す図である。
【図７】本発明を適用した一実施の形態において、図４において診断対象データの比較条件を表すＣＭ１、ＣＭ０フィールドの値と意味を示す図である。
【図８】本発明を適用した一実施の形態において、図４において診断プログラムの実行後に診断対象レジスタを比較データの値に更新するか否かを表すＵＰＴビットの値と意味を示す図である。
【図９】本発明を適用した一実施の形態において、図４において診断プログラムの実行後に診断プログラム中の比較データ部分を診断対象データの値に更新するか否かを表すＵＰＥビットの値と意味を示す図である。
【図１０】本発明を適用した一実施の形態において、図２における制御状態レジスタの詳細を示す図である。
【図１１】本発明を適用した一実施の形態において、診断モジュールの処理を示すフローチャートである。
【図１２】本発明を適用した一実施の形態において、診断プログラム実行時の周辺バスの動作を示すタイムチャートである。
【図１３】本発明を適用した一実施の形態において、診断プログラムの実行で、比較結果が不一致となり診断エラー割込みが発生する場合を示すタイムチャートである。
【図１４】本発明を適用した一実施の形態において、図３における（１）の診断プログラムアドレス設定の形式を実行した場合を示すタイムチャートである。
【図１５】本発明を適用した一実施の形態において、図１におけるＲＡＭに記憶される診断プログラムの例を示す図である。
【図１６】本発明を適用した別の実施の形態のマイコンを説明するためのブロック図である。
【図１７】本発明に対して、診断モジュールを持たない従来技術のマイコンを説明するためのブロック図である。
【符号の説明】
【００６４】
１…マイコン、２…外部バス、３…ネットワーク、４…センサー、５…ＲＯＭ、１０…ＣＰＵ、２０…ＲＯＭ、２１…ＲＡＭ、３０…バスブリッジ、４０…診断モジュール、５０…ＲＡＭ、６０，６１，６２…周辺モジュール、７０…ＣＰＵバス、８０…周辺バス、９０…割込みコントローラ、９１…外部バスコントローラ、４００…制御状態レジスタ、４０１…診断プログラムアドレスレジスタ、４０２…診断対象アドレスレジスタ、４０３…診断対象データレジスタ、４０４…比較データレジスタ、４０５…マスクデータレジスタ、４０６…比較条件レジスタ、４１０…選択回路、４１１…診断プログラムアドレス生成回路、４１２…選択回路、４１３…診断モジュール出力データ選択回路、４２０，４２１…バスドライバ、４２２…バッファ、４３０，４３１…マスク回路、４３２…比較回路、４４０…制御論理。
【図１】
2006172331.tif 000003
【図２】
2006172331.tif 000004
【図３】
2006172331.tif 000005
【図４】
2006172331.tif 000006
【図５】
2006172331.tif 000007
【図６】
2006172331.tif 000008
【図７】
2006172331.tif 000009
【図８】
2006172331.tif 000010
【図９】
2006172331.tif 000011
【図１０】
2006172331.tif 000012
【図１１】
2006172331.tif 000013
【図１２】
2006172331.tif 000014
【図１３】
2006172331.tif 000015
【図１４】
2006172331.tif 000016
【図１５】
2006172331.tif 000017
【図１６】
2006172331.tif 000018
【図１７】
2006172331.tif 000019