近年、携帯機器で音声や動画を再生するシステムが普及してきている。このような携帯機器では、電池の寿命を長くするために、搭載される半導体回路の消費電力を低減させることが必要となる。一般に半導体回路の消費電力は、その動作周波数に比例するとともに、電源電圧の2乗に比例する。そこで、音声や動画の再生等のアプリケーションで要求される処理量を実行するために必要な最低限の動作周波数にクロックを設定し、要求される動作周波数を実現するために必要な最低源の電源電圧を各々の回路ブロックに供給する方法がある。この方法は、ダイナミック・ボルテージ・アンド・フリークエンシー・スケーリング(以降DVFS)と呼ばれる。
携帯電話機に用いられるアプリケーションプロセッサを例にすると、動画再生時にはプロセッサコアに最高周波数のクロックと最高電圧の電源とを供給し、音声のみの再生時にはプロセッサコアのクロック周波数や電源電圧を低くして消費電力を減少させる。アプリケーションプロセッサチップには、プロセッサコアに加えチップ外部との信号入出力のための回路も搭載されているが、この入出力回路に供給する電源電圧は固定であることが多い。この場合には、1つのアプリケーションプロセッサチップ上に、電源電圧が可変制御されるプロセッサコアと、電源電圧が固定の入出力回路の2種類の回路が搭載されることになる。
以下に、異なる2種類の電源電圧で動作する回路が搭載されているチップにおける回路間のデータ転送について説明する。図12Aは、異なる2種類の電源電圧で動作する回路が搭載されているチップを示す図である。
集積回路チップ10は、回路ブロック11と回路ブロック12を含む。回路ブロック11及び12は、異なる電源が供給される2つの電源ドメインPD1及びPD2に一致する。電源ドメインとは、同じ電源が供給される回路のまとまりのことを意味している。ここでは、ドメインPD1の回路ブロック11に対しては、電源電圧が可変制御される。ドメインPD2の回路ブロック12に対しては、電源電圧が固定である。PD1の回路ブロック11にあるフリップフロップ15の入力クロックは、集積回路チップ10に搭載されているPLL回路13から供給される。具体的には、PLL回路13が出力するクロック信号CK0が、電圧固定のPD2内にある1/m分周器14により分周され、クロック信号CK1としてPD1ドメインのフリップフロップ15に供給される。この場合の伝搬時間をtCK1とする。なおmは1以上の整数である場合が多い。
PD2の回路ブロック12にあるフリップフロップ17の入力クロックも同様に、PLL回路13から供給される。具体的には、PLL回路13が出力するクロック信号CK0が、電圧固定のPD2内にある1/n分周器16により分周され、クロック信号CK2としてPD2ドメインのフリップフロップ17に供給される。この場合の伝搬時間をtCK2とする。
例えば回路ブロック11をプロセッサコア、回路ブロック12を周辺回路と考えることができる。回路ブロック12のクロック周波数が低いため、図12Aのように1/n分周器16が設けられる。
図12Bは、クロック周波数、電源電圧、及びクロック伝播時間の変化を示す図である。分周率mが1と4との間で切り替わり分周率nが2に固定の場合について、(a)クロック周波数、(b)電源電圧、及び(c)クロック伝播時間を示している。
時刻t1までは、プロセッサコア(回路ブロック11)で高い処理能力が必要なためPD1のクロックはm=1として高い周波数で動作させている。周辺回路(回路ブロック12)のクロックにはそれほど高い周波数を必要としないのでn=2としている。この期間は、PD1とPD2とをそれぞれ所定の電源電圧に設定した状態で(同一の電源電圧であってよい)、クロック伝播時間tCK1(PLL回路13からPD1のフリップフロップ15まで)とtCK2(PLL回路13からPD2のフリップフロップ17まで)とが等しくなるように設計されていたとする。時刻t1以降は、回路ブロック11に要求される処理量が減少し、CK1の周波数が低くても十分に所望の処理ができるようになったので、分周率mを4に下げる。このときPD1内のクロック周期が長くなるので、PD1の電源電圧を下げても正常に動作させることができるようになる。そこで、時刻t2でPD1の電圧を下げる。すると、tCK1は増加して、tCK2よりも長くなる。時刻t4でCK1の周波数を元に戻す必要が生じた場合、その前の時刻t3にPD1の電源電圧を元の電圧に戻したのち、m=1にしてCK1の周波数を元に戻す。このように、時刻t2から時刻t3の期間において、tCK1がtCK2よりも長くなる場合がある。
図13は、複数の集積回路チップと電源ICチップからなるシステムを示す図である。図13において、図12Aと同一の構成要素は同一の番号で参照し、その説明は省略する。図13のシステムは、プロセッサコアと入出力回路とを含む集積回路チップ10と、ユーザインターフェイス回路を含む集積回路チップ20と、電源電圧を制御する電源ICチップ30から構成される。
集積回路チップ20は、回路ブロック21を含む。回路ブロック21は1つの電源ドメインPD9に一致する。PD9の回路ブロック21にあるフリップフロップ25の入力クロックは、集積回路チップ20に搭載されているPLL回路23から供給される。具体的には、PLL回路23が出力するクロック信号が、1/n分周器24により分周され、フリップフロップ25及び26にクロックCK9として供給される。この場合の伝搬時間をtCK9とする。
電源ドメインPD1、PD2、及びPD9のそれぞれの電圧VD1、VD2、及びVD9は電源ICチップ30から供給される。電源ICチップ30は、電池などから電圧VD(例えば4.5V)を供給されている。VD1の電圧は、集積回路チップ10の回路ブロック12に設けられた電圧周波数制御回路18が出力する制御信号vdd_setの値に応じて、例えば0.6Vから1.2Vの間で制御される。VD2は1.0Vで固定されている。電圧周波数制御回路18は、PD1の回路で必要なクロック周波数からVD1を計算してvdd_setとして電源ICチップ30に送るとともに、1/m分周器14の分周率mの値を制御する。
集積回路チップ10及び集積回路チップ20は、外部から同一クロック信号CKINを入力として受け取り、それぞれのPLL回路13及び23を用いて位相を制御した後、それぞれのチップ内のフリップフロップにクロックを供給する。PLL回路13及びPLL回路23の位相制御は、例えばフリップフロップに入力されるクロックの立ち上がりエッジのタイミングと、外部から入力されるCKINの立ち上がりエッジのタイミングとを合わせるように行われる。集積回路チップ10のPLL回路13から出力されたクロックCK0は、プロセッサコアのフリップフロップ15及び28と入出力回路のフリップフロップ17及び27に分配される。プロセッサコアのフリップフロップ15に入力されるクロックは、CK0が1/m分周器14により1/mに分周され、PD2ドメインに入ってCK1としてフリップフロップ15及び28に到達する。入出力回路のフリップフロップ17に入力されるクロックは、CK0が1/n分周器16により1/nに分周され、PD2ドメインのみを通ってCK2としてフリップフロップ17及び27に到達する。集積回路チップ20のPLL回路23から出力されたクロックは、1/n分周器24により1/nに分周されCK9としてフリップフロップ25及び26に入力される。
集積回路チップ10のプロセッサコア処理後のデータを集積回路チップ20に転送する場合のデータの流れは次のようになる。CK1の立上がりエッジでPD1のフリップフロップ15からデータを送信し、CK2の立上がりエッジでPD2のフリップフロップ17がデータを受信すると同時に集積回路チップ20にデータを送信し、CK9の立上がりエッジでPD9のバッファ25がデータを受信する。逆に、集積回路チップ20のデータをプロセッサコアに転送する場合は、CK9の立上がりエッジでPD9のフリップフロップ26からデータが出力され、CK2の立上がりエッジでPD2のフリップフロップ27がデータを受信すると同時にデータを出力し、CK1の立上がりエッジでPD1のフリップフロップ28がデータを受信する。
図14A及び図14Bは、VDFSを実施する場合の問題点を説明するための図である。tCK1とtCK2とが等しい期間(図12Bの時刻t1まで、又は、時刻t4以降の期間)、CK1の立ち上りエッジでフリップフロップ15から送信されたデータは、次のCK2の立ち上がりエッジでフリップフロップ17により受信できる。この様子が図14Aに示されている。PD2のデータ受信回路はこのCK2の立ち上がりエッジでデータが受信できることを期待している。ところが、VD1がVD2よりも低い場合(図12Bの時刻t2から時刻t3までの期間)は、tCK1がtCK2よりも長くなるため、送信側のCK1の立ち上がりエッジが遅れ、PD2のデータ受信回路が期待しているCK2の立ち上がりエッジでデータを受信できなくなってしまう。この様子が図14Bに示されている。
このように期待したエッジでデータが受信できなくなってしまう現象を防ぐ必要がある。そこで、CK1のクロック配線の途中に遅延を調整できる可変遅延回路を挿入し、CK1とCK2の立ち上がりエッジの位相差を検出する位相比較器の出力により遅延を制御する手法が提案されている(非特許文献1)。
図15は、遅延制御のための可変遅延回路を設けた集積回路チップを示す図である。図15において、図12Aと同一の構成要素は同一の番号で参照し、その説明は省略する。図15の集積回路チップ10Aは、図12Aに示される構成要素に加え更に、位相比較回路31、可変遅延回路32、及び固定遅延回路33を含む。
tCK1とtCK2が同じになるように、位相比較回路31により常時CK1の位相とCK2の位相とを比較して、この比較結果に応じてCK1に挿入した可変遅延回路32の遅延量を制御する。例えば、PD1の電圧が下がっていくときを考える。PD1の電圧が下がることによって、tCK1の遅延が増加する。すると、CK1とCK2との位相差は、CK1が遅くなるほうにずれる。位相比較回路31によって位相の前後関係とそのずれ量とを計測して、可変遅延回路32の遅延を短くするような制御信号を生成する。この制御信号に基づいて、可変遅延回路32は遅延を短くする。この動作を繰り返すことにより、tCK1とtCK2とを同一長に揃えることができ、データ転送が正しく行えるようになる。ここで、PD1の電圧が最も低い時(tCK1が最も長くなる時)にもtCK1とtCK2とが同じになるように、CK2の途中に遅延を遅らせる固定遅延回路33を挿入する必要がある。
チップ間のクロック位相合わせの手法として、例えばメモリコントローラとメモリチップ間のクロック位相合わせのために、PLLやDLLを使用する手法がある。これらの手法では、電圧設定が固定であるが外乱により発生する実際の電圧の変動や、チップ間の接続状況の違いに起因する伝播遅延の変動や、使用中の温度変化やプロセスばらつきに起因するタイミング変動に対しては、問題なく位相を合わせることができる。しかしDVFSのように意図的な電源電圧変化によりクロック時間が3倍以上も動作中に変化する状況に対応することはできない。
上述の非特許文献1の技術を用いた場合、tCK2に挿入される固定遅延回路33は常に一定に固定遅延を発生するので、PD1が最も高い電圧でCK1の遅延が最も短いときでも、この固定遅延を含んだクロック遅延が発生していることになる。例えば、電源電圧が1.2VのときのPD1及びPD2のクロック伝搬路の遅延時間が1nsであるとする。またPD1の電源電圧が最も低い電圧値0.6Vのときに、PD1のクロック伝搬路の遅延が6nsになるとする。このような場合、この最も遅い遅延時間に合わせて、PD2のクロック伝搬路と固定遅延回路33との合計遅延を6nsに設定する必要がある。この結果、PD2側のtCK2は常に6nsとなり、PD1側では電源電圧が変化してもこの6nsに常にtCK1を合わせることになる。即ち、例えばPD1の電源電圧が1.2VのときのtCK1は、クロック伝搬路自体の遅延が1nsに過ぎないのに、可変遅延回路32により長い遅延を設けることにより合計として6nsになる。
クロック遅延が増加すると、電源変動に伴うクロックジッタが増加したり、プロセスばらつきに起因するクロック遅延ばらつき(クロックスキュー)が増加したりする。例えば、クロック遅延の10%のクロックジッタが発生する場合、6nsのクロック遅延では600psのジッタが発生する。DVFS無しの場合にはクロック遅延1nsの10%である100psのジッタしかなかったのが、DVFSを設けることによりジッタが600psに増大してしまう。この結果、余裕をとってより長い周期のクロック信号を用いることが必要になり、動作速度を律速する原因となってしまう。特に、PD1の電源電圧を最大電圧に設定して最高速で動作したいときであっても、大きなジッタが存在するために、クロック周波数を高くすることができないという問題がある。
Toshihide Fujiyoshi, 他、"An H.264/MPEG-4 Audio/Visual Coded LSI with Module-Wise Dynamic Voltage/Frequency Scaling," ISSCC (IEEE International Solid-State Circuits Conference) Digest of technical paper, pp.132-133, 2005
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1Aは、本発明による集積回路チップの第1の実施例を示す図である。図1Aに示す集積回路チップ40は、回路ブロック41と回路ブロック42とを含む。回路ブロック41及び42は、異なる電源が供給される2つの電源ドメインPD1及びPD2に一致する。ここでは、ドメインPD1の回路ブロック41に対して、電源電圧が可変制御される。ドメインPD2の回路ブロック42に対しては、電源電圧が固定である。回路ブロック41がプロセッサコアを含む回路ブロックであり、回路ブロック42がその入出力回路を含む回路ブロックである。
PD1の回路ブロック41にあるフリップフロップ45の入力クロックは、集積回路チップ40に搭載されているPLL回路43から供給される。具体的には、PLL回路43が出力するクロック信号CK0が、電圧固定のPD2内にある可変遅延回路48及び1/m分周器44により遅延及び分周され、クロック信号CK1としてPD1ドメインのフリップフロップ45に供給される。この場合のクロック信号の総伝搬時間をtCK1とする。また1/m分周器44の出力直後のクロック信号をCK01とする。
PD2の回路ブロック42にあるフリップフロップ47の入力クロックも同様に、PLL回路43から供給される。具体的には、PLL回路43が出力するクロック信号CK0が、電圧固定のPD2内にある可変遅延回路49及び1/n分周器46により遅延及び分周され、クロック信号CK2としてPD2ドメインのフリップフロップ47に供給される。この場合のクロック信号の総伝搬時間をtCK2とする。また1/n分周器46の出力直後のクロック信号をCK02とする。
PD1のフリップフロップ45に到達するクロックCK1と、PD2のフリップフロップ47に到達するクロックCK2とは、位相比較回路50に入力される。位相比較回路50は、クロックCK1の位相とクロックCK2の位相との比較結果に応じて位相差信号SCK1及びSCK2を出力する。位相差信号SCK1とSCK2とに基づいて、制御回路51が制御信号CNT1及びCNT2を出力する。制御信号CNT1は、CK1へのクロック供給経路に挿入された可変遅延回路48に供給される。制御信号CNT2は、CK2へのクロック供給経路に挿入された可変遅延回路49に供給される。
このように図1Aに示す本発明による集積回路チップ40は、フリップフロップ45を含み第1の電源電圧で動作する回路ブロック41と、フリップフロップ47を含み第2の電源電圧で動作する回路ブロック42と、フリップフロップ45のクロック入力端に接続されクロックCK1を供給する第1のクロック供給経路と、フリップフロップ47のクロック入力端に接続されクロックCK2を供給する第2のクロック供給経路と、フリップフロップ45のクロック入力端におけるクロックCK1の位相とフリップフロップ47のクロック入力端におけるクロックCK2の位相との位相差に応じた値を出力する位相比較回路50と、位相比較回路50の出力値に応じて遅延時間が変化する第2のクロック供給経路の途中に設けられた可変遅延回路49を含む。この構成において、第1の電源電圧が可変に制御される。
図1Bは、電源電圧及びクロック伝播時間の変化を示す図である。PD1の電源電圧が切り替わる場合について、(a)電源電圧、(b)クロック伝播時間tCK1、及び(c)クロック伝播時間tCK2を示している。
時刻t1までは、プロセッサコア(回路ブロック41)で高い処理能力が必要なためPD1のクロックは高い周波数で動作させている。この期間は、PD1とPD2とをそれぞれ所定の電源電圧に設定した状態で(同一の電源電圧であってよい)、クロック伝播時間tCK1(PLL回路43からPD1のフリップフロップ45まで)とtCK2(PLL回路43からPD2のフリップフロップ47まで)とが等しくなるように設計されていたとする。時刻t1以降は、回路ブロック41に要求される処理量が減少したので、CK1の周波数を低くする。これによりPD1の電源電圧を下げても正常に動作させることができるようになるので、時刻t2でPD1の電圧を下げる。この結果、図1Bの(b)に示すようにPD1内のクロック供給経路部分の遅延が増加し、それに伴い総伝搬時間tCK1が増加する。クロックCK1の位相が変化するので、CK1とCK2との位相差を検出する位相比較回路50の出力に応じて、図1Bの(c)に示すように可変遅延回路49の遅延が増加する。この可変遅延回路49の遅延の増加は、フィードバック制御により、PD1内のクロック供給経路部分の遅延の増加を追従するものとなる。従って、(b)及び(c)に示されるように、tCK1とtCK2とは常に同一の長さになるように調整される。
図15に示す従来技術の構成と異なり、回路ブロック41側にクロックを供給する第1のクロック供給経路ではなく、回路ブロック42側にクロックを供給する第2のクロック供給経路途中に設けられた可変遅延回路49の遅延を制御することにより、回路ブロック41の電源電圧の変化に伴う第1のクロック供給経路の遅延量変化に追従するように構成されている。即ち、従来技術では、電源電圧が上昇してクロック供給経路のクロック遅延が小さくなると、このクロック供給経路に設けられた可変遅延回路の遅延量を大きくして、全体の遅延量が一定となるように制御している。それに対して本発明では、電源電圧が下降してクロック供給経路のクロック遅延が大きくなると、相手側のクロック供給経路に設けられた可変遅延回路の遅延量を大きくして、相手側の遅延量を追従させるようにしている。従って、従来技術では、PD1の電源電圧を最大電圧に設定して最高速で動作したい場合に大きなジッタが存在してクロック周波数を高くすることができないという問題があるが、本発明では、電源電圧が上昇すればそれに応じてクロック供給経路の総遅延量が短くなりジッタも小さくなる。従って、ジッタにより動作速度が律速されるという問題がない。
なおジッタを成るべく小さくするためには、PD1の電源電圧がその可変範囲の最大電圧に設定された時に、可変遅延回路49の遅延量がその可変範囲の最小値に設定されるようにすることが望ましい。このように設定することで、最大電圧及び最高周波数を用いて最高速度で動作させるときに、ジッタの量を最小にすることができる。
上記の説明のように、集積回路チップ40において回路ブロック41だけが電源電圧可変制御の対象となる場合、可変遅延回路49を設ければ、tCK1とtCK2とを同一の長さに合わせるという目的を達成することができる。しかし上述のように、ジッタをなるべく小さくするためには、PD1の電源電圧が可変範囲の最大電圧に設定された時に、可変遅延回路49の遅延量を可変範囲の最小値に設定することが望ましい。ところが電源電圧を最大電圧に設定した時のクロック供給経路の遅延は、プロセスばらつきや温度変動等によりばらつくことが考えられ、また動作環境によっては電源電圧の可変範囲が異なることも考えられる。従って、PD1の電源電圧が最大電圧に設定された時に可変遅延回路49の遅延量が最小値となるように固定的に回路を設計したのでは、実際に回路を動作させたときに正常に動作しなくなる可能性がある。そこで電源電圧が可変制御されるPD1側のクロック供給経路にも可変遅延回路48を挿入することで、この問題を解決することができる。以下に、これについて説明する。
図2Aは、位相比較回路50の動作を説明するための図である。集積回路チップ40がリセット解除され、通常使用モードに入った後に、位相比較回路50がCK1の位相とCK2の位相とを比較する(ステップS1)。位相差が所定の値α以下であった場合は、SCK1=0、SCK2=0を出力する(ステップS2)。αは、例えば50psといったように時間単位で計った遅延値、又は5度といったようにクロック周期に対する位相角度で設定される。ステップS3で位相の大小を比較して、CK1がCK2よりも位相差α以上遅い場合は、SCK1=1、SCK2=0を出力する(ステップS4)。逆に、CK2がCK1よりも位相差α以上遅いときは、SCK1=0,SCK2=1を出力する(ステップS5)。
図2Bは、制御回路51の制御動作を説明するための図である。集積回路チップ40のリセット解除直後において、制御回路51の出力は、CNT1=000及びCNT2=000に設定される(ステップS1)。CNT1及びCNT2の値は、それぞれ可変遅延回路48及び可変遅延回路49の遅延量に対応する。CNT1=000及びCNT2=000であれば、可変遅延回路48及び可変遅延回路49の遅延が最小に設定される。
次に、SCK1=1を検出したとき(CK1の位相がCK2のよりも遅いとき:ステップS2でyes)、CNT1が000であるならば(即ち可変遅延回路48の遅延を現在値より小さくできないなら:ステップS3でyes)、CNT2の値を1増加する(ステップS4)。これにより可変遅延回路49の遅延量が大きくなる。CNT1の値が000でないならば(即ち可変遅延回路48の遅延を現在値より小さくできるなら:ステップS3でno)、CNT1の値を1減少させる(ステップS5)。これにより可変遅延回路48の遅延が減少する。
SCK2=1を検出するとき(CK2の位相がCK1よりも遅いとき:ステップS6でyes)、CNT2が000であるならば(即ち可変遅延回路49の遅延を現在値より小さくできないなら:ステップS7でyes)、CNT1の値を1増加する(ステップS8)。これにより可変遅延回路48の遅延が増加する。CNT2が000でないならば(即ち可変遅延回路49の遅延を現在値より小さくできるなら:ステップS7でno)、CNT2を1減少させる(ステップS9)。これにより可変遅延回路49の遅延が減少する。
このようにして、可変遅延回路48又は可変遅延回路49の何れかの遅延を減少させることを優先的に行い、現在値よりも遅延を減少させることができないときに限り他方の遅延を増大させることにより、CK1とCK2との位相を合わせるように調整する。このような調整により、可変遅延回路48及び49の遅延量を常に必要最小な状態に設定することが可能になる。即ち、PD1の電源電圧を可変範囲の最大電圧に設定した時のクロック供給経路の遅延が種々の要因によりばらつくような場合であっても、可変遅延回路49の遅延量を可変範囲の最小値に設定して且つ正常に動作することが可能となる。
図3は、図1Aの集積回路チップ40の動作を説明するためのタイムチャートである。時刻t1以前と時刻t4以降は、PD1の電源電圧がPD2の電源電圧よりも高く、時刻t1とt4の間はPD1の電源電圧の方が低くなっている。また分周率m=2及びn=2の場合の波形を示してある。
時刻t1までは、CK0(PLL回路43出力)からCK1(PD1ドメインのフリップフロップ45の入力)までの遅延と、CK0からCK2(PD2ドメインのフリップフロップ47の入力)までのクロック遅延は同じである。そのため、CK1とCK2の位相は等しくなり、SCK1=0、SCK2=0となる。
時刻t1を過ぎるとPD1の電源電圧が下がり、CK01(1/m分周器44の出力)からCK1までの遅延が増加する。この結果、CK1の位相がCK2よりも遅れるようになり、SCK1=1、SCK2=0となる。このとき、CNT1が最短の000を示しているとすると、CNT2を000から001に変化する。これにより、CK0からCK02(1/n分周器46の出力)までの遅延が増加して、CK2とCK1の位相が一致するようになる。位相が一致すればSCK1=0、SCK2=0に戻り、CNT2は001で一定となる。
時刻t4以降ではPD1の電源電圧が再び高くなり、CK01からCK1までの遅延が短くなる。従って、CK1の位相がCK2よりも早くなるので、SCK=0,SCK2=1となる。このとき、CNT2は001であるので、CNT2を000にして可変遅延回路49の遅延量を減少させる。これにより、CK1とCK2の位相が再び一致するようになる。
図4Aは、本発明による集積回路チップの第2の実施例を示す図である。図4Aにおいて、図1Aと同一の構成要素は同一の番号で参照し、その説明は省略する。
図4Aに示す集積回路チップ40Aは、回路ブロック41、回路ブロック42Aと、回路ブロック42Bとを含む。回路ブロック41、42A、及び42Bは、異なる電源が供給される3つの電源ドメインPD1、PD0、及びPD2に一致する。ここでは、ドメインPD1の回路ブロック41及びドメインPD2の回路ブロック42Bに対して、電源電圧が可変制御される。ドメインPD0の回路ブロック42Aに対しては、電源電圧が固定である。回路ブロック41がプロセッサコアを含む回路ブロックであり、回路ブロック42Bがその入出力回路を含む回路ブロックである。
図4Aに示す構成では、データ送受信の双方のクロックパスに可変遅延回路が含まれているので、ドメインPD1の回路ブロック41とドメインPD2の回路ブロック42Bとに対してそれぞれ独立に電源電圧が可変制御されても、送信側と受信側とでクロックの位相を揃えて正常にデータ転送することができる。この場合の位相検出に基づく遅延量の制御は、図2A及び図2Bに示される制御と同一でよい。
図4Bは、電源電圧及びクロック伝播時間の変化を示す図である。PD1及びPD2の電源電圧が切り替わる場合について、(a)電源電圧、(b)クロック伝播時間tCK1、及び(c)クロック伝播時間tCK2を示している。
時刻t1までは、可変遅延回路48及び可変遅延回路49ともに最短の遅延に設定されている。時刻t1でPD2の電源電圧が下がるので可変遅延回路48の遅延が増加してCK1の位相とCK2の位相とが合うようになる。時刻t2を越えるとPD1の電源電圧が下がるためCK1の位相が遅れる(PD1内の遅延が増える)。このとき、可変遅延回路48の遅延は最短でないため、可変遅延回路48の遅延値が減少して、CK1の位相とCK2の位相とを合わせる。次に、時刻t3を過ぎるとPD2の電源電圧が高くなるのでCK2の位相が早くなる、つまり、CK1の位相が相対的に遅くなったことになる。可変遅延回路48は既に最短であるので、可変遅延回路49の遅延が増加して、CK1とCK2の位相を合わせる。時刻t4以降では、PD1の電源電圧が高くなるので、CK1の位相が早くなる、つまり、CK2の位相が遅くなったことになる。このとき、可変遅延回路49の遅延は最短でないので、その遅延を減少してCK1とCK2の位相を合わせる。
なお図4Aの構成において、位相比較回路50、制御回路51、可変遅延回路48及び49、1/m分周器44、1/n分周器46、PLL回路43をPD0の固定電圧ドメインに配置しているが、可変電圧のドメインに配置してもよい。但し固定電圧ドメインに配置することにより、回路をより安定に動作をさせることができる。例えば、可変遅延回路48及び49の1ステップあたりの遅延量を固定でき、各回路で発生するジッタを小さくできるメリットがある。
図5は、本発明による集積回路チップの第3の実施例を示す図である。図5において、図1Aと同一の構成要素は同一の番号で参照し、その説明は省略する。
図5に示す集積回路チップ40Bは、回路ブロック41と回路ブロック42Cとを含む。回路ブロック41及び42Cは、異なる電源が供給される2つの電源ドメインPD1及びPD2に一致する。ここでは、ドメインPD1の回路ブロック41に対して、電源電圧が可変制御される。ドメインPD2の回路ブロック42Cに対しては、電源電圧が固定である。回路ブロック41がプロセッサコアを含む回路ブロックであり、回路ブロック42Cがその入出力回路を含む回路ブロックである。
図5に示す集積回路チップ40Bは、図1Aに示す集積回路チップ40と比較して、可変遅延回路48が設けられていないことが異なる。またこれに伴い、2つの制御信号CNT1及びCNT2を出力する制御回路51の代わりに、1つの制御信号CNT1を出力する制御回路51Bが設けられている。位相比較回路50の動作は、図2Aに示すものと同様でよい。
図6は、制御回路51Bの制御動作を説明するための図である。集積回路チップ40のリセット解除直後において、制御回路51の出力は、CNT2=000に設定される(ステップS1)。CNT2の値は可変遅延回路49の遅延量に対応する。CNT2=000であれば可変遅延回路49の遅延が最小に設定される。
次に、SCK1=1を検出したとき(CK1の位相がCK2のよりも遅いとき:ステップS2でyes)、CNT2の値を1増加する(ステップS3)。これにより可変遅延回路49の遅延量が大きくなる。SCK2=1を検出するとき(CK2の位相がCK1よりも遅いとき:ステップS4でyes)、CNT2を1減少させる(ステップS5)。これにより可変遅延回路49の遅延が減少する。
図7は、本発明による集積回路チップの第4の実施例を示す図である。図7において、図1Aと同一の構成要素は同一の番号で参照し、その説明は省略する。
図7の集積回路チップ40Cは、回路ブロック41Cと回路ブロック42Dとを含む。回路ブロック41C及び42Dは、異なる電源が供給される2つの電源ドメインPD1及びPD2に一致する。ここでは、ドメインPD1の回路ブロック41Cに対して、電源電圧が可変制御される。ドメインPD2の回路ブロック42Dに対しては、電源電圧が固定である。回路ブロック41Cがプロセッサコアを含む回路ブロックであり、回路ブロック42Dがその入出力回路を含む回路ブロックである。
図7の集積回路チップ40Cは、図1Aの集積回路チップ40と比較して、可変遅延回路48からフリップフロップ45に至るクロック供給経路の遅延と実質的に同一の遅延を有する第1の模擬遅延経路61と、可変遅延回路49からフリップフロップ47に至るクロック供給経路の遅延と実質的に同一の遅延を有する第2の模擬遅延経路62を更に含む点がことなる。位相比較回路50は、第1の模擬遅延経路61を伝搬する信号の位相と第2の模擬遅延経路62を伝搬する信号の位相とを比較することにより、CK1とCK2との位相差に応じた値を出力するよう構成される。
電圧可変ドメインのクロックはDVFSなどによって周波数が可変制御される。従って、例えば図1Aに示す位相比較回路50は、同一周波数のクロック信号間で単純に各立ち上がりエッジのタイミングを比較するのではなく、異なる周波数のクロック信号間での位相比較をできる必要がある。即ち、一方のクロック信号のエッジを間引きながら、立ち上がりエッジ同士のタイミングを比較する動作等が必要になる。
図7に示す構成では、位相比較が簡単にできるように、1/m分周器44及び1/n分周器46に入力される前の周波数が一定のクロック信号を位相比較用に用いる。具体的には、この一定周波数のクロック信号が、フリップフロップ45及び47に供給されるクロック信号と同一の電圧ドメインで同一の遅延を有するように、第1の模擬遅延経路61及び第2の模擬遅延経路62が設けられる。
CK1に対しては、可変遅延回路48の直後の1/mに分周される前のクロックを分岐して、PD1ドメインでフリップフロップ45に分配されるクロック遅延と同じ遅延になるようにバッファを複数段挿入した第1の模擬遅延経路61を介して、位相比較回路50に入力される。一方、CK2に対しても、可変遅延回路49の直後の1/nに分周される前のクロックを分岐して、PD2ドメインでフリップフロップ47に分配されるクロック遅延と同じ遅延になるようにバッファを複数段挿入した第2の模擬遅延経路62を介して位相比較器50に入力される。このようにすることで、DVFSによりmの値が変わったり、クロックモードによってプロセッサコアと入出力回路の周波数比が変わりnの値が変化したりしても、模擬遅延経路61及び62間で単純に各エッジ毎の比較をすればよいので、位相比較回路50を比較的単純な回路で実現できる。
図8は、本発明による集積回路チップの第5の実施例を示す図である。図8において、図1A、図5、及び図7と同一の構成要素は同一の番号で参照し、その説明は省略する。
図8に示す集積回路チップ40Dは、回路ブロック41Cと回路ブロック42Eとを含む。図8に示す集積回路チップ40Dは、図7に示す集積回路チップ40Cと比較して、可変遅延回路48が設けられていないことが異なる。またこれに伴い、2つの制御信号CNT1及びCNT2を出力する制御回路51の代わりに、1つの制御信号CNT1を出力する制御回路51Bが設けられている。位相比較回路50の動作は、図2Aに示すものと同様である。また制御回路51Bの動作は、図6に示すものと同様である。図7に示す構成と同様に、模擬遅延経路61及び62間で単純に各エッジ毎の比較をすればよいので、位相比較回路50を比較的単純な回路で実現できる。
図9は、本発明による集積回路チップの第6の実施例を示す図である。図9において、図1Aと同一の構成要素は同一の番号で参照し、その説明は省略する。
図9では、集積回路チップ40Eにおいて回路ブロック41のプロセッサコア回路から回路ブロック42Fの入出力回路へ転送されたデータが、別の集積回路チップ70のユーザインターフェイス制御回路に更に転送される場合を示している。集積回路チップ70は、集積回路チップ40EのPLL回路43に入力されるクロック信号CKINと同一のクロック信号に基づいて内部クロック信号を生成するPLL回路71と、PLL回路71が生成するクロックを分周する1/n分周器72と、分周後のクロック信号CK9を受け取るフリップフロップ73を含む。
この構成では、可変遅延回路49の出力クロックCK02を、フィードバック経路65を介してPLL回路43にフィードバックすることを特徴としている。プロセッサコアから入出力回路にデータを転送する場合、可変遅延回路49の遅延値が可変制御されるので、CK2の立ち上がりエッジはPLL回路43の出力クロックCK0の立ち上がりエッジに対して相対的に変動する。図9の構成では、CK02をフィードバック経路65を介してPLL回路43にフィードバックしているので、CKINとCK02との間の位相が常に一定に保たれる。従って、CKINとCK2との間の位相も一定に保たれる。これにより、外部CKINの立ち上がりエッジに同期してデータを集積回路チップ70のユーザインターフェイス制御回路(フリップフロップ73)に送ることができる。
この例では、プロセッサコアからユーザインターフェイスへのデータ転送の例を示したが、同じようにユーザインターフェイス回路からプロセッサコアへのデータ転送も可能になることは明らかである。
図10は、本発明による集積回路チップの第7の実施例を示す図である。図10において、図1Aと同一の構成要素は同一の番号で参照し、その説明は省略する。
図10に示す集積回路チップ40Fは、回路ブロック41、回路ブロック42G、及び回路ブロック85を含む。回路ブロック41、回路ブロック42G、及び回路ブロック85はそれぞれ電源ドメインPD1、PD2、及びPD3に一致する。PD1とPD3とについては電源電圧が可変制御されており、PD2については固定の電源電圧である。
PD3の回路ブロック85にあるフリップフロップ86の入力クロックは、集積回路チップ40Fに搭載されているPLL回路43から供給される。具体的には、PLL回路43が出力するクロック信号CK0が、電圧固定のPD2内にある可変遅延回路82及び1/k分周器81により遅延及び分周され、クロック信号CK3としてPD3ドメインのフリップフロップ86に供給される。
3つの電源ドメインPD1、PD2、及びPD3間でデータ転送を同期して行うためには、3つのクロックCK1、CK2、及びCK3の位相を一致させなければならない。そこで、CK1とCK2との位相差を検出する位相比較回路50と、CK3とCK2との位相差を検出する位相比較回路80とを設ける。また位相比較回路50の出力である位相差信号SCK11及びSCK12と位相比較回路80の出力である位相差信号SCK22及びSCK23とに基づいて、制御信号CNT1及びCNT2を生成する制御回路83を設ける。
図11は、制御回路83の動作を示す図である。図11には、位相差信号SCK11、SCK12、SCK22、及びSCK23に基づいて、制御信号CNT1及びCNT2の値をどのように変化させるかを表形式で示してある。
例えば、CK1の位相よりCK2の位相が遅く(SCK11=0、SCK12=1)、CK3の位相よりCK2の位相が遅い場合(SCK22=1、SCK23=0)(図11においてBで示す欄)を考える。まずCK2の位相とCK3の位相とを合わせるように可変制御回路49及び82の制御を行う。具体的には、CNT2が000でない場合には、CNT2を1減少する。CNT2が000の場合にはCNT3を1増加する。これを繰り返すことによりCK2の位相とCK3の位相とは一致するようになる。つまりSCK2とSCK3とは共に0になる。このとき、CK2の位相がCK1の位相よりもまだ遅いならば、図11においてAで示す欄の条件になり、CK2とCK3とを一緒に変化させながらCK1の位相にあわせる。具体的には、CNT2とCNT3との両方とも000でないならば、CNT2とCNT3との両方とも1減少する。CNT2とCNT3とのどちらか一方でも000であるならば、CNT3を1増加する。これを繰り返すことにより、CK1、CK2、及びCK3の全てについて位相が揃う。なお図11中において、"*"はドントケアを示す。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。