(57)【要約】【課題】周辺回路が有する演算機能の診断を、回路規模の増大を極力抑制して実行できるマイクロコンピュータを提供する。【解決手段】ハードウェアロジックで構成される演算器３は、ＣＰＵ２により実行される演算のうち加算が実行可能であり、ＣＰＵ側データレジスタ５は、ＣＰＵ２が、診断用に演算した演算結果データの上位８ビットを格納する。比較器６には、ＣＰＵ側データレジスタ５に格納されたデータが入力されると共に、演算器３の演算結果データが、演算器側データレジスタ４を介して上位８ビットだけ入力される。ＣＰＵ２は、診断用の演算対象データ（Ａ，Ｂ）について演算した演算結果データ（Ａ＋Ｂ）をＣＰＵ側データレジスタ５に書き込むと共に、演算器３にも自身が実行するものと同一の演算（Ａ＋Ｂ）を実行させて比較器６の比較結果を参照する診断処理を行い、その比較結果が不一致であれば異常検出処理を行う。【選択図】図１
2016081334.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（２）と、
ハードウェアロジックにより構成され、前記ＣＰＵにより実行される演算のうち、少なくとも１つの演算が実行可能である周辺回路（３）と、
データバス幅を２ｎ（ｎは自然数）ビットすると、前記ＣＰＵが、診断用に演算した演算結果データを、ＭＳＢ（Most Significant Bit）側からｎビット以下の範囲で格納する診断用データレジスタ（５）と、
この診断用データレジスタに格納されたデータが入力されると共に、前記周辺回路の演算結果データが、ＭＳＢ側から前記診断用データレジスタと同じビット数だけ入力される比較器（６，１２）とを備え、
前記ＣＰＵは、前記診断用の演算対象データについて演算した演算結果データを前記診断用データレジスタに書き込むと共に、前記周辺回路に前記診断用の演算対象データについて自身が実行するものと同一の演算を実行させて、前記比較器の比較結果を参照する診断処理を行い、
前記比較結果が不一致であれば、異常検出処理を行うことを特徴とするマイクロコンピュータ。
【請求項２】
前記周辺回路を複数（３Ａ，３Ｂ）備え、
前記比較器（１２）には、前記複数の演算結果データがそれぞれ、前記診断用データレジスタと同じビット数だけ入力され、
前記ＣＰＵは、前記複数の周辺回路のそれぞれに同じ演算対象データを入力して、それぞれに同じ演算を実行させ、前記演算対象データと同一のデータについて同一の演算を実行して前記診断処理を行うことを特徴とする請求項１記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵと、そのＣＰＵにより実行される演算のうち、少なくとも１つの演算が実行可能である周辺回路とを備えてなるマイクロコンピュータに関する。
【背景技術】
【０００２】
一般にマイクロコンピュータは、ＣＰＵと１つ以上の周辺回路とで構成される。周辺回路の１つが、ハードウェアロジックで演算を実行可能に構成されている場合に、その演算機能が正常であるか否かを確認したいというユーザによる要請がある。例えば、特許文献１には、自己診断機能を備えたプロセッサとして、診断対象となる加減算器１２を備えた演算回路１０−１と、自己診断用データを格納するデータ格納部１４と、自己診断用データを入力して演算回路による演算結果の全ビットがオール０又は１となるように診断処理を実行させる自己診断処理部１０−２とを備えたものが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２８６０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の構成では、自己診断機能を実現するため、データ格納部１４や自己診断処理部１０−２等を別途実装する必要があり、回路規模が増大するという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、周辺回路が有する演算機能の診断を、回路規模の増大を極力抑制して実行できるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００５】
請求項１記載のマイクロコンピュータによれば、周辺回路は、ハードウェアロジックにより構成され、ＣＰＵにより実行される演算のうち、少なくとも１つの演算が実行可能である。診断用データレジスタは、データバス幅を２ｎビットすると、ＣＰＵが、診断用に演算した演算結果データを、ＭＳＢ側からｎビット以下の範囲で格納する。比較器には、診断用データレジスタに格納されたデータが入力されると共に、周辺回路の演算結果データが、ＭＳＢ側から診断用データレジスタと同じビット数だけ入力される。
【０００６】
そして、ＣＰＵは、診断用の演算対象データについて演算した演算結果データを診断用データレジスタに書き込むと共に、周辺回路に診断用の演算対象データについて自身が実行するものと同一の演算を実行させて、比較器の比較結果を参照する診断処理を行い、その比較結果が不一致であれば、異常検出処理を行う。
【０００７】
このように構成すれば、周辺回路の演算機能が正常か否かを監視するために必要とする構成が、診断用データレジスタ及び比較器のみになる。そして、診断用データレジスタ及び比較器は、データとしての重要性がより高いＭＳＢ側からｎビット以下の範囲でデータを格納・比較する（すなわち、演算結果の上位ビットに誤りが発生すると、マイクロコンピュータを含むシステムに与える影響が大きくなるからである）。したがって、追加する構成のサイズも必要最小限にできる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態であり、マイクロコンピュータの構成を要部について示す機能ブロック図
【図２】第２実施形態であり、マイクロコンピュータの構成を要部について示す機能ブロック図
【発明を実施するための形態】
【０００９】
（第１実施形態）
図１に示すように、マイクロコンピュータ（マイコン）１は、ＣＰＵ２、演算器３（周辺回路）、演算器側データレジスタ４、ＣＰＵ側データレジスタ５（診断用データレジスタ）及び比較器６を備えている。尚、マイコン１のデータバス幅は、例えば１６ビット（ｎ＝２）である。ＣＰＵ２は、論理演算や加減算を行うＡＬＵ（Arithmetic Logical Unit）７及びメモリアクセスやＡＬＵ７による演算の実行等を制御する制御部８を内蔵している。
【００１０】
演算器３は、ハードウェアロジックで構成されており、ＡＬＵ８が実行する演算のうち、少なくとも１つの演算（例えば、加算）を実行可能に構成されている。演算器３は、加算器でも良いし、ゲートアレイやＰＬＤ（Programmable Logic Device）、ＦＰＧＡ（Field Programmable Gate Array）等で構成されていても良い。演算器３に２つの演算対象データを入力するため、２つの入力用データレジスタが用意されている。これらの入力用データレジスタは、演算器３の内部又は外部の何れに設けられていても良い。演算器３が演算したデータは、演算器側データレジスタ４に書き込まれるが、この演算器側データレジスタ４は、演算器３が通常の演算処理結果を書き込む１６ビットレジスタである。そして、演算器側データレジスタ４に格納されたデータのうち、ＭＳＢ側から例えば上位８ビットのデータのみが比較器６に入力される。
【００１１】
一方、ＣＰＵ２のＡＬＵ８が演算したデータは、ＣＰＵ側データレジスタ５に書き込まれて、上述と同様にＭＳＢ側から上位８ビットのデータのみが比較器６に入力される。ＣＰＵ側データレジスタ５は、汎用の１６ビットレジスタを用いても良いが、診断専用の８ビットレジスタでも良い。
【００１２】
比較器６は、演算器側データレジスタ４、ＣＰＵ側データレジスタ５を介してそれぞれ入力される上位８ビットのデータを比較し、比較結果（一致又は不一致）をＣＰＵ２に出力する。ＣＰＵ２は、比較器６の比較結果を例えばポーリング等により確認するが、前記比較結果（不一致）の出力でＣＰＵ２に割り込みを発生させても良い。
【００１３】
次に、本実施形態の作用について説明する。先ず、ＣＰＵ２は、演算対象データである２つのデータＡ，Ｂを演算器３に入力して演算（Ａ＋Ｂ）を実行させ、演算結果データを演算器側データレジスタ４に格納させる。次に、ＣＰＵ２は、ＡＬＵ７により同じ演算（Ａ＋Ｂ）を実行し、演算結果データをＣＰＵ側データレジスタ５に格納する。それから、比較器６（又は比較結果が格納されるレジスタ）にアクセスして、上位８ビットデータの比較結果を参照する。
【００１４】
比較結果が「一致」であれば、演算器３の機能は正常であるから、特段の処理は実行しない。一方、比較結果が「不一致」であれば、演算器３の機能に異常がある可能性が高いので、例えばマイコン１をリセットしたり、上位の制御装置に異常発生を報知する等の異常検出処理を行う。尚、ＣＰＵ２と演算器３との演算の実行順は逆であっても良い。
【００１５】
以上のように本実施形態によれば、ハードウェアロジックにより構成される演算器３は、ＣＰＵ２により実行される演算のうち加算が実行可能であり、ＣＰＵ側データレジスタ５は、ＣＰＵ２が、診断用に演算した演算結果データの上位８ビットを格納する。比較器６には、ＣＰＵ側データレジスタ５に格納されたデータが入力されると共に、演算器３の演算結果データが、演算器側データレジスタ４を介して上位８ビットだけ入力される。
【００１６】
そして、ＣＰＵ２は、診断用の演算対象データ（Ａ，Ｂ）について演算した演算結果データ（Ａ＋Ｂ）をＣＰＵ側データレジスタ５に書き込むと共に、演算器３にも自身が実行するものと同一の演算（Ａ＋Ｂ）を実行させて、比較器６の比較結果を参照する診断処理を行い、その比較結果が不一致であれば異常検出処理を行う。
【００１７】
このように構成すれば、演算器３の演算機能が正常か否かを監視するために必要とする構成が、少なくともＣＰＵ側データレジスタ５及び比較器６のみになる。そして、ＣＰＵ側データレジスタ５及び比較器６は、１６ビットデータについて、演算結果に誤りが発生するとマイコン１を含むシステムに与える影響がより高い、つまりデータとしての重要性がより高いＭＳＢ側から８ビットのデータを格納・比較する。したがって、追加する構成のサイズも必要最小限にできる。
【００１８】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図２に示すように、第２実施形態のマイコン１１は、２つの演算器３Ａ及び３Ｂと、夫々に対応する演算器側データレジスタ４Ａ及び４Ｂを備えている。ＣＰＵ２は、これらの演算器３Ａ及び３Ｂに同じ演算、例えば第１実施形態と同様に加算（Ａ＋Ｂ））を実行させる。また、比較器６に替わる比較器１２は、演算器側データレジスタ４Ａ及び４Ｂ、ＣＰＵ側データレジスタ５が夫々出力する上位８ビットのデータを比較して、比較結果を出力する。
【００１９】
この場合、比較器１２が出力する比較結果は、３つの演算結果データが全て一致するか、全てが一致しないか（不一致）を２値データで示しても良いが、２ビット又は３ビットのデータにより、３つの演算結果データのうち不一致となった１つを特定する情報を出力しても良い。例えば、２ビットデータであれば、
データ値          ００          ０１        １０        １１
不一致            無し          ３Ａ        ３Ｂ        ＣＰＵ２
というように、不一致となったものを指定する。
また、３ビットデータの場合は上記に加えて「全て不一致」を示したり、何れの１ビットを立てるかによって、演算器３Ａ，３Ｂ，ＣＰＵ２の不一致を個別に示したり、それらの組み合わせを２ビットで示しても良い。
【００２０】
以上のように第２実施形態によれば、２つの演算器３Ａ，３Ｂを備え、比較器１２には、各演算結果データをそれぞれ、上位８ビットだけ入力する。そして、ＣＰＵ２は、演算器３Ａ，３Ｂのそれぞれに同じ演算（Ａ＋Ｂ）を実行させ、自身も同じ演算（Ａ＋Ｂ）を実行して診断処理を行うようにした。したがって、３者のうち演算結果が不一致となった１つを特定することが可能になる。
【００２１】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
演算器が実行する演算は、加算に限らず、減算や乗算、乗算又は論理演算で合っても良い。或いは、デジタルフィルタ演算等のより複雑な演算でも良い。
また、常時演算を実行するような演算器に限ることなく、少なくともＣＰＵが診断を実行する際に、ＣＰＵと同じ演算が実行可能に構成されている周辺回路であれば良い。
比較器の比較対象は、上位８ビットに限らず、７ビット以下のより少ないビット数でも良い。
データバス幅は１６ビットに限らず、８ビットや３２ビット、６４ビット以上でも良い。
第２実施形態において、演算器は３つ以上あっても良い。
【符号の説明】
【００２２】
図面中、１はマイクロコンピュータ、２はＣＰＵ、３は演算器、５はＣＰＵ側データレジスタ（診断用データレジスタ）、６は比較器を示す。
【図１】
2016081334.tif 000003
【図２】
2016081334.tif 000004