半導体集積回路および割り込み生成方法
【課題】消費電力を低減すると共に、必要とされる対象処理の遅延を低減することができる半導体集積回路および割り込み生成方法の提供を図る。
【解決手段】レジスタ1を含む回路ブロック100と、前記レジスタの値を読み出して出力するレジスタ値読み出し回路400と、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路500と、を有する。
【解決手段】レジスタ1を含む回路ブロック100と、前記レジスタの値を読み出して出力するレジスタ値読み出し回路400と、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路500と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
この出願で言及する実施例は、半導体集積回路および割り込み生成方法に関する。
【背景技術】
【0002】
システム開発において、設計資産であるIP(Intellectual Property)を利用して開発が行われている。IPとは、特定の機能を備え汎用的に用いることができる回路ブロックや論理モジュールのことで、既存のIPを再利用してシステムを開発することにより開発期間を短縮することができる。既存のIPの中には、例えば、ポーリング対象となるレジスタを備えるIPで、そのレジスタ変化による割り込み機能を有していないものがある。
【0003】
このように、レジスタ変化による割り込み機能(割り込み生成回路)が設けられていないIPを使用する場合、CPU(Central Processing Unit:中央処理装置)は、割り込み処理を利用することができないため、ポーリング処理を行うことになる。
【0004】
ところで、従来、割り込み処理を改良した半導体集積回路、或いは、レジスタの値と期待値を比較して割り込み生成を行う半導体集積回路としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−287654号公報
【特許文献2】特開2000−057003号公報
【特許文献3】特開2003−288235号公報
【特許文献4】特開平01−223549号公報
【特許文献5】特開平03−035331号公報
【特許文献6】特開2004−234720号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
前述したように、レジスタ変化による割り込み機能が設けられていないIPを使用する場合、CPUは、ポーリング処理を行う。しかしながら、このポーリング処理を行うには、例えば、CPUに対して常にクロックを入力しなければならず、消費電力の増大を招く。
【0007】
さらに、ポーリング処理を行う場合、そのポーリングの結果により実行する対象処理(必要とされる処理)は、所定のポーリング間隔によりレジスタ変化を検出した後に実行されるため、割り込み処理のように即座に実行することができない。その結果、必要とされる対象処理に遅延が生じる。
【課題を解決するための手段】
【0008】
一実施形態によれば、レジスタを含む回路ブロックと、レジスタ値読み出し回路と、割り込み生成回路と、を有することを特徴とする半導体集積回路が提供される。
【0009】
前記レジスタ値読み出し回路は、前記レジスタの値を読み出して出力する。前記割り込み生成回路は、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する。
【発明の効果】
【0010】
開示の半導体集積回路および割り込み生成方法は、消費電力を低減すると共に、必要とされる対象処理の遅延を低減することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、CPUからのポーリング処理を説明するためのブロック図である。
【図2】図2は、CPUからのポーリング処理(別の処理なし)を説明するためのタイミングチャートである。
【図3】図3は、図2のポーリング処理の一例を示すフローチャートである。
【図4】図4は、CPUからのポーリング処理(別の処理あり)を説明するためのタイミングチャートである。
【図5】図5は、図4のポーリング処理の一例を示すフローチャートである。
【図6】図6は、本実施例の割り込み生成方法による割り込み処理(別の処理なし)を説明するためのタイミングチャートである。
【図7】図7は、本実施例の割り込み生成方法による割り込み処理(別の処理あり)を説明するためのタイミングチャートである。
【図8】図8は、第1実施例の半導体集積回路を示すブロック図である。
【図9】図9は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その1)である。
【図10】図10は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その2)である。
【図11】図11は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その3)である。
【図12】図12は、図8に示す半導体集積回路における処理を説明するためのタイミングチャートである。
【図13】図13は、第2実施例の半導体集積回路を示すブロック図である。
【発明を実施するための形態】
【0012】
まず、半導体集積回路および割り込み生成方法の実施例を詳述する前に、半導体集積回路および割り込み生成方法およびその問題点を、図1〜図5を参照して説明する。
【0013】
図1は、CPUからのポーリング処理を説明するためのブロック図である。図1において、参照符号100はポーリング対象となるIP(Intellectual Property)、200はバス、そして、300はCPU(Central Processing Unit:中央処理装置)を示す。
【0014】
CPU300は、IP100におけるレジスタ(IPのステータスレジスタ)1をポーリングし、例えば、そのIPのステータスレジスタ1の値が所定の値に変化したら処理(対象処理)を行う。ここで、CPU300はマスターとして機能し、IP100はスレーブとして機能する。
【0015】
すなわち、図1に示されるように、CPU300は、バス200を介してIPのステータスレジスタ1の値を、予め設定したポーリング間隔で読み出し、その読み出した値が所定の値に変化(期待値に一致)したら必要とされる処理(対象処理)を実行する。
【0016】
図2は、CPUからのポーリング処理(別の処理なし)を説明するためのタイミングチャートであり、IPのステータスレジスタ1の値が、タイミングT10において、『0x0000』から『0x0001』へ変化する場合を示す。
【0017】
ここで、図2中の参照符号NG10で示すように、CPU300は、例えば、IPのステータスレジスタ1の値が変化したタイミングT10を検出して行う割り込み機能(CPU割り込み)を有していないものとする。
【0018】
図2に示されるように、CPU300は、予め設定したポーリング間隔でIPのステータスレジスタ1の値を読み出(リード)し、期間PP11,PP12,PP13,PP14でポーリング処理を行う。すなわち、ポーリング期間PP11,PP12,PP13,PP14において、CPU300のバスには、IPのステータスレジスタ1の値が読み出される。
【0019】
そして、CPU300は、タイミングT10の次のポーリング期間PP14のポーリング処理により、IPのステータスレジスタ1の値の変化(『0x0001』への変化)を認識し、その期間PP14の後の期間OP10から対象処理を実行する。すなわち、CPUのバスには、期間OP10から対象処理の実行によるデータが現出する。
【0020】
ここで、CPU300は別の処理(例えば、別のIPによる処理)を行っていないので、ポーリング期間PP11,PP12,PP13,PP14および対象処理の実行期間OP10以外では、CPU300(CPUのバス)はアイドル状態となっている。
【0021】
図3は、図2のポーリング処理の一例を示すフローチャートである。図3に示されるように、CPU300が別の処理を行っていない場合においてポーリング処理が開始すると、ステップST11で、予め設定したポーリング間隔によりIPのステータスレジスタ1の値をリードする。
【0022】
次に、ステップST12に進んで、レジスタリード値(IPのステータスレジスタ1から読み出した値)が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップST13に進んで、対象処理を実行する。
【0023】
すなわち、例えば、IPのステータスレジスタ1から読み出した値が『0x0000』から『0x0001』へ変化し、期待値である『0x0001』と一致したと判定すれば、ステップST13に進んで、対象処理を実行して、ステップST11に戻る。
【0024】
なお、ステップST12において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップST11に戻って同様の処理を繰り返す。
【0025】
ここで、図2中の参照符号CR10で示されるように、ポーリング処理を行うためには、CPU300が別の処理を行っていない場合でも、CPU300のクロックを常に入力する必要がある。
【0026】
そのため、CPU300は、常に電力を消費し、また、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路も電力を消費することになる。
【0027】
図4は、CPUからのポーリング処理(別の処理あり)を説明するためのタイミングチャートであり、IPのステータスレジスタ1の値が、タイミングT20において、『0x0000』から『0x0001』へ変化する場合を示す。
【0028】
ここで、図4中の参照符号NG20で示すように、CPU300は、例えば、IPのステータスレジスタ1の値が変化したタイミングT20を検出して行うCPU割り込みを有していないものとする。
【0029】
図4に示されるように、CPU300は、予め設定したポーリング間隔でIPのステータスレジスタ1の値をリードし、期間PP22,PP24でポーリング処理を行う。すなわち、ポーリング期間PP22,PP24において、CPUのバスには、IPのステータスレジスタ1の値が読み出される。
【0030】
そして、CPU300は、タイミングT20の次のポーリング期間PP24のポーリング処理により、IPのステータスレジスタ1の値の変化を認識し、その期間PP24の直後の期間OP20から対象処理を実行する。すなわち、CPUのバスには、期間OP20から対象処理の実行によるデータが現出する。
【0031】
ここで、図4に示されるように、CPU300は、期間AP21,AP23において、別の処理(例えば、別のIPによる処理)を行っている。また、ポーリング期間PP22,PP24,別の処理の実行期間AP21,AP23および対象処理の実行期間OP20以外では、CPU300(CPUのバス)はアイドル状態となっている。
【0032】
図5は、図4のポーリング処理の一例を示すフローチャートである。図5に示されるように、CPU300が別の処理を行っている場合においてポーリング処理が開始すると、ステップST21で、別の処理を実行する。次に、ステップST22に進んで、予め設定したポーリング間隔でIPのステータスレジスタ1の値をリードする。
【0033】
さらに、ステップST23に進んで、レジスタリード値が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップST24に進んで、対象処理を実行してステップST21に戻る。また、ステップST23において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップST21に戻って同様の処理を繰り返す。
【0034】
ここで、図4に示されるように、CPU300が別の処理を行っている場合には、ポーリング処理を行うためだけではなく、常にCPU300のクロックを入力する必要があり、クロックを停止することはできない。
【0035】
そして、図4中の参照符号DT20で示すように、CPU300が別の処理を行っている場合、CPU300が対象処理を実行するのは、例えば、別の処理の実行期間AP23の後に行うポーリング期間PP24のさらに後である期間OP20からになる。
【0036】
すなわち、CPU300が対象処理を実行するのは、例えば、IPのステータスレジスタ1の値が変化したタイミングT20から時間DT20だけ経過した後の期間OP20になるため、必要とされる対象処理に遅延が生じる。
【0037】
図1〜図5を参照して説明した問題は、例えば、システム開発において使用するIPが、他社から提供されたIP、或いは、過去資産である従前のIPであり、それらのIPが所定のレジスタ変化による割り込み機能が有しておらず、また、それらのIP自体を改良(変更)することができない場合等において生じる。
【0038】
以下、半導体集積回路および割り込み生成方法の実施例を、添付図面を参照して詳述する。
【0039】
図6は、本実施例の割り込み生成方法による割り込み処理(別の処理なし)を説明するためのタイミングチャートである。図6と前述した図2との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理(別の処理なし)によれば、ポーリング処理を不要として、CPU300のクロックを停止する。
【0040】
図2中の参照符号CR10に示される、ポーリング処理のために必要とされていたCPU300のクロックを、図6中の参照符号CR30のように、停止することによって、消費電力の低減を図る。
【0041】
すなわち、期間CR30において、CPU300のクロックを停止することにより、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【0042】
なお、CPU300のクロックは、IPのステータスレジスタ1の値の変化を検出してCPU300の割り込みが生成されてからCPU300へ与えればよい。
【0043】
図7は、本実施例の割り込み生成方法による割り込み処理(別の処理あり)を説明するためのタイミングチャートである。図7と前述した図4との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理(別の処理あり)によれば、ポーリング処理を不要としてCPU割り込みを行い、対象処理を優先的に処理する。
【0044】
すなわち、図4中の参照符号DT20に示される、IPのステータスレジスタ1の値が変化してから対象処理が実行されるまでの時間(遅延時間)を、図7中の参照符号DT40のように、短縮して対象処理を実行するまでの時間を低減することが可能になる。
【0045】
図8は、第1実施例の半導体集積回路を示すブロック図である。図8において、参照符号100はIP,200はバス,300はCPU,400はDMAC(Direct Memory Access Controller),そして,500は割り込み生成回路を示す。
【0046】
IP100,CPU300,DMAC400および割り込み生成回路500は、バス200を介して接続されている。
【0047】
IP100は、レジスタ(IPのステータスレジスタ)1を含み、DMAC400は、バス200を介して、IPのステータスレジスタ1の値を読み出(リード)し、割り込み生成回路500(ポーリングデータ格納レジスタ2)に書き込む(ライトする)。
【0048】
割り込み生成回路500は、ポーリングデータ格納レジスタ2,期待値データ格納レジスタ3,データマスクレジスタ4,最大ポーリング数設定レジスタ5,最大ウェイトサイクル設定レジスタ6,割り込みクリアレジスタ7およびポーリング数カウンタ8を含む。
【0049】
また、割り込み生成回路500は、ポーリングウェイトサイクルカウンタ9,第1比較器10,第2比較器11,第3比較器12,第1割り込み生成部13,第2割り込み生成部14およびデコーダ(バスのアドレスデコーダ)15を含む。
【0050】
さらに、割り込み生成回路500は、DSTP信号(データストップ信号)生成部16,DREQ信号(データリクエスト信号)生成部17,アンド回路部18,19およびオア回路部20を含む。
【0051】
IPのステータスレジスタ1は、ポーリング対象のIP100のステータスレジスタであり、このステータスレジスタ1の値が変化したら、CPU300が必要とされる処理(対象処理)を実行する。
【0052】
ポーリングデータ格納レジスタ2は、DMAC400によりDMA転送された、ポーリング対象のIPのステータスレジスタ1の値を格納し、期待値データ格納レジスタ3は、ポーリング対象のIPのステータスレジスタ1の期待値を格納する。
【0053】
データマスクレジスタ4は、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の比較において、マスクしたいビットを設定するレジスタである。例えば、32ビットのデータにおいて、ビット0のみの変化を検出したい場合には、このデータマスクレジスタ4によりビット1〜31をセットしてマスクする。
【0054】
最大ポーリング数設定レジスタ5は、ポーリングデータ格納レジスタ2の最大ライトアクセス回数を設定する。すなわち、DMAC400により行うDMA転送の最大回数(最大DMA転送回数)をこの最大ポーリング数設定レジスタ5に設定する。
【0055】
これにより、DMA転送が完了しても、まだポーリングデータ格納レジスタ2の値に変化がない場合にタイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したCPU300が再度DMA転送を実行する。
【0056】
最大ウェイトサイクル設定レジスタ6は、ポーリングデータ格納レジスタ2のライトアクセス間隔の最大ウェイトサイクル数を設定する。そして、何らかの要因でDMAC400がポーリングデータ格納レジスタ2へのDMA転送を止めてしまった場合のスタックを防止する。
【0057】
すなわち、ポーリングデータ格納レジスタ2の書き込み(ライト)が、最大ウェイトサイクル設定レジスタ6で設定したサイクル数以上ない場合、タイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したCPU300が再度DMA転送を実行する。
【0058】
割り込みクリアレジスタ7は、この割り込みクリアレジスタ7をセットすることにより、第1および第2割り込み生成部13および14の割り込みをクリアする。
【0059】
ポーリング数カウンタ8は、ポーリングデータ格納レジスタ2のライトアクセス回数をカウントする。なお、割り込みのクリアと同時に、このポーリング数カウンタ8のカウント値もクリアされる。
【0060】
ポーリングウェイトサイクルカウンタ9は、ポーリングデータ格納レジスタ2のライトアクセス間隔のウェイトサイクル数をカウントする。なお、割り込みのクリアと同時に、このポーリングウェイトサイクルカウンタ9のカウント値もクリアされる。
【0061】
第1比較器10は、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の値について、データマスクレジスタ4でマスクされていないビットを比較する。そして、一致したら、第1割り込み生成部13をセットすると共に、DSTP信号生成部16を介してDSTP信号を生成する。
【0062】
第2比較器11は、最大ポーリング数設定レジスタ5およびポーリング数カウンタ8の値を比較し、一致したら第2割り込み生成部14をセットする。第3比較器12は、最大ウェイトサイクル設定レジスタ6およびポーリングウェイトサイクルカウンタ9の値を比較し、一致したら第2割り込み生成部14をセットする。
【0063】
第1割り込み生成部13は、第1比較器10の比較で一致したら、期待値データ検出割り込みをセットし期待値データ検出割り込み信号を生成し、割り込みクリアレジスタ7がセットされたら、期待値データ検出割り込みをクリアし期待値データ検出割り込み信号を停止する。
【0064】
第2割り込み生成部14は、第2比較器11または第3比較器12の比較で一致したら、タイムアウト割り込みをセットしタイムアウト割り込み信号を生成し、割り込みクリアレジスタ7がセットされたら、タイムアウト割り込みをクリアしタイムアウト割り込み信号を停止する。
【0065】
デコーダ15は、バス200のアドレスデコーダである。上述したように、DSTP生成部16は、第1比較器10の比較で一致したら、DSTP信号をアサートしてDMA転送を停止させる。DREQ生成部17は、期待値データ格納レジスタ3に期待値がセットされたら、DREQ信号をアサートしてDMA転送を開始する。
【0066】
ここで、割り込み生成回路500は、例えば、1つのIPとして、ポーリング対象IP100の外側に配置する。なお、IP100は、例えば、他社から提供されたIP、或いは、過去資産である従前のIPである。そして、例えば、CPU300にソフトウェア(プログラム)を実行させ、DMAC400および割り込み生成回路500を制御する。
【0067】
なお、CPU300に実行させるプログラムは、例えば、割り込み生成回路500に設けた書き換え可能なフラッシュメモリ等の不揮発性半導体記憶装置に対して書き込むか、或いは、バス200を介して接続される半導体記憶装置に書き込むことができる。
【0068】
まず、ソフトウェアにより、CPU300からDMAC400の転送元アドレスをポーリング対象IP100のステータスレジスタ1のアドレスに設定し、転送先アドレスをポーリングデータ格納レジスタ2のアドレスに設定する。
【0069】
そして、DMAC400により、IPのステータスレジスタ1のレジスタ値をポーリングデータ格納レジスタ2へDMA転送する。
【0070】
第1比較器10は、アンド回路部18および19の出力を比較し、その比較結果を第1割り込み生成部13およびDSTP信号生成部16へ出力する。
【0071】
すなわち、第1比較器10は、ポーリングデータ格納レジスタ2と期待値データ格納レジスタ3のレジスタ値について、データマスクレジスタ4でマスクされていないビットを比較する。
【0072】
そして、一致したら第1割り込み生成部13をセットし、割り込み(期待値データ検出割り込み要求)をCPU300へ通知し、さらに、DSTP信号生成部16を介してDSTP信号をDMAC400へ出力してDMA転送を停止させる。
【0073】
CPU300が、期待値データ検出割り込みを検出すると、ソフトウェアにより、対象処理(図1〜図5を参照して説明したポーリング処理でIPのステータスレジスタ1が変化したら実行する処理)を実行する。
【0074】
さらに、割り込みクリアレジスタ7を設定して、期待値データ検出割り込みをクリアする。そして、CPU300は、割り込み処理を実行し、対象処理を優先的に処理する。このようにして、CPUのポーリング処理を、割り込み処理に変換する。
【0075】
ここで、図8に示す第1実施例において、割り込み生成回路500は、DMA転送のスタックを防止するために、タイムアウト割り込み機能を有し、また、CPU300は、タイムアウト割り込みを検出した場合に、DMA転送の設定を再設定する機能を有する。
【0076】
これは、DMAC400からのDMA転送が完了しても、IPのステータスレジスタ1が変化しない場合があるため、ソフトウェアにより、CPU300から最大ポーリング数設定レジスタ5に対してDMAC400により設定する。すなわち、最大ポーリング数設定レジスタ5に対して、最大DMA転送回数を設定しておく。
【0077】
第2比較器11は、最大ポーリング数設定レジスタ5のレジスタ値と、ポーリングデータ格納レジスタ2のライトアクセス回数をカウントするポーリング数カウンタ8の値を比較する。そして、一致したら第2割り込み生成部14をセットし、割り込み(タイムアウト割り込み要求)をCPU300へ通知する。
【0078】
また、何らかの要因でDMAC400がDMA転送を止めた場合に備えて、ソフトウェアにより、CPU300から最大ウェイトサイクル設定レジスタ6に対して、ポーリングデータ格納レジスタ2のライトアクセス間隔の最大ウェイトサイクル数を設定する。
【0079】
第3比較器12は、最大ウェイトサイクル設定レジスタ6のレジスタ値と、ポーリングデータ格納レジスタ2のライトアクセス間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタ9の値を比較する。そして、一致したら第2割り込み生成部14をセットし、割り込みをCPU300へ通知する。
【0080】
CPU300がタイムアウト割り込みを検出すると、ソフトウェアにより、DMA転送に必要な設定を再設定し、割り込みクリアレジスタ7を設定してタイムアウト割り込みをクリアする。そして、CPU300は、割り込み処理を実行する。
【0081】
なお、図8に示す第1実施例の半導体集積回路では、IPのステータスレジスタ1の値の変化を検出して所定の対象処理を実行する場合を説明したが、変化を検出するレジスタはステータスレジスタに限定されるものではない。
【0082】
図9〜図11は、図8に示す半導体集積回路における処理の一例を示すフローチャートである。図9に示されるように、処理が開始すると、ステップST31において、DMAC400のレジスタ設定を行う。
【0083】
例えば、転送タイプは『シングル』、転送数は『最大』、転送元アドレスは『IPのステータスレジスタ1(アドレス固定)』、そして、転送先アドレスは『ポーリングデータ格納レジスタ2(アドレス固定)』と設定する。
【0084】
さらに、ステップST32に進んで、割り込み生成回路500のレジスタ設定を行う。例えば、期待値データ格納レジスタ3に『期待値』を、データマスクレジスタ4に『マスクビット』を、最大ポーリング数設定レジスタ5に『DMA転送数』を、そして、最大ウェイトサイクル設定レジスタ6に『適切なサイクル数』を、設定する。
【0085】
次に、ステップST34において、割り込み生成回路500から、DMAC400へDREQ信号(データリクエスト信号)を出力して、ステップST35に進む。ステップST35では、DMAC400からポーリングデータ格納レジスタ2へIPのステータスレジスタ1のデータを転送して、ステップST36に進む。
【0086】
なお、ステップST32における割り込み生成回路500のレジスタ設定を行った後、前述した図6のように、ソフトウェアが別の処理を実行しない場合、ステップST33において、CPU300は割り込み待ち状態に入る。
【0087】
一方、ステップST32における割り込み生成回路500のレジスタ設定を行った後、前述した図7のように、ソフトウェアが別の処理を実行する場合、図11に示されるように、ステップST330において、CPU300は別の処理を実行する。
【0088】
ただし、割り込みが検出されたら、図11の処理(ステップST330)を中断して、割り込み処理(図9のステップST34)に移動し、その割り込み処理が完了した後、図11の処理に戻る。
【0089】
図10に示されるように、ステップST36では、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の値について、データマスクレジスタ4でマスクされていないビットを第1比較器10で比較し、一致したかどうかを判定する。
【0090】
ステップST36において、一致したと判定すると、ステップST37に進んで、第1割り込み生成部13で期待値データ検出割り込みをアサートし、CPU300へ割り込みを通知する。
【0091】
さらに、ステップST38に進んで、割り込み生成回路500からDMAC400へDSTP信号を出力し、DMA転送を停止させ、ステップST39に進んで、割り込み処理を行う。
【0092】
すなわち、ステップST39では、必要とされる対象処理を実行し、割り込みクリアレジスタ7から割り込みをクリアしてステップST40に進む。ステップST40では、第1割り込み生成部13で期待値データ検出割り込みをネゲートし、ポーリング数カウンタ8およびポーリングウェイトサイクルカウンタ9をクリア(『0』)して処理を終了する。
【0093】
一方、ステップST36において、一致しないと判定すると、ステップST41に進んで、最大ポーリング数設定レジスタ5およびポーリング数カウンタ8の値を第2比較器11で比較し、一致したかどうかを判定する。
【0094】
ステップST41において、一致したと判定すると、ステップST42に進んで、第2割り込み生成部14でタイムアウト割り込みをアサートし、CPUへ割り込みを通知し、さらに、ステップST43に進んで、割り込み処理を行う。
【0095】
すなわち、ステップST43では、上述したステップST39と同様に、割り込みクリアレジスタ7から割り込みをクリアしてステップST44に進む。ステップST44では、第2割り込み生成部14でタイムアウト割り込みをネゲートし、ポーリング数カウンタ8およびポーリングウェイトサイクルカウンタ9をクリア(『0』)してステップST31に戻る。
【0096】
なお、ステップST41において、一致しないと判定すると、ステップST45に進んで、最大ウェイトサイクル設定レジスタ6の値とポーリングウェイトサイクルカウンタ9の値を、第3比較器12で比較し、一致したかどうかを判定する。
【0097】
ステップST45において、一致したと判定すると、ステップST42に進んで、前述した処理を行い、一致しないと判定すると、ステップST35に戻って前述した処理を繰り返す。
【0098】
ここで、図9〜図11を参照して説明したフローチャートにおいて、ステップST31,ST32,ST39,ST43およびST330の処理がCPU300からのソフトウェアの設定処理を示す。また、ステップST34〜ST38,ST40〜ST42,ST44およびST45の処理が割り込み生成回路500による(ハードによる)処理を示す。
【0099】
図12は、図8に示す半導体集積回路における処理を説明するためのタイミングチャートであり、前述した図6のタイミングチャートに対して、割り込み生成回路500のレジスタ2〜4およびDMAC400のバス動作を追加したものである。
【0100】
図6を参照して説明したように、本実施例の割り込み生成方法による割り込み処理(別の処理なし)によれば、CR30の期間において、ポーリング処理を不要として、CPU300のクロックを停止することができる。従って、この期間CR30では、CPU300のバスもアイドル状態となる。
【0101】
このとき、図8〜図11を参照して説明したように、DMAC400は、IPのステータスレジスタ1の値をリードして、割り込み生成回路500のポーリングデータ格納レジスタ2にライトする。
【0102】
従って、DMAC400のクロックは、常に入力され、DMAC400のバスは、IPのステータスレジスタ1のリードおよびポーリングデータ格納レジスタ2のライトに使用され、その残りの期間がアイドル状態となる。
【0103】
図12の例では、IPのステータスレジスタ1の値が、タイミングT30において、『0x0000』から『0x0001』へ変化し、期待値データ格納レジスタ3には『0x0001』が設定されている。
【0104】
なお、データマスクレジスタ4には、第1比較器10によるポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の比較において、マスクしたいビット『0x0001』が設定されるようになっている。
【0105】
そして、データマスクレジスタ4によりマスクされていないビットに関して、タイミングT30において、ポーリングデータ格納レジスタ2の値『0』が『1』に変化して期待値データ格納レジスタ3に設定された値『1』に一致すると、割り込みを開始する。
【0106】
すなわち、第1比較器10の比較により、ポーリングデータ格納レジスタ2の値が期待値データ格納レジスタ3の設定値に一致すると、第1割り込み生成部13で期待値データ検出割り込みをアサートし、CPU300へ割り込みを通知する。
【0107】
そして、CPU300は、第1割り込み生成部13からの期待値データ検出割り込みを受けて、期間OP30から必要とされた対象処理を実行する。
【0108】
このように、本実施例によれば、期間CR30において、CPU300のクロックを停止することにより、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【0109】
なお、図12に示されるように、DMAC400のクロックは常に入力されるが、DMAC400はCPU300よりも回路規模が遥かに小さいため、消費される電力もCPUと比較すると、非常に小さくなる。
【0110】
また、本実施例によれば、ポーリング処理を不要としてCPU割り込みを行うことで、別の処理に待たされることなく、必要とされる対象処理を優先的に処理して対象処理を実行するまでの時間を低減することが可能になる。
【0111】
さらに、システム開発において使用するIPが、例えば、所定のレジスタ変化による割り込み機能を持たない他社から提供されたIP、或いは、過去資産である従前のIPであっても、それらIP自体を変更することなく割り込み処理を実現することができる。
【0112】
図13は、第2実施例の半導体集積回路を示すブロック図である。図13と前述した図8との比較から明らかなように、本第2実施例の半導体集積回路では、第1実施例におけるDMAC400の代わりに、専用の制御回路400’を使用する。
【0113】
ここで、専用の制御回路400’は、DMAC400とは異なり、IPの割り込み生成回路500におけるポーリングデータ格納レジスタ2に対する書き込みをバス200を介することなく、直接行うようになっている。また、専用の制御回路400’は、DMAC400ではないので、図8におけるDSTP信号生成部16およびDREQ信号生成部17も不要となる。
【0114】
このように、本実施例の半導体集積回路は、図8に示す第1実施例のように、DMAC400を使用することもできるが、図13に示す第2実施例のように、専用の制御回路400’を使用してもよい。
【0115】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【0116】
(付記2)
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする付記1に記載の半導体集積回路。
【0117】
(付記3)
前記レジスタ値読み出し回路は、前記レジスタの値を、直接に前記割り込み生成回路に出力する専用の制御回路である、
ことを特徴とする付記1に記載の半導体集積回路。
【0118】
(付記4)
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記1乃至付記3のいずれか1項に記載の半導体集積回路。
【0119】
(付記5)
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記1乃至付記4のいずれか1項に記載の半導体集積回路。
【0120】
(付記6)
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第1比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする付記4または付記5に記載の半導体集積回路。
【0121】
(付記7)
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第2比較器と、を有し、
前記第2比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする付記6に記載の半導体集積回路。
【0122】
(付記8)
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセスの間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタと、
予め設定された前記ウェイトサイクル数の最大値を格納する最大ウェイトサイクル設定レジスタと、
前記ポーリングウェイトサイクルカウンタのカウント値と前記最大ウェイトサイクル設定レジスタの値を比較する第3比較器と、を有し、
前記第3比較器の比較結果に基づき前記タイムアウト割り込み要求を出力する、
ことを特徴とする付記7に記載の半導体集積回路。
【0123】
(付記9)
前記レジスタ値出力回路、および、前記割り込み生成回路をソフトウェアにより制御するCPUを有する、
ことを特徴とする付記1乃至付記8のいずれか1項に記載の半導体集積回路。
【0124】
(付記10)
回路ブロックに含まれるレジスタの値を読み出して出力し、
前記レジスタの値を受け取って、予め設定された期待値と比較し、
前記レジスタの値が前記予め設定された期待値と一致したときに、割り込み要求を生成する、
ことを特徴とする割り込み生成方法。
【0125】
(付記11)
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記10に記載の割り込み生成方法。
【0126】
(付記12)
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記10または付記11に記載の割り込み生成方法。
【符号の説明】
【0127】
1 レジスタ(IPのステータスレジスタ)
2 ポーリングデータ格納レジスタ
3 期待値データ格納レジスタ
4 データマスクレジスタ
5 最大ポーリング数設定レジスタ
6 最大ウェイトサイクル設定レジスタ
7 割り込みクリアレジスタ
8 ポーリング数カウンタ
9 ポーリングウェイトサイクルカウンタ
10 第1比較器
11 第2比較器
12 第3比較器
13 第1割り込み生成部
14 第2割り込み生成部
15 デコーダ(バスのアドレスデコーダ)
16 DSTP信号生成部
17 DREQ信号生成部
18,19 アンド回路部
20 オア回路部
100 IP(Intellectual Property)
200 バス
300 CPU(Central Processing Unit:中央処理装置)
400 DMAC(Direct Memory Access Controller)
400’ 専用の制御回路
500 割り込み生成回路
【技術分野】
【0001】
この出願で言及する実施例は、半導体集積回路および割り込み生成方法に関する。
【背景技術】
【0002】
システム開発において、設計資産であるIP(Intellectual Property)を利用して開発が行われている。IPとは、特定の機能を備え汎用的に用いることができる回路ブロックや論理モジュールのことで、既存のIPを再利用してシステムを開発することにより開発期間を短縮することができる。既存のIPの中には、例えば、ポーリング対象となるレジスタを備えるIPで、そのレジスタ変化による割り込み機能を有していないものがある。
【0003】
このように、レジスタ変化による割り込み機能(割り込み生成回路)が設けられていないIPを使用する場合、CPU(Central Processing Unit:中央処理装置)は、割り込み処理を利用することができないため、ポーリング処理を行うことになる。
【0004】
ところで、従来、割り込み処理を改良した半導体集積回路、或いは、レジスタの値と期待値を比較して割り込み生成を行う半導体集積回路としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−287654号公報
【特許文献2】特開2000−057003号公報
【特許文献3】特開2003−288235号公報
【特許文献4】特開平01−223549号公報
【特許文献5】特開平03−035331号公報
【特許文献6】特開2004−234720号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
前述したように、レジスタ変化による割り込み機能が設けられていないIPを使用する場合、CPUは、ポーリング処理を行う。しかしながら、このポーリング処理を行うには、例えば、CPUに対して常にクロックを入力しなければならず、消費電力の増大を招く。
【0007】
さらに、ポーリング処理を行う場合、そのポーリングの結果により実行する対象処理(必要とされる処理)は、所定のポーリング間隔によりレジスタ変化を検出した後に実行されるため、割り込み処理のように即座に実行することができない。その結果、必要とされる対象処理に遅延が生じる。
【課題を解決するための手段】
【0008】
一実施形態によれば、レジスタを含む回路ブロックと、レジスタ値読み出し回路と、割り込み生成回路と、を有することを特徴とする半導体集積回路が提供される。
【0009】
前記レジスタ値読み出し回路は、前記レジスタの値を読み出して出力する。前記割り込み生成回路は、前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する。
【発明の効果】
【0010】
開示の半導体集積回路および割り込み生成方法は、消費電力を低減すると共に、必要とされる対象処理の遅延を低減することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、CPUからのポーリング処理を説明するためのブロック図である。
【図2】図2は、CPUからのポーリング処理(別の処理なし)を説明するためのタイミングチャートである。
【図3】図3は、図2のポーリング処理の一例を示すフローチャートである。
【図4】図4は、CPUからのポーリング処理(別の処理あり)を説明するためのタイミングチャートである。
【図5】図5は、図4のポーリング処理の一例を示すフローチャートである。
【図6】図6は、本実施例の割り込み生成方法による割り込み処理(別の処理なし)を説明するためのタイミングチャートである。
【図7】図7は、本実施例の割り込み生成方法による割り込み処理(別の処理あり)を説明するためのタイミングチャートである。
【図8】図8は、第1実施例の半導体集積回路を示すブロック図である。
【図9】図9は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その1)である。
【図10】図10は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その2)である。
【図11】図11は、図8に示す半導体集積回路における処理の一例を示すフローチャート(その3)である。
【図12】図12は、図8に示す半導体集積回路における処理を説明するためのタイミングチャートである。
【図13】図13は、第2実施例の半導体集積回路を示すブロック図である。
【発明を実施するための形態】
【0012】
まず、半導体集積回路および割り込み生成方法の実施例を詳述する前に、半導体集積回路および割り込み生成方法およびその問題点を、図1〜図5を参照して説明する。
【0013】
図1は、CPUからのポーリング処理を説明するためのブロック図である。図1において、参照符号100はポーリング対象となるIP(Intellectual Property)、200はバス、そして、300はCPU(Central Processing Unit:中央処理装置)を示す。
【0014】
CPU300は、IP100におけるレジスタ(IPのステータスレジスタ)1をポーリングし、例えば、そのIPのステータスレジスタ1の値が所定の値に変化したら処理(対象処理)を行う。ここで、CPU300はマスターとして機能し、IP100はスレーブとして機能する。
【0015】
すなわち、図1に示されるように、CPU300は、バス200を介してIPのステータスレジスタ1の値を、予め設定したポーリング間隔で読み出し、その読み出した値が所定の値に変化(期待値に一致)したら必要とされる処理(対象処理)を実行する。
【0016】
図2は、CPUからのポーリング処理(別の処理なし)を説明するためのタイミングチャートであり、IPのステータスレジスタ1の値が、タイミングT10において、『0x0000』から『0x0001』へ変化する場合を示す。
【0017】
ここで、図2中の参照符号NG10で示すように、CPU300は、例えば、IPのステータスレジスタ1の値が変化したタイミングT10を検出して行う割り込み機能(CPU割り込み)を有していないものとする。
【0018】
図2に示されるように、CPU300は、予め設定したポーリング間隔でIPのステータスレジスタ1の値を読み出(リード)し、期間PP11,PP12,PP13,PP14でポーリング処理を行う。すなわち、ポーリング期間PP11,PP12,PP13,PP14において、CPU300のバスには、IPのステータスレジスタ1の値が読み出される。
【0019】
そして、CPU300は、タイミングT10の次のポーリング期間PP14のポーリング処理により、IPのステータスレジスタ1の値の変化(『0x0001』への変化)を認識し、その期間PP14の後の期間OP10から対象処理を実行する。すなわち、CPUのバスには、期間OP10から対象処理の実行によるデータが現出する。
【0020】
ここで、CPU300は別の処理(例えば、別のIPによる処理)を行っていないので、ポーリング期間PP11,PP12,PP13,PP14および対象処理の実行期間OP10以外では、CPU300(CPUのバス)はアイドル状態となっている。
【0021】
図3は、図2のポーリング処理の一例を示すフローチャートである。図3に示されるように、CPU300が別の処理を行っていない場合においてポーリング処理が開始すると、ステップST11で、予め設定したポーリング間隔によりIPのステータスレジスタ1の値をリードする。
【0022】
次に、ステップST12に進んで、レジスタリード値(IPのステータスレジスタ1から読み出した値)が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップST13に進んで、対象処理を実行する。
【0023】
すなわち、例えば、IPのステータスレジスタ1から読み出した値が『0x0000』から『0x0001』へ変化し、期待値である『0x0001』と一致したと判定すれば、ステップST13に進んで、対象処理を実行して、ステップST11に戻る。
【0024】
なお、ステップST12において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップST11に戻って同様の処理を繰り返す。
【0025】
ここで、図2中の参照符号CR10で示されるように、ポーリング処理を行うためには、CPU300が別の処理を行っていない場合でも、CPU300のクロックを常に入力する必要がある。
【0026】
そのため、CPU300は、常に電力を消費し、また、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路も電力を消費することになる。
【0027】
図4は、CPUからのポーリング処理(別の処理あり)を説明するためのタイミングチャートであり、IPのステータスレジスタ1の値が、タイミングT20において、『0x0000』から『0x0001』へ変化する場合を示す。
【0028】
ここで、図4中の参照符号NG20で示すように、CPU300は、例えば、IPのステータスレジスタ1の値が変化したタイミングT20を検出して行うCPU割り込みを有していないものとする。
【0029】
図4に示されるように、CPU300は、予め設定したポーリング間隔でIPのステータスレジスタ1の値をリードし、期間PP22,PP24でポーリング処理を行う。すなわち、ポーリング期間PP22,PP24において、CPUのバスには、IPのステータスレジスタ1の値が読み出される。
【0030】
そして、CPU300は、タイミングT20の次のポーリング期間PP24のポーリング処理により、IPのステータスレジスタ1の値の変化を認識し、その期間PP24の直後の期間OP20から対象処理を実行する。すなわち、CPUのバスには、期間OP20から対象処理の実行によるデータが現出する。
【0031】
ここで、図4に示されるように、CPU300は、期間AP21,AP23において、別の処理(例えば、別のIPによる処理)を行っている。また、ポーリング期間PP22,PP24,別の処理の実行期間AP21,AP23および対象処理の実行期間OP20以外では、CPU300(CPUのバス)はアイドル状態となっている。
【0032】
図5は、図4のポーリング処理の一例を示すフローチャートである。図5に示されるように、CPU300が別の処理を行っている場合においてポーリング処理が開始すると、ステップST21で、別の処理を実行する。次に、ステップST22に進んで、予め設定したポーリング間隔でIPのステータスレジスタ1の値をリードする。
【0033】
さらに、ステップST23に進んで、レジスタリード値が期待値と一致したかどうかを判定し、一致したと判定すれば、ステップST24に進んで、対象処理を実行してステップST21に戻る。また、ステップST23において、レジスタリード値が期待値と一致しないと判定すれば、そのままステップST21に戻って同様の処理を繰り返す。
【0034】
ここで、図4に示されるように、CPU300が別の処理を行っている場合には、ポーリング処理を行うためだけではなく、常にCPU300のクロックを入力する必要があり、クロックを停止することはできない。
【0035】
そして、図4中の参照符号DT20で示すように、CPU300が別の処理を行っている場合、CPU300が対象処理を実行するのは、例えば、別の処理の実行期間AP23の後に行うポーリング期間PP24のさらに後である期間OP20からになる。
【0036】
すなわち、CPU300が対象処理を実行するのは、例えば、IPのステータスレジスタ1の値が変化したタイミングT20から時間DT20だけ経過した後の期間OP20になるため、必要とされる対象処理に遅延が生じる。
【0037】
図1〜図5を参照して説明した問題は、例えば、システム開発において使用するIPが、他社から提供されたIP、或いは、過去資産である従前のIPであり、それらのIPが所定のレジスタ変化による割り込み機能が有しておらず、また、それらのIP自体を改良(変更)することができない場合等において生じる。
【0038】
以下、半導体集積回路および割り込み生成方法の実施例を、添付図面を参照して詳述する。
【0039】
図6は、本実施例の割り込み生成方法による割り込み処理(別の処理なし)を説明するためのタイミングチャートである。図6と前述した図2との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理(別の処理なし)によれば、ポーリング処理を不要として、CPU300のクロックを停止する。
【0040】
図2中の参照符号CR10に示される、ポーリング処理のために必要とされていたCPU300のクロックを、図6中の参照符号CR30のように、停止することによって、消費電力の低減を図る。
【0041】
すなわち、期間CR30において、CPU300のクロックを停止することにより、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【0042】
なお、CPU300のクロックは、IPのステータスレジスタ1の値の変化を検出してCPU300の割り込みが生成されてからCPU300へ与えればよい。
【0043】
図7は、本実施例の割り込み生成方法による割り込み処理(別の処理あり)を説明するためのタイミングチャートである。図7と前述した図4との比較から明らかなように、本実施例の割り込み生成方法による割り込み処理(別の処理あり)によれば、ポーリング処理を不要としてCPU割り込みを行い、対象処理を優先的に処理する。
【0044】
すなわち、図4中の参照符号DT20に示される、IPのステータスレジスタ1の値が変化してから対象処理が実行されるまでの時間(遅延時間)を、図7中の参照符号DT40のように、短縮して対象処理を実行するまでの時間を低減することが可能になる。
【0045】
図8は、第1実施例の半導体集積回路を示すブロック図である。図8において、参照符号100はIP,200はバス,300はCPU,400はDMAC(Direct Memory Access Controller),そして,500は割り込み生成回路を示す。
【0046】
IP100,CPU300,DMAC400および割り込み生成回路500は、バス200を介して接続されている。
【0047】
IP100は、レジスタ(IPのステータスレジスタ)1を含み、DMAC400は、バス200を介して、IPのステータスレジスタ1の値を読み出(リード)し、割り込み生成回路500(ポーリングデータ格納レジスタ2)に書き込む(ライトする)。
【0048】
割り込み生成回路500は、ポーリングデータ格納レジスタ2,期待値データ格納レジスタ3,データマスクレジスタ4,最大ポーリング数設定レジスタ5,最大ウェイトサイクル設定レジスタ6,割り込みクリアレジスタ7およびポーリング数カウンタ8を含む。
【0049】
また、割り込み生成回路500は、ポーリングウェイトサイクルカウンタ9,第1比較器10,第2比較器11,第3比較器12,第1割り込み生成部13,第2割り込み生成部14およびデコーダ(バスのアドレスデコーダ)15を含む。
【0050】
さらに、割り込み生成回路500は、DSTP信号(データストップ信号)生成部16,DREQ信号(データリクエスト信号)生成部17,アンド回路部18,19およびオア回路部20を含む。
【0051】
IPのステータスレジスタ1は、ポーリング対象のIP100のステータスレジスタであり、このステータスレジスタ1の値が変化したら、CPU300が必要とされる処理(対象処理)を実行する。
【0052】
ポーリングデータ格納レジスタ2は、DMAC400によりDMA転送された、ポーリング対象のIPのステータスレジスタ1の値を格納し、期待値データ格納レジスタ3は、ポーリング対象のIPのステータスレジスタ1の期待値を格納する。
【0053】
データマスクレジスタ4は、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の比較において、マスクしたいビットを設定するレジスタである。例えば、32ビットのデータにおいて、ビット0のみの変化を検出したい場合には、このデータマスクレジスタ4によりビット1〜31をセットしてマスクする。
【0054】
最大ポーリング数設定レジスタ5は、ポーリングデータ格納レジスタ2の最大ライトアクセス回数を設定する。すなわち、DMAC400により行うDMA転送の最大回数(最大DMA転送回数)をこの最大ポーリング数設定レジスタ5に設定する。
【0055】
これにより、DMA転送が完了しても、まだポーリングデータ格納レジスタ2の値に変化がない場合にタイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したCPU300が再度DMA転送を実行する。
【0056】
最大ウェイトサイクル設定レジスタ6は、ポーリングデータ格納レジスタ2のライトアクセス間隔の最大ウェイトサイクル数を設定する。そして、何らかの要因でDMAC400がポーリングデータ格納レジスタ2へのDMA転送を止めてしまった場合のスタックを防止する。
【0057】
すなわち、ポーリングデータ格納レジスタ2の書き込み(ライト)が、最大ウェイトサイクル設定レジスタ6で設定したサイクル数以上ない場合、タイムアウト割り込みを出力し、そのタイムアウト割り込みを検出したCPU300が再度DMA転送を実行する。
【0058】
割り込みクリアレジスタ7は、この割り込みクリアレジスタ7をセットすることにより、第1および第2割り込み生成部13および14の割り込みをクリアする。
【0059】
ポーリング数カウンタ8は、ポーリングデータ格納レジスタ2のライトアクセス回数をカウントする。なお、割り込みのクリアと同時に、このポーリング数カウンタ8のカウント値もクリアされる。
【0060】
ポーリングウェイトサイクルカウンタ9は、ポーリングデータ格納レジスタ2のライトアクセス間隔のウェイトサイクル数をカウントする。なお、割り込みのクリアと同時に、このポーリングウェイトサイクルカウンタ9のカウント値もクリアされる。
【0061】
第1比較器10は、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の値について、データマスクレジスタ4でマスクされていないビットを比較する。そして、一致したら、第1割り込み生成部13をセットすると共に、DSTP信号生成部16を介してDSTP信号を生成する。
【0062】
第2比較器11は、最大ポーリング数設定レジスタ5およびポーリング数カウンタ8の値を比較し、一致したら第2割り込み生成部14をセットする。第3比較器12は、最大ウェイトサイクル設定レジスタ6およびポーリングウェイトサイクルカウンタ9の値を比較し、一致したら第2割り込み生成部14をセットする。
【0063】
第1割り込み生成部13は、第1比較器10の比較で一致したら、期待値データ検出割り込みをセットし期待値データ検出割り込み信号を生成し、割り込みクリアレジスタ7がセットされたら、期待値データ検出割り込みをクリアし期待値データ検出割り込み信号を停止する。
【0064】
第2割り込み生成部14は、第2比較器11または第3比較器12の比較で一致したら、タイムアウト割り込みをセットしタイムアウト割り込み信号を生成し、割り込みクリアレジスタ7がセットされたら、タイムアウト割り込みをクリアしタイムアウト割り込み信号を停止する。
【0065】
デコーダ15は、バス200のアドレスデコーダである。上述したように、DSTP生成部16は、第1比較器10の比較で一致したら、DSTP信号をアサートしてDMA転送を停止させる。DREQ生成部17は、期待値データ格納レジスタ3に期待値がセットされたら、DREQ信号をアサートしてDMA転送を開始する。
【0066】
ここで、割り込み生成回路500は、例えば、1つのIPとして、ポーリング対象IP100の外側に配置する。なお、IP100は、例えば、他社から提供されたIP、或いは、過去資産である従前のIPである。そして、例えば、CPU300にソフトウェア(プログラム)を実行させ、DMAC400および割り込み生成回路500を制御する。
【0067】
なお、CPU300に実行させるプログラムは、例えば、割り込み生成回路500に設けた書き換え可能なフラッシュメモリ等の不揮発性半導体記憶装置に対して書き込むか、或いは、バス200を介して接続される半導体記憶装置に書き込むことができる。
【0068】
まず、ソフトウェアにより、CPU300からDMAC400の転送元アドレスをポーリング対象IP100のステータスレジスタ1のアドレスに設定し、転送先アドレスをポーリングデータ格納レジスタ2のアドレスに設定する。
【0069】
そして、DMAC400により、IPのステータスレジスタ1のレジスタ値をポーリングデータ格納レジスタ2へDMA転送する。
【0070】
第1比較器10は、アンド回路部18および19の出力を比較し、その比較結果を第1割り込み生成部13およびDSTP信号生成部16へ出力する。
【0071】
すなわち、第1比較器10は、ポーリングデータ格納レジスタ2と期待値データ格納レジスタ3のレジスタ値について、データマスクレジスタ4でマスクされていないビットを比較する。
【0072】
そして、一致したら第1割り込み生成部13をセットし、割り込み(期待値データ検出割り込み要求)をCPU300へ通知し、さらに、DSTP信号生成部16を介してDSTP信号をDMAC400へ出力してDMA転送を停止させる。
【0073】
CPU300が、期待値データ検出割り込みを検出すると、ソフトウェアにより、対象処理(図1〜図5を参照して説明したポーリング処理でIPのステータスレジスタ1が変化したら実行する処理)を実行する。
【0074】
さらに、割り込みクリアレジスタ7を設定して、期待値データ検出割り込みをクリアする。そして、CPU300は、割り込み処理を実行し、対象処理を優先的に処理する。このようにして、CPUのポーリング処理を、割り込み処理に変換する。
【0075】
ここで、図8に示す第1実施例において、割り込み生成回路500は、DMA転送のスタックを防止するために、タイムアウト割り込み機能を有し、また、CPU300は、タイムアウト割り込みを検出した場合に、DMA転送の設定を再設定する機能を有する。
【0076】
これは、DMAC400からのDMA転送が完了しても、IPのステータスレジスタ1が変化しない場合があるため、ソフトウェアにより、CPU300から最大ポーリング数設定レジスタ5に対してDMAC400により設定する。すなわち、最大ポーリング数設定レジスタ5に対して、最大DMA転送回数を設定しておく。
【0077】
第2比較器11は、最大ポーリング数設定レジスタ5のレジスタ値と、ポーリングデータ格納レジスタ2のライトアクセス回数をカウントするポーリング数カウンタ8の値を比較する。そして、一致したら第2割り込み生成部14をセットし、割り込み(タイムアウト割り込み要求)をCPU300へ通知する。
【0078】
また、何らかの要因でDMAC400がDMA転送を止めた場合に備えて、ソフトウェアにより、CPU300から最大ウェイトサイクル設定レジスタ6に対して、ポーリングデータ格納レジスタ2のライトアクセス間隔の最大ウェイトサイクル数を設定する。
【0079】
第3比較器12は、最大ウェイトサイクル設定レジスタ6のレジスタ値と、ポーリングデータ格納レジスタ2のライトアクセス間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタ9の値を比較する。そして、一致したら第2割り込み生成部14をセットし、割り込みをCPU300へ通知する。
【0080】
CPU300がタイムアウト割り込みを検出すると、ソフトウェアにより、DMA転送に必要な設定を再設定し、割り込みクリアレジスタ7を設定してタイムアウト割り込みをクリアする。そして、CPU300は、割り込み処理を実行する。
【0081】
なお、図8に示す第1実施例の半導体集積回路では、IPのステータスレジスタ1の値の変化を検出して所定の対象処理を実行する場合を説明したが、変化を検出するレジスタはステータスレジスタに限定されるものではない。
【0082】
図9〜図11は、図8に示す半導体集積回路における処理の一例を示すフローチャートである。図9に示されるように、処理が開始すると、ステップST31において、DMAC400のレジスタ設定を行う。
【0083】
例えば、転送タイプは『シングル』、転送数は『最大』、転送元アドレスは『IPのステータスレジスタ1(アドレス固定)』、そして、転送先アドレスは『ポーリングデータ格納レジスタ2(アドレス固定)』と設定する。
【0084】
さらに、ステップST32に進んで、割り込み生成回路500のレジスタ設定を行う。例えば、期待値データ格納レジスタ3に『期待値』を、データマスクレジスタ4に『マスクビット』を、最大ポーリング数設定レジスタ5に『DMA転送数』を、そして、最大ウェイトサイクル設定レジスタ6に『適切なサイクル数』を、設定する。
【0085】
次に、ステップST34において、割り込み生成回路500から、DMAC400へDREQ信号(データリクエスト信号)を出力して、ステップST35に進む。ステップST35では、DMAC400からポーリングデータ格納レジスタ2へIPのステータスレジスタ1のデータを転送して、ステップST36に進む。
【0086】
なお、ステップST32における割り込み生成回路500のレジスタ設定を行った後、前述した図6のように、ソフトウェアが別の処理を実行しない場合、ステップST33において、CPU300は割り込み待ち状態に入る。
【0087】
一方、ステップST32における割り込み生成回路500のレジスタ設定を行った後、前述した図7のように、ソフトウェアが別の処理を実行する場合、図11に示されるように、ステップST330において、CPU300は別の処理を実行する。
【0088】
ただし、割り込みが検出されたら、図11の処理(ステップST330)を中断して、割り込み処理(図9のステップST34)に移動し、その割り込み処理が完了した後、図11の処理に戻る。
【0089】
図10に示されるように、ステップST36では、ポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の値について、データマスクレジスタ4でマスクされていないビットを第1比較器10で比較し、一致したかどうかを判定する。
【0090】
ステップST36において、一致したと判定すると、ステップST37に進んで、第1割り込み生成部13で期待値データ検出割り込みをアサートし、CPU300へ割り込みを通知する。
【0091】
さらに、ステップST38に進んで、割り込み生成回路500からDMAC400へDSTP信号を出力し、DMA転送を停止させ、ステップST39に進んで、割り込み処理を行う。
【0092】
すなわち、ステップST39では、必要とされる対象処理を実行し、割り込みクリアレジスタ7から割り込みをクリアしてステップST40に進む。ステップST40では、第1割り込み生成部13で期待値データ検出割り込みをネゲートし、ポーリング数カウンタ8およびポーリングウェイトサイクルカウンタ9をクリア(『0』)して処理を終了する。
【0093】
一方、ステップST36において、一致しないと判定すると、ステップST41に進んで、最大ポーリング数設定レジスタ5およびポーリング数カウンタ8の値を第2比較器11で比較し、一致したかどうかを判定する。
【0094】
ステップST41において、一致したと判定すると、ステップST42に進んで、第2割り込み生成部14でタイムアウト割り込みをアサートし、CPUへ割り込みを通知し、さらに、ステップST43に進んで、割り込み処理を行う。
【0095】
すなわち、ステップST43では、上述したステップST39と同様に、割り込みクリアレジスタ7から割り込みをクリアしてステップST44に進む。ステップST44では、第2割り込み生成部14でタイムアウト割り込みをネゲートし、ポーリング数カウンタ8およびポーリングウェイトサイクルカウンタ9をクリア(『0』)してステップST31に戻る。
【0096】
なお、ステップST41において、一致しないと判定すると、ステップST45に進んで、最大ウェイトサイクル設定レジスタ6の値とポーリングウェイトサイクルカウンタ9の値を、第3比較器12で比較し、一致したかどうかを判定する。
【0097】
ステップST45において、一致したと判定すると、ステップST42に進んで、前述した処理を行い、一致しないと判定すると、ステップST35に戻って前述した処理を繰り返す。
【0098】
ここで、図9〜図11を参照して説明したフローチャートにおいて、ステップST31,ST32,ST39,ST43およびST330の処理がCPU300からのソフトウェアの設定処理を示す。また、ステップST34〜ST38,ST40〜ST42,ST44およびST45の処理が割り込み生成回路500による(ハードによる)処理を示す。
【0099】
図12は、図8に示す半導体集積回路における処理を説明するためのタイミングチャートであり、前述した図6のタイミングチャートに対して、割り込み生成回路500のレジスタ2〜4およびDMAC400のバス動作を追加したものである。
【0100】
図6を参照して説明したように、本実施例の割り込み生成方法による割り込み処理(別の処理なし)によれば、CR30の期間において、ポーリング処理を不要として、CPU300のクロックを停止することができる。従って、この期間CR30では、CPU300のバスもアイドル状態となる。
【0101】
このとき、図8〜図11を参照して説明したように、DMAC400は、IPのステータスレジスタ1の値をリードして、割り込み生成回路500のポーリングデータ格納レジスタ2にライトする。
【0102】
従って、DMAC400のクロックは、常に入力され、DMAC400のバスは、IPのステータスレジスタ1のリードおよびポーリングデータ格納レジスタ2のライトに使用され、その残りの期間がアイドル状態となる。
【0103】
図12の例では、IPのステータスレジスタ1の値が、タイミングT30において、『0x0000』から『0x0001』へ変化し、期待値データ格納レジスタ3には『0x0001』が設定されている。
【0104】
なお、データマスクレジスタ4には、第1比較器10によるポーリングデータ格納レジスタ2および期待値データ格納レジスタ3の比較において、マスクしたいビット『0x0001』が設定されるようになっている。
【0105】
そして、データマスクレジスタ4によりマスクされていないビットに関して、タイミングT30において、ポーリングデータ格納レジスタ2の値『0』が『1』に変化して期待値データ格納レジスタ3に設定された値『1』に一致すると、割り込みを開始する。
【0106】
すなわち、第1比較器10の比較により、ポーリングデータ格納レジスタ2の値が期待値データ格納レジスタ3の設定値に一致すると、第1割り込み生成部13で期待値データ検出割り込みをアサートし、CPU300へ割り込みを通知する。
【0107】
そして、CPU300は、第1割り込み生成部13からの期待値データ検出割り込みを受けて、期間OP30から必要とされた対象処理を実行する。
【0108】
このように、本実施例によれば、期間CR30において、CPU300のクロックを停止することにより、CPUのクロックを生成するための回路,並びに,CPUのクロックにより動作する他の回路の消費電力を低減することが可能になる。
【0109】
なお、図12に示されるように、DMAC400のクロックは常に入力されるが、DMAC400はCPU300よりも回路規模が遥かに小さいため、消費される電力もCPUと比較すると、非常に小さくなる。
【0110】
また、本実施例によれば、ポーリング処理を不要としてCPU割り込みを行うことで、別の処理に待たされることなく、必要とされる対象処理を優先的に処理して対象処理を実行するまでの時間を低減することが可能になる。
【0111】
さらに、システム開発において使用するIPが、例えば、所定のレジスタ変化による割り込み機能を持たない他社から提供されたIP、或いは、過去資産である従前のIPであっても、それらIP自体を変更することなく割り込み処理を実現することができる。
【0112】
図13は、第2実施例の半導体集積回路を示すブロック図である。図13と前述した図8との比較から明らかなように、本第2実施例の半導体集積回路では、第1実施例におけるDMAC400の代わりに、専用の制御回路400’を使用する。
【0113】
ここで、専用の制御回路400’は、DMAC400とは異なり、IPの割り込み生成回路500におけるポーリングデータ格納レジスタ2に対する書き込みをバス200を介することなく、直接行うようになっている。また、専用の制御回路400’は、DMAC400ではないので、図8におけるDSTP信号生成部16およびDREQ信号生成部17も不要となる。
【0114】
このように、本実施例の半導体集積回路は、図8に示す第1実施例のように、DMAC400を使用することもできるが、図13に示す第2実施例のように、専用の制御回路400’を使用してもよい。
【0115】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【0116】
(付記2)
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする付記1に記載の半導体集積回路。
【0117】
(付記3)
前記レジスタ値読み出し回路は、前記レジスタの値を、直接に前記割り込み生成回路に出力する専用の制御回路である、
ことを特徴とする付記1に記載の半導体集積回路。
【0118】
(付記4)
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記1乃至付記3のいずれか1項に記載の半導体集積回路。
【0119】
(付記5)
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記1乃至付記4のいずれか1項に記載の半導体集積回路。
【0120】
(付記6)
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第1比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする付記4または付記5に記載の半導体集積回路。
【0121】
(付記7)
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第2比較器と、を有し、
前記第2比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする付記6に記載の半導体集積回路。
【0122】
(付記8)
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセスの間隔のウェイトサイクル数をカウントするポーリングウェイトサイクルカウンタと、
予め設定された前記ウェイトサイクル数の最大値を格納する最大ウェイトサイクル設定レジスタと、
前記ポーリングウェイトサイクルカウンタのカウント値と前記最大ウェイトサイクル設定レジスタの値を比較する第3比較器と、を有し、
前記第3比較器の比較結果に基づき前記タイムアウト割り込み要求を出力する、
ことを特徴とする付記7に記載の半導体集積回路。
【0123】
(付記9)
前記レジスタ値出力回路、および、前記割り込み生成回路をソフトウェアにより制御するCPUを有する、
ことを特徴とする付記1乃至付記8のいずれか1項に記載の半導体集積回路。
【0124】
(付記10)
回路ブロックに含まれるレジスタの値を読み出して出力し、
前記レジスタの値を受け取って、予め設定された期待値と比較し、
前記レジスタの値が前記予め設定された期待値と一致したときに、割り込み要求を生成する、
ことを特徴とする割り込み生成方法。
【0125】
(付記11)
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする付記10に記載の割り込み生成方法。
【0126】
(付記12)
前記回路ブロックは、前記ステータスレジスタの変化による割り込み機能を持たない、
ことを特徴とする付記10または付記11に記載の割り込み生成方法。
【符号の説明】
【0127】
1 レジスタ(IPのステータスレジスタ)
2 ポーリングデータ格納レジスタ
3 期待値データ格納レジスタ
4 データマスクレジスタ
5 最大ポーリング数設定レジスタ
6 最大ウェイトサイクル設定レジスタ
7 割り込みクリアレジスタ
8 ポーリング数カウンタ
9 ポーリングウェイトサイクルカウンタ
10 第1比較器
11 第2比較器
12 第3比較器
13 第1割り込み生成部
14 第2割り込み生成部
15 デコーダ(バスのアドレスデコーダ)
16 DSTP信号生成部
17 DREQ信号生成部
18,19 アンド回路部
20 オア回路部
100 IP(Intellectual Property)
200 バス
300 CPU(Central Processing Unit:中央処理装置)
400 DMAC(Direct Memory Access Controller)
400’ 専用の制御回路
500 割り込み生成回路
【特許請求の範囲】
【請求項1】
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【請求項2】
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする請求項1または請求項2に記載の半導体集積回路。
【請求項4】
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第1比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする請求項3に記載の半導体集積回路。
【請求項5】
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第2比較器と、を有し、
前記第2比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする請求項4に記載の半導体集積回路。
【請求項1】
レジスタを含む回路ブロックと、
前記レジスタの値を読み出して出力するレジスタ値読み出し回路と、
前記レジスタの値を前記レジスタ値読み出し回路から受け取り、予め設定された期待値と前記レジスタ値を比較し、前記比較の結果に基づいて割り込み要求を生成する割り込み生成回路と、
を有することを特徴とする半導体集積回路。
【請求項2】
前記レジスタ値読み出し回路は、前記レジスタの値を、バスを介して前記割り込み生成回路に出力するコントローラである、
ことを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
前記回路ブロックはポーリング対象となる回路ブロックであり、前記レジスタはステータスレジスタである、
ことを特徴とする請求項1または請求項2に記載の半導体集積回路。
【請求項4】
前記割り込み生成回路は、
前記ステータスレジスタの値を格納するポーリングデータ格納レジスタと、
前記期待値を格納する期待値データ格納レジスタと、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値を比較する第1比較器と、を有し、
前記ポーリングデータ格納レジスタと前記期待値データ格納レジスタの値が一致したとき、前記割り込み要求である期待値データ検出割り込み要求を出力する、
ことを特徴とする請求項3に記載の半導体集積回路。
【請求項5】
前記割り込み生成回路は、
前記ポーリングデータ格納レジスタに前記レジスタ値を格納するアクセス回数をカウントするポーリング数カウンタと、
予め設定された前記アクセス回数の最大値を格納する最大ポーリング数設定レジスタと、
前記ポーリング数カウンタのカウント値と前記最大ポーリング数設定レジスタの値を比較する第2比較器と、を有し、
前記第2比較器の比較結果に基づきタイムアウト割り込み要求を出力する、
ことを特徴とする請求項4に記載の半導体集積回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−41534(P2013−41534A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−179574(P2011−179574)
【出願日】平成23年8月19日(2011.8.19)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月19日(2011.8.19)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]