(57)【要約】【課題】アドレスバスが外来ノイズの影響を受けて変動し、偶然に重要な制御レジスタに対して不正なストアアクセスが生じても、不正アクセスを検出する手段により制御レジスタの誤書き替えを禁止できるマイクロコントローラを提供する。【解決手段】モードレジスタ１６０へストアアクセスを行う専用ストア命令を命令セットに有し、前記専用ストア命令の実行可能なＣＰＵ１１０と、前記ＣＰＵ１１０による前記専用ストア命令の実行を監視するモードレジスタアクセス制御器１８０により、ＣＰＵ１１０の命令コードを監視し、前記専用ストア命令の実行が確認された場合だけモードレジスタライトイネーブル信号１５１をアサートし、前記モードレジスタ１６０へのストア動作を許可するようにマイクロコントローラを構成する。【選択図】　　　図１
2004062550.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタと、
前記制御レジスタへ前記制御データをストアするための専用ストア命令を有するＣＰＵと、
前記専用ストア命令を監視して前記専用ストア命令であれば専用ストア命令検出信号を出力する検出回路と、
前記専用ストア命令検出信号と、前記ＣＰＵが前記専用ストア命令実行時に行うストアアドレス演算結果により前記制御レジスタへのストアアクセスであると判定したことにより発行される前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可する命令アクセス制御器と
を備えたマイクロコントローラ。
【請求項２】
前記命令アクセス制御器は、
専用ストア命令検出信号とライトイネーブル信号のどちらか一方のみがアサートされたときは、前記制御レジスタへ誤ったストアアクセス要求が生じたとみなし、エラーフラグを前記ＣＰＵに返すライトアクセス制御器を備えた
請求項１記載のマイクロコントローラ。
【請求項３】
前記制御レジスタは、個別のアドレスに配置された機能の異なるｍ個（ｍは複数）の制御レジスタからなり、
前記ＣＰＵは、前記ｍ個の制御レジスタのそれぞれに個別対応して前記制御データをストアするための異なるｍ個の専用ストア命令を有する
請求項１記載のマイクロコントローラ。
【請求項４】
前記制御レジスタは、ｍ個（ｍは複数）の制御データフィールドから成るｎ（ｎは複数で、ｎ＝ｍまたはｎ≠ｍ）ビット幅制御レジスタであり、前記ＣＰＵは、前記ｍ個の制御データフィールドの書き換えに一対一に対応したｍ個の専用ストア命令を有し、
かつ、前記ｎビット幅制御レジスタのうち前記専用ストア命令が対応する制御データフィールドのみに対してストアアクセスするアクセス制御器を備え、
前記ｍ個の制御データフィールドおよび前記ｍ個の専用ストア命令について前記専用ストア命令検出信号と前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可するよう構成した
請求項１記載のマイクロコントローラ。
【請求項５】
マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタにおいて、前記制御レジスタの制御データリセットをハードウェア処理するように構成し、専用ストア命令のフェッチ検出結果を前記制御レジスタのセットデータとして前記制御レジスタに入力するように構成したマイクロコントローラ。
【請求項６】
請求項１記載のマイクロコントローラのＣＰＵが実行するプログラムをプログラム格納メモリに書き込むために使用するアセンブル装置であって、
前記ＣＰＵで使用可能な命令セットを用いてアセンブラ記述されているソースコードを、拡張命令コードテーブルを参照し制御レジスタの物理アドレスに対応した専用の中間命令コードまたは固有の中間命令コードに変換する拡張アッセンブラと、
拡張アッセンブラからの命令コードをリンクテーブル・レジスタマップを参照して前記ＣＰＵで実行可能な実アドレスに対応した命令コードに変換して前記プログラム格納メモリに書き込むリンケージエディタと
を備えたアセンブル装置。
【請求項７】
ストア命令に続くアクセスアドレスを判別して通常のストア命令に対応するストア命令コードと、専用ストア命令に対応する専用ストア命令コードを切り換えて生成する
請求項６記載のアセンブル装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコントローラに関するものである。
【０００２】
【従来の技術】
ロードストアアーキテクチャのＣＰＵを備えるマイクロコントローラでは、一般に、ＣＰＵ，周辺機能回路を制御する制御レジスタは、データバス幅以下の任意のビット長を有し、ロード／ストア命令によりリード／ライト可能なフリップフロップで構成され、ＣＰＵからアクセス可能なアドレス空間の一部に配置される。
【０００３】
一部の制御レジスタには、ＣＰＵや周辺機能回路の動作モードを決定する重要な制御データが格納されている場合がある。例えば、ＣＰＵおよびメインクロックを停止してサブクロックに制御を移すＨＡＬＴモード，ＣＰＵ，メインクロックおよびサブクロックの全てを停止するＳＴＯＰモードなどの動作モードを制御するレジスタなどである。
【０００４】
このような制御レジスタに対する制御データのストアアクセス動作について、図を用いて説明する。
図８は１チップマイクロコントローラに内蔵する制御レジスタとしてのモードレジスタへのストアアクセスを行う回路についてのブロック図である。
【０００５】
８００は、１チップマイクロコントローラである。
８１０はＣＰＵである。ここでは説明の便宜上、固定命令長、固定データ長の命令コードの実行に対応した５段パイプライン動作のＣＰＵを例にして説明する。
【０００６】
ＣＰＵ８１０は、命令コードを取り込む命令フェッチ部８１０ａと、命令コードを解読してマイクロコードに変換する命令デコーダ部８１０ｂと、マイクロコードによる命令にしたがって演算ならびに制御信号の出力を行う命令実行部８１０ｃなどから構成される。
【０００７】
１２０ａはＲＯＭデータバスである。主に命令コード、制御データの転送に使用され、プログラム格納メモリ１３０とＣＰＵ８１０との間を接続する。プログラム格納メモリ１３０は、ＣＰＵ８１０が実行可能なバイナリ化された命令コードを格納する。
【０００８】
１２０ｂはＲＡＭデータバスである。ＣＰＵ８１０とモードレジスタ１６０との間などを接続する。ＲＯＭデータバス１２０ａとＲＡＭデータバス１２０ｂはデータバススイッチ１２０ｃにより接続と分離がコントロールされる。
【０００９】
１２１ａはＲＯＭアドレスバス、１２１ｂはＲＡＭアドレスバスである。それぞれプログラム格納メモリ１３０、モードレジスタ１６０などのアドレスなどの転送に使用される。ＲＯＭデータバス１２０ａ、ＲＡＭデータバス１２０ｂと同様の構成で、ＲＯＭアドレスバス１２１ａとＲＡＭアドレスバス１２１ｂとがアドレスバススイッチ１２１ｃにより接続と分離がコントロールされる。
【００１０】
１１５はライトイネーブル信号である。ライトイネーブル信号１１５はストア命令などのＣＰＵからメモリ転送命令が実行されたときアサートされる。
１１６はアドレス、１１８は制御データである。それぞれＲＡＭアドレスバス１２１ｂ、ＲＡＭデータバス１２０ｂに接続されている。
【００１１】
１４０はモードレジスタアドレス比較器で、比較器１４１とホールド回路１４２とで構成される。比較器１４１はＲＡＭアドレスバス１２１ｂに接続され、ＣＰＵ８１０から出力されるアドレス１１６がモードレジスタのアドレスと一致するとき、モードレジスタアドレス一致信号１４１ａを出力し、ホールド回路１４２によって同期化されモードレジスタアドレス一致ホールド信号１４３を出力する。
【００１２】
８５０はライトクロック制御器で、モードレジスタアドレス一致ホールド信号１４３と、ライトイネーブル信号１１５がアサートされているとき、基準クロックであるシステムクロックに同期してモードレジスタライトクロック８５１を生成する。
【００１３】
１６０はＲＡＭデータバス１２０ｂのバス幅以下の任意のビット幅のデータフィールドを有するモードレジスタである。ＣＰＵ８１０のアドレス空間（ここでは、８１０２ｈとする）に割り付けられ、ロード／ストア命令によりリード／ライトできるフリップフロップで構成されたレジスタである。一つ以上のデータフィールドから構成される。モードレジスタライトクロック８５１の立ち上がりエッジに同期して、全データフィールドがＲＡＭデータバス１２０ｂのデータをラッチする。
【００１４】
１６１ａはＨＡＬＴフラグフィールドである。ＣＰＵ８１０、クロックコントローラ１７０の動作モードを決定する制御データの格納される任意のビット幅のデータフィールドである。
【００１５】
１６１ｂはＳＴＯＰフラグフィールドである。ＣＰＵ８１０、クロックコントローラ１７０の動作モードを決定する制御データの格納される任意のビット幅のデータフィールドである。
【００１６】
１６１ｃはその他の機能を制御するデータが格納される任意のビット幅のデータフィールドである。
１６１ａ、１６１ｂ、１６１ｃはＲＡＭデータバス１２０ｂから見たとき、ビットポジションが重ならないように配置されている。
【００１７】
１６２ａはＨＡＬＴモード制御信号、１６２ｂはＳＴＯＰモード制御信号である。モードレジスタ１６０のＨＡＬＴフラグフィールド１６１ａ、ＳＴＯＰフラグフィールド１６１ｂから常に出力され続け、ＣＰＵ８１０、クロックコントローラ１７０などの動作モードを制御する。
【００１８】
１７０はクロックコントローラで、基準クロックである前記システムクロックを出力する。このシステムクロックは、ＣＰＵ８１０、モードレジスタアドレス比較器１４０、ライトクロック制御器８５０にそれぞれ供給される。クロックコントローラ１７０の動作モードは、モードレジスタ１６０に保持されたＨＡＬＴモード制御信号１６２ａ，ＳＴＯＰモード制御信号１６２ｂにより決定、維持される。
【００１９】
マイクロコントローラ８００における、そのストア命令の詳細動作について説明する。
図９はモードレジスタ１６０（ｍｏｄ＿ｒｅｇ）へ制御データ（ｄａｔａ２）をストアする命令（ｓｔｒ）、”ｓｔｒ　ｄａｔａ２，（ｍｏｄ＿ｒｅｇ）”の動作について示したタイミングチャートである。ＣＰＵ８１０のパイプライン動作を基準に示している。
【００２０】
図９（ａ）はＣＰＵ８１０、図９（ｂ）は前記システムクロック、　図９（ｃ）はＲＯＭアドレスバス１２１ａ、　図９（ｄ）はＲＯＭデータバス１２０ａ、　図９（ｅ）はＲＡＭアドレスバス１２１ｂ、　図９（ｆ）はＲＡＭデータバス１２０ｂ、　図９（ｇ）はライトイネーブル信号１１５、　図９（ｈ）は比較器１４１、　図９（ｉ）はモードレジスタアドレス一致信号１４１ａ、　図９（ｊ）はモードレジスタライトクロック８５１、　図９（ｏ）はモードレジスタ１６０の各動作を表している。
【００２１】
（サイクル０）
ＣＰＵ８１０から、次に実行すべき命令コードの格納されたアドレスをＲＯＭアドレスバス１２１ａに出力するとともに、プログラム格納メモリ１３０に対してデータ読み出し動作を開始する（図９（ｃ））。
【００２２】
（サイクル１）
プログラム格納メモリ１３０からプログラムコードが出力され、ＲＯＭデータバス１２０ａ経由でＣＰＵ８１０の命令フェッチ部８１０ａに取り込まれる。取り込んだプログラムコードはプリデコードされ、命令コードと、データコードに分けられる。また、取り込んだ命令コードは命令フェッチ部８１０内の命令レジスタに保持される（図９（ｄ））。
【００２３】
（サイクル２）
命令デコーダ部８１０ｂによりフェッチされた命令コード”４０”を解読、ｓｔｒ命令と判定するとともに、命令実行部８１０ｃを制御するためのマイクロコードを発行する。
【００２４】
また、同時に、データコードが制御データ、ストア先アドレスに分離されて命令実行部８１０ｃに渡される。
（サイクル３）
マイクロコードに基づき、命令が実行される。また、ストア先アドレスの空間判定を行い、アドレスバススイッチ１２１ｃを制御するとともにストアアドレスを生成し、演算装置にストアデータをセットする。
【００２５】
（サイクル４）〜（サイクル６）
ＲＡＭアドレスバス１２１ｂ、ＲＡＭデータバス１２０ｂにストアアドレス、ストアデータを出力する（図９（ｅ）（ｆ））。
【００２６】
さらにｓｔｒ命令の実行によりＣＰＵ８１０からライトイネーブル信号１１５をアサートする（図９（ｇ））。
また、比較器１４１では、アクセスアドレスを毎サイクル監視し、ＣＰＵモードレジスタ１６０のアドレスと一致するとき、モードレジスタアドレス一致信号１４１ａをアサートする（図９（ｈ）（ｉ））。
【００２７】
モードレジスタアドレス一致信号１４１ａアサート後、次システムクロックの立ち上がりエッジからストアデータがＲＡＭデータバス１２０ｂに出力され、次システムクロックの立ち上がりエッジでライトクロック制御器８５０からモードレジスタライトクロック８５１が出力される（図９（ｊ））。
【００２８】
（サイクル６）において、システムクロック立下りでライトイネーブル信号１１５がネゲートされた事を受け、次の立ち上がりクロックにてＣＰＵモードレジスタライトクロック８５１がネゲートされ、同時にＲＡＭデータバス１２０ｂのストアデータがモードレジスタ１６０にストアされる（図９（ｏ））。
【００２９】
以上のようにストアされたデータにより、ＨＡＬＴモード制御信号１６２ａ、ＳＴＯＰモード制御信号１６２ｂが更新され、クロックコントローラ１７０やＣＰＵ８１０などの動作モードが確定、変更される。
【００３０】
【発明が解決しようとする課題】
このような構成においては、外来ノイズ等の影響を受けて前記モードレジスタ１６０の制御データが破壊されると、マイクロコントローラ８００は暴走状態に陥いる可能性がある。
【００３１】
図８のマイクロコントローラ８００において、データバス１２０ａ，１２０ｂ、アドレスバス１２１ａ，１２１ｂは一般に配線長が長く、双方向バスであればタイミングによってはバスフローティングになることもあり、外来ノイズ１９０の影響をもっとも受けやすい部分である。
【００３２】
マイクロコントローラ８００に外来ノイズ１９０が侵入すると、バス駆動源からの出力値に関係なくＲＯＭデータバス１２０ａ、ＲＡＭデータバス１２０ｂ、ＲＯＭアドレスバス１２１ａおよび、ＲＡＭアドレスバス１２１ｂの信号レベルは大きく変動する。ノイズの影響がなくなれば、やがてバスの信号レベルはバス駆動源からの出力値に戻る。
【００３３】
このような外来ノイズが、モードレジスタ１６０の書き換えタイミングに侵入すると、モードレジスタ１６０へのデータ誤書き込みを引き起こす場合がある。図１０は、このような外来ノイズによる制御レジスタ誤書き込みの一例である。
【００３４】
図１０（ａ）はＣＰＵ８１０、図１０（ｂ）は前記システムクロック、　図１０（ｃ）はＲＯＭアドレスバス１２１ａ、　図１０（ｄ）はＲＯＭデータバス１２０ａ、　図１０（ｅ）はＲＡＭアドレスバス１２１ｂ、　図１０（ｆ）はＲＡＭデータバス１２０ｂ、　図１０（ｇ）はライトイネーブル信号１１５、　図１０（ｈ）は比較器１４１、　図１０（ｉ）はモードレジスタアドレス一致信号１４１ａ、　図１０（ｊ）はモードレジスタライトクロック８５１、　図１０（ｏ）はモードレジスタ１６０の各動作を表している。
【００３５】
図１０のように、モードレジスタ１６０ではない、別の制御レジスタ（ｏｔｈｅｒ＿ｒｅｇ）に対するストア命令を実行中のとき、ライトイネーブル信号１１５がアサートされている期間で、かつ前記システムクロックのエッジに重なるように外来ノイズ１９０が侵入し、データバス１２０ｂ、アドレスバス１２１ｂの信号レベルの変動が生じたとする（図１０（ｅ）（ｆ））。
【００３６】
アドレスバス１２１ｂが変動し、瞬間的にモードレジスタ１６０のアドレスと一致すると、モードレジスタアドレス比較器１４０の比較器１４１は、モードレジスタアドレス一致信号１４１ａを瞬間的にアサートすることがある（（図９（ｈ））。ホールド回路１４２が前記システムクロックのエッジでこの瞬間的な信号をラッチしてしまうと、モードレジスタ一致ホールド信号１４３を誤ってアサートすることになる（図９（ｉ））。
【００３７】
この後の動作は、図９に示すモードレジスタ１６０へのストア動作と同様に実行される。
しかし、本来のプログラム実行によるものではないストア命令実行であり、書き込まれたデータによってはＨＡＬＴ・ＳＴＯＰモードを制御するデータフィールドが誤ったデータに変更され、前記システムクロック、ＣＰＵ８１０ともに停止し、マイクロコントローラ８００がデッドロックしてしまうことがある。
【００３８】
なお、このような制御レジスタの誤書き換えを防止する一般的な技術として、制御レジスタを冗長化することで、外来ノイズ等によりレジスタデータの一部が破壊されても、最終的な制御データを冗長化し、制御値の多数決一致結果によりリカバリする技術が、特開平４−３０４５８２号公報などにも示されている。
【００３９】
しかし、外来ノイズの影響をもっとも受けやすい内部バスにノイズ変動が生じた場合、ストアアドレスを判定するアドレスデコーダのミスラッチを引き起こし、本来のアクセスアドレスとは異なるライトクロックを生成してしまう。同一のライトクロックで全ての冗長化レジスタへストア動作を行うように構成しているため、このようなアドレスバス変動によって冗長化レジスタ全てに対してストアアクセスが生じ、その結果、冗長化レジスタ全てのデータが書き換わってしまう。このため、冗長レジスタ構成ではアドレスバス、データバス変動に起因するレジスタ誤書き換えに対しては防止効果が得られない。
【００４０】
本発明は、マイクロコントローラ内のアドレスバスが外来ノイズの影響を受けて変動し、偶然に重要な制御レジスタ（＝モードレジスタ１６０）に対して不正なストアアクセスが生じても、制御レジスタの誤書き替えを禁止することができるマイクロコントローラを提供することを目的とする。
【００４１】
【課題を解決するための手段】
本発明のマイクロコンピュータが備えるＣＰＵは、命令セットに、特定の制御レジスタにストア動作を行うための専用ストア命令を備え、従来のストア命令同様に、ストアアドレスに基づいて該当する前記制御レジスタのライトクロックを生成するとともに、前記ＣＰＵにおいて前記専用ストア命令の命令コードのフェッチが確認された場合だけ、ライトクロックを前記制御レジスタへ入力し、ストア動作を許可するように構成している。また、前記ＣＰＵに対応したアセンブル装置により前記専用ストア命令に対応した命令コードを生成する。
【００４２】
本発明の請求項１記載のマイクロコントローラは、マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタと、前記制御レジスタへ前記制御データをストアするための専用ストア命令を有するＣＰＵと、前記専用ストア命令を監視して前記専用ストア命令であれば専用ストア命令検出信号を出力する検出回路と、前記専用ストア命令検出信号と、前記ＣＰＵが前記専用ストア命令実行時に行うストアアドレス演算結果により前記制御レジスタへのストアアクセスであると判定したことにより発行される前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可する命令アクセス制御器とを備えたことを特徴とする。
【００４３】
本発明の請求項２記載のマイクロコントローラは、請求項１において、前記命令アクセス制御器は、専用ストア命令検出信号とライトイネーブル信号のどちらか一方のみがアサートされたときは、前記制御レジスタへ誤ったストアアクセス要求が生じたとみなし、エラーフラグを前記ＣＰＵに返すライトアクセス制御器を備えたことを特徴とする。
【００４４】
本発明の請求項３記載のマイクロコントローラは、請求項１において、前記制御レジスタは、個別のアドレスに配置された機能の異なるｍ個（ｍは複数）の制御レジスタからなり、前記ＣＰＵは、前記ｍ個の制御レジスタのそれぞれに個別対応して前記制御データをストアするための異なるｍ個の専用ストア命令を有することを特徴とする。
【００４５】
本発明の請求項４記載のマイクロコントローラは、請求項１において、前記制御レジスタは、ｍ個（ｍは複数）の制御データフィールドから成るｎ（ｎは複数で、ｎ＝ｍまたはｎ≠ｍ）ビット幅制御レジスタであり、前記ＣＰＵは、前記ｍ個の制御データフィールドの書き換えに一対一に対応したｍ個の専用ストア命令を有し、かつ、前記ｎビット幅制御レジスタのうち前記専用ストア命令が対応する制御データフィールドのみに対してストアアクセスするアクセス制御器を備え、前記ｍ個の制御データフィールドおよび前記ｍ個の専用ストア命令について前記専用ストア命令検出信号と前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可するよう構成したことを特徴とする。
【００４６】
本発明の請求項５記載のマイクロコントローラは、マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタにおいて、前記制御レジスタの制御データリセットをハードウェア処理するように構成し、専用ストア命令のフェッチ検出結果を前記制御レジスタのセットデータとして前記制御レジスタに入力するように構成したことを特徴とする。
【００４７】
本発明の請求項６記載のアセンブル装置は、請求項１記載のマイクロコントローラのＣＰＵが実行するプログラムをプログラム格納メモリに書き込むために使用するアセンブル装置であって、前記ＣＰＵで使用可能な命令セットを用いてアセンブラ記述されているソースコードを、拡張命令コードテーブルを参照し制御レジスタの物理アドレスに対応した専用の中間命令コードまたは固有の中間命令コードに変換する拡張アッセンブラと、拡張アッセンブラからの命令コードをリンクテーブル・レジスタマップを参照して前記ＣＰＵで実行可能な実アドレスに対応した命令コードに変換して前記プログラム格納メモリに書き込むリンケージエディタとを備えたことを特徴とする。
【００４８】
本発明の請求項７記載のアセンブル装置は、請求項６において、ストア命令に続くアクセスアドレスを判別して通常のストア命令に対応するストア命令コードと、専用ストア命令に対応する専用ストア命令コードとを切り換えて生成するよう構成したことを特徴とする。
【００４９】
【発明の実施の形態】
以下、本発明の各実施の形態を図１〜図７に基づいて説明する。
（実施の形態１）
図１は、本発明における（実施の形態１）によるマイクロコントローラの構成図である。
【００５０】
図１において、図８と同一符号の構成要素は図８での説明と変わりないためここでは説明を省略する。
１００はマイクロコントローラである。
【００５１】
１１０はマイクロコントローラ１００のＣＰＵである。ＣＰＵ８００と同様に、ここでは説明の便宜上、固定命令長、固定データ長の命令コードの実行に対応した５段パイプライン動作のＣＰＵであるとして説明する。
【００５２】
ＣＰＵ１１０は命令コードを取り込む命令フェッチ部１１０ａ、命令コードを解読しマイクロコードに変換する命令デコーダ部１１０ｂ、マイクロコードによる命令にしたがって演算と制御信号の出力を行う命令実行部１１０ｃなどから構成される。
【００５３】
命令デコーダ部１１０ｂ、命令実行部１１０ｃは、後述するモードレジスタ専用ストア命令（ｍｓｔｒ命令）の命令コードのデコードおよび命令実行可能なように、命令デコーダ部８１０ｂ、命令実行部８１０ｃを拡張したものである。
【００５４】
本発明によるＣＰＵ１１０は、重要な制御レジスタ、例えばモードレジスタにストアアクセスするための専用命令であるｍｓｔｒ命令を命令セットに備えている。通常のｓｔｒ命令がアドレス判定によるレジスタアクセスであることに対して、アドレス判定によるレジスタアクセス信号を、さらに専用ストア命令のフェッチ検出結果で許可／不許可するように構成している。ｍｓｔｒ命令は、図７に示す専用の拡張命令コードテーブル７２２を備えたアセンブル装置７２０でユニークな命令コード（７２２ｂ）に変換される。
【００５５】
命令フェッチ部１１０ａからはフェッチした命令コード１１７が出力される。１５０はライトイネーブル制御器である。モードレジスタアドレス一致ホールド信号１４３とライトイネーブル信号１１５がともにアサートされているとき、モードレジスタライトイネーブル信号１５１をアサートする。
【００５６】
１８０はモードレジスタアクセス制御器である。ｍｓｔｒ命令検出回路１８１、命令アクセス検出器１８２で構成される。
さらに、命令アクセス検出器１８２は遅延回路１８３、ライトアクセス制御回路１８４で構成される。
【００５７】
ｍｓｔｒ命令検出回路１８１には命令フェッチ部１１０ａからの命令コード１１７が入力され、命令コードがｍｓｔｒ命令に一致するときｍｓｔｒ命令検出信号１８１ａがアサートされる。
【００５８】
遅延回路１８２は、命令フェッチサイクルで検出したｍｓｔｒ命令検出信号１８１ａをライトアクセスの判定を行うレジスタ書き込みサイクルまで遅延させる回路である。
【００５９】
ライトアクセス制御器１８４は、ライトイネーブル制御器１５０からのモードレジスタライトイネーブル信号１５１と、遅延後のｍｓｔｒ命令検出信号１８１ａの両方がアサートされたときにモードレジスタ１６０へのストアアクセスが発生したとみなし、システムクロックに同期して、ｍｓｔｒ命令ライトクロック１８５をアサートする。
【００６０】
また、１８６はエラーフラグである。ｍｓｔｒ命令検出信号１８１ａがアサートされていないにも関わらずモードレジスタライトイネーブル信号１５１がアサートされた場合、誤ったストアアクセスが生じたことを示す信号をＣＰＵ１１０に対して発行する。
【００６１】
ｍｓｔｒ命令ライトクロック１８５は、ライトイネーブル信号１１５がネゲートされた次のシステムクロックの立ち上がりでネゲートされ、そのときのｍｓｔｒ命令ライトクロック１８５の立ち上がりエッジでモードレジスタ１６０はＲＡＭデータバス１２０ｂのデータをラッチする。
【００６２】
図２は図１に示すマイクロコントローラ１００においてモードレジスタ専用ストア命令（ｍｓｔｒ命令）によりモードレジスタ１６０に対してデータストアを実行したときのタイミングチャートである。
【００６３】
（サイクル０）
ＣＰＵ１１０から、次に実行すべき命令コードの格納されたアドレスを、図２（ｃ）に示すようにＲＯＭアドレスバス１２１ａに出力するとともに、プログラム格納メモリ１３０に対してデータ読み出し動作を開始する。
【００６４】
（サイクル１）
プログラム格納メモリ１３０からプログラムコードが出力され、ＲＯＭデータバス１２０ａ経由でＣＰＵ１１０の命令フェッチ部１１０ａに取り込まれる。取り込んだプログラムコードはプリデコードされ、命令コード１１７と、データコードに分けられる。また、取り込んだ命令コードは命令フェッチ部１１０ａの命令レジスタに保持される（図２（ｄ））。
【００６５】
一方、命令フェッチ部１１０ａからは”５０”の値の命令コード１１７が出力され、モードレジスタアクセス制御器１８０のｍｓｔｒ命令検出回路１８１に入力される。直ちに命令比較が行われ、命令コード”５０”に一致する場合、図２（ｌ）に示すようにｍｓｔｒ命令検出信号１８１ａが出力される。
【００６６】
（サイクル２）
命令デコーダ部１１０ｂによりフェッチされた命令コード”５０”を解読、ｍｓｔｒ命令と判定するとともに、命令実行部１１０ｃを制御するためのマイクロコードを発行する。
【００６７】
また、同時に、データコードが制御データ、ストア先アドレスに分離されて命令実行部１１０ｃに渡される。
（サイクル３）
マイクロコードに基づき、命令が実行される。また、実行先アドレスの空間判定を行い、アクセスアドレスを発行するとともに、演算装置にストアデータをセットする。
【００６８】
（サイクル４）
モードレジスタ１６０を示すアドレスが、図２（ｅ）に示すようにＲＡＭアドレスバス１２１ｂに出力され、同時にモードレジスタアドレス比較器１４０の比較器１４１から、図２（ｈ）に示すように、ＲＡＭアドレスバス１２１ｂのアドレスがモードレジスタ１６０のアドレスと一致したことを示すモードレジスタアドレス一致信号１４１ａが図２（ｉ）に示すようにアサートされ、図２（ｋ）に示すモードレジスタライトイネーブル信号１５１がアサートされる。また、ｍｓｔｒ命令の実行によりシステムクロックの立ち上がりで、図２（ｇ）に示すようにライトイネーブル信号１１５がアサートされる。
【００６９】
（サイクル５）
モードレジスタ１６０へのストアデータが図２（ｆ）に示すようにＲＡＭデータバス１２０ｂに出力されるとともに、モードレジスタアクセス制御器１８０の遅延回路１８２からのｍｓｔｒ命令検出信号１８１ａが図２（ｌ）に示すように命令アクセス制御器１８２に入力される。モードレジスタライトイネーブル信号１５１と、図２（ｍ）に示す遅延後のｍｓｔｒ命令検出信号１８１ａの両方がアサートされたときにモードレジスタ１６０へのストアアクセスが発生したとみなし、前記システムクロックに同期して、図２（ｎ）に示すようにｍｓｔｒ命令ライトクロック１８５をアサートする。
【００７０】
（サイクル６）
前記システムクロックの立ち上がりエッジでライトイネーブル信号１１５がネゲートされ（図２（ｇ））、これによりモードレジスタライトイネーブル信号１５１がネゲートされると（図２（ｋ））、次の前記システムクロックでｍｓｔｒ命令ライトクロック１８５がネゲートされる（図２（ｎ））。と同時にこの信号をデータセットクロックとしてモードレジスタ１６０にＲＡＭデータバス１２０ｂのデータがストアされる。
【００７１】
以上のようにストアされたデータにより、ＨＡＬＴモード制御信号１６２ａ、ＳＴＯＰモード制御信号１６２ｂが更新され、クロックコントローラ１７０やＣＰＵ８１０などの動作モードが確定、変更される。
【００７２】
以上のように、ｍｓｔｒ命令は命令フォーマット、実行サイクル数、レジスタストアタイミングなどｓｔｒ命令と全く同一になるように構成され、ソフト的に特別の手続きを必要とせずに、高い保護レベルのレジスタストアアクセスを実現可能である。
【００７３】
また、本命令はストアアクセスに特化したものであり、読み出し動作を行うためには通常のロード命令を使用すれば良い。
次に、本発明によるマイクロコントローラ１００のレジスタストアアクセス中に外来ノイズが侵入した場合の動作について説明する。
【００７４】
図３はマイクロコントローラ１００において、別の制御レジスタ（ｏｔｈｅｒ＿ｒｅｇ）にｄａｔａ２をストアするためにｓｔｒ命令を実行したときの動作を示したタイミングチャートである。
【００７５】
実行する命令は図１０に示した従来例と同一のものであり、その命令実行によるＣＰＵ１１０の動作は基本的に、従来例と同様である。
ここでは説明簡略のため、従来例とは異なる本発明に関わる部分についてのみ説明する。
【００７６】
（サイクル１）
プログラム格納メモリ１３０からプログラムコードが出力され、ＲＯＭデータバス経由でＣＰＵ１１０の命令フェッチ部１１０ａに取り込まれる。取り込んだプログラムコードはプリデコードされ、命令コードと、データコードに分けられる。また、取り込んだ命令コードは命令レジスタに保持される（図３（ｄ））。
【００７７】
このとき、命令フェッチ部１１０ａからは”４０”の値の命令コード１１７が出力され、ＣＰＵモードレジスタアクセス制御器１８０のｍｓｔｒ命令検出回路１８１に入力される。直ちに命令比較が行われ、ｍｓｔｒ命令に不一致のため、ｍｓｔｒ命令検出信号１８１ａはアサートされない（図３（ｌ））。
【００７８】
（サイクル５〜６）
モードレジスタアドレス比較器１４０のホールド回路１４２がデータラッチするタイミング前後で、マイクロコントローラ１００に外来ノイズ１９０が侵入して、ＲＡＭデータバス１２０ｂ、ＲＡＭアドレスバス１２１ｂが変動し（図３（ｅ）（ｆ））、瞬間的にＲＡＭアドレスバスがモードレジスタ１６０のアドレスなどに変化したとする。モードレジスタアドレス比較器１４０の比較器１４１はこのアドレス変動に反応して瞬間的にアドレス一致信号１４１ａをアサートしてしまう。ホールド回路１４２のラッチタイミングでアドレス一致信号をミスアサートすると、ホールド回路１４２がデータをミスラッチし、モードレジスタアドレス一致ホールド信号１４３をミスアサートしてしまう（図３（ｉ））。また同時にモードレジスタライトイネーブル信号１５１もアサートされる（図３（ｋ））。
【００７９】
（サイクル６）
しかし、ｍｓｔｒ命令検出信号１８１ａがアサートされていないため、命令アクセス制御回路１８２のライトアクセス制御器１８４においてモードレジスタへのストアアクセスは不許可になり、ｍｓｔｒ命令ライトクロック１８５はアサートされず（図３（ｎ））、モードレジスタ１６０のデータが誤書き換えされることはない（図３（ｏ））。
【００８０】
以上のことから明らかなように、本発明の（実施の形態１）によれば重要な制御レジスタであるモードレジスタにストアアクセスするために、専用のストア命令を実行可能なＣＰＵと命令検出器を構成し、重要な制御レジスタへのストアアクセスと一対一に対応させている。専用ストア命令は従来通りアクセスアドレスの判別による制御レジスタアクセスを行うが、加えて専用ストア命令の実行を監視・判定し、制御レジスタへのストアアクセスの許可条件にしている。このようにバスに比べノイズ耐性の高い経路からアクセス要求を作り出し、アクセス要求を２重化することでノイズ誤動作に対する耐性を上げることが可能になる。
【００８１】
また、本来アクセスしようとしていたレジスタ（ｏｔｈｅｒ＿ｒｅｇ）についても正しくストア動作が実行できていない可能性があり、このことが原因となってマイクロコントローラ１００は暴走状態に陥る可能性がある。しかし、ＨＡＬＴ／ＳＴＯＰモードなどの制御情報の格納された制御フィールドには正常時のデータが保持されており、デッドロックなどの復帰手段のない致命的な暴走モードに陥ることは回避できる。
【００８２】
なお、（実施の形態１）において図３のように別の制御レジスタへのストアアクセス中に侵入した外来ノイズの影響により、モードレジスタ１６０へのストアアクセス要求であるモードレジスタライトイネーブル信号１５１がアサートされたときでも、ｍｓｔｒ命令検出信号１８１ａはアサートされず、モードレジスタへのストアアクセスは不許可になるが、このときＣＰＵ１１０に対しエラーフラグ１８６を返し、マイクロコントローラ１００のシステムリセットを行うように構成しても良い。
【００８３】
エラーフラグ１８６がアサートされるということは、マイクロコントローラ１００がＣＰＵ１１０の命令通りに動作しておらず暴走状態にあることを示す。エラーフラグ１８６をシステムリセット要因にすることで、致命的な暴走状態に進行する前に速やかにシステムの初期化が行える。
【００８４】
（実施の形態２）
図４は本発明における（実施の形態２）によるマイクロコントローラの構成図の一例である。
【００８５】
図４において、図８、図１と同一符号の構成要素は図８、図１での説明と変わりないためここでは説明を省略する。
４００はマイクロコントローラである。
【００８６】
４１０はマイクロコントローラ４００のＣＰＵである。ＣＰＵ８００、１００と同様に、ここでは説明の便宜上、固定命令長、固定データ長の命令コードの実行に対応した５段パイプライン動作のＣＰＵであるとして説明する。
【００８７】
ＣＰＵ４１０は命令コードを取り込む命令フェッチ部１１０ａ、命令コードを解読し、マイクロコードに変換する命令デコーダ部４１０ｂ、マイクロコードによる命令にしたがって演算、制御信号の出力を行う命令実行部４１０ｃなどから構成される。
【００８８】
命令デコーダ部４１０ｂ、命令実行部４１０ｃはＨＡＬＴモードレジスタ専用ストア命令（ｈａｌｔ＿ｍｏｄ命令）およびＳＴＯＰモードレジスタ専用ストア命令（ｓｔｏｐ＿ｍｏｄ命令）の命令コードのデコードおよび命令実行可能なように、命令デコーダ部１１０ｂ、命令実行部１１０ｃを変更したものである。
【００８９】
４４３ａはＨＡＬＴモードレジスタアドレス一致信号である。ＲＡＭアドレスバス１２１ｂがＨＡＬＴモードレジスタアドレスと一致するとき前記システムクロックの立ち上がりエッジに同期してアサートされる。
【００９０】
４４３ｂはＳＴＯＰモードレジスタアドレス一致信号である。ＲＡＭアドレスバス１２１ｂがＳＴＯＰモードレジスタアドレスと一致するとき前記システムクロックの立ち上がりエッジに同期してアサートされる。
【００９１】
４５０ａ、４５０ｂはライトイネーブル制御器である。ライトイネーブル制御器１５０と同様に動作し、ＨＡＬＴモードレジスタライトイネーブル信号４５１ａおよびＳＴＯＰモードレジスタライトイネーブル信号４５１ｂをアサートする。
【００９２】
４８０ａはＨＡＬＴモードレジスタアクセス制御器、４８０ｂはＳＴＯＰモードレジスタアクセス制御器である。
４８０ａはＨＡＬＴモードレジスタアクセス制御器である。ｈａｌｔ＿ｍｏｄ命令検出回路４８１ａおよび、命令アクセス制御器１８２から構成される。ｈａｌｔ＿ｍｏｄ命令のフェッチを検出すると、ｈａｌｔ＿ｍｏｄ命令検出信号４８１ｃをアサートする。また、ｈａｌｔ＿ｍｏｄ命令検出信号４８１ｃが検出されないとき、ＨＡＬＴモードレジスタライトイネーブル信号４５１ａがアサートされると、エラーフラグ４８６ａをＣＰＵに返すように構成されている。
【００９３】
４８０ｂはＳＴＯＰモードレジスタアクセス制御器である。ｓｔｏｐ＿ｍｏｄ命令検出回路４８１ｂおよび、命令アクセス制御器１８２から構成される。ｓｔｏｐ＿ｍｏｄ命令のフェッチを検出すると、ｓｔｏｐ＿ｍｏｄ命令検出信号４８１ｄをアサートする。
また、ＳＴＯＰモードレジスタライトイネーブル信号４５１ｂが検出されないとき、ＳＴＯＰモードレジスタライトイネーブル信号４５１ｂがアサートされると、エラーフラグ４８６ｂをＣＰＵに返すように構成されている。
【００９４】
４８５ａはｈａｌｔ＿ｍｏｄ命令ライトクロック、４８５ｂはｓｔｏｐ＿ｍｏｄ命令ライトクロックである。
４６０ａ，４６０ｂはそれぞれ、ＨＡＬＴモードレジスタ、ＳＴＯＰモードレジスタである。この実施の形態では、ｍ個（ｍは複数）は２である。モードレジスタ１６０のＨＡＬＴフラグフィールド１６１ａ、ＳＴＯＰフラグフィールド１６１ｂをそれぞれ個別のアクセスアドレスを持つ制御レジスタとして構成したものである。
【００９５】
また、１６１ａはＨＡＬＴモード制御信号、１６１ｂはＳＴＯＰモード制御信号である。
このように構成されたマイクロコントローラ４００のＣＰＵ４１０において、ｈａｌｔ＿ｍｏｄ命令によりＨＡＬＴモードレジスタ４６０ａへのストア動作が実行されると、マイクロコントローラは（実施の形態１）と同様の動作でＨＡＬＴモードレジスタ４６０ａへのストア動作を行う。
【００９６】
ｓｔｏｐ＿ｍｏｄ命令によるＳＴＯＰモードレジスタ４６０ｂへのストア動作も（実施の形態１）と同様に実行される。
（実施の形態１）のモードレジスタ１６０は各種の制御対象を制御する制御データの集合体であるため、例えば、ＨＡＬＴフラグフィールド１６１ａの制御データのみを書きかえる場合、ＳＴＯＰフラグフィールド１６１ｂなどその他の制御データを破壊しないように、ＨＡＬＴフラグフィールド１６１ａの書き換え前にモードレジスタのデータを一旦読み出して、モードレジスタへの書き込みデータとＯＲ演算したデータを使用してモードレジスタへのストアを行うなどのソフトウェアによる前処理が必要になるが、この（実施の形態２）では、ＨＡＬＴモードレジスタ４６０ａとＳＴＯＰモードレジスタ４６０ｂは互いに異なるアクセスアドレスに割り当てられており、前記のような前処理は不要である。
また、ＨＡＬＴモードレジスタ、ＳＴＯＰモードレジスタを分離、別々のアクセスアドレスを割り付け、それぞれを専用のストア命令でアクセスするように構成しているため各レジスタに対するアクセス頻度を下げ、ノイズ誤動作に対する耐性をさらに向上させることが可能になる。
【００９７】
（実施の形態３）
図５は本発明における（実施の形態３）によるマイクロコントローラの構成図の一例である。
【００９８】
図５において、図８、図１および図４と同一符号の構成要素は図８、図１および図４での説明と変わりないためここでは説明を省略する。
５００はマイクロコントローラである。
【００９９】
５６０はＲＡＭデータバス１２０ｂのデータバス幅以下の任意のビット長のデータフィールドを有するモードレジスタである。（実施の形態２）に示すＨＡＬＴモードレジスタ４６０ａ、ＳＴＯＰモードレジスタ４６０ｂなどをまとめて、同一のレジスタアドレスに割り付けている。
【０１００】
制御レジスタ５６０の５６１ａ、５６１ｂは、それぞれＨＡＬＴフラグフィールド、ＳＴＯＰフラグフィールドである。この実施の形態では、フラグフィールド数ｍはｍ＝２である。各フラグフィールドの幅は任意で、制御レジスタ５６０全体では、ＲＡＭデータバス１２０ｂのバス幅以下のｎビット幅（ｎ＝ｍまたはｎ≠ｍ）で構成される。
【０１０１】
機能的にはＨＡＬＴモードレジスタ４６０ａ、ＳＴＯＰモードレジスタ４６０ｂと同様であるが、モードレジスタ５６０内でフラグフィールドのビットポジションが重ならないように配置されている。
【０１０２】
ｈａｌｔ＿ｍｏｄ命令、ｓｔｏｐ＿ｍｏｄ命令によるモードレジスタ５６０へのストアアクセスは（実施の形態１）と同様であるが、各フラグフィールドごとに専用のライトクロックが使用されるため、ストア対象以外のフラグフィールドはハードウェアによって書き換え動作をマスクすることが可能である。
【０１０３】
また、外来ノイズに対する耐性は（実施の形態２）に示すマイクロコントローラ４００と同等であるが、このように構成することで限られたアドレス空間を効率良く使用することが可能となる。
【０１０４】
（実施の形態４）
図６は本発明における（実施の形態４）によるマイクロコントローラの構成図の一例である。
【０１０５】
図６において、図８，図１，図４および図５と同一符号の構成要素は図８、図１、図４および図５での説明と変わりないためここでは説明を省略する。また、ＨＡＬＴフラグフィールド１６１ａにストアアクセスを行うための回路ブロックについてもここでは図示を省略する。
【０１０６】
６００はマイクロコントローラである。
６８０はＳＴＯＰモードレジスタアクセス制御器である。
６８１はｓｔｏｐ＿ｍｏｄ命令検出／保持回路である。（実施の形態２）におけるｓｔｏｐ＿ｍｏｄ命令検出回路４８１ａを拡張してあり、ＣＰＵ４１０においてｓｔｏｐ＿ｍｏｄ命令のフェッチを検出したときに、ｓｔｏｐ＿ｍｏｄ命令検出信号４８１ｄをアサートするとともに、ｓｔｏｐ＿ｍｏｄ命令保持信号６８１ｃをアサートする。
【０１０７】
モードレジスタ１６０は（実施の形態１）に示すモードレジスタと同一のものであるが、各フラグフィールドに対して、個別のライトクロックを接続している。ここでは、ＨＡＬＴフラグフィールド１６１ａ、ＳＴＯＰフラグフィールド１６１ｂはそれぞれ専用のストア命令によりライトアクセスが可能である。また、ここでは、その他の制御フィールド１６１ｃは専用のストア命令を必要としない制御フィールドとして構成しており、従来例と同様に通常のストア命令によりアクセス可能である。
【０１０８】
６６２は、ＳＴＯＰ復帰要因である。外部割込み、または外部リセットが入力されると、ＳＴＯＰフラグフィールド１６１ｂのデータはクリアされる。
また、ＳＴＯＰフラグフィールド１６１ｂの入力にはｓｔｏｐ＿ｍｏｄ命令検出／保持回路６８１ｂのｓｔｏｐ＿ｍｏｄ命令保持信号６８１ｃが接続される。
【０１０９】
以上のような構成によれば、ＳＴＯＰフラグフィールド１６１ｂへの制御データのセットは、ｓｔｏｐ＿ｍｏｄ命令保持信号６８１ｃによって行われるようになる。
【０１１０】
ＳＴＯＰフラグフィールド１６１ｂにデータセットを行うと、直ちにＳＴＯＰモードへの遷移が実行されＣＰＵ４１０、クロックコントローラ１７０は停止する。ＳＴＯＰモードから通常のＣＰＵ動作モードへ復帰するための手段は、外部割込みか、外部リセットのみになる。このためソフトウェア（ＣＰＵからの命令実行）によるＳＴＯＰフラグフィールド１６１ｂのクリアは不可能である。
【０１１１】
したがってＣＰＵ動作復帰時に、ＳＴＯＰ復帰要因６６２によってＳＴＯＰフラグフィールド１６１ｂをクリアするように回路を構成しておけばソフトからは制御データのセットしかできない回路構成であっても問題とならない。
【０１１２】
以上のように制御データセットのみができれば問題ないフラグフィールドについては、上記のように構成することでＲＡＭデータバス１２０ｂからのデータ入力が不要になり、外来ノイズによるデータバスの変動によるデータミスラッチの影響を排除できる。このため（実施の形態１）〜（実施の形態３）に対して、外来ノイズに対するノイズ耐性をさらに向上させることが可能になる。
【０１１３】
（実施の形態５）
図７に本発明によるアセンブル装置の構成およびアセンブルのフローを示す。７１０はアセンブラで記述されたソースコードである。ＣＰＵ１１０で使用可能な命令セットを用いて記述されている。
【０１１４】
７２０はアセンブル装置である。拡張命令コードテーブル７２２を参照し、ソースコードに記述された制御アドレスを参照し、専用の中間命令コードまたは固有の中間命令コードに変換する拡張アッセンブラ７２１を備える。
【０１１５】
また、拡張アッセンブラ７２１からの命令コードをリンクテーブル・レジスタマップ７２４を参照してマイクロコントローラ１００で実行可能な実アドレスに対応した命令コードに変換するリンカ（リンケージエディタ）７２３を備える。
【０１１６】
７３０はアセンブル結果のリストファイルである。リンカ７２３から出力される。ソースコード、命令コード、配置アドレスの情報から構成される。
７４０は命令コードである。１３０はプログラム格納メモリで、図１に記載のものと同一である。
【０１１７】
このように構成されたアセンブル装置７２０の動作について説明する。
ソースコード７１０は、そのコードの一部にその他の制御レジスタへのストア命令（７１０ａ）、モードレジスタ１６０へのストア命令を含んでいる（７１０ｂ）。ここではｓｔｒ命令のみが使用されている。
【０１１８】
ソースコードはアセンブル装置７２０で実行される。拡張アッセンブラ７２１でのｓｔｒ命令の変換は、命令に加えその転送先アドレスを判断して変換される。転送先アドレスによって、内部的にｓｔｒ命令、ｍｓｔｒ命令に置きかえる仕組みを備える。
【０１１９】
転送先アドレスの判断は、リンクテーブル・レジスタマップ７２４からのレジスタマップ情報を参照することで行われる。また、ｍｓｔｒ命令は、拡張命令コードテーブル７２２によって、ｓｔｒ命令とは異なる命令コードが割り付けられる（７２２ａ，７２２ｂ）。
【０１２０】
その後、リンカ７２３、リンクテーブル・レジスタマップ７２４によりマイクロコントローラ１００用の命令コード７４０および、リストファイル７３０が出力される。
【０１２１】
リストファイル７３０では、ソースコード（７１０ｂ）はリスト（７３０ｂ）のようにソースコード変換されて出力される。
以上のようなアセンブル装置を構成、提供することでプログラム作成者は専用命令（ｍｓｔｒ命令）をまったく意識することなく、ｍｓｔｒ命令を使用したプログラムの作成を行うことが可能になる。
【０１２２】
なお、この（実施の形態５）では（実施の形態１）のＣＰＵ１１０のアセンブル装置を例に挙げて説明したが、（実施の形態２）〜（実施の形態４）のＣＰＵ４１０の場合も同様である。
【０１２３】
【発明の効果】
以上のように本発明の請求項１記載のマイクロコントローラは、マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタと、前記制御レジスタへ前記制御データをストアするための専用ストア命令を有するＣＰＵと、前記専用ストア命令を監視して前記専用ストア命令であれば専用ストア命令検出信号を出力する検出回路と、　前記専用ストア命令検出信号と、前記ＣＰＵが前記専用ストア命令実行時に行うストアアドレス演算結果により前記制御レジスタへのストアアクセスであると判定したことにより発行される前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可する命令アクセス制御器とを備えたため、外来ノイズにより、専用ストア命令によるものではないモードレジスタへのストアアクセスを禁止することで、モードレジスタへの誤ったデータ書き込みを防止し、クロック停止モードなどへ誤って遷移することによるマイクロコントローラのデッドロックを防止する効果がある。
【０１２４】
また、本発明の請求項２記載のマイクロコントローラは、請求項１において、前記命令アクセス制御器は、専用ストア命令検出信号とライトイネーブル信号のどちらか一方のみがアサートされたときは、前記制御レジスタへ誤ったストアアクセス要求が生じたとみなし、エラーフラグを前記ＣＰＵに返すライトアクセス制御器を備えたため、ＣＰＵが実行した命令と実際のマイクロコントローラの動作の違いを検出し、システムリセットできるように構成したため、マイクロコントローラの動作状態を正常な状態に戻せる効果がある。
【０１２５】
また、本発明の請求項３記載のマイクロコントローラは、請求項１において、前記制御レジスタは、個別のアドレスに配置された機能の異なるｍ個（ｍは複数）の制御レジスタからなり、前記ＣＰＵは、前記ｍ個の制御レジスタのそれぞれに個別対応して前記制御データをストアするための異なるｍ個の専用ストア命令を有することを特徴とし、モードレジスタ１つに対するアクセス頻度が下がり、外来ノイズによるアドレスバス変動に対する誤動作耐性が増す効果がある。
【０１２６】
また、本発明の請求項４記載のマイクロコントローラは、請求項１において、前記制御レジスタは、ｍ個（ｍは複数）の制御データフィールドから成るｎ（ｎは複数で、ｎ＝ｍまたはｎ≠ｍ）ビット幅制御レジスタからなり、前記ＣＰＵは、前記ｍ個の制御データフィールドの書き換えに一対一に対応したｍ個の専用ストア命令を有し、かつ、前記ｎビット幅制御レジスタのうち前記専用ストア命令が対応する制御データフィールドのみに対してストアアクセスするアクセス制御器を備え、前記ｍ個の制御データフィールドおよび前記ｍ個の専用ストア命令について前記専用ストア命令検出信号と前記制御レジスタへのライトイネーブル信号との両者がともにアサートされたときに、前記制御レジスタへのストアアクセスを許可するよう構成したことを特徴とし、各フィールドのアクセス頻度を下げ、ノイズによるアドレスバス変動に対する耐性を確保するとともに、有限のアドレス空間を有効に活用できる効果がある。
【０１２７】
また、本発明の請求項５記載のマイクロコントローラは、マイクロコントローラ内蔵の制御対象のステータスを制御するための制御データを格納する制御レジスタにおいて、前記制御レジスタの制御データリセットをハードウェア処理するように構成し、専用ストア命令のフェッチ検出結果を前記制御レジスタのセットデータとして前記制御レジスタに入力するよう構成したことを特徴とし、ＣＰＵやシステムクロックの停止モードを制御するモードレジスタや、ｎビット幅モードレジスタの制御データフィールドに対し、そのセットデータをそのモードレジスタや、ｎビット幅モードレジスタの制御データフィールドにアクセスする専用命令の検出結果から生成するように構成している。モードレジスタや、ｎビット幅モードレジスタの制御データフィールドのクリアは外部からのＣＰＵ動作復帰信号で行うことによって、データバスからのデータ書き込みは不用になり、ノイズによりデータバスの変動が生じても、モードレジスタのセットデータに影響することはなくノイズ耐性が向上する効果がある。
【０１２８】
また、本発明の請求項６，請求項７記載のアセンブル装置は、レジスタテーブルにより、ストア命令に続くアドレスまで参照して命令コードに変換するアセンブル装置を構成したので、プログラム作成者は制御レジスタ、制御フラグごとに用意された専用のストア命令を意識することなく、プログラム作成できる効果がある。
【図面の簡単な説明】
【図１】本発明の（実施の形態１）によるマイクロコントローラの構成図
【図２】本発明の（実施の形態１）によるマイクロコントローラにおいて専用ストア命令によるモードレジスタアクセスのタイミングチャート
【図３】本発明の（実施の形態１）によるマイクロコントローラにおいて外来ノイズが侵入したときのストア命令によるモードレジスタアクセスのタイミングチャート
【図４】本発明の（実施の形態２）によるマイクロコントローラの構成図
【図５】本発明の（実施の形態３）によるマイクロコントローラの構成図
【図６】本発明の（実施の形態４）によるマイクロコントローラの構成図
【図７】本発明の（実施の形態５）によるアセンブル装置およびアセンブルフロー図
【図８】従来のマイクロコントローラの構成図
【図９】従来のマイクロコントローラにおいてストア命令によるモードレジスタアクセスのタイミングチャート
【図１０】従来のマイクロコントローラにおいて外来ノイズが侵入したときのストア命令によるモードレジスタアクセスのタイミングチャート
【符号の説明】
１００　マイクロコントローラ
１１０　ＣＰＵ
１１０ａ　命令フェッチ部
１１０ｂ　命令デコーダ部
１１０ｃ　命令実行部
１１５　ライトイネーブル信号
１１６　アドレス信号
１１７　命令コード
１１８　制御データ
１２０ａ　ＲＯＭデータバス
１２０ｂ　ＲＡＭデータバス
１２０ｃ　データバススイッチ
１２１ａ　ＲＯＭアドレスバス
１２１ｂ　ＲＡＭアドレスバス
１２１ｃ　アドレスバススイッチ
１３０　プログラム格納メモリ
１４０　アドレス比較器
１４１　比較器
１４１ａ　モードレジスタアドレス一致信号
１４２　ホールド回路
１４３　モードレジスタアドレス一致ホールド信号
１５０　ライトイネーブル制御器
１５１　モードレジスタライトイネーブル信号
１６０　モードレジスタ（制御レジスタ）
１６１ａ　ＨＡＬＴフラグフィールド
１６１ｂ　ＳＴＯＰフラグフィールド
１６１ｃ　その他のフラグフィールド
１６２ａ　ＨＡＬＴモード制御信号
１６２ｂ　ＳＴＯＰモード制御信号
１７０　クロックコントローラ
１８０　モードレジスタアクセス制御器
１８１　ｍｓｔｒ命令検出回路
１８１ａ　ｍｓｔｒ命令検出信号
１８２　命令アクセス制御器
１８３　遅延回路
１８４　ライトアクセス制御回路
１８５　ｍｓｔｒ命令ライトクロック
１８６　エラーフラグ
１９０　外来ノイズ
４００　マイクロコントローラ
４１０ｂ　命令デコーダ部
４１０ｃ　命令実行部
４４３ａ　ＨＡＬＴモードレジスタアドレス一致信号
４４３ｂ　ＳＴＯＰモードレジスタアドレス一致信号
４５０ａ　ライトイネーブル制御器
４５０ｂ　ライトイネーブル制御器
４５１ａ　ＨＡＬＴモードレジスタライトイネーブル信号
４５１ｂ　ＳＴＯＰモードレジスタライトイネーブル信号
４６０ａ　ＨＡＬＴモードレジスタ（制御レジスタ）
４６０ｂ　ＳＴＯＰモードレジスタ（制御レジスタ）
４６１ａ　ＨＡＬＴモード制御信号
４６１ｂ　ＳＴＯＰモード制御信号
４８０ａ　ＨＡＬＴモードレジスタアクセス制御器
４８０ｂ　ＳＴＯＰモードレジスタアクセス制御器
４８１ａ　ｈａｌｔ＿ｍｏｄ命令検出回路
４８１ｂ　ｓｔｏｐ＿ｍｏｄ命令検出回路
４８１ｃ　ｈａｌｔ＿ｍｏｄ命令検出信号
４８１ｄ　ｓｔｏｐ＿ｍｏｄ命令検出信号
４８５ａ　ｈａｌｔ＿ｍｏｄ命令ライトクロック
４８５ｂ　ｓｔｏｐ＿ｍｏｄ命令ライトクロック
５００　マイクロコントローラ
５６０　モードレジスタ（制御レジスタ）
５６１ａ　ＨＡＬＴフラグフィールド
５６１ｂ　ＳＴＯＰフラグフィールド
６００　マイクロコントローラ
６６２　ＳＴＯＰ復帰要因
６８０ｂ　ＳＴＯＰモードレジスタアクセス制御器
６８１ｂ　ｓｔｏｐ＿ｍｏｄ命令検出／保持回路
６８１ｃ　ｓｔｏｐ＿ｍｏｄ命令保持信号
７１０　ソースコード
７２０　アセンブル装置
７２１　拡張アッセンブラ
７２２　拡張命令コードテーブル
７２３　リンカ
７２４　リンクテーブル・レジスタマップ
７３０　リストファイル
７４０　命令コード
８００　マイクロコントローラ
８１０　ＣＰＵ
８１０ａ　命令フェッチ部
８１０ｂ　命令デコーダ部
８１０ｃ　命令実行部
８５０　ライトクロック制御器
８５１　モードレジスタライトクロック
【図１】
2004062550.tif 000003
【図２】
2004062550.tif 000004
【図３】
2004062550.tif 000005
【図４】
2004062550.tif 000006
【図５】
2004062550.tif 000007
【図６】
2004062550.tif 000008
【図７】
2004062550.tif 000009
【図８】
2004062550.tif 000010
【図９】
2004062550.tif 000011
【図１０】
2004062550.tif 000012