(57)【特許請求の範囲】
【請求項１】
入力クロックの周波数を逓倍した周波数逓倍信号を生成し、かつ逓倍比が逓倍比制御信号により可変するＰＬＬ回路と、
前記周波数逓倍信号を入力とし、かつ該周波数逓倍信号を異なる遅延時間で順次遅延させた複数の遅延信号を出力する遅延回路と、
前記複数の遅延信号のうちのひとつを選択制御信号に応じて選択して出力する選択回路と、
前記複数の遅延信号のうちの前記ひとつと前記入力クロックとを位相比較し、位相比較結果を出力する位相比較回路と、
前記位相比較結果に基づき前記選択制御信号を生成する選択制御回路と、
前記選択制御信号に基づき、前記複数の遅延信号のうちの前記ひとつに与えられている遅延時間が所定の範囲にあるかどうか判断する判断回路と、
前記複数の遅延信号のうちの前記ひとつに与えられている前記遅延時間が前記所定の範囲の外になっていることに基づき、前記ＰＬＬ回路が出力する前記周波数逓倍信号の周波数を変化させるべく前記逓倍比制御信号を生成する逓倍比制御回路と
を具備することを特徴とするクロック生成回路。
【請求項２】
前記逓倍比制御回路が、前記ＰＬＬ回路での前記逓倍比を隣の逓倍比に高めるとき該当の前記所定の範囲の最外点と、前記ＰＬＬ回路での前記逓倍比を該隣の逓倍比からもとの逓倍比に下げるとき該当の前記所定の範囲の最外点とが異なる設定で、前記逓倍比制御信号を生成することを特徴とする請求項１記載のクロック生成回路。
【請求項３】
逓倍比が逓倍比制御信号により可変する条件のもとで、入力クロックの周波数を逓倍した周波数逓倍信号を生成するステップと、
前記周波数逓倍信号を入力として、該周波数逓倍信号を異なる遅延時間で順次遅延させた複数の遅延信号を出力するステップと、
前記複数の遅延信号のうちのひとつを選択制御信号に応じて選択して出力するステップと、
前記複数の遅延信号のうちの前記ひとつと前記入力クロックとを位相比較し、位相比較結果を出力するステップと、
前記位相比較結果に基づき前記選択制御信号を生成するステップと、
前記選択制御信号に基づき、前記複数の遅延信号のうちの前記ひとつに与えられている遅延時間が所定の範囲にあるかどうか判断するステップと、
前記複数の遅延信号のうちの前記ひとつに与えられている前記遅延時間が前記所定の範囲の外になっていることに基づき、前記ＰＬＬ回路が出力する前記周波数逓倍信号の周波数を変化させるべく前記逓倍比制御信号を生成するステップと
を具備することを特徴とするクロック生成方法。
【請求項４】
前記逓倍比制御信号を生成する前記ステップにおいて、前記ＰＬＬ回路での前記逓倍比を隣の逓倍比に高めるとき該当の前記所定の範囲の最外点と、前記ＰＬＬ回路での前記逓倍比を該隣の逓倍比からもとの逓倍比に下げるとき該当の前記所定の範囲の最外点とが異なる設定であることを特徴とする請求項３記載のクロック生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機内のＬＳＩ等に供給される動作クロックを生成するクロック生成回路とクロック生成方法に関する。
【０００２】
【従来の技術】
ＬＳＩでは、以下の３つの方法のいずれかで動作周波数を保証してきた。
【０００３】
ａ．設計時に最悪条件を想定する。
ｂ．製造後の検査で速く動作するチップを選別する。
ｃ．動作時のＬＳＩの温度を計測するセンサーをとりつけ、ＬＳＩの温度が一定以上になると動作周波数を下げるようにソフトウェアで制御する。
【０００４】
ａ．の方法は特定用途向けのＬＳＩ等の比較的生産数量が少ない場合に適用される。
ｂ．の方法は汎用のメモリやマイクロプロセッサ等、生産数量が多い場合に適用されることが多い。
ｃ．の方法はノートブック型パーソナルコンピュータ等において空冷ファン等を使用しても冷却しきれない場合に動作周波数を落としてタイミングエラーを防ぐ方法として用いられる。
【０００５】
また、"USP5,872,907 Fault Tolerant Design for Identification of AC Defects Including Variance of Cycle Time To Maitain System operation"(IBM)に見られるように、フォールトトレラント型コンピュータにおいてＡＣタイミングエラーによるエラーを検出した場合に、クロック周波数を変更することによって、システムの信頼性を向上させる技術も提案されている。
【０００６】
しかしながら、ａ．の方法では、設計条件が厳しくなりすぎ、実際の動作可能周波数よりも低い周波数で動作させるため、実力（動作可能周波数の最大値）よりも低い能力で使用せざるを得ない。
ｂ．の方法では、ａ．の方法よりは設計条件が緩和されるものの周囲温度や電源電圧等の条件が実際の使用条件よりも厳しい場合が多く、やはり実力よりも低い能力で使用せざるを得ない。
ｃ．の方法では、周囲温度は考慮されるものの電源電圧等の条件は実際の使用条件よりも厳しい場合が多く、やはり実力よりも低い能力で使用せざるを得ない。
【０００７】
このようにＬＳＩの実用最大動作周波数は、そのＬＳＩのもつ最高能力よりも低い範囲において製品毎に固定的に決められている。
【０００８】
本発明は、ＬＳＩを、安定に、かつその実力をより高く発揮させるように動作させることを可能にするクロック生成回路とその方法を実現するものである。
【０００９】
ここで、本発明との対比のため、従来のクロック生成回路について説明することにする。
【００１０】
はじめに、ＬＳＩにおける伝搬遅延時間と動作周波数との関係について述べる。
【００１１】
説明を簡単にするため、外部入力である基準クロックの周波数は一定であるとし、対象回路はＣＭＯＳ回路とする。「東芝CMOS ASICデザインマニュアル，97年版」の「4.1伝播遅延時間」にあるように、ＣＭＯＳ回路の伝播遅延時間は次のように表すことができる。
【００１２】
Ｄ＝Ｋf ＊ Ｄo
ここで、
Ｄ  ：実動作時の伝播遅延時間
Ｋf ：遅延係数
Ｄo ：標準条件での伝播遅延時間
である。
【００１３】
遅延係数Ｋf は次のように分解できる。
Ｋf ＝Ｋp ＊ Ｋt ＊ Ｋv
ここで、
Ｋp ：製造プロセスのばらつきによる遅延係数
Ｋt ：チップ温度による遅延係数
Ｋv ：動作電圧による遅延係数
である。
【００１４】
ＣＭＯＳ回路では、Ｋt は温度が高いほど、Ｋv は電圧が低いほど、大きな値をとり、回路の遅延時間が大きくなる。
【００１５】
さて、一般に同期式回路では、フリップフロップ間（もしくはラッチ間）の伝搬遅延時間とクロックスキューとの和の最大値が全体の回路の動作周波数の上限を決める。すなわち、全体の回路の伝搬遅延時間の最大値をＤmax（ｎｓ）、動作周波数の上限をｆmax(ＭＨｚ）とすると、
ｆmax＝１０００／Ｄmax
となる。ただし、Ｄmax にはクロックスキューも含まれているものとする。
【００１６】
具体例として計算機に使用されているロジックＬＳＩを考える。計算機の置かれている部屋の気温や、計算機の吸気口や排気口の近辺の風通し状況、あるいは計算機自体のオプション装置（ディスクドライブやグラフィックカード）の増設状況によってロジックＬＳＩの動作温度や動作電圧が変動する可能性がある。前述したように、ＣＭＯＳ−ＬＳＩでは動作温度や動作電圧によってＫt 、Ｋv が変化し、結果として冬場の比較的低温の動作環境では動作するＬＳＩが夏場にはＡＣタイミングエラーによって誤動作することもあり得る。
【００１７】
ＤＰＬＬ回路は、基準クロックに同期化したクロックの位相を伝搬遅延時間だけ変化させることで、見かけ上の伝播遅延時間を無くすためのものである。
【００１８】
図１８に、従来のＤＰＬＬ回路の構成を示す。（尾佐竹・小川のＤＰＬＬ回路「ＰＬＬ‐ＩＣの使い方」（畑、古川）産報出版 155ページ等参照）
このＤＰＬＬ回路は、基準クロックＣＬＫを入力する入力バッファ１０５と、２つ一組のＮＯＴゲートが直列に接続されて構成された遅延ゲート１１０と、遅延ゲート１１０から出力を取り出すタップ１１１〜１１ｎを選択する出力タップセレクタ１２０と、出力バッファ１２１，１２２と、位相比較回路１３０と、出力タップ選択レジスタ１４０とで構成されている。
【００１９】
出力タップセレクタ１２０は、出力タップ選択レジスタ１４０の値に応じて遅延ゲート１１０のタップ（１１１〜１１ｎのうち）の一つを選択する。出力タップセレクタ１２０によって選択されたタップの出力は出力バッファ１２１を通じて位相比較回路１３０に導入される。位相比較回路１３０は、出力タップセレクタ１２０によって選択されたタップの出力と基準クロックＣＬＫとの位相を比較し、比較結果に対応した信号を出力タップ選択レジスタ１４０に出力する。
【００２０】
図１９に、基準クロック波形Ｗ０と、遅延ゲート１１０の各タップから取り出した出力の波形Ｗ１〜Ｗｎを模式的に示す。同図では、基準クロック波形Ｗ０とｋ番目のタップ１１ｋの出力波形Ｗｋとがちょうど１クロックサイクル（位相差２π）分ずれている。以下、説明を簡単にするため、この状態を”位相があっている”とし、タップの出力波形の基準クロック波形Ｗ０に対する遅れが１クロックサイクルよりも小さい場合を”位相が進んでいる、”大きい場合を”位相が遅れている”と表現することにする。
【００２１】
位相比較器１３０は、出力タップセレクタ１２０によって選択されたタップの出力波形と基準クロックとの位相を比較し、この比較結果から次の動作を行う。
【００２２】
・位相が進んでいる場合は出力タップ選択レジスタ１４０にＵｐ信号を出力する。
・位相が遅れている場合は出力タップ選択レジスタ１４０にＤｗｎ信号を出力する。
・位相が合っている場合は何もしない。
【００２３】
出力タップ選択レジスタ１４０の値は、初期値から、位相比較器１３０の出力信号によって次のように更新される。
【００２４】
・Ｕｐ信号を受け取った場合は値を１加算する。
・Ｄｗｎ信号を受け取った場合は値を１減算する。
・何も受け取らなかった場合はそのまま値を保持する。
【００２５】
ＰＬＬのロックは、出力タップセレクタ１２０によって選択されたタップの出力波形と基準クロック波形との位相が一致したとき出力タップ選択レジスタ１４０の値が保持されることによって実現される。図２０に、この従来のＤＰＬＬ回路による位相ロック（出力タップ選択処理）の流れ図を示す。
【００２６】
【発明が解決しようとする課題】
前述したように、ＬＳＩの実用最大動作周波数は、安定した動作を保証するため、そのＬＳＩのもつ実力値よりも低い値で固定的に決められている。
【００２７】
本発明はこのような事情を鑑みてなされたもので、ＬＳＩを、安定に、かつそのＬＳＩの実力がより高く発揮されるように動作させることのできるクロック生成回路とその方法の提供を目的とするものである。
【００２８】
また、本発明は、ＬＳＩを安定にかつその実力がより高く発揮されるように周波数を切り替えることができるとともに、チップ温度や動作電圧等の変動によって動作周波数が過度の頻度で切り替わるような現象を抑止でき、動作が不安定になることを防止できるクロック生成回路とその方法の提供を目的とするものである。
【００２９】
【課題を解決するための手段】
上記目的を達成するために、本発明のクロック生成回路は、入力クロックの周波数を逓倍した周波数逓倍信号を生成し、かつ逓倍比が逓倍比制御信号により可変するＰＬＬ回路と、前記周波数逓倍信号を入力とし、かつ該周波数逓倍信号を異なる遅延時間で順次遅延させた複数の遅延信号を出力する遅延回路と、前記複数の遅延信号のうちのひとつを選択制御信号に応じて選択して出力する選択回路と、前記複数の遅延信号のうちの前記ひとつと前記入力クロックとを位相比較し、位相比較結果を出力する位相比較回路と、前記位相比較結果に基づき前記選択制御信号を生成する選択制御回路と、前記選択制御信号に基づき、前記複数の遅延信号のうちの前記ひとつに与えられている遅延時間が所定の範囲にあるかどうか判断する判断回路と、前記複数の遅延信号のうちの前記ひとつに与えられている前記遅延時間が前記所定の範囲の外になっていることに基づき、前記ＰＬＬ回路が出力する前記周波数逓倍信号の周波数を変化させるべく前記逓倍比制御信号を生成する逓倍比制御回路とを具備することを特徴とする。
【００３０】
また、上記の目的を達成するために、本発明のクロック生成方法は、逓倍比が逓倍比制御信号により可変する条件のもとで、入力クロックの周波数を逓倍した周波数逓倍信号を生成するステップと、前記周波数逓倍信号を入力として、該周波数逓倍信号を異なる遅延時間で順次遅延させた複数の遅延信号を出力するステップと、前記複数の遅延信号のうちのひとつを選択制御信号に応じて選択して出力するステップと、前記複数の遅延信号のうちの前記ひとつと前記入力クロックとを位相比較し、位相比較結果を出力するステップと、前記位相比較結果に基づき前記選択制御信号を生成するステップと、前記選択制御信号に基づき、前記複数の遅延信号のうちの前記ひとつに与えられている遅延時間が所定の範囲にあるかどうか判断するステップと、前記複数の遅延信号のうちの前記ひとつに与えられている前記遅延時間が前記所定の範囲の外になっていることに基づき、前記ＰＬＬ回路が出力する前記周波数逓倍信号の周波数を変化させるべく前記逓倍比制御信号を生成するステップとを具備することを特徴とする。
【００３１】
一般に、ＬＳＩは約１ｃｍ＊１ｃｍの領域にあり、１個のＬＳＩ内ではＫp （製造プロセスのばらつきによる遅延係数）は一定であって電圧、温度は同じである、とみなすことができる。すなわち、１個のＬＳＩ内ではＫp 、Ｋt 、Ｋv は均一である、とみなせるので、遅延係数Ｋf ＝Ｋp ＊Ｋt ＊Ｋv は均一である、と近似できる。したがって、ＬＳＩ内のどこかでＫf を測定できればそのＬＳＩ内のどの部分でも測定したＫf を使用できる。
【００３２】
本発明は、ＤＰＬＬ回路の位相調整用の遅延回路をＫfの測定に流用し、この測定したＫf から最適な動作周波数を決定するものである。ＤＰＬＬ回路は以下の理由でＫf を測定するうえで優れた特性をもっていると言える。
【００３３】
・入力信号がクロック信号であり、スイッチング周期が一定している。
・使用しているゲートが単純である。
・出力端子（出力タップ）を選択できる。
・位相比較回路があり、１クロック分の遅延時間に相当する遅延ゲートの段数をはかることができる。
【００３４】
Ｋf の測定と動作周波数の動的な制御は次のような流れで行われる。
【００３５】
１．動作周波数（逓倍比）を初期値にする。
２．ＤＰＬＬ回路の本来の機能を用いて動作クロックと位相が一致する出力端子（出力タップ）を選択する。この出力タップの位置がＫf に対応する。
３．出力タップ位置と現在の動作周波数とから次の最適な動作周波数の値を決定し、動作周波数を切り替える。
４．以後、２．〜３．の段階を繰り返す。
【００３６】
本発明によれば、動作周波数を動的に変更することのできるクロック生成回路を実現でき、ＬＳＩを、チップ温度や動作電圧の変動に対して安定に、かつそのＬＳＩの実力がより高く発揮されるように動作させることができる。また、隣り合う逓倍比の間で高いほうの逓倍比から低いほうの逓倍比への切り替えを行うときの条件と、その逆の切り替えを行うときの条件とが異なるようにすることで、チップ温度や動作電圧等の変動によって動作周波数が過度の頻度で切り替わるような現象を抑制でき、動作をより安定化することができる。
【００３７】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づき説明する。
【００３８】
図１に、本発明の第１の実施形態に係るクロック生成回路（ＤＰＬＬ回路）の構成を示す。
【００３９】
図１に示すように、本実施形態のクロック生成回路は、主に、基準クロックＣＬＫを入力する入力バッファ１０５と、２つ一組のＮＯＴゲートが直列に接続されて構成された遅延ゲート１１０と、遅延ゲート１１０から出力を取り出すタップ１１１〜１１ｎ（以降、出力タップと呼ぶ）を選択する出力タップセレクタ１２０と、出力バッファ１２１，１２２と、位相比較回路１３０と、出力タップ選択レジスタ１４０と、周波数選択レジスタ１５０と、周波数／出力タップセレクタ２００と、周波数／出力タップ選択テーブル２１０と、ＶＣＯ（Voltage Controlled Oscillator： 電圧制御発振器）３００とで構成されている。要するに、本実施形態のクロック生成回路は、図１８に示した従来のクロック生成回路に、周波数選択レジスタ１５０、周波数／出力タップセレクタ２００、周波数／出力タップ選択テーブル２１０、およびＶＣＯ３００等が付加されたものである。
【００４０】
周波数選択レジスタ１５０はＶＣＯ３００の発振周波数を決定する値を保持するレジスタである。ＶＣＯ３００は一般的なＰＬＬ発振器で使用されているものでよいし、分周回路と逓倍回路を組み合わせたものでもよい。
【００４１】
位相比較器１３０、周波数選択レジスタ１５０、出力タップ選択レジスタ１４０の各出力は周波数／出力タップセレクタ２００の入力とそれぞれ接続されている。周波数／出力タップセレクタ２００は、位相比較器１３０、周波数選択レジスタ１５０および出力タップ選択レジスタ１４０より与えられた各条件に応じて周波数／出力タップ選択テーブル２１０のアドレス２０１を指定する。
【００４２】
周波数／出力タップ選択テーブル２１０には、様々な条件に対応する値として、周波数選択レジスタ１５０および出力タップ選択レジスタ１４０にそれぞれ設定すべき最適値の組み合わせが登録されている。すなわち、位相比較器１３０、周波数選択レジスタ１５０および出力タップ選択レジスタ１４０の各出力に対応した最適値の組み合わせが、周波数／出力タップセレクタ２００により指定されたアドレスにより、周波数／出力タップ選択テーブル２１０から読み出される。周波数／出力タップ選択テーブル２１０から読み出された周波数選択レジスタ用の最適値で周波数選択レジスタ１５０の値が更新され、同じく読み出された出力タップ選択レジスタ用の最適値で出力タップ選択レジスタ１４０の値が更新される。これにより、ＶＣＯ３００の発振周波数と遅延ゲート１１０から出力タップがそれぞれ選定される。
【００４３】
なお、周波数／出力タップ選択テーブル２１０はたとえばＲＯＭ等で構成されている。ただし、書き換え可能な記憶手段もしくは組み合わせ回路で構成されていてもよい。
【００４４】
次に、本実施形態のクロック生成回路の実装例を説明する。
【００４５】
遅延ゲート１１０における２つ一組のＮＯＴゲートは４０９６組（タップ数が４０９６）あるものとする。出力を取り出すタップは周波数／出力タップセレクタ２００より出力される１２ビットの選択信号１４１により切り替えられるとする。また、説明を簡単にするため、ＮＯＴゲートの遅延時間は全段とも同じであり、ＶＣＯ３００の出力に与えられる遅延は遅延ゲート１１０内のＮＯＴゲートによるものだけとし、出力タップセレクタ１２０と出力バッファ１２１の遅延は無視する。実際に本発明を適用する場合には、これらの回路による遅延をＮＯＴゲート段数に換算して補正すればよい。ＶＣＯ３００は発振周波数を５００ＭＨｚ〜２ＧＨｚの間を１００ＭＨｚ単位で１６段階に切り替えられるものとし、周波数選択レジスタ１５０の出力である４ビットの周波数選択信号１５１によってＶＣＯ発振周波数が制御される。実際に本発明を適用する場合には、ＶＣＯ３００による入力クロックとの位相差を予めＮＯＴゲート段数に換算して補正すればよい。また、ＶＣＯ３００の発振周波数は切り替え直後から安定しているものとする。図２に、周波数選択レジスタ１５０の値とＶＣＯ発振周波数との対応表を示す。
【００４６】
さらに、周波数／出力タップセレクタ２００は、説明を簡単にするため、入力をそのままＲＯＭアドレス２０１として出力するものとする。すなわち、出力タップ選択レジスタ１４０の出力１４１の１２ビット、周波数選択レジスタ１５０の出力１５１の４ビット、そして位相比較回路１３０の出力であるＵｐ信号およびＤｗｎ信号の２ビットの計１８ビットをＲＯＭアドレス２０１として出力する。
【００４７】
周波数／出力タップ選択テーブル２１０は、アドレス入力１８ビット、データ出力１６ビットで４Ｍビットの容量をもつＲＯＭで構成されるものとする。
【００４８】
周波数／出力タップ選択テーブル２１０の入力アドレス２０１はＭＳＢ側から以下のフォーマットで構成される。
【００４９】
・位相比較回路の出力１３０のＵｐ信号（１ビット）
・位相比較回路の出力１３０のＤｗｎ信号（１ビット）
・周波数選択レジスタ１５０の出力１５１（４ビット）
・出力タップ選択レジスタ１４０の出力１４１（１２ビット）
【００５０】
周波数／出力タップ選択テーブル２１０の出力データはＭＳＢ側から以下のフォーマットで構成される。
【００５１】
・周波数選択レジスタ１５０の入力１５２（４ビット）
・出力タップ選択レジスタ１４０の入力１４２（１２ビット）
【００５２】
図３に周波数／出力タップ選択テーブル２１０の例を示す。また、図４に図３の周波数／出力タップ選択テーブル２１０から周波数の切り替えに必要な部分を抜き出したものを示す。本実施形態では、周波数／出力タップ選択テーブル２１０に（使用しない冗長分も含めて）４Ｍビットの容量を必要とする。
【００５３】
周波数選択レジスタ１５０は４入力４出力の順序回路で構成される。この例ではＤフリップフロップが用いられている。出力タップ選択レジスタ１４０は１２入力１２出力の順序回路で構成される。この例ではＤフリップフロップが用いられている。
【００５４】
ここで、周波数”１ＧＨｚ”、出力タップ”１１００段”で動作が安定（ＤＰＬＬがロック）する場合を考える。この場合、周波数を”１．１ＧＨｚ”、出力タップを”１０００段”に遷移させても動作は安定することが期待できる。これは、ＤＰＬＬがロックしているとき、クロック１周期と遅延ゲートの初段から選択されたタップ（出力タップ）までの遅延時間が等しいからである。ＶＣＯ発振周波数が”１ＧＨｚ”のときクロック信号は１サイクル”１ｎｓ”であり、クロック信号が遅延ゲート”１１００段”を通過する時間も”１ｎｓ”である。よって、遅延ゲート１段あたりの遅延時間は
＝（クロック周期）／（遅延ゲート段数）
＝１ｎｓ／１１００段
＝約０．９０９ｐｓ
となる。
【００５５】
一方、ＶＣＯ発振周波数が”１．１ＧＨｚ”のときクロック信号は１サイクル約”０．９０９ｎｓ”であり、クロック信号が遅延ゲート”１０００段”を通過する時間も約”０．９０９ｎｓ”である。よって、この場合、遅延ゲート１段あたりの遅延時間は
＝（クロック周期）／（遅延ゲート段数）
＝約０．９０９ｎｓ／１０００段
＝約０．９０９ｐｓ
となり、両者は等しいことがわかる。よって、一般に、”遅延定数”を
（遅延定数）≡（ＶＣＯ発振周波数）＊（遅延ゲート段数）
と定義すると”ある条件でＤＰＬＬがロックするとき、遅延定数が等しい組み合わせでもＤＰＬＬはロックする”と言える。
【００５６】
図５に動作周波数と出力タップ位置の切り替えの遷移をグラフ化したものを示す。ここで、動作周波数”１．１ＧＨｚ”、出力タップ位置”１２００番”のＢ点と動作周波数”１．２ＧＨｚ”、出力タップ位置”１１００番のＡ点とは遅延定数が等しい。遅延定数が等しい点は図５の同一遅延定数曲線５００上にある。同一遅延定数曲線５００は
（動作周波数）＊（出力タップ位置）＝（遅延定数：一定値）
なる反比例曲線上にある。
【００５７】
同一遅延定数曲線５００上の一点でＤＰＬＬがロックしている場合、同一遅延定数曲線５００上のどの点に移動してもＤＰＬＬはロックする。
【００５８】
同一遅延定数曲線５００は右上にあるほど遅延係数Ｋf が小さい場合に対応する。例えば図６に示される２本の同一遅延定数曲線５０１と５０２では５０２のほうが右上にあるので遅延係数Ｋf が小さい場合すなわち回路が高速な場合に対応する。
【００５９】
次に、この実施形態のクロック生成回路の起動時の動作を説明する。
【００６０】
図７に起動時の動作の手順を示す。まず、出力タップ選択レジスタ１４０と周波数選択レジスタ１５０の内容が初期値に設定される。ＶＣＯ３００の発振周波数の初期値は”１ＧＨｚ”、出力タップ位置は”１０２４番目”とする。なお、このクロック生成回路により生成されたクロックの供給を受けて動作するＬＳＩの実力値（実使用可能最大周波数）は”１．２ＧＨｚ”とする。
【００６１】
この時点でＬＳＩは実力値よりも低い周波数で動作することになるので、位相比較回路１３０は遅延ゲート１１０の遅延量が足りないと判断し、遅延量を増やす要求であるＵｐ信号を出力する。
【００６２】
周波数／出力タップセレクタ２００は位相比較回路１３０、出力タップ選択レジスタ１４０、周波数選択レジスタ１５０から与えられた値から周波数／出力タップ選択テーブル２１０の以下のようなアドレスを生成する。
（アドレス）＝（Up，Dwn，周波数選択レジスタの値，出力タップ選択レジスタの値）＝ 10 0101 0010 0000 0000
このアドレスを使って図３の周波数／出力タップ選択テーブル２１０を引くと、次のような出力データが得られる。
（出力データ）＝（次の周波数選択レジスタの値，次の出力タップ選択レジスタの値）＝0101 0010 0000 0001
すなわち、この例では、出力タップとして遅延ゲートが１段多いタップが選択され、ＶＣＯ３００の発振周波数は変更されない。
【００６３】
次のサイクルでも同様に周波数／出力タップセレクタ２００は、次の出力タップ選択レジスタ１４０の値、周波数選択レジスタ１５０の値、位相比較回路１３０から与えられた値をもとに周波数／出力タップ選択テーブル２１０のアドレスを生成する。以降しばらくの間は周波数選択レジスタ１５０の値を変化させず、出力タップ選択レジスタ１４０の値のみを更新して行く。
【００６４】
出力タップ選択レジスタ１４０の値がある一定値に達し、なおも位相比較回路１３０がＵｐ信号を出力し続けた場合、周波数／出力タップ選択テーブル２１０の出力が”ＶＣＯ発振周波数を切り替える”値に変化する。
【００６５】
例えば、周波数選択レジスタ１５０の値が”１ＧＨｚ”を示し、出力タップ選択レジスタ１４０の値が”１０９９段（１６進表示で４４ｂ段）”を示しているときに位相比較器１３０がＵｐ信号を出力した場合、図３に示した周波数／出力タップ選択テーブル２１０に従って、周波数選択レジスタ１５０が”１．１ＧＨｚ”の値に、出力タップ選択レジスタ１４０が”１０００段（１６進表示で３ｅ８段）”の値にそれぞれ切り替えられる。この切り替えはＤＰＬＬのロックの観点では、周波数選択レジスタ１５０を”１ＧＨｚ”、出力タップ選択レジスタ１４０を”１１００段（１６進表示で４４ｃ段）”に切り替えたことと等価である。
【００６６】
この状態ではＬＳＩの実力値である最大動作周波数”１．２ＧＨｚ”に達していないので、位相比較器１３０はその後もＵｐ信号を出力し続ける。この後しばらくは、周波数／出力タップ選択テーブル２１０の内容がＶＣＯ発振周波数を固定して出力タップ位置を切り替えるように設定されているので、サイクル毎に出力タップ位置の切り替えだけが繰り返される。
【００６７】
しばらくすると再び周波数／出力タップ選択テーブル２１０の出力が”ＶＣＯ発振周波数を切り替える”値に変化する。図３の例では、ＶＣＯ発振周波数が”１．１ＧＨｚ”、出力タップ位置が”１１９９段（１６進表示で４ａ１段）”になると、ＶＣＯ発振周波数が”１．２ＧＨｚ”に、出力タップ位置が”１１００段（１６進表示で４４ｃ段）”にそれぞれ切り替えられる。この切り替えはＤＰＬＬのロックの観点では、周波数選択レジスタ１５０の値を”１．１ＧＨｚ”に、出力タップ選択レジスタ１４０の値を”１２００段（１６進表示で４ｂ０段）”に切り替えたことと等価である。
【００６８】
この後、出力タップ位置”１１５０段”までＶＣＯ発振周波数を固定したまま出力タップ位置を切り替える動作を繰り返す。ＶＣＯ発振周波数が”１．２ＧＨｚ”、出力タップ位置が”１１５０段”になると位相比較器１３０の出力がＵｐ信号、Ｄｗｎ信号とも無くなり、ＶＣＯ発振周波数と出力タップ位置がともに固定されてＤＰＬＬがロックする。
【００６９】
この後、ＬＳＩの温度や動作電圧が変化すると、遅延ゲート１１０での遅延時間が変化するので位相比較器１３０がＵｐ信号またはＤｗｎ信号を出力し、ＤＰＬＬがロックする条件まで遷移する。
【００７０】
次に、本発明の第２の実施形態を説明する。
【００７１】
図８に第２の実施形態のクロック生成回路の構成を示す。なお、同図において図１と同じものには同一の符号が付してある。
【００７２】
第１の実施形態では、説明を簡単にするため、図３、図４に示したように、１０進数で１００の位が切り替わるときにＶＣＯ発振周波数を切り替えるようにした。この場合、周波数／出力タップ選択テーブル２１０に４ＭビットのＲＯＭが必要となる。次に説明する第２の実施形態は、この周波数／出力タップ選択テーブル２１０のＲＯＭ容量を減らすために、出力タップ選択レジスタ１４０の出力１２ビットのうちの７桁目（１０進数で６４の倍数）の値が変化するときにだけＶＣＯ発振周波数を切り替えるようにしたものである。本実施形態によりＲＯＭ容量は７６８ビットにまで圧縮される。
【００７３】
以下、図８および周波数／出力タップセレクタ２００の構成を示す図９を参照して本実施形態のクロック生成回路の構成を説明する。
【００７４】
周波数／出力タップセレクタ２００は、２つのＡＮＤ回路２０２ａ、２０３ａをもつ。ＡＮＤ回路２０２ａは、出力タップ選択レジスタ１４０のＬＳＢ側６ビットと位相比較器１３０のＵｐ信号とのＡＮＤをとり、その結果が真であるとき”出力タップ選択レジスタ１４０のＭＳＢ側６ビットの変更信号（ＣＵｐＭ）”を出力する。もう一つのＡＮＤ回路２０３ａは、出力タップ選択レジスタ１４０のＬＳＢ側６ビットを反転させたものと位相比較器１３０のＤｗｎ信号とのＡＮＤをとり、その結果が真であるとき”出力タップ選択レジスタ１４０のＭＳＢ側６ビットの変更信号（ＣＤｗｎＭ）”を出力する。
【００７５】
また、周波数／出力タップセレクタ２００は、位相比較器１３０のＵｐ信号を”出力タップ選択レジスタ１４０のＬＳＢ側６ビットの変更信号（ＣＵｐＬ）”として出力し、また、位相比較器１３０のＤｗｎ信号を”出力タップ選択レジスタ１４０のＬＳＢ側６ビットの変更信号（ＣＤｗｎＬ）”として出力する。
【００７６】
さらに、周波数／出力タップセレクタ２００は、２つの比較回路２０４ａ、２０５ａをもつ。比較回路２０４ａは、ユーザー定義の周波数上限レジスタ１６０の値と周波数選択レジスタ１５０の値とを比較し、周波数選択レジスタ１５０の値が周波数上限以下であるとき真値を出力する。もう一つの比較回路２０５ａは、ユーザー定義の周波数下限レジスタ１７０の値と周波数選択レジスタ１５０の値とを比較し、周波数選択レジスタ１５０の値が周波数下限以上であるとき真値を出力する。比較回路２０４ａの出力はＣＵｐＭ信号とＡＮＤがとられ、その結果が”周波数選択レジスタ１５０の変更信号（ＦＵｐ）”として出力される。さらに、もう一つの比較回路２０５ａの出力はＣＵｐＭ信号とＡＮＤがとられ、その結果が”周波数選択レジスタ１５０の変更信号（ＦＤｗｎ）”として出力される。
【００７７】
そして周波数／出力タップセレクタ２００は、周波数選択レジスタ１５０の出力（４ビット）と、ＣＵｐＭ信号（１ビット）およびＣＤｗｎＭ信号（１ビット）の計６ビットを、周波数／出力タップ選択テーブル２１０のＲＯＭアドレス２０１として出力する。
【００７８】
周波数選択レジスタ１５０は、”ＦＵｐ”，”ＦＤｗｎ”，”リセット”の３ビットを入力とし、図１０に示すように、
・”リセット”が入力されたとき値を初期値にする。
・”ＦＵｐ”が入力されたとき値を１増加させる。
・”ＦＤｗｎ”が入力されたとき値を１減少させる。
【００７９】
出力タップ選択レジスタ１４０は、”ＣＵｐ”，”ＣＤｗｎ”，”リセット”の３ビットを入力とし、図１１に示すように、ＬＳＢ側６ビットの値を
・”リセット”が入力されたとき初期値にする。
・”ＣＵｐＬ”が入力されたとき１増加させる。
・”ＣＤｗｎＬ”が入力されたとき１減少させる。
【００８０】
また、出力タップ選択レジスタ１４０は、図１２に示すように、ＭＳＢ側６ビットの値を
・”ＦＵｐ”と”ＣＵｐＬ”が入力されたとき周波数／出力タップ選択テーブル２１０の値を取り込む。
・”ＦＤｗｎ”と”ＣＤｗｎＬ”が入力されると周波数／出力タップ選択テーブル２１０の値を取り込む。
・”ＣＵｐＭ”が入力されたとき増加させる。
・”ＣＤｗｎＭ”が入力されたとき１減少させる。
・それ以外では何もしない。
【００８１】
次に、本実施形態の起動時の動作を説明する。
【００８２】
まず、出力タップ選択レジスタ１４０と周波数選択レジスタ１５０の値がそれぞれの初期値に設定される。例えば、ＶＣＯ３００の発振周波数の初期値として”１ＧＨｚ”、出力タップ位置の初期値として”１０２４番目”を設定する。なお、ＶＣＯ３００は”１．２ＧＨｚ”での動作が実用上可能であるとする。
【００８３】
回路が動作し始めると、周波数選択レジスタ１５０の初期値は実力値より低いので位相比較器１３０はＵｐ信号を出力する。このとき出力タップ選択レジスタ１４０のＬＳＢ側６ビットは”３Ｆ（ｈ）”ではないので周波数／出力タップセレクタ２００の出力は次のようになる。（状態α）
ＦＵｐ    ：  ”０”
ＦＤｗｎ  ：  ”０”
ＣＵｐＬ  ：  ”１”
ＣＤｗｎＬ：  ”０”
ＣＵｐＭ  ：  ”０”
ＣＤｗｎＭ：  ”０”
ＦＵｐ、ＦＤｗｎが出力されないので、周波数選択レジスタ１５０の値は”１ＧＨｚ”のままホールドされ、また、ＦＵｐ、ＦＤｗｎ，ＣＵｐＭ，ＣＤｗｎＭが出力されないので出力タップ選択レジスタ１４０のＭＳＢ側６ビットも初期値のままホールドされる。ＣＵｐＬが出力されたので出力タップ選択レジスタ１４０のＬＳＢ側６ビットは１加算される。
【００８４】
以降のサイクルでも、出力タップ選択レジスタ１４０のＬＳＢ側６ビットが”３Ｆ（ｈ）”にならない限り、出力タップ選択レジスタ１４０のＬＳＢ側６ビットの加算だけが行われ、出力タップ選択レジスタ１４０のＭＳＢ側６ビットと周波数選択レジスタ１５０の値はホールドされる。
【００８５】
出力タップ選択レジスタ１４０のＬＳＢ側６ビットが”３Ｆ（ｈ）”になると、周波数上限レジスタ１６０の値が”１ＧＨｚ”以上であればＦＵｐとＣＵｐＬが出力され、ＣＵｐＭは出力されるが無視される。すなわち、周波数／出力タップセレクタ２００の値は次のようになる。（状態β）
ＦＵｐ    ：  ”１”
ＦＤｗｎ  ：  ”０”
ＣＵｐＬ  ：  ”１”
ＣＤｗｎＬ：  ”０”
ＣＵｐＭ  ：  ”１”
ＣＤｗｎＭ：  ”０”
出力タップ選択レジスタ１４０のＬＳＢ側６ビット”３Ｆ（ｈ）”に１が加算されて”００（ｈ）”になり、出力タップ選択レジスタ１４０のＭＳＢ側６ビットは周波数／出力タップ選択テーブル２１０の値で更新される。一方、周波数選択レジスタ１５０の値は、周波数／出力タップセレクタ２００からＦＵｐが出力されていることで１加算され、”１．1ＧＨｚ”に更新される。
【００８６】
この後、位相比較器１３０の出力が無くなるまで前記の状態α、状態βの動作を繰り返す。また、動作環境が変化して遅延係数Ｋf が変化するとＤＰＬＬのロック条件が変化するので、位相比較器１３０の出力、出力タップ選択レジスタ１４０の値および周波数選択レジスタ１５０の値に従って発振周波数と出力タップ位置の切り替えを前記と同様に行う。
【００８７】
このように本実施形態では、出力タップ選択レジスタ１４０の出力１２ビットのうちの７桁目（１０進数で６４の倍数）の値が変化するときにＶＣＯ３００の発振周波数を変更させるようにしたことで、周波数／出力タップ選択テーブル２１０を構成するＲＯＭの容量を小さくすることができる。
【００８８】
次に、本発明の第３の実施形態を説明する。
【００８９】
第１の実施形態および第２の実施形態では、ＤＰＬＬがロックする出力タップ位置が動作周波数の切り替え点の付近にある場合に頻繁に動作周波数の切り替えが発生するおそれがある。この問題は、周波数／出力タップ選択テーブル２１０における、ＶＣＯ発振周波数を上げるときの閾値と下げるときの閾値をずらすことによって解決できる。
【００９０】
図１３に本実施形態の周波数／出力タップ選択テーブル２１０を示す。また、図１３に示した周波数／出力タップ選択テーブルの一部をグラフにしたものを図６に示す。さらに、図１７に、図１３の周波数／出力タップ選択テーブル２１０からＶＣＯ発振周波数の切り替えに必要な部分を抜き出したものを示す。周波数切り替えを行うタップ位置は任意に選択できるが、周波数切り替え後のタップ位置の数を減らすために、以下のようにＶＣＯ発振周波数を切り替えるタップ位置を決める。
【００９１】
・周波数を下げる切り替え位置は第１の実施形態と同じとする。
・周波数を上げる切り替え位置は、周波数切り替え後に第１の実施形態の周波数切り替え位置に一致するように選択する。
【００９２】
第１の実施形態では周波数と出力タップ位置の組み合わせは図５のように変化するが、本実施形態では図６のように変化する。図５のＡ点付近がＤＰＬＬのロック位置である場合を考える。外気温等の条件のゆらぎにより第１の実施形態では、周波数と出力タップ位置がＡ点とＢ点の付近で移動する。周波数は”１．１ＧＨｚ”と”１．２ＧＨｚ”との間で頻繁に切り替わる。
【００９３】
本実施形態では図６のＡ点付近で動作が安定していた場合、遅延係数Ｋf が少し大きくなると出力タップ位置と周波数の組み合わせをＢ点に切り替える。この後、遅延係数Ｋf が小さくなるとＢ点からＣ点に向かって出力タップ位置を切り替えるが、周波数はＣ点に達するまで切り替えない。同様にＢ点に遷移した後で遅延係数Ｋf が大きくなると、出力タップ位置をＢ点からＤ点に向かって切り替えるが、周波数は変更しない。
【００９４】
周波数が１．１ＧＨｚ→１．２ＧＨｚ→１．１ＧＨｚと切り替わる条件は、第１の実施形態では図５のＡ点で遅延係数Ｋf が増大し、Ｂ点で遅延係数Ｋf が減少することであるが、第３の実施形態では図６のＡ点で遅延係数Ｋf が増大してＢ点に遷移し、Ｂ点で遅延係数Ｋf が減少してＣ点まで遷移し、Ｃ点でさらに遅延係数Ｋf が滅少してＥ点に遷移する必要がある。
【００９５】
ＣＭＯＳ回路では消費電力は動作周波数に比例するので、ＶＣＯ発振周波数を切り替えることで消費電力が変動し、ＬＳＩの温度も消費電力と同様に変動する。温度が変化すると遅延係数Ｋt が変化し、結果として遅延係数Ｋf が変化する。よって、上で書いたような現象は実際に発生し得る。
【００９６】
第１の実施形態で仮定したように、ＶＣＯ発振周波数を切り替え後すぐに動作が安定する場合にはどちらの方法を採用しても問題ないが、周波数切り替え後に動作が安定するまでに時間がかかる場合には第３の実施形態の方式が優れていると考えられる。
【００９７】
周波数とこれを切り替える出力タップ位置との関係は以上挙げられた例に限らない。その他の例を図１４、図１５、図１６に示す。
【００９８】
図１４はＶＣＯ発振周波数を上げるタップ位置を第３の実施形態よりも元のタップ位置と近いタップ位置に変更した例である。図１５は周波数を上げるタップ位置を第３の実施形態よりも元のタップ位置と離れたタップ位置に変更して周波数の切り替えがより起り難くした例である。
【００９９】
図１６は周波数を切り替えるタップ位置を（周波数に依存せず）一定にした例である。これは、周波数切り替え後の最適なタップ位置を選んでおき、遅延定数がほぼ同じとみなせる周波数とタップ位置を遷移先とする方式である。
【０１００】
例えば周波数”１．９ＧＨｚ”で”１１９９番目”のタップが選択されているときにＵｐ信号を受け取ったとき、動作周波数をホールドして
（１１９９＋１）＊（１９／２０）＝１１４０
番目のタップに移動することは、動作周波数”１．９ＧＨｚ”で”１２００番目”のタップに移動したのと遅延定数の観点では等価である。
【０１０１】
同様に周波数”２．０ＧＨｚ”で”１１００番目”のタップを選択しでいてＤｗｎ信号を受け取ったとき、動作周波数をホールドして
（１１００−１）＊（１９／２０）＝１１５６．８…
により、”１１５７番目”のタップに移動することは、周波数”２．０ＧＨｚ”で”１０９９番目”のタップに移動したことと遅延定数の観点ではほぼ等価と言える。
【０１０２】
ＶＣＯ発振周波数の下限（図１６では５００Ｈｚ）では、それより周波数を下げることができないので位相比較器１３０からＤｗｎ信号を受け取るとタップ位置を下げる。ＶＣＯ発振周波数の上限（図１６では２．０ＧＨｚ）ではこれより周波数を上げることができないので位相比較器１３０からＵｐ信号を受け取るとタップ位置を上げる。
【０１０３】
この場合も同一遅延定数曲線を書くことができる。遅延定数が大きくなれば動作周波数は高くなり、同一遅延定数曲線はグラフの右上にくる。
【０１０４】
次に、第４の実施形態を説明する。
【０１０５】
周波数／出力タップ選択テーブル２１０を用いず、直接、周波数／出力タップセレクタ２００が周波数選択レジスタ、出力タップセレクタを生成するようにしてもよい。例えば、周波数／出力タップセレクタ２００の回路を、第２の実施形態の周波数／出力タップ選択テーブル２１０に書き込まれている内容と等価の動作をするように作成する。
【０１０６】
この場合、周波数／出力タップセレクタ２００は、周波数切り替えのタップ位置を示すレジスタ（周波数毎）、周波数切り替え後のタップ位置を指定するレジスタ（周波数毎）、前記レジスタと実際のタップ位置を比較する回路（Exclusive ＮＯＲ回路）により構成する。ここで、周波数切り替えのタップ位置を示すレジスタの内容は図４に相当し、周波数切り替え後のタップ位置を指定するレジスタの内容は図１７に相当するものである。
【０１０７】
本発明は、ノートブック型パーソナルコンピュータのように、従来はＬＳＩの温度を測定することで動作周波数を切り替えていたシステムに適用することができる。これにより温度測定回路やクロック制御回路を簡略化、もしくは省略することができる。
【０１０８】
【発明の効果】
以上説明したように、本発明によれば、動作周波数を動的に変更することのできるクロック生成回路を実現でき、ＬＳＩを、チップ温度や動作電圧の変動に対して安定に、かつそのＬＳＩの実力がより高く発揮されるように動作させることができる。また、チップ温度や動作電圧等の変動によって動作周波数が過度の頻度で切り替わるような現象を抑制でき、動作をより安定化することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るクロック生成回路の構成を示す図。
【図２】図１の周波数選択レジスタの値とＶＣＯ発振周波数との対応表。
【図３】周波数／出力タップ選択テーブルの例。
【図４】図３の周波数／出力タップ選択テーブルから周波数の切り替えに必要な部分を抜き出した例。
【図５】第１の実施形態の動作周波数と出力タップ位置の切り替えの遷移を示すグラフ。
【図６】第３の実施形態の動作周波数と出力タップ位置の切り替えの遷移を示すグラフ。
【図７】第１の実施形態のクロック生成回路の起動時の動作を示す流れ図。
【図８】本発明の第２の実施形態に係るクロック生成回路の構成を示す図。
【図９】図８のクロック生成回路の周波数／出力タップセレクタとその周辺の構成を示す図。
【図１０】図８のクロック生成回路の周波数選択レジスタの動作の流れ図。
【図１１】図８のクロック生成回路の出力タップ選択レジスタのＬＳＢ側６ビットの動作の流れ図。
【図１２】図８のクロック生成回路の出力タップ選択レジスタのＭＳＢ側６ビットの動作の流れ図。
【図１３】第３の実施形態の周波数／出力タップ選択テーブルの例。
【図１４】動作周波数と出力タップ位置の切り替えの遷移を示す他のグラフ。
【図１５】動作周波数と出力タップ位置の切り替えの遷移を示すさらに別のグラフ。
【図１６】動作周波数と出力タップ位置の切り替えの遷移を示すさらに別のグラフ。
【図１７】図１３の周波数／出力タップ選択テーブルからＶＣＯ発振周波数の切り替えに必要な部分を抜き出した例。
【図１８】従来のＤＰＬＬ回路の構成を示す図。
【図１９】基準クロック波形と遅延ゲートの各タップから取り出した出力波形。
【図２０】従来のＤＰＬＬ回路による位相ロック（出力タップ選択処理）の流れ図。
【符号の説明】
１０５…入力バッファ
１１０…遅延ゲート
１１１〜１１ｎ…遅延ゲートの出力タップ
１２０…出力タップセレクタ
１２１，１２２…出力バッファ
１３０…位相比較回路
１４０…出力タップ選択レジスタ
１４１…出力タップ選択信号
１５０…周波数選択レジスタ
１５１…周波数選択信号
２００…周波数／出力タップセレクタ
２０１…周波数／出力タップ選択テーブルのアドレス
２１０…周波数／出力タップ選択テーブル
３００…ＶＣＯ
２０２ａ、２０３ａ…ＡＮＤ回路
２０４ａ、２０５ａ…比較回路
１６０…周波数上限レジスタ
１７０…周波数下限レジスタ
【図１】
0004054147.tif 000002
【図２】
0004054147.tif 000003
【図３】
0004054147.tif 000004
【図４】
0004054147.tif 000005
【図５】
0004054147.tif 000006
【図６】
0004054147.tif 000007
【図７】
0004054147.tif 000008
【図８】
0004054147.tif 000009
【図９】
0004054147.tif 000010
【図１０】
0004054147.tif 000011
【図１１】
0004054147.tif 000012
【図１２】
0004054147.tif 000013
【図１３】
0004054147.tif 000014
【図１４】
0004054147.tif 000015
【図１５】
0004054147.tif 000016
【図１６】
0004054147.tif 000017
【図１７】
0004054147.tif 000018
【図１８】
0004054147.tif 000019
【図１９】
0004054147.tif 000020
【図２０】
0004054147.tif 000021