(57)【要約】【課題】ポート回路と外部回路を接続する端子のハイインピーダンス状態を回避しつつ、ポート回路と接続する信号線の断線を認識すること【解決手段】制御レジスタ１６２には、内部ロジック回路１２０からリセット命令信号（Ｓ４）をマスクするか否かを示す値が設定される。マスク回路１６１は、制御レジスタ１６２から読み出した値とリセット命令信号（Ｓ４）を基にマスク済みリセット信号（Ｓ９−１）をポート回路１６０に供給する。ポート回路１６０は、ＣＰＵ１２１からのポート出力データとマスク済みリセット信号（Ｓ９−１）に応じて外部通知エラー信号（Ｓ５）を監視ＡＳＩＣ２００に通知する。監視ＡＳＩＣ２００は、外部通知エラー信号に応じてＭＣＵ１００の異常検出を行う。【選択図】図１
2014032559.tif 000002
【特許請求の範囲】
【請求項１】
ＭＣＵ（Micro Controller Unit）と、前記ＭＣＵを監視する監視回路と、を備え、
前記ＭＣＵは、
監視対象ロジック回路と、
前記ＭＣＵ内の各機能の動作異常を示すエラー信号に応じて各回路をリセット状態にするリセット指示信号を出力するリセット制御回路と、
前記監視対象ロジック回路から値が設定される第１制御レジスタと、
前記第１制御レジスタに設定された値に基づいて前記リセット指示信号をマスクして第１マスク済みリセット信号を出力する第１マスク回路と、
前記第１マスク済みリセット信号、及び前記監視対象ロジック回路の定期動作テストの実行結果に関する第１ポート出力データを基に、前記ＭＣＵがエラー状態であるかを示す外部通知エラー信号を前記監視回路に出力する第１ポート回路と、を備え、
前記監視回路は、
前記外部通知エラー信号を用いて前記ＭＣＵの異常検出を行うエラー検出回路、を備える半導体装置。
【請求項２】
前記ＭＣＵは、
前記監視対象ロジック回路から値が設定される第２制御レジスタと、
前記第２制御レジスタに設定された値に基づいて前記リセット信号をマスクして第２マスク済みリセット信号を出力する第２マスク回路と、
前記第２マスク済みリセット信号及び前記定期動作テストの実行期間に関する第２ポート出力データを基に、前記監視回路に前記ＭＣＵがテストモードであるか否かを示すテストモード信号を出力する第２ポート回路と、
前記監視回路は、
前記テストモード信号を受信して前記エラー検出回路に転送するテスト制御回路を更に備え、
前記エラー検出回路は、前記テストモード信号がテスト実行を示す値の場合に前記ＭＣＵの異常検出を行い、それ以外の場合に異常検出を行わない請求項１に記載の半導体装置。
【請求項３】
前記監視対象ロジック回路は、前記定期動作テストの実行エラーが出る毎に前記リセット制御回路にエラーを示す前記エラー信号を入力し、所定頻度の実行エラーが出た場合には前記第１ポート回路にエラー値を示す前記第１ポート出力データを供給する、請求項１に記載の半導体装置。
【請求項４】
前記監視対象ロジック回路は、電源供給が開始されてから通常動作状態に移行する前に、テスト実行を示す値を前記第２ポート出力データとして前記第２ポート回路に供給する請求項２に記載の半導体装置。
【請求項５】
前記監視対象ロジック回路から値が設定される第３制御レジスタと、
前記第３制御レジスタに設定された値に基づいて前記リセット指示信号をマスクして第３マスク済みリセット信号を出力する第３マスク回路と、
前記第３マスク済みリセット信号及び前記監視対象ロジック回路からの第３ポート出力データを基に、前記ＭＣＵからのデータ読み書きを行う外部メモリのチップセレクト信号を前記外部メモリに出力する第３ポート回路と、
を更に備える請求項１に記載の半導体装置。
【請求項６】
前記監視回路は、
前記エラー検出回路による前記ＭＣＵの異常検出が行われた場合、前記ＭＣＵに対して強制的にリセット状態に遷移することを指示する端子リセット信号を前記ＭＣＵの第１端子に入力する端子リセット制御回路を備える、請求項１に記載の半導体装置。
【請求項７】
前記エラー検出回路は、前記テストモード信号がテスト実行を示す値であり、前記外部通知エラー信号を出力する端子がハイインピーダンス状態である場合には前記ＭＣＵが異常状態であると判定する請求項２に記載の半導体装置。
【請求項８】
請求項１乃至請求項７のいずれか１項に記載の半導体装置を備えた車載制御システム。
【請求項９】
監視対象ロジック回路と、
前記ＭＣＵ内の各機能の動作異常を示すエラー信号に応じて各回路をリセット状態にするリセット指示信号を出力するリセット制御回路と、
前記監視対象ロジック回路から値が設定される第１制御レジスタと、
前記第１制御レジスタに設定された値に基づいて前記リセット指示信号をマスクして第１マスク済みリセット信号を出力する第１マスク回路と、
前記第１マスク済みリセット信号及び前記監視対象ロジック回路からの第１ポート出力データを基に生成した信号を外部回路に出力する第１ポート回路と、
を備える半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えばリセット制御機能を有する半導体装置に関する。
【背景技術】
【０００２】
近年の自動車は、走行制御を含む様々な機能を有している。これらの機能を実現するために、自動車は車載システムを搭載している。これらの車載システムの誤動作は、人命に関わる事故を引き起こす可能性がある。そのため車載システムには、フェイルセーフ機能が備えられていることが強く要求されている。
【０００３】
車載システムでは、内部ロジック回路の動作電圧、ＣＰＵ（Central Processing Unit）の動作、クロック周波数等の正常動作を監視する機構（内部動作監視機構）が備えられる。この内部動作監視機構が異常状態を検出した場合、車載システム内のＭＣＵ（Micro Controller Unit）をリセット状態にすることが一般的である。
【０００４】
以下、リセット制御に関連する先行文献について説明する。特許文献１には、故障種類に応じてリセット箇所を自由に変更できるリセット回路が開示されている。当該リセット回路は、異常検出時等にリセット対象となる各回路に対するマスク設定を読み出し、当該マスク設定のされていない回路にのみリセット信号を供給する。特許文献２には、リセット信号を受信した場合に初期化の許可／禁止を示す選択情報を基に初期化の制御を行うデータ処理装置が開示されている。
【０００５】
ところでＭＣＵ内部には、外部回路との入出力のインターフェイスとなり、かつ出力レベルを制御するポート回路（ポート入力回路、ポート出力回路）が設けられる。ＭＣＵ１０がリセット状態になった場合、ポート回路は初期化される。そして、ポート回路と外部回路を接続する出力端子は、初期化が終了するまでハイインピーダンス（Ｈｉ−Ｚ）状態となる。この場合、接続先の回路等（ＡＳＩＣ（Application Specific Integrated Circuit）等）に意図しない信号値が伝搬し、当該回路等が誤動作する可能性がある。
【０００６】
この誤動作に対して、プルアップ抵抗を用いた対応が一般的に用いられている。当該対応を行った半導体装置では、ＭＣＵ内のポート回路とＡＳＩＣ等の外部回路との間の信号線のノード（以下、ノードＮとする。）と、プルアップ抵抗と、が接続する。当該プルアップ抵抗の他端は電源電圧ＶＤＤと接続する。これにより、ＭＣＵの出力端子がハイインピーダンス状態である場合、プルアップ抵抗を介して常にハイレベルの信号がＡＳＩＣ等の外部回路に供給される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−３２００８０号公報
【特許文献２】特開昭６４−５５６５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述のプルアップ抵抗を用いた半導体装置では、信号線の断線を認識できないという問題がある。詳細には、上述のノードＮとＭＣＵとの間の信号線が断線した場合であっても、ＡＳＩＣ等の外部回路には常にプルアップ抵抗を介してハイレベルの信号が供給され続ける。これにより、ＡＳＩＣ等の外部回路は、ＭＣＵの出力した信号では無い値を用いて動作を継続してしまうという問題があった。
【０００９】
すなわち、上述の技術ではポート回路と外部回路を接続する端子のハイインピーダンス状態を回避しつつ、ポート回路と接続する信号線の断線を認識することが出来ないという問題があった。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態によれば、半導体装置は、制御レジスタに設定された値と、ポート回路へのリセット信号と、を基にマスク済みリセット信号を生成し、マスク済みリセット信号をリセット指示を行う信号としてポート回路に供給する。
【発明の効果】
【００１２】
前記一実施の態様によれば、半導体装置は、ポート回路と外部回路を接続する端子のハイインピーダンス状態を回避しつつ、ポート回路と接続する信号線の断線を認識することが出来る。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかる半導体装置１の構成を示すブロック図である。
【図２】実施の形態１にかかるリセット信号統合回路１１２の構成を示すブロック図である。
【図３】実施の形態１にかかるマスク回路１６１の構成を示すブロック図である。
【図４】実施の形態１にかかるポート回路１６０の構成を示すブロック図である。
【図５】実施の形態１にかかるポート回路１６０の構成を示すブロック図である。
【図６】実施の形態１にかかるポート回路１６０の構成を示すブロック図である。
【図７】実施の形態１にかかる検出電圧設定レジスタ１３１の構成を示す概念図である。
【図８】実施の形態１にかかる検出電圧設定レジスタ１２３及び検出電圧設定レジスタ１３１の構成を示す概念図である。
【図９】実施の形態１にかかるエラーフラグレジスタ１３４の構成を示す概念図である。
【図１０】実施の形態１にかかるエラーフラグレジスタ１２４及びエラーフラグレジスタ１３４の構成を示す概念図である。
【図１１】実施の形態１にかかる半導体装置１内の各回路の動作を示すタイミングチャートである。
【図１２】実施の形態１にかかる半導体装置１内の各回路の動作を示すタイミングチャートである。
【図１３】実施の形態２にかかる半導体装置１の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、一般乗用車、業務用乗用車（トラック等）などに搭載され得る半導体装置の構成を示すブロック図である。なお、以下の説明において、図面中で同一名称及び同一符号を付した処理部は同一であるものとして重複する説明は適宜省略する。
【００１５】
半導体装置１は、ＭＣＵ１００、監視ＡＳＩＣ２００、及び電源回路３００を備える。監視ＡＳＩＣ２００は、エラー回数カウンタ２１０、端子リセット制御回路２２０、エラー検出回路２３０、及びテスト制御回路２４０を備える。監視ＡＳＩＣ２００は、ＭＣＵ１００との信号入出力を行う端子２５０、端子２５１、端子２５２、及び端子２５３を備える。ＭＣＵ１００は、ＭＣＵリセット制御回路１１０、内部ロジック回路１２０、及びＣＶＭ（Core Voltage Monitor）１３０、ポート回路１６０、マスク回路１６１、制御レジスタ１６２、ポート回路１６３、マスク回路１６４、制御レジスタ１６５を備える。またＭＣＵ１００は、監視ＡＳＩＣ２００との信号入出力に用いる端子１４０、端子１４１（第１外部端子）、端子１４２、及び端子１４３を備える。
【００１６】
電源回路３００は、エンジン起動時等の電源ＯＮの際に、ＭＣＵ１００及び監視ＡＳＩＣ２００に電源供給を行う。
【００１７】
次に監視ＡＳＩＣ２００の構成について説明する。エラー回数カウンタ２１０には、端子１４０及び端子２５０を介して電圧エラー信号（Ｓ１）が入力される。ここで電圧エラー信号（Ｓ１）は、後述するＣＶＭ１３０が異常を検出した場合にのみハイレベルとなる２値信号である。エラー回数カウンタ２１０は、電圧エラー信号（Ｓ１）の入力回数（すなわちエラーとなった回数。以下の説明ではエラー回数とも記載する。）をカウントアップして保持する。換言するとエラー回数カウンタ２１０は、ＭＣＵ１００のエラー状態を保持する。エラー回数カウンタ２１０は、エラー回数の情報を端子リセット制御回路２２０に供給する。
【００１８】
端子リセット制御回路２２０には、端子１４０及び端子２５０を介して電圧エラー信号（Ｓ１）が入力される。さらに、端子リセット制御回路２２０には、電圧エラー信号（Ｓ１）がハイレベルとなった場合に、エラー回数カウンタ２１０がカウントしたカウント数が入力される。また端子リセット制御回路２２０には、エラー検出回路２３０からの出力信号（Ｓ７）が入力される。出力信号（Ｓ７）は、エラー検出回路２３０から端子リセット制御回路２２０に入力される２値信号であり、ＭＣＵ１００の異常時にロウレベルとなる。
【００１９】
端子リセット制御回路２２０は、電圧エラー信号（Ｓ１）がハイレベルとなった場合に、ロウレベルの値を持つ端子リセット信号（Ｓ２）を端子２５１から出力する。ここで、端子リセット信号（Ｓ２）は、リセットを指示する場合にロウレベルに立ち下がり、リセット解除を指示する場合にハイレベルに立ち上がる２値信号である。
【００２０】
端子リセット制御回路２２０は、電圧エラー信号（Ｓ１）がハイレベルとなった場合、端子リセット信号（Ｓ２）をロウレベルに遷移させた後に、エラー回数カウンタ２１０から入力されたエラー回数が所定値未満であるか否かを判定する。所定値未満であった場合、端子リセット信号（Ｓ２）をハイレベルに遷移させる。すなわち、端子リセット制御回路２２０は、エラー回数が所定値未満であった場合にリセット解除を指示する端子リセット信号（Ｓ２）を出力する。このようにエラー回数を考慮してＭＣＵ１００外部からリセットを行うことにより、ＭＣＵ１００の状態をより確実に判断した上でＭＣＵ１００のリセット解除をすることができる。
【００２１】
一方、エラー回数が所定値以上である場合、端子リセット制御回路２２０は、端子リセット信号（Ｓ２）をロウレベルのままにする。そして、端子リセット制御回路２２０は、図示しない上位システムにエラー通知信号（図示せず）を送信する。ここで上位システムとは、例えば車両の乗員（ドライバー）にシステム故障を通知するコントロールパネル制御等を行う処理部である。上位システムは、端子リセット制御回路２２０からエラー通知信号を受信した場合、図示しないサブＭＣＵ等により動作を継続する等の制御を行う。
【００２２】
端子リセット制御回路２２０は、出力信号（Ｓ７）がロウレベルとなった場合、端子リセット信号（Ｓ２）をロウレベルに遷移させる。出力信号（Ｓ７）がロウレベルとなった場合には、端子リセット制御回路２２０は、エラー回数等を考慮することなく、端子リセット信号（Ｓ２）をロウレベルに固定する。出力信号（Ｓ７）がロウレベルとなった場合にも、端子リセット制御回路２２０は、上位システムにエラー通知信号を送信する。
【００２３】
テスト制御回路２４０には、端子１４３及び端子２５３を介してテストモード信号（Ｓ６）が入力される。テスト制御回路２４０は、テストモード信号（Ｓ６）をエラー検出回路２３０に入力する。テストモード信号（Ｓ６）は、ハイレベルの場合に初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）中であることを示す２値信号である。
【００２４】
エラー検出回路２３０には、端子２５２を介して外部通知エラー信号（Ｓ５)が入力され、テスト制御回路２４０からテストモード信号（Ｓ６）が入力される。エラー検出回路２３０は、テストモード信号（Ｓ６）がハイレベルの場合（すなわち初期化テスト中である場合）、ハイレベルの出力信号（Ｓ７）を端子リセット回路２２０に入力する。一方、テストモード信号（Ｓ６）がロウレベルの場合（すなわち通常動作状態である場合）、外部通知エラー信号（Ｓ５)の値を出力信号（Ｓ７）として端子リセット制御回路２２０に供給する。またエラー検出回路２３０は、テストモード信号（Ｓ６）がハイレベルの場合（すなわち初期化テスト中である場合）に端子１４２のハイインピーダンス（Ｈｉ−Ｚ）状態を検出した場合、出力信号（Ｓ７）の値をロウレベルに変更する（すなわちエラー状態と判定する）。
【００２５】
続いてＭＣＵ１００内部の各回路について説明する。ＭＣＵリセット制御回路１１０は、イベント保持回路１１１、およびリセット信号統合回路１１２を有する。
【００２６】
イベント保持回路１１１には、電圧エラー信号（Ｓ１）及び端子リセット信号（Ｓ２）が入力される。イベント保持回路１１１は、電圧エラー信号（Ｓ１）がハイレベルに遷移してから端子リセット信号（Ｓ２）が立ち下がる（ロウレベルに遷移する）までの期間を保持する回路である。
【００２７】
イベント保持回路１１１は、例えば一般的なＳＲ（Set-Reset）ラッチにより構成すればよい。当該ＳＲラッチのセット入力端子には、電圧エラー信号（Ｓ１）が入力される。また、当該ＳＲラッチのリセット入力端子には、端子リセット信号（Ｓ２）が入力される。イベント保持回路１１１は、出力信号（Ｓ３）をリセット信号統合回路１１２に入力する。
【００２８】
リセット信号統合回路１１２には、端子リセット信号（Ｓ２）、イベント保持回路１１１の出力信号（Ｓ３）、及び定期テストエラー信号（Ｓ８）が入力される。リセット信号統合回路１１２は、リセット命令信号（Ｓ４）を生成する回路である。リセット命令信号（Ｓ４）は、ハイレベルの場合にＭＣＵ１００のリセットを指示し、ロウレベルの場合に通常状態への遷移を指示する２値信号である。
【００２９】
リセット信号統合回路１１２の構成例の詳細を図２を参照して説明する。リセット信号統合回路１１２は、例えばインバータ１１２１、及びＯＲ回路１１２２を備える。インバータ１１２１には、端子リセット信号（Ｓ２）が入力される。ＯＲ回路１１２２には、イベント保持回路１１１の出力信号（Ｓ３）、インバータ１１２１の出力信号（端子リセット信号（Ｓ２）の反転信号）、及び定期テストエラー信号（Ｓ８）が入力される。ＯＲ回路１１１２は、３つの入力信号の論理和値をリセット命令信号（Ｓ４）としてリセット信号統合回路１１２に供給する。
【００３０】
内部ロジック回路１２０（監視対象ロジック回路）は、ＣＰＵ１２１、記憶部１２２、検出電圧設定レジスタ１２３、及びエラーフラグレジスタ１２４を有する。内部ロジック回路１２０は、後述するＣＶＭ１３０の監視対象となるロジック回路である。なお、内部ロジック回路１２０は、図示しないレジスタ等を適宜備えているものとする。
【００３１】
ここで、内部ロジック回路１２０と、ＭＣＵ１００内の他の回路と、は異なる動作電圧で動作することが一般的である。例えば内部ロジック回路１２０は、１．２Ｖの動作電圧で動作する。また例えばＭＣＵ１００内の他の回路は、５．０Ｖの動作電圧で動作する。内部ロジック回路１２０を低い電圧で動作させることにより、高集積化及び低消費電力化を図ることができる。
【００３２】
記憶部１２２は、任意のデータを記憶する処理部であり、ＲＡＭ（Random Access Memory）等のメモリ装置やレジスタ等を含む概念である。記憶部１２２は、例えば後述する自己診断プログラムや定期テストプログラム等を保持する。
【００３３】
ＣＰＵ（Central Processing Unit）１２１は、ＭＣＵ１００内の中心的な処理装置として機能する電子回路である。ＣＰＵ１２１は、記憶部１２２や図示しない記憶装置等からプログラムを読み出して様々な数値計算や情報処理等を行う。
【００３４】
ハイレベルのリセット命令信号（Ｓ４）が内部ロジック回路１２０に入力された場合、すなわちリセットの指示が入った場合、ＣＰＵ１２１は、所定のリセット処理を行い、ＭＣＵ１００をリセット状態に遷移させる。その後にリセット命令信号（Ｓ４）がロウレベルに遷移した場合（リセット解除が指示された場合）、ＣＰＵ１２１は、ＭＣＵ１００をリセット状態から復帰させる。
【００３５】
リセット状態からの復帰とは、自己診断プログラムの実行、及び通常動作の再開を意味する。はじめにＣＰＵ１２１は、記憶部１２２に書き込まれた自己診断プログラムを読み出す。ここで自己診断プログラムとは、ＭＣＵ１００の状態を診断するための各種の診断処理が記述されたプログラムである。自己診断プログラムには、記憶部１２２やＭＣＵ１００内部の各回路（アナログ回路、デジタル回路）に対する診断処理が含まれる。例えば、自己診断プログラムには、記憶部１２２及び任意のレジスタに対して書き込みを行い、当該書込みを行った箇所（アドレス）からの読み出しを行い、書き込んだ値と読み出した値が等しいか否かを診断する処理が含まれている。同様に、自己診断プログラムには、回路の入出力の正しさを検証する（例えばＭＣＵ１００内部で生成したアナログ信号をＡ／Ｄ変換器に入力し、当該Ａ／Ｄ変換器が出力した値が所望の値となっているかを検証する）処理が含まれている。すなわち、自己診断プログラムには、ＭＣＵ１００内の各機能が正常に動作するか否かを把握するための全ての検証処理が含まれている。
【００３６】
なお自己診断プログラムは、あくまで各機能を診断する処理が記載されており、不具合の修正処理を行うものではない。そのためＣＰＵ１２１は、自己診断プログラムの実行によって異常を検出した場合、その異常を記憶部１２２（または他の記憶装置）に書き込む。詳細にはＣＰＵ１２１は、エンドユーザが指定した記憶装置１２２のアドレスに自己診断プログラムの実行結果を書き込む。なおＣＰＵ１２１は、内部ロジック回路１２０外の記憶装置に自己診断プログラムの実行結果を書き込んでも良い。
【００３７】
またＣＰＵ１２１は、更に通常動作中に定期テストプログラムを一定周期毎に記憶部１２２から読み出して実行する。ここで定期テストプログラムとは、ＣＰＵ１２１が行う演算処理、その他の通常動作を行うために必要な機能が正常に動作しているか否かをテストするためのプログラムである。例えば定期テストプログラムには、所定の演算を行い、当該演算が所望の値となっているか否かを判定するテストが含まれる。ＣＰＵ１２１は、定期的に定期テストプログラムを実行し、実行結果が所望の結果では無かった場合（すなわちエラーであった場合）に定期テストエラー信号（Ｓ８）をハイレベルにしてリセット信号統合回路１１２に入力する。定期テストエラー信号（Ｓ８）は、定期テストプログラムの実行が１回でもエラーとなった場合にハイレベルとなる２値信号である。定期テストエラー信号（Ｓ８）は、定期テストプログラムの実行がエラーとならなかった場合にはロウレベルとなる。
【００３８】
ＣＰＵ１２１は、電源投入後に初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）を実行し、動作を開始しても問題ないかをテストする。ここで初期化テストとは、監視ＡＳＩＣ２００内のエラー検出回路２３０への外部通知エラー信号（Ｓ５)が正常に入力されるか否か等を検査するテストである。ＣＰＵ１２１は、初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）を行う際に制御レジスタ１６５に１（ハイレベル）を設定する。そしてＣＰＵ１２１は、ポート回路１６３から出力されるテストモード信号（Ｓ６）がハイレベルとなるようにポート回路１６３に入力する各信号を設定する。ＣＰＵ１２１と各ポート回路との間において、ポート出力データ信号、ポート出力許可信号、ポート入力データ信号、ポート入力許可信号のやり取りが生じる。ＣＰＵ１００は、ポート出力許可信号に１を設定し、ポート出力データ信号に所望の値を設定することによりポート回路からの出力データを規定することができる。なおＣＰＵ１２１は、初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）を行う際には制御レジスタ１６２に１（ハイレベル）を設定しない。各信号の入出力の詳細は、図４〜図６を参照して後述する。
【００３９】
ＣＰＵ１２１は、初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）の実行後に制御レジスタ１６２に１（ハイレベル）を設定し、ポート回路１６０から出力される外部通知エラー信号（Ｓ５)がハイレベルとなるようにポート回路１６０に入力する各信号を設定する。
【００４０】
ＣＰＵ１２１は、上述のように一定時間間隔で定期テストプログラムを実行し、実行結果が所定回数連続して所望の結果では無かった回数をカウントする。ＣＰＵ１２１は、当該カウント値が所定数以上であった場合にポート回路１６０へのポート出力データを１から０にすることにより、外部通知エラー信号（Ｓ５）をロウレベルにする。出力値の設定については図４〜６、図１１を参照して後述する。
【００４１】
検出電圧設定レジスタ１２３は、ＣＰＵ１２１から内部ロジック回路１２０の動作補償電圧の上限値が設定されるレジスタである。検出電圧設定レジスタ１２３は、書き込まれた上限値を検出電圧設定レジスタ１３１に書き込む。検出電圧レジスタ１２３、後述する検出電圧設定レジスタ１３１、エラーフラグレジスタ１２４、及びエラーフラグレジスタ１３４の詳細については図７及び図８を参照して後述する。
【００４２】
エラーフラグレジスタ１２４は、後述するＣＶＭ１３０が動作電圧エラーを検出した場合に、エラーフラグが設定されるレジスタである。エラーフラグとは異常状態であるか否かを示す２値情報である（以下、異常状態を示す場合にはＯＮ、異常状態ではない場合をＯＦＦと記載する。）。エラーフラグレジスタ１２４には、エラーフラグレジスタ１３４からエラーフラグの値が書き込まれる。
【００４３】
ＣＶＭ１３０は、内部ロジック回路１２０の動作電圧の異常を検出する。なお、ＣＶＭ１３０は、内部ロジック回路１２０の動作状態の異常性を監視する動作監視回路の一態様である。ＭＣＵ１００は、用途に応じてＣＶＭ１３０に代わり、他の動作状態の異常性を監視する動作監視回路を備えても良い。
【００４４】
検出電圧設定レジスタ１３１は、ＣＰＵ１２１から内部ロジック回路１２０の動作補償電圧の上限値が設定されるレジスタである。基準電圧生成回路１３２は、検出電圧設定レジスタ１３１に書き込まれた値（内部ロジック回路１２０の動作保証電圧の上限値）を読み出し、当該値の電圧値を持つ信号を生成する。基準電圧生成回路１３２内の構成は、一般的に知られた構成であればよく、例えば定電流源や複数の抵抗値を用いた構成等が考えられる。基準電圧生成回路１３２は、当該電圧値を持つ信号を電圧比較回路１３３に供給する。
【００４５】
電圧比較回路１３３は、基準電圧生成回路１３２の出力信号の電圧と、内部ロジック回路１２０の動作電圧と、を比較する。電圧比較回路１３３は、内部ロジック回路１２０の動作電圧が基準電圧生成回路１３２の出力信号の電圧よりも高い場合、電圧エラー信号（Ｓ１）をハイレベルにして出力するとともに、エラーフラグレジスタ１３４にエラーフラグを設定する（エラーが生じたことを示す値を書き込む）。なお、電圧エラー信号（Ｓ１）は、内部ロジック回路１２０の異常性を示すエラー検出信号の一態様である。また電圧比較回路１３３は、内部ロジック回路１２０の異常を検出する検出部と解釈できる。
【００４６】
エラーフラグレジスタ１３４は、エラーフラグとは異常状態であるか否かを示す２値情報であるエラーフラグ（以下、異常状態を示す場合にはＯＮ、異常状態ではない場合をＯＦＦと記載する。）を保持するレジスタであり、書き込まれたエラーフラグの値をエラーフラグレジスタ１２４に書き込む。
【００４７】
ポート回路１６０は、ＣＰＵ１２１からの出力（ポート出力データ信号）に応じて外部通知エラー信号（Ｓ５)を出力する。ポート回路１６０の構成は、図４を参照して後述する。制御レジスタ１６２には、ＣＰＵ１２１からマスク値（０、１）が入力される。ここでマスク値とは、リセット命令信号（Ｓ４）を無効（すなわちリセットを指示するハイレベルが入ってきたとしてもポート回路１６０のリセットを無効にする）にするか否かを指定する値である。マスク値が１である場合、リセット命令信号（Ｓ４）はマスク回路１６１によって無効化される（すなわちポート回路１６０はリセットされない）。
【００４８】
マスク回路１６１は、制御レジスタ１６２に１（ハイレベル）が設定されていた場合、リセット命令信号（Ｓ４）の値を無効化する回路である。マスク回路１６１の構成例を図３を参照して説明する。マスク回路１６１は、インバータ１６１１及びＯＲ回路１６１２を備える。インバータ１６１１は、リセット命令信号（Ｓ４）の反転信号をＯＲ回路１６１２に入力する。ＯＲ回路１６１２は制御レジスタ１６２からマスク値を読み出し、インバータ１６１１の出力信号との論理積値をマスク済みリセット信号（Ｓ９−１）としてポート回路１６０に入力する。ポート回路１６０に対してマスク済みリセット信号（Ｓ９−１）を０として入力した場合、ポート回路１６０はリセット状態となり、端子１４２はハイインピーダンス（Ｈｉ−Ｚ）状態となる恐れがある。
【００４９】
ポート回路１６０の構成について図４を参照して説明する。図４は、ポート回路１６０の構成を示すブロック図である。
【００５０】
ポート回路１６０は、ＡＮＤ回路１６０１、ＡＮＤ回路１６０２、ＡＮＤ回路１６０３、インバータ１６０４、ＮＯＲ回路１６０５、ＮＡＮＤ回路１６０６、ＮＭＯＳ１６０７、及びＰＭＯＳ１６０８を備える。なお、前述のように内部ロジック回路１２０の動作電圧とＭＣＵ１００内の他の領域の動作電圧は異なるため、内部ロジック回路１２０と他の領域の回路との間にはレベルシフタ（図示せず）が適宜設けられる。
【００５１】
ＡＮＤ回路１６０１は、ポート入力許可信号とマスク済みリセット信号（Ｓ９−１）との論理積値をＡＮＤ回路１６０２に入力する。ＡＮＤ回路１６０２は、端子１４２からの入力とＡＮＤ回路１６０１の出力信号との論理積値をポート入力データとして内部ロジック回路１２０に供給する。
【００５２】
ＡＮＤ回路１６０３は、ポート出力許可信号とマスク済みリセット信号（Ｓ９−１）との論理積値をインバータ１６０４及びＮＡＮＤ回路１６０６に入力する。インバータ１６０４は、ＡＮＤ回路１６０３の出力値を反転してＮＯＲ回路１６０５に入力する。ＮＯＲ回路１６０５は、インバータ１６０４の出力値とポート出力データの否定論理和値をＮＭＯＳ１６０７のゲートに入力する。ＮＡＮＤ回路１６０６は、ポート出力データとＡＮＤ回路１６０３の出力値との否定論理積値をＰＭＯＳ１６０８のゲートに入力する。ＮＭＯＳ１６０７とＰＭＯＳ１６０８は、図示するように縦積みで接続される。これにより、端子１４２から出力値が出力される。
【００５３】
図５は、制御レジスタ１６２に０が設定されている場合（すなわちマスクを行わない場合）にリセット指示が入った（リセット指示信号（Ｓ４）がハイレベル）場合のポート回路１６０の各回路の出力を示す図である。この場合、ＡＮＤ回路１６０１及びＡＮＤ回路１６０３に０が入力される。これにより、図示するようにＮＭＯＳ１６０７及びＰＭＯＳ１６０８がオフとなり、端子１４２がハイインピーダンス（Ｈｉ−Ｚ）状態となる。
【００５４】
図６は、制御レジスタ１６２に１が設定されている場合（すなわちマスクを行う場合）にリセット指示が入った（リセット指示信号（Ｓ４）がハイレベル）場合のポート回路１６０の各回路の出力を示す図である。この場合、ＡＮＤ回路１６０１及びＡＮＤ回路１６０３に１が入力される。これにより、図示するようにＮＭＯＳ１６０７及びＰＭＯＳ１６０８の少なくとも一方がオンとなり、端子１４２がハイインピーダンス（Ｈｉ−Ｚ）状態となることを回避することができる。
【００５５】
再び図１を参照する。ポート回路１６３は、ＣＰＵ１２１からの出力（ポート出力データ信号）に応じてテストモード信号（Ｓ６）を出力する。ポート回路１６３へのポート出力データ信号は、初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）の実行時に１が出力されるように制御される。なお、ポート回路１６３の構成は、図４に示す構成と略同一である。
【００５６】
制御レジスタ１６５には、ＣＰＵ１２１からマスク値（０、１）が入力される。ここでマスク値とは、リセット命令信号（Ｓ４）を無効（すなわちリセットを指示するハイレベルが入ってきたとしてもリセットを無効にする）にするか否かを指定する値である。制御レジスタ１６５は、初期化テストの実行中にＣＰＵ１２１から１（ハイレベル）が設定される。
【００５７】
マスク回路１６４は、制御レジスタ１６５に１（ハイレベル）が設定されていた場合、リセット命令信号（Ｓ４）の値を無効化する回路である。マスク回路１６４の構成は、図３に示す構成と同様である。マスク回路１６４は、マスク済みリセット信号（Ｓ９−２）をポート回路１６３に入力する。
【００５８】
続いて、図７及び図８を参照して検出電圧設定レジスタ１２３、検出電圧設定レジスタ１３１の構成について説明する。図１に示すＭＣＵ１００は、電圧比較に関する検出電圧設定レジスタ１２３及び検出電圧設定レジスタ１３１といった２つのレジスタ回路を持つ構成を示したである。しかしながら、ＣＶＭ１３０内にのみレジスタ回路（検出電圧レジスタ１３１）を設ける構成も技術的には可能である。そこで、ＭＣＵ１００が電圧比較に関するレジスタ回路を１つ（１３１）のみ持つ場合の構成、及び図１のように電圧比較に関するレジスタ回路を２つ（１２３、１３１）持つ場合の構成をそれぞれ説明する。そして、図１のように電圧比較に関するレジスタ回路を２つ（１２３、１３１）持つ場合の構成の利点について説明する。
【００５９】
一般的にＣＰＵ１２１からレジスタ回路へのアクセスは、バスを介したアクセスにより実行される。バスアクセスに必要な信号は、以下の信号である。
＜１＞バスクロック（ＣＬＫ）
＜２＞ライトデータ（ＷＤＡＴＡ）
＜３＞リードデータ（ＲＤＡＴＡ）
＜４＞リセット（ＲＥＳＥＴ）
＜５＞アドレス信号／ＩＰ選択信号（ＡＤＤＲ／ＳＥＬ）
＜６＞イネーブル信号／ライトストローブ信号（ＥＮＡＢＬＥ／ＳＴＲＢ）
＜７＞ライト信号（ＷＲＩＴＥ）
＜８＞転送延長信号（ＲＥＡＤＹ）
なお、以下の説明では上記の＜５＞?＜８＞の信号群をまとめて「制御信号」とも呼称する。
【００６０】
図７は、ＭＣＵ１００が電圧比較に関するレジスタ回路を１つ（１３１）のみ持つ場合の構成を示す概念図である。検出電圧設定レジスタ１３１は、データ保持部１３１１、及びバスＩＦ部１３１２を備える。さらに、内部ロジック回路１２０とＣＶＭ１３０との間に各信号（上述の＜１＞〜＜８＞）に対応するレベルシフタ１５０−１〜１５０−４を有する。なお、図面中ではレベルシフタを５つ（１５０−０〜１５０−４）図示しているが、実際には各信号線に対応する数のレベルシフタが設けられる。上述のように、内部ロジック回路１２０の動作電圧（１．２Ｖ）とＣＶＭ１３０の動作電圧（５Ｖ）は異なる。そのため、上述のバスクロック（ＣＬＫ）、ライトデータ（ＷＤＡＴＡ）、リードデータ（ＲＤＡＴＡ）、リセット（ＲＥＳＥＴ）、制御信号の電圧レベルを変換するレベルシフタを必要とする。レベルシフタ１５０−０〜１５０−４は、各信号を電圧レベル変換した後に検出電圧設定レジスタ１３１に供給する。
【００６１】
データ保持部１３１１は、ＣＰＵ１２１から書き込まれたデータを保持する。バスＩＦ部１３１２は、内部にアドレスデコーダや制御信号のデコードを行うデコード回路を有する。
【００６２】
次に、電圧比較に関するレジスタ回路を２つ（１２３、１３１）持つ場合の構成について説明する。図８は、ＭＣＵ１００が電圧比較に関するレジスタ回路を２つ（１２３、１３１）持つ場合の構成を示す概念図である。検出電圧設定レジスタ１２３は、データ保持部１２３１及びバスＩＦ部１２３２を有する。検出電圧設定レジスタ１３１−１は、データ保持部１３１１を有する。さらに、内部ロジック回路１２０とＣＶＭ１３０との間にレベルシフタ１５０−５及びレベルシフタ１５０−６を有する。
【００６３】
ＣＰＵ１２１と検出電圧設定レジスタ１２３の間に制御信号、ライトデータ（ＷＤＡＴＡ）、リードデータ（ＲＤＡＴＡ）に関するバスアクセスが発生する。また、検出電圧設定レジスタ１２３にバスクロック（ＣＬＫ）及びリセット（ＲＥＳＥＴ）が入力される。
【００６４】
データ保持部１２３１は、ＣＰＵ１２１から書き込まれたデータを保持する。バスＩＦ部１２３２は、内部に制御信号をデコードするデコード回路等を有する。バスＩＦ部１２３２は、制御信号をデコードし、バスクロック（ＣＬＫ）及びリセット（ＲＥＳＥＴ）の入力を用いてラッチ信号を生成する。ここでラッチ信号とは、制御信号をデコードすることにより生成される１ショットパルスであり、データの書き込みに用いるパルス信号である。図３の構成では、検出電圧設定レジスタ１３１内のバスＩＦ部１３１２において制御信号をデコードしてラッチ信号を生成し、このラッチ信号を用いてデータ保持部１３１１にデータ書き込みを行う。図８の構成では、検出電圧レジスタ１３１は、制御信号に代わってラッチ信号を検出電圧設定レジスタ１３１に供給する。すなわち、図８の構成では、制御信号よりもビット幅の小さいラッチ信号を予め内部ロジック１２０内で生成し、このラッチ信号を供給している。
【００６５】
レベルシフタ１５０−５は、バスＩＦ部１２３２が生成したラッチ信号の電圧レベル変換を行い、変換後のラッチ信号を検出電圧設定レジスタ１３１に入力する。レベルシフタ１５０−６は、ライトデータ（ＷＤＡＴＡ）の電圧レベル変換を行い、変換後のライトデータ（ＷＤＡＴＡ'）を検出電圧設定レジスタ１３１に供給する。
【００６６】
検出電圧設定レジスタ１３１は、データ保持部１３１１のみを有する。換言すると検出電圧設定レジスタ１３１は、バスＩＦ部に相当する回路を持たない。検出電圧設定レジスタ１３１は、ラッチ信号を元にデータ保持部１３１１にライトデータ（ＷＤＡＴＡ）を格納する。
【００６７】
続いて、図７に示す構成と図８に示す構成の比較を行う。上述したように図７の構成（レジスタ回路が１つのみの構成）の場合、各信号線に対応する数（ＲＤＡＴＡ３２ビット＋ＷＤＡＴＡ３２ビット＋制御信号１０〜１５ビット＝７５〜８０個）のレベルシフタを必要とする。一方、図８に示す構成（レジスタ回路が２つの構成）の場合、ライトデータ（ＷＤＡＴＡ'＝３２ビット）及びラッチ信号に対応する３３個のレベルシフタのみを必要とする。すなわち、図８の構成ではレベルシフタの個数を減らすことができ、回路規模を縮小することができる。なお、図８の構成では、データ保持部を図３の構成よりも１個多く必要とするが、データ保持部はレベルシフタに比べて回路規模が小さいため、全体としての回路規模は図８に示す構成のほうが小さくできる。
【００６８】
図７に示す構成は、バスクロック（ＣＬＫ）を高電圧（５Ｖ）のＣＶＭ１３０内で扱う構成である。バスクロック（ＣＬＫ）は、定期的に値が遷移する（すなわち値が頻繁に変化する）２値信号である。このバスクロック（ＣＬＫ）を５Ｖ領域内のＣＶＭ１３０が処理するために、動作電流が大きくなってしまう。一方、図８に示す構成は、バスクロック（ＣＬＫ）を低電圧（１．２Ｖ）領域の内部ロジック回路１２０内で扱う構成であるため、動作電流を小さくすることができ、消費電力を削減することができる。さらに、図８に示す構成は高電圧（５Ｖ）領域であるＣＶＭ１３０内の回路点数を少ないため、リーク電流が低減する。
【００６９】
さらにまた、図８に示す構成は設計容易性も高い。ＣＰＵ１２１がレベルシフタにアクセスする場合に信号伝達の遅延を引き起こす可能性があり、タイミング設計に悪影響を及ぼす。図８の構成では、ＣＰＵ１２１がレベルシフタにアクセスしない構成であるため、設計の難易度を低くすることができる。
【００７０】
続いて、図９及び図１０を参照してエラーフラグレジスタ１２４、エラーフラグレジスタ１３４の構成について説明する。エラーフラグに関してもＣＶＭ１３０内にのみレジスタ回路（エラーフラグレジスタ１３４）を設ける構成も技術的には可能である。そこで、ＭＣＵ１００が電圧比較に関するレジスタ回路を１つ（１３４）のみ持つ場合の構成、及び図１のように電圧比較に関するレジスタ回路を２つ（１２４、１３４）持つ場合の構成をそれぞれ説明する。
【００７１】
図９は、ＭＣＵ１００が電圧比較に関するレジスタ回路を１つ（１３４−１）のみ持つ場合の構成を示す概念図である。エラーフラグレジスタ１３４は、イベント保持部１３４３及びバスＩＦ部１３４２を備える。さらに、内部ロジック回路１２０とＣＶＭ１３０との間に各信号（上述の＜１＞〜＜８＞）に対応するレベルシフタ１５０−７〜１５０−１１を有する。このレベルシフタ１５０−７〜１５０−１１を介して、各信号の入出力が行われる。
【００７２】
バスＩＦ部１３４２は、内部にアドレスデコーダや制御信号のデコードを行うデコード回路を有する。イベント保持部１３４３は、ＳＲラッチにより構成されており、このＳＲラッチのセット入力端子には電圧エラー信号（Ｓ１）が入力される。また、ＳＲラッチのリセット入力端子にはＣＰＵ１２１からの信号が入力される。ＣＰＵ１２１は、自己診断プログラムの実行後に当該ＳＲラッチをリセットする。ＳＲラッチの出力は、レベルシフタ１５０−１１を介してＣＰＵ１２１に供給される。
【００７３】
図１０は、ＭＣＵ１００が電圧比較に関するレジスタ回路を２つ（１２４、１３４）持つ場合の構成を示す概念図である。エラーフラグレジスタ１３４は、イベント保持部１３４３を有する。エラーフラグレジスタ１２４は、データサンプリング部１２４３及びバスＩＦ部１２４２を有する。
【００７４】
イベント保持部１３４３は、ＳＲラッチにより構成されており、このＳＲラッチのセット入力端子には電圧エラー信号（Ｓ１）が入力される。また、ＳＲラッチのリセット入力端子にはＣＰＵ１２１からの信号が入力される。ＳＲラッチの出力は、レベルシフタ１５０−１２を介してエラーフラグレジスタ１２４に入力される。
【００７５】
バスＩＦ部１２４２には、制御信号、バスクロック（ＣＬＫ）、リセット（ＲＥＳＥＴ）が入力される。バスＩＦ部１２４２は、制御信号をデコードし、バスクロック（ＣＬＫ）及びリセット（ＲＥＳＥＴ）の入力を用いてラッチ信号を生成する。データサンプリング部１２４３は、バスクロック（ＣＬＫ）を用いて、エラーフラグレジスタ１３４からの入力をサンプリングする。
【００７６】
本構成においても制御信号のデコード等は、エラーフラグレジスタ１２４において行われるため、各電圧領域を跨ぐ信号のビット幅が削減される。これにより、レベルシフタの減少による回路規模の削減、消費電力の削減等の効果を奏することができる。
【００７７】
続いて本実施の形態にかかる半導体装置１の動作について図１１及び図１２を参照して説明する。図１１は、ＭＣＵ１００の動作中に自己診断プログラムの実行がエラーとなった場合の各回路の動作を示すタイミングチャートである。以下の例では、ＭＣＵ１００は、自己診断プログラムの連続２回のエラーで異常と判定するものとする。ＭＣＵ１００は、連続するエラーの発生回数ではなく、一定時間内でのエラーの発生回数で異常を判定しても良い。すなわち、ＭＣＵ１００は所定頻度でエラーが発生しているか否かで異常を判定すればよい。
【００７８】
タイミングｔ１１において、電源回路３００は、ＭＣＵ１００及び監視ＡＳＩＣ２００に対する電源供給を開始する。これによりＭＣＵ１００は、リセット状態に遷移する。端子リセット回路２２０は、電源供給後にＭＣＵ１００に対してハイレベルの端子リセット信号（Ｓ２）を供給し、リセット状態からの復帰を指示する（ｔ１２）。
【００７９】
ＣＰＵ１２１は、通常状態に移行した後に制御レジスタ１６５に１（マスクを指示する値）を設定し、ポート回路１６３に入力するポート出力許可信号及びポート出力データを１にする（ｔ１３）。これにより、テストモード信号（Ｓ６）は、ハイレベルとなる（ｔ１３）。ＣＰＵ１２１は、このような設定を行った後に初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）を実行する（ｔ１３）。ＣＰＵ１２１は、初期化テスト中にポート回路１６０からの外部エラー通知信号（Ｓ５）の出力を適宜切り替える（０、１）。監視ＡＳＩＣ２００内のエラー検出回路２３０は、テストモード信号（Ｓ６）により初期化テスト中であることを認識し、外部通知エラー信号（Ｓ５）が正しく受信できるかをテストする。
【００８０】
なお初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）の最中にＭＣＵ１００内部においてエラーが生じた場合（例えばＭＣＵ１００の動作確認を行うウォッチドッグタイマーに起因してリセット指示信号（Ｓ４）がハイレベルになった場合）、ポート回路１６０と接続する端子１４２がハイインピーダンス（Ｈｉ−Ｚ）状態となる。この場合、エラー検出回路２３０は、初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）中にＭＣＵ１００に異常が生じたものと判定する。
【００８１】
ＣＰＵ１２１は初期化テスト（ｉｎｉｔｉａｌ ｔｅｓｔ）の終了後に制御レジスタ１６５に０（マスクを行わないことを示す値）を設定し、ポート回路１６３に入力するポート出力許可信号及びポート出力データを０にする（ｔ１４）。
【００８２】
ＣＰＵ１２１は、定期テストプログラムの実行前に制御レジスタ１６２に１（マスクを指示する値）を設定し、ポート回路１６０と接続する端子１４２がハイインピーダンス状態とならないように制御する（ｔ１５）。そして、ＣＰＵ１２１は、定期テストプログラムを実行する（ｔ１６）。ここでは、この定期テストプログラムの実行においてエラーは生じなかったものとする。
【００８３】
ＣＰＵ１２１は、再び定期テストプログラムを実行し（ｔ１７）、エラーが生じたものとする。ＣＰＵ１２１は、定期テストプログラムの実行後に定期テストエラーモード信号（Ｓ８）をハイレベルにする（ｔ１８）。これに応じてリセット命令信号（Ｓ４）は、ハイレベルとなる（ｔ１８）。リセット命令信号（Ｓ４）は、ＭＣＵ１００内の各回路に入力される（ｔ１９）。しかしながら、制御レジスタ１６２が１に設定されているため、マスク回路１６１はポート回路１６０へのリセット命令信号（Ｓ４）をマスクする。これにより、ポート回路１６０からの出力信号である外部通知エラー信号（Ｓ５）は、ハイレベルのままとなる。リセット命令信号（Ｓ４）の入力により、マスク処理されていない各回路はリセット状態となり、一定のリセット処理が終了した場合には通常状態に復帰する。
【００８４】
ＣＰＵ１２１は、再び定期テストプログラムを実行し（ｔ２１）、再度エラーが生じたものとする。ＣＰＵ１２１は、定期テストプログラムの実行後に定期テストエラーモード信号（Ｓ８）をハイレベルにする（ｔ２２）。これに応じてリセット命令信号（Ｓ４）は、ハイレベルとなる（ｔ２２）。またＣＰＵ１２１は、連続して定期テストプログラムがエラーとなったことから、ポート回路１６０に入力するポート出力データを０にする。これによりポート回路１６０は、外部通知エラー信号（Ｓ５）をロウレベルに立ち下げる（ｔ２２）。
【００８５】
ロウレベルの外部通知エラー信号（Ｓ５）を受信した監視ＡＳＩＣ２００は、端子２５１および端子１４１を介してロウレベルの端子リセット信号（Ｓ２）をＭＣＵ１００に入力する（ｔ２３）。
【００８６】
図１２は、ＭＣＵ１００の動作中に端子１４２と端子２５２との間で信号線の断線が生じた場合の各回路の動作を示すタイミングチャートである。タイミングｔ１１〜タイミングｔ２０までの処理は、図１１と同様であるため説明は省略する。
【００８７】
タイミングｔ３１において端子１４２と端子２５２との間において信号線の断線が生じたものとする。この信号線の断線により、外部通知エラー信号（Ｓ５）は、ハイレベルからロウレベルに遷移する（ｔ３１）。監視ＡＳＩＣ２００内のエラー検出回路２３０及び端子リセット制御回路２２０は、外部通知信号（Ｓ５）のロウレベルの遷移に応じて端子リセット信号（Ｓ２）をロウレベルに遷移させる（ｔ３２）。これにより、ＭＣＵ１００を外部からリセットする。
【００８８】
続いて本実施の形態にかかる半導体装置の効果について説明する。本実施の形態にかかるＭＣＵ１００は、内部にポート回路１６０及び１６３へのリセット信号（９−１、９−２）の入力をマスクするマスク回路１６１及び１６４を有する。当該マスク回路１６１及び１６４は、リセット命令信号（Ｓ４）のマスク処理を行う。これにより、ポート回路と接続する端子がハイインピーダンス（Ｈｉ−Ｚ）状態になることを回避することが出来る。
【００８９】
また図１から明らかなように、半導体装置１はＭＣＵ１００と監視ＡＳＩＣ２００との間にプルアップ抵抗を持たない構成である。そのため、ＭＣＵ１００と監視ＡＳＩＣ２００との間の信号線に断線が生じた場合に監視ＡＳＩＣ２００に誤った出力値が伝搬することが無くなる。これにより、断線検出を含むエラー検出が可能となり、半導体装置１が不具合（信号線の断線）を持つ状態を認識できないまま動作し続けることを回避することができる。
【００９０】
上述のようにポート回路１６０は監視ＡＳＩＣ２００に対してエラー通知を行う回路であるため、ポート回路１６０と接続する端子１４２がハイインピーダンス状態になってしまうことにより誤ったＭＣＵ１００のリセット等を回避することができ、製品動作の安全性を向上させることができる。またポート回路１６０は、所定頻度の定期プログラムの実行エラーが生じるまで外部ＡＳＩＣ２００にエラー通知を行わないため、エラーであるか否かが不明確な時点での外部通知を防止することができる。
【００９１】
さらにポート回路１６３は、テストモード信号（Ｓ６）を出力する構成である。上述したように、初期化テスト（ｉｎｉｔｉａｌ  ｔｅｓｔ）の実行中には、制御レジスタ１６２に０が設定され、制御レジスタ１６５に１が設定される。この間にＭＣＵ１００内でエラーが生じた場合、エラー検出回路２３０はテストモード信号（Ｓ６）のハイレベルが入力された状態でポート回路１６０と接続する端子１４２のハイインピーダンス（Ｈｉ−Ｚ）状態を検出することにより、初期化テスト実行時のＭＣＵ１００内のエラーを認識することが出来る。ＭＣＵ１００内のエラーを検出することにより上位システムに通知する等の適切な対応を取ることができる。
【００９２】
＜実施の形態２＞
本実施の形態にかかる半導体装置１は、ポート回路からの出力信号を外部記憶装置（メモリ）のチップセレクト信号として使用することを特徴とする。本実施の形態にかかる半導体装置について実施の形態１と異なる点を以下に説明する。
【００９３】
図１３は、本実施の形態にかかる半導体装置の構成を示すブロック図である。半導体装置１は、図１の構成に加えて外部メモリ４００を有する。外部メモリ４００は、例えばＲＡＭ（Random Access Memory）やＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の任意の記憶装置である。
【００９４】
ＭＣＵ１００は、図１の構成に加えてポート回路１６６、マスク回路１６７、及び制御レジスタ１６８を備える。なお図１３には図示しないものの、図１と同様のポート回路１６３、マスク回路１６４、及び制御レジスタ１６５を備えている。ポート回路１６６、マスク回路１６７、及び制御レジスタ１６８の構成は、図１、図３、図４を示して説明した構成と略同一である。
【００９５】
ＣＰＵ１２１は、外部メモリ４００に対するデータ書き込み及びデータ読み出しを行う。ポート回路１６６は、外部メモリ４００のチップセレクト端子４０１とのデータ入出力を行う。ＣＰＵ１２１は、外部メモリ４００に対する読み出し、または書込み処理に応じて、ポート回路１６６に入力するポート出力データを適宜変更する。ポート回路１６６は、このポート出力データに応じてチップセレクト信号Ｓ１０を出力する。ＣＰＵ１２１は、制御レジスタ１６８には、ＭＣＵ１００の通常状態時に１（リセット命令信号（Ｓ４）のマスクを行う値）が書き込まれる。これにより、リセット命令信号（Ｓ４）がハイレベル（リセットを指示する値）の場合にもリセットがマスクされ、ポート回路１６６と接続する端子１４４がハイインピーダンス（Ｈｉ−Ｚ）状態となることが無くなる。
【００９６】
続いて、本実施の形態にかかる半導体装置の効果について説明する。本実施の形態では、ポート回路１６６の出力信号を外部メモリ４００のチップセレクト信号Ｓ１０として使用する。ポート回路１６６は、マスク回路１６７によるマスク制御が行われる構成である。これにより、外部メモリ４００のチップセレクト信号を出力する端子１４４がハイインピーダンス状態となることを回避することができる。ハイインピーダンス状態を回避することができることにより、外部メモリ４００の有効化を回避することができる。外部メモリ４００の不要な有効化が無くなることにより、消費電力を低減することができる。
【００９７】
＜その他の実施の形態＞
半導体装置１は、複数のポート回路を有し、各ポート回路に応じて上述のマスク処理を行うか否かについて異なる設定をできる構成であっても良い。ポート回路は、上述したように入力用途であっても出力用途であっても使用が可能である。そのため半導体装置１の出荷後にエンドユーザによって各ポート回路の用途が決定される場合がある。ポート回路を出力用途で使用する場合に上述のインピーダンス出力の問題が生じるが、ポート回路を入力用途で使用する場合には上述のインピーダンス出力の問題は生じない。そのため、ポート回路を入力用途で用いる場合、リセット命令信号（Ｓ４）をマスクしない方が異常検出時に速やかにリセットできる。そのため、ＣＰＵ１２１は、各ポート回路の用途及び使用タイミングに応じて各ポートに対応付けられた制御レジスタの値を適宜変更しても良い。例えば入力用途で用いるポート回路に対応する制御レジスタに対して常に０を設定することにより、当該ポート回路の速やかなリセットを行い、動作安定化を図ることができる。
【００９８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば監視ＡＳＩＣ２００は、ＭＣＵ１００の異常を検出した場合に他のＭＣＵにより適宜必要なバックアップ処理を行うように指示信号を出力しても良い。
【００９９】
上述のＭＣＵ１００を含む半導体装置１は、例えば一般車両等の車載システムに用いられる。当該車載システムは、複数のＭＣＵ１００を有し、各ＭＣＵ１００はアクセル駆動制御、ブレーキ制御、ドアミラー制御、テールランプ制御、ダッシュボード制御、ルームランプ制御等の様々な用途に用いられる。
【０１００】
さらにＭＣＵ１００は、車載システムのみならず他の情報処理システムに適宜用いられても良いことは勿論である。例えばＭＣＵ１００は、産業用ロボット等の制御等に用いられても良い。
【符号の説明】
【０１０１】
１  半導体装置
１００  ＭＣＵ
１１０  ＭＣＵリセット制御回路
１１１  イベント保持回路
１１２  リセット信号統合回路
１１２１  インバータ
１１２２  ＯＲ回路
１２０  内部ロジック回路
１２１  ＣＰＵ
１２２  記憶部
１２３  検出電圧設定レジスタ
１２３１  データ保持部
１２３２  バスＩＦ部
１２４  エラーフラグレジスタ
１２４２  バスＩＦ部
１２４３  データサンプリング部
１２７  通信ＩＰ
１３０  ＣＶＭ
１３１  検出電圧設定レジスタ
１３１１  データ保持部
１３１２  バスＩＦ部
１３２  基準電圧生成回路
１３３  電圧比較回路
１３４  エラーフラグレジスタ
１３４２  バスＩＦ部
１３４３  イベント保持部
１４０〜１４４  端子
１６０  ポート回路
１６０１〜１６０３  ＡＮＤ回路
１６０４  インバータ
１６０５  ＮＯＲ回路
１６０６  ＮＡＮＤ回路
１６０７  ＮＭＯＳ
１６０８  ＰＭＯＳ
１６１  マスク回路
１６１１  インバータ
１６１２  ＯＲ回路
１６２  制御レジスタ
１６３  ポート回路
１６４  マスク回路
１６５  制御レジスタ
２００  監視ＡＳＩＣ
２１０  エラー回数カウンタ
２２０  端子リセット制御回路
２３０  エラー検出回路
２４０  テスト制御回路
２５０〜２５３  端子
３００  電源回路
４００  外部メモリ
４０１  端子
【図１】
2014032559.tif 000003
【図２】
2014032559.tif 000004
【図３】
2014032559.tif 000005
【図４】
2014032559.tif 000006
【図５】
2014032559.tif 000007
【図６】
2014032559.tif 000008
【図７】
2014032559.tif 000009
【図８】
2014032559.tif 000010
【図９】
2014032559.tif 000011
【図１０】
2014032559.tif 000012
【図１１】
2014032559.tif 000013
【図１２】
2014032559.tif 000014
【図１３】
2014032559.tif 000015