(57)【要約】【課題】  バスに接続されたハードウェアの状態を検出する際の処理速度を向上させると共に、システムの面積の増加を抑えるようにする。【解決手段】  状態検出ブロック２０６が、外部通信モジュール２０３のＦＩＦＯにおけるデータ量を検出する。状態検出ブロック２０６の検出結果に基づいて、条件判定ブロック２０７が、割り込み信号２１７の生成条件を満たしているか否かを判定する。割り込み信号２１７の生成条件を満たしている場合に、割り込み信号生成ブロック２０８は、割り込み信号２１７を生成してＣＰＵ２０１に出力する。ＣＰＵ２０１は、この割り込み信号２１７に基づいて、所定の処理を行う。【選択図】  図２
2008021040.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び１つ以上のハードウェアとバスを介して相互に接続されたバスマスタ回路であって、
前記バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出手段と、
前記検出手段により検出されたハードウェアの状態を判別する判別手段と、
前記判別手段により判別されたハードウェアの状態に基づいて制御信号を生成する生成手段と、
前記生成手段により生成された制御信号を前記バスに出力する出力手段とを有することを特徴とするバスマスタ回路。
【請求項２】
前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサに対する割り込み信号を生成し、
前記出力手段は、前記生成手段により生成された割り込み信号を、前記バスを介して、前記プロセッサに出力することを特徴とする請求項１に記載のバスマスタ回路。
【請求項３】
前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、そのハードウェアと異なる第２のハードウェアの動作に関わる制御信号を生成し、
前記出力手段は、前記生成手段により生成された制御信号を、前記バスを介して、前記第２のハードウェアに出力することを特徴とする請求項１に記載のバスマスタ回路。
【請求項４】
前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサへ供給されるクロックを制御するための制御信号を生成することを特徴とする請求項３に記載のバスマスタ回路。
【請求項５】
前記検出手段は、バスを介して相互に接続されたハードウェアの状態を、間隔をあけて検出することを特徴とする請求項１〜４の何れか１項に記載のバスマスタ回路。
【請求項６】
前記バスを介して相互に接続されたハードウェアの状態を検出する間隔がプログラマブルに設定される間隔設定手段を有し、
前記検出手段は、バスを介して相互に接続されたハードウェアの状態を前記間隔設定手段に設定された間隔で検出することを特徴とする請求項５に記載のバスマスタ回路。
【請求項７】
前記出力手段は、前記生成手段により生成された制御信号を、予め設定された内容に従って、前記バスにアクセスすることを特徴とする請求項１〜６の何れか１項に記載のバスマスタ回路。
【請求項８】
前記制御信号の出力先のアドレスがプログラマブルに設定される出力先アドレス設定手段と、
前記制御信号に含めるデータがプログラマブルに設定されるデータ設定手段とを有し、
前記生成手段は、前記データ設定手段に設定されたデータを含む制御信号を生成し、
前記出力手段は、前記バスを介して、前記出力先アドレス設定手段に設定されたアドレスに、前記生成手段により生成された制御信号を出力することを特徴とする請求項７に記載のバスマスタ回路。
【請求項９】
前記データ設定手段に設定されたデータの転送方向がプログラマブルに設定される転送方向設定手段を有することを特徴とする請求項８に記載のバスマスタ回路。
【請求項１０】
前記検出手段により検出されるハードウェアのアドレスがプログラマブルに設定されるハードウェアアドレス設定手段を有し、
前記検出手段は、前記ハードウェアアドレス設定手段に設定されたアドレスのハードウェアの状態を検出することを特徴とする請求項１〜９の何れか１項に記載のバスマスタ回路。
【請求項１１】
前記検出手段により検出されたハードウェアの状態を判別するための条件がプログラマブルに設定される条件設定手段を有し、
前記判別手段は、前記検出手段により検出されたハードウェアの状態が、前記条件設定手段に設定された条件に該当するか否かを判別することを特徴とする請求項１〜１０の何れか１項に記載のバスマスタ回路。
【請求項１２】
バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、
前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、
前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、
前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとを有することを特徴とするバス制御方法。
【請求項１３】
前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサに対する割り込み信号を生成し、
前記出力ステップは、前記生成ステップにより生成された割り込み信号を、前記バスを介して、前記プロセッサに出力することを特徴とする請求項１２に記載のバス制御方法。
【請求項１４】
前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、そのハードウェアと異なる第２のハードウェアの動作に関わる制御信号を生成し、
前記出力ステップは、前記生成ステップにより生成された制御信号を、前記バスを介して、前記第２のハードウェアに出力することを特徴とする請求項１２に記載のバス制御方法。
【請求項１５】
前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサへ供給されるクロックを制御するための制御信号を生成することを特徴とする請求項１４に記載のバス制御方法。
【請求項１６】
前記検出ステップは、バスを介して相互に接続されたハードウェアの状態を、間隔をあけて検出することを特徴とする請求項１２〜１５の何れか１項に記載のバス制御方法。
【請求項１７】
前記バスを介して相互に接続されたハードウェアの状態を検出する間隔をプログラマブルに設定する間隔設定ステップを有し、
前記検出ステップは、バスを介して相互に接続されたハードウェアの状態を前記間隔設定ステップにより設定された間隔で検出することを特徴とする請求項１６に記載のバス制御方法。
【請求項１８】
前記出力ステップは、前記生成ステップにより生成された制御信号を、予め設定された内容に従って、前記バスにアクセスすることを特徴とする請求項１２〜１７の何れか１項に記載のバス制御方法。
【請求項１９】
前記制御信号の出力先のアドレスをプログラマブルに設定する出力先アドレス設定ステップと、
前記制御信号に含めるデータをプログラマブルに設定するデータ設定ステップとを有し、
前記生成ステップは、前記データ設定ステップにより設定されたデータを含む制御信号を生成し、
前記出力ステップは、前記バスを介して、前記出力先アドレス設定ステップにより設定されたアドレスに、前記生成ステップにより生成された制御信号を出力することを特徴とする請求項１８に記載のバス制御方法。
【請求項２０】
前記データ設定ステップにより設定されたデータの転送方向をプログラマブルに設定する転送方向設定ステップを有することを特徴とする請求項１９に記載のバス制御方法。
【請求項２１】
前記検出ステップにより検出されるハードウェアのアドレスをプログラマブルに設定するハードウェアアドレス設定ステップを有し、
前記検出ステップは、前記ハードウェアアドレス設定ステップにより設定されたアドレスのハードウェアの状態を検出することを特徴とする請求項１２〜２０の何れか１項に記載のバス制御方法。
【請求項２２】
前記検出ステップにより検出されたハードウェアの状態を判別するための条件をプログラマブルに設定する条件設定ステップを有し、
前記判別ステップは、前記検出ステップにより検出されたハードウェアの状態が、前記条件設定ステップにより設定された条件に該当するか否かを判別することを特徴とする請求項１２〜２１の何れか１項に記載のバス制御方法。
【請求項２３】
バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、
前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、
前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、
前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスマスタ回路、バス制御方法、及びコンピュータプログラムに関し、特に、バスに接続されたハードウェアの状態を検出するために用いて好適なものである。
【背景技術】
【０００２】
一般にプロセッサと１つ以上のハードウェアとが接続されたバスを備えたシステムＬＳＩでは、ハードウェアを制御するために、プロセッサがハードウェアの状態を把握し、そのハードウェアの状態に応じてそのハードウェア又はその他のハードウェアを制御する。
プロセッサがハードウェアの状態を把握する手法として、ハードウェアの内部状態を示すレジスタをハードウェアの内部に設け、プロセッサがレジスタを継続的に監視することによってハードウェアの内部状態を知るポーリング手法がある。尚、以下の説明では、レジスタを監視することをポーリングと称する。また、ハードウェアの内部でレジスタの状態が予め決められた状態になったときに、ハードウェアがプロセッサに割り込み信号を通知する割り込み通知手法も用いられている。特許文献１には、通信周期内の任意のクロック数で割り込み信号を発生させるレジスタの設定値と、サイクルタイマ回路の設定値とを比較器で比較し、比較器が出力する指令を受け取ると割り込み信号をＣＰＵに出力する割り込み発生回路が記載されている。この割り込み発生回路では、ノイズ等が発生してもホストＣＰＵに与える割り込み信号が発生するようにしている。
【０００３】
プロセッサは、前述したどちらかの手法を用いてハードウェアの内部状態を検出し、そのハードウェアの内部状態に応じてハードウェアを制御していた。
ハードウェアの内部状態を示すレジスタをプロセッサがポーリングする手法では、レジスタをリードするコマンドをプロセッサが継続的に何度も発行するため、プロセッサに多大な負荷がかかる。従って、割り込み通知手法が一般的に使われる。
【０００４】
しかしながら、あらゆる状況において割り込み通知手法を使用できるわけではない。例えば、ハードウェアの内部状態が設計段階では想定していなかった状態になったために、ハードウェアが割り込み信号をプロセッサに通知できない場合、プロセッサは、ポーリングを行ってハードウェアの内部状態を検出し、ハードウェアを制御する必要がある。また、バグ等によりハードウェアが意図した割り込み処理を行えない場合も同様に、プロセッサがポーリングを行ってハードウェアを制御する必要がある。
このような不都合を解消するために、バックアップ用のサブプロセッサを設け、サブプロセッサがポーリングを行ってハードウェアの内部状態を検出し、検出したハードウェアの内部状態をメインプロセッサに通知してハードウェアを制御する手法も採られてきた。
【０００５】
【特許文献１】特開２００２−１８５４６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前述したサブプロセッサを用いてハードウェアの内部状態を検出する手法では、次のような不都合があった。
まず、サブプロセッサは、リセットが解除された後に、実行するプログラムのコードをＲＯＭ等から読み出すブート処理が必要になる。従って、システムの起動に時間がかかる上に、プログラムを格納するためのメモリ領域が必要となる。
【０００７】
また、メインプロセッサとサブプロセッサとの通信（マルチプロセッサ間通信）が必要となる。従って、双方のプロセッサが使用できる共有メモリを確保しなければならない。共有メモリには、サブプロセッサからメインプロセッサへの処理依頼メッセージを格納する領域と、その処理依頼に対するメインプロセッサからサブプロセッサへの応答メッセージを格納する領域とが必要になる。更に共有メモリには、メインプロセッサからサブプロセッサへの処理依頼メッセージを格納する領域と、その処理依頼に対するサブプロセッサからメインプロセッサへの応答メッセージを格納する領域も必要になる。
【０００８】
サブプロセッサからメインプロセッサへの処理依頼をする場合、サブプロセッサは、メインプロセッサへの処理依頼メッセージ格納領域（共有メモリ）に、メインプロセッサへの処理依頼メッセージを書き込んで、メインプロセッサに対して割り込み通知を行う。通常プロセッサはスレーブインターフェースを備えない。従って、この割り込み通知をクリアする場合、メインプロセッサは、サブプロセッサへの処理依頼メッセージ格納領域（共有メモリ）に、サブプロセッサへの処理依頼メッセージを書き込んで、サブプロセッサに対して割り込み通知を行う。このような割り込みクリアのシーケンスは、割り込みクリアレジスタをクリアして行う通常の処理に比べると処理時間がかかる。
【０００９】
また、コストを削減するシステムＬＳＩにおいては、例えば面積の小さな８ビットマイコンであっても、サブプロセッサを設けたことによるシステムＬＳＩの面積の増加は好ましくない。更に、サブプロセッサを設けると、サブプロセッサ本体に加えて、サブプロセッサがプログラムを実行するためのワークメモリ領域等のハードウェアリソースが必要になる。このようなハードウェアリソースは、システムＬＳＩの面積が増加する要因となる。
【００１０】
本発明はこのような問題点に鑑み、バスに接続されたハードウェアの状態を検出する際の処理速度を向上させると共に、システムの面積の増加を抑えるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明のバスマスタ回路は、プロセッサ及び１つ以上のハードウェアとバスを介して相互に接続されたバスマスタ回路であって、前記バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出手段と、前記検出手段により検出されたハードウェアの状態を判別する判別手段と、前記判別手段により判別されたハードウェアの状態に基づいて制御信号を生成する生成手段と、前記生成手段により生成された制御信号を前記バスに出力する出力手段とを有することを特徴とする。
【００１２】
本発明のバス制御方法は、バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとを有することを特徴とする。
【００１３】
本発明のコンピュータプログラムは、バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、バスにバスマスタとしてアクセスして、ハードウェアの状態を検出し、検出したハードウェアの状態に基づいて制御信号を生成して出力するようにした。従って、プロセッサがハードウェアの状態を検出する必要がなくなるので、プロセッサの負荷を削減することと、ハードウェアの状態を検出する際の動作速度を向上させることと、システムの面積の増加を抑えることとを実現することが可能になる。
【００１５】
また、本発明の他の特徴によれば、ハードウェアの状態に基づいて、そのハードウェアと異なる第２のハードウェアの動作に関わる制御信号を生成し、生成した制御信号を、バスを介して第２のハードウェアに出力するようにした。従って、プロセッサへの割り込み処理を行わずにハードウェアモジュールの動作を制御することが可能になる。
【００１６】
また、本発明のその他の特徴によれば、ハードウェアの状態に基づいて、プロセッサへ供給されるクロックを制御するための制御信号を生成するようにした。従って、例えば、プロセッサが停止している状況においても、ハードウェアの動作を制御することが可能になる。
【００１７】
また、本発明のその他の特徴によれば、ハードウェアの状態を検出する間隔をあけるようにしたので、バスの負荷を軽減することが可能になる。
更に、本発明のその他の特徴によれば、ハードウェアの状態を検出する間隔をプログラマブルに設定可能にしたので、ハードウェアの状態の検出頻度を調整することが可能になる。
【００１８】
また、本発明のその他の特徴によれば、制御信号の出力先のアドレスと、制御信号に含めるデータとをプログラマブルに設定可能にしたので、様々なハードウェアを様々な形態で制御することが可能になる。
【００１９】
また、本発明のその他の特徴によれば、状態を検出するハードウェアのアドレスをプログラマブルに設定可能にしたので、様々なハードウェアの状態を検出することが可能になる。
また、本発明のその他の特徴によれば、ハードウェアの状態を判別するための条件をプログラマブルに設定可能にしたので、様々な条件でハードウェアの状態を判別することが可能になる。
【発明を実施するための最良の形態】
【００２０】
（第１の実施形態）
以下に、図面を参照しながら、本発明の第１の実施形態について説明する。
まず、本実施形態のバスマスタ回路の基本構成を説明する。図１は、バスマスタ回路の基本構成の一例を示す図である。
図１において、バスマスタ回路１０１は、バスマスタ機能ブロック１０２、状態検出ブロック１０３、条件判定ブロック１０４、ハードウェア制御ブロック１０５、制御レジスタ群１０６、及びバススレーブ機能ブロック１０７を有する。
【００２１】
バスマスタ機能ブロック１０２は、システムバス１０８のバスプロトコルに従って、バスマスタとしてシステムバス１０８にアクセス（バスアクセス）するためのマスタインターフェースのブロックである。
状態検出ブロック１０３は、システムバス１０８に接続されたハードウェアの内部状態を表示するレジスタの設定を読み出すことを、バスマスタ機能ブロック１０２に継続的に要求する。以下の説明では、この要求を必要に応じてリード要求と称する。また、システムバス１０８に接続されたハードウェアの内部状態を表示するレジスタの設定を、必要に応じてリードデータと称する。そして、状態検出ブロック１０３は、リード要求に基づいてバスマスタ機能ブロック１０２が取得したリードデータを受け取る。また、状態検出ブロック１０３は、システムバス１０８に接続されたハードウェアの内部状態を表示するレジスタのアドレスや、ポーリングを行う間隔等、バスマスタ回路１０１が行うポーリングを制御する。
【００２２】
条件判定ブロック１０４は、状態検出ブロック１０３からリードデータを受け取り、受け取ったリードデータと判定条件とを比較して、条件を満たしているか否かを判定するブロックである。そして、条件判定ブロック１０４は、判定した条件を満たしているか否かを示す条件判定フラグを生成する。
ハードウェア制御ブロック１０５は、条件判定ブロック１０４から条件判定フラグを受け取り、受け取った条件判定フラグに基づき、システムバス１０８に接続されたプロセッサやハードウェアを制御するための制御信号を生成するブロックである。
【００２３】
制御レジスタ群１０６は、バスマスタ回路１０１の動作設定を行うレジスタ群である。このレジスタ群は、例えば、システムバス１０８に接続されたＣＰＵ等によってプログラマブルに設定される。
バススレーブ機能ブロック１０７は、システムバス１０８に接続されたＣＰＵ等が制御レジスタ群１０６にアクセスするためのインターフェースである。このバススレーブ機能ブロック１０７は、システムバス１０８のバスプロトコルに従って、バススレーブとしてシステムバス１０８とアクセス（バスアクセス）するためのスレーブインターフェースのブロックである。
【００２４】
次に、システムバス１０８に接続されたハードウェアの内部状態を表示するレジスタを、バスマスタ回路１０１を用いてポーリングし、ポーリングした結果に基づいて、プロセッサやハードウェアを制御する手法の具体例を詳細に述べる。ここでは、バスマスタ回路１０１の要件の一つであるハードウェア制御ブロック１０５を、システムバス１０８に接続されたＣＰＵに対する割り込み信号を生成する機能を有する割り込み信号生成ブロックで構成する場合を例に挙げて説明する。
【００２５】
図２は、ＣＰＵに対する割り込み信号を生成するバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
図２において、システムＬＳＩは、ＣＰＵ２０１、バスマスタ回路２０２、外部通信モジュール２０３、及びシステムバス１０８を備えて構成される。尚、システムＬＳＩには、これら以外に、例えばＲＯＭやＲＡＭ等も存在している。
バスマスタ回路２０２は、バスマスタ機能ブロック２０５、状態検出ブロック２０６、条件判定ブロック２０７、割り込み信号生成ブロック２０８、制御レジスタ群２０９、及びバススレーブ機能ブロック２１０を有する。このバスマスタ回路２０２は、割り込み信号（interrupt）２１７を生成し、生成した割り込み信号２１７を、システムバス１０８を介してＣＰＵ２０１に送信する。
【００２６】
バスマスタ機能ブロック２０５は、システムバス１０８のバスプロトコルに従って、バスマスタとしてシステムバス１０８とアクセス（バスアクセス）するためのマスタインターフェースのブロックである。
状態検出ブロック２０６は、バスマスタ機能ブロック２０５にリード要求を行うリード要求制御ブロック２０６ａと、バスマスタ機能ブロック２０５からリードデータを受信するレジスタ（DataReg）２０６ｂとを有する。また、状態検出ブロック２０６は、制御レジスタ群２０９から信号（En、Sts＿Addr）２２１、２２２を受け取る。尚、信号（En、Sts＿Addr）２２１、２２２の詳細については後述する。
【００２７】
リード要求制御機能ブロック２０６ａは、バスマスタ機能ブロック２０５とのインターフェースを有する。このリード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２とアクセス終了信号（done）２３３とのハンドシェークで、アドレス信号（addr）２３１とリードデータ（rdata）２３４との受け渡しを行う。
【００２８】
制御レジスタ群２０９のポーリング制御レジスタ２１１から送信された信号（En）２２１がポーリングの開始を示すものであるとき（En=0x1のとき）、リード要求制御機能ブロック２０６ａは、バスマスタ機能ブロック２０５にリード要求を行う。具体的にリード要求制御機能ブロック２０６ａは、ポーリングするターゲットとなるレジスタのアドレスを、ターゲットアドレスレジスタ２１２から出力された信号（Sts＿Addr）２２２から読み取る。そして、リード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２とアクセスアドレス信号（addr）２３１とをバスマスタ機能ブロック２０５に発行する。
【００２９】
また、リード要求制御機能ブロック２０６ａは、アクセス終了信号（done）２３３とリードデータ（rdata）２３４とをバスマスタ機能ブロック２０５から受信する。リード要求制御機能ブロック２０６ａは、受信したリードデータ（rdata）２３４を内部のレジスタ２０６ｂに格納する。尚、制御レジスタ群２０９のポーリング制御レジスタ２１１から送信された信号（En）２２１がポーリングの開始を示すものでないときは（En=0x0のときは）、リード要求制御機能ブロック２０６ａは、リード要求を行わない。
【００３０】
条件判定ブロック２０７は、状態検出ブロック２０６からレジスタ２０６ｂの出力信号（data）２４１を受け取り、その出力信号（data）２４１（すなわちリードデータ）と判定条件とを比較し、条件を満たしているか否かを判定するブロックである。そして、条件判定ブロック２０７は、判定した条件を満たしているか否かを示す条件判定フラグの信号（flag）２４２を生成する。また、条件判定ブロック２０７は、制御レジスタ群２０９の判定データレジスタ２２３から信号（Cond＿Val）２２３を、判定マスクレジスタ２１４から信号（Cond＿Mask）２２４を受け取る。尚、信号（Cond＿Val、Cond＿Mask）２２３、２２４の詳細については後述する。
【００３１】
図３は、条件判定ブロック２０７の構成の一例を示す図である。
図３において、比較器５０１は、排他的ＮＯＲ回路で構成される。信号（raw＿flag）５１１ａ〜５１１ｃは、信号（data）２４１ａ〜２４１ｃと、信号（Cond＿Val）２２３ａ〜２２３ｃとのビット毎の比較の結果である。この比較の結果、信号（data）２４１ａ〜２４１ｃと、信号（Cond＿Val）２２３ａ〜２２３ｃとが一致すれば、信号（raw＿flag）５１１として「１」が出力される。一方、信号（data）２４１ａ〜２４１ｃと、信号（Cond＿Val）２２３ａ〜２２３ｃとが不一致であれば、信号（raw＿flag）５１１として「０」が出力される。
【００３２】
セレクタ５０２は、比較器５０１から出力された信号（raw＿flag）５１１と、マスクデータである信号（Cond＿Mask）２２４とを選択する。セレクタ５０２は、信号（Cond＿Mask）２２４が「１」のときに、その信号（Cond＿Mask）２２４を出力し、信号（raw＿flag）５１１はマスクされる。一方、信号（Cond＿Mask）２２４が「０」のとき、セレクタ５０２は、信号（raw＿flag）５１１を出力する。論理積回路５０３は、セレクタ５０２から出力された信号の全ビットの論理積を演算する。論理積回路５０３は、演算した結果に基づく条件判定フラグを信号（flag）２４２として割り込み信号生成ブロック２０８に出力する。条件判定フラグは、信号（Cond＿Mask）２２４でマスクされたビット以外の信号（raw＿flag）５１１が全て「１」のときに「１」となり、それ以外のときには「０」となる。
【００３３】
図２に説明を戻し、割り込み信号生成ブロック２０８は、条件判定ブロック２０７から条件判定フラグの信号（flag）２４２を受け取り、割り込み信号（interrupt）２１７を生成するブロックである。また、制御レジスタ群２０９の信号生成制御レジスタ２１５から信号（Polarity）２２５を、クリアレジスタ２１６から信号（Clear）２２６を受け取る。尚、信号（Polarity、Clear）２２５、２２６の詳細については後述する。
【００３４】
図４は、割り込み信号生成ブロック２０８の構成の一例を示す図である。
図４において、割り込み信号制御部６０１は、条件判定フラグの信号（flag）２４２から、正論理の割り込み信号（int）６１１を生成する。具体的に、クリアレジスタ２１６からの信号（Clear）２２６が「０」である場合、割り込み信号制御部６０１は、条件判定フラグの信号（flag）２４２から、正論理の割り込み信号（int）６１１を生成する（int=1）。一方、クリアレジスタ２１６からの信号（Clear）２２６が「０」である場合に、割り込み信号制御部６０１は、正論理の割り込み信号（int）６１１をネゲートする（int=0）。
【００３５】
セレクタ６０２は、割り込み信号制御部６０１から出力された割り込み信号（int）６１１の極性を選択する。セレクタ６０２は、信号（Polarity）２２５が「０」のとき、割り込み信号（interrupt）２１７として正論理の割り込み信号（int）６１１を出力する。一方、信号（Polarity）２２５が「１」のとき、セレクタ６０２は、割り込み信号（interrupt）２１７として正論理の割り込み信号（int）６１１を反転させた負論理の割り込み信号を出力する。
【００３６】
図２に説明を戻し、制御レジスタ群２０９は、状態検出ブロック２０６、条件判定ブロック２０７、及び割り込み信号生成ブロック２０８の動作を制御する信号のソースレジスタを有するブロックである。ＣＰＵ２０１が各レジスタ２１１〜２１６の設定をプログラマブルに行う。
ポーリング制御レジスタ２１１は、ポーリングのスタート及びストップを制御するものであり、ポーリングのスタート、ストップを示す信号（En）２２１を状態検出ブロック２０６に出力する。図５（ａ）に、ポーリング制御レジスタ２１１の仕様の一例を示す。図５（ａ）において、Bitsはビット構成を示し、Nameは信号名を示し、Accessは属性を示し、Functionは機能を示す。ここで、属性のＲはリードを示し、Ｗはライトを示す。ポーリング制御レジスタ２１１の０ビット目Ｅｎが「１」に設定されると、ポーリングをスタートさせる。すなわち、ポーリング制御レジスタ２１１は、「0x1」を示す信号（En）２２１を状態検出ブロック２０６に出力する。一方、ポーリング制御レジスタ２１１の０ビット目Ｅｎが「０」に設定されると、ポーリングをストップさせる。すなわち、ポーリング制御レジスタ２１１は、「0x0」を示す信号（En）２２１を状態検出ブロック２０６に出力する。
【００３７】
ターゲットアドレスレジスタ２１２は、ポーリングするターゲットのレジスタ（例えばＦＩＦＯデータポインタレジスタ２０４）のアドレスを設定するものであり、そのアドレスを示す信号（Sts＿Addr）２２２を状態検出ブロック２０６に出力する。図５（ｂ）に、ターゲットアドレスレジスタ２１２の仕様の一例を示す。図５（ｂ）に示すように、本実施形態では、信号（Sts＿Addr）２２２を３２ビットの構成としている。また、信号（Sts＿Addr）２２２のビット幅を、使用するシステムバス１０８のアドレス幅と同じにしている。
【００３８】
判定データレジスタ２１３は、条件判定ブロック２０７における比較条件となるデータを設定するためのものであり、比較条件となるデータを示す信号（Cond＿Val）２２３を条件判定ブロック２０７に出力する。図５（ｃ）に、判定データレジスタ２１３の仕様の一例を示す。図５（ｃ）に示すように、本実施形態では、信号（Cond＿Val）２２３を３２ビットの構成としている。また、信号（Cond＿Val）２２３のビット幅を、使用するシステムバス１０８のデータ幅と同じにしている。
【００３９】
判定データマスクレジスタ２１４は、条件判定をマスクするビットをビット毎に設定するためのものであり、その設定を示す信号（Cond＿Mask）２２４を条件判定ブロック２０７に出力する。図５（ｄ）に、判定データマスクレジスタ２１４の仕様の一例を示す。図５（ｄ）に示すように、本実施形態では、信号（Cond＿Mask）２２４を３２ビットの構成としている。信号（Cond＿Mask）２２４のビット幅を、使用するシステムバス１０８のデータ幅と同じにしている。図３に示したように、本実施形態では、信号（Cond＿Mask）２２４を用いて、条件判定をマスクするビットをビット毎にマスクする。また、前述したように、該当するビットに対応する信号（Cond＿Mask）２２４に「１」が設定されると、そのビットにおける条件判定がマスクされる。
【００４０】
信号生成制御レジスタ２１５は、生成する割り込み信号（interrupt）２１７を制御するためのものであり、信号（Polarity）２２５を割り込み信号生成ブロック２０８に出力する。図５（ｅ）に、信号生成制御レジスタ２１５の仕様の一例を示す。図５（ｅ）に示すように、信号生成制御レジスタ２１５の０ビット目Polarityが「０」に設定されると、正論理の割り込み信号２１７が生成され、「１」に設定されると、負論理の割り込み信号２１７が生成される（図４を参照）。
【００４１】
クリアレジスタ２１６は、割り込み信号２１７をクリアするためのものであり、信号（Clear）２２６を割り込み信号生成ブロック２０８に出力する。図５（ｆ）に、割り込みクリアレジスタ２１６の仕様の一例を示す。割り込みクリアレジスタ２１６の０ビット目Clearが「１」に設定されると、割り込み信号２１７がクリアされる。そして、割り込み信号２１７がクリアされると、割り込みクリアレジスタ２１６の０ビット目Clearは、自動的に「０」に戻る。
【００４２】
バススレーブ機能ブロック２１０は、ＣＰＵ２０１が制御レジスタ群２０９にアクセスするためのインターフェースである。このバススレーブ機能ブロック２１０は、システムバス１０８のバスプロトコルに従って、バススレーブとしてシステムバス１０８とアクセス（バスアクセス）するためのスレーブインターフェースのブロックである。
【００４３】
外部通信モジュール２０３は、外部からのデータを送受信するブロックであり、データ受信用に１ｂｙｔｅ、１６段のＦＩＦＯ（First-In First-Out）を内蔵する。本実施形態では、ＦＩＦＯに存在するデータ数を示すデータポインタレジスタ２０４が、アドレス「0xA000＿0000」にマッピングされているとする。
図６は、データポインタレジスタ２０４の仕様の一例を示す図である。図６に示すように、４ビットのデータでＦＩＦＯに存在するデータ数を示し、データポインタレジスタ２０４の値は、「0x0」から「0xf」まで変化する。データポインタレジスタ２０４は、データを受信して、ＦＩＦＯがフルになり、データポインタレジスタ２０４の値が「0xf」になると、正論理の割り込み信号（int＿full）２１８を、システムバス１０８を介してＣＰＵ２０１に通知する。
【００４４】
次に、図２に示すシステムＬＳＩの動作の一例について説明する。ここでは、バスマスタ回路２０２が、外部通信モジュール２０３のＦＩＦＯがフルになる一歩手前の状態（すなわち、データポインタレジスタ２０４の値が「0xe」となったこと）を検出して割り込み信号２１７を生成する場合を例に挙げて説明する。
【００４５】
まず、ＣＰＵ２０１は、ポーリングするＦＩＦＯデータポインタレジスタ２０４のアドレス「0xA000＿0000」をターゲットアドレスレジスタ２１２に設定する。これにより、ターゲットアドレスレジスタ２１２から出力される信号（Sts＿Addr）２２２は、「0xA000＿0000」を示す信号となる（Sts＿Addr=0xA000＿0000）。
次に、ＣＰＵ２０１は、条件判定ブロック２０７における比較条件となるデータとして「0xe」を判定データレジスタ２１３に設定する。これにより、判定データレジスタ２１３から出力される信号（Cond＿Val）２２３は、「0xe」を示す信号となる（Cond＿Val=0xe）。
【００４６】
またここでは、条件判定ブロック２０７で比較を行うデータは４ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、ＣＰＵ２０１は、「0xffff＿fff0」を判定マスクレジスタ２１４に設定する。これにより、判定マスクレジスタ２１４から出力される信号（Cond＿Mask）２２４は、「0xffff＿fff0」を示す信号となる（Cond＿Mask=0xffff＿fff0）。
【００４７】
次に、ＣＰＵ２０１は、信号生成制御レジスタ２１５に「0x0」を設定する。これにより、信号生成制御レジスタ２１５から出力される信号２２５は、「0x0」を示す信号となる（Porality=0x0）。そして、ＣＰＵ２０１は、ポーリング制御レジスタ２１１に「0x1」を設定する。これにより、ポーリング制御レジスタ２１１から状態検出ブロック２０６に出力される信号２２１は、「0x1」となり（En=0x1）、ポーリングがスタートする。
【００４８】
ポーリングがスタートすると、状態検出ブロック２０６はバスマスタ機能ブロック２０５にリード要求を行う。ここで、図７のフローチャートを参照しながら、バスマスタ機能ブロック２０５にリード要求を行う際の状態検出ブロック２０６の動作の一例を説明する。
まず、ステップＳ７０１において、リード要求制御機能ブロック２０６ａは、ポーリング制御レジスタ２１１から出力された信号（En）２２１が「１」であるか否かを判断し、ポーリングをスタートする状態であるか否かを判断する。この判断の結果、ポーリングをスタートする状態でなければ、処理を終了する。一方、ポーリングをスタートする状態であれば、ステップＳ７０２に進む。
【００４９】
ステップＳ７０２に進むと、リード要求制御機能ブロック２０６ａは、ターゲットアドレスレジスタ２１２の設定値「0xA000＿0000」をアドレス信号（addr）２３１とする。更にリード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２をアサート（assert）する。すなわち、「１」を示すリードリクエスト信号（req）２３２をバスマスタ機能ブロック２０５に出力する（req=1）。
【００５０】
次に、ステップＳ７０３において、リード要求制御機能ブロック２０６ａは、アクセス終了信号（done）２３３がアサートされたか否かを判断する。すなわち、バスマスタ機能ブロック２０５から送信されたアクセス終了信号(done)２３３が「１」であるか否かを判断する。この判断の結果、アクセス終了信号（done）２３３がアサートされない場合（バスマスタ機能ブロック２０５から送信されたアクセス終了信号(done)２３３が「１」でない場合）には、処理を終了する。一方、アクセス終了信号（done）２３３がアサートされた場合（バスマスタ機能ブロック２０５から送信されたアクセス終了信号(done)２３３が「１」の場合）には、ステップＳ７０４に進む。
【００５１】
ステップＳ７０４に進むと、リード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２をネゲート（negate）する。すなわち、「０」を示すリードリクエスト信号（req）２３２をバスマスタ機能ブロック２０５に出力する（req=0）。
次に、ステップＳ７０５において、リード要求制御機能ブロック２０６ａは、バスマスタ機能ブロック２０５から出力されたリードデータ（rdata）２３４と、レジスタ２０６ｂに設定されているリードデータとを比較する。そして、リード要求制御機能ブロック２０６ａは、リードデータに変化があるか否かを判断する。この判断の結果、リードデータに変化がない場合には処理を終了する。一方、リードデータに変化がある場合には、ステップＳ７０６に進む。ステップＳ７０６に進むと、リード要求制御機能ブロック２０６ａは、バス機能ブロック２０５から出力されたリードデータ（rdata）２３４の値を、レジスタ２０６ｂに設定する。
【００５２】
図２に説明を戻し、外部通信モジュール２０３に内蔵されているＦＩＦＯにデータが溜まっていくと、レジスタ２０６ｂの値は、「0x0、0x1、・・・」と変化する。従って、条件判定ブロック２０７が入力する信号（data）２４１も、「0x0、0x1、・・・」と変化する。ここで、判定マスクレジスタ２１４から出力される信号（Cond＿Mask）２２４は、「0xffff＿fff0」である（Cond＿Mask=0xffff＿fff0）。従って、条件判定ブロック２０７が出力する条件判定フラグの信号（flag）２４２は、以下の（１）式が成り立つ間は「０」となる（flag=0）。また、条件判定フラグの信号（flag）２４２は、以下の（２）式が成り立つ間（すなわち、信号（data）２４１が「0xe」を示している間）は「１」となる（flag=1）。
data[3:0]≠Cond＿Val[3:0]  ・・・（１）
data[3:0]＝Cond＿Val[3:0]  ・・・（２）
【００５３】
条件判定フラグの信号（flag）２４２が「１」になると（flag=1）、割り込み信号生成ブロック２０８の割り込み信号制御部６０１は正論理の割り込み信号（int）６１１を生成する（int=1）。ここで、図８のフローチャートを参照しながら、割り込み信号生成ブロック２０８の動作の一例を説明する。
【００５４】
まず、ステップＳ８０１において、割り込み信号制御部６０１は、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有しているか否かを判断する。この判断の結果し、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有していない場合には、ステップＳ８０２を省略して後述するステップＳ８０３に進む。一方、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有している場合には、ステップＳ８０２に進む。
【００５５】
ステップＳ８０２に進むと、割り込み信号制御部６０１は、正論理の割り込み信号（int）をアサートする（int=1）。
次に、ステップＳ８０３において、割り込み信号制御部６０１は、クリアレジスタ２１６からの信号（Clear）２２６がアサートされているか否か（クリアレジスタ２１６からの信号（Clear）２２６が「１」であるか否か）を判断する。この判断の結果、クリアレジスタ２１６からの信号（Clear）２２６がアサートされていない場合（クリアレジスタ２１６からの信号（Clear）２２６が「１」でない場合）には、処理を終了する。一方、クリアレジスタ２１６からの信号（Clear）２２６がアサートされている場合（クリアレジスタ２１６からの信号（Clear）２２６が「１」である場合）には、ステップＳ８０４に進む。
【００５６】
ステップＳ８０４に進むと、割り込み信号生成ブロック２０８は、正論理の割り込み信号（int）６１１と、クリアレジスタ２１６からの信号（Clear）２２６とをネゲートする(int=0、Clear=0)。
【００５７】
図２に説明を戻し、クリアレジスタ２１６からの信号（Clear）２２６が「０」である場合には、割り込み信号制御部６０１は、正論理の割り込み信号（int）６１１を出力する（int=1）。ここでは、信号生成制御レジスタ２１５から出力された信号（Polarity）２２５が「０」に設定されている（Polarity=0x0）。従って、セレクタ６０２は、割り込み信号（interrupt）２１７として、正論理の割り込み信号（int）６１１を選択する。そして、セレクタ６０２は、「１」を示す割り込み信号（interrupt）２１７を、システムバス１０８を介してＣＰＵ２０１に出力する。
【００５８】
ＣＰＵ２０１は、割り込み信号生成ブロック２０８から出力された割り込み信号（interrupt）２１７による割り込み通知を受けて、外部通信モジュール２０３に内蔵されているＦＩＦＯがフルになる一歩手前の状態で、所定の処理を行う。そして、ＣＰＵ２０１は、割り込みをクリアする。割り込みのクリアは、割り込みクリアレジスタ２１６に「0x1」を設定することにより行われる。割り込みクリアレジスタ２１６に「0x1」が設定されると（Clear=0x1）、割り込み信号制御部６０１は、図８のフローチャートに従い、正論理の割り込み信号（int）６１１をネゲートする。これにより、「０」を示す割り込み信号（interrupt）２１７が出力され、割り込みがクリアされる。
【００５９】
以上のように本実施形態では、状態検出ブロック２０６が、外部通信モジュール２０３のＦＩＦＯにおけるデータ量を検出する。状態検出ブロック２０６の検出結果に基づいて、条件判定ブロック２０７が、割り込み信号２１７の生成条件を満たしているか否かを判定する。割り込み信号２１７の生成条件を満たしている場合に、割り込み信号生成ブロック２０８は、割り込み信号２１７を生成してＣＰＵ２０１に出力する。ＣＰＵ２０１は、この割り込み信号２１７に基づいて、所定の処理を行う。
【００６０】
従って、従来ではＣＰＵ２０１がポーリングを行って外部通信モジュール２０３の内部状態を検出しなければならない場合であっても、バスマスタ回路２０２がＣＰＵ２０１の代わりにポーリングを行い、ＣＰＵ２０１に割り込み通知を行える。これにより、ＣＰＵ２０１の負荷を削減できると共に、外部通信モジュール２０３の内部状態を検出する際の処理速度を向上させることができる。更に、プロセッサ（ＣＰＵ）を複数設ける必要がないので、外部通信モジュール２０３の内部状態を検出するためのハードウェア（例えば複数のプロセッサの共有メモリ）によってシステムＬＳＩの面積が増加することを防止できる。この他、状態検出ブロック２０６が状態の検出を行うハードウェアのアドレスと、条件判定ブロック２０７によって判定される条件とをプログラマブルに設定するようにしたので、様々なハードウェアの状態を様々な条件で判別することが可能となる。
【００６１】
尚、本実施形態では、バスマスタ回路２０２がポーリングする対象のハードウェアを外部通信モジュール２０３としたが、バスマスタ回路２０２がポーリングする対象はこれに限定されない。すなわち、ハードウェア内部に内部状態を表示するレジスタを備えたハードウェアモジュールであれば、どのようなハードウェアであってもポーリングする対象とすることができる。
また、ＣＰＵ２０１は、各レジスタ２１１〜２１６に対してプログラマブルに設定を行うので、各レジスタ２１１〜２１６への設定の順番は、前述したものに限定されない。
【００６２】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。本実施形態は、前述した第１の実施形態に、ポーリングするタイミングを調整する構成を追加したものである。従って、本実施形態の説明において、前述した第１の実施形態と同一の部分については、図１〜図８に付した符号と同一の符号を付す等して詳細な説明を省略する。尚、本実施形態でも、第１の実施形態と同様に、図１のハードウェア制御ブロック１０５を、システムバス１０８に接続されたＣＰＵ２０１に対する割り込み信号を生成する機能を有する割り込み信号生成ブロックで構成する場合を例に挙げて説明する。
【００６３】
図９は、ＣＰＵに対する割り込み信号を生成するバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
バスマスタ回路２０２は、バスマスタ機能ブロック２０５、状態検出ブロック２２０６、条件判定ブロック２０７、制御信号生成ブロックとして割り込み信号生成ブロック２０８、制御レジスタ群２２０９、及びバススレーブ機能ブロック２１０を内蔵する。
【００６４】
状態検出ブロック２２０６は、第１の実施形態で説明したリード要求制御ブロック２０６ａ及びレジスタ（DataReg）２０６ｂと、ポーリング周期を計測するタイマー機能ブロック２０６ｃとを有する。
タイマー機能ブロック２０６ｃは、制御レジスタ群２２０９のポーリング周期設定レジスタ２２１７から、ポーリングを周期的に行うか否かを示す信号（Cyc＿En）２２２７ｂを受け取る。また、タイマー機能ブロック２０６ｃは、ポーリングを周期的に行う場合には、その周期を示す信号（Cyc＿Range）２２２７ａを受け取る。尚、これらの信号（Cyc＿Range、Cyc＿En）２２２７の詳細については後述する。タイマー機能ブロック２０６ｃは、ポーリング周期設定レジスタ２２１７から出力された信号（Cyc＿En）２２２７ｂが「0x1」を示すものである場合、リードリクエスト信号（req）２３２をアサートする間隔をタイマーで制御する。これにより、ポーリングの要求を周期的に行うことが可能になる。
【００６５】
制御レジスタ群２２０９は、状態検出ブロック２２０６、条件判定ブロック２０７、及び割り込み信号生成ブロック２０８の動作を制御する信号のソースレジスタを有するブロックである。ＣＰＵ２０１が各レジスタ２１１〜２１６、２２１７の設定をプログラマブルに行う。
【００６６】
前述したように、ポーリング周期設定レジスタ２２１７は、ポーリングの周期設定を行うためのものであり、信号（Cyc＿Range）２２２７ａ及び信号（Cyc＿En）２２２７ｂを状態検出ブロック２２０６に出力する。図１０は、ポーリング周期設定レジスタ２２１７の仕様の一例を示す図である。ポーリング周期設定レジスタ２２１７の０ビット目Cyc＿Enが「１」に設定されると、周期的にポーリングを行う周期ポーリング動作モードとなる。また、ポーリング周期設定レジスタ２２１７の０ビット目Cyc＿Enが「０」に設定されると、周期的でない通常のポーリングを行う通常ポーリング動作モードとなる。ポーリング周期設定レジスタ２２１７の０ビット目Cyc＿Enを「１」に設定して周期ポーリング動作モードとする場合、ポーリング周期設定レジスタ２２１７の４〜３１ビット目Cyc＿Rangeにポーリングを行う周期が設定される。具体的にポーリング周期設定レジスタ２２１７の４〜３１ビット目Cyc＿Rangeにはポーリングする間隔として空けたい分のサイクル数が設定される。
【００６７】
次に、図９に示すシステムＬＳＩの動作の一例について説明する。尚、本実施形態においても、外部通信モジュール２０３は、１６段のＦＩＦＯ（First-In First-Out）を内蔵するものとする。また、ＦＩＦＯに存在するデータ数を示すデータポインタレジスタ２０４が、アドレス「0xA000＿0000」にマッピングされているとする。また、バスマスタ回路２２０２が、外部通信モジュール２０３のＦＩＦＯがフルになる一歩手前の状態（すなわち、データポインタレジスタ２０４の値が「0xe」となったこと）を検出して割り込み信号２１７を生成するものとする。更に、状態検出ブロック２２０６が行うポーリングは３サイクル間隔で行われるものとする。
【００６８】
まず、ＣＰＵ２０１は、ポーリングするＦＩＦＯデータポインタレジスタ２０４のアドレス「0xA000＿0000」をターゲットアドレスレジスタ２１２に設定する。
次に、ＣＰＵ２０１は、条件判定ブロック２０７における比較条件となるデータとして「0xe」を判定データレジスタ２１３に設定する。
【００６９】
またここでは、条件判定ブロック２０７で比較を行うデータは４ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、ＣＰＵ２０１は、「0xffff＿fff0」を判定マスクレジスタ２１４に設定する。
次に、ＣＰＵ２０１は、信号生成制御レジスタ２１５に「0x0」を設定する。
【００７０】
更にここでは、３サイクル周期でポーリングを行うので、ＣＰＵ２０１は、ポーリング周期設定レジスタ２２１７に「0x31」を設定する。これにより、ポーリング周期設定レジスタ２２１７から出力される信号（Cyc＿Range）２２２７ａは、「0x3」を示す信号となる（Cyc＿Range=0x3）。また、信号（Cyc＿En）２２２７ｂは、「0x1」を示す信号となる（Cyc＿En=0x1）。
そして、ＣＰＵ２０１は、ポーリング制御レジスタ２１１に「0x1」を設定して、ポーリングをスタートさせる。
【００７１】
ポーリングがスタートすると、状態検出ブロック２０６はバスマスタ機能ブロック２０５にリード要求を行う。ここで、図１１のフローチャートを参照しながら、バスマスタ機能ブロック２０５にリード要求を行う際の状態検出ブロック２２０６の動作の一例を説明する。
【００７２】
まず、ステップＳ１１０１〜Ｓ１１０６は、図７に示したステップＳ７０１〜７０６と同じである。すなわち、状態検出ブロック２０６は、ポーリングをスタートする状態であるか否かを判断する（ステップＳ１１０１）。そして、ポーリングをスタートする状態であれば、リード要求制御機能ブロック２０６ａは、ターゲットアドレスレジスタ２１２の設定値「0xA000＿0000」をアドレス信号（addr）２３１とする。更に、リード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２をアサート（assert）する（ステップＳ１１０２）。
【００７３】
次に、リード要求制御機能ブロック２０６ａは、アクセス終了信号（done）２３３がアサートされたか否かを判断する（ステップＳ１１０３）。そして、アクセス終了信号（done）２３３がアサートされた場合、リード要求制御機能ブロック２０６ａは、リードリクエスト信号（req）２３２をネゲート（negate）する（ステップＳ１１０４）。
【００７４】
次に、リード要求制御機能ブロック２０６ａは、リードデータに変化があるか否かを判断する（ステップＳ１１０５）。この判断の結果、リードデータに変化がない場合にはステップＳ１１０６を省略して後述するステップＳ１１０７に進む。一方、リードデータに変化がある場合には、リード要求制御機能ブロック２０６ａは、バス機能ブロック２０５から出力されたリードデータ（rdata）２３４の値を、レジスタ２０６ｂに設定する。
【００７５】
そして、ステップＳ１１０７に進むと、リード要求制御機能ブロック２０６ａは、ポーリング周期設定レジスタ２２１７から出力された信号（Cyc＿En）２２２７ｂの値を参照する。そして、リード要求制御機能ブロック２０６ａは、動作モードが、周期ポーリング動作モード及び通常ポーリング動作モードの何れであるのかを判断する。この判断の結果、動作モードが通常ポーリング動作モードである場合には、処理を終了する。一方、動作モードが周期ポーリング動作モードである場合には、ステップＳ１１０８に進む。
【００７６】
ステップＳ１１０８に進むと、リード要求制御機能ブロック２０６ａは、タイマー機能ブロック２０６ｃから信号（expired）２２４３がアサートされるまで待機する。すなわち、リード要求制御機能ブロック２０６ａは、タイマー機能ブロック２０６ｃから、「１」を示す信号（expired）２２４３が出力されるまで待機する(expired=1)。
ここで、図１２にタイミングチャートを参照しながら、次のポーリングの要求を３サイクル待たせる際の状態検出ブロック２２０６の動作の一例を説明する。
バスマスタ機能ブロック２０５からのアクセス終了信号（done）２３３を状態検出ブロック２２０６が受け取ると、次の処理を行う。すなわち、タイマー機能ブロック２０６ｃは、ポーリング周期設定レジスタ２２１７に設定されたサイクル数だけ、タイマーの値（timer）２２４４のデクリメントを開始する。
【００７７】
その後、タイマーの値（timer）２２４４が「０」になると、タイマー機能ブロック２０６ｃは、信号（expired）２２４３を１サイクルだけアサートする。信号（expired）２２４３がアサートされると、状態検出ブロック２２０６は、次のリードリクエスト信号（req）２３２をアサートする。これによりポーリングを行うことが可能となる。
尚、ポーリング周期設定レジスタ２２１７から出力された信号（Cyc＿En）２２２７ｂが「0x0」の場合（Cyc＿En=0x0）、状態検出ブロック２２０６は、このような周期的なポーリングを行わない。すなわち、状態検出ブロック２２０６は、アクセス終了信号（done）２３３がアサートされたらすぐに連続して次のポーリングの要求を発行する。
【００７８】
図９に説明を戻し、外部通信モジュール２０３に内蔵されているＦＩＦＯにデータが溜まっていくと、レジスタ２０６ｂの値は、「0x0、0x1、・・・」と変化する。従って、条件判定ブロック２０７が入力する信号（data）２４１も、「0x0、0x1、・・・」と変化する。ここで、判定マスクレジスタ２１４から出力される信号（Cond＿Mask）２２４は、「0xffff＿fff0」である（Cond＿Mask=0xffff＿fff0）。従って、条件判定ブロック２０７が出力する条件判定フラグの信号（flag）２４２は、前記（１）式が成り立つ間は「０」となる（flag=0）。また、条件判定フラグの信号（flag）２４２は、前記（２）式が成り立つ間（すなわち、信号（data）２４１が「0xe」を示している間）は「１」となる（flag=1）。
【００７９】
条件判定フラグの信号（flag）２４２が「１」になると（flag=1）、割り込み信号生成ブロック２０８の割り込み信号制御部６０１は正論理の割り込み信号（int）６１１を生成する（int=1）。尚、割り込み信号生成ブロック２０８の詳細な動作は、第１の実施形態で説明した通りである（図８を参照）。
【００８０】
そして、クリアレジスタ２１６からの信号（Clear）２２６が「０」である場合、割り込み信号制御部６０１は、正論理の割り込み信号（int）６１１を出力する（int=1）。ここでは、信号生成制御レジスタ２１５から信号（Polarity）２２５が「０」に設定されている（Polarity=0x0）。従って、セレクタ６０２は、割り込み信号（interrupt）２１７として、正論理の割り込み信号（int）６１１を選択する。そして、セレクタ６０２は、「１」を示す割り込み信号（interrupt）２１７を、システムバス１０８を介してＣＰＵ２０１に出力する。
【００８１】
ＣＰＵ２０１は、割り込み信号生成ブロック２０８から出力された割り込み信号（interrupt）２１７による割り込み通知を受けて、外部通信モジュール２０３に内蔵されているＦＩＦＯがフルになる一歩手前の状態で、所定の処理を行う。そして、ＣＰＵ２０１は、割り込みをクリアする。割り込みのクリアは、割り込みクリアレジスタ２１６に「0x1」を設定することにより行われる。割り込みクリアレジスタ２１６に「0x1」が設定されると（Clear=0x1）、割り込み信号制御部６０１は、図８のフローチャートに従い、正論理の割り込み信号（int）６１１をネゲートする。これにより、「０」を示す割り込み信号（interrupt）２１７が出力され、割り込みがクリアされる。
【００８２】
以上のように本実施形態では、タイマー機能ブロック２０６ｃを用いて、ポーリング周期設定レジスタ２２１７に設定されている周期でポーリングの要求を行うようにした。従って、第１の実施形態で説明した効果に加え、システムバス１０８にかかる負荷をより軽減できるという効果を有する。
また、ポーリングの要求を行う周期をプログラマブルに設定するようにしたので、システムに応じてポーリング要求頻度を調整することができる。
尚、本実施形態では、周期的にポーリングの要求を行うようにしたが、ポーリングの要求が時間的に間隔を有して行われれば、必ずしも周期的にポーリングの要求を行う必要はない（すなわち、ポーリングの要求を行う間隔は一定でなくてもよい）。
【００８３】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。前述した第１及び第２の実施形態では、外部通信モジュール２０３の内部状態に応じて、バスマスタ回路２０２がＣＰＵ２０１に割り込み信号を通知するようにした。これに対し、本実施形態では、バスマスタ回路が、ポーリングを行ったハードウェアの内部状態に応じて、ポーリングを行っていない他のハードウェアへアクセスするようにしている。このように、本実施形態と前述した第１及び第２の実施形態とは、バスマスタ回路の構成の一部、バスマスタ回路がポーリングするハードウェア、及びポーリングを行った後にバスマスタ回路がアクセスするハードウェアとが異なる。従って、本実施形態の説明において、前述した第１及び第２の実施形態と同一の部分については、図１〜図１２に付した符号と同一の符号を付す等して詳細な説明を省略する。尚、本実施形態では、図１に示したハードウェア制御ブロック１０５を、クロック制御モジュールのレジスタの設定を行うバス転送制御ブロックで構成する場合を例に挙げて説明する。
【００８４】
図１３は、クロック制御モジュールのレジスタの設定を行うバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
図１３において、システムＬＳＩは、ＣＰＵ２０１、バスマスタ回路３２０２、ポート制御モジュール１２０３、及びクロック制御モジュール１２０５を備えて構成される。
バスマスタ回路３２０２は、バスマスタ機能ブロック３２０５、状態検出ブロック２０６、条件判定ブロック２０７、バス転送制御ブロック１２０８、制御レジスタ群３２０９、及びバススレーブ機能ブロック２１０を内蔵する。本実施形態では、バス転送制御ブロック１２０８が、クロック制御モジュール１２０５のレジスタの設定を行う。
【００８５】
バスマスタ機能ブロック３２０５は、システムバス１０８のバスプロトコルに従って、バスマスタとしてシステムバス１０８とアクセス（バスアクセス）するためのマスタインターフェースのブロックである。
【００８６】
状態検出ブロック２０６は、前述したように、システムバスに接続されたハードウェアの内部状態を検出する。本実施形態では、状態検出ブロック２０６は、ポートステータスレジスタ１２０５の内部状態を検出する。
条件判定ブロック２０７は、前述したように、状態検出ブロック２０６の検出結果に基づいて、条件を満たしているか否かを判定する。本実施形態では、条件判定ブロック２０７は、クロックコントロールレジスタ１２０６へ書き込みを行うための条件を満たしているか否かを判定する。
【００８７】
バス転送制御ブロック１２０８は、条件判定ブロック２０７から、条件判定フラグの信号（flag）２４２の立ち上がりエッジを受け取り、バスマスタ機能ブロック３２０５に、クロックコントロールレジスタ１２０６への書き込み要求を行う。以下の説明では、クロックコントロールレジスタ１２０６への書き込み要求を必要に応じてライト転送の要求と称する。
【００８８】
バス転送制御ブロック１２０８は、バスマスタ機能ブロック３２０５とのインターフェースを有する。バス転送制御ブロック１２０８は、ライトリクエスト信号（req）３２３２とアクセス終了信号（done）３２３３のハンドシェークで、アドレス信号（addr）３２３１とライトデータ（wdata）３２３４をバスマスタ機能ブロック３２３５に渡す。また、バス転送制御ブロック１２０８は、制御レジスタ群２０９から、信号（Trf＿Addr、Trf＿Val）３２１６、３２１７を受け取る。この信号（Trf＿Addr、Trf＿Val）３２１６、３２１７の詳細については後述する。更に、バス転送制御ブロック１２０８は、状態検出ブロック２０６によるポーリング動作を停止させる場合に、ポーリング制御レジスタ２１１へ信号（Clear）３２２６を出力する。
【００８９】
制御レジスタ群３２０９は、状態検出ブロック２０６、条件判定ブロック２０７、及びバス転送制御ブロック１２０８の動作を制御する信号のソースレジスタを有するブロックである。ＣＰＵ２０１が各レジスタ２１２〜２１４、１２１６〜１２１８の設定をプログラマブルに行う。
【００９０】
ポーリング制御レジスタ１２１８は、ポーリングのスタート及びストップを制御するためのものであり、ポーリングのスタート、ストップを示す信号（En）２２１を状態検出ブロック２０６に出力する。ポーリング制御レジスタ１２１８の仕様は、図５（ａ）に示したポーリング制御レジスタ２１１と同じである。ただし、ポーリング制御レジスタ１２１８は、バス転送制御ブロック１２０８から信号（Clear）３２２６を受け取った場合にも、ポーリングをストップさせる。すなわち、ポーリング制御レジスタ１２１８は、「0x0」を示す信号（En）２２１を状態検出ブロック２０６に出力する。
【００９１】
ターゲットアドレスレジスタ２１２は、前述したように、ポーリングするターゲットとなるレジスタのアドレスを設定するためのものであり、その仕様は、図５（ｂ）に示した通りである。本実施形態では、ターゲットアドレスレジスタ２１２は、図１３に示すポートステータスレジスタ１２０４のアドレスを設定する。
判定データレジスタ２１３は、前述したように、条件判定ブロック２０７における比較条件となるデータを設定するためのものであり、その仕様は、図５（ｃ）に示した通りである。
判定データマスクレジスタ２１４は、前述したように、条件判定をマスクするビットをビット毎に設定するためのものであり、その仕様は、図５（ｄ）に示した通りである。
【００９２】
転送アドレスレジスタ１２１６は、ポーリングを行うモジュールとは異なるモジュールのレジスタであって、データの書き換え対象となるレジスタのアドレスを設定するものである。この転送アドレスレジスタ１２１６は、そのアドレスを示す信号（Trf＿Addr）３２１６をバス転送制御ブロック１２０８に出力する。図１４（ａ）に、転送アドレスレジスタ１２１６の仕様の一例を示す。図１４（ａ）に示すように、本実施形態では、信号（Trf＿Addr）３２１６を３２ビットの構成としている。また、信号（Trf＿Addr）３２１６のビット幅を、使用するシステムバス１０８のアドレス幅と同じにしている。
【００９３】
転送データレジスタ１２１７は、データの書き換え対象のレジスタに書き込むデータを設定するものである。この転送データレジスタ１２１７は、そのデータを示す信号（Trf＿Val）３２１７をバス転送制御ブロック１２０８に出力する。図１４（ｂ）に、転送データレジスタ１２１７の仕様の一例をに示す。図１４（ｂ）に示すように、本実施形態では、信号（Trf＿Val）３２１７を３２ビットの構成としている。また、信号（Trf＿Val）３２１７のビット幅を、使用するシステムバス１０８のデータ幅と同じにしている。
バススレーブ機能ブロック２１０は、前述したように、ＣＰＵ２０１が制御レジスタ群２０９にアクセスするためのインターフェースである。
【００９４】
ポート制御モジュール１２０３は、システムＬＳＩの外部端子において汎用ポートとして割り当てられているポートの制御を行う。このポート制御モジュール１２０３は、外部端子の状態を示すポートステータスレジスタ１２０４を持つ。本実施形態では、ポートステータスレジスタ１２０４が、アドレス「0xA010＿0000」にマッピングされているとする。図１５（ａ）は、ポートステータスレジスタ１２０４の仕様の一例を示す図である。図１５（ａ）に示すように、０ビット目〜７ビット目P0＿Sts〜P7＿Stsのそれぞれにおいて、外部端子Ｐ０〜Ｐ７の状態をポートステータスレジスタ１２０４から読み出すことができる。尚、ポートステータスレジスタ１２０４の設定は、例えばＣＰＵ２０１によってプログラマブルに行われる。
【００９５】
クロック制御モジュール１２０５は、システムＬＳＩの各モジュールに供給されるクロックの制御を行う。このクロック制御モジュール１２０５は、各モジュールのクロックの設定を行うクロックコントロールレジスタ１２０６を持つ。本実施形態では、クロックコントロールレジスタ１２０６が、アドレス「0xA020＿0000」にマッピングされているとする。
【００９６】
図１５（ｂ）は、クロックコントロールレジスタ１２０６の仕様の一例を示す図である。図１５（ｂ）に示すように、０ビット目CPU＿clkに「１」が設定されると、ＣＰＵ２０１にクロックが供給される。一方、０ビット目CPU＿clkに「０」が設定されると、ＣＰＵ２０１にクロックが供給されなくなる。尚、システムの起動時には、０ビット目CPU＿clkに「１」が設定され、ＣＰＵ２０１にクロックが供給された状態になる。
また、１〜２ビット目CPU＿clk＿frqに「０」が設定されると、ＣＰＵ２０１のクロックの周波数は１ＭＨｚとなる。同様に、１〜２ビット目CPU＿clk＿frqに「１」が設定されると８ＭＨｚ、「２」が設定されると６４ＭＨｚ、「３」が設定されると１２８ＭＨｚとなる。
【００９７】
次に、図１４に示すシステムＬＳＩの動作の一例について説明する。ここでは、ＣＰＵ２０１のクロックを停止させて、低消費電力状態へシステムを移行させた後、外部端子の状態をポーリングして通常動作状態へ復帰させる場合を例に挙げて説明する。尚、通常動作状態への復帰は、外部端子Ｐ６、Ｐ７に対する設定が共に「１」になったときに行うとする。
【００９８】
まず、ＣＰＵ２０１は、バスマスタ回路２０２の制御レジスタ群２０９に対する設定を行う。具体的にＣＰＵ２０１は、ポーリングする対象であるポートステータスレジスタ１２０４のアドレス「0xA010＿0000」をターゲットアドレスレジスタ２１２に設定する。これにより、ターゲットアドレスレジスタ２１２から出力される信号（Sts＿Addr）２２２は、「0xA010＿0000」を示す信号となる（Sts＿Addr=0xA000＿0000）。
次に、ＣＰＵ２０１は、条件判定ブロック２０７における比較条件となるデータとして「0xc0」を判定データレジスタ２１３に設定する。これにより、判定データレジスタから出力される信号（Cond＿Val）２２３は、「0xc0」を示す信号となる（Cond＿Val=0xc0）。
【００９９】
また、条件判定ブロック２０７で比較を行うデータは、６ビット目と７ビット目の２ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、ＣＰＵ２０１は、「0xffff＿ff3f」を判定マスクレジスタ２１４に設定する。これにより、判定マスクレジスタ２１４から出力される信号（Cond＿Mask）２２４は、「0xffff＿ff3f」を示す信号となる（Cond＿Mask=0xffff＿ff3f）。
【０１００】
そして、ＣＰＵ２０１は、データの書き換え対象となるクロックコントロールレジスタ１２０６のアドレス「0xA020＿0000」を転送アドレスレジスタ１２１６に設定する。これにより、クロックコントロールレジスタ１２０６から出力される信号（Trf＿Addr）３２１６は、「0xA020＿0000」を示す信号となる（Trf＿Addr=0xA020＿0000）。
次に、ＣＰＵ２０１は、ＣＰＵ２０１へクロックを供給し、クロック周波数を１ＭＨｚにするデータ「0x1」を転送データレジスタ１２１７に設定する。これにより、転送データレジスタ１２１７から出力される信号（Trf＿Val）３２１７は、「0x1」となる（Trf＿Val=0x1）。
そして、ＣＰＵ２０１は、ポーリング制御レジスタ２１１に「0x1」を設定する。これにより、ポーリング制御レジスタ２１１から出力される信号２２１は、「0x1」となり（En=0x1）、ポーリングがスタートする。
【０１０１】
その後、ＣＰＵ２０１は、バスマスタ回路２０２を動作させた後、クロックコントロールレジスタ１２０６の０ビット目CPU＿clkを「０」に設定する。そうすると、ＣＰＵ２０１へクロックが供給されなくなり、低消費電力状態へ移行する。
【０１０２】
ポーリング制御レジスタ２１１から出力された信号（En）２２１が「0x1」になると（En=0x1）、状態検出ブロック２０６は、バスマスタ機能ブロック２０５にリード要求を行う。状態検出ブロック２０６がバスマスタ機能ブロック２０５にリード要求を行う際の動作は、図７に示した通りである。
【０１０３】
そして、バスマスタ機能ブロック３２０５によるポートステータスレジスタ１２０４のポーリングの結果によって得られる外部端子Ｐ０〜Ｐ７の変化に応じて、レジスタ２０６ｂの値は、「0x13、0x19、・・・」と変化する。従って、条件判定ブロック２０７が入力する信号（data）２４１も、「0x13、0x19、・・・」と変化する。ここで、判定マスクレジスタ２１４から出力される信号（Cond＿Mask）２２４は、「0xffff＿ff3f」である（Cond＿Mask=0xffff＿ff3f）。従って、条件判定ブロック２０７が出力する条件判定フラグの信号（flag）２４２は、以下の（３）式が成り立つ間は「０」であり（flag=0）、以下の（４）式が成り立つ間は「１」となる（flag=1）。
data[7:6]≠Cond＿Val[7:6]  ・・・（３）
data[7:6]＝Cond＿Val[7:6]（data[7:6]=b11（２進数））  ・・・（４）
【０１０４】
条件判定フラグの信号（flag）２４２が「１」になると（flag=1）、バス転送制御ブロック１２０８は、バスマスタ機能ブロック２０５にライト転送の要求を行うと共に、信号（Clear）３２２６をポーリング制御レジスタ２１１へ出力する。ここで、図１６のフローチャートを参照しながら、バスマスタ機能ブロック２０５へのライト転送の要求と、ポーリング制御レジスタ２１１への信号（Clear）３２２６の出力とを行う際のバス転送制御ブロック１２０８の動作の一例を説明する。
【０１０５】
まず、ステップＳ１６０１において、バス転送制御ブロック１２０８は、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有しているか否かを判断する。この判断の結果、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有していない場合には、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有するまで待機する。一方、条件判定フラグの信号（flag）２４２が立ち上がりエッジを有している場合には、ステップＳ１６０２に進む。
【０１０６】
ステップＳ１６０２に進むと、バス転送制御ブロック１２０８は、ポーリング動作を停止させるために、信号（Clear）３２２６をポーリング制御レジスタ１２１８に出力する。
次に、ステップＳ１６０２において、バス転送制御ブロック１２０８は、転送アドレスレジスタ２１２の設定値「0xA020＿0000」をアドレス信号（addr）に含める。また、バス転送制御ブロック１２０８は、ライトデータ（wdata）３２３４に転送データレジスタの設定値「0x1」を含める。そして、バス転送制御ブロック１２０８は、ライトリクエスト信号（req）３２３２をアサートする(req=1)。すなわち、バス転送制御ブロック１２０８は、「１」を示すライトリクエスト信号（req）３２３２をバスマスタ機能ブロック３２０５に出力する。これにより、バス転送制御ブロック１２０８からバスマスタ機能ブロック２０５へ、ライト転送の要求がなされる。
【０１０７】
次に、ステップＳ１６０４において、バス転送制御ブロック１２０８は、アクセス終了信号（done）３２３３がアサートされたか否かを判断する。すなわち、バス転送制御ブロック１２０８は、バスマスタ機能ブロック２０５から送信されたアクセス終了信号(done)３２３３が「１」であるか否かを判断する。この判断の結果、アクセス終了信号（done）３２３３がアサートされない場合（バスマスタ機能ブロック３２０５から送信されたアクセス終了信号(done)３２３３が「１」でない場合）には、アサートされるまで待機する。一方、アクセス終了信号（done）３２３３がアサートされた場合（バスマスタ機能ブロック３２０５から送信されたアクセス終了信号(done)３２３３が「１」の場合）には、ステップＳ１６０５に進む。
【０１０８】
ステップＳ１６０５に進むと、バス転送制御ブロック１２０８は、リードリクエスト信号（req）３２３２をネゲート（negate）する。すなわち、バス転送制御ブロック１２０８は、「０」を示すリードリクエスト信号（req）３２３２をバスマスタ機能ブロック３２０５に出力する（req=0）。
【０１０９】
以上のようにしてバス転送制御ブロック１２０８からバスマスタ機能ブロック３２０５になされたライト転送の要求により、バスマスタ機能ブロック３２０５は、クロック制御モジュール１２０５にライト転送を行う。そうすると、クロックコントロールレジスタ１２０６に「0x1」が設定され、ＣＰＵ２０１に１ＭＨｚのクロックが供給され、通常動作状態へ復帰する。
【０１１０】
以上のように本実施形態では、状態検出ブロック３２０６が、ポートステータスレジスタ１２０４の設定をポーリングし、外部端子Ｐ０〜Ｐ７の状態を検出する。状態検出ブロック３２０６の検出結果に基づいて、条件判定ブロック２０７は、低消費電力状態から通常動作状態にシステムを復帰させるための条件を満たしているか否かを判定する。低消費電力状態から通常動作状態にシステムを復帰させるための条件を満たすと、バス転送制御ブロック１２０８は、クロックコントロールレジスタ１２０６への書き込み要求（ライト転送の要求）をバスマスタ機能ブロック３２０５に行う。バスマスタ機能ブロック３２０５は、バス転送制御ブロック１２０８からなされたライト転送の要求に従って、クロックコントロールレジスタ１２０６の書き換え指示（ライト転送）を行う。クロック制御モジュール１２０５は、クロックコントロールレジスタ１２０６は、ライト転送に従ってクロックコントロールレジスタ１２０６の設定値を変更する。そうすると、ＣＰＵ２０１は、その変更に従って、低消費電力状態から通常動作状態にシステムを復帰させる。
【０１１１】
以上のようにすることによって、バスマスタ回路３２０２は、低消費電力状態でＣＰＵ２０１が停止している状況でも、ＣＰＵ２０１に代わりにポートステータスレジスタ１２０４をポーリングして通常動作状態へ復帰する条件が成立したことを検出できる。そして、バスマスタ回路３２０２がクロックコントロールレジスタ１２０６の設定を行うことができる。従って、ＣＰＵ２０１への割り込み処理を行わずにクロックコントロールレジスタ１２０６の設定を行って、通常動作状態へ復帰させることができる。これにより、ＣＰＵ２０１の負荷を削減できると共に、ポート制御モジュール１２０３（ポートステータスレジスタ１２０４）の内部状態を検出する際の処理速度を向上させることができる。更に、プロセッサ（ＣＰＵ）を複数設ける必要がないので、ポート制御モジュール１２０３（ポートステータスレジスタ１２０４）の内部状態を検出するためのハードウェアによってシステムＬＳＩの面積が増加することを防止できる。この他、データの書き換え対象となるレジスタのアドレスと、データの内容とをプログラマブルに設定するようにしたので、様々なハードウェアを様々な形態で制御することが可能になる。
【０１１２】
尚、本実施形態では、バスマスタ回路３２０２がポーリングする対象のハードウェアをポート制御モジュール１２０３としたが、第１及び第２の実施形態と同様に、バスマスタ回路３２０２がポーリングする対象はこれに限定されない。すなわち、ハードウェア内部に内部状態を表示するレジスタを備えたハードウェアモジュールであれば、どのようなハードウェアであってもポーリングする対象とすることができる。
【０１１３】
また、本実施形態では、設定対象のレジスタをクロック制御モジュール１２０５内のクロックコントロールレジスタ１２０６としたが、設定対象のレジスタはこれに限定されない。すなわち、バス転送により設定が可能なレジスタを有するハードウェアモジュールであれば、どのようなハードウェアモジュール内のレジスタであっても設定対象とすることができる。
【０１１４】
また、本実施形態では、バス転送制御ブロック１２０８がライト転送をバスマスタ機能ブロック３２０５に要求するようにしたが、必ずしもライト転送を要求しなくてもよい。例えば、ハードウェアモジュールの内部状態の読み出しの要求（リード転送の要求）を行ってもよい。また、リード転送を行うことによって読み出されたデータに応じて所定のビットを対象に操作を行ったデータの書き込みの要求（read-modify-write転送の要求）を行ってもよい。また、通常動作状態時にＣＰＵ２０１がプログラマブルにクロックコントロールレジスタ１２０６の設定を行えるようにしてもよい。
また、転送アドレスレジスタ１２１６及び転送データレジスタ１２１７を複数設け、バス転送制御ブロック１２０８が複数のレジスタを設定対象としてライト要求等を行えるようにしてもよい。
【０１１５】
また、第２の実施形態と同様に、ポーリング周期設定レジスタ２２１７とタイマー機能ブロック２０６ｃとを設け、ポーリング周期設定レジスタ２２１７に設定されている周期でポーリングの要求を行うようにしてもよい。このようにすれば、システムバス１０８にかかる負荷をより軽減することができる。
また、本実施形態では、転送方向レジスタを更に設け、この転送方向レジスタを用いることにより転送方向をプログラマブルに設定することもできる。
【０１１６】
（本発明の他の実施形態）
前述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給してもよい。そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【０１１７】
また、この場合、前記ソフトウェアのプログラムコード自体が前述した実施形態の機能を実現することになる。また、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、例えば、かかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１１８】
また、コンピュータが供給されたプログラムコードを実行することにより、前述の実施形態の機能が実現されるだけでない。そのプログラムコードがコンピュータにおいて稼働しているオペレーティングシステムあるいは他のアプリケーションソフト等と共同して前述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【０１１９】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードに備わるＣＰＵが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
また、供給されたプログラムコードがコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいて機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【０１２０】
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１２１】
【図１】本発明の第１の実施形態を示し、バスマスタ回路の基本構成の一例を示す図である。
【図２】本発明の第１の実施形態を示し、ＣＰＵに対する割り込み信号を生成するバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
【図３】本発明の第１の実施形態を示し、条件判定ブロックの構成の一例を示す図である。
【図４】本発明の第１の実施形態を示し、割り込み信号生成ブロックの構成の一例を示す図である。
【図５】本発明の第１の実施形態を示し、制御レジスタ群の仕様の一例を示す図である。
【図６】本発明の第１の実施形態を示し、データポインタレジスタの仕様の一例を示す図である。
【図７】本発明の第１の実施形態を示し、バスマスタ機能ブロックにリード要求を行う際の状態検出ブロックの動作の一例を説明するフローチャートである。
【図８】本発明の第１の実施形態を示し、割り込み信号生成ブロックの動作の一例を説明するフローチャートである。
【図９】本発明の第２の実施形態を示し、ＣＰＵに対する割り込み信号を生成するバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
【図１０】本発明の第２の実施形態を示し、ポーリング周期設定レジスタの仕様の一例を示す図である。
【図１１】本発明の第２の実施形態を示し、バスマスタ機能ブロックにリード要求を行う際の状態検出ブロックの動作の一例を説明するフローチャートである。
【図１２】本発明の第２の実施形態を示し、次のポーリングの要求を３サイクル待たせる際の状態検出ブロックの動作の一例を説明するタイミングチャートである。
【図１３】本発明の第３の実施形態を示し、クロック制御モジュールのレジスタの設定を行うバスマスタ回路を備えたシステムＬＳＩの構成の一例を示す図である。
【図１４】本発明の第３の実施形態を示し、転送アドレスレジスタの仕様の一例と、転送データレジスタの仕様の一例とを示す図である。
【図１５】本発明の第３の実施形態を示し、ポートステータスレジスタの仕様の一例と、クロックコントロールレジスタの仕様の一例とを示す図である。
【図１６】本発明の第３の実施形態を示し、バスマスタ機能ブロックへのライト転送の要求と、ポーリング制御レジスタへの信号（Clear）の出力とを行う際のバス転送制御ブロックの動作の一例を説明するフローチャートである。
【符号の説明】
【０１２２】
１０１、２０２、２２０２、３２０２  バスマスタ回路
１０２、２０５、３２０５  バスマスタ機能ブロック
１０３、２０６、２２０６  状態検出ブロック
１０４、２０７  条件判定ブロック
１０５  ハードウェア制御ブロック
１０６、２０９、２２０９、３２０９  制御レジスタ群
１０７、２１０  バススレーブ機能ブロック
１０８  システムバス
２０１  ＣＰＵ
２０３  外部通信モジュール
２０４  ＦＩＦＯデータポインタレジスタ
２０８  割り込み信号生成ブロック
１２０３  ポート制御モジュール
１２０４  ポートステータスレジスタ
１２０５  クロック制御モジュール
１２０６  クロックコントロールレジスタ
１２０８  バス転送制御ブロック
【図１】
2008021040.tif 000003
【図２】
2008021040.tif 000004
【図３】
2008021040.tif 000005
【図４】
2008021040.tif 000006
【図５】
2008021040.tif 000007
【図６】
2008021040.tif 000008
【図７】
2008021040.tif 000009
【図８】
2008021040.tif 000010
【図９】
2008021040.tif 000011
【図１０】
2008021040.tif 000012
【図１１】
2008021040.tif 000013
【図１２】
2008021040.tif 000014
【図１３】
2008021040.tif 000015
【図１４】
2008021040.tif 000016
【図１５】
2008021040.tif 000017
【図１６】
2008021040.tif 000018