(57)【要約】【課題】クロック生成を半導体装置毎に行うシステムにおいて、カウンタのカウント値が不連続に変化することなく半導体装置間の同期をとる。【解決手段】半導体装置１は、クロック発振器２と、クロックを数えるカウンタ３と、同期を取る周期に相当する値が設定される周期レジスタ４と、カウンタ３のカウント値と周期レジスタ４の設定値とを比較する比較回路５と、カウント値が設定値と一致すると所定値が設定されるマッチフラグレジスタ６と、マッチフラグレジスタ６の値を自装置から出力するマッチ出力端子７と、同期対象の他の半導体装置から出力される値が入力されるマッチ入力端子８と、自装置のマッチフラグレジスタ６の値とマッチ入力端子８に入力された値が共に所定値になると、カウンタ３とマッチフラグレジスタ６をリセットするリセット回路とを有する。【選択図】図１
2018092423.tif 000002
【特許請求の範囲】
【請求項１】
クロック発振器と、
前記クロック発振器により生成されたクロックを数える第１のカウンタと、
同期を取る周期に相当する値が設定される周期レジスタと、
前記第１のカウンタのカウント値と前記周期レジスタの設定値とを比較する第１の比較回路と、
前記第１のカウンタのカウント値が前記周期レジスタの前記設定値と一致すると第１の所定値が設定されるマッチフラグレジスタと、
前記マッチフラグレジスタの値を自装置から出力するマッチ出力端子と、
同期対象の他の半導体装置から出力される値が入力されるマッチ入力端子と、
自装置の前記マッチフラグレジスタの値と前記マッチ入力端子に入力された値が共に前記第１の所定値になると、前記第１のカウンタと前記マッチフラグレジスタをリセットするリセット回路と
を有し、
前記マッチ入力端子は、前記クロック発振器と、前記第１のカウンタと、前記周期レジスタと、前記第１の比較回路と、前記マッチフラグレジスタと、前記マッチ出力端子と、前記マッチ入力端子と、前記リセット回路とを有する前記他の半導体装置の前記マッチ出力端子から出力される前記他の半導体装置の前記マッチフラグレジスタの値が入力される
半導体装置。
【請求項２】
前記第１のカウンタが数えるクロックの制限値が設定される制限値レジスタと、
前記第１のカウンタのカウント値と前記制限値レジスタの前記制限値とを比較する第２の比較回路と、
前記第１のカウンタのカウント値が前記制限値レジスタの前記制限値と一致すると第２の所定値が設定されるオーバフローフラグレジスタと
をさらに有し、
前記リセット回路は、前記オーバフローフラグレジスタの値が前記第２の所定値以外の値である状態で、自装置の前記マッチフラグレジスタの値と前記マッチ入力端子から入力された値が共に前記第１の所定値になったタイミング、前記オーバフローフラグレジスタの値が前記第２の所定値になったタイミング、及び、前記オーバフローフラグレジスタの値が前記第２の所定値である状態で自装置の前記マッチフラグレジスタの値が前記第１の所定値になったタイミングで、前記第１のカウンタと前記マッチフラグレジスタをリセットする
請求項１に記載の半導体装置。
【請求項３】
前記オーバフローフラグレジスタは、前記マッチ入力端子から入力される値が前記第１の所定値となると、リセットされる
請求項２に記載の半導体装置。
【請求項４】
第２のカウンタを備え、前記第２のカウンタのカウント値が予め定められた値と一致すると割り込み要求を出力するコンペアマッチタイマ
をさらに有し、
前記リセット回路は、自装置の前記マッチフラグレジスタの値と前記マッチ入力端子に入力された値が共に前記第１の所定値になると、前記第１のカウンタと前記マッチフラグレジスタと前記第２のカウンタをリセットする
請求項１に記載の半導体装置。
【請求項５】
前記第１のカウンタのカウント値が予め定められた値と一致すると割り込み要求を出力するコンペアマッチタイマ
をさらに有する請求項１に記載の半導体装置。
【請求項６】
第３のカウンタを備え、前記第３のカウンタのカウント値を用いて制御信号を生成する制御信号生成回路
をさらに有し、
前記リセット回路は、自装置の前記マッチフラグレジスタの値と前記マッチ入力端子に入力された値が共に前記第１の所定値になると、前記第１のカウンタと前記マッチフラグレジスタと前記第３のカウンタをリセットする
請求項１に記載の半導体装置。
【請求項７】
前記第１のカウンタのカウント値を用いて制御信号を生成する制御信号生成回路
をさらに有する請求項１に記載の半導体装置。
【請求項８】
前記第１のカウンタのカウント値が前記制限値レジスタの前記制限値と一致すると、割り込み要求を出力する
請求項２に記載の半導体装置。
【請求項９】
第１の半導体装置と、
第２の半導体装置と、
アクチュエータを駆動する第１の駆動回路と、
前記アクチュエータを駆動する第２の駆動回路と、
を備え、
前記第１の半導体装置及び前記第２の半導体装置は、それぞれ、
クロック発振器と、
前記クロック発振器により生成されたクロックを数えるカウンタと、
相手の半導体装置と同期を取る周期に相当する値が設定される周期レジスタと、
前記カウンタのカウント値と前記周期レジスタの設定値とを比較する第１の比較回路と、
前記カウンタのカウント値が前記周期レジスタの前記設定値と一致すると第１の所定値が設定されるマッチフラグレジスタと、
前記マッチフラグレジスタの値を自装置から出力するマッチ出力端子と、
前記相手の半導体装置の前記マッチ出力端子から出力される前記相手の半導体装置の前記マッチフラグレジスタの値が入力されるマッチ入力端子と、
自装置の前記マッチフラグレジスタの値と前記マッチ入力端子から入力された値が共に前記第１の所定値になると、前記カウンタと前記マッチフラグレジスタをリセットするリセット回路と、
前記カウンタのカウント値又は前記カウンタと同じタイミングでリセットされる他のカウンタのカウント値に基づいて、制御信号を生成する制御信号生成回路と
を有し、
前記第１の半導体装置の前記制御信号生成回路は、前記第１の駆動回路に対する制御信号を生成し、
前記第２の半導体装置の前記制御信号生成回路は、前記第２の駆動回路に対する制御信号を生成する
制御システム。
【請求項１０】
前記第１の半導体装置及び前記第２の半導体装置は、それぞれ、
前記カウンタが数えるクロックの制限値が設定される制限値レジスタと、
前記カウンタのカウント値と前記制限値レジスタの前記制限値とを比較する第２の比較回路と、
前記カウンタのカウント値が前記制限値レジスタの前記制限値と一致すると第２の所定値が設定されるオーバフローフラグレジスタと
をさらに有し、
前記リセット回路は、前記オーバフローフラグレジスタの値が前記第２の所定値以外の値である状態で、自装置の前記マッチフラグレジスタの値と前記マッチ入力端子から入力された値が共に前記第１の所定値になったタイミング、前記オーバフローフラグレジスタの値が前記第２の所定値になったタイミング、又は、前記オーバフローフラグレジスタの値が前記第２の所定値である状態で自装置の前記マッチフラグレジスタの値が前記第１の所定値になったタイミングで、前記カウンタと前記マッチフラグレジスタをリセットする
請求項９に記載の制御システム。
【請求項１１】
第１の半導体装置が、前記第１の半導体装置のクロック発振器により生成されたクロックを第１のカウンタにより数え、
前記第１の半導体装置が、同期を取る周期に相当する設定値と、前記第１のカウンタのカウント値とを比較し、
前記第１の半導体装置が、前記第１のカウンタのカウント値が前記設定値に達したか否かを第２の半導体装置に出力し、
前記第２の半導体装置が、前記第２の半導体装置のクロック発振器により生成されたクロックを第２のカウンタにより数え、
前記第２の半導体装置が、前記設定値と、前記第２のカウンタのカウント値とを比較し、
前記第２の半導体装置が、前記第２のカウンタのカウント値が前記設定値に達したか否かを前記第１の半導体装置に出力し、
前記第１の半導体装置は、前記第１のカウンタのカウント値と前記第２のカウンタのカウント値の両方が、前記設定値に達すると、前記第１のカウンタをリセットし、
前記第２の半導体装置は、前記第１のカウンタのカウント値と前記第２のカウンタのカウント値の両方が、前記設定値に達すると、前記第２のカウンタをリセットする
同期方法。
【請求項１２】
前記第１の半導体装置は、前記第１のカウンタが数えるクロックの制限値と、前記第１のカウンタのカウント値とを比較し、
前記第１のカウンタのカウント値が前記制限値に達していない状態で、前記第１のカウンタのカウント値と前記第２のカウンタのカウント値の両方が前記設定値に達したタイミング、前記第１のカウンタのカウント値が前記制限値に達したタイミング、又は、前記第１のカウンタのカウント値が前記制限値に達している状態で前記第１のカウンタのカウント値が前記設定値に達したタイミングで、前記第１のカウンタをリセットする
請求項１１に記載の同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置、制御システム、及び同期方法に関し、例えばカウンタを有する半導体装置に好適に利用できるものである。
【背景技術】
【０００２】
２つの半導体装置間で同期を取る方法が知られている。
特許文献１は、メインとサブの２つの半導体装置間で同期をとる電子制御装置について開示している。この電子制御装置において、メインとサブの２つの半導体装置は、それぞれタイマを持っている。特許文献１に記載された同期方法では、メイン装置はタイマの値が予め設定した値になったらサブ装置に同期信号を出力し、この同期信号に応じてサブ装置が自身のタイマの値をメイン装置のタイマの値と同期させる。なお、この電子制御装置では、メイン装置に発振子を付けてクロックを発生させている。そして、このクロックがサブ装置に入力される。すなわち、メイン装置とサブ装置のクロックはクロック源が同じである。
【０００３】
特許文献２には、演算タイミング調整部が２つの装置に対し、同期を取るための信号を出力し、２つの装置が同期信号に合わせて自身のタイマを予め設定した値に修正する方法が記載されている。
【０００４】
特許文献３には、メイン装置が生成したＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｒａｔｉｏｎ）信号がサブ装置に入力され、サブ装置が入力されたＰＷＭ信号の立ち上がりエッジの時間と自身が生成したＰＷＭ信号の立ち上がりエッジの時間との差を求め、サブ装置がＰＷＭ信号を生成するためのタイマを補正する方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１７３４１４号公報
【特許文献２】特開２０１６−１３０４４号公報
【特許文献３】特開２０１６−１３０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術は、メイン装置とサブ装置が同じクロック源を使用しているため、発振子又はメイン装置のクロック発振回路が故障すると、メイン装置とサブ装置の両方が動作できなくなる。これに対し、特許文献２及び特許文献３の技術は、２つの装置がそれぞれ異なるクロックを使用しているため、いずれか一方の装置の発振子又はクロック発振回路が故障してももう一方の装置は動作できる。しかしながら、特許文献２の技術は、２つの装置のタイマ値（すなわちカウンタのカウント値）とは無関係に演算タイミング調整部が同期信号を出力するため、同期を取ると２つの装置のタイマ値は不連続に変化してしまう。また、特許文献３の技術は、サブ装置のタイマをメイン装置のタイマに一致させるように補正するため、同期を取るとサブ装置のタイマ値が不連続に変化する。
【０００７】
すなわち、クロック生成を半導体装置毎に行うシステムにおいて、カウンタのカウント値が不連続に変化することなく半導体装置間の同期をとる技術が依然として求められている。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、半導体装置は、クロック発振器と、クロックを数えるカウンタと、カウント値が設定値と一致すると所定値が設定されるマッチフラグレジスタと、マッチフラグレジスタの値を自装置から出力するマッチ出力端子と、同期対象の他の半導体装置から出力される値が入力されるマッチ入力端子と、自装置のマッチフラグレジスタの値とマッチ入力端子に入力された値が共に所定値になると、カウンタとマッチフラグレジスタをリセットするリセット回路とを有する。
【発明の効果】
【００１０】
前記一実施の形態によれば、クロック生成を半導体装置毎に行うシステムにおいて、カウンタのカウント値が不連続に変化することなく半導体装置間の同期をとることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態の概要にかかる半導体装置の構成の一例を示すブロック図である。
【図２】実施の形態にかかる制御システムの構成例を示すブロック図である。
【図３】実施の形態１にかかるＭＣＵの構成の一例を示すブロック図である。
【図４】実施の形態１にかかる同期タイマの構成の一例を示すブロック図である。
【図５】実施の形態１にかかる同期タイマのマッチフラグレジスタのセット処理の一例を示すフローチャートである。
【図６】実施の形態１にかかるリセット回路によるリセット処理の一例を示すフローチャートである。
【図７】実施の形態１にかかる同期タイマのカウンタの同期動作を表すタイミングチャートである。
【図８】実施の形態２にかかるＭＣＵの構成の一例を示すブロック図である。
【図９】カウンタの異常動作の一例を示すタイミングチャートである。
【図１０】実施の形態３にかかる同期タイマの構成の一例を示すブロック図である。
【図１１】実施の形態３にかかる同期タイマのオーバフローフラグレジスタのセット処理の一例を示すフローチャートである。
【図１２】実施の形態３にかかるオーバフローフラグレジスタのリセット処理の一例を示すフローチャートである。
【図１３】実施の形態３にかかるカウンタ及びマッチフラグレジスタのリセット処理の一例を示すフローチャートである。
【図１４】同期相手の同期タイマに異常が発生した場合のカウンタの非同期動作の一例を示すタイミングチャートである。
【図１５】カウンタの非同期動作後の同期動作の一例を示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１３】
＜実施の形態の概要＞
実施の形態の詳細について説明する前に、まず、実施の形態の概要について説明する。図１は、実施の形態の概要にかかる半導体装置１の構成の一例を示すブロック図である。図１に示すように、半導体装置１は、クロック発振器２と、カウンタ３と、周期レジスタ４と、比較回路５と、マッチフラグレジスタ６と、マッチ出力端子７と、マッチ入力端子８と、リセット回路９とを有する。
【００１４】
クロック発振器２は、クロックを生成する。カウンタ３は、クロック発振器２により生成されたクロックを数える。周期レジスタ４は、同期対象の他の半導体装置と同期を取る周期に相当する値が設定されるレジスタである。比較回路５は、カウンタ３のカウント値と周期レジスタ４の設定値とを比較する回路である。マッチフラグレジスタ６は、カウンタ３のカウント値が周期レジスタ４の設定値と一致すると所定値が設定されるレジスタである。マッチ出力端子７は、マッチフラグレジスタ６の値を自装置（半導体装置１）から出力する端子である。マッチ入力端子８は、同期対象の他の半導体装置から出力される値が入力される端子である。リセット回路９は、自装置（半導体装置１）のマッチフラグレジスタ６の値とマッチ入力端子８に入力された値が共に上記所定値になると、カウンタ３とマッチフラグレジスタ６をリセットする回路である。
【００１５】
なお、同期対象の他の半導体装置も、半導体装置１と同様の構成を備えている。すなわち、同期対象の他の半導体装置は、半導体装置１と同様、クロック発振器２と、カウンタ３と、周期レジスタ４と、比較回路５と、マッチフラグレジスタ６と、マッチ出力端子７と、マッチ入力端子８と、リセット回路９とを有している。
半導体装置１のマッチ入力端子８には、同期対象の他の半導体装置のマッチ出力端子７から出力される、この他の半導体装置のマッチフラグレジスタ６の値が入力される。
【００１６】
したがって、半導体装置１のカウンタ３のカウント値が周期レジスタ４の設定値に到達し、かつ、同期対象の他の半導体装置のカウンタ３のカウント値もこの設定値に到達すると、半導体装置１のカウンタ３がリセットされる。この時、同期対象の他の半導体装置のカウンタ３もリセットされる。
【００１７】
上述の通り、半導体装置１は、クロック発振器２を有している。このため、半導体装置１によれば、クロック生成を半導体装置毎に行うシステムを構成することが可能である。すなわち、クロック生成に関して、冗長なシステムを構成することが可能となる。また、カウンタ３のリセットは、半導体装置１及び同期対象の他の半導体装置のそれぞれのカウンタ３が設定値までカウントした後に行われる。このため、半導体装置１及び同期対象の他の半導体装置は、いずれも、カウンタ３のカウント値が設定値に到達するまで連続的にカウントを継続することができる。したがって、半導体装置１によれば、クロック生成を半導体装置毎に行うシステムにおいて、カウンタ３のカウント値が不連続に変化することなく半導体装置間の同期をとることができる。
【００１８】
ここで、カウント値の連続性について説明する。本説明では、「カウント値が連続して変化する」とは、カウンタのカウント値が、予め定められた第１の値から予め定められた第２の値まで、値をジャンプさせることなく、順に変化することを意味する。また、「カウント値が不連続に変化する」とは、カウンタのカウント値が、予め定められた第１の値から予め定められた第２の値のうちいずれかの値をジャンプして、変化することを意味する。
【００１９】
これについて、具体例により説明する。ここでは、説明のため、周期レジスタ４に設定される値がＮであり、カウンタ３のカウント値はリセットにより０になるものとする。この場合、カウンタ３は、Ｎまでカウントするまではリセットがされないため、０からＮまでの各値を順にカウントすることが保障される。したがって、カウント値が不連続に変化することなく、同期をとることが可能となる。
【００２０】
＜実施の形態１＞
次に実施の形態の詳細について説明する。図２は、実施の形態１にかかる制御システム１０の構成例を示すブロック図である。図２に示すように、制御システム１０は、制御ユニット１１と、アクチュエータ１２と、センサ１３Ａ、１３Ｂとを有する。制御ユニット１１は、第１の半導体装置としてのＭＣＵ１００Ａと、第２の半導体装置としてのＭＣＵ１００Ｂと、駆動回路５００Ａ、５００Ｂとを有する。このように、制御システム１０は、冗長構成を有している。すなわち、制御システム１０は、ＭＣＵ１００Ａ、駆動回路５００Ａ、及びセンサ１３Ａによりアクチュエータ１２を制御する第１の系統と、ＭＣＵ１００Ｂ、駆動回路５００Ｂ、及びセンサ１３Ｂによりアクチュエータ１２を制御する第２の系統とを備えた二系統の制御システムである。なお、以下の説明において、ＭＣＵ１００ＡとＭＣＵ１００Ｂとを区別せずに言及する場合、ＭＣＵ１００ということがある。
【００２１】
本実施の形態では、アクチュエータ１２は、モータであり、第１の系統のための第１の巻線と第２の系統のための第２の巻線を有している。なお、制御システム１０は、例えば、電動パワーステアリングシステムであり、アクチュエータ１２による動力により自動車などのハンドル操作をアシストする。なお、アクチュエータ１２は、モータに限られず、他の制御対象であってもよい。
【００２２】
ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）１００Ａは、センサ１３Ａからデータを取り込み、駆動回路５００Ａへの制御信号を出力する半導体装置である。また、ＭＣＵ１００Ａは、マッチ信号をＭＣＵ１００Ｂに出力する。同様に、ＭＣＵ１００Ｂは、センサ１３Ｂからデータを取り込み、駆動回路５００Ｂへの制御信号を出力する半導体装置である。また、ＭＣＵ１００Ｂは、マッチ信号をＭＣＵ１００Ａに出力する。ＭＣＵ１００Ａ及びＭＣＵ１００Ｂは、マッチ信号を交換することで、制御信号を生成するためのカウンタの値を周期的に一致させる。したがって、ＭＣＵ１００Ａ及びＭＣＵ１００Ｂは、カウント値について相互に同期をとりながら、カウント値に基づいて制御信号を生成する。本実施の形態では、制御信号は、ＰＷＭ信号である。なお、ＭＣＵ１００Ａ、１００Ｂの詳細については後述する。
【００２３】
駆動回路５００Ａ、５００Ｂは、それぞれ、アクチュエータ１２を駆動する。駆動回路５００Ａは、ＭＣＵ１００Ａからの制御信号に基づいて、アクチュエータ１２を駆動するための駆動信号を生成し、駆動信号をアクチュエータ１２に出力する。駆動回路５００Ａにより生成される駆動信号は、アクチュエータ１２の第１の巻線に対する駆動信号である。駆動回路５００Ｂは、ＭＣＵ１００Ｂからの制御信号に基づいて、アクチュエータ１２を駆動するための駆動信号を生成し、駆動信号をアクチュエータ１２に出力する。駆動回路５００Ｂにより生成される駆動信号は、アクチュエータ１２の第２の巻線に対する駆動信号である。したがって、アクチュエータ１２は、第１の系統と第２の系統の両方の制御によって駆動することもできるし、第１の系統による制御又は第２の系統による制御のいずれか一方によって駆動することもできる。
【００２４】
センサ１３Ａ、１３Ｂは、アクチュエータ１２の状態を検知する。本実施の形態では、センサ１３Ａ、１３Ｂは、モータのロータの位置を検知するセンサであり、例えばエンコーダである。センサ１３Ａの検出データは、ＭＣＵ１００Ａに入力される。センサ１３Ｂの検出データは、ＭＣＵ１００Ｂに入力される。これにより、フィードバック制御を行うことができる。
【００２５】
次に、ＭＣＵ１００Ａ、１００Ｂの詳細について説明する。図３は、本実施の形態にかかるＭＣＵ１００Ａ、１００Ｂの構成の一例を示すブロック図である。
【００２６】
ＭＣＵ１００Ａ、１００Ｂは、それぞれ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、プログラムメモリ１０２と、データメモリ１０３と、バスブリッジ１０４と、クロック発振器１０５と、割り込みコントローラ１０６と、コンペアマッチタイマ１０７と、パルス発生回路１０８と、同期タイマ１０９と、ＡＤ変換回路１１０とを備えている。また、ＭＣＵ１００Ａ、１００Ｂは、それぞれ、外部との入出力のための入出力端子として、クロック入力端子１１１と、クロック出力端子１１２と、割り込み入力端子１１３、パルス出力端子１１４、センサ入力端子１１５、マッチ入力端子１１６、及びマッチ出力端子１１７を備えている。
【００２７】
ＣＰＵ１０１は、ＣＰＵバス１１８を経由してプログラムメモリ１０２からプログラムを読み出して実行する。また、ＣＰＵ１０１は、プログラムの実行により、データメモリ１０３に対するＣＰＵバス１１８を経由したデータアクセスを行う。また、ＣＰＵ１０１は、バスブリッジ１０４を介して周辺バス１１９に接続されているクロック発振器１０５、割り込みコントローラ１０６、コンペアマッチタイマ１０７、パルス発生回路１０８、同期タイマ１０９、及びＡＤ変換回路１１０にアクセスすることができる。このため、ＣＰＵ１０１によるプログラムの実行によって、各種処理が実現される。
【００２８】
上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００２９】
プログラムメモリ１０２は、ＣＰＵ１０１により実行されるプログラムを格納するメモリである。データメモリ１０３は、ＣＰＵ１０１に読み出されるデータ及びＣＰＵ１０１により書き込まれるデータが格納されるメモリである。
【００３０】
バスブリッジ１０４は、ＣＰＵバス１１８上のコマンド及びアドレスを解読し、解読の結果が、周辺バス１１９に接続されている周辺回路に対するコマンドであると判定した場合には、周辺バス１１９にコマンド及びアドレスを出力してアクセスを行う。アクセスがリードアクセスの場合には、バスブリッジ１０４は、周辺バス１１９に読み出されたリードデータをＣＰＵバス１１８に出力してＣＰＵ１０１に読み込ませる。アクセスがライトアクセスの場合には、バスブリッジ１０４は、ＣＰＵバス１１８のライトデータを周辺バス１１９に出力し、周辺回路に書き込みを行わせる。
【００３１】
クロック発振器１０５は、図示しない発振子が接続されるクロック入力端子１１１及びクロック出力端子１１２に接続されており、クロックを生成する。クロック発振器１０５は、ＣＰＵクロック１２０と周辺クロック１２１を生成する。ＣＰＵクロック１２０は、ＣＰＵ１０１、プログラムメモリ１０２、データメモリ１０３、及びバスブリッジ１０４に入力される。周辺クロック１２１は、バスブリッジ１０４、割り込みコントローラ１０６、コンペアマッチタイマ１０７、パルス発生回路１０８、同期タイマ１０９、及びＡＤ変換回路１１０に入力される。
【００３２】
割り込みコントローラ１０６は、入力された割り込み要求を優先順位に従って選択し、ＣＰＵ１０１に割り込み信号を出力する。本実施の形態では、割り込み要求は、割り込み入力端子１１３、コンペアマッチタイマ１０７、及びＡＤ変換回路１１０から割り込みコントローラ１０６に入力されうる。なお、割り込み入力端子１１３には、外部装置からの割り込み要求が入力される。
【００３３】
コンペアマッチタイマ１０７は、カウンタ１３０を有しており、カウンタ１３０のカウント値が、予め定められた値と一致すると、割り込みコントローラ１０６に、割り込み要求を出力する。このため、ＣＰＵ１０１に割り込みコントローラ１０６から割り込み信号が入力される。この場合、ＣＰＵ１０１は、コンペアマッチタイマ１０７のカウント値を参照し、このカウント値（すなわち上記予め定められた値）に応じた処理を実行する。
【００３４】
パルス発生回路１０８は、カウンタ１３１を有しており、カウンタ１３１のカウント値を用いて、駆動回路５００Ａ又は駆動回路５００Ｂに対する制御信号であるパルス信号（ＰＷＭ信号）を生成し、パルス出力端子１１４からパルス信号を出力する。パルス発生回路１０８は、カウンタ１３１のカウント値が、予め設定された第１のデューティー値と一致すると、パルス出力をオンからオフへ切り替え、カウンタ１３１のカウント値が、予め設定された第２のデューティー値と一致すると、パルス出力をオフからオンへ切り替える。すなわち、カウンタ１３１のカウント値は、ＰＷＭ制御における搬送波に相当する。なお、ＭＣＵ１００Ａのパルス出力端子１１４から出力されたパルス信号は、駆動回路５００Ａに入力され、ＭＣＵ１００Ｂのパルス出力端子１１４から出力されたパルス信号は、駆動回路５００Ｂに入力される。また、パルス発生回路１０８は、制御信号生成回路と称されうる。
【００３５】
同期タイマ１０９は、カウンタ１５０を備えており、予め定められた条件が満たされた場合に、カウンタ１５０をリセットする。また、本実施の形態では、同期タイマ１０９は、カウンタ１５０をリセットする際、コンペアマッチタイマ１０７のカウンタ１３０及びパルス発生回路１０８のカウンタ１３１も同時にリセットする。同期タイマ１０９は、カウンタ１５０のカウント値が設定値と一致すると、一致したことを示すマッチ信号をマッチ出力端子１１７を介して出力する。また、同期タイマ１０９には、マッチ入力端子１１６を介して、他のＭＣＵのマッチ出力端子１１７から出力されたマッチ信号が入力される。すなわち、ＭＣＵ１００Ａの同期タイマ１０９には、ＭＣＵ１００Ｂのマッチ出力端子１１７から出力されたマッチ信号が入力され、ＭＣＵ１００Ｂの同期タイマ１０９には、ＭＣＵ１００Ａのマッチ出力端子１１７から出力されたマッチ信号が入力されることとなる。
【００３６】
ＡＤ変換回路１１０は、センサ入力端子１１５に入力されたアナログ信号をデジタル信号に変換する。ＡＤ変換回路１１０は、変換が終わると、割り込みコントローラ１０６に、割り込み要求を出力する。このため、ＣＰＵ１０１に割り込みコントローラ１０６から割り込み信号が入力される。この場合、ＣＰＵ１０１は、ＡＤ変換回路１１０の変換結果を取得する。なお、ＭＣＵ１００Ａのセンサ入力端子１１５は、センサ１３Ａに接続されており、センサ１３Ａの検出データが入力される。また、同様に、ＭＣＵ１００Ｂのセンサ入力端子１１５は、センサ１３Ｂに接続されており、センサ１３Ｂの検出データが入力される。
【００３７】
次に、同期タイマ１０９の詳細について説明する。図４は、本実施の形態にかかる同期タイマ１０９の構成の一例を示すブロック図である。なお、図４では、ＭＣＵ１００Ａの同期タイマ１０９の構成とＭＣＵ１００Ｂの同期タイマ１０９の構成を示すとともに、これらの接続関係についても示している。同期タイマ１０９は、カウンタ１５０と、周期レジスタ１５１と、比較回路１５２と、マッチフラグレジスタ１５３と、リセット回路１５４と有する。
【００３８】
図４において、ＭＣＵ１００Ａに属する構成について、例えば同期タイマ１０９Ａなどのように、符号の後に「Ａ」を付け、ＭＣＵ１００Ｂに属する構成について、例えば同期タイマ１０９Ｂなどのように、符号の後に「Ｂ」を付けて区別する。また、以下の説明においても、同様に区別することがある。
【００３９】
カウンタ１５０は、図１におけるカウンタ３に相当する。カウンタ１５０には、クロック発振器１０５により生成された周辺クロック１２１が入力され、周辺クロック１２１を数える。すなわち、カウンタ１５０Ａは、ＭＣＵ１００Ａのクロック発振器１０５により生成されたクロックをカウントし、カウンタ１５０Ｂは、ＭＣＵ１００Ｂのクロック発振器１０５により生成されたクロックをカウントする。本実施の形態では、カウンタ１５０は、０から１ずつインクリメントしてカウントを行うが、カウンタ１５０はデクリメントしてカウントを行ってもよい。また、カウンタ１５０は、後述するリセット回路１５４からのリセット信号が‘１’となると、カウント値が‘０’にリセットされる。
【００４０】
周期レジスタ１５１は、図１における周期レジスタ４に相当する。周期レジスタ１５１は、ＭＣＵ１００ＡとＭＣＵ１００Ｂとで同期を取る周期に相当する値が設定されるレジスタである。なお、周期レジスタ１５１は、連続したカウントを行うことが保障される値の範囲を規定する設定値を格納するレジスタともいうことができる。周期レジスタ１５１Ａには、ＭＣＵ１００ＡのＣＰＵ１０１が設定値の書き込みを行い、周期レジスタ１５１Ｂには、ＭＣＵ１００ＢのＣＰＵ１０１が設定値の書き込みを行う。
【００４１】
比較回路１５２は、図１における比較回路５に相当する。比較回路１５２は、カウンタ１５０のカウント値と周期レジスタ１５１に設定された設定値とを比較し、比較結果を示す値をマッチフラグレジスタ１５３に出力する。具体的には、比較回路１５２Ａにより、カウンタ１５０Ａのカウント値と周期レジスタ１５１Ａの値が比較され、両者が一致していると判定された場合、その旨を示す値がマッチフラグレジスタ１５３Ａに格納されることとなる。同様に、比較回路１５２Ｂにより、カウンタ１５０Ｂのカウント値と周期レジスタ１５１Ｂの値が比較され、両者が一致していると判定された場合、その旨を示す値がマッチフラグレジスタ１５３Ｂに格納されることとなる。本実施の形態では、カウント値が周期レジスタの設定値に一致するまでの間、マッチフラグレジスタ１５３には‘０’が格納され、一致すると‘１’が格納される。なお、これらの値は、一例であり、他の値が採用されてもよい。
【００４２】
マッチフラグレジスタ１５３は、図１におけるマッチフラグレジスタ６に相当する。マッチフラグレジスタ１５３は、カウンタ１５０のカウント値が周期レジスタ１５１の設定値と一致すると所定値が設定されるレジスタである。すなわち、具体的には、マッチフラグレジスタ１５３は、カウンタ１５０のカウント値が周期レジスタ１５１の設定値と一致した場合、比較回路１５２によって‘１’に設定される。また、マッチフラグレジスタ１５３は、後述するリセット回路１５４からのリセット信号が‘１’となると、値が‘０’にリセットされる。
【００４３】
また、マッチフラグレジスタ１５３に設定された値は、マッチ信号として、外部に出力される。すなわち、マッチフラグレジスタ１５３Ａに設定された値は、ＭＣＵ１００Ａのマッチ出力端子１１７Ａから出力され、ＭＣＵ１００Ｂのマッチ入力端子１１６Ｂに入力される。同様に、マッチフラグレジスタ１５３Ｂに設定された値は、ＭＣＵ１００Ｂのマッチ出力端子１１７Ｂから出力され、ＭＣＵ１００Ａのマッチ入力端子１１６Ａに入力される。このため、ＭＣＵ１００Ａのマッチ出力端子１１７ＡとＭＣＵ１００Ｂのマッチ入力端子１１６Ｂは信号線１５５Ａで接続されており、ＭＣＵ１００Ｂのマッチ出力端子１１７ＢとＭＣＵ１００Ａのマッチ入力端子１１６Ａは信号線１５５Ｂで接続されている。このように、マッチ入力端子１１６には、同期対象の他のＭＣＵ１００から出力されるマッチ信号が入力され、マッチ出力端子１１７はマッチフラグレジスタ１５３の値を自装置から同期対象の他のＭＣＵ１００へと出力する。なお、マッチ出力端子１１７は、上述のマッチ出力端子７に相当し、マッチ入力端子１１６は、上述のマッチ入力端子８に相当する。
【００４４】
リセット回路１５４は、図１におけるリセット回路９に相当する。リセット回路１５４は、マッチフラグレジスタ１５３の値とマッチ入力端子１１６に入力された値が共に所定値になると、カウンタ１５０とマッチフラグレジスタ１５３をリセットする回路である。具体的には、リセット回路１５４は、マッチフラグレジスタ１５３の値とマッチ入力端子１１６に入力された値が共に‘１’になると、カウンタ１５０とマッチフラグレジスタ１５３をリセットする。リセット回路１５４は、リセットを実行する場合、リセット信号を‘１’にし、それ以外の場合では‘０’にする。すなわち、また、本実施の形態では、リセット回路１５４は、マッチフラグレジスタ１５３の値とマッチ入力端子１１６に入力された値が共に所定値になると、コンペアマッチタイマ１０７のカウンタ１３０とパルス発生回路１０８のカウンタ１３１もリセットする。リセット回路１５４は、リセット信号を１クロックサイクルだけ‘１’にすることで、これらをリセットする。
【００４５】
図５は、同期タイマ１０９のマッチフラグレジスタ１５３のセット処理の一例を示すフローチャートである。以下、図５に沿って、マッチフラグレジスタ１５３のセット処理について説明する。
【００４６】
ステップ１００（Ｓ１００）において、周辺クロック１２１が‘０’から‘１’に変化することにより、カウンタ１５０がカウント値を１だけ加算して、カウント値を更新する。
ステップ１０１（Ｓ１０１）において、比較回路１５２は、カウンタ１５０のカウント値が周期レジスタ１５１の設定値と一致したかどうかをチェックする。一致している場合、処理は、ステップ１０２へ移行し、不一致ならばステップ１００に戻る。
ステップ１０２（Ｓ１０２）において、比較回路１５２は、マッチフラグレジスタ１５３に‘１’をセットする。
【００４７】
図６は、リセット回路１５４によるリセット処理の一例を示すフローチャートである。以下、図６に沿って、リセット回路１５４の動作について説明する。
【００４８】
ステップ２００（Ｓ２００）において、リセット回路１５４がマッチフラグレジスタ１５３の値をチェックする。マッチフラグレジスタ１５３に設定された値が‘１’であれば（ステップ２０１（Ｓ２０１）でＹｅｓ）、処理はステップ２０２へ移行し、‘１’でなければ（ステップ２０１でＮｏ）、処理はステップ２００に戻る。
【００４９】
ステップ２０２（Ｓ２０２）において、リセット回路１５４がマッチ入力端子１１６に入力されたマッチ信号をチェックする。入力されたマッチ信号が‘１’であれば（ステップ２０３（Ｓ２０３）でＹｅｓ）、処理はステップ２０４へ移行し、‘１’でなければ（ステップ２０３でＮｏ）、処理はステップ２０２に戻る。
【００５０】
ステップ２０４（Ｓ２０４）において、リセット回路１５４は、同期タイマ１０９のカウンタ１５０と、コンペアマッチタイマ１０７のカウンタ１３０と、パルス発生回路１０８のカウンタ１３１と、同期タイマ１０９のマッチフラグレジスタ１５３を‘０’にリセットする。
【００５１】
図７は、同期タイマ１０９のカウンタ１５０の同期動作を表すタイミングチャートである。図７では、上から順に、カウンタ１５０の値、ＭＣＵ１００Ａのマッチフラグレジスタ１５３Ａの値、ＭＣＵ１００Ａのリセット信号、ＭＣＵ１００Ｂのマッチフラグレジスタ１５３Ｂの値、ＭＣＵ１００Ｂのリセット信号の時間推移を示す。なお、図７では、ＭＣＵ１００Ａに関して実線が用いられ、ＭＣＵ１００Ｂに関して破線が用いられている。
【００５２】
カウンタ１５０の値は、時刻ｔ０で、ＭＣＵ１００ＡとＭＣＵ１００Ｂにおいて、いずれも‘０’であるとする。ここでは、一例として、ＭＣＵ１００Ａの周辺クロック１２１がＭＣＵ１００Ｂの周辺クロック１２１より周期が短いと仮定する。このため、図７では、時間の経過とともにカウンタ１５０の値が増加するものの、ＭＣＵ１００Ａのカウンタ１５０Ａの値がＭＣＵ１００Ｂのカウンタ１５０Ｂの値より大きくなる様子を表している。このようなずれは、ＭＣＵ１００ＡとＭＣＵ１００Ｂの周辺クロック１２１の周期に誤差が生じるために発生する。なお、このような誤差は、ＭＣＵ１００Ａ及びＭＣＵ１００Ｂにはそれぞれ別の発振子が接続され、さらに、ＭＣＵ１００Ａ及びＭＣＵ１００Ｂはそれぞれ別のクロック発振器１０５によりクロックを生成していることに起因する。
【００５３】
時刻ｔ１で、ＭＣＵ１００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、ＭＣＵ１００Ａのマッチフラグレジスタ１５３Ａに‘１’がセットされる。
時刻ｔ２で、ＭＣＵ１００Ｂのカウンタ１５０Ｂの値が周期レジスタ１５１Ｂの値と一致し、ＭＣＵ１００Ｂのマッチフラグレジスタ１５３Ｂが‘１’がセットされる。ＭＣＵ１００ＡとＭＣＵ１００Ｂのマッチフラグレジスタ１５３の値は、マッチ出力端子１１７から相手のマッチ入力端子１１６に伝えられるため、リセット信号が‘１’となる。これにより、ＭＣＵ１００ＡとＭＣＵ１００Ｂのカウンタ１５０とマッチフラグレジスタ１５３が‘０’にリセットされる。なお、本実施の形態では、このとき、ＭＣＵ１００ＡとＭＣＵ１００Ｂのコンペアマッチタイマ１０７のカウンタ１３０とパルス発生回路１０８のカウンタ１３１もリセットされる。
時刻ｔ３で、時刻ｔ１の上記動作と同様の動作が行われ、時刻ｔ４で、時刻ｔ２の上記動作と同様の動作が行われる。したがって、時刻ｔ４において、リセットが行われる。
【００５４】
以上、実施の形態１について説明した。本実施の形態によれば、ＭＣＵ１００Ａは、カウンタ１５０Ａのカウント値が設定値に達したか否かをＭＣＵ１００Ｂに出力し、ＭＣＵ１００Ｂも、カウンタ１５０Ｂのカウント値が設定値に達したか否かをＭＣＵ１００Ａに出力する。そして、ＭＣＵ１００Ａは、カウンタ１５０Ａのカウント値とカウンタ１５０Ｂのカウント値の両方が、設定値に達すると、カウンタ１５０Ａをリセットする。同様に、ＭＣＵ１００Ｂは、カウンタ１５０Ａのカウント値とカウンタ１５０Ｂのカウント値の両方が、設定値に達すると、カウンタ１５０Ｂをリセットする。したがって、ＭＣＵ１００Ａの同期タイマ１０９Ａのカウンタ１５０Ａと、ＭＣＵ１００Ｂの同期タイマ１０９Ｂのカウンタ１５０Ｂとを同期させることができる。ここで、カウンタ１５０Ａ、１５０Ｂは、カウント値が周期レジスタ１５１の設定値に到達するまでの間、リセットされない。したがって、カウンタ１５０Ａ、１５０Ｂは、０からこの設定値まで順にカウントすることが保障されている。したがって、カウンタ１５０のカウント値が不連続に変化することなく、カウンタ１５０の同期をとることができる。
【００５５】
また、本実施の形態では、同期タイマ１０９のカウンタ１５０のリセット時、コンペアマッチタイマ１０７のカウンタ１３０とパルス発生回路１０８のカウンタ１３１もリセットされる。したがって、カウンタ１３０、カウンタ１３１についても、ＭＣＵ１００ＡとＭＣＵ１００Ｂとの間で同期がとられる。また、これらのカウンタについても、同様に、カウント値が周期レジスタ１５１の設定値に到達するまでの間、リセットされない。したがって、カウンタ１３０、１３１は、０からこの設定値まで順にカウントすることが保障されている。したがって、これらのカウンタについても、カウント値が不連続に変化することなく、同期をとることができる。
【００５６】
上述の通り、ＣＰＵ１０１は、コンペアマッチタイマ１０７のカウント値が設定値になると設定値に応じた処理を実行する。このため、コンペアマッチタイマ１０７のカウント値が、同期のためのリセットにより不連続に変化してしまうと、本来、割り込みにより行われるべき処理が実行されない恐れがある。これに対し、本実施の形態では、カウント値が不連続に変化することなく、同期をとることができるため、割り込みにより行われるべき処理の実行が保障される。
【００５７】
また、パルス発生回路１０８は、カウント値とデューティー値との一致により、ＰＷＭ信号のオン・オフを切り替えている。このため、パルス発生回路１０８のカウント値が、同期のためのリセットにより不連続に変化してしまうと、ＰＷＭ信号のオン・オフが正しく行われない恐れがある。これに対し、本実施の形態では、カウント値が不連続に変化することなく、同期をとることができるため、ＰＷＭ信号のオン・オフが正しく行われることが保障される。
【００５８】
また、本実施の形態では、パルス発生回路１０８は、カウンタ１５０のカウント値と同じタイミングでリセットされるカウンタ１３１のカウント値に基づいて、制御信号を生成する。すなわち、ＭＣＵ１００Ａのパルス発生回路１０８もＭＣＵ１００Ｂのパルス発生回路１０８も、同期がとれたカウント値に基づいて、それぞれ制御信号を生成する。したがって、本実施の形態では、第１の系統と第２の系統とが協調してアクチュエータ１２を制御することができる。
【００５９】
＜実施の形態２＞
次に実施の形態２について説明する。実施の形態１では、コンペアマッチタイマ１０７は、同期タイマ１０９におけるリセット信号によりリセットされるカウンタ１３０を有し、パルス発生回路１０８は、同期タイマ１０９におけるリセット信号によりリセットされるカウンタ１３１を有していた。本実施の形態では、コンペアマッチタイマ及びパルス発生回路が、同期タイマ１０９のカウンタ１５０のカウント値を利用する点で、実施の形態１と異なっている。
【００６０】
図８は、本実施の形態にかかるＭＣＵ２００Ａ、２００Ｂの構成の一例を示すブロック図である。ＭＣＵ２００Ａ、２００Ｂは、コンペアマッチタイマ１０７の代わりにコンペアマッチタイマ２０１を有し、パルス発生回路１０８の代わりにパルス発生回路２０２を有する点で、ＭＣＵ１００Ａ、１００Ｂと異なる。
【００６１】
コンペアマッチタイマ２０１は、同期タイマ１０９のカウンタ１５０から入力されたカウント値を用いて割り込み要求を行う点で、コンペアマッチタイマ１０７と異なる。コンペアマッチタイマ２０１は、コンペアマッチタイマ１０７と同様、カウント値が、設定値と一致すると、割り込みコントローラ１０６に、割り込み要求を出力する。このように、コンペアマッチタイマ２０１は、カウンタを有する必要がない。よって、コンペアマッチタイマ２０１の構成を簡易にすることができる。また、コンペアマッチタイマ２０１が用いるカウント値は、不連続に変化することなく、同期をとることができるため、実施の形態１と同様、割り込みにより行われるべき処理の実行が保障される。
【００６２】
パルス発生回路２０２は、パルス発生回路１０８と同様、駆動回路５００Ａ又は駆動回路５００Ｂに対する制御信号であるパルス信号（ＰＷＭ信号）を生成し、パルス出力端子１１４からパルス信号を出力する。ただし、パルス発生回路２０２は、同期タイマ１０９のカウンタ１５０のカウント値を用いて制御信号を生成する。すなわち、パルス発生回路２０２は、カウンタ１５０のカウント値が、予め設定された第１のデューティー値と一致すると、パルス出力をオンからオフへ切り替え、カウンタ１５０のカウント値が、予め設定された第２のデューティー値と一致すると、パルス出力をオフからオンへ切り替える。なお、パルス発生回路２０２は、制御信号生成回路とも称す。パルス発生回路２０２は、カウンタを有する必要がない。よって、パルス発生回路２０２の構成を簡易にすることができる。また、パルス発生回路２０２が用いるカウント値は不連続に変化することなく、同期をとることができるため、実施の形態１と同様、ＰＷＭ信号のオン・オフが正しく行われることが保障される。
【００６３】
また、本実施の形態では、パルス発生回路２０２は、カウンタ１５０のカウント値に基づいて、制御信号を生成する。すなわち、ＭＣＵ２００Ａのパルス発生回路２０２もＭＣＵ２００Ｂのパルス発生回路２０２も、同期がとれたカウント値に基づいて、それぞれ制御信号を生成する。したがって、本実施の形態でも、第１の系統と第２の系統とが協調してアクチュエータ１２を制御することができる。
【００６４】
なお、本実施の形態では、コンペアマッチタイマとパルス発生回路の両方について、同期タイマ１０９のカウンタ１５０のカウント値を利用する構成を示したが、いずれか一方のみをこのような構成とし、他方を実施の形態１に示した構成としてもよい。
【００６５】
＜実施の形態３＞
実施の形態３について説明する前に、実施の形態１又は実施の形態２において発生し得る課題について説明する。図９は、カウンタ１５０の異常動作の一例を示すタイミングチャートである。図９では、上から順に、カウンタ１５０の値、ＭＣＵ１００Ａ又は２００Ａのマッチフラグレジスタ１５３Ａの値、ＭＣＵ１００Ａ又は２００Ａのリセット信号、ＭＣＵ１００Ｂ又は２００Ｂのマッチフラグレジスタ１５３Ｂの値、ＭＣＵ１００Ｂ又は２００Ｂのリセット信号の時間推移を示す。なお、図９では、ＭＣＵ１００Ａ又は２００Ａに関して実線が用いられ、ＭＣＵ１００Ｂ又は２００Ｂに関して破線が用いられている。図９において、時刻ｔ５からｔ７までは、図７における時刻ｔ０からｔ２まで、又は時刻ｔ２から時刻ｔ４までと同じである。
【００６６】
ここで、時刻ｔ８で、ＭＣＵ１００Ｂ（ＭＣＵ２００Ｂ）のカウンタ１５０が何らかの理由によりカウントを停止したとする。時刻ｔ９で、ＭＣＵ１００Ａ（ＭＣＵ２００Ａ）のカウンタ１５０の値が周期レジスタ１５１の値と一致し、ＭＣＵ１００Ａ（ＭＣＵ２００Ａ）のマッチフラグレジスタ１５３に‘１’が設定される。時刻ｔ９以後も、ＭＣＵ１００Ａ（ＭＣＵ２００Ａ）のカウンタ１５０はカウントを続けるが、ＭＣＵ１００Ｂ（ＭＣＵ２００Ｂ）のカウンタ１５０が停止しているため、リセットが行われない。
【００６７】
上述の実施の形態では、ＭＣＵ１００Ａ、１００Ｂ（ＭＣＵ２００Ａ、２００Ｂ）が備える同期タイマ１０９がいずれも正常であれば、カウンタ１５０が周期的にリセットされて両者の同期が取られる。しかしながら、いずれか一方の同期タイマ１０９が異常になると、正常な同期タイマ１０９がリセットされなくなってしまうという問題がある。なお、厳密には、カウンタ１５０は、設計上の限界値にカウント値が到達すれば、カウント値はリセットされる。しかしながら、この場合であっても、正常な同期タイマ１０９は、設計上の限界値までカウントを継続しなければならない。つまり、一方の同期タイマ１０９に異常が発生すると、正常な同期タイマ１０９について所望の周期でリセットを行うことが出来なくってしまう。このことは、例えば、コンペアマッチタイマによる割り込み要求の発生が所望の周期で行えなくなるなどといった制御上の問題を引き起こす恐れがある。
【００６８】
そこで、本実施の形態では、同期タイマ１０９の異常を検出した場合には、同期処理を打ち切って、正常な同期タイマ１０９による非同期なカウントおよびリセットを行うようにした構成を示す。具体的には、本実施の形態では、実施の形態１又は実施の形態２の同期タイマ１０９が、同期タイマ３０１に置き換えられる。すなわち、本実施の形態にかかるＭＣＵ３００は、同期タイマ１０９が、同期タイマ３０１に置き換えられた点で、実施の形態１にかかるＭＣＵ１００又は実施の形態２にかかるＭＣＵ２００と異なっている。
【００６９】
図１０は、実施の形態３にかかる同期タイマ３０１の構成の一例を示すブロック図である。なお、図１０では、図４と同様、ＭＣＵ３００Ａの同期タイマ３０１の構成とＭＣＵ３００Ｂの同期タイマ３０１の構成を示すとともに、これらの接続関係についても示している。同期タイマ３０１は、同期タイマ１０９と同様、カウンタ１５０と、周期レジスタ１５１と、比較回路１５２と、マッチフラグレジスタ１５３と、リセット回路１５４と有する。また、同期タイマ３０１は、これらに加え、さらに、制限値レジスタ３５０と、比較回路３５１と、オーバフローフラグレジスタ３５２を有している。
【００７０】
図１０においても、ＭＣＵ３００Ａに属する構成について、例えば同期タイマ３０１Ａなどのように、符号の後に「Ａ」を付け、ＭＣＵ３００Ｂに属する構成について、例えば同期タイマ３０１Ｂなどのように、符号の後に「Ｂ」を付けて区別する。また、以下の説明においても、同様に区別することがある。
【００７１】
制限値レジスタ３５０は、カウンタ１５０が数えるクロックの制限値が設定されるレジスタである。この制限値は、カウンタ１５０がカウントする限界値である。本実施の形態では、カウンタ１５０は、０から１ずつインクリメントしてカウントするため、この限界値はカウンタ１５０がカウントする上限値である。なお、制限値レジスタ３５０に設定される制限値の絶対値は、カウンタ１５０が設計上カウント可能な限界値の絶対値よりも小さい。制限値レジスタ３５０Ａには、ＭＣＵ３００ＡのＣＰＵ１０１が設定値の書き込みを行い、制限値レジスタ３５０Ｂには、ＭＣＵ３００ＢのＣＰＵ１０１が設定値の書き込みを行う。
【００７２】
比較回路３５１は、カウンタ１５０のカウント値と制限値レジスタ３５０に設定された制限値とを比較する回路である。比較回路３５１は、カウント値と制限値を比較し、比較結果を示す値をオーバフローフラグレジスタ３５２に出力する。具体的には、比較回路３５１Ａにより、カウンタ１５０Ａのカウント値と制限値レジスタ３５０Ａの値が比較され、両者が一致していると判定された場合、その旨を示す値がオーバフローフラグレジスタ３５２Ａに格納されることとなる。同様に、比較回路３５１Ｂにより、カウンタ１５０Ｂのカウント値と制限値レジスタ３５０Ｂの値が比較され、両者が一致していると判定された場合、その旨を示す値がオーバフローフラグレジスタ３５２Ｂに格納されることとなる。本実施の形態では、カウント値が制限値に一致するまでの間、オーバフローフラグレジスタ３５２には‘０’が格納され、一致すると‘１’が格納される。なお、これらの値は、一例であり、他の値が採用されてもよい。
【００７３】
また、比較回路３５１は、カウンタ１５０のカウント値が制限値レジスタ３５０に設定された制限値と一致すると、割り込みコントローラ１０６に割り込み要求を出力する。すなわち、例えば、比較回路３５１Ａは、カウンタ１５０Ａのカウント値が制限値レジスタ３５０Ａに設定された制限値と一致すると、ＭＣＵ３００Ａの割り込みコントローラ１０６に割り込み要求を出力する。割り込みコントローラ１０６に割り込み要求が入力されると、ＣＰＵ１０１に割り込みコントローラ１０６から割り込み信号が入力される。この場合、ＣＰＵ１０１は、オーバフローフラグレジスタ３５２の値を参照し、オーバフローフラグレジスタ３５２に‘１’が格納されていることを確認すると、片系での制御に切り替える。すなわち、ＣＰＵ１０１は、片方のＭＣＵ３００のみで、アクチュエータ１２を制御するよう処理を切り替える。このように、本実施の形態では、オーバフローフラグレジスタ３５２の値が‘１’に設定される場合、それに起因した割り込み要求が出力されるため、正常なＭＣＵ３００は、同期相手の異常を検知すると共に、それに応じた処理に切り替えることが可能となる。
【００７４】
オーバフローフラグレジスタ３５２は、カウンタ１５０のカウント値が制限値レジスタ３５０の制限値と一致すると所定値が設定されるレジスタである。すなわち、具体的には、オーバフローフラグレジスタ３５２は、カウンタ１５０のカウント値が制限値レジスタ３５０に設定された制限値と一致した場合、比較回路３５１によって‘１’に設定される。また、オーバフローフラグレジスタ３５２は、マッチ入力端子１１６から入力されるマッチ信号が‘１’になると、‘０’にリセットされる。言い換えると、オーバフローフラグレジスタ３５２は、マッチ入力端子１１６から入力される値が所定値となると、リセットされる。また、オーバフローフラグレジスタ３５２の設定値は、リセット回路１５４に入力される。
【００７５】
本実施の形態のリセット回路１５４は、自装置のオーバフローフラグレジスタ３５２の値が、上記所定値以外の場合、実施の形態１又は実施の形態２と同様のリセット条件にしたがってリセットを行う。すなわち、本実施の形態のリセット回路１５４は、オーバフローフラグレジスタ３５２の値が所定値以外の値である状態（具体的には‘０’である状態）で、自装置のマッチフラグレジスタ１５３の値とマッチ入力端子１１６から入力されたマッチ信号の値が共に所定値（具体的には、‘１’）になったタイミングで、リセットを行う。
【００７６】
また、本実施の形態のリセット回路１５４は、自装置のオーバフローフラグレジスタ３５２の値が所定値（具体的には、‘１’）になったタイミングで、リセットを行う。さらに、本実施の形態のリセット回路１５４は、自装置のオーバフローフラグレジスタ３５２の値が所定値である状態（具体的には‘１’である状態）で自装置のマッチフラグレジスタ１５３の値が所定値（具体的には、‘１’）になったタイミングで、リセットを行う。
【００７７】
よって、本実施の形態では、例えば、リセット回路１５４Ａは、オーバフローフラグレジスタ３５２Ａの値が‘０’の場合には、マッチフラグレジスタ１５３Ａの値とマッチ入力端子１１６Ａの値が共に‘１’になると、リセット信号を１クロックサイクルだけ‘１’にし、それ以外のときは‘０’にする。また、リセット回路１５４Ａは、オーバフローフラグレジスタ３５２Ａの値が‘１’になったタイミングで、リセット信号を１クロックサイクルだけ‘１’にする。そして、リセット回路１５４Ａは、オーバフローフラグレジスタ３５２Ａの値が‘１’の間は、マッチフラグレジスタ１５３Ａの値が‘１’になると１クロックサイクルだけリセット信号を‘１’にする。
【００７８】
なお、本実施の形態のリセット回路１５４は、コンペアマッチタイマ及びパルス発生回路が、実施の形態１のように構成されている場合、カウンタ１５０及びマッチフラグレジスタ１５３のリセットに加え、カウンタ１３０及びカウンタ１３１のリセットを行う。
【００７９】
また、本実施の形態のリセット回路１５４は、マッチ入力端子１１６から入力されるマッチ信号が‘１’になると、オーバフローフラグレジスタ３５２の値を‘０’にリセットする。
【００８０】
図１１は、実施の形態３にかかる同期タイマ３０１のオーバフローフラグレジスタ３５２のセット処理の一例を示すフローチャートである。以下、図１１に沿って、オーバフローフラグレジスタ３５２のセット処理について説明する。
【００８１】
ステップ３００（Ｓ３００）において、比較回路３５１は、カウンタ１５０のカウント値が制限値レジスタ３５０の設定値と一致したかどうかをチェックする。一致している場合（ステップ３０１（Ｓ３０１）でＹｅｓ）、処理は、ステップ３０２へ移行し、不一致ならば（ステップ３０１でＮｏ）、処理は、ステップ３００に戻る。
ステップ３０２（Ｓ３０２）において、比較回路３５１は、オーバフローフラグレジスタ３５２に‘１’をセットする。
【００８２】
図１２は、オーバフローフラグレジスタ３５２のリセット処理の一例を示すフローチャートである。以下、図１２に沿って、オーバフローフラグレジスタ３５２のリセット処理の動作について説明する。
【００８３】
ステップ４００（Ｓ４００）において、リセット回路１５４がマッチ入力端子１１６に入力されたマッチ信号をチェックする。マッチ信号の値が‘１’であれば（ステップ４０１（Ｓ４０１）でＹｅｓ）、処理はステップ４０２へ移行し、‘１’でなければ（ステップ４０１でＮｏ）、処理はステップ４００に戻る。
ステップ４０２（Ｓ４０２）において、リセット回路１５４は、オーバフローフラグレジスタ３５２を‘０’にリセットする。
【００８４】
図１３は、カウンタ１５０及びマッチフラグレジスタ１５３のリセット処理の一例を示すフローチャートである。以下、図１３に沿って、これらのリセット動作について説明する。
【００８５】
ステップ５００（Ｓ５００）において、リセット回路１５４がマッチフラグレジスタ１５３の値をチェックする。マッチフラグレジスタ１５３に設定された値が‘１’であれば（ステップ５０１（Ｓ５０１）でＹｅｓ）、処理はステップ５０２へ移行し、‘１’でなければ（ステップ５０１でＮｏ）、処理はステップ５００に戻る。
【００８６】
ステップ５０２（Ｓ５０２）において、リセット回路１５４がオーバフローフラグレジスタ３５２の値をチェックする。オーバフローフラグレジスタ３５２に設定された値が‘１’であれば（ステップ５０３（Ｓ５０３）でＹｅｓ）、処理はステップ５０６へ移行し、‘１’でなければ（ステップ５０３でＮｏ）、処理はステップ５０４へ移行する。
【００８７】
ステップ５０４（Ｓ５０４）において、リセット回路１５４がマッチ入力端子１１６に入力されたマッチ信号をチェックする。入力されたマッチ信号が‘１’であれば（ステップ５０５（Ｓ５０５）でＹｅｓ）、処理はステップ５０６へ移行し、‘１’でなければ（ステップ５０５でＮｏ）、処理はステップ５０２に戻る。
【００８８】
ステップ５０６（Ｓ５０６）において、リセット回路１５４は、同期タイマ１０９のカウンタ１５０と、同期タイマ１０９のマッチフラグレジスタ１５３を‘０’にリセットする。なお、コンペアマッチタイマ及びパルス発生回路が、実施の形態１のように構成されている場合、リセット回路１５４は、カウンタ１３０及びカウンタ１３１についても、‘０’にリセットする。
【００８９】
図１４は、同期相手の同期タイマ３０１に異常が発生した場合のカウンタ１５０の非同期動作の一例を示すタイミングチャートである。図１４及び後述する図１５では、上から順に、カウンタ１５０の値、ＭＣＵ３００Ａのマッチフラグレジスタ１５３Ａの値、ＭＣＵ３００Ａのリセット信号、ＭＣＵ３００Ａのオーバフローフラグレジスタ３５２Ａの値、ＭＣＵ３００Ｂのマッチフラグレジスタ１５３Ｂの値、ＭＣＵ３００Ｂのリセット信号の時間推移を示す。なお、図１４及び図１５では、ＭＣＵ３００Ａに関して実線が用いられ、ＭＣＵ３００Ｂに関して破線が用いられている。
【００９０】
カウンタ１５０の値は、時刻ｔ１０で、ＭＣＵ３００ＡとＭＣＵ３００Ｂにおいて、いずれも‘０’であるとする。時間の経過とともにカウンタ１５０の値が増加するが、時刻ｔ１１でＭＣＵ３００Ｂに異常が発生し、カウンタ１５０Ｂがカウントを停止する。
時刻ｔ１２でＭＣＵ３００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、ＭＣＵ３００Ａのマッチフラグレジスタ１５３Ａが‘１’に設定される。時刻ｔ１３でＭＣＵ３００Ａのカウンタ１５０Ａの値が制限値レジスタ３５０Ａの値と一致し、ＭＣＵ３００Ａのオーバフローフラグレジスタ３５２Ａが‘１’に設定される。このとき、ＭＣＵ３００Ａのリセット信号が‘１’となって、ＭＣＵ３００Ａのカウンタ１５０Ａとマッチフラグレジスタ１５３Ａが‘０’にリセットされる。
その後、時刻ｔ１４でＭＣＵ３００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、リセット信号が‘１’となって、カウンタ１５０Ａとマッチフラグレジスタ１５３Ａが‘０’にリセットされる。オーバフローフラグレジスタ３５２Ａの値が‘１’に設定された後は、ＭＣＵ３００Ａは、カウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致するタイミングで、ＭＣＵ３００Ｂと同期することなく、リセットを行うこととなる。
【００９１】
図１５は、カウンタ１５０の非同期動作後の同期動作の一例を示すタイミングチャートである。時刻ｔ１５において、ＭＣＵ３００Ａのカウンタ１５０Ａの値は、‘０’であり、オーバフローフラグレジスタ３５２Ａの値は‘１’であるものとする。時刻ｔ１６で、ＭＣＵ３００Ｂのカウンタ１５０Ｂが‘０’からカウントを開始する。例えば、時刻ｔ１６におけるカウンタ１５０Ｂのカウントの開始は、一時的に異常が発生したＭＣＵ３００Ｂの異常から復帰によるものである。また、時刻ｔ１６におけるカウンタ１５０Ｂのカウントの開始は、異常からの復帰ではなく、ＭＣＵ３００Ｂのカウンタ１５０Ｂのカウントの開始タイミングが、ＭＣＵ３００Ａのカウンタ１５０Ａのカウントの開始タイミングよりも遅いことによるものであってもよい。
【００９２】
時刻ｔ１７で、ＭＣＵ３００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、リセット信号が‘１’となって、カウンタ１５０Ａとマッチフラグレジスタ１５３Ａが‘０’にリセットされる。このリセットは、非同期動作によるリセットである。
【００９３】
時刻１８で、ＭＣＵ３００Ｂのカウンタ１５０Ｂの値が周期レジスタ１５１Ｂの値と一致し、ＭＣＵ３００Ｂのマッチフラグレジスタ１５３Ｂの値が‘１’になる。ＭＣＵ３００Ｂのマッチフラグレジスタ１５３Ｂの値は、マッチ出力端子１１７ＢからＭＣＵ３００Ａのマッチ入力端子１１６Ａに伝えられ、ＭＣＵ３００Ａのオーバフローフラグレジスタ３５２Ａが‘０’にリセットされる。
【００９４】
時刻ｔ１９で、ＭＣＵ３００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、ＭＣＵ３００Ａのマッチフラグレジスタ１５３Ａの値が‘１’になる。ＭＣＵ３００Ａのマッチフラグレジスタ１５３Ａの値は、マッチ出力端子１１７ＡからＭＣＵ３００Ｂのマッチ入力端子１１６Ｂに伝えられる。よって、ＭＣＵ３００Ａ及びＭＣＵ３００Ｂにおいて、リセット信号が‘１’となって、ＭＣＵ３００ＡとＭＣＵ３００Ｂのカウンタ１５０とマッチフラグレジスタ１５３が‘０’にリセットされる。このように、同期動作によるリセット処理が開始される。
【００９５】
時刻ｔ２０で、ＭＣＵ３００Ａのカウンタ１５０Ａの値が周期レジスタ１５１Ａの値と一致し、マッチフラグレジスタ１５３Ａの値が‘１’になる。そして、時刻ｔ２１で、ＭＣＵ３００Ｂのカウンタ１５０Ｂの値が周期レジスタ１５１Ｂの値と一致して、マッチフラグレジスタ１５３Ｂの値が‘１’になる。これにより、ＭＣＵ３００Ａ及びＭＣＵ３００Ｂにおいて、リセット信号が‘１’となって、ＭＣＵ３００ＡとＭＣＵ３００Ｂのカウンタ１５０とマッチフラグレジスタ１５３が‘０’にリセットされる。以降、このようにして同期動作によるリセット処理が周期的に継続される。
【００９６】
以上、実施の形態３について説明した。本実施の形態によれば、同期相手に異常が発生した場合、自装置のカウンタ１５０が制限値レジスタ３５０の設定値に到達したタイミングで、非同期なリセット動作に切り替えることができる。つまり、一方のＭＣＵ３００に異常が発生した場合であっても、他方のＭＣＵ３００は、同期タイマ１０９について所望の周期でリセットを行うことができる。したがって、正常なＭＣＵ３００は、自装置の同期タイマ１０９を利用した種々の制御を継続することができる。例えば、正常なＭＣＵ３００は、コンペアマッチタイマにより所望の周期により周期的に割り込み要求を発生させることができる。このように本実施の形態にかかる制御システム１０では、正常なＭＣＵ３００による片系による制御を行うことができる。
【００９７】
また、本実施の形態では、マッチ入力端子１１６に入力されたマッチ信号の値が‘１’となると、オーバフローフラグレジスタ３５２は‘０’にリセットされる。このため、ＭＣＵ３００Ａ、３００Ｂのカウンタ１５０がいずれも正常にカウントを行う状態となると、システムは、非同期のリセット動作が行われる状態から、同期をとったリセット動作が行われる状態へと移行することができる。このため、ＭＣＵ３００Ａのカウンタ１５０Ａのカウントの開始タイミングとＭＣＵ３００Ｂのカウンタ１５０Ｂのカウントの開始タイミングとが異なる場合や、いずれかのＭＣＵ３００が故障から復帰した場合に、システムは同期をとったリセット動作が行われる状態へと移行することができる。
【００９８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００９９】
１    半導体装置
２、１０５    クロック発振器
３、１３０、１３１、１５０    カウンタ
４、１５１    周期レジスタ
５、１５２、３５１    比較回路
６、１５３    マッチフラグレジスタ
７、１１７    マッチ出力端子
８、１１６    マッチ入力端子
９、１５４    リセット回路
１０    制御システム
１１    制御ユニット
１２    アクチュエータ
１３Ａ、１３Ｂ    センサ
１０６    割り込みコントローラ
１０７、２０１    コンペアマッチタイマ
１０８、２０２    パルス発生回路
１０９、３０１    同期タイマ
３５０    制限値レジスタ
３５２    オーバフローフラグレジスタ
５００Ａ、５００Ｂ    駆動回路
【図１】
2018092423.tif 000003
【図２】
2018092423.tif 000004
【図３】
2018092423.tif 000005
【図４】
2018092423.tif 000006
【図５】
2018092423.tif 000007
【図６】
2018092423.tif 000008
【図７】
2018092423.tif 000009
【図８】
2018092423.tif 000010
【図９】
2018092423.tif 000011
【図１０】
2018092423.tif 000012
【図１１】
2018092423.tif 000013
【図１２】
2018092423.tif 000014
【図１３】
2018092423.tif 000015
【図１４】
2018092423.tif 000016
【図１５】
2018092423.tif 000017