(57)【要約】【課題】より確実に、且つ、より正確に故障検出を行うことができるデータ処理装置及びデータ処理装置の自己診断方法を提供する。【解決手段】マイクロコンピュータ１００のＣＰＵ１に処理されるデータに対してＣＲＣ演算処理を行うＣＲＣ演算回路１０と、ＣＲＣ演算回路１０の演算結果の期待値２Ａを格納するＲＯＭ２と、ＣＲＣ演算回路１０の動作を制御するＣＲＣ演算動作制御回路１３と、を備え、ＣＰＵ１は、演算結果と期待値２Ａとの比較結果に基づいて、故障を検出し、ＣＲＣ演算動作制御回路１３は、マイクロコンピュータ１００において割込み処理及びＤＭＡ転送処理の要求が発生した場合に、ＣＲＣ演算回路１０による演算処理を停止させ、割込み処理及びＤＭＡ転送処理が終了した場合に、ＣＲＣ演算回路１０による演算処理を再開させるように構成した。【選択図】図１
2009093393.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置に処理されるデータに対して所定の演算処理を行う演算部と、
前記演算部の演算結果の期待値を格納する格納部と、
前記演算部の動作を制御する制御部と、
を備え、
前記データ処理装置は、前記演算結果と前記期待値との比較結果に基づいて、故障を検出し、
前記制御部は、前記データ処理装置において外乱要因処理の要求が発生した場合に、前記演算部による演算処理を停止させ、前記外乱要因処理が終了した場合に、前記演算部による演算処理を再開させるデータ処理装置。
【請求項２】
データバスから入力されるデータを処理するＣＰＵと、
前記外乱要因処理の要求の発生を制御する外乱要因処理制御部と、
を備え、
前記演算部は、前記データバスから入力されるデータに対して所定の演算処理を行い、
前記制御部は、前記外乱要因処理制御部と前記ＣＰＵとを接続する信号線と接続され、前記信号線から外乱要因処理要求信号が入力された場合に、前記演算部による演算処理を停止させ、前記信号線から外乱要因処理終了信号が入力された場合に、前記演算部による演算処理を再開させる請求項１に記載のデータ処理装置。
【請求項３】
外部との間でデータの入出力を行う入出力部を備え、
前記制御部は、
アドレスバスを介して前記ＣＰＵと接続され、
前記アドレスバスから入力されるアドレス信号が前記入出力部のアドレスか否かを判別する判別部を備え、
前記判別部により、前記アドレス信号が前記入出力部のアドレスであると判別された場合に、前記演算部による演算処理を停止させる請求項１又は２に記載のデータ処理装置。
【請求項４】
前記外乱要因処理制御部として、割込み処理の要求の発生を制御する割込み制御回路を備える請求項１乃至３の何れか一項に記載のデータ処理装置。
【請求項５】
前記外乱要因処理制御部として、ＤＭＡ（Direct  Memory  Access）転送処理の要求の発生を制御するＤＭＡ制御回路を備える請求項１乃至４の何れか一項に記載のデータ処理装置。
【請求項６】
データ処理装置に処理されるデータに対して演算部による所定の演算処理を行い、
前記データ処理装置は、前記演算結果と、前記演算結果の期待値との比較結果に基づいて、故障を検出し、
制御部により、前記データ処理装置において外乱要因処理の要求が発生した場合に、前記演算部による演算処理を停止させ、前記外乱要因処理が終了した場合に、前記演算部による演算処理を再開させるデータ処理装置の自己診断方法。
【請求項７】
データバスから入力されるデータを処理するＣＰＵと、
前記外乱要因処理の要求の発生を制御する外乱要因処理制御部と、
を備え、
前記演算部は、前記データバスから入力されるデータに対して所定の演算処理を行い、
前記制御部は、前記外乱要因処理制御部と前記ＣＰＵとを接続する信号線と接続され、前記信号線から外乱要因処理要求信号が入力された場合に、前記演算部による演算処理を停止させ、前記信号線から外乱要因処理終了信号が入力された場合に、前記演算部による演算処理を再開させる請求項６に記載のデータ処理装置の自己診断方法。
【請求項８】
外部との間でデータの入出力を行う入出力部を備え、
前記制御部は、
アドレスバスを介して前記ＣＰＵと接続され、
前記アドレスバスから入力されるアドレス信号が前記入出力部のアドレスか否かを判別する判別部を備え、
前記判別部により、前記アドレス信号が前記入出力部のアドレスであると判別された場合に、前記演算部による演算処理を停止させる請求項６又は７に記載のデータ処理装置の自己診断方法。
【請求項９】
前記外乱要因処理制御部として、割込み処理の要求の発生を制御する割込み制御回路を備える請求項６乃至８の何れか一項に記載のデータ処理装置の自己診断方法。
【請求項１０】
前記外乱要因処理制御部として、ＤＭＡ（Direct  Memory  Access）転送処理の要求の発生を制御するＤＭＡ制御回路を備える請求項６乃至９の何れか一項に記載のデータ処理装置の自己診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ処理装置の自己診断方法に関する。
【背景技術】
【０００２】
近年、データ処理装置の一つであるマイクロコンピュータなどの電子部品の用途拡大に伴って、電子部品の高品質化が期待されている。そして、出荷時における電子部品の品質の向上だけでなく、出荷後セットに組み込まれて動作している際における電子部品の品質の向上が求められている。
そこで、ＣＰＵ（Central  Processing  Unit）の動作中に、ＣＰＵの自己診断を行う自己診断方法が着目されている。具体的には、ＣＰＵが実行している命令のアドレスやデータをＣＲＣ（Cyclic  Redundancy  Check）演算して、演算結果と期待値とを比較する。そして、演算結果が期待値と異なる場合には、故障が検出されたと判断する。これにより、ＣＰＵの自己診断を行っている。
【０００３】
例えば、特許文献１には、メモリにデータを読み書きするタイミングで、ＣＰＵのデータバスのデータをＣＲＣ演算し、演算結果と期待値とを比較する自己診断方法が記載されている。
また、特許文献２には、ＣＰＵの自己診断テスト中に、データバスのデータ及びＣＲＣ演算結果を圧縮してＣＲＣ演算レジスタに格納し、テスト終了後、ＣＲＣ演算レジスタからデータ及びＣＲＣ演算結果を読み出して確認する自己診断方法が記載されている。
【０００４】
通常、ＣＲＣ演算を用いた自己診断方法は、メインルーチンの処理に適用される。そして、メインルーチンの処理の実行中に、外乱要因処理の要求が発生した場合には、メインルーチンの処理をいったん停止し、サブルーチンの処理を実行し、サブルーチンの処理の終了後、メインルーチンの処理を再開する。外乱要因処理の要求とは、割込み処理要求やＤＭＡ（Direct  Memory  Access）転送要求などである。そのため、ＣＲＣ演算を用いた自己診断テスト中に、外乱要因処理の要求が発生すると、メインルーチンからサブルーチンへと移る前にＣＲＣ演算処理を停止し、サブルーチンの処理の終了後、ＣＲＣ演算処理を再開する必要がある。そして、ＣＲＣ演算処理の停止／再開を実現するための自己診断プログラムが必要となる。
【特許文献１】特開平０３−１８６９５６号公報
【特許文献２】特開昭６３−１３３２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、外乱要因処理の要求の発生箇所を精度良く予測することは難しい。そのため、外乱要因処理の要求が発生する可能性のある部分については全てＣＲＣ演算処理を停止するように自己診断プログラムを作成する必要がある。その場合、実際のセット上では、外乱要因処理の要求が発生していない部分についてもＣＲＣ演算処理を停止する可能性が生じる。そして、メインルーチン処理のうち、ＣＲＣ演算処理を不必要に停止した部分については、故障検出を行えなくなってしまう。また、予測が外れてしまった場合には、正しいＣＲＣ演算処理が行えないため、正確な故障検出を行うことができない。
また、予測される外乱要因処理の要求の発生箇所が多い場合には、ＣＲＣ演算処理を停止／再開するためのプログラムが自己診断プログラム全体に占める割合が増えてしまう。そして、自己診断プログラムにおけるコード効率の低下を招来する。
特許文献１では、外乱要因処理の発生に対する対策は記載されておらず、上記問題を解決することはできない。また、特許文献２では、外乱要因処理が発生した場合、期待値とは異なる値がＣＲＣ演算レジスタに格納される。そして、ＣＲＣ演算レジスタに格納された演算結果が期待値と異なる場合に、外乱要因処理の発生によるものか、故障によるものかを判断することは難しい。
【課題を解決するための手段】
【０００６】
本発明の第１の態様にかかるデータ処理装置は、データ処理装置に処理されるデータに対して所定の演算処理を行う演算部と、前記演算部の演算結果の期待値を格納する格納部と、前記演算部の動作を制御する制御部と、を備え、前記データ処理装置は、前記演算結果と前記期待値との比較結果に基づいて、故障を検出し、前記制御部は、前記データ処理装置において外乱要因処理の要求が発生した場合に、前記演算部による演算処理を停止させ、前記外乱要因処理が終了した場合に、前記演算部による演算処理を再開させる。
【０００７】
本発明の第２の態様にかかるデータ処理装置の自己診断方法は、データ処理装置に処理されるデータに対して演算部による所定の演算処理を行い、前記データ処理装置は、前記演算結果と、前記演算結果の期待値との比較結果に基づいて、故障を検出し、制御部により、前記データ処理装置において外乱要因処理の要求が発生した場合に、前記演算部による演算処理を停止させ、前記外乱要因処理が終了した場合に、前記演算部による演算処理を再開させる。
【０００８】
本発明においては、外乱要因処理の要求が発生した場合に、制御部により演算部の演算処理が停止され、外乱要因処理が終了した場合に、前記演算部の演算処理を再開させるので、外乱要因処理要求の発生箇所を予め予測しなくても演算処理を停止することができる。従って、メインルーチン処理のうち演算処理を不必要に停止する部分がなくなるため、故障検出を行えない部分を減らすことができる。より確実に故障検出を行うことができる。
また、外乱要因処理の要求の発生箇所を予測するものではないので、予測が外れて不正確な故障検出を行ってしまうなどのリスクがない。そのため、より正確に故障検出を行うことができる。
また、制御部により演算処理の停止／再開を制御するので、自己診断プログラム内に演算処理を停止／再開するためのプログラムを加える必要がない。従って、自己診断プログラムにおけるコード効率を低下させずに済む。
【発明の効果】
【０００９】
本発明により、より確実に、且つ、より正確に故障検出を行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明を適用可能な実施の形態を説明する。なお、本発明は、以下の実施の形態に限定されるものではない。本実施形態では、本発明にかかるデータ処理装置として、マイクロコンピュータ（マイクロプロセッサ）１００を例示して説明する。
図１に、本発明の実施の形態にかかるマイクロコンピュータ１００の一例を示す。マイクロコンピュータ１００は、図１に示すように、ＣＰＵ１、ＲＯＭ（Read  Only  Memory）２（格納部）、ＲＡＭ（Random  Access  Memory）３、Ｉ／Ｏ（Input／Output）４（入出力部）、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８、データ線９、ＣＲＣ演算回路１０（演算部）、割込み制御回路１１（外乱要因処理制御部）、ＤＭＡ制御回路１２（外乱要因処理制御部）、ＣＲＣ演算動作制御回路１３（制御部）、ＣＲＣ演算制御信号線１４、割込み処理要求信号線１５、割込み処理終了信号線１６、ＤＭＡ転送要求信号線１７、ＤＭＡ転送終了通知信号線１８を有している。
【００１１】
また、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、Ｉ／Ｏ４、ＣＲＣ演算回路１０、割込み制御回路１１、ＤＭＡ制御回路１２、ＣＲＣ演算動作制御回路１３は、それぞれ、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８と接続されている。また、割込み制御回路１１、ＤＭＡ制御回路１２、ＣＲＣ演算動作制御回路１３は、それぞれ、割込み処理要求信号線１５、割込み処理終了信号線１６、ＤＭＡ転送要求信号線１７、ＤＭＡ転送終了通知信号線１８を介してＣＰＵ１と接続されている。
【００１２】
ＣＰＵ１は、ＲＯＭ２に格納された各種プログラムを実行することにより、データバス６から入力されるデータを処理する。
また、ＣＰＵ１は、ＲＯＭ２に格納されている自己診断プログラム２Ｂを実行することにより、ＣＲＣ演算回路１０に、アドレスバス５又はデータバス６のデータをＣＲＣ演算させる。また、ＣＰＵ１は、自己診断プログラム２Ｂを実行することにより、ＣＲＣ演算回路１０の演算結果と、ＲＯＭ２に格納されている期待値２Ａとを比較することにより、ＣＰＵ１の自己診断を行う。
【００１３】
ＲＯＭ２は、ＣＰＵ１がマイクロコンピュータ１００を制御するために必要な各種プログラム、各種データを格納している。具体的には、ＲＯＭ２は、ＣＲＣ演算回路１０の演算結果の期待値２Ａ、自己診断プログラム２Ｂ等を格納している。
より具体的には、期待値２Ａは、ＣＰＵ１が正常である場合に、ＣＲＣ演算回路１０が、アドレスバス５又はデータバス６のデータをＣＲＣ演算して得られる演算結果を圧縮したデータである。
【００１４】
ＲＡＭ３は、ＣＰＵ１によりＲＯＭ２から読み出された各種プログラムが展開される。また、ＲＡＭ３は、ＣＰＵ１による処理結果を一時的に格納する。
【００１５】
Ｉ／Ｏ４は、データ線９を介して、マイクロコンピュータ１００の外部と接続されている。そして、Ｉ／Ｏ４は、マイクロコンピュータ１００と外部との間でデータの入出力を行う。
【００１６】
アドレスバス５は、ＣＰＵ１が処理するデータのアドレス信号を供給する。
データバス６は、ＣＰＵ１がアドレスバス５を介して送信したアドレス信号により特定したデータを供給する。
Ｒ／Ｗ信号バス７は、データバス６上のデータの送信方向を指示する読出し／書込み信号（以下、Ｒ／Ｗ信号と称する。）を供給する。具体的には、Ｒ／Ｗ信号バス７は、データバス６上のデータが、ＣＰＵ１からＲＡＭ３若しくはＩ／Ｏ４へ送信されるのか、又は、ＲＯＭ２、ＲＡＭ３若しくはＩ／Ｏ４からＣＰＵ１へ送信されるのかを指示するＲ／Ｗ信号を供給する。より具体的には、データバス６上のデータがＣＰＵ１からＲＡＭ３若しくはＩ／Ｏ４へ送信される場合、Ｒ／Ｗ信号はロウレベルとなる。また、データバス６上のデータがＲＯＭ２、ＲＡＭ３若しくはＩ／Ｏ４からＣＰＵ１へ送信される場合、Ｒ／Ｗ信号はハイレベルとなる。
タイミング信号バス８は、データバス６を介してデータを読み書きするタイミングを指示するタイミング信号を供給する。
【００１７】
ＣＲＣ演算回路１０は、ＣＰＵ１により処理されるデータに対してＣＲＣ演算処理を行う。具体的には、ＣＲＣ演算回路１０は、図１に示すように、ＣＲＣ演算実行部１０Ａ、レジスタ１０Ｂを有している。
ＣＲＣ演算実行部１０Ａは、タイミング信号線８から供給されるタイミング信号に指示されるタイミングにおいて、アドレスバス５又はデータバス６から供給されるデータを取り込む。そして、ＣＲＣ演算実行部１０Ａは、取り込んだデータに対してＣＲＣ演算処理を行う。また、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理して得られる演算結果をレジスタ１０Ｂに出力する。
また、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算動作制御回路１３からハイレベルのＣＲＣ演算制御信号（後述）が入力された場合に、ＣＲＣ演算処理を開始する。また、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算動作制御回路１３からロウレベルのＣＲＣ演算制御信号が入力された場合に、ＣＲＣ演算処理を停止する。
レジスタ１０Ｂは、ＣＲＣ演算実行部１０Ａから入力された演算結果を格納する。
【００１８】
割込み制御回路１１は、割込み処理（外乱要因処理）の要求の発生を制御する。具体的には、割込み制御回路１１は、割込み処理要求信号線１５を介して、割込み処理要求信号をＣＰＵ１に出力し、割込み処理の要求を発生させる。また、ＣＰＵ１は、割込み処理が終了した場合に、割込み処理終了信号線１６を介して、割込み処理終了信号を割込み制御回路１１に送信する。
【００１９】
ＤＭＡ制御回路１２は、ＤＭＡ転送処理（外乱要因処理）の要求の発生を制御する。具体的には、ＤＭＡ制御回路１２は、ＤＭＡ転送要求信号線１７を介して、ＤＭＡ転送要求信号をＣＰＵ１に出力し、ＤＭＡ転送処理の要求を発生させる。また、ＤＭＡ制御回路１２は、ＤＭＡ転送終了通知信号線１８を介して、ＤＭＡ転送終了通知信号をＣＰＵ１に送信する。
ここで、本実施形態においては、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８を、ＤＭＡ転送処理及びＣＰＵ１におけるメインルーチン処理に兼用する。具体的には、ＣＰＵ１は、ＤＭＡ転送要求信号が入力されると、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８の制御権をＤＭＡ制御回路１２に渡し、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８を解放する。また、ＤＭＡ制御回路１２は、ＤＭＡ転送処理が完了すると、ＤＭＡ転送終了通知信号をＣＰＵ１に入力するとともに、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８の制御権をＣＰＵ１に渡し、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８を解放する。
【００２０】
ＣＲＣ演算動作制御回路１３は、ＣＲＣ演算回路１０における演算動作を制御する。
具体的には、ＣＲＣ演算動作制御回路１３は、外乱要因処理の要求が発生した場合に、ＣＲＣ演算回路１０における演算処理を停止させ、外乱要因処理が終了した場合に、ＣＲＣ演算回路１０による演算処理を再開させる。
より具体的には、ＣＲＣ演算動作制御回路１３は、アドレスバス５、データバス６、Ｒ／Ｗ信号バス７、タイミング信号バス８、割込み処理要求信号線１５、割込み処理終了信号線１６、ＤＭＡ転送要求信号線１７、ＤＭＡ転送終了通知線１８の信号を取り込み、論理演算処理を行って、ＣＲＣ演算制御信号を生成する。そして、ＣＲＣ演算動作制御回路１３は、ＣＲＣ演算制御信号線１４を介して、生成したＣＲＣ演算制御信号をＣＲＣ演算回路１０に入力することにより、ＣＲＣ演算回路１０における演算動作を制御する。本実施形態では、ＣＲＣ演算制御信号がハイレベルであるときＣＲＣ演算処理を許可し、ＣＲＣ演算制御信号がロウレベルであるときＣＲＣ演算処理を禁止する。
【００２１】
ＣＲＣ演算動作制御回路１３の内部構成の一例を図２に示す。ＣＲＣ演算動作制御回路１３は、図２に示すように、フラグ格納部１３１、立上り検出回路１３２、デコーダ１３３（判別部）、第１のＡＮＤゲート１３４、ＮＡＮＤゲート１３５、第１のＯＲゲート１３６、第２のＯＲゲート１３７、ＳＲ型フリップフロップ（以下、ＳＲ−ＦＦと称する。）１３８、第２のＡＮＤゲート１３９を有している。
【００２２】
フラグ格納部１３１は、ＣＲＣ演算処理の許可を指示する許可フラグを格納している。許可フラグは、ＣＰＵ１によりデータバス６を介してフラグ格納部１３１に書き込まれる。そして、値が「１」である許可フラグは、ＣＲＣ演算処理の許可を示す。また、値が「０」である許可フラグは、ＣＲＣ演算処理の禁止を示す。また、フラグ格納部１３１は、許可フラグの値が「１」であるとき、ハイレベルとなる出力信号Ｂ１を、第２のＡＮＤゲート１３９に入力する。出力信号Ｂ１は、ＣＰＵ１によってフラグ格納部１３１の許可フラグの値が書き換えられたときにのみ変化する信号である。
【００２３】
立上り検出回路１３２は、出力信号Ｂ１の立上りを検出した場合に、ワンショットパルスを生成する。また、立上り検出回路１３２は、生成したワンショットパルスを第１のＯＲゲート１３６に入力する。
【００２４】
デコーダ１３３は、アドレスバス５から供給されるアドレス信号がＩ／Ｏ４のアドレスを示すものか否かを判別する。そして、デコーダ１３３は、アドレス信号がＩ／Ｏ４のアドレスを示すものと判別した場合には、ハイレベルの出力信号Ｂ２をＮＡＮＤゲート１３５及び第１のＡＮＤゲート１３４に入力する。また、デコーダ１３３は、アドレス信号がＩ／Ｏ４以外のアドレスを示すものと判別した場合には、ロウレベルの出力信号Ｂ２をＮＡＮＤゲート１３５及び第１のＡＮＤゲート１３４に入力する。
【００２５】
第１のＡＮＤゲート１３４には、デコーダ１３３から出力信号Ｂ２が入力される。また、第１のＡＮＤゲート１３４には、Ｒ／Ｗ信号バス７からＲ／Ｗ信号が入力される。さらに、第１のＡＮＤゲート１３４には、タイミング信号バス８からタイミング信号が入力される。そして、第１のＡＮＤゲート１３４は、出力信号Ｂ２、Ｒ／Ｗ信号、タイミング信号を論理演算して、Ｉ／Ｏリード要求信号Ｂ３を生成し、第２のＯＲゲート１３７に入力する。Ｉ／Ｏリード要求信号Ｂ３は、出力信号Ｂ２、Ｒ／Ｗ信号、タイミング信号の何れもがハイレベルとなった場合にハイレベルとなる。換言すれば、Ｉ／Ｏリード要求信号Ｂ３は、ＣＰＵ１がＩ／Ｏ４からデータを読み出している期間、ハイレベルとなる。
【００２６】
ＮＡＮＤゲート１３５には、デコーダ１３３から出力信号Ｂ２が入力される。また、ＮＡＮＤゲート１３５には、Ｒ／Ｗ信号バス７からＲ／Ｗ信号が入力される。そして、ＮＡＮＤゲート１３５は、Ｒ／Ｗ信号及び出力信号Ｂ２を論理演算して、Ｉ／Ｏリード終了信号Ｂ４を生成し、Ｉ／Ｏリード終了信号Ｂ４を第１のＯＲゲート１３６に入力する。Ｉ／Ｏリード終了信号Ｂ４は、出力信号Ｂ２及びＲ／Ｗ信号の何れかがロウレベルとなった場合に、ハイレベルとなる。換言すれば、Ｉ／Ｏリード終了信号Ｂ４は、ＣＰＵ１がＩ／Ｏ４からデータを読み出している期間以外の期間、ハイレベルとなる。
【００２７】
第１のＯＲゲート１３６には、立上り検出回路１３２からワンショットパルスが入力される。また、第１のＯＲゲート１３６には、割込み処理終了信号線１６から割込み処理終了信号が入力される。また、第１のＯＲゲート１３６には、ＤＭＡ転送終了通知信号線１８からＤＭＡ転送終了通知信号が入力される。さらに、第１のＯＲゲート１３６には、ＮＡＮＤゲート１３５からＩ／Ｏリード終了信号Ｂ４が入力される。そして、第１のＯＲゲート１３６は、ワンショットパルス、割込み処理終了信号、ＤＭＡ転送終了通知信号、Ｉ／Ｏリード終了信号Ｂ４を論理演算して、出力信号Ｂ５を生成し、出力信号Ｂ５をＳＲ−ＦＦ１３８のＳ端子に入力する。出力信号Ｂ５は、ワンショットパルスが発生した場合にハイレベルとなる。また、出力信号Ｂ５は、割込み処理終了信号、ＤＭＡ転送終了通知信号、Ｉ／Ｏリード終了信号Ｂ４の何れかがハイレベルとなった場合に、ハイレベルとなる。換言すれば、ＣＰＵ１によるＣＲＣ演算許可時、割込み処理終了時、ＤＭＡ転送終了時、Ｉ／Ｏ４からの読出し期間以外の期間の何れかの場合において、ハイレベルとなる。
【００２８】
第２のＯＲゲート１３７には、第１のＡＮＤゲート１３４からＩ／Ｏリード要求信号Ｂ３が入力される。また、第２のＯＲゲート１３７には、割込み処理要求信号線１５から割込み処理要求信号が入力される。また、第２のＯＲゲート１３７には、ＤＭＡ転送要求信号線１７からＤＭＡ転送要求信号が入力される。そして、第２のＯＲゲート１３７は、Ｉ／Ｏリード要求信号Ｂ３、割込み処理要求信号、ＤＭＡ転送要求信号を論理演算して、出力信号Ｂ６を生成し、出力信号Ｂ６をＳＲ−ＦＦ１３８のＲ端子に入力する。出力信号Ｂ６は、Ｉ／Ｏリード要求信号Ｂ３、割込み処理要求信号、ＤＭＡ転送要求信号の何れかがハイレベルとなった場合に、ハイレベルとなる。換言すれば、ＣＰＵ１によるＩ／Ｏ４からの読出し期間、割込み処理時、ＤＭＡ転送処理時の何れかの場合において、ハイレベルとなる。
【００２９】
ＳＲ−ＦＦ１３８は、Ｓ端子から「０」が入力され、Ｒ端子から「１」が入力された場合に「０」の出力信号Ｂ７をＱ端子から第２のＡＮＤゲート１３９に入力する。また、ＳＲ−ＦＦ１３８は、Ｓ端子から「１」が入力され、Ｒ端子から「０」が入力された場合に「１」の出力信号Ｂ７をＱ端子から第２のＡＮＤゲート１３９に入力する。従って、出力信号Ｂ５がロウレベルであり、出力信号Ｂ６がハイレベルである場合に、ＳＲ−ＦＦ１３８は、Ｑ端子からロウレベルの出力信号Ｂ７を第２のＡＮＤゲート１３９に入力する。また、出力信号Ｂ５がハイレベルであり、出力信号Ｂ６がロウレベルである場合に、ＳＲ−ＦＦ１３８は、Ｑ端子からハイレベルの出力信号Ｂ７を第２のＡＮＤゲート１３９に入力する。換言すれば、ＣＰＵ１によるＩ／Ｏ４からの読出し期間、割込み処理時、ＤＭＡ転送処理時の何れかの場合において、ＳＲ−ＦＦ１３８は、ロウレベルの出力信号Ｂ７を第２のＡＮＤゲート１３９に入力する。また、ＣＰＵ１によるＣＲＣ演算許可時、割込み処理終了時、ＤＭＡ転送終了時、Ｉ／Ｏ４からの読出し期間以外の期間の何れかの場合において、ＳＲ−ＦＦ１３８は、ハイレベルの出力信号Ｂ７を第２のＡＮＤゲート１３９に入力する。
【００３０】
第２のＡＮＤゲート１３９には、フラグ格納部１３１から出力信号Ｂ１が入力される。また、第２のＡＮＤゲート１３９には、ＳＲ−ＦＦ１３８から出力信号Ｂ７が入力される。そして、第２のＡＮＤゲート１３９は、出力信号Ｂ１と出力信号Ｂ７とを論理演算して、ＣＲＣ演算制御信号を生成する。また、第２のＡＮＤゲート１３９は、ＣＲＣ演算制御信号線１４を介して、ＣＲＣ演算制御信号をＣＲＣ演算実行部１０Ａに入力する。そして、出力信号Ｂ１及び出力信号Ｂ７の何れもがハイレベルの場合に、ＣＲＣ演算制御信号は、ハイレベルとなる。また、出力信号Ｂ１及び出力信号Ｂ７の何れかがロウレベルの場合に、ＣＲＣ演算制御信号は、ロウレベルとなる。換言すれば、ＣＰＵ１によりＣＲＣ演算処理が許可された場合であって、割込み処理終了時、ＤＭＡ転送終了時、Ｉ／Ｏ４からの読出し期間以外の期間の何れかの場合に、ＣＲＣ演算制御信号は、ハイレベルとなる。そして、ＣＲＣ演算実行部１０ＡによるＣＲＣ演算処理が行われる。一方、ＣＰＵ１によりＣＲＣ演算処理が許可されていない場合、又は、Ｉ／Ｏ４からの読出し期間、割込み処理時、ＤＭＡ転送処理時の何れかの場合に、ＣＲＣ演算制御信号は、ロウレベルとなる。そして、ＣＲＣ演算実行部１０ＡによるＣＲＣ演算処理が停止される。
【００３１】
次に、本実施形態にかかるマイクロコンピュータ１００の自己診断動作について図３に示すタイミングチャートを参照しながら説明する。
まず、ＣＰＵ１は、自己診断プログラム２Ｂを実行することにより、レジスタ１０Ｂを初期状態に設定する。具体的には、ＣＰＵ１は、レジスタ１０Ｂに、エラーなしコード（本実施形態では「０」）を設定する。
【００３２】
次に、ＣＰＵ１が自己診断プログラム２Ｂを実行することにより、ＣＲＣ演算処理が許可される。具体的には、ＣＰＵ１は、アドレスバス５からアドレス信号をＣＲＣ演算動作制御回路１３に入力し、当該アドレス信号により指定される許可フラグを「１」にする。そして、タイミングｔ１において、フラグ格納部１３１の出力信号Ｂ１がハイレベルとなる。同時に、タイミング信号バス８からタイミング信号が入力され、ＣＲＣ演算回路１０がデータバス６からデータを取り込む。また、タイミングｔ１において、立上り検出回路１３２からワンショットパルスが出力されるため、第１のＯＲゲート１３６の出力信号Ｂ５はハイレベルである。同時に、割込み処理要求信号、ＤＭＡ転送要求信号、Ｉ／Ｏリード要求信号Ｂ３の何れもロウレベルであるため、第２のＯＲゲート１３７の出力信号Ｂ６はロウレベルである。そのため、タイミングｔ１において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はハイレベルとなり、ＣＲＣ演算制御信号はハイレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を開始する。
【００３３】
次に、タイミングｔ２において、ＣＲＣ演算処理実行中に、割込み処理の要求が発生し、ＣＰＵ１に割込み処理要求信号が入力されると、ＣＰＵ１は、割込み処理を開始する。また、第２のＯＲゲート１３７の出力信号Ｂ６はハイレベルとなる。同時に、割込み処理終了信号、ＤＭＡ転送終了通知信号、Ｉ／Ｏリード終了信号Ｂ４の何れもロウレベルであるため、第１のＯＲゲート１３６の出力信号Ｂ５はロウレベルである。そのため、タイミングｔ２において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はロウレベルとなり、ＣＲＣ演算制御信号はロウレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を停止する。
【００３４】
次に、タイミングｔ３において、ＣＰＵ１における割込み処理が終了し、ＣＰＵ１から割込み制御回路１１に割込み処理終了信号が入力されると、第１のＯＲゲート１３６の出力信号Ｂ５はハイレベルとなる。同時に、割込み処理要求信号、ＤＭＡ転送要求信号、Ｉ／Ｏリード要求信号Ｂ３の何れもロウレベルであるため、第２のＯＲゲート１３７の出力信号Ｂ６はロウレベルである。そのため、タイミングｔ３において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はハイレベルとなり、ＣＲＣ演算制御信号はハイレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を再開する。なお、レジスタ１０Ｂは、タイミングｔ２以前の演算結果を保持している。
【００３５】
また、タイミングｔ４において、ＤＭＡ転送処理の要求が発生し、ＣＰＵ１にＤＭＡ転送要求信号が入力されると、第２のＯＲゲート１３７の出力信号Ｂ６はハイレベルとなる。同時に、割込み処理終了信号、ＤＭＡ転送終了通知信号、Ｉ／Ｏリード終了信号Ｂ４の何れもロウレベルであるため、第１のＯＲゲート１３６の出力信号Ｂ５はロウレベルである。そのため、タイミングｔ４において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はロウレベルとなり、ＣＲＣ演算制御信号はロウレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を停止する。
【００３６】
次に、タイミングｔ５において、ＤＭＡ転送処理が終了し、ＣＰＵ１にＤＭＡ転送終了通知信号が入力されると、第１のＯＲゲート１３６の出力信号Ｂ５はハイレベルとなる。同時に、割込み処理要求信号、ＤＭＡ転送要求信号、Ｉ／Ｏリード要求信号Ｂ３の何れもロウレベルであるため、第２のＯＲゲート１３７の出力信号Ｂ６はロウレベルである。そのため、タイミングｔ５において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はハイレベルとなり、ＣＲＣ演算制御信号はハイレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を再開する。なお、レジスタ１０Ｂは、タイミングｔ４以前の演算結果を保持している。
【００３７】
また、タイミングｔ６において、Ｉ／Ｏ４からＣＰＵ１へデータが送られる場合、Ｉ／Ｏ４のデータの読出し処理の要求が発生し、デコーダ１３３の出力信号Ｂ２がハイレベルとなる。同時に、Ｒ／Ｗ信号がハイレベルとなる。
【００３８】
次に、タイミングｔ７において、タイミング信号バス８からタイミング信号が入力されると、第１のＡＮＤゲート１３４に出力信号Ｂ２、Ｒ／Ｗ信号、タイミング信号が入力されるので、Ｉ／Ｏリード要求信号Ｂ３がハイレベルとなる。これにより、第２のＯＲゲート１３７の出力信号Ｂ６はハイレベルとなる。同時に、ＮＡＮＤゲート１３５に出力信号Ｂ２とＲ／Ｗ信号とが入力されるため、Ｉ／Ｏリード終了信号Ｂ４はロウレベルのままである。そして、割込み処理終了信号、ＤＭＡ転送終了通知信号もロウレベルであるため、第１のＯＲゲート１３６の出力信号Ｂ５はロウレベルとなる。そのため、タイミングｔ７において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はロウレベルとなり、ＣＲＣ演算制御信号はロウレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を停止する。
【００３９】
次に、タイミングｔ８において、ＣＰＵ１によるＩ／Ｏ４のデータの読出し処理が終了すると、デコーダ１３３の出力信号Ｂ２がロウレベルとなる。同時に、Ｒ／Ｗ信号がロウレベルとなる。そして、ＮＡＮＤゲート１３５に出力信号Ｂ２とＲ／Ｗ信号が入力されるため、Ｉ／Ｏリード終了信号Ｂ４はハイレベルとなる。これにより、第１のＯＲゲート１３６の出力信号Ｂ５がハイレベルとなる。同時に、第１のＡＮＤゲート１３４に出力信号Ｂ２、Ｒ／Ｗ信号、タイミング信号が入力されるので、Ｉ／Ｏリード要求信号Ｂ３がロウレベルとなる。そして、割込み処理要求信号、ＤＭＡ転送要求信号もロウレベルであるため、第２のＯＲゲート１３７の出力信号Ｂ６はロウレベルとなる。そのため、タイミングｔ８において、ＳＲ−ＦＦ１３８の出力信号Ｂ７はハイレベルとなり、ＣＲＣ演算制御信号はハイレベルとなる。これにより、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を再開する。なお、レジスタ１０Ｂは、タイミングｔ７以前の演算結果を保持している。
【００４０】
次に、本発明にかかるマイクロコンピュータ１００における自己診断方法について図４に示すフローチャートを参照しながら説明する。なお、図４において、太枠で示したステップは、ＣＰＵ１が自己診断プログラム２Ｂを実行することによって行われる処理を示す。
まず、ＣＰＵ１により、レジスタ１０Ｂが初期化されるとともに、ＣＲＣ演算処理が許可され（ステップＳ１）、ＣＲＣ演算実行部１０ＡがＣＲＣ演算処理を開始するとともに、レジスタ１０Ｂが演算結果を格納する。
【００４１】
次に、ＣＲＣ演算処理が終了していない場合（ステップＳ２；Ｎｏ）であって、割込み処理要求又はＤＭＡ転送要求又はＩ／Ｏ４のデータ読出し処理の要求（以下、外乱要因と称する。）が発生した場合（ステップＳ３；Ｙｅｓ）、ＣＲＣ演算制御信号がロウレベルとなり、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を停止する（ステップＳ４）。
次に、外乱要因の処理が終了していない場合は（ステップＳ５；Ｎｏ）、ステップＳ５に戻る。
また、外乱要因の処理が終了した場合は（ステップＳ５；Ｙｅｓ）、ＣＲＣ演算制御信号がハイレベルとなり、ＣＲＣ演算実行部１０Ａは、ＣＲＣ演算処理を再開する（ステップＳ６）。
【００４２】
また、ステップＳ３において、外乱要因が発生していない場合は（ステップＳ３；Ｎｏ）、データ取り込タイミングとなった場合には（ステップＳ７；Ｙｅｓ）、ＣＲＣ演算実行部１０Ａは、アドレスバス５又はデータバス６のデータを取り込み、ＣＲＣ演算処理を行う（ステップＳ８）。
一方、ステップＳ７において、データ取り込タイミングとなっていない場合は（ステップＳ７；Ｎｏ）、ステップＳ７に戻る。
【００４３】
次に、ＣＲＣ演算実行部１０Ａは、演算結果をレジスタ１０Ｂに出力し、レジスタ１０Ｂは、演算結果を格納し（ステップＳ９）、ステップＳ２に戻る。
【００４４】
一方、ステップＳ２において、ＣＲＣ演算処理が終了している場合（ステップＳ２；Ｙｅｓ）、ＣＰＵ１は、ＣＲＣ演算実行部１０ＡによるＣＲＣ演算処理を停止させる（ステップＳ１０）。
【００４５】
次に、ＣＰＵ１は、レジスタ１０Ｂに格納されている演算結果を読み出す（ステップＳ１１）。
次に、ＣＰＵ１は、ＲＯＭ２に格納されている期待値２Ａを読み出す（ステップＳ１２）。
次に、ＣＰＵ１は、演算結果と期待値２Ａとを比較し、演算結果が期待値２Ａと等しいか否かを判断する（ステップＳ１３）。
【００４６】
ステップＳ１３において、演算結果が期待値２Ａと異なる場合には（ステップＳ１３；Ｎｏ）、ＣＰＵ１は、故障している旨を表示部（図示省略）に出力するなどの通知を行い、本処理を終了する。
ステップＳ１３において、演算結果が期待値２Ａと等しい場合には（ステップＳ１３；Ｙｅｓ）、ＣＰＵ１は、正常動作している旨を表示部に出力するなどの通知を行い、本処理を終了する。
【００４７】
以上に説明した本発明の実施の形態にかかるマイクロコンピュータ１００及び自己診断方法では、マイクロコンピュータ１００のＣＰＵ１に処理されるデータに対してＣＲＣ演算処理を行うＣＲＣ演算回路１０と、ＣＲＣ演算回路１０の演算結果の期待値２Ａを格納するＲＯＭ２と、ＣＲＣ演算回路１０の動作を制御するＣＲＣ演算動作制御回路１３と、を備え、マイクロコンピュータ１００のＣＰＵ１は、演算結果と期待値２Ａとの比較結果に基づいて、故障を検出し、ＣＲＣ演算動作制御回路１３は、マイクロコンピュータ１００において、割込み処理やＤＭＡ転送処理の要求が発生した場合に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を停止させ、割込み処理やＤＭＡ転送処理が終了した場合に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を再開させる。
【００４８】
これにより、割込み処理やＤＭＡ転送処理の要求が発生した場合に、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算回路１０のＣＲＣ演算処理が停止され、割込み処理やＤＭＡ転送処理が終了した場合に、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算回路１０のＣＲＣ演算処理を再開させるので、割込み処理やＤＭＡ転送処理の要求の発生箇所を予め予測しなくてもＣＲＣ演算処理を停止することができる。従って、メインルーチン処理のうちＣＲＣ演算処理を不必要に停止する部分がなくなるため、故障検出を行えない部分を減らすことができる。より確実に故障検出を行うことができる。
また、割込み処理やＤＭＡ転送処理の要求の発生箇所を予測するものではないので、予測が外れて不正確な故障検出を行ってしまうなどのリスクがない。そのため、より正確に故障検出を行うことができる。
また、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算処理の停止／再開を制御するので、自己診断プログラム２Ｂ内に演算処理を停止／再開するためのプログラムを加える必要がない。従って、自己診断プログラム２Ｂにおけるコード効率を低下させずに済む。
【００４９】
また、ＣＲＣ演算動作制御回路１３は、割込み制御回路１１とＣＰＵ１とを接続する割込み処理要求信号線１５、割込み処理終了信号線１６と接続されるとともに、ＤＭＡ制御回路１２とＣＰＵ１とを接続するＤＭＡ転送要求信号線１７、ＤＭＡ転送終了通知信号線１８と接続され、割込み処理要求信号線１５から割込み処理要求信号が入力された場合、及び、ＤＭＡ転送要求信号線１７からＤＭＡ転送要求信号が入力された場合に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を停止させ、割込み処理終了信号線１６から割込み処理終了信号が入力された場合、及び、ＤＭＡ転送終了通知信号線１８からＤＭＡ転送終了通知信号が入力された場合に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を再開させる。
【００５０】
これにより、割込み処理及びＤＭＡ転送処理の要求の発生に遅延することなく、ＣＲＣ演算回路１０のＣＲＣ演算処理を停止させることができる。従って、割込み処理及びＤＭＡ転送処理におけるデータを誤ってＣＲＣ演算してしまうことがない。よって、より正確に故障検出することができる。また、割込み処理及びＤＭＡ転送処理の終了に遅延することなく、ＣＲＣ演算回路１０のＣＲＣ演算処理を再開することができる。従って、メインルーチン処理のうちＣＲＣ演算処理を不必要に停止する部分がなくなる。よって、より確実に故障検出を行うことができる。
【００５１】
また、外部との間でデータの入出力を行うＩ／Ｏ４を備え、ＣＲＣ演算動作制御回路１３は、アドレスバス５を介してＣＰＵ１と接続され、アドレスバス５から入力されるアドレス信号がＩ／Ｏ４のアドレスか否かを判別するデコーダ１３３を備え、デコーダ１３３により、アドレス信号がＩ／Ｏ４のアドレスであると判別された場合に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を停止させる。
【００５２】
これにより、アドレスバス５から入力されるアドレス信号がＩ／Ｏ４のアドレスである場合、即ち、Ｉ／Ｏ４のデータ読出し処理の要求が発生している場合に、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算回路１０のＣＲＣ演算処理が停止される。また、Ｉ／Ｏ４のデータ読出し処理が終了した場合に、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算回路１０のＣＲＣ演算処理を再開させるので、Ｉ／Ｏ４のデータ読出し処理の要求の発生箇所を予め予測しなくてもＣＲＣ演算処理を停止することができる。従って、メインルーチン処理のうちＣＲＣ演算処理を不必要に停止する部分がなくなるため、故障検出を行えない部分を減らすことができる。より確実に故障検出を行うことができる。
また、Ｉ／Ｏ４のデータ読出し処理の要求の発生箇所を予測するものではないので、予測が外れて不正確な故障検出を行ってしまうなどのリスクがない。そのため、より正確に故障検出を行うことができる。
また、ＣＲＣ演算動作制御回路１３によりＣＲＣ演算処理の停止／再開を制御するので、自己診断プログラム２Ｂ内に演算処理を停止／再開するためのプログラムを加える必要がない。従って、自己診断プログラム２Ｂにおけるコード効率を低下させずに済む。
【００５３】
なお、本実施形態では、演算処理としてＣＲＣ演算処理を例示して説明したが、これに限られるものではなく、ＣＰＵ１の故障検出を行える演算処理であればなんであってもよい。また、外乱要因処理は、割込み処理、ＤＭＡ転送処理、Ｉ／Ｏ４のデータ読出し処理に限られるものではない。
また、ＣＲＣ演算動作制御回路１３の構成は、図２に限られるものではなく、外乱要因処理の要求が発生した際に、ＣＲＣ演算回路１０によるＣＲＣ演算処理を停止させるＣＲＣ演算制御信号を出力できるものであれば、どのような構成であってもよい。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態にかかるマイクロコンピュータの構成の一例を示すブロック図である。
【図２】本発明の実施の形態にかかるＣＲＣ演算動作制御回路の一例を示す回路図である。
【図３】本発明の実施の形態にかかるマイクロコンピュータにおける自己診断動作の一例を説明するタイミングチャートである。
【図４】本発明の実施の形態にかかるマイクロコンピュータにおける自己診断方法を説明するフローチャートである。
【符号の説明】
【００５５】
１  ＣＰＵ
２  ＲＯＭ（格納部）
２Ａ  期待値
４  Ｉ／Ｏ（入出力部）
５  アドレスバス
６  データバス
１０  ＣＲＣ演算回路（演算部）
１１  割込み制御回路（外乱要因処理制御部）
１２  ＤＭＡ制御回路（外乱要因処理制御部）
１３  ＣＲＣ演算動作制御回路（制御部）
１３３  デコーダ（判別部）
１５  割込み処理要求信号線（信号線）
１６  割込み処理終了信号線（信号線）
１７  ＤＭＡ転送要求信号線（信号線）
１８  ＤＭＡ転送終了通知信号線（信号線）
１００  マイクロコンピュータ（データ処理装置）
【図１】
2009093393.tif 000003
【図２】
2009093393.tif 000004
【図３】
2009093393.tif 000005
【図４】
2009093393.tif 000006