(57)【要約】【課題】従来の出力回路において、出力バッファの貫通電流に起因するノイズを低減するための遅延回路を出力回路に挿入しているので、出力回路の数が増加するほど回路面積が増加するという課題がある。【解決手段】制御部２は、ＣＰＵ１からの書き込み要求Ｑを受け付けて出力回路５に対するイネーブル信号Ｓｉを生成するとともに書き込みデータＤｗを一時的に保持し出力回路５へ転送する機能を有し、出力回路５は、複数の１ビット出力部５１〜５４をもち、個々の１ビット出力部は、制御部２から送られてくる書き込みデータＤｗをイネーブル信号Ｓｉのタイミングで書き込むためのレジスタＲとレジスタのデータを外部へ出力するための出力バッファＢとを備え、さらに、複数の１ビット出力部５１〜５４におけるデータ書き込みの実効的なタイミングをずらす機能を制御部２またはＣＰＵ１に持たせた構成としている。【選択図】図１
2011103017.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（中央演算処理装置）と制御部と出力回路を含み、
前記制御部は、前記ＣＰＵからの書き込み要求を受け付けて前記出力回路に対するイネーブル信号を生成するとともに、前記ＣＰＵから送られてくる書き込みデータを一時的に保持し、前記出力回路へ転送する機能を有し、
前記出力回路は、複数の１ビット出力部の組み合わせで構成され、個々の前記１ビット出力部は、前記制御部から送られてくる書き込みデータを、同じく前記制御部からのイネーブル信号のタイミングで書き込むためのレジスタと、前記レジスタのデータを外部へ出力するための出力バッファとを備え、
さらに、前記複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を前記制御部または前記ＣＰＵに持たせた構成としているマイクロコントローラ。
【請求項２】
前記制御部は、前記複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を持ち、前記ＣＰＵからの書き込み要求に基づいて書き込みタイミングを制御するイネーブル信号を生成するにおいて、タイミングが相互にずれた複数のイネーブル信号を生成するものとして構成されている請求項１に記載のマイクロコントローラ。
【請求項３】
前記ＣＰＵは、前記複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を持ち、前記制御部に送り込む複数ビットの書き込みデータについて、１ビットずつ変化させて順に送り出すように構成され、前記制御部は前記出力回路に出力するイネーブル信号として複数の１ビット出力部に共通単一のイネーブル信号を出力するように構成されている請求項１に記載のマイクロコントローラ。
【請求項４】
書き込み要求と書き込みデータとを出力するＣＰＵ（中央演算処理装置）と、
前記ＣＰＵからの書き込み要求を受け付けてイネーブル信号を生成するとともに前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送する機能を有する制御部と、
前記制御部から送られてくる書き込みデータを前記制御部からのイネーブル信号のタイミングで書き込み一時的に保持するレジスタおよび前記レジスタのデータを外部へ出力する出力バッファとを有する１ビット出力部を複数ビット分備えた出力回路とを含み、
前記制御部は、前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送するための複数ビット分のレジスタおよび前記ＣＰＵからの前記書き込み要求に基づいて互いにタイミングのずれた複数ビット分のイネーブル信号を生成し前記各１ビット出力部に出力するための複数の遅延回路とを備えたものとして構成されているマイクロコントローラ。
【請求項５】
書き込み要求と書き込みデータとを出力するＣＰＵ（中央演算処理装置）と、
前記ＣＰＵからの書き込み要求を受け付けてイネーブル信号を生成するとともに前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送する機能を有する制御部と、
前記制御部から送られてくる書き込みデータを前記制御部からのイネーブル信号のタイミングで書き込み一時的に保持するレジスタおよび前記レジスタのデータを外部へ出力する出力バッファとを有する１ビット出力部を複数ビット分備えた出力回路とを含み、
前記ＣＰＵは、前記出力回路内のレジスタのデータと同じデータを保持する出力データレジスタと、前記書き込みのために前記出力回路に送り出す送り出しデータを格納しておく送り出しデータレジスタと、前記出力データレジスタと前記送り出しデータレジスタのデータを入力して演算を行う論理演算器とを備え、前記論理演算器による演算結果を前記出力データレジスタに再格納することにより、前記論理演算器で１ビットずつデータを変化させながら書き込みデータを出力するものとして構成され、
前記制御部は、前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送するための複数ビット分のレジスタを備え、前記ＣＰＵからの前記書き込み要求に基づくイネーブル信号として前記複数の１ビット出力部に共通の単一のイネーブル信号を出力するものとして構成されているマイクロコントローラ。
【請求項６】
さらに、前記遅延回路による前記互いにタイミングがずれた複数ビット分のイネーブル信号のそれぞれといずれか１つのタイミングのイネーブル信号とを切り替えるセレクタと、前記セレクタの切り替えを制御するセレクタ制御手段とを備えている請求項４に記載のマイクロコントローラ。
【請求項７】
さらに、前記送り出しデータレジスタのデータと前記出力データレジスタのデータを比較する比較器を備え、
前記ＣＰＵは、前記比較器による比較の結果が不一致となるビットのみに前記論理演算器で１ビットずつデータを変化させながら書き込みデータを出力し、比較の結果が一致するビットには、前記論理演算器による処理を行わず、書き込み処理も行わないように構成されている請求項５に記載のマイクロコントローラ。
【請求項８】
さらに、１サイクルで変化するビット幅を指定するビット幅指定レジスタを備え、
前記ＣＰＵは、１サイクル内で、前記ビット幅指定レジスタで指定されるビット幅ずつデータを変化させながら前記出力回路に書き込む命令を発するように構成されている請求項５に記載のマイクロコントローラ。
【請求項９】
前記ＣＰＵは、前記論理演算器をもって１ビットずつデータを変えさせながら前記書き込みデータを前記出力回路に書き込む命令を、前記出力回路に前記書き込みデータを全ビット同時に変化させて一時に書き込む命令とは異なる命令コードで実行するように構成されている請求項５に記載のマイクロコントローラ。
【請求項１０】
前記ＣＰＵは、前記論理演算器をもって１ビットずつデータを変えさせながら前記書き込みデータを前記出力回路に書き込む命令を、前記出力回路に前記書き込みデータを全ビット同時に変化させて一時に書き込む命令と同じ命令コードで実行するように構成されている請求項５に記載のマイクロコントローラ。
【請求項１１】
さらに、前記論理演算器をもって１ビットずつデータを変化させながら順次に前記出力回路に前記書き込みデータを書き込む命令と、全ビットのデータを同時に変化させて一時に前記出力回路に前記書き込みデータを書き込む命令とを切り替えを行う命令切り替えレジスタを備えている請求項５に記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力回路を持つマイクロコントローラにかかわり、特には、出力バッファの貫通電流に起因するノイズの抑制において出力回路の数が増加しても回路面積の増加を抑えるようにするための技術に関する。
【背景技術】
【０００２】
図１５は従来のマイクロコントローラに備わっている出力回路の構成を示す回路図である。出力回路とは、マイクロコントローラの外部にデータを出力するための回路である。出力回路は複数の１ビット出力部からなり、各１ビット出力部は１ビットのデータを出力するものである。図１５において、７は内部バス、８は出力回路、８１，８２，８３，８４は出力回路８を構成する１ビット出力部である。１ビット出力部８１〜８４のそれぞれは、マスターラッチ信号Ｓ１１でラッチされるマスターラッチ９１と、スレーブラッチ信号Ｓ１２でラッチされるスレーブラッチ９２と、スレーブラッチ９２からの出力データを入力した上でマイクロコントローラ外部へ出力する出力バッファ９３とを備えている。出力回路８には、さらに、スレーブラッチ信号Ｓ１２を順次に遅延させる遅延回路９４，９５，９６が設けられている。
【０００３】
書き込みデータが内部バス７を介して１ビット出力部８１，８２，８３，８４に到達し、マスターラッチ信号Ｓ１１により全ビット同時にマスターラッチ９１にラッチされ、１ビット目の１ビット出力部８１においては、マスターラッチ９１にラッチされた書き込みデータがスレーブラッチ信号Ｓ１２によってスレーブラッチ９２にラッチされる。次いで、スレーブラッチ信号Ｓ１２が遅延回路９４，９５，９６により順次遅れた互いに異なるタイミングで各スレーブラッチ９２に到達する。したがって、１ビット目ないし３ビット目の１ビット出力部８２，８３，８４の各スレーブラッチ９２では、１ビットずつ順番に異なるタイミングで書き込みデータがラッチされ、出力バッファ９３を通って外部に出力される。
【０００４】
１ビット出力部８１〜８４における各出力バッファ９３の状態が“０”→“１”または“１”→“０”のように遷移するときに出力バッファ９３に貫通電流が流れるが、その状態遷移が１ビットずつタイミングがずれているため、貫通電流は時間的に分散される。その結果、多大な貫通電流が流れることに起因して発生する電源・ＧＮＤノイズは、これを抑えることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１００７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図１６を用いて従来技術の課題を説明する。図１５の構成の出力回路８が多数、内部バス７に並列に接続されている。個々の出力回路８にはそれぞれ３つの遅延回路９４，９５，９６が設けられている。したがって、従来技術にあっては、遅延回路９４，９５，９６の数と出力回路８の数とは比例するので、出力回路８の接続数が多いほど、遅延回路９４，９５，９６の数が増加し、マイクロコントローラの面積が増加するといった問題がある。
【０００７】
本発明は、このような事情に鑑みて創作したものであり、出力バッファの貫通電流に起因するノイズの抑制を実現しながら、出力回路数が増加しても回路面積の増加を抑えることができるようにすることを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、次のような手段を講じることにより上記の課題を解決する。
【０００９】
（１）本発明のマイクロコントローラは、その構成要素として、ＣＰＵ（中央演算処理装置）と制御部と出力回路とを含んでいる。制御部は、ＣＰＵからの書き込み要求を受け付けて出力回路に対するイネーブル信号を生成するとともに、ＣＰＵから送られてくる書き込みデータを一時的に保持し、出力回路へ転送する機能を有している。出力回路は、複数の１ビット出力部の組み合わせで構成されている。個々の１ビット出力部は、制御部から送られてくる書き込みデータを、同じく制御部からのイネーブル信号のタイミングで書き込むためのレジスタと、レジスタのデータを外部へ出力するための出力バッファを備えている。このような構成を前提として、出力回路における複数の１ビット出力部の出力バッファで貫通電流が大きくならないようにするために、本発明では、複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を、従来技術の場合のように出力回路側に持たせるのではなく、制御部またはＣＰＵの側に持たせている。この項には後述する図１を参照することが可能である。この項でのキーワードは、「複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を、制御部またはＣＰＵの側に持たせる」である。
【００１０】
すなわち、複数の遅延回路を出力回路内に設ける代わりに、複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を制御部かＣＰＵに持たせているのである。このようにすることにより、複数の１ビット出力部でのデータ出力のタイミングは互いにずれたものとなって、各出力バッファで貫通電流の発生が生じてもそのタイミングは分散することになるので、貫通電流に起因するノイズの発生を抑制することが可能となる。加えて、制御部またはＣＰＵでのデータ書き込みの実効的なタイミングをずらす機能は出力回路の数が増えても共用化されるものであるので、出力回路の増加に対して回路規模を増加させる必要はない。
【００１１】
（２）複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を制御部に持たせる１つの態様として、ＣＰＵからの書き込み要求を受け取る制御部の構成として、その書き込み要求に基づいて書き込みタイミングを制御するイネーブル信号を生成するにおいて、タイミングが相互にずれた複数のイネーブル信号を生成するものとして構成しておけばよい。この項には後述する図２を参照することが可能である。この項でのキーワードは、「タイミングが相互にずれた複数のイネーブル信号」である。
【００１２】
こうすれば、出力回路における複数の１ビット出力部にとっては、制御部から送られてくるイネーブル信号が１ビット出力部ごとにすでにタイミングがずれたものとなっていることになる。よって、複数の１ビット出力部でのデータ出力のタイミングは互いにずれたものとなり、貫通電流の発生タイミングは分散することになるので、貫通電流に起因するノイズの発生を抑制することが可能となる。複数の１ビット出力部それぞれに遅延回路は必要なく、代わりに制御部側でイネーブル信号を遅延させるための遅延回路が必要であるが、この制御部での遅延回路は出力回路の数が増えても共用化されるものであるので、出力回路の増加に対して制御部での遅延回路を増加させる必要はない。
【００１３】
（３）複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能をＣＰＵに持たせる態様として、制御部に送り込む複数ビットの書き込みデータについて、１ビットずつ変化させて順に送り出すようにＣＰＵを構成し、制御部が出力回路に出力するイネーブル信号としては複数の１ビット出力部に共通単一のイネーブル信号としておけばよい。この項には後述する図３を参照することが可能である。この項でのキーワードは、「複数ビットの書き込みデータについて、１ビットずつ変化させて順に送り出す」である。
【００１４】
こうすれば、出力回路における複数の１ビット出力部にとっては、イネーブル信号が複数サイクル分アクティブになっている期間において、制御部から各１ビット出力部に送り込まれてくる複数ビットの書き込みデータは、どのサイクルでも変化するビットは高々１ビットであり、複数ビットが同時に変化することはない。なお、書き込みデータによってはどのビットも変化しない場合もあり得る。結果として、複数の１ビット出力部でのデータ出力のタイミングは互いにずれたものとなり、出力バッファでの貫通電流の発生タイミングは分散することになるので、貫通電流に起因するノイズの発生を抑制することが可能となる。（２）の場合と同様に、複数の１ビット出力部それぞれに遅延回路は必要なく、しかも（２）の場合とは異なり、制御部にはイネーブル信号を遅延させるための遅延回路も不要である。
【００１５】
上記の（２）のより具体的な態様が次の（４）である。
【００１６】
（４）マイクロコントローラは、その構成要素として、ＣＰＵ（中央演算処理装置）と制御部と出力回路を含んでいる。制御部は、ＣＰＵからの書き込み要求を受け付けて出力回路に対するイネーブル信号を生成するとともに、ＣＰＵから送られてくる書き込みデータを一時的に保持し、出力回路へ転送する機能を有している。出力回路は、複数の１ビット出力部の組み合わせで構成されている。個々の１ビット出力部は、制御部から送られてくる書き込みデータを、同じく制御部からのイネーブル信号のタイミングで書き込むためのレジスタと、レジスタのデータを外部へ出力するための出力バッファを備えている。
【００１７】
出力回路における複数の１ビット出力部の出力バッファで貫通電流が大きくならないようにするため、各１ビット出力部での書き込みのタイミングをずらすための対策として、従来技術の場合は、出力回路の内部に複数の遅延回路を設けることで対応している。これに対して当該構成では、各１ビット出力部に入力するイネーブル信号をあらかじめ互いにタイミングがずれたものとして制御部で生成し、各１ビット出力部に供給するように構成している。この項には後述する図４を参照することが可能である。
【００１８】
各１ビット出力部でのデータ書き込みは互いにタイミングのずれたものとなり、データ出力のタイミングも互いにずれたものとなる。結果、貫通電流の発生タイミングは分散することになるので、貫通電流に起因するノイズの発生は抑制される。すなわち、書き込みタイミングをずらすための複数の遅延回路を出力回路内に設ける代わりに、制御部において書き込みタイミングを制御する複数のイネーブル信号のタイミングをあらかじめずらしておき、それぞれを各１ビット出力部に与える。出力回路に入力されてくるイネーブル信号がすでにタイミングがずれているので、出力回路内部には遅延回路は必要ない。制御部側でイネーブル信号を遅延させるための複数の遅延回路が必要であるが、この遅延回路は出力回路の数が増えても共用化されるものであるので、出力回路の増加に対して遅延回路を増加させる必要はない。
【００１９】
この項でのキーワードは、「あらかじめ互いにタイミングがずれた複数のイネーブル信号」と「イネーブル信号を遅延させるための制御部側の複数の遅延回路」である。
【００２０】
以上を要するに、本発明当該態様のマイクロコントローラは、
書き込み要求と書き込みデータとを出力するＣＰＵ（中央演算処理装置）と、
前記ＣＰＵからの書き込み要求を受け付けてイネーブル信号を生成するとともに前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送する機能を有する制御部と、
前記制御部から送られてくる書き込みデータを前記制御部からのイネーブル信号のタイミングで書き込み一時的に保持するレジスタおよび前記レジスタのデータを外部へ出力する出力バッファとを有する１ビット出力部を複数ビット分備えた出力回路とを含み、
前記制御部は、前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送するための複数ビット分のレジスタおよび前記ＣＰＵからの前記書き込み要求に基づいて互いにタイミングのずれた複数ビット分のイネーブル信号を生成し前記各１ビット出力部に出力するための複数の遅延回路とを備えたものとして構成されている。
【００２１】
この構成によれば、出力回路における各１ビット出力部には互いにタイミングのずれたイネーブル信号が入力され、出力バッファの状態遷移による貫通電流がタイミング的に分散されるので貫通電流に起因するノイズの低減効果は確保されることになる。加えて、制御部においてタイミングをずらしたイネーブル信号を生成するのに、制御部に遅延回路を設けることになるが、この遅延回路は出力回路の数が増えても共用化されるものであるので、出力回路の増加に対して遅延回路を増加させる必要はなく、出力回路は遅延回路なしでよいため、出力回路数増加による回路面積の増加を抑制することが可能となる。
【００２２】
上記の（３）のより具体的な態様が次の（５）である。
【００２３】
（５）上記の（４）の場合は制御部において複数の遅延回路を設け、複数の１ビット出力部に与えるイネーブル信号にタイミングのずれを与えているが、それとは別の方式もある。それは、１ビット出力部ごとの複数のイネーブル信号を用いるのではなく、イネーブル信号を複数の１ビット出力部に共通の単一のイネーブル信号とするものである。この場合のマイクロコントローラも、その構成要素として、（４）の場合と同様に、ＣＰＵと制御部と出力回路を含んでいる。制御部は、ＣＰＵからの書き込み要求を受け付けて出力回路に対する共通単一のイネーブル信号を生成するとともにＣＰＵから送られてくる書き込みデータを一時的に保持し、出力回路へ転送する機能を有している。出力回路は、複数の１ビット出力部の組み合わせで構成されている。個々の１ビット出力部は、制御部から送られてくる書き込みデータを、同じく制御部からのイネーブル信号のタイミングで書き込むためのレジスタと、レジスタのデータを外部へ出力するための出力バッファを備えている。ここで当該構成はＣＰＵ側に工夫を凝らしている。ＣＰＵは、出力回路内のレジスタのデータと同じデータを保持する出力データレジスタと、書き込みのために出力回路に送り出す送り出しデータを格納しておく送り出しデータレジスタと、出力データレジスタと送り出しデータレジスタのデータを入力して演算を行う論理演算器とを備えている。そして、論理演算器で１ビットずつデータを変化させながら、その１ビットずつ変わるデータを複数の１ビット出力部に書き込むように構成されている。この場合に、出力データレジスタには論理演算器による演算結果が上書き格納されるようになっている。この項には後述する図７を参照することが可能である。
【００２４】
本構成では、出力回路における複数の１ビット出力部の出力バッファで貫通電流が大きくならないようにするため、タイミングが互いにずれた複数のイネーブル信号を用いることに代えて、複数の１ビット出力部における書き込みデータの変化のタイミングをずらすようにしている。すなわち、あるタイミングでは書き込みデータのうちの０ビット目１つのみ変化させたデータを対応する１ビット出力部に書き込み、別のタイミングでは書き込みデータのうちの１ビット目１つのみ変化させたデータを対応する１ビット出力部に書き込み、さらに別のタイミングでは書き込みデータのうちの２ビット目１つのみ変化させたデータを対応する１ビット出力部に書き込み、さらに別のタイミングでは書き込みデータのうちの３ビット目１つのみ変化させたデータを対応する１ビット出力部に書き込むといった具合である。このような１ビットずつデータを変化させながら書き込む形態をとるために、ＣＰＵに論理演算器と送り出しデータレジスタと出力データレジスタとを設けてある。例えば、送り出しデータレジスタにある送り出しデータ（書き込みデータ）のあるビットのデータが“０”であれば、そのビットに対応した１ビット出力部は、元のデータが“１”であれ“０”であれ、結果的に“０”になっていればよいのであるから、送り出しデータの“０”の論理（論理積で“０”を結果する）を利用して、出力データレジスタにおける該当ビットに対して送り出しデータレジスタの“０”との論理積をとり、その論理積の結果を書き込みデータとすればよい。逆に、送り出しデータのあるビットのデータが“１”であれば、そのビットに対応した１ビット出力部は、元のデータが“１”であれ“０”であれ、結果的に“１”になっていればよいのであるから、送り出しデータの“１”の論理（論理和で“１”を結果する）を利用して、出力データレジスタにおける該当ビットに対して送り出しデータレジスタの“１”との論理和をとり、その論理和の結果を書き込みデータとすればよい。
【００２５】
この方式の場合は、書き込みデータの各ビットデータ自体にタイミングのずれをもたせるので、イネーブル信号は共通単一でよい。複数の１ビット出力部におけるデータ変化のタイミングをずらしているので、出力バッファの状態遷移による貫通電流がタイミング的に分散されることにより、貫通電流に起因するノイズの低減効果は確保されることになる。しかも、制御部には（４）の場合のような複数の遅延回路は不要となり、さらなる回路構成の簡略化が図られる。これは、出力回路の増加に対して強力な手法となる。
【００２６】
この項でのキーワードは、「イネーブル信号を複数の１ビット出力部に共通の単一のイネーブル信号とする」と「送り出しデータレジスタ、出力データレジスタ、送り出しデータレジスタおよび出力データレジスタのデータを入力して演算を行う論理演算器」と「複数の１ビット出力部における書き込みデータの変化のタイミングをずらす」である。
【００２７】
以上を要するに、本発明当該態様のマイクロコントローラは、
書き込み要求と書き込みデータとを出力するＣＰＵ（中央演算処理装置）と、
前記ＣＰＵからの書き込み要求を受け付けてイネーブル信号を生成するとともに前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送する機能を有する制御部と、
前記制御部から送られてくる書き込みデータを前記制御部からのイネーブル信号のタイミングで書き込み一時的に保持するレジスタおよび前記レジスタのデータを外部へ出力する出力バッファとを有する１ビット出力部を複数ビット分備えた出力回路とを含み、
前記ＣＰＵは、前記出力回路内のレジスタのデータと同じデータを保持する出力データレジスタと、前記書き込みのために前記出力回路に送り出す送り出しデータを格納しておく送り出しデータレジスタと、前記出力データレジスタと前記送り出しデータレジスタのデータを入力して演算を行う論理演算器とを備え、前記論理演算器による演算結果を前記出力データレジスタに再格納することにより、前記論理演算器で１ビットずつデータを変化させながら書き込みデータを出力するものとして構成され、
前記制御部は、前記ＣＰＵから送られてくる書き込みデータを一時的に保持し転送するための複数ビット分のレジスタを備え、前記ＣＰＵからの前記書き込み要求に基づくイネーブル信号として前記複数の１ビット出力部に共通の単一のイネーブル信号を出力するものとして構成されている。
【００２８】
この構成によれば、書き込みデータの各ビットデータ自体にタイミングのずれをもたせ、複数の１ビット出力部におけるデータ変化のタイミングをずらすために、出力バッファの状態遷移による貫通電流がタイミング的に分散され、貫通電流に起因するノイズの低減効果は確保されることになる。しかも、イネーブル信号は共通単一でよく、制御部には（４）の場合のような複数の遅延回路は不要となり、さらなる回路構成の簡略化が図られる。
【００２９】
なお、（４），（５）の場合には、複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能をハードウェアで実現していて、一連の動作をハードウェアで自動的に行うものであるので設計の安全性が高いとともに、マイクロコントローラを使用するソフトのソース量が少なくなるというメリットもある。
【発明の効果】
【００３０】
本発明によれば、複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能を制御部またはＣＰＵの側に持たせているので、複数の１ビット出力部の各出力バッファでの貫通電流の発生タイミングは分散し貫通電流に起因するノイズの発生を抑制できるのはもちろんのこと、制御部またはＣＰＵでのデータ書き込みの実効的なタイミングをずらす機能は出力回路の数が増えても共用化されるものであることから、出力回路数が増加しても回路面積の増加を抑えることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態１におけるマイクロコントローラの基本的構成を示すブロック図
【図２】本発明の実施の形態２におけるマイクロコントローラの構成を示すブロック図
【図３】本発明の実施の形態３におけるマイクロコントローラの構成を示すブロック図
【図４】本発明の実施例１におけるマイクロコントローラの構成を示す回路図
【図５】本発明の実施例１におけるマイクロコントローラの動作を示すタイミングチャート
【図６】本発明の実施例２におけるマイクロコントローラの構成を示す回路図
【図７】本発明の実施例３におけるマイクロコントローラの構成を示す回路図
【図８】本発明の実施例３におけるマイクロコントローラの動作を示すタイミングチャート
【図９】本発明の実施例３におけるマイクロコントローラの動作を示す状態遷移図
【図１０】本発明の実施例４におけるマイクロコントローラの構成を示す回路図
【図１１】本発明の実施例４におけるマイクロコントローラの動作を示すタイミングチャート
【図１２】本発明の実施例５におけるマイクロコントローラの構成を示す回路図
【図１３】本発明の実施例５におけるマイクロコントローラの動作を示すタイミングチャート
【図１４】本発明の実施例６におけるマイクロコントローラの構成を示す回路図
【図１５】従来のマイクロコントローラに備わっている出力回路の構成を示す回路図
【図１６】従来技術の構成での課題を示す回路図
【発明を実施するための形態】
【００３２】
上記の〔課題を解決するための手段〕の項で述べた構成の本発明のマイクロコントローラは、次のような実施の形態においてさらに有利に展開することが可能である。
【００３３】
（６）「互いにタイミングがずれた複数のイネーブル信号」をキーワードとする上記（４）の構成のマイクロコントローラにおいて、さらに、前記遅延回路による前記互いにタイミングがずれた複数ビット分のイネーブル信号のそれぞれといずれか１つのタイミングのイネーブル信号とを切り替えるセレクタと、前記セレクタの切り替えを制御するセレクタ制御手段とを備えているという態様がある。この項には後述する図６を参照することが可能である。この項でのキーワードは、「セレクタ制御手段」である。
【００３４】
このように構成すれば、貫通電流に起因するノイズを抑えたいデータを出力する出力回路では互いにタイミングがずれた複数ビット分のイネーブル信号を選択し、貫通電流に起因するノイズを抑える必要がなく、タイミングを揃えて出力する必要があるデータを出力する出力回路では共通単一のタイミングのイネーブル信号を選択するといった具合に、出力回路の態様に応じてイネーブル信号の態様を適切に切り替えて書き込み制御を行うことが可能となる。すなわち、貫通電流が生じやすい態様の出力回路に対しては個別のイネーブル信号を選択し、貫通電流の生じにくい態様の出力回路に対しては共通のイネーブル信号を選択することにすれば、いずれの場合もノイズの発生を抑制することが可能である。
【００３５】
（７）「共通単一のイネーブル信号」「送り出しデータレジスタ、出力データレジスタ、論理演算器」「複数の１ビット出力部における書き込みデータの変化のタイミングをずらす」をキーワードとする上記（５）の構成のマイクロコントローラにおいて、さらに、前記送り出しデータレジスタのデータと前記出力データレジスタのデータを比較する比較器を備え、前記ＣＰＵは、前記比較器による比較の結果が不一致となるビットのみに前記論理演算器で１ビットずつデータを変化させながら書き込みデータを出力し、比較の結果が一致するビットには、前記論理演算器による処理を行わず、書き込み処理も行わないように構成されているという態様がある。この項には後述する図１０を参照することが可能である。この項でのキーワードは、「比較器」である。
【００３６】
このように構成すれば、データが変化しないビットでの動作を省略することが可能となり、必要サイクル数を削減することが可能となる。
【００３７】
（８）上記（５）の構成のマイクロコントローラにおいて、さらに、１サイクルで変化するビット幅を指定するビット幅指定レジスタを備え、前記ＣＰＵは、１サイクル内で、前記ビット幅指定レジスタで指定されるビット幅ずつデータを変化させながら前記出力回路に書き込む命令を発するように構成されているという態様がある。この項には後述する図１２を参照することが可能である。この項でのキーワードは、「ビット幅指定レジスタ」である。
【００３８】
このように構成すれば、１サイクルにデータを変化させるビット幅を変更できるので、貫通電流に起因するノイズを抑えたいデータを出力する出力回路ではビット幅を減らし、貫通電流に起因するノイズを抑える必要があるが、タイミングをなるべく揃えてデータを出力する必要がある出力回路ではビット幅を増やすといった具合に、出力回路の態様に応じて１サイクルにデータを変化させるビット幅を適切に切り替えて書き込み制御を行うことが可能となる。
【００３９】
（９）上記（５）の構成のマイクロコントローラにおいて、前記ＣＰＵは、前記論理演算器をもって１ビットずつデータを変えさせながら前記書き込みデータを前記出力回路に書き込む命令を、前記出力回路に前記書き込みデータを全ビット同時に変化させて一時に書き込む命令とは異なる命令コードで実行するように構成されているという態様がある。この構成の場合には、１ビットずつデータを変化させながら順次に出力回路に書き込む命令を追加することで対応することが可能である。この項でのキーワードは、「異なる命令コード」である。
【００４０】
（１０）上記（５）の構成のマイクロコントローラにおいて、前記ＣＰＵは、前記論理演算器をもって１ビットずつデータを変えさせながら前記書き込みデータを前記出力回路に書き込む命令を、前記出力回路に前記書き込みデータを全ビット同時に変化させて一時に書き込む命令と同じ命令コードで実行するように構成されているという態様がある。この構成の場合は、単に、全ビット同時に変化させて一時に書き込む命令を実行すればよい。この項でのキーワードは、「同じ命令コード」である。
【００４１】
（１１）上記（５）の構成のマイクロコントローラにおいて、さらに、前記論理演算器をもって１ビットずつデータを変化させながら順次に前記出力回路に前記書き込みデータを書き込む命令と、全ビットのデータを同時に変化させて一時に前記出力回路に前記書き込みデータを書き込む命令とを切り替えを行う命令切り替えレジスタを備えているという態様がある。この項には後述する図１４を参照することが可能である。この項でのキーワードは、「命令切り替えレジスタ」である。
【００４２】
このように構成すれば、１ビットずつデータを変化させながら書き込む動作と全ビット同時に変化させて一時に書き込む動作を切り替えることができるので、出力回路の態様に応じて命令の動作を適切に切り替えることが可能となる。すなわち、貫通電流に起因するノイズを抑えたいデータを出力する出力回路に対しては１ビットずつデータを変化させながら順次に書き込む命令を実行し、貫通電流に起因するノイズを抑える必要がなく、タイミングを揃えて出力する必要があるデータを出力する出力回路に対しては全ビット同時に変化させて一時に書き込む命令を実行することにすれば、いずれの場合もノイズの発生を抑制することが可能となる。
【００４３】
以上で、本発明の概要を説明した。以下では、上記の（１），（２），（３）に対応して実施の形態１、実施の形態２、実施の形態３を説明する。
【００４４】
[実施の形態１]
図１は上記の（１）のマイクロコントローラにおける構成を示す。制御部２は、ＣＰＵ１からの書き込み要求Ｑを受け付けて出力回路５に対するイネーブル信号Ｓｉを生成するとともに、ＣＰＵ１から送られてくる書き込みデータＤｗを一時的に保持し、出力回路５へ転送する。出力回路５における個々の１ビット出力部５１〜５４は、制御部２からの書き込みデータＤｗを、同じく制御部２からのイネーブル信号Ｓｉのタイミングで書き込むレジスタＲと、レジスタＲのデータを外部へ出力する出力バッファＢを備えている。そして、複数の１ビット出力部５１〜５４の出力バッファＢで貫通電流が大きくならないようにするため、制御部２またはＣＰＵ１に、複数の１ビット出力部５１〜５４におけるデータ書き込みの実効的なタイミングをずらす機能を持たせている。図１で「データ書き込みの実効的なタイミングをずらす機能」の一方を実線で囲み、他方を破線で囲んでいるのは、「制御部２またはＣＰＵ１のいずれか一方に」の意である。出力回路５内には遅延回路はない。
【００４５】
この構成によれば、複数の１ビット出力部５１〜５４でのデータ出力のタイミングは互いにずれたものとなって、各出力バッファＢで貫通電流の発生が生じてもそのタイミングは分散することになり、貫通電流に起因するノイズの発生が抑制される。併せて、出力回路５内には遅延回路はなく、制御部２またはＣＰＵ１でのデータ書き込みの実効的なタイミングをずらす機能は出力回路５の数が増えても共用化されるものであるので、出力回路５の増加に対して回路規模を増加させる必要はない。
【００４６】
[実施の形態２]
図２は上記の（２）のマイクロコントローラの構成を示す。これは、制御部２に、「複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能」を持たせた態様である。すなわち、制御部２には、ＣＰＵ１からの書き込み要求Ｑを順次に送らせて複数の１ビット出力部５１〜５４に対するタイミングを異にするイネーブル信号Ｓｉ（Ｓ１，Ｓ２，Ｓ３，Ｓ４）を生成するための遅延回路３１〜３４が設けられている。書き込みデータＤｗは、制御部２から各１ビット出力部５１〜５４に対して同時的に供給されるようになっている。
【００４７】
複数の１ビット出力部５１〜５４にとって制御部２からのイネーブル信号Ｓ１，Ｓ２，Ｓ３，Ｓ４が互いにタイミングがずれたものとなっているので、１ビット出力部５１〜５４のそれぞれのレジスタＲにデータが書き込まれるタイミングは複数の１ビット出力部５１〜５４で互いにずれたものとなり、出力バッファＢでの貫通電流の発生タイミングは分散し、ノイズの発生を抑制することができる。
【００４８】
出力回路５の数が増えても、遅延回路３１〜３４は共用化されるので、出力回路５の増加に対して制御部２での遅延回路を増加させる必要はない。
【００４９】
[実施の形態３]
図３は上記の（３）のマイクロコントローラの構成を示す。これは、ＣＰＵ１に、「複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能」を持たせた態様である。すなわち、ＣＰＵ１は、制御部２に送り込む複数ビットの書き込みデータＤｗについて、１ビットずつ変化させて順に送り出すように構成されている。書き込みデータＤｗについて、「＊」のビットデータは、それが前回書き込んだデータと同じである（不変である）ことを意味し、ＣＰＵ１は、第１のタイミングでは書き込みデータＤｗの０ビット目の“１”または“０”を１ビット目ないし３ビット目の前回データとともに送り出し、第２のタイミングでは書き込みデータＤｗの１ビット目の“１”または“０”を０ビット目、２ビット目及び３ビット目の前回データとともに送り出し、第３のタイミングでは書き込みデータＤｗの２ビット目の“１”または“０”を０ビット目、１ビット目及び３ビット目の前回データとともに送り出し、第４のタイミングでは書き込みデータＤｗの３ビット目の“１”または“０”を０ビット目ないし２ビット目の前回データとともに送り出す。複数ビットの書き込みデータＤｗは、どのサイクルでも変化するビットは高々１ビットであり、複数ビットが同時に変化することはない。制御部２が出力回路５に出力するイネーブル信号Ｓｉとしては複数の１ビット出力部５１〜５４に共通単一のイネーブル信号Ｓ０である。
【００５０】
この構成によれば、イネーブル信号Ｓ０が共通であるが、書き込みデータＤｗが１ビットずつ順次に変化するものなので、複数の１ビット出力部５１〜５４でのデータ出力のタイミングは互いにずれたものとなり、出力バッファＢでの貫通電流の発生タイミングは分散し、ノイズの発生を抑制することができる。実施の形態２の場合とは異なり、制御部２にはイネーブル信号Ｓｉを遅延させるための遅延回路は不要である。出力回路５の数が増えても、ＣＰＵ１の「複数の１ビット出力部におけるデータ書き込みの実効的なタイミングをずらす機能」は共用化されるので、出力回路５の増加に対してＣＰＵ２で回路要素を増加させる必要はない。
【００５１】
以下、本発明の実施例にかかわるマイクロコントローラを実施例１〜実施例６として説明する。
【実施例１】
【００５２】
本発明の実施例１のマイクロコントローラは、上述の実施の形態２（図２）や（４）に該当するものであって、制御部内の遅延回路によって１サイクルずつタイミングのずれた複数のイネーブル信号を生成するように構成したものである。
【００５３】
図４は本発明の実施例１におけるマイクロコントローラの構成を示す回路図である。
【００５４】
マイクロコントローラは、ＣＰＵ１と、制御部２と、データの伝送路である内部バス４と、出力回路５とを備えている。出力回路５は第１ないし第４の１ビット出力部５１〜５４から構成されている。第１ないし第４の１ビット出力部５１〜５４のそれぞれはセレクタＳとレジスタＲと出力バッファＢを有している。各セレクタＳは、イネーブル信号Ｓｉ（ｉ＝１，２…）がアクティブにされたとき書き込みデータ（１ビット）を選択し、それをレジスタＲに送り込む。それ以外のときは、レジスタＲの出力を選択することにより、データを保持する。
【００５５】
ＣＰＵ１は、第１ないし第４の１ビット出力部５１〜５４に対して、書き込み要求Ｑを送出するとともに、書き込みデータＤｗを出力する機能を備えている。制御部２は、ＣＰＵ１から受け取った第１ないし第４の１ビット出力部５１〜５４への書き込みデータＤｗを一時的に保持する書き込みデータレジスタ２１〜２４と、ＣＰＵ１から受け取った書き込み要求Ｑを１サイクルずつずらして第１ないし第４の１ビット出力部５１〜５４へのデータ書き込み制御のための第１ないし第４のイネーブル信号Ｓ１〜Ｓ４を生成する第１ないし第４の遅延回路３１〜３４とを有している。ここでは、これらの遅延回路３１〜３４はフリップフロップとＡＮＤゲートで構成されている。書き込みデータレジスタ２１〜２４のそれぞれは内部バス４を介して第１ないし第４の１ビット出力部５１〜５４の各セレクタＳと接続されている。第１ないし第４の１ビット出力部５１〜５４のそれぞれは、第１ないし第４のイネーブル信号Ｓ１〜Ｓ４がアクティブにされたときにセレクタＳが内部バス４を選択し、書き込みデータＤｗがレジスタＲに書き込まれるようになっている。
【００５６】
次に、上記のように構成された実施例１のマイクロコントローラの動作を図５のタイミングチャートを用いて説明する。ここでは、当初“００００”が格納されている第１ないし第４の１ビット出力部５１〜５４に“１１１１”を書き込む場合の動作を説明する。「４’ｂ」は４ビットのバイナリデータの意である。
【００５７】
データをマイクロコントローラの外部に出力するに際しては、ＣＰＵ１から制御部２に対して、第１ないし第４の１ビット出力部５１〜５４への書き込み要求Ｑと、第１ないし第４の１ビット出力部５１〜５４に書き込む書き込みデータＤｗ（“１１１１”）とが出力される。
【００５８】
制御部２はＣＰＵ１からの書き込みデータＤｗを１ビットずつ書き込みデータレジスタ２１〜２４に格納し、書き込み要求Ｑを第１の遅延回路（フリップフロップ）３１に格納する。その結果、第１のイネーブル信号Ｓ１が出力され、第１の１ビット出力部５１内のレジスタＲに０ビット目のデータが書き込まれる。
【００５９】
次のサイクルで第１のイネーブル信号Ｓ１が第２の遅延回路３２に格納され、第２のイネーブル信号Ｓ２が出力される。第２のイネーブル信号Ｓ２は第１のイネーブル信号Ｓ１より１サイクル遅れて第２の１ビット出力部５２に入力され、第２の１ビット出力部５２では第１の１ビット出力部５１より１サイクル遅れて１ビット目のデータが書き込まれる。
【００６０】
さらに次のサイクルで第２のイネーブル信号Ｓ２が第３の遅延回路３３に格納され、第３のイネーブル信号Ｓ３が出力される。第３のイネーブル信号Ｓ３は第２のイネーブル信号Ｓ２より１サイクル遅れて第３の１ビット出力部５３に入力され、第３の１ビット出力部５３では第２の１ビット出力部５２より１サイクル遅れて２ビット目のデータが書き込まれる。
【００６１】
さらに次のサイクルで第３のイネーブル信号Ｓ３が第４の遅延回路３４に格納され、第４のイネーブル信号Ｓ４が出力される。第４のイネーブル信号Ｓ４は第３のイネーブル信号Ｓ３より１サイクル遅れて第４の１ビット出力部５４に入力され、第４の１ビット出力部５４では第３の１ビット出力部５３より１サイクル遅れて３ビット目のデータが書き込まれる。
【００６２】
すなわち、制御部２の働きにより、１サイクルずつ遅延した第１ないし第４のイネーブル信号Ｓ１〜Ｓ４が順次に生成され、第１ないし第４の１ビット出力部５１〜５４に１サイクルずつ遅延してデータが書き込まれる。
【００６３】
第１ないし第４の１ビット出力部５１〜５４へのデータの書き込みは制御部２で制御しているため、ＣＰＵ１は書き込み要求Ｑを出力した後は他の処理を行うことができる。
【００６４】
以上のように、本実施例によれば、制御部２から出力される第１ないし第４のイネーブル信号Ｓ１〜Ｓ４を１サイクルずつずらすことにより、第１ないし第４の１ビット出力部５１〜５４内のレジスタＲに書き込むタイミングをずらし、各出力バッファＢの状態が遷移するときに流れる貫通電流を分散させることができるので、ノイズが低減される。また、出力回路５の数が増加しても制御部２内の遅延回路３１〜３４を増加させる必要はないので、出力回路５の増加による面積の増加を抑えることができる。
【００６５】
なお、本実施例では、第１ないし第４の遅延回路３１〜３４をフリップフロップとしたが、フリップフロップの代わりに遅延用バッファなどの組み合わせ回路を用いてもよい。
【実施例２】
【００６６】
本発明の実施例２のマイクロコントローラは、実施例１の変形版で、１サイクルずつタイミングをずらした１ビット出力部ごとに個別のイネーブル信号に加えて、すべての１ビット出力部に共通単一のすべて同じタイミングのイネーブル信号を用いるようにし、これら個別のイネーブル信号と共通のイネーブル信号とを必要に応じて切り替えるように構成したものである。これは、上記の（６）に該当する。
【００６７】
図６は本発明の実施例２におけるマイクロコントローラの構成を示す回路図である。
【００６８】
本実施例においては、実施例１のマイクロコントローラの構成に加えて、セレクタ制御レジスタ６１と、イネーブル信号を切り替えるセレクタ６２，６３，６４とを備えた構成となっている。セレクタ６２は遅延回路３１から出力されるイネーブル信号Ｓ１と遅延回路３２から出力されるイネーブル信号Ｓ２との選択を行うものであり、セレクタ６３は遅延回路３１から出力されるイネーブル信号Ｓ１と遅延回路３３から出力されるイネーブル信号Ｓ３との選択を行うものであり、セレクタ６４は遅延回路３１から出力されるイネーブル信号Ｓ１と遅延回路３４から出力されるイネーブル信号Ｓ４との選択を行うものである。いずれのセレクタ６２，６３，６４も、その選択肢の１つがイネーブル信号Ｓ１となっている。セレクタ制御レジスタ６１は、そこにＣＰＵ１から“１”または“０”を設定することにより、セレクタ６２，６３，６４を制御するものである。この構成により、１サイクルずつタイミングをずらした個別のイネーブル信号Ｓ１，Ｓ２，Ｓ３，Ｓ４と、同じタイミングの共通のイネーブル信号Ｓ０（＝Ｓ１）との切り替えが可能となっている。その他の構成については、実施例１の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００６９】
次に、上記のように構成された実施例２のマイクロコントローラの動作を説明する。
【００７０】
セレクタ制御レジスタ６１に“１”（＝“Ｈ”）が設定されているときは、セレクタ６２〜６４は第２ないし第４の遅延回路３２〜３４からのイネーブル信号Ｓ２〜Ｓ４を選択するため、出力回路５に送られるイネーブル信号は、１サイクルずつタイミングのずれた第１ないし第４のイネーブル信号Ｓ１〜Ｓ４となる。このイネーブル信号Ｓ１〜Ｓ４が第１ないし第４の１ビット出力部５１〜５４に入力されるので、動作は実施例１と同様になる。
【００７１】
一方、セレクタ制御レジスタ６１に“０”（＝“Ｌ”）が設定されているときは、セレクタ６２〜６４は第１の遅延回路３１からのイネーブル信号Ｓ１を共通のイネーブル信号Ｓ０として選択する。この共通のイネーブル信号Ｓ０が第１ないし第４の１ビット出力部５１〜５４に入力され、データが全ビット同時に書き込まれる。
【００７２】
以上のように、本実施例によれば、１サイクルずつタイミングがずれた個別のイネーブル信号Ｓ１〜Ｓ４と、全ビット同時に変化させて一時に書き込む共通のイネーブル信号Ｓ０とを切り替えられるので、出力回路５の態様に応じてイネーブル信号の態様を適切に切り替えて書き込み制御を行うことができる。すなわち、貫通電流に起因するノイズを抑えたいデータを出力する出力回路５に対しては個別のイネーブル信号Ｓ１〜Ｓ４を選択し、貫通電流に起因するノイズを抑える必要がなく、タイミングを揃えて出力する必要があるデータを出力する出力回路５に対しては共通のイネーブル信号Ｓ０を選択することにすれば、いずれの場合もノイズの発生を抑制することができる。
【００７３】
なお、セレクタ制御レジスタ６１については、複数ある出力回路５ごとに個別にセレクタ制御レジスタ６１を備え、それぞれの設定値の“１”，“０”の違いに応じて、出力回路５単位で、個別のイネーブル信号Ｓ１〜Ｓ４と共通のイネーブル信号Ｓ０との切り替えを行うように構成してもよい。
【００７４】
なお、個々の出力回路５にアドレスが割り当てられており、アドレスを指定することで出力回路５を指定できる場合には、セレクタ制御レジスタ６１に代えてアドレス判定回路を利用し、アドレス判定回路が指定するアドレスの出力回路にデータを書き込むときに、個別のイネーブル信号Ｓ１〜Ｓ４を選択し、それ以外のときは共通のイネーブル信号Ｓ０を選択するように構成してもよい。
【実施例３】
【００７５】
本発明の実施例３のマイクロコントローラは、上述の実施の形態３（図３）や（５）に該当するものであって、制御部が出力するイネーブル信号は共通のイネーブル信号とし、ＣＰＵにおいて論理演算器を用いて書き込みデータを１ビットずつ順次に変化させながら送り出すように構成したものである。
【００７６】
図７は本発明の実施例３におけるマイクロコントローラの構成を示す回路図である。本実施例では、ＣＰＵ１ａ、制御部２ａの構成が実施例１とは相違している。
【００７７】
図７において、１１は命令コードのデコーダ、１２は第１ないし第４の１ビット出力部５１〜５４に対する書き込みデータＤｗを内部バス４から取り込んで送り出しデータとして保持する送り出しデータレジスタ、１３は第１ないし第４の１ビット出力部５１〜５４内のレジスタＲのデータと同じデータを保持するための出力データレジスタ、１４は送り出しデータレジスタ１２の０ビット目ないし３ビット目につき順次に“１”か“０”かの判定を行う判定回路、１５は送り出しデータレジスタ１２の各ビットと出力データレジスタ１３の各ビットとの間で論理演算を行う論理演算器である。この論理演算器１５は送り出しデータレジスタ１２と出力データレジスタ１３から同一ビットのデータを順次に読み出し、判定回路１４による送り出しデータレジスタ１２のビットデータが“１”のときは論理和の演算を行い、“０”のときは論理積の演算を行って、その演算結果を他のビットとともに制御部２ａの書き込みデータレジスタ２１〜２４に出力するように構成されている。１６は出力回路５における１ビット出力部５１〜５４に保持されているデータと論理演算器１５から出力される書き込みデータＤｗをデコーダ１１からの指示によって切り替えて選択し、出力データレジスタ１３に出力するセレクタである。セレクタ１６が論理演算器１５の方を選択した状態では、論理演算器１５の演算結果である書き込みデータＤｗが出力データレジスタ１３に再格納可能となっている。制御部２ａは、実施例１のような第１ないし第４の遅延回路３１〜３４は有しておらず、ＣＰＵ１ａからの書き込み要求Ｑを保持した上で第１ないし第４の１ビット出力部５１〜５４に共通のイネーブル信号Ｓ０として出力するレジスタ２５を備えている。その他の構成については、実施例１の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００７８】
次に、上記のように構成された実施例３のマイクロコントローラの動作を図８のタイミングチャートと図９の状態遷移図を用いて説明する。ここでは、第１ないし第４の１ビット出力部５１〜５４に“１１０１”が格納されている状態から“１０１０”を書き込む場合の動作について説明する。
【００７９】
タイミングＴ１において、デコーダ１１からセレクタ１６を制御して１ビット出力部５１〜５４の側を選択させるとともに、デコーダ１１から送り出しデータレジスタ１２を制御して書き込み状態にすることにより、内部バス４を介して１ビット出力部５１〜５４内のレジスタＲに書き込まれている４ビットのデータを送り出しデータレジスタ１２に格納する。また、デコーダ１１から出力データレジスタ１３を制御して書き込み状態にすることにより、第１ないし第４の１ビット出力部５１〜５４内のレジスタＲに書き込まれている４ビットのデータをＣＰＵ１ａ内の出力データレジスタ１３に格納する。これで、タイミングＴ２の状態で、送り出しデータレジスタ１２に“１０１０”が格納され、出力データレジスタ１３に“１１０１”が格納されたことになる。
【００８０】
タイミングＴ２では、送り出しデータレジスタ１２の０ビット目の値に応じて演算を行い、演算結果の書き込みデータＤｗを制御部２ａの書き込みデータレジスタ２１〜２４に出力するとともに、セレクタ１６を介して出力データレジスタ１３に返す。このとき、判定回路１４は送り出しデータレジスタ１２の０ビット目が“１”か“０”かの判定を行い、“１”の場合は、論理演算器１５に対して出力データレジスタ１３の０ビット目と送り出しデータレジスタ１２の０ビット目で論理和を行うように制御信号を送り、送り出しデータレジスタ１２の０ビット目が“０”の場合は、論理演算器１５に対して出力データレジスタ１３の０ビット目と送り出しデータレジスタ１２の０ビット目で論理積を行うように制御信号を送る。図８のデータ例の場合では、図９の（ａ）に示すように、送り出しデータレジスタ１２に“１０１０”が格納され、出力データレジスタ１３に“１１０１”が書き込まれている。送り出しデータレジスタ１２のビット列“１０１０”の０ビット目すなわち右から１つ目のビットの“０”を根拠に論理積が選択され、「０＊１」（“１”は出力データレジスタ１３のビット列“１１０１”の０ビット目すなわち右から１つ目のビットの“１”）の演算結果として“０”が得られる。これで、論理演算器１５から出力される書き込みデータＤｗは、その０ビット目が演算結果の“０”、１〜３ビット目が出力データレジスタ１３のデータの１〜３ビット目“１１０”とする４ビットのデータ“１１００”となる。このデータ“１１００”はセレクタ１６を介して出力データレジスタ１３に反映される（上向き矢印参照）。これで、出力データレジスタ１３は、“１１０１”から“１１００”に変化する。
【００８１】
制御部２ａでは、ＣＰＵ１ａから出力された書き込み要求Ｑをレジスタ２５に格納し、第１ないし第４の１ビット出力部５１〜５４に共通のイネーブル信号Ｓ０として出力する。同様にＣＰＵ１ａの論理演算器１５から出力された書き込みデータＤｗ（“１１００”）を書き込みデータレジスタ２１〜２４に格納し、内部バス４を介して第１ないし第４の１ビット出力部５１〜５４へ出力し、それぞれのレジスタＲへ書き込む。第１ないし第４の１ビット出力部５１〜５４には、イネーブル信号Ｓ０がすべて同じタイミングで入力されるため、第１ないし第４の１ビット出力部５１〜５４にはすべて同時にデータが書き込まれる。第１ないし第４の１ビット出力部５１〜５４に書き込むデータは、０ビット目のみ演算で変更したデータが格納されるので、０ビット目のみデータが変化することになる。図８のデータ例の場合では、“１１００”が第１ないし第４の１ビット出力部５１〜５４に書き込まれる。元の書き込みデータＤｗは“１１０１”であり、０ビット目の“１”が“０”に変化している。
【００８２】
タイミングＴ３では、図９の（ｂ）に示すように、判定回路１４は送り出しデータレジスタ１２の１ビット目が“１”か“０”かの判定を行い、“１”の場合は、論理演算器１５に対して論理和の制御信号を送り、“０”の場合は、論理演算器１５に対して論理積の制御信号を送る。図８のデータ例の場合では、送り出しデータレジスタ１２のビット列は上記と同じの“１０１０”で、その１ビット目すなわち右から２つ目のビットの“１”を根拠に論理和が選択される。このとき、図９（ａ）での動作の結果、出力データレジスタ１３は“１１００”となっていて、その１ビット目は“０”である。論理和は、「１＋０」の演算結果として“１”が得られる。０、２、３ビット目を出力データレジスタ１３のデータの０、２、３ビット目とし、１ビット目を演算結果“１”にしたデータを、出力データレジスタ１３に格納すると同時に制御部２ａへ出力する。イネーブル信号Ｓ０はアクティブ状態を保っている。図８のデータ例の場合では、“１１１０”が書き込みデータＤｗとして出力される。タイミングＴ２での第１ないし第４の１ビット出力部５１〜５４の書き込みデータＤｗは“１１００”であったのに対して、今度は“１１１０”が書き込まれるので、１ビット目のみデータが変化することになる。
【００８３】
タイミングＴ４では、図９の（ｃ）に示すように、判定回路１４は送り出しデータレジスタ１２の２ビット目が“１”か“０”かの判定を行い、図８のデータ例の場合では、送り出しデータレジスタ１２のビット列は上記と同じの“１０１０”で、その２ビット目すなわち右から３つ目のビットの“０”を根拠に論理積が選択される。このとき、図９（ｂ）での動作の結果、出力データレジスタ１３は“１１１０”となっていて、その２ビット目は“１”である。論理積は、「０＊１」の演算結果として“０”が得られる。０、１、３ビット目を出力データレジスタ１３のデータの０、１、３ビット目とし、２ビット目を演算結果“０”にしたデータを、出力データレジスタ１３に格納すると同時に制御部２ａへ出力する。イネーブル信号Ｓ０はアクティブ状態を保っている。図８のデータ例の場合では、“１０１０”が書き込みデータＤｗとして出力される。タイミングＴ３での第１ないし第４の１ビット出力部５１〜５４の書き込みデータＤｗは“１１１０”であったのに対して、今度は“１０１０”が書き込まれるので、２ビット目のみデータが変化することになる。
【００８４】
タイミングＴ５においても同様に、図９の（ｄ）に示すように、判定回路１４は送り出しデータレジスタ１２の３ビット目が“１”か“０”かの判定を行い、図８のデータ例の場合では、送り出しデータレジスタ１２のビット列は上記と同じの“１０１０”で、その３ビット目すなわち右から４つ目のビットの“１”を根拠に論理和が選択される。このとき、図９（ｃ）での動作の結果、出力データレジスタ１３は“１０１０”となっていて、その３ビット目は“１”である。論理和は、「１＋１」の演算結果として“１”が得られる。０、１、２ビット目を出力データレジスタ１３のデータの０、１、２ビット目とし、３ビット目を演算結果“１”にしたデータを、出力データレジスタ１３に格納すると同時に制御部２ａへ出力する。イネーブル信号Ｓ０はアクティブ状態を保っている。図８のデータ例の場合では、“１０１０”が書き込みデータＤｗとして出力される。タイミングＴ４での第１ないし第４の１ビット出力部５１〜５４の書き込みデータＤｗは“１０１０”であったのに対して、今度も“１０１０”が書き込まれることになる。
【００８５】
この構成により、第１ないし第４の１ビット出力部５１〜５４に格納されているデータは、図８に示すように、“１１０１”→“１１００”→“１１１０”→“１０１０”と１ビットずつ変化していく。以上の結果として、最終的に第１ないし第４の１ビット出力部５１〜５４に書き込まれるデータは、最初に送り出しデータレジスタ１２にセットしたデータ“１０１０”と同じになる。
【００８６】
以上のように、本実施例によれば、イネーブル信号を共通のイネーブル信号Ｓ０とし、全ビットを同時に第１ないし第４の１ビット出力部５１〜５４に書き込むが、そのデータ書き込みは４サイクルにわたっており、１サイクルごとに演算で１ビットずつ変化させているので、第１ないし第４の１ビット出力部５１〜５４のレジスタＲにおいてはデータ変化は１ビットずつの変化となる。これにより、出力バッファＢが同時に遷移することにより発生するノイズを低減することができる。また、本実施例は、従来のマイクロコントローラの資源を流用して、マイクロコードを少し追加するだけで実現可能で、貫通電流に起因するノイズの抑制のための回路の増加を最小限に抑えることができる。
【実施例４】
【００８７】
本発明の実施例４のマイクロコントローラは、実施例３の変形版で、データが変化するビットだけ１ビットずつデータを変化させながら順次に出力回路に書き込むことにより、実行サイクル数を減らすように工夫したものである。これは、上記の（７）に該当する。
【００８８】
図１０は本発明の実施例４におけるマイクロコントローラの構成を示す回路図である。
【００８９】
本実施例のマイクロコントローラにあっては、そのＣＰＵ１ｂは、実施例３のＣＰＵ１ａの構成に、送り出しデータレジスタ１２のデータと出力データレジスタ１３のデータを比較する比較器１７を追加し、比較器１７による比較結果を論理演算器１５に入力するようになっている。論理演算器１５は、比較器１７による比較結果が不一致を示しているときは実施例３と同様に該当ビットのみを変える動作を行い、一致を示しているときはその動作をスキップするように構成されている。その他の構成については、実施例３の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００９０】
次に、上記のように構成された実施例４のマイクロコントローラの動作を図１１のタイミングチャートを用いて説明する。ここでは、実施例１の場合と同様に、第１ないし第４の１ビット出力部５１〜５４に“１１０１”が格納されている状態から“１０１０”を書き込む場合の動作について説明する。
【００９１】
比較器１７によって該当ビットの送り出しデータレジスタ１２のデータと出力データレジスタ１３のデータとを比較する。図９（ａ）の場合は、０ビット目が“０”と“１”で不一致であるから、実施例３と同様に動作し、図９（ｂ）へ移る。図９（ｂ）の場合は、１ビット目が“１”と“０”で不一致であるから、実施例３と同様に動作し、図９（ｃ）へ移る。図９（ｃ）の場合は、２ビット目が“０”と“１”で不一致であるから、実施例３と同様に動作し、図９（ｄ）へ移る。図９（ｄ）の場合は、３ビット目が“１”と“１”で一致しているから、今度は動作をスキップする。その他の動作については、実施例３と同様であるので説明を省略する。
【００９２】
以上のように本実施例によれば、データが変化するビットのみ演算を実施するもので、データが変化しないビットの動作を省くことができるので、最小限のサイクル数で命令を実行することができる。
【実施例５】
【００９３】
本発明の実施例５のマイクロコントローラは、実施例３の変形版で、一度に変化させるビット幅を指定し、指定したビット幅ずつ論理演算器でデータを変化させながら順次に出力回路に書き込むことにより、実行サイクル数を減らすように工夫したものである。これは、上記の（８）に該当する。
【００９４】
図１２は本発明の実施例５におけるマイクロコントローラの構成を示す回路図である。
【００９５】
本実施例のマイクロコントローラにあっては、実施例３の構成に、１サイクルでデータを変化させるビット幅を論理演算器１５に指定するためのビット幅指定レジスタ６５と、セレクタ６６を追加したもので、ビット幅指定レジスタ６５はＣＰＵからのビット幅変更要求があった時のみデータが格納される。その他の構成については、実施例３の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【００９６】
次に、上記のように構成された実施例５のマイクロコントローラの動作を図１３のタイミングチャートを用いて説明する。ここでは、データを２ビット単位で変化させながら第１ないし第４の１ビット出力部５１〜５４に書き込む動作を説明する。
【００９７】
あらかじめ、ビット幅指定レジスタ６５に１サイクルで演算、書き込みを行うビット幅を格納しておく。ここでは、ビット幅指定レジスタ６５に“２”が格納されている。
【００９８】
第１ないし第４の１ビット出力部５１〜５４に格納されているデータを出力データレジスタ１３に格納する。
【００９９】
ビット幅指定レジスタ６５のデータ“２”に基づいて、データを２ビットずつ変化させることになる。したがって、判定回路１４において、送り出しデータレジスタ１２の０ビット目、１ビット目のデータをそれぞれ“１”か“０”か判定し、“１”のときは論理和を選択し、“０”のときは論理積を選択し、送り出しデータレジスタ１２の０ビット目と出力データレジスタ１３の０ビット目との演算と、送り出しデータレジスタ１２の１ビット目と出力データレジスタ１３の１ビット目との演算を行い、第１ないし第４の１ビット出力部５１〜５４に書き込む。
【０１００】
２ビット目、３ビット目についても同様に、送り出しデータレジスタ１２の２ビット目、３ビット目のデータをそれぞれ判定し、出力データレジスタ１３の２ビット目、３ビット目に演算を行い、第１ないし第４の１ビット出力部５１〜５４に書き込む。
【０１０１】
その他の動作については、実施例３と同様であるので説明を省略する。
【０１０２】
以上のように、本実施例によれば、１サイクルに演算、書き込みを行うビット幅を任意の数に設定できるので、出力回路５の態様に応じてビット幅を適切に切り替えて書き込み制御を行うことができる。すなわち、貫通電流に起因するノイズを抑えたいデータを出力する出力回路５ではビット幅を減らし、貫通電流に起因するノイズを抑える必要があるが、タイミングをなるべく揃えてデータを出力する必要がある出力回路５ではビット幅を増やすことにすれば、いずれの場合もノイズの発生を抑制することができる。
【０１０３】
なお、ビット幅指定レジスタ６５については、複数ある出力回路５ごとに個別にビット幅指定レジスタ６５を備え、それぞれの設定値の違いに応じて、出力回路５ごとに個別のビット幅でデータを変化させながら書き込むように構成してもよい。
【実施例６】
【０１０４】
本発明の実施例６のマイクロコントローラは、実施例３の変形版で、論理演算器をもって１ビットずつデータを変化させながら書き込みデータを出力回路に書き込む命令と、書き込みデータを全ビット同時に出力回路に書き込む命令との切り替えを行うように工夫したものである。これは、上記の（１１）に該当する。
【０１０５】
図１４は本発明の実施例６におけるマイクロコントローラの構成を示す回路図である。
【０１０６】
本実施例のマイクロコントローラにあっては、実施例３の構成に、１ビットずつデータを変化させながら順次に出力回路に書き込む命令と、全ビットのデータを同時に変化させて一時に出力回路に書き込む命令とを切り替えるための命令切り替えレジスタ６７と、セレクタ６８を追加したもので、命令切り替えレジスタ６７はＣＰＵからの命令切り替え要求があったときのみデータが格納される。その他の構成については、実施例３の場合と同様であるので、同一部分に同一符号を付すにとどめ、説明を省略する。
【０１０７】
次に、上記のように構成された実施例６のマイクロコントローラの動作を説明する。
【０１０８】
命令切り替えレジスタ６７に“１”（＝“Ｈ”）が設定されているときに、実施例３に記載の命令を実行すると、論理演算器１５での演算によって１ビットずつデータを変化させながら第１ないし第４の１ビット出力部５１〜５４にデータを書き込む。
【０１０９】
一方、命令切り替えレジスタ６７に“０”（＝“Ｌ”）が設定されているときに、実施例３に記載の命令を実行すると、送り出しデータレジスタ１２のデータが全ビット同時に第１ないし第４の１ビット出力部５１〜５４に書き込まれる。
【０１１０】
以上のように、本実施例によれば、１ビットずつデータを変化させながら順次に出力回路に書き込む命令と、全ビット同時に変化させて一時に書き込む命令の切り替えが可能であるので、出力回路の態様に応じて命令の態様を適切に切り替えて書き込み制御を行うことができる。すなわち、貫通電流に起因するノイズを抑えたいデータを出力する出力回路５に対しては１ビットずつデータを変化させながら順次に書き込む命令を実行し、貫通電流に起因するノイズを抑える必要がなく、タイミングを揃えて出力する必要があるデータを出力する出力回路５に対しては全ビット同時に変化させて一時に書き込む命令を実行することにすれば、出力回路５から出力するデータの用途に応じてノイズを抑制する機構の切り替えが可能である。
【０１１１】
なお、命令切り替えレジスタ６７については、複数ある出力回路５ごとに個別に命令切り替えレジスタ６７を備え、それぞれの設定値の“１”，“０”の違いに応じて、出力回路５単位で、書き込み制御の命令を選択するように構成してもよい。
【０１１２】
なお、個々の出力回路５にアドレスが割り当てられており、アドレスを指定することで出力回路５を指定できる場合には、命令切り替えレジスタ６７に代えてアドレス判定回路を利用し、アドレス判定回路が指定するアドレスの出力回路にデータを書き込むときに、１ビットずつデータを変化させながら順次に書き込む命令を選択し、それ以外のときは全ビット同時に変化させて一時に書き込む命令を選択するように構成してもよい。
【０１１３】
これまで実施例１〜６を説明してきたが、これら実施例はあくまで一例に過ぎず、様々な改変が可能であることは言うまでもない。
【０１１４】
１つの出力回路を構成する１ビット出力部の数は４つ以外、任意である。
【０１１５】
なお、上記において複数の実施の形態、実施例について説明したが、本発明の趣旨を逸脱しない範囲で、複数の実施の形態、実施例における各構成要素を任意に組み合わせてもよい。
【産業上の利用可能性】
【０１１６】
本発明の技術は、マイクロコントローラにおいて各出力バッファでの貫通電流に起因するノイズの発生を抑制できるとともに出力回路数が増加しても回路面積の増加を抑えることができ、特に車載系マイコンや表示系マイコンの小規模化、低コスト化に有用である。
【符号の説明】
【０１１７】
１，１ａ，１ｂ  ＣＰＵ
２，２ａ  制御部
４  内部バス
５  出力回路
１１  デコーダ
１２  送り出しデータレジスタ
１３  出力データレジスタ
１４  判定回路
１５  論理演算器
１６  セレクタ
１７  比較器
２１，２２，２３，２４  書き込みデータレジスタ
２５  レジスタ
３１，３２，３３，３４  遅延回路
５１，５２，５３，５４  １ビット出力部
６１  セレクタ制御レジスタ
６２，６３，６４  セレクタ
６５  ビット幅指定レジスタ
６７  命令切り替えレジスタ
Ｄｗ  書き込みデータ
Ｓ０，Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓｉ  イネーブル信号
Ｑ  書き込み要求
【図１】
2011103017.tif 000003
【図２】
2011103017.tif 000004
【図３】
2011103017.tif 000005
【図４】
2011103017.tif 000006
【図５】
2011103017.tif 000007
【図６】
2011103017.tif 000008
【図７】
2011103017.tif 000009
【図８】
2011103017.tif 000010
【図９】
2011103017.tif 000011
【図１０】
2011103017.tif 000012
【図１１】
2011103017.tif 000013
【図１２】
2011103017.tif 000014
【図１３】
2011103017.tif 000015
【図１４】
2011103017.tif 000016
【図１５】
2011103017.tif 000017
【図１６】
2011103017.tif 000018