(57)【特許請求の範囲】
【請求項１】
少なくとも中央処理ユニットと、
上記中央処理ユニットに接続される第１のバスと、
上記周辺モジュールに接続される第２のバスと、
上記第１のバスと上記第２のバスとの間に設けられ、この２つのバスの信号の橋渡しをする制御回路と、
上記第２のバスに接続され、上記制御回路を介して上記中央処理ユニットによってアクセスされ、複数のレジスタを有する周辺モジュールと、
上記第２のバスに接続されるメモリ回路とを有するデータ処理装置であって、
上記周辺モジュールは、上記中央処理ユニットの動作クロックに比べて低い周波数の動作クロックで動作するものであり、
上記制御回路は上記周辺モジュールのレジスタの値を読み出し、上記メモリ回路に保持させる制御を行うことが可能であって、
上記周辺モジュールは、上記複数のレジスタの少なくとも一つのレジスタの値が変更されたことを示す検出信号を上記制御回路に出力するものであり、
上記制御回路は、上記検出信号に応答して上記少なくとも一つのレジスタで変更された値の読み出し動作を実行するものであり、
上記制御回路は、上記中央処理ユニットによる上記周辺モジュールに対するライトアクセス時には、当該ライトアクセス動作の終了まで上記検出信号に応答して上記少なくとも一つのレジスタで変更された値の読み出し動作を保留するものであるデータ処理装置。
【請求項２】
上記制御回路は、上記周辺モジュールからの上記検出信号に応答して、上記値が変更された上記少なくとも一つのレジスタのアドレスを生成して上記読み出し動作を実行して、上記読み出し動作により読み出された値を上記メモリ回路に保持させるものである請求項１に記載のデータ処理装置。
【請求項３】
上記周辺モジュールは、第１と第２の周辺モジュールを含み、
上記制御回路は、上記第１と第２の周辺モジュールから同時に上記検出信号が生成された時には、所定の優先順位に従って値が変更されたレジスタの読み出し動作を行うものである請求項２に記載のデータ処理装置。
【請求項４】
上記複数のレジスタは、データを保持するデータレジスタである請求項３に記載のデータ処理装置。
【請求項５】
少なくとも上記中央処理ユニットと、上記周辺モジュールと、上記メモリ回路と、上記制御回路とが１個の半導体チップ上に形成されてなることを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
上記周辺モジュールは、シリアルインタフェースと、アナログ／ディジタル変換回路とを含むものである請求項５に記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータにおける周辺モジュールのアクセス方式に適用して有効な技術に関し、例えば周辺モジュールの動作クロックの周波数が中央処理ユニットの動作クロックの周波数よりも低いマイクロコンピュータにおける周辺モジュールのアクセス方式に利用して有効な技術に関する。
【０００２】
【従来の技術】
中央処理ユニット（以下、ＣＰＵと称する）と、タイマ回路やシリアルコミュニケーションインタフェース回路、Ａ−Ｄ変換回路等の周辺モジュールとを含むワンチップのマイクロコンピュータにおいて、低消費電力化および低ノイズ化のため、周辺モジュールの動作クロックの周波数をＣＰＵの動作クロックの周波数よりも低く設定して、周辺モジュールをＣＰＵに比べ低速で動作させるようにしたものがある。また、かかる動作周波数の異なるＣＰＵと周辺モジュールとの間の信号の授受を可能にするため、ＣＰＵに接続されるＣＰＵバスと周辺モジュールに接続される周辺バスとの間に、信号の橋渡しをするバス制御手段（バスステートコントローラ）が設けられているものがある。
【０００３】
【発明が解決しようとする課題】
上記のように、周辺モジュールをＣＰＵに比べ低い周波数で動作させるように構成された従来のマイクロコンピュータにおいては、ＣＰＵによる内蔵周辺モジュールのアクセスサイクルは当該モジュールの動作周波数により決定された。例えば、ＣＰＵの動作周波数の１／４の動作周波数で動く周辺モジュールをＣＰＵがリードアクセスした場合を考えると、周辺モジュールはＣＰＵからのアクセス要求を受けてからデータを出力できるまでに、周辺モジュールの動作周波数で１サイクル必要であり、ＣＰＵはその次の１サイクルの間にデータを読み込むことになる。また、周辺モジュールをＣＰＵがライトアクセスした場合にも、周辺モジュールはＣＰＵからのアクセス要求を受けてからデータを取り込むことができるようにまでに周辺モジュールの動作周波数で１サイクル必要で、周辺モジュールはその次のサイクルでデータを取り込むことになる。
【０００４】
そのため、周辺モジュールのリードやライトには、最短でも周辺モジュールの動作周波数で２サイクルすなわちＣＰＵの動作周波数では８サイクルもかかってしまう。従来のマイクロコンピュータでは、この間ＣＰＵは他の処理を行なうことができないため、ＣＰＵの性能低下につながっていた。なお、ここで周辺モジュールのリード、ライトとは、周辺モジュール内部に設けられているレジスタ類のデータのリードやライトを意味する。
【０００５】
本発明の目的は、上記のように低消費電力化および低ノイズ化のため、周辺モジュールをＣＰＵに比べ低い周波数で動作させた際に、周辺モジュールのアクセスサイクルが増大し、ＣＰＵの性能が低下するのを防止することにある。
【０００６】
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【０００７】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
【０００８】
すなわち、少なくともＣＰＵ（中央処理ユニット）と、ＣＰＵに比べて低い周波数の動作クロックで動作する周辺モジュールとを備えたマイクロコンピュータもしくはマイクロコントローラのようなデータ処理装置において、ＣＰＵに接続されるＣＰＵバスと周辺モジュールに接続される周辺バスとの間に設けられ、２つのバス間の信号の橋渡しをするバスステートコントローラに、ＣＰＵが周辺モジュールに対してライトアクセスする際に、ＣＰＵからＣＰＵバスに出力されるアドレス信号およびデータ信号を取り込んで保持する少なくとも１段以上のライト用のバッファを設けるようにしたものである。
【０００９】
上記した手段によれば、ＣＰＵが周辺モジュールのライトコマンドとアドレスやデータを出力すれば、後はバスステートコントローラがそのコマンドとアドレスをデコードして周辺モジュールに対する信号を形成して出力するとともに、ＣＰＵに対してバスサイクル終了信号を返送するので、ＣＰＵは周辺モジュールのライトコマンドとアドレスやデータを出力した後、他の処理を行なうことができる。そのため、ＣＰＵのスループットが向上するようになる。
【００１０】
また、好ましくは、上記ライト用のバッファはファーストイン・ファーストアウト方式の多段バッファで構成する。これによって、周辺モジュールに対して連続したライト動作を行なう場合にも、ライト用のバッファに複数のライトデータを格納することができるため、ＣＰＵは短時間に他の処理へ移行することができ、ＣＰＵのスループットがさらに向上する。
【００１１】
さらに、バスステートコントローラには、周辺モジュール内の所定のレジスタの内容と同一の内容を保持するリードバッファと、周辺モジュールから変化のあったレジスタの値を読み出すためのレジスタコピー制御回路とを設ける。これによって、ＣＰＵが周辺モジュールのレジスタの内容を読み出すときにも、ＣＰＵは１サイクルで所望のデータを得ることができ、ＣＰＵのスループットが向上するようになる。
【００１２】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
【００１３】
図１には、本発明が適用されるＣＰＵと周辺モジュールとを備えたマイクロコンピュータの一実施例の概略構成が示されている。特に制限されないが、図１に示されている各回路ブロックは、公知の半導体集積回路の製造技術により、単結晶シリコンのような１個の半導体チップ上に形成されている。
【００１４】
図１に示されているように、この実施例のマイクロコンピュータは、プログラム制御方式の中央処理ユニットＣＰＵと、ＣＰＵが実行するプログラムや制御に必要な固定データを記憶するリード・オンリ・メモリＲＯＭと、ＣＰＵの作業領域を提供するとともにプログラムの実行に伴って得られたデータを一時的に格納したりするためのランダム・アクセス・メモリＲＡＭと、ＣＰＵに代わって乗算などの演算処理を行なう演算ユニットＭＵＬＴと、ＣＰＵに代わって外部のハードディスク装置のような記憶装置と内部のＲＡＭとの間でＤＭＡ（ダイレクト・メモリ・アクセス）方式のデータ転送を行なうＤＭＡコントローラＤＭＡＣとを備えている。これらの回路は、ＣＰＵアドレスバスＩＡＢおよびＣＰＵデータバスＩＤＢを介して接続されている。
【００１５】
この実施例のマイクロコンピュータには、上記ＣＰＵバスＩＡＢ，ＩＤＢとは別個に周辺アドレスバスＰＡＢおよび周辺データバスＰＤＢが設けられている。この周辺アドレスバスＰＡＢおよび周辺データバスＰＤＢには、所定の割込み要因の発生に基づいてＣＰＵに対して割込み要求を行なう割込みコントローラＩＮＴＣ、エミュレーションの際にユーザーが指定したブレークポイントでＣＰＵに対しプログラムの実行停止を要求したりするユーザーブレークコントローラＵＢＣ、アナログ・デジタル変換回路ＡＤＣ，外部装置との間でシリアル通信を行なうシリアルコミュニケーションインタフェースＳＣＩ，時間管理用のタイマー回路ＴＩＭなどの周辺モジュールＰＲＭ、外部装置との間の信号の入出力を行なう入出力ポートＰＯＲＴが結合されている。なお、入出力ポートＰＯＲＴにはＣＰＵが接続されたＣＰＵバスＩＡＢ，ＩＤＢも接続され、ＣＰＵもしくはＤＭＡＣが直接外部装置とデータの授受を行なえるように構成されている。
【００１６】
また、上記ＣＰＵバスＩＡＢ，ＩＤＢと周辺バスＰＡＢ，ＰＤＢとの間には２つのバス上の信号のタイミングを調整してＣＰＵと周辺モジュールとの間の信号の橋渡しをするバスステートコントローラＢＳＣが設けられている。特に制限されるものでないが、この実施例では、上記ＲＯＭが所定のブロック単位でデータの一括消去が可能なフラッシュメモリにより構成されている。このフラッシュメモリに対するデータの書込みを制御するためＲＯＭの近傍にはフラッシュコントローラＦＬＡＳＨＣが設けられている。
【００１７】
さらに、内部の動作に必要とされるクロックを発生するクロック発生回路ＣＰＧが設けられており、このクロック発生回路ＣＰＧには、外部端子ＥＸＴＡＬを介して所定の固有震動数を有する水晶発振子ＸＴＡＬが結合される。クロック発生回路ＣＰＧは、外部の水晶発振子ＸＴＡＬとともに、その固有振動数に見合った所定の周波数・位相を有するクロック信号を形成し、ＰＬＬ回路で逓倍して８０ＭＨｚのクロックφｃとそれを４分周した２０ＭＨｚのようなクロックφｐを形成しマイクロコンピュータの各部に供給する。
【００１８】
本実施例では、ＣＰＵには８０ＭＨｚの基準クロックφｃが供給され、周辺モジュールＰＲＭには基準クロックφｃよりも周波数の低い２０ＭＨｚの周辺クロックφｐが供給されており、周辺モジュールＰＲＭはＣＰＵに比べて低速で動作するように構成されている。
【００１９】
図２には上記周辺モジュールＰＲＭの基本的な構成が示されている。
【００２０】
周辺回路モジュールＰＲＭは、制御用のコントロールレジスタやモジュール内部状態を反映するフラグを有するステータスレジスタ、データ保持用のデータレジスタ等のレジスタ１１ａ〜１１ｃと、これらのレジスタ１１ａ〜１１ｃが接続されたモジュール内部バス１２と、該モジュール内部バス１２と前記周辺データバスＰＤＢとの信号の入出力を行なう内部インタフェース回路１３と、モジュールの本来の機能を実行するためのモジュール本体回路１４と、周辺アドレスバスＰＡＢ上のアドレス信号およびバスステートコントローラＢＳＣから供給されるリードストローブ信号ＲＳやライトストローブ信号ＷＳをデコードして上記レジスタ１１ａ〜１１ｃのいずれかを選択するデコーダ回路１５等から構成されている。
【００２１】
上記モジュール本体回路１４は、モジュールが実行すべき機能に応じて種々の構成を採るもので、例えば演算器とそれを制御する制御回路（コントロールレジスタの値をデコードするデコーダ）などで構成される。また、周辺モジュールが例えばシリアルコミュニケーションインタフェースの場合、モジュール本体回路１４にはシリアル／パラレル変換回路等が設けられる。周辺モジュールが例えばタイマの場合、モジュール本体回路１４にはクロックを計数するタイマカウンタ等が設けられる。このモジュール本体回路１４や内部インタフェース回路１３が上記周辺クロックφｐを受けて動作する。
【００２２】
特に限定されるものでないが、上記モジュール内部バス１２や周辺データバスＰＤＢは、例えば８ビットや１６ビット、３２ビットのようなデータ幅とされる。各周辺モジュールＰＲＭは、ＣＰＵによって上記コントローラレジスタが所定の値に設定されると、動作を開始するように構成される。周辺モジュールがシリアルコミュニケーションインタフェースやＡ／Ｄ変換回路のように、外部装置との間の信号の送受信を行なう周辺モジュールでは、モジュール本体回路１４は入出力ポートＰＯＲＴを介して所定の外部端子に接続される。
【００２３】
図３には上記ＣＰＵバスＩＡＢ，ＩＤＢと周辺バスＰＡＢ，ＰＤＢとの間に設けられた上記バスステートコントローラＢＳＣの一実施例が示されている。
【００２４】
この実施例のバスステートコントローラＢＳＣは、ＣＰＵから供給されるバスコマンドコードＣＭＤおよびアドレス信号ＩＡＢをデコードして周辺モジュールの選択信号ＭＳＬやリードストローブ信号ＲＳやライトストローブ信号ＷＳを形成し周辺モジュールＰＲＭへ出力するデコード回路２１と、ＣＰＵデータバスＩＤＢと周辺データバスＰＤＢ間のデータ信号のタイミングを調整するＩ／Ｏインタフェース回路２２と、上記デコード回路２１からの信号に基づいてバスステートコントローラＢＳＣ内部を制御したりＣＰＵに対してバスサイクル終了信号ＢＵＳＲＤＹを返したりする制御回路（ステートマシンと呼ばれることもある）２３とを備えている。
【００２５】
このバスステートコントローラＢＳＣには、ＣＰＵに供給されるクロックと同じ基準クロックφｃが供給され、基準クロックφｃによって動作するようにされている。ＣＰＵから周辺モジュールＰＲＭに対するアクセスがあってからバスサイクルが終了するまでの時間（サイクル数）は周辺モジュールによって異なるが、バスステートコントローラＢＳＣにおける制御回路２３は、デコード回路２１からの信号によっていずれの周辺モジュールに対するアクセスか知ることができるため、従来のマイクロコンピュータでは、アクセスのあったモジュールに対応したタイミングでバスサイクル終了信号ＢＵＳＲＤＹをＣＰＵに返していた。
【００２６】
一方、この実施例のバスステートコントローラＢＳＣには、ＣＰＵアドレスバスＩＡＢおよびＣＰＵデータバスＩＤＢ上のアドレス信号およびデータ信号を取り込んで保持するアドレスバッファ２４とライトバッファ２５およびライトバッファ２５にデータが取り込まれているか否かを示す有効ビット２６とが設けられている。そして、制御回路２３は、アドレスバッファ２４とライトバッファ２５にＣＰＵバスＩＡＢ，ＩＤＢ上のアドレス信号およびデータ信号が取り込まれると、直ちに有効ビットに“１”をセットするとともにバスサイクル終了信号ＢＵＳＲＤＹをＣＰＵに返すように構成されている。なお、この実施例では、ＣＰＵからのリード要求に対して周辺モジュールＰＲＭから周辺データバスＰＤＢを介して返送されるデータ信号はＩ／Ｏインタフェース回路２２を介してＣＰＵデータバスＩＤＢへ出力されるように構成されている。
【００２７】
次に、図３の実施例のバスステートコントローラＢＳＣの動作を説明する。ライト動作時は、ＣＰＵがバスステートコントローラＢＳＣに、バスコマンドＣＭＤで周辺モジュールに対するライト動作を指示し、当該周辺モジュールのアドレスをＣＰＵアドレスバスＩＡＢに、またライトデータをＣＰＵデータバスＩＤＢに出力する。この時、バスステートコントローラＢＳＣ内のライトバッファ２５の有効ビット２６が“０”でデータが保持されていなければ、基準クロックφｃの１サイクルでライトバッファ２５にデータが、またアドレスバッファ２４にアドレスが、それぞれライトされる。そして、バスステートコントローラＢＳＣ内の有効ビット２６が“１”にセットされる。有効ビット２６は“１”ならデータが格納、“０”なら格納されていないことを示す。
【００２８】
次に、バスステートコントローラＢＳＣはバスサイクル終了指示信号ＢＵＳＲＤＹをハイレベルにアサートし、ＣＰＵはこれを検知して周辺モジュールへのライトサイクルをφｃ基準の１サイクルで終了する。一方、バスステートコントローラＢＳＣは有効ビット２６が“１”なら直ちに当該アドレスに対応した周辺モジュールＰＲＭに対し、モジュールセレクト信号ＭＳＬ、ライトストローブＷＲをアサートし、アドレスバッファ２４に保持されているアドレスを周辺アドレスバスＰＡＢに、またライトバッファ２５に保持されているライトデータを周辺データバスＰＤＢへ出力する。バスステートコントローラＢＳＣから周辺モジュールＰＲＭへのライトサイクルは周辺クロックφｐの２サイクル（基準クロックφｃの８サイクル）で行われ、サイクル終了時に有効ビット２６が“０”にクリアされ、アドレスバッファ２４およびライトバッファ２５は新たなデータを受け付けることができるようになる。
【００２９】
なお、ＣＰＵによるライト動作時に有効ビット２６が“１”になっている時は、バスステートコントローラＢＳＣは周辺モジュールＰＲＭへのライト動作が終了し有効ビット２６が“０”にクリアされるまで、ＣＰＵに対するバスサイクル終了指示信号ＢＵＳＲＤＹをネゲートして、ＣＰＵのバスサイクルにウェイトをかける。そして有効ビット２６が“０”にクリアされると直ちにライトバッファ２５にデータをライトしバスサイクル終了指示信号ＢＵＳＲＤＹをアサートし、ＣＰＵのライトサイクルが終了する。
【００３０】
また、リード動作時は有効ビット２６が“０”なら、バスステートコントローラＢＳＣは周辺モジュールＰＲＭへライト動作を行っていないので、直ちに当該アドレスに対応した周辺モジュールＰＲＭに対し、モジュールセレクト信号ＭＳＬ、リードストローブＲＳをアサートし、周辺アドレスバスＰＡＢにアドレスを出力し、周辺モジュールＰＲＭへのリード動作を開始する。リードサイクルは周辺クロックφｐの２サイクル（基準クロックφｃの８サイクル）で行われる。周辺モジュールＰＲＭが周辺データバスＰＤＢへ出力したデータをバスステートコントローラＢＳＣがＩ／Ｏインタフェース回路２２を介しＣＰＵデータバスＩＤＢ上に出力し、リードサイクルの終わりにバスサイクル終了信号ＢＵＳＲＤＹをアサートする。ＣＰＵはバスサイクル終了信号ＢＵＳＲＤＹのアサートを認識しＣＰＵデータバスＩＤＢの値を取り込みリードサイクルが終了する。従って、この実施例ではＣＰＵによる周辺モジュールＰＲＭのリードサイクルは基準クロックφｃで８サイクル以上要する。
【００３１】
一方、周辺モジュールに対するリード動作開始時に有効ビット２６が“１”なら、バスステートコントローラＢＳＣは周辺モジュールＰＲＭへのライト動作中であるので、ライト動作が終了し有効ビット２６が“０”にクリアされるまでバスサイクル終了信号ＢＵＳＲＤＹをネゲートしＣＰＵのバスサイクルにウェイトをかける。そして、有効ビット２６が“０”にクリアされてライトサイクルが終了すると、直ちに当該アドレスに対応した周辺モジュールＰＲＭに対し、モジュールセレクト信号ＭＳＬ、リードストローブＲＳをアサートし、アドレスを周辺アドレスバスＩＡＢに出力し、周辺モジュールＰＲＭへのリード動作を開始する。
【００３２】
図４には本実施例において有効ビットが“０”のときのライトサイクルでの各アドレスバスおよびデータバスとバスサイクル終了信号ＢＵＳＲＤＹのタイミングが示されている。
【００３３】
従来方式ではバスサイクル終了信号ＢＵＳＲＤＹがＣＰＵによるライトサイクル開始後例えば基準クロックで３サイクル後に返されていたものが、本実施例に従うと、図４に示すように、ライトサイクル開始後１サイクル（Ｔｄ）でバスサイクル終了信号ＢＵＳＲＤＹが返されるようになる。そのため、ＣＰＵは、周辺モジュールに対するライト動作のためにＣＰＵバスＩＡＢ，ＩＤＢ上へアドレス信号およびデータ信号を出力した後、バスステートコントローラＢＳＣからのバスサイクル終了信号ＢＵＳＲＤＹを受けて速やかに他の処理に移行することができるようになり、ＣＰＵのスループットが向上するようになる。
【００３４】
図５は、本発明の第２の実施例を示すバスステートコントローラの構成図である。本実施例のバスステートコントローラは、第１の実施例における１段のアドレスバッファ２４およびライトバッファ２５をＦＩＦＯ（ファーストイン・ファーストアウト）方式の多段バッファ２７に代えたものである。また、この実施例では、ＦＩＦＯバッファ２７が空っぽになっているか否か示すエンプティビット３２と、ＦＩＦＯバッファ２７が満杯になっているか否か示すフィルビット３１と、ＦＩＦＯバッファ２７内の次にデータが書込まれる位置（アドレス）を示すライトポインタ３３と、ＦＩＦＯバッファ２７内の次にデータが読み出される位置を示すリードポインタ３４とが設けられている。
【００３５】
ライト動作時は、ＣＰＵはバスステートコントローラＢＳＣに、バスコマンドＣＭＤで周辺モジュールＰＲＭに対するライト動作を指示し、当該周辺モジュールのアドレスをＣＰＵアドレスバスＩＡＢに出力し、ライトデータをＣＰＵデータバスＩＤＢに出力する。この時、バスステートコントローラＢＳＣ内のＦＩＦＯ型ライトバッファ２７が有効なデータで完全に満たされているのでなければ（フィルビット３１が“０”ならば）、基準クロックφｃの１サイクルでＦＩＦＯバッファ２７にデータおよびアドレスがそれぞれライトされ、ライトポインタ３３がインクリメントされる。そして、バスステートコントローラＢＳＣはバスサイクル終了指示信号ＢＵＳＲＤＹをアサートし、ＣＰＵは周辺モジュールＰＲＭへのライトサイクルを終了する。
【００３６】
エンプティビット３２はＦＩＦＯバッファ２７内に有効なデータが１つも入っていない時に“１”とされ、それ以外は“０”とされる。フィルビット３１はＦＩＦＯバッファ２７が有効なデータで一杯になっている時に“１”とされ、それ以外は“０”とされる。ＦＩＦＯバッファ２７の容量をｍ、ライトポインタ３３の値をＷＰ、リードポインタ３４の値をＲＰとすると、
１）ＷＰ＞ＲＰの時
エンプティビット＝０，
ＷＰ＝ｍ，ＲＰ＝０の時にフィルビット＝１
それ以外の時にフィルビット＝０
２）ＷＰ＜ＲＰの時
エンプティビット＝０，
ＲＰ＝ＷＰ＋１の時にフィルビット＝１
それ以外の時にフィルビット＝０
３）ＷＰ＝ＲＰの時
エンプティビット＝１，フィルビット＝０
となる。
【００３７】
バスステートコントローラＢＳＣはエンプティビット３２が“０”ならば、直ちにＦＩＦＯバッファ２７の先頭にあるアドレスおよびデータを周辺アドレスバスＰＡＢおよび周辺データバスＰＤＢに出力する。このときバスステートコントローラＢＳＣは、周辺モジュールの選択信号ＭＳＬおよびライトストローブ信号ＲＳもアサートする。バスステートコントローラＢＳＣから周辺モジュールＰＲＭへのライトサイクルはφｐの２サイクルで行われ、サイクル終了時にリードポインタ３４がインクリメント（＋１）される。
【００３８】
ライト動作時にフィルビット３１が“１”すなわちＦＩＦＯバッファ２７がデータで満たされた時は、バスステートコントローラＢＳＣは周辺モジュールＰＲＭへのライト動作を行ないライトポインタ３３がインクリメントされフィルビット３１が“０”になるまで、ＣＰＵに対するバスサイクル終了指示信号ＢＵＳＲＤＹをアサートして、ＣＰＵのバスサイクルにウェイトをかける。そしてフィルビット３１が“０”になると直ちにバスサイクル終了指示信号ＢＵＳＲＤＹをネゲートしてＦＩＦＯバッファ２７にＣＰＵからのデータをライトさせて、ライト後にバスサイクル終了指示信号ＢＵＳＲＤＹをアサートしＣＰＵのバスサイクルを終了させる。
【００３９】
また、リード動作時はエンプティビット３２が“１”で、バスステートコントローラＢＳＣが周辺モジュールＰＲＭへライト動作を行っていないなら、直ちに当該アドレスに対応した周辺モジュールに対するモジュールセレクト信号ＭＳＬおよびリードストローブＲＳをアサートし、アドレスを周辺アドレスバスＰＡＢに出力し、周辺モジュールへのリード動作を開始する。リードサイクルは周辺クロックφｐの２サイクルで行われる。そのため、バスステートコントローラＢＳＣはＣＰＵに対しバスサイクル終了指示信号ＢＵＳＲＤＹをネゲートし、周辺モジュールＰＲＭが周辺データバスＰＤＢへ出力したデータをＢＳＣ内のＩ／Ｏインタフェース回路２２を介してＣＰＵデータバスＩＤＢに出力し、リードサイクルの終わりにバスサイクル終了信号ＢＵＳＲＤＹをアサートする。ＣＰＵはバスサイクル終了信号ＢＵＳＲＤＹのアサートを認識するとＣＰＵデータバスＩＤＢの値の取り込みリードサイクルが終了する。
【００４０】
リード動作時にエンプティビット３２が“０”で、バスステートコントローラＢＳＣが周辺モジュールへライト動作中であるなら、ＦＩＦＯバッファ２７内にある全てのデータのライト動作が終了しエンプティビット３２が“１”になるまでバスサイクル終了信号ＢＵＳＲＤＹをネゲートしてＣＰＵのバスサイクルにウェイトをかける。そして、ライト動作が終了すると、直ちに当該アドレスに対応した周辺モジュールに対し、モジュールセレクト信号ＭＳＬおよびリードストローブＲＳをアサートし、アドレスを周辺アドレスバスＰＡＢに出力し、周辺モジュールへのリード動作を開始させる。
【００４１】
このようにＦＩＦＯバッファ２７を設けたことにより、連続ライト時でもＣＰＵから周辺モジュールへのライトアクセスを実効的に１データ当たり１サイクルで行うことが出来る。
【００４２】
図６は、本発明の第３の実施例を示すバスステートコントローラの構成図である。図６に示すように、本実施例では、周辺モジュールＰＲＭ内に内部のレジスタ１１の値が変化したことを検出するレジスタ変化検出回路１６が設けられている。一方、バスステートコントローラＢＳＣ内には、周辺モジュールＰＲＭ内のレジスタ１１の値のコピーを持つリードバッファ２８と、周辺モジュールＰＲＭに設けられている上記レジスタ変化検出回路１６から出力される検出信号Ｄｒｃを受けて周辺モジュール内の変化のあったレジスタの値を読み出すためのレジスタコピー制御回路２９とが設けられている。
【００４３】
レジスタ変化検出回路１６は、レジスタのリセット信号、ライト信号、フラグセット信号、フラグクリア信号およびデータキャプチャ信号等の論理和をとる論理ゲートとこの論理ゲートの出力が変化したときにセットされるフラグ（フリップフロップ）などにより構成することができる。リードバッファ２８は、レジスタもしくはＲＡＭのようなメモリ回路で構成され、常に周辺モジュール内の対応するレジスタのコピーを持つように制御される。リードバッファ２８の記憶容量を抑えるため、コピーするレジスタをユーザが頻繁にリードアクセスするフラグ系およびデータ系のレジスタに限定してもよい。レジスタコピー制御回路２９は、常にレジスタのコピーをリードバッファ２８に保持するため、リセット解除直後やレジスタ変化検出信号Ｄｒｃが入力されたときに、周辺モジュールに対するモジュール選択信号ＭＳＬやリードストローブ信号ＲＳをアサートし、コピーしようとするレジスタのアドレスを生成して周辺アドレスバスＰＡＢより周辺モジュールＰＳＭへ出力してレジスタをリードし、読み出した値をリードバッファ２８に保持させるように構成される。
【００４４】
レジスタコピー制御回路２９が対応するレジスタのリード動作を開始する時、バスステートコントローラＢＳＣが周辺モジュールへのライト動作中であれば、レジスタコピー制御回路２９はリード動作をライト動作の終了まで保留する。また、レジスタ変化検出信号Ｄｒｃが複数のモジュールから同時にアサートされている場合は内部で設定された優先順位に従い、リード動作を行う。リードサイクルは周辺クロックφｐの２サイクルで行われる。リード動作が終了すると対応する周辺モジュール内のレジスタ変化検出回路１６はクリアされ、バスステートコントローラＢＳＣに対する検出信号Ｄｒｃがネゲートされる。このようにしてリードバッファ２８にはレジスタコピー制御回路２９により自動的にレジスタの値がリードされる。
【００４５】
ＣＰＵから周辺モジュールＰＲＭのライト動作は、ＣＰＵがバスステートコントローラＢＳＣにバスコマンドでライト動作を指示し、当該周辺モジュールのアドレスをＣＰＵアドレスバスＩＡＢに出力し、ライトデータをＣＰＵデータバスＩＤＢに出力することで行われる。バスステートコントローラＢＳＣはリードバッファ２８へのロード動作中でなければ直ちに、動作中ならば動作終了を待って、当該周辺モジュールに対するモジュールセレクト信号ＭＳＬ、ライトストローブＷＳをアサートし、アドレスを周辺アドレスバスＰＡＢに出力することで行う。ライトサイクルは周辺クロックφｐの２サイクルで行われる。バスステートコントローラＢＳＣはライト動作終了までＣＰＵに対してバスサイクル終了指示信号ＢＵＳＲＤＹをネゲートしてＣＰＵをウェイト状態にする。そしてライト動作終了時にバスサイクル終了指示信号ＢＵＳＲＤＹがアサートされ、ＣＰＵはライト動作を終了する。
【００４６】
ＣＰＵによる周辺モジュールＰＲＭのリード動作もライト動作と同様にして行なわれる。リード動作は、ＣＰＵがバスステートコントローラＢＳＣにバスコマンドＣＭＤでリード動作を指示し、当該周辺モジュールのアドレスを内部アドレスバスＩＡＢに出力することで行われる。バスステートコントローラＢＳＣは、このときのＣＰＵのリードがバスステートコントローラＢＳＣ内のリードバッファ２８がコピーを持っているレジスタに対するリードであり、対応するレジスタのリードバッファ２８に対するレジスタ変化検出信号Ｄｒｃがネゲートしていれば、直ちにリードバッファ２８内の対応するレジスタのデータをＣＰＵデータバスＩＤＢに出力し、バスサイクル終了指示信号ＢＵＳＲＤＹをアサートする。ＣＰＵはＣＰＵデータバスＩＤＢに出力されたデータを内部に取り込みリード動作を終了する。かかるリード動作は基準クロックφｃの１サイクルで終了する。
【００４７】
一方、ＣＰＵによる周辺モジュールＰＲＭのリードがあったときに、対応するリード要求のあったレジスタのレジスタ変化検出信号Ｄｒｃがアサートしていれば、バスステートコントローラＢＳＣは、バスサイクル終了指示信号ＢＵＳＲＤＹをネゲートしてＣＰＵをウェイト状態にする。そして、バスステートコントローラＢＳＣはリードバッファ２８に対応する周辺モジュール内のレジスタの値をロードし、レジスタ変化検出信号Ｄｒｃがネゲートされるのを受けてバスステートコントローラＢＳＣはリードバッファ２８内の対応するレジスタの値をＣＰＵデータバスＩＤＢに出力し、バスサイクル終了指示信号ＢＵＳＲＤＹをアサートする。すると、ＣＰＵはＣＰＵデータバスＩＤＢに出力されたデータを内部に取り込み、リード動作を終了する。かかるリード動作は周辺クロックφｐの２サイクル（基準クロックφｃの８サイクル）で終了する。
【００４８】
以上のようにバスステートコントローラＢＳＣ内にリードバッファを設けることで、ＣＰＵから周辺モジュールのリード動作を実効的に基準クロックφｃの１サイクルで行うことができるようになる。
【００４９】
なお、上記第３の実施例を、前述した第１の実施例のアドレスバッファ２４およびライトバッファ２５または第２の実施例のＦＩＦＯバッファ２７と組み合わせて適用することが可能である。すなわち、バスステートコントローラＢＳＣ内に周辺モジュールのレジスタに対応したリードバッファ２８とアドレスバッファ２４およびライトバッファ２５またはＦＩＦＯバッファ２７を設ける。ライトバッファ２５やＦＩＦＯ型ライトバッファ２７およびリードバッファ２８の動作は上記実施例で説明した示したとおりである。かかる構成により、ＣＰＵによる周辺モジュールに対するリード動作やライト動作にＣＰＵに対して返送されるバスサイクル終了信号のタイミングを早くすることができ、ＣＰＵのスループットが大幅に向上するようになる。
【００５０】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００５１】
また、以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるＣＰＵと周辺モジュールとを備えたマイクロコンピュータに適用した場合について説明した、本発明はそれに限定されるものでなく、ＣＰＵと周辺モジュールとが別個の半導体チップにより構成されているマルチチップのマイクロコンピュータにも適用することができる。
【００５２】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００５３】
すなわち、ＣＰＵと、該ＣＰＵに比べて低い周波数の動作クロックで動作する周辺モジュールとを備えたマイクロコンピュータもしくはマイクロコントローラのようなデータ処理装置において、ＣＰＵが周辺モジュールのアクセスコマンドとアドレスやデータを出力した後直ちに他の処理を行なうことができ、それによってＣＰＵのスループットが向上するようになる。
【図面の簡単な説明】
【図１】本発明が適用されるＣＰＵと周辺モジュールとを備えたマイクロコンピュータの一実施例の概略構成を示すブロック図である。
【図２】周辺モジュールの基本的な構成を示すブロック図である。
【図３】バスステートコントローラの一実施例を示すブロック図である。
【図４】実施例のマイクロコンピュータにおけるライトサイクルでの各アドレスバスおよびデータバスとバスサイクル終了信号のタイミングが示すタイミングチャートである。
【図５】バスステートコントローラの第２の実施例を示すブロック図である。
【図６】バスステートコントローラの第３の実施例を示すブロック図である。
【符号の説明】
ＣＰＵ  中央処理ユニット
ＢＳＣ  バスステートコントローラ
ＰＲＭ  周辺モジュール
ＣＭＤ  バスコマンド
ＩＡＢ  ＣＰＵアドレスバス
ＩＤＢ  ＣＰＵデータバス
ＰＡＢ  周辺アドレスバス
ＰＤＢ  周辺データバス
ＭＳＬ  周辺モジュールセレクト信号
ＲＳ    リードストローブ信号
ＷＳ    ライトストローブ信号
ＢＵＳＲＤＹ  バスサイクル終了信号
φｃ    基準クロック（ＣＰＵクロック）
φｐ    周辺クロック
１１ａ，１１ｂ，１１ｃ  レジスタ
１２    モジュール内部バス
１３    Ｉ／Ｏインタフェース
１４    モジュール本体回路
１５，２１    デコーダ
１６    レジスタ変化検出回路
２２    Ｉ／Ｏインタフェース
２３    制御回路（ステートマシン）
２４    ライト用のバッファ（データバッファ）
２５    ライト用のバッファ（アドレスバッファ）
２６    有効ビット
２７    ＦＩＦＯバッファ
２８    リードバッファ
２９    レジスタコピー制御回路
３１    フィルビット
３２    エンプティビット
３３    ライトポインタ
３４    リードポインタ
【図１】
0004176920.tif 000002
【図２】
0004176920.tif 000003
【図３】
0004176920.tif 000004
【図４】
0004176920.tif 000005
【図５】
0004176920.tif 000006
【図６】
0004176920.tif 000007