(57)【要約】【課題】消費電力を低減すると共に、必要とされる対象処理の遅延を低減することができる半導体集積回路および割り込み生成方法の提供を図る。【解決手段】レジスタ１を含む回路ブロック１００と、前記レジスタの値を読み出して出力するレジスタ値読み出し回路４００と、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路５００と、を有する。【選択図】図８
2013041534.tif 000002
【特許請求の範囲】
【請求項１】
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【請求項２】
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする請求項１または請求項２に記載の半導体集積回路。
【請求項４】
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第１比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第２比較器と、を有し、
前記第２比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする請求項４に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願で言及する実施例は、半導体集積回路および割り込み生成方法に関する。
【背景技術】
【０００２】
システム開発において、設計資産であるＩＰ（Intellectual Property）を利用して開発が行われている。ＩＰとは、特定の機能を備え汎用的に用いることができる回路ブロックや論理モジュールのことで、既存のＩＰを再利用してシステムを開発することにより開発期間を短縮することができる。既存のＩＰの中には、例えば、ポーリング対象となるレジスタを備えるＩＰで、そのレジスタ変化による割り込み機能を有していないものがある。
【０００３】
このように、レジスタ変化による割り込み機能（割り込み生成回路）が設けられていないＩＰを使用する場合、ＣＰＵ（Central Processing Unit：中央処理装置）は、割り込み処理を利用することができないため、ポーリング処理を行うことになる。
【０００４】
ところで、従来、割り込み処理を改良した半導体集積回路、或いは、レジスタの値と期待値を比較して割り込み生成を行う半導体集積回路としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２８７６５４号公報
【特許文献２】特開２０００−０５７００３号公報
【特許文献３】特開２００３−２８８２３５号公報
【特許文献４】特開平０１−２２３５４９号公報
【特許文献５】特開平０３−０３５３３１号公報
【特許文献６】特開２００４−２３４７２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述したように、レジスタ変化による割り込み機能が設けられていないＩＰを使用する場合、ＣＰＵは、ポーリング処理を行う。しかしながら、このポーリング処理を行うには、例えば、ＣＰＵに対して常にクロックを入力しなければならず、消費電力の増大を招く。
【０００７】
さらに、ポーリング処理を行う場合、そのポーリングの結果により実行する対象処理（必要とされる処理）は、所定のポーリング間隔によりレジスタ変化を検出した後に実行されるため、割り込み処理のように即座に実行することができない。その結果、必要とされる対象処理に遅延が生じる。
【課題を解決するための手段】
【０００８】
一実施形態によれば、レジスタを含む回路ブロックと、レジスタ値読み出し回路と、割り込み生成回路と、を有することを特徴とする半導体集積回路が提供される。
【０００９】
前記レジスタ値読み出し回路は、前記レジスタの値を読み出して出力する。前記割り込み生成回路は、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する。
【発明の効果】
【００１０】
開示の半導体集積回路および割り込み生成方法は、消費電力を低減すると共に、必要とされる対象処理の遅延を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、ＣＰＵからのポーリング処理を説明するためのブロック図である。
【図２】図２は、ＣＰＵからのポーリング処理（別の処理なし）を説明するためのタイミングチャートである。
【図３】図３は、図２のポーリング処理の一例を示すフローチャートである。
【図４】図４は、ＣＰＵからのポーリング処理（別の処理あり）を説明するためのタイミングチャートである。
【図５】図５は、図４のポーリング処理の一例を示すフローチャートである。
【図６】図６は、本実施例の割り込み生成方法による割り込み処理（別の処理なし）を説明するためのタイミングチャートである。
【図７】図７は、本実施例の割り込み生成方法による割り込み処理（別の処理あり）を説明するためのタイミングチャートである。
【図８】図８は、第１実施例の半導体集積回路を示すブロック図である。
【図９】図９は、図８に示す半導体集積回路における処理の一例を示すフローチャート（その１）である。
【図１０】図１０は、図８に示す半導体集積回路における処理の一例を示すフローチャート（その２）である。
【図１１】図１１は、図８に示す半導体集積回路における処理の一例を示すフローチャート（その３）である。
【図１２】図１２は、図８に示す半導体集積回路における処理を説明するためのタイミングチャートである。
【図１３】図１３は、第２実施例の半導体集積回路を示すブロック図である。
【発明を実施するための形態】
【００１２】
まず、半導体集積回路および割り込み生成方法の実施例を詳述する前に、半導体集積回路および割り込み生成方法およびその問題点を、図１〜図５を参照して説明する。
【００１３】
図１は、ＣＰＵからのポーリング処理を説明するためのブロック図である。図１において、参照符号１００はポーリング対象となるＩＰ（Intellectual Property）、２００はバス、そして、３００はＣＰＵ（Central Processing Unit：中央処理装置）を示す。
【００１４】
ＣＰＵ３００は、ＩＰ１００におけるレジスタ（ＩＰのステータスレジスタ）１をポーリングし、例えば、そのＩＰのステータスレジスタ１の値が所定の値に変化したら処理（対象処理）を行う。ここで、ＣＰＵ３００はマスターとして機能し、ＩＰ１００はスレーブとして機能する。
【００１５】
すなわち、図１に示されるように、ＣＰＵ３００は、バス２００を介してＩＰのステータスレジスタ１の値を、予め設定したポーリング間隔で読み出し、その読み出した値が所定の値に変化（期待値に一致）したら必要とされる処理（対象処理）を実行する。
【００１６】
図２は、ＣＰＵからのポーリング処理（別の処理なし）を説明するためのタイミングチャートであり、ＩＰのステータスレジスタ１の値が、タイミングＴ１０において、『０ｘ００００』から『０ｘ０００１』へ変化する場合を示す。
【００１７】
ここで、図２中の参照符号ＮＧ１０で示すように、ＣＰＵ３００は、例えば、ＩＰのステータスレジスタ１の値が変化したタイミングＴ１０を検出して行う割り込み機能（ＣＰＵ割り込み）を有していないものとする。
【００１８】
図２に示されるように、ＣＰＵ３００は、予め設定したポーリング間隔でＩＰのステータスレジスタ１の値を読み出（リード）し、期間ＰＰ１１，ＰＰ１２，ＰＰ１３，ＰＰ１４でポーリング処理を行う。すなわち、ポーリング期間ＰＰ１１，ＰＰ１２，ＰＰ１３，ＰＰ１４において、ＣＰＵ３００のバスには、ＩＰのステータスレジスタ１の値が読み出される。
【００１９】
そして、ＣＰＵ３００は、タイミングＴ１０の次のポーリング期間ＰＰ１４のポーリング処理により、ＩＰのステータスレジスタ１の値の変化（『０ｘ０００１』への変化）を認識し、その期間ＰＰ１４の後の期間ＯＰ１０から対象処理を実行する。すなわち、ＣＰＵのバスには、期間ＯＰ１０から対象処理の実行によるデータが現出する。
【００２０】
ここで、ＣＰＵ３００は別の処理（例えば、別のＩＰによる処理）を行っていないので、ポーリング期間ＰＰ１１，ＰＰ１２，ＰＰ１３，ＰＰ１４および対象処理の実行期間ＯＰ１０以外では、ＣＰＵ３００（ＣＰＵのバス）はアイドル状態となっている。
【００２１】
図３は、図２のポーリング処理の一例を示すフローチャートである。図３に示されるように、ＣＰＵ３００が別の処理を行っていない場合においてポーリング処理が開始すると、ステップＳＴ１１で、予め設定したポーリング間隔によりＩＰのステータスレジスタ１の値をリードする。
【００２２】
次に、ステップＳＴ１２に進んで、レジスタリード値（ＩＰのステータスレジスタ１から読み出した値）が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップＳＴ１３に進んで、対象処理を実行する。
【００２３】
すなわち、例えば、ＩＰのステータスレジスタ１から読み出した値が『０ｘ００００』から『０ｘ０００１』へ変化し、期待値である『０ｘ０００１』と一致したと判定すれば、ステップＳＴ１３に進んで、対象処理を実行して、ステップＳＴ１１に戻る。
【００２４】
なお、ステップＳＴ１２において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップＳＴ１１に戻って同様の処理を繰り返す。
【００２５】
ここで、図２中の参照符号ＣＲ１０で示されるように、ポーリング処理を行うためには、ＣＰＵ３００が別の処理を行っていない場合でも、ＣＰＵ３００のクロックを常に入力する必要がある。
【００２６】
そのため、ＣＰＵ３００は、常に電力を消費し、また、ＣＰＵのクロックを生成するための回路，並びに，ＣＰＵのクロックにより動作する他の回路も電力を消費することになる。
【００２７】
図４は、ＣＰＵからのポーリング処理（別の処理あり）を説明するためのタイミングチャートであり、ＩＰのステータスレジスタ１の値が、タイミングＴ２０において、『０ｘ００００』から『０ｘ０００１』へ変化する場合を示す。
【００２８】
ここで、図４中の参照符号ＮＧ２０で示すように、ＣＰＵ３００は、例えば、ＩＰのステータスレジスタ１の値が変化したタイミングＴ２０を検出して行うＣＰＵ割り込みを有していないものとする。
【００２９】
図４に示されるように、ＣＰＵ３００は、予め設定したポーリング間隔でＩＰのステータスレジスタ１の値をリードし、期間ＰＰ２２，ＰＰ２４でポーリング処理を行う。すなわち、ポーリング期間ＰＰ２２，ＰＰ２４において、ＣＰＵのバスには、ＩＰのステータスレジスタ１の値が読み出される。
【００３０】
そして、ＣＰＵ３００は、タイミングＴ２０の次のポーリング期間ＰＰ２４のポーリング処理により、ＩＰのステータスレジスタ１の値の変化を認識し、その期間ＰＰ２４の直後の期間ＯＰ２０から対象処理を実行する。すなわち、ＣＰＵのバスには、期間ＯＰ２０から対象処理の実行によるデータが現出する。
【００３１】
ここで、図４に示されるように、ＣＰＵ３００は、期間ＡＰ２１，ＡＰ２３において、別の処理（例えば、別のＩＰによる処理）を行っている。また、ポーリング期間ＰＰ２２，ＰＰ２４，別の処理の実行期間ＡＰ２１，ＡＰ２３および対象処理の実行期間ＯＰ２０以外では、ＣＰＵ３００（ＣＰＵのバス）はアイドル状態となっている。
【００３２】
図５は、図４のポーリング処理の一例を示すフローチャートである。図５に示されるように、ＣＰＵ３００が別の処理を行っている場合においてポーリング処理が開始すると、ステップＳＴ２１で、別の処理を実行する。次に、ステップＳＴ２２に進んで、予め設定したポーリング間隔でＩＰのステータスレジスタ１の値をリードする。
【００３３】
さらに、ステップＳＴ２３に進んで、レジスタリード値が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップＳＴ２４に進んで、対象処理を実行してステップＳＴ２１に戻る。また、ステップＳＴ２３において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップＳＴ２１に戻って同様の処理を繰り返す。
【００３４】
ここで、図４に示されるように、ＣＰＵ３００が別の処理を行っている場合には、ポーリング処理を行うためだけではなく、常にＣＰＵ３００のクロックを入力する必要があり、クロックを停止することはできない。
【００３５】
そして、図４中の参照符号ＤＴ２０で示すように、ＣＰＵ３００が別の処理を行っている場合、ＣＰＵ３００が対象処理を実行するのは、例えば、別の処理の実行期間ＡＰ２３の後に行うポーリング期間ＰＰ２４のさらに後である期間ＯＰ２０からになる。
【００３６】
すなわち、ＣＰＵ３００が対象処理を実行するのは、例えば、ＩＰのステータスレジスタ１の値が変化したタイミングＴ２０から時間ＤＴ２０だけ経過した後の期間ＯＰ２０になるため、必要とされる対象処理に遅延が生じる。
【００３７】
図１〜図５を参照して説明した問題は、例えば、システム開発において使用するＩＰが、他社から提供されたＩＰ、或いは、過去資産である従前のＩＰであり、それらのＩＰが所定のレジスタ変化による割り込み機能が有しておらず、また、それらのＩＰ自体を改良（変更）することができない場合等において生じる。
【００３８】
以下、半導体集積回路および割り込み生成方法の実施例を、添付図面を参照して詳述する。
【００３９】
図６は、本実施例の割り込み生成方法による割り込み処理（別の処理なし）を説明するためのタイミングチャートである。図６と前述した図２との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理（別の処理なし）によれば、ポーリング処理を不要として、ＣＰＵ３００のクロックを停止する。
【００４０】
図２中の参照符号ＣＲ１０に示される、ポーリング処理のために必要とされていたＣＰＵ３００のクロックを、図６中の参照符号ＣＲ３０のように、停止することによって、消費電力の低減を図る。
【００４１】
すなわち、期間ＣＲ３０において、ＣＰＵ３００のクロックを停止することにより、ＣＰＵのクロックを生成するための回路，並びに，ＣＰＵのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【００４２】
なお、ＣＰＵ３００のクロックは、ＩＰのステータスレジスタ１の値の変化を検出してＣＰＵ３００の割り込みが生成されてからＣＰＵ３００へ与えればよい。
【００４３】
図７は、本実施例の割り込み生成方法による割り込み処理（別の処理あり）を説明するためのタイミングチャートである。図７と前述した図４との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理（別の処理あり）によれば、ポーリング処理を不要としてＣＰＵ割り込みを行い、対象処理を優先的に処理する。
【００４４】
すなわち、図４中の参照符号ＤＴ２０に示される、ＩＰのステータスレジスタ１の値が変化してから対象処理が実行されるまでの時間（遅延時間）を、図７中の参照符号ＤＴ４０のように、短縮して対象処理を実行するまでの時間を低減することが可能になる。
【００４５】
図８は、第１実施例の半導体集積回路を示すブロック図である。図８において、参照符号１００はＩＰ，２００はバス，３００はＣＰＵ，４００はＤＭＡＣ（Direct Memory Access Controller），そして，５００は割り込み生成回路を示す。
【００４６】
ＩＰ１００，ＣＰＵ３００，ＤＭＡＣ４００および割り込み生成回路５００は、バス２００を介して接続されている。
【００４７】
ＩＰ１００は、レジスタ（ＩＰのステータスレジスタ）１を含み、ＤＭＡＣ４００は、バス２００を介して、ＩＰのステータスレジスタ１の値を読み出（リード）し、割り込み生成回路５００（ポーリングデータ格納レジスタ２）に書き込む（ライトする）。
【００４８】
割り込み生成回路５００は、ポーリングデータ格納レジスタ２，期待値データ格納レジスタ３，データマスクレジスタ４，最大ポーリング数設定レジスタ５，最大ウェイトサイクル設定レジスタ６，割り込みクリアレジスタ７およびポーリング数カウンタ８を含む。
【００４９】
また、割り込み生成回路５００は、ポーリングウェイトサイクルカウンタ９，第１比較器１０，第２比較器１１，第３比較器１２，第１割り込み生成部１３，第２割り込み生成部１４およびデコーダ（バスのアドレスデコーダ）１５を含む。
【００５０】
さらに、割り込み生成回路５００は、ＤＳＴＰ信号（データストップ信号）生成部１６，ＤＲＥＱ信号（データリクエスト信号）生成部１７，アンド回路部１８，１９およびオア回路部２０を含む。
【００５１】
ＩＰのステータスレジスタ１は、ポーリング対象のＩＰ１００のステータスレジスタであり、このステータスレジスタ１の値が変化したら、ＣＰＵ３００が必要とされる処理（対象処理）を実行する。
【００５２】
ポーリングデータ格納レジスタ２は、ＤＭＡＣ４００によりＤＭＡ転送された、ポーリング対象のＩＰのステータスレジスタ１の値を格納し、期待値データ格納レジスタ３は、ポーリング対象のＩＰのステータスレジスタ１の期待値を格納する。
【００５３】
データマスクレジスタ４は、ポーリングデータ格納レジスタ２および期待値データ格納レジスタ３の比較において、マスクしたいビットを設定するレジスタである。例えば、３２ビットのデータにおいて、ビット０のみの変化を検出したい場合には、このデータマスクレジスタ４によりビット１〜３１をセットしてマスクする。
【００５４】
最大ポーリング数設定レジスタ５は、ポーリングデータ格納レジスタ２の最大ライトアクセス回数を設定する。すなわち、ＤＭＡＣ４００により行うＤＭＡ転送の最大回数（最大ＤＭＡ転送回数）をこの最大ポーリング数設定レジスタ５に設定する。
【００５５】
これにより、ＤＭＡ転送が完了しても、まだポーリングデータ格納レジスタ２の値に変化がない場合にタイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したＣＰＵ３００が再度ＤＭＡ転送を実行する。
【００５６】
最大ウェイトサイクル設定レジスタ６は、ポーリングデータ格納レジスタ２のライトアクセス間隔の最大ウェイトサイクル数を設定する。そして、何らかの要因でＤＭＡＣ４００がポーリングデータ格納レジスタ２へのＤＭＡ転送を止めてしまった場合のスタックを防止する。
【００５７】
すなわち、ポーリングデータ格納レジスタ２の書き込み（ライト）が、最大ウェイトサイクル設定レジスタ６で設定したサイクル数以上ない場合、タイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したＣＰＵ３００が再度ＤＭＡ転送を実行する。
【００５８】
割り込みクリアレジスタ７は、この割り込みクリアレジスタ７をセットすることにより、第１および第２割り込み生成部１３および１４の割り込みをクリアする。
【００５９】
ポーリング数カウンタ８は、ポーリングデータ格納レジスタ２のライトアクセス回数をカウントする。なお、割り込みのクリアと同時に、このポーリング数カウンタ８のカウント値もクリアされる。
【００６０】
ポーリングウェイトサイクルカウンタ９は、ポーリングデータ格納レジスタ２のライトアクセス間隔のウェイトサイクル数をカウントする。なお、割り込みのクリアと同時に、このポーリングウェイトサイクルカウンタ９のカウント値もクリアされる。
【００６１】
第１比較器１０は、ポーリングデータ格納レジスタ２および期待値データ格納レジスタ３の値について、データマスクレジスタ４でマスクされていないビットを比較する。そして、一致したら、第１割り込み生成部１３をセットすると共に、ＤＳＴＰ信号生成部１６を介してＤＳＴＰ信号を生成する。
【００６２】
第２比較器１１は、最大ポーリング数設定レジスタ５およびポーリング数カウンタ８の値を比較し、一致したら第２割り込み生成部１４をセットする。第３比較器１２は、最大ウェイトサイクル設定レジスタ６およびポーリングウェイトサイクルカウンタ９の値を比較し、一致したら第２割り込み生成部１４をセットする。
【００６３】
第１割り込み生成部１３は、第１比較器１０の比較で一致したら、期待値データ検出割り込みをセットし期待値データ検出割り込み信号を生成し、割り込みクリアレジスタ７がセットされたら、期待値データ検出割り込みをクリアし期待値データ検出割り込み信号を停止する。
【００６４】
第２割り込み生成部１４は、第２比較器１１または第３比較器１２の比較で一致したら、タイムアウト割り込みをセットしタイムアウト割り込み信号を生成し、割り込みクリアレジスタ７がセットされたら、タイムアウト割り込みをクリアしタイムアウト割り込み信号を停止する。
【００６５】
デコーダ１５は、バス２００のアドレスデコーダである。上述したように、ＤＳＴＰ生成部１６は、第１比較器１０の比較で一致したら、ＤＳＴＰ信号をアサートしてＤＭＡ転送を停止させる。ＤＲＥＱ生成部１７は、期待値データ格納レジスタ３に期待値がセットされたら、ＤＲＥＱ信号をアサートしてＤＭＡ転送を開始する。
【００６６】
ここで、割り込み生成回路５００は、例えば、１つのＩＰとして、ポーリング対象ＩＰ１００の外側に配置する。なお、ＩＰ１００は、例えば、他社から提供されたＩＰ、或いは、過去資産である従前のＩＰである。そして、例えば、ＣＰＵ３００にソフトウェア（プログラム）を実行させ、ＤＭＡＣ４００および割り込み生成回路５００を制御する。
【００６７】
なお、ＣＰＵ３００に実行させるプログラムは、例えば、割り込み生成回路５００に設けた書き換え可能なフラッシュメモリ等の不揮発性半導体記憶装置に対して書き込むか、或いは、バス２００を介して接続される半導体記憶装置に書き込むことができる。
【００６８】
まず、ソフトウェアにより、ＣＰＵ３００からＤＭＡＣ４００の転送元アドレスをポーリング対象ＩＰ１００のステータスレジスタ１のアドレスに設定し、転送先アドレスをポーリングデータ格納レジスタ２のアドレスに設定する。
【００６９】
そして、ＤＭＡＣ４００により、ＩＰのステータスレジスタ１のレジスタ値をポーリングデータ格納レジスタ２へＤＭＡ転送する。
【００７０】
第１比較器１０は、アンド回路部１８および１９の出力を比較し、その比較結果を第１割り込み生成部１３およびＤＳＴＰ信号生成部１６へ出力する。
【００７１】
すなわち、第１比較器１０は、ポーリングデータ格納レジスタ２と期待値データ格納レジスタ３のレジスタ値について、データマスクレジスタ４でマスクされていないビットを比較する。
【００７２】
そして、一致したら第１割り込み生成部１３をセットし、割り込み（期待値データ検出割り込み要求）をＣＰＵ３００へ通知し、さらに、ＤＳＴＰ信号生成部１６を介してＤＳＴＰ信号をＤＭＡＣ４００へ出力してＤＭＡ転送を停止させる。
【００７３】
ＣＰＵ３００が、期待値データ検出割り込みを検出すると、ソフトウェアにより、対象処理（図１〜図５を参照して説明したポーリング処理でＩＰのステータスレジスタ１が変化したら実行する処理）を実行する。
【００７４】
さらに、割り込みクリアレジスタ７を設定して、期待値データ検出割り込みをクリアする。そして、ＣＰＵ３００は、割り込み処理を実行し、対象処理を優先的に処理する。このようにして、ＣＰＵのポーリング処理を、割り込み処理に変換する。
【００７５】
ここで、図８に示す第１実施例において、割り込み生成回路５００は、ＤＭＡ転送のスタックを防止するために、タイムアウト割り込み機能を有し、また、ＣＰＵ３００は、タイムアウト割り込みを検出した場合に、ＤＭＡ転送の設定を再設定する機能を有する。
【００７６】
これは、ＤＭＡＣ４００からのＤＭＡ転送が完了しても、ＩＰのステータスレジスタ１が変化しない場合があるため、ソフトウェアにより、ＣＰＵ３００から最大ポーリング数設定レジスタ５に対してＤＭＡＣ４００により設定する。すなわち、最大ポーリング数設定レジスタ５に対して、最大ＤＭＡ転送回数を設定しておく。
【００７７】
第２比較器１１は、最大ポーリング数設定レジスタ５のレジスタ値と、ポーリングデータ格納レジスタ２のライトアクセス回数をカウントするポーリング数カウンタ８の値を比較する。そして、一致したら第２割り込み生成部１４をセットし、割り込み（タイムアウト割り込み要求）をＣＰＵ３００へ通知する。
【００７８】
また、何らかの要因でＤＭＡＣ４００がＤＭＡ転送を止めた場合に備えて、ソフトウェアにより、ＣＰＵ３００から最大ウェイトサイクル設定レジスタ６に対して、ポーリングデータ格納レジスタ２のライトアクセス間隔の最大ウェイトサイクル数を設定する。
【００７９】
第３比較器１２は、最大ウェイトサイクル設定レジスタ６のレジスタ値と、ポーリングデータ格納レジスタ２のライトアクセス間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタ９の値を比較する。そして、一致したら第２割り込み生成部１４をセットし、割り込みをＣＰＵ３００へ通知する。
【００８０】
ＣＰＵ３００がタイムアウト割り込みを検出すると、ソフトウェアにより、ＤＭＡ転送に必要な設定を再設定し、割り込みクリアレジスタ７を設定してタイムアウト割り込みをクリアする。そして、ＣＰＵ３００は、割り込み処理を実行する。
【００８１】
なお、図８に示す第１実施例の半導体集積回路では、ＩＰのステータスレジスタ１の値の変化を検出して所定の対象処理を実行する場合を説明したが、変化を検出するレジスタはステータスレジスタに限定されるものではない。
【００８２】
図９〜図１１は、図８に示す半導体集積回路における処理の一例を示すフローチャートである。図９に示されるように、処理が開始すると、ステップＳＴ３１において、ＤＭＡＣ４００のレジスタ設定を行う。
【００８３】
例えば、転送タイプは『シングル』、転送数は『最大』、転送元アドレスは『ＩＰのステータスレジスタ１（アドレス固定）』、そして、転送先アドレスは『ポーリングデータ格納レジスタ２（アドレス固定）』と設定する。
【００８４】
さらに、ステップＳＴ３２に進んで、割り込み生成回路５００のレジスタ設定を行う。例えば、期待値データ格納レジスタ３に『期待値』を、データマスクレジスタ４に『マスクビット』を、最大ポーリング数設定レジスタ５に『ＤＭＡ転送数』を、そして、最大ウェイトサイクル設定レジスタ６に『適切なサイクル数』を、設定する。
【００８５】
次に、ステップＳＴ３４において、割り込み生成回路５００から、ＤＭＡＣ４００へＤＲＥＱ信号（データリクエスト信号）を出力して、ステップＳＴ３５に進む。ステップＳＴ３５では、ＤＭＡＣ４００からポーリングデータ格納レジスタ２へＩＰのステータスレジスタ１のデータを転送して、ステップＳＴ３６に進む。
【００８６】
なお、ステップＳＴ３２における割り込み生成回路５００のレジスタ設定を行った後、前述した図６のように、ソフトウェアが別の処理を実行しない場合、ステップＳＴ３３において、ＣＰＵ３００は割り込み待ち状態に入る。
【００８７】
一方、ステップＳＴ３２における割り込み生成回路５００のレジスタ設定を行った後、前述した図７のように、ソフトウェアが別の処理を実行する場合、図１１に示されるように、ステップＳＴ３３０において、ＣＰＵ３００は別の処理を実行する。
【００８８】
ただし、割り込みが検出されたら、図１１の処理（ステップＳＴ３３０）を中断して、割り込み処理（図９のステップＳＴ３４）に移動し、その割り込み処理が完了した後、図１１の処理に戻る。
【００８９】
図１０に示されるように、ステップＳＴ３６では、ポーリングデータ格納レジスタ２および期待値データ格納レジスタ３の値について、データマスクレジスタ４でマスクされていないビットを第１比較器１０で比較し、一致したかどうかを判定する。
【００９０】
ステップＳＴ３６において、一致したと判定すると、ステップＳＴ３７に進んで、第１割り込み生成部１３で期待値データ検出割り込みをアサートし、ＣＰＵ３００へ割り込みを通知する。
【００９１】
さらに、ステップＳＴ３８に進んで、割り込み生成回路５００からＤＭＡＣ４００へＤＳＴＰ信号を出力し、ＤＭＡ転送を停止させ、ステップＳＴ３９に進んで、割り込み処理を行う。
【００９２】
すなわち、ステップＳＴ３９では、必要とされる対象処理を実行し、割り込みクリアレジスタ７から割り込みをクリアしてステップＳＴ４０に進む。ステップＳＴ４０では、第１割り込み生成部１３で期待値データ検出割り込みをネゲートし、ポーリング数カウンタ８およびポーリングウェイトサイクルカウンタ９をクリア（『０』）して処理を終了する。
【００９３】
一方、ステップＳＴ３６において、一致しないと判定すると、ステップＳＴ４１に進んで、最大ポーリング数設定レジスタ５およびポーリング数カウンタ８の値を第２比較器１１で比較し、一致したかどうかを判定する。
【００９４】
ステップＳＴ４１において、一致したと判定すると、ステップＳＴ４２に進んで、第２割り込み生成部１４でタイムアウト割り込みをアサートし、ＣＰＵへ割り込みを通知し、さらに、ステップＳＴ４３に進んで、割り込み処理を行う。
【００９５】
すなわち、ステップＳＴ４３では、上述したステップＳＴ３９と同様に、割り込みクリアレジスタ７から割り込みをクリアしてステップＳＴ４４に進む。ステップＳＴ４４では、第２割り込み生成部１４でタイムアウト割り込みをネゲートし、ポーリング数カウンタ８およびポーリングウェイトサイクルカウンタ９をクリア（『０』）してステップＳＴ３１に戻る。
【００９６】
なお、ステップＳＴ４１において、一致しないと判定すると、ステップＳＴ４５に進んで、最大ウェイトサイクル設定レジスタ６の値とポーリングウェイトサイクルカウンタ９の値を、第３比較器１２で比較し、一致したかどうかを判定する。
【００９７】
ステップＳＴ４５において、一致したと判定すると、ステップＳＴ４２に進んで、前述した処理を行い、一致しないと判定すると、ステップＳＴ３５に戻って前述した処理を繰り返す。
【００９８】
ここで、図９〜図１１を参照して説明したフローチャートにおいて、ステップＳＴ３１，ＳＴ３２，ＳＴ３９，ＳＴ４３およびＳＴ３３０の処理がＣＰＵ３００からのソフトウェアの設定処理を示す。また、ステップＳＴ３４〜ＳＴ３８，ＳＴ４０〜ＳＴ４２，ＳＴ４４およびＳＴ４５の処理が割り込み生成回路５００による（ハードによる）処理を示す。
【００９９】
図１２は、図８に示す半導体集積回路における処理を説明するためのタイミングチャートであり、前述した図６のタイミングチャートに対して、割り込み生成回路５００のレジスタ２〜４およびＤＭＡＣ４００のバス動作を追加したものである。
【０１００】
図６を参照して説明したように、本実施例の割り込み生成方法による割り込み処理（別の処理なし）によれば、ＣＲ３０の期間において、ポーリング処理を不要として、ＣＰＵ３００のクロックを停止することができる。従って、この期間ＣＲ３０では、ＣＰＵ３００のバスもアイドル状態となる。
【０１０１】
このとき、図８〜図１１を参照して説明したように、ＤＭＡＣ４００は、ＩＰのステータスレジスタ１の値をリードして、割り込み生成回路５００のポーリングデータ格納レジスタ２にライトする。
【０１０２】
従って、ＤＭＡＣ４００のクロックは、常に入力され、ＤＭＡＣ４００のバスは、ＩＰのステータスレジスタ１のリードおよびポーリングデータ格納レジスタ２のライトに使用され、その残りの期間がアイドル状態となる。
【０１０３】
図１２の例では、ＩＰのステータスレジスタ１の値が、タイミングＴ３０において、『０ｘ００００』から『０ｘ０００１』へ変化し、期待値データ格納レジスタ３には『０ｘ０００１』が設定されている。
【０１０４】
なお、データマスクレジスタ４には、第１比較器１０によるポーリングデータ格納レジスタ２および期待値データ格納レジスタ３の比較において、マスクしたいビット『０ｘ０００１』が設定されるようになっている。
【０１０５】
そして、データマスクレジスタ４によりマスクされていないビットに関して、タイミングＴ３０において、ポーリングデータ格納レジスタ２の値『０』が『１』に変化して期待値データ格納レジスタ３に設定された値『１』に一致すると、割り込みを開始する。
【０１０６】
すなわち、第１比較器１０の比較により、ポーリングデータ格納レジスタ２の値が期待値データ格納レジスタ３の設定値に一致すると、第１割り込み生成部１３で期待値データ検出割り込みをアサートし、ＣＰＵ３００へ割り込みを通知する。
【０１０７】
そして、ＣＰＵ３００は、第１割り込み生成部１３からの期待値データ検出割り込みを受けて、期間ＯＰ３０から必要とされた対象処理を実行する。
【０１０８】
このように、本実施例によれば、期間ＣＲ３０において、ＣＰＵ３００のクロックを停止することにより、ＣＰＵのクロックを生成するための回路，並びに，ＣＰＵのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【０１０９】
なお、図１２に示されるように、ＤＭＡＣ４００のクロックは常に入力されるが、ＤＭＡＣ４００はＣＰＵ３００よりも回路規模が遥かに小さいため、消費される電力もＣＰＵと比較すると、非常に小さくなる。
【０１１０】
また、本実施例によれば、ポーリング処理を不要としてＣＰＵ割り込みを行うことで、別の処理に待たされることなく、必要とされる対象処理を優先的に処理して対象処理を実行するまでの時間を低減することが可能になる。
【０１１１】
さらに、システム開発において使用するＩＰが、例えば、所定のレジスタ変化による割り込み機能を持たない他社から提供されたＩＰ、或いは、過去資産である従前のＩＰであっても、それらＩＰ自体を変更することなく割り込み処理を実現することができる。
【０１１２】
図１３は、第２実施例の半導体集積回路を示すブロック図である。図１３と前述した図８との比較から明らかなように、本第２実施例の半導体集積回路では、第１実施例におけるＤＭＡＣ４００の代わりに、専用の制御回路４００’を使用する。
【０１１３】
ここで、専用の制御回路４００’は、ＤＭＡＣ４００とは異なり、ＩＰの割り込み生成回路５００におけるポーリングデータ格納レジスタ２に対する書き込みをバス２００を介することなく、直接行うようになっている。また、専用の制御回路４００’は、ＤＭＡＣ４００ではないので、図８におけるＤＳＴＰ信号生成部１６およびＤＲＥＱ信号生成部１７も不要となる。
【０１１４】
このように、本実施例の半導体集積回路は、図８に示す第１実施例のように、ＤＭＡＣ４００を使用することもできるが、図１３に示す第２実施例のように、専用の制御回路４００’を使用してもよい。
【０１１５】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【０１１６】
（付記２）
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする付記１に記載の半導体集積回路。
【０１１７】
（付記３）
前記レジスタ値読み出し回路は、前記レジスタの値を、直接に前記割り込み生成回路に出力する専用の制御回路である、
ことを特徴とする付記１に記載の半導体集積回路。
【０１１８】
（付記４）
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記１乃至付記３のいずれか１項に記載の半導体集積回路。
【０１１９】
（付記５）
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記１乃至付記４のいずれか１項に記載の半導体集積回路。
【０１２０】
（付記６）
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第１比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする付記４または付記５に記載の半導体集積回路。
【０１２１】
（付記７）
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第２比較器と、を有し、
前記第２比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする付記６に記載の半導体集積回路。
【０１２２】
（付記８）
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセスの間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタと、
予め設定された前記ウェイトサイクル数の最大値を格納する最大ウェイトサイクル設定レジスタと、
前記ポーリングウェイトサイクルカウンタのカウント値と前記最大ウェイトサイクル設定レジスタの値を比較する第３比較器と、を有し、
前記第３比較器の比較結果に基づき前記タイムアウト割り込み要求を出力する、
ことを特徴とする付記７に記載の半導体集積回路。
【０１２３】
（付記９）
前記レジスタ値出力回路、および、前記割り込み生成回路をソフトウェアにより制御するＣＰＵを有する、
ことを特徴とする付記１乃至付記８のいずれか１項に記載の半導体集積回路。
【０１２４】
（付記１０）
回路ブロックに含まれるレジスタの値を読み出して出力し、
前記レジスタの値を受け取って、予め設定された期待値と比較し、
前記レジスタの値が前記予め設定された期待値と一致したときに、割り込み要求を生成する、
ことを特徴とする割り込み生成方法。
【０１２５】
（付記１１）
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記１０に記載の割り込み生成方法。
【０１２６】
（付記１２）
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記１０または付記１１に記載の割り込み生成方法。
【符号の説明】
【０１２７】
１    レジスタ（ＩＰのステータスレジスタ）
２    ポーリングデータ格納レジスタ
３    期待値データ格納レジスタ
４    データマスクレジスタ
５    最大ポーリング数設定レジスタ
６    最大ウェイトサイクル設定レジスタ
７    割り込みクリアレジスタ
８    ポーリング数カウンタ
９    ポーリングウェイトサイクルカウンタ
１０    第１比較器
１１    第２比較器
１２    第３比較器
１３    第１割り込み生成部
１４    第２割り込み生成部
１５    デコーダ（バスのアドレスデコーダ）
１６    ＤＳＴＰ信号生成部
１７    ＤＲＥＱ信号生成部
１８，１９    アンド回路部
２０    オア回路部
１００    ＩＰ（Intellectual Property）
２００    バス
３００    ＣＰＵ（Central Processing Unit：中央処理装置）
４００    ＤＭＡＣ（Direct Memory Access Controller）
４００’    専用の制御回路
５００    割り込み生成回路
【図１】
2013041534.tif 000003
【図２】
2013041534.tif 000004
【図３】
2013041534.tif 000005
【図４】
2013041534.tif 000006
【図５】
2013041534.tif 000007
【図６】
2013041534.tif 000008
【図７】
2013041534.tif 000009
【図８】
2013041534.tif 000010
【図９】
2013041534.tif 000011
【図１０】
2013041534.tif 000012
【図１１】
2013041534.tif 000013
【図１２】
2013041534.tif 000014
【図１３】
2013041534.tif 000015