(57)【特許請求の範囲】
【請求項１】
基準クロックの周波数を検出する回路であって、
スリープクロックの所定の部分の間にわたって、前記基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供するクロックカウンタと、
前記基準クロックサイクルカウント値に基づいて、前記基準クロックの周波数を推定する周波数推定部と、
複数の許容周波数から、推定された前記基準クロックの周波数に最も近い周波数を選択する周波数選択部と
を備え、
前記クロックカウンタは、前記回路の外部から供給される外部スリープクロックが検出された場合、前記スリープクロックとして前記外部スリープクロックを利用し、前記外部スリープクロックが検出されない場合、前記スリープクロックとして前記回路の内部で供給される内部スリープクロックを利用する、回路。
【請求項２】
前記周波数選択部は、前記複数の許容周波数を格納するメモリを有する請求項１に記載の回路。
【請求項３】
前記周波数選択部はさらに、前記最も近い周波数と前記複数の許容周波数のうちの少なくとも一部とを比較するコンパレータを有する請求項２に記載の回路。
【請求項４】
前記回路はさらに、前記外部スリープクロックを前記回路に供給する入力を備える請求項１から３の何れか１項に記載の回路。
【請求項５】
前記スリープクロックの所定の精度は、１％以下である請求項４に記載の回路。
【請求項６】
前記回路はさらに、前記内部スリープクロックを前記回路に供給する入力を備える請求項１から５の何れか１項に記載の回路。
【請求項７】
複数のエンコーダ入力を復号し、前記複数のエンコーダ入力の状態または値に基づき複数の許容周波数群のうち１つの許容周波数群を選択するデコーダをさらに備え、前記複数の許容周波数群はそれぞれ、前記複数の許容周波数のうち一部を含む請求項６に記載の回路。
【請求項８】
前記複数のエンコーダ入力は、少なくとも４つの許容周波数群を符号化し、前記少なくとも４つの許容周波数群はそれぞれ、少なくとも２つの許容周波数を含む請求項７に記載の回路。
【請求項９】
前記周波数選択部は、選択された許容周波数群から、前記推定された基準クロックの周波数に最も近い周波数を選択する請求項７または８に記載の回路。
【請求項１０】
前記スリープクロックの所定の精度は、２５％以下である請求項７から９の何れか１項に記載の回路。
【請求項１１】
前記最も近い周波数を最初の周波数として用いて前記基準クロックにロックするフェーズ・ロックド・ループ（ＰＬＬ）をさらに備える請求項１から１０の何れか１項に記載の回路。
【請求項１２】
前記周波数選択部は、複数の周波数をそれぞれが含む複数の周波数グル―プの中から第１のグル―プを選択し、前記第１のグループに含まれる複数の周波数の中から、推定された前記基準クロックの周波数に最も近い周波数を選択し、
前記複数の周波数グループのそれぞれに含まれる複数の周波数は、１グループに含まれる複数の周波数のスプレッドが、前記内部スリープクロックに見られる周波数精度のばらつきを許容する大きさになるように定められる、請求項１に記載の回路。
【請求項１３】
基準クロックの周波数を決定する方法であって、
スリープクロックの所定の部分の間にわたって、前記基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供する段階と、
前記基準クロックサイクルカウント値および前記スリープクロックの周波数に基づいて、前記基準クロックの周波数を推定する段階と、
複数の許容周波数から、推定された前記基準クロックの周波数に最も近い周波数を選択する段階と
を備え、
前記提供する段階は、外部から供給される外部スリープクロックが検出された場合、前記スリープクロックとして前記外部スリープクロックを利用し、前記外部スリープクロックが検出されない場合、内部で供給される内部スリープクロックを前記スリープクロックとして利用する、方法。
【請求項１４】
前記最も近い周波数をフェーズ・ロックド・ループ（ＰＬＬ）に供給して、前記最も近い周波数を用いて前記ＰＬＬを前記基準クロックにロックさせる段階をさらに備える請求項１３に記載の方法。
【請求項１５】
前記スリープクロックの前記所定の部分は、前記スリープクロックのサイクルまたは位相を整数個含む請求項１３または１４に記載の方法。
【請求項１６】
前記複数の許容周波数をメモリにプログラミングする段階をさらに備える請求項１３から１５の何れか１項に記載の方法。
【請求項１７】
前記外部スリープクロックを利用する場合、前記外部スリープクロックの所定の精度は、１％以下である請求項１３に記載の方法。
【請求項１８】
前記内部スリープクロックを利用する場合、
前記方法はさらに、複数のエンコーダ入力を復号して、複数の許容周波数群のうち１つの許容周波数群を選択する段階を備え、
前記複数の許容周波数群はそれぞれ、前記複数の許容周波数のうち一部を含む請求項１３から１６の何れか１項に記載の方法。
【請求項１９】
前記最も近い周波数は、選択された前記許容周波数群から選択される請求項１８に記載の方法。
【請求項２０】
前記複数のエンコーダ入力は、少なくとも４つの許容周波数群を符号化する請求項１８または１８に記載の方法。
【請求項２１】
前記スリープクロックの所定の精度は、２５％以下である請求項１８から２０の何れか１項に記載の方法。
【請求項２２】
前記選択する段階は、複数の周波数をそれぞれが含む複数の周波数グル―プの中から第１のグル―プを選択し、前記第１のグループに含まれる複数の周波数の中から、推定された前記基準クロックの周波数に最も近い周波数を選択し、
前記複数の周波数グループのそれぞれに含まれる複数の周波数は、１グループに含まれる複数の周波数のスプレッドが、前記内部スリープクロックに見られる周波数精度のばらつきを許容する大きさになるように定められる、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、集積回路に関する。具体的には、本開示の実施形態は、基準クロック周波数の決定および／またはフェーズ・ロックド・ループ（ＰＬＬ）等のループ発振器のロックを行うための回路および方法に関する。
【背景技術】
【０００２】
［関連出願］
本願は、米国特許出願第１２／５７８，５３６号（代理人整理番号：第ＭＰ２９４６号、出願日：２００９年１０月１３日）による恩恵を主張する。当該米国特許出願は、米国特許仮出願第６１／１０６，３７１号（代理人整理番号：第ＭＰ２９４６ＰＲ号、出願日：２００８年１０月１７日）による恩恵を主張する。両出願の内容は全て、参照により本願に組み込まれる。
【０００３】
フェーズ・ロックド・ループ（ＰＬＬ）回路は、集積回路（ＩＣ）全体を伝播する１以上のクロック信号を生成および制御するべく利用され得る。システム・オン・チップ（ＳＯＣ）およびその他のＩＣ設計では、ＰＬＬはロック可能な周波数範囲が限られている。このようにロック可能な周波数範囲が制限されていてもＰＬＬをロックさせるべく、電源投入または初期化の時点において基準クロックの周波数をＰＬＬに供給することによって、出力ＰＬＬクロックを生成するべく基準クロックへのロックを容易にする。
【０００４】
多くのＩＣでは、数多くのさまざまな基準クロック周波数がサポートされている。一例を挙げると、１つのＩＣ（例えば、１つのＳＯＣ）において、最多で１０種類の異なる周波数が許容され得る。複数の異なる基準クロック周波数を符号化するべく４つのストラップピンを利用する方法がある。このような方法では、ＳＯＣ、ＩＣ、および／または、アプリケーションは、１つの特定の基準クロック周波数をサポートするようにプログラミング可能である。しかし、ストラップピンを利用する方法では、外部抵抗を１以上追加で設ける必要があるのでプリント配線基板（ＰＣＢ）スペースが大きくなり、入力バッファ、静電放電（ＥＳＤ）、デコーダ、およびその他の関連回路のためのオンチップスペースが大きくなり、コストが結果として増加してしまうという問題がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の実施形態は、基準クロックの周波数を決定する回路および方法に関する。
【０００６】
本開示の一側面は、基準クロックの周波数を検出する回路であって、スリープクロックの所定の部分の間にわたって、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供するクロックカウンタと、基準クロックサイクルカウント値に基づいて、基準クロックの周波数を推定する周波数推定部と、複数の許容周波数から、推定された基準クロックの周波数に最も近い周波数を選択する周波数選択部とを備える回路に関する。所与の実施形態によると、スリープクロックは、外部スリープクロックである。他の実施形態によると、スリープクロックは、内部スリープクロックである。
【０００７】
内部スリープクロックの場合、当該回路はさらに、複数の入力を復号し、当該入力に基づき複数の許容周波数群のうち１つの許容周波数群を選択するデコーダを備えるとしてよく、複数の許容周波数群はそれぞれ、複数の一意的な許容周波数のうち一部を含む。周波数選択部は、選択される許容周波数群から、推定された基準クロックの周波数に最も近い周波数を選択するとしてよい。
【０００８】
さまざまな実施形態によると、当該回路はさらに、スリープクロックを当該回路に供給する入力、および／または、最も近い周波数を最初の周波数として用いて基準クロックにロックするフェーズ・ロックド・ループ（ＰＬＬ）を備えるとしてよい。また、周波数選択部はさらに、複数の許容周波数を格納するメモリ、および／または、最も近い周波数と複数の許容周波数のうちの少なくとも一部とを比較するコンパレータを有するとしてよい。
【０００９】
本開示の別の側面は、基準クロックの周波数を決定する方法に関する。当該方法は概して、スリープクロックの所定の部分の間にわたって、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供する段階と、基準クロックサイクルカウント値およびスリープクロックの周波数に基づいて、基準クロックの周波数を推定する段階と、複数の許容周波数から、推定された基準クロックの周波数に最も近い周波数を選択する段階とを備える。スリープクロックの所定の部分は、スリープクロックのサイクルまたは位相を整数個含むとしてよい。さまざまな実施形態によると、当該方法はさらに、複数の許容周波数をメモリにプログラミングする段階および／または最も近い周波数をフェーズ・ロックド・ループ（ＰＬＬ）に供給して、最も近い周波数を用いてＰＬＬを基準クロックにロックさせる段階を備える。
【００１０】
別の実施形態によると、スリープクロックは、外部クロックであってもよいし、または、内部クロックであってもよい。内部クロックの場合、当該方法はさらに、複数のエンコーダ入力を復号して、複数の許容周波数群のうち１つの許容周波数群を選択する段階を備えるとしてよい。通常、複数の許容周波数群はそれぞれ、複数の一意的な許容周波数のうち一部を含み、最も近い周波数は通常、選択された許容周波数群から選択される。
【００１１】
本開示に係る回路、アーキテクチャ、システム、方法、アルゴリズム、および、ソフトウェアは、基準クロックの周波数の決定を確実に行いつつ、基準クロック周波数決定専用のストラップピンまたはその他の入力ピンの利用を抑制または不要とするメカニズムを提供するという利点を持つ。このため、本明細書に記載する技術によれば、ＩＣおよびＩＣを含むプリント配線基板の両方の製造コストが低減すると共に、基板スペースが小さくなる。上述およびその他の本発明の利点は、以下に記載するさまざまな実施形態の詳細な説明から容易に明らかとなるであろう。
【図面の簡単な説明】
【００１２】
【図１】本開示のさまざまな実施形態に係るエンコーダ入力を持つ集積回路（ＩＣ）を示す概略ブロック図である。
【００１３】
【図２】本開示の実施形態に係るクロック生成部を示す概略ブロック図である。
【００１４】
【図３】本開示の実施形態に係る基準クロック信号およびスリープクロック信号を示す波形図である。
【００１５】
【図４Ａ】本開示の実施形態に係る第１のクロックキャリブレーション部を示すブロック図である。
【００１６】
【図４Ｂ】本開示の実施形態に係る第２のクロックキャリブレーション部を示すブロック図である。
【００１７】
【図５】本開示の実施形態に係る周波数選択部を示す概略ブロック図である。
【００１８】
【図６Ａ】本開示の実施形態に係る、基準クロック周波数を決定する第１の方法を示すフローチャートである。
【００１９】
【図６Ｂ】本開示の実施形態に係る、基準クロック周波数を決定する第２の方法を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下では、本開示の実施形態を詳細に説明する。本開示の実施形態は添付図面に例示されている。さまざまな実施形態を参照しつつ本発明を説明するが、記載する実施形態は本発明を限定するものではないと理解されたい。逆に、本開示は、特許請求の範囲に記載する請求項が定める本開示の意図および範囲内に含まれる変更例、変形例および均等例を含むものとする。さらに、以下に記載する詳細な説明では、本開示を深く理解していただくべく具体的且つ詳細な事項を数多く挙げて説明している。しかし、本発明は、以下に挙げる具体的且つ詳細な事項を利用せずに実施し得るものである。また、公知の方法、手順、コンポーネント、および、回路については、本発明の側面を不要にあいまいにすることをさけるべく、詳細な説明を省略している。
【００２１】
以下に記載する詳細な説明の一部では、コンピュータ、プロセッサ、コントローラおよび／またはメモリにおけるデータビット、データストリームまたは波形に対する動作をプロセス、プロシージャ、ロジックブロック、機能ブロック、処理等の象徴的な表現を用いている。このような説明および表現は、データ処理分野の当業者同士が作業内容を効率的に伝達する際に一般的に用いられているものである。プロセス、プロシージャ、ロジックブロック、機能、処理等は、本明細書において、そして、一般的に、所望および／または期待される結果を得るための矛盾のない一連のステップまたは命令と考えられている。各ステップでは通常、物理的な量を物理的に操作する。必ずしもそうとは限らないが、このような物理的な量は通常、コンピュータ、データ処理システム、または、論理回路での格納、転送、合成、比較等の操作が可能な電気信号、磁気信号、光学信号、または、量子信号である。上述したような信号については、主に一般的に用いられている用語で表現するため、ビット、波、波形、ストリーム、値、要素、シンボル、文字、項、数字等と呼ぶことが便宜上好ましい場合がある。
【００２２】
上述および同様の用語は全て、適切な物理量と対応付けられ、対応する物理量に割り当てられた便宜上の呼称に過ぎない。具体的に明示していない限り、および／または、以下の記載から明らかであるように、本願において「処理」、「演算」、「算出」、「計算」、「決定」、「操作」、「変換」等の用語で説明される内容は、物理量（例えば、電子量）として表されるデータを操作および変換するコンピュータ、データ処理システム、論理回路、または、同様の処理デバイス（例えば、電気方式、光学方式、または量子方式の演算デバイスまたは処理デバイス）の動作および処理を意味するものと考えられる。上述の用語は、あるシステムまたはアーキテクチャの構成要素（例えば、レジスタ、メモリ、その他の同様の情報格納部、送信デバイス、または表示デバイス等）において物理量を操作または変換して、同一または別のシステムまたはアーキテクチャの別の構成要素において同様に物理量として表現される別のデータを生成する処理デバイスの動作、処理、および／または、プロセスを意味する。
【００２３】
さらに、「信号」および「波形」といった用語は、便宜上同じ意味を持つ用語として利用されるが、関連技術分野で周知の意味も持つものである。また、便宜上、「クロック」、「時間」、「レート」、「期間」、および「周波数」といった用語は、同じ意味を持つ用語として利用され、「データ」、「データストリーム」、および「情報」といった用語も同様に同じ意味を持つ用語として利用され、一般的に、明確に文脈からそうでないと判断できる場合以外は、いずれかの用語を利用すると残りの用語をも含む。「ノード」、「入力」、「出力」、および、「ポート」といった用語は、同じ意味を持つ用語として利用するとしてよく、「接続」、「結合」、「連結」、「通信」といった用語（これらの用語は、明確に文脈からそうでないと判断できる場合以外は、構成要素間の接続、結合、および通信が直接的および／または間接的であることを意味するものである）も同じ意味を持つ用語として利用するとしてよい。しかし、上述した用語は通常、関連技術分野で周知の意味も持つものである。
【００２４】
本開示を、さまざまな側面から、実施形態に基づき以下でさらに詳細に説明する。
【００２５】
特定の実施形態によると、基準クロック周波数が自動的に決定され、対応するフェーズ・ロックド・ループ（ＰＬＬ）は基準クロックに初期化および／またはロックされ得る。例えば、周波数および周波数の精度または公差が公知である「スリープ」クロックを別個に定義して利用することによって、基準クロック周波数を推定することができる。さまざまな実施形態では、周波数推定結果に基づき周波数を選択する際に、スリープクロックがチップあるいはデバイスの内部で生成されるか、または、外部から供給されるスリープクロックを利用するかのいずれであるかに応じて、２つの方法のうちいずれか一方を利用するとしてよい。一般的に、外部から供給されるスリープクロックの周波数は所与の精度の範囲内であり、基準クロック周波数の選択が比較的簡単である。一方、内部で生成されるスリープクロックは通常、精度が比較的低く、その周波数を決定するための処理は、より複雑で、および／または、より厳格になり得る。いずれにしろ、特定の実施形態によれば、いずれかの種類のスリープクロックを利用して、基準クロック周波数を決定することができる。
【００２６】
図１は、本開示の実施形態に係る、エンコーダ入力を持つ集積回路（ＩＣ）を示すブロック図１００である。例えば、ＩＣ１０２は、システム・オン・チップ（ＳＯＣ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準品（ＡＳＳＰ）、プロセッサ（例えば、マイクロプロセッサ、グラフィクスプロセッサ、ビデオプロセッサ、または、デジタル・シグナル・プロセッサ（ＤＳＰ））、コントローラ（例えば、マイクロコントローラ）、チップセット、ネットワーク・インターフェース・チップ（例えば、送受信器、物理層（ＰＨＹ）チップ、メディアアクセスコントローラ（ＭＡＣ）チップ）、ＰＣ周辺機器インターフェースチップ、記憶媒体インターフェースチップ、無線通信チップ（例えば、ＲＦチップ）、または任意のその他の適切な種類のＩＣであってよい。また、エンコーダ入力１０４は外部ピンを含むとしてよい。当該ＩＣに対する入力接続は、特定のバイナリ状態を示すべく、例えば、顧客の好み（例えば、基準クロック周波数）を伝達するべく、ＨｉｇｈまたはＬｏｗに固定される。エンコーダ入力はさらに、任意のその他の適切なプログラミングメカニズム（例えば、ヒューズプログラミング、金属層プログラミング、ＥＰＲＯＭプログラミング、回路基板プログラミング、レジスタプログラミング、ユーザソフトウェアベースのインターフェースプログラミング等）を利用するとしてよい。ＩＣ１０２は、基準クロックを受信し、ＩＣ１０２で利用されるＰＬＬクロックを１以上供給するクロック生成回路１１０を備えるとしてよい。基準クロックは、図１の具体例においてＩＣ１０２に入力されるものとして図示されているが、この構成に代えて、電圧制御発振器（ＶＣＯ）、水晶発振器、ＲＣ発振器、またはその他の適切な発振器を用いてオンチップで生成されるとしてもよい。内部スリープクロック（不図示）が利用可能な場合、一部（例えば、１つ、２つ、３つ）のエンコーダ入力１０４（例えば、１０４−０および１０４−１）を利用して許容周波数群を選択するとしてよい。これについては、より詳細に後述する。エンコーダ入力１０４が外部ピンを含む場合、ＩＣ１０２上に対応して設けられている回路１０６を、ピンバイアス回路１０８（例えば、グラウンドに接続されている抵抗Ｒ１を含む）と共に、さらに利用するとしてよい。例えば、対応する回路１０６は、エンコーダ入力１０４においてデフォルト選択を行うべくプルアップ抵抗を含むとしてよい。デフォルト状態を伝達するためには、その他の種類の回路（例えば、論理回路、ステートマシン等）を利用することもできる。また、エンコーダ入力１０４は、外部ピンを含む場合、時分割多重方式を採用しており、ＩＣ１０２の電源投入段階の後、通常の機能ピン（例えば、Ｉ／Ｏピン、制御信号ピン等）として利用され得る。
【００２７】
＜基準クロック周波数決定回路を含むクロック生成部＞
図２は、本発明の実施形態に係るクロック生成部１１０を示すブロック図である。クロック生成部１１０は通常、ＰＬＬ２０２および初期化回路２１２を備える。ＰＬＬ２０２は、基準クロック（例えば、水晶発振器（不図示）が生成した基準クロックまたは外部ピンまたは外部入力で受信した基準クロック）を受信して、１以上のＰＬＬクロックをＩＣ１０２に供給するとしてよい。ＰＬＬ２０２は周波数ロック範囲が制限されているので、初期化回路２１２は、ＰＬＬ２０２が基準クロックにロックしやすいように、決定された最初の基準クロックの周波数を供給するとしてよい。このようにすることで、ＰＬＬ２０２は、適切な基準クロック周波数にロックする効果が得られるように構成され得る。場合によっては、最初の周波数は、基準クロック周波数と正確に同じではない場合もあるが、最初の周波数と基準クロック周波数との差分がＰＬＬ２０２のロック可能周波数範囲内であれば、ＰＬＬ２０２は適切な基準クロック周波数にロックし得る。
【００２８】
特定の実施形態によると、スリープクロック（例えば、常時バックグラウンドクロックおよび／または低電力モードクロック）を用いて、基準クロックの周波数を推定することができる。所与の実施形態では、周波数が、所与の精度の範囲内、所与の周波数マージン内、または、所与の周波数変動範囲内であり、既知であるクロックであれば、他のどのようなクロックでも利用することができる。推定結果は、ＰＬＬ２０２に信号２１０で供給される基準クロック周波数を選択する際に利用され得る。クロックキャリブレーション部２０４は、基準クロックおよびスリープクロックを受信して、スリープクロックを利用して基準クロック周波数を推定するとしてよい。例えば、クロックキャリブレーション部２０４は、所与のスリープクロック期間にわたって、または、スリープクロックのうち適切な部分の間、基準クロックサイクルの数をカウントして、このクロックカウント数を用いて信号２０８で推定基準クロック周波数を供給する。これが可能となるのは、スリープクロックの周波数が既知であり、精度が既知または所定の値であるからである。例えば、既知であるスリープクロックの周波数は、外部の供給源またはメモリ２１６（例えば、ＲＯＭまたはレジスタ）に格納されている情報から供給され得る。
【００２９】
図２に戻って、周波数選択部２０６は、推定周波数２０８を受信して、メモリ２１４に格納されている複数の所定の周波数から最も近い周波数を選択して、選択結果を信号２１０によってＰＬＬ２０２に送る。例えば、複数の所定の周波数（または許容周波数）は、例えば、約１２ＭＨｚ、約１３ＭＨｚ、約１９．２ＭＨｚ、約２０ＭＨｚ、約２４ＭＨｚ、約２６ＭＨｚ、約３８．４ＭＨｚ、約４０ＭＨｚ、約４４ＭＨｚ、および、約５２ＭＨｚといった周波数を含むとしてよい。ＩＣ１０２は、複数の異なる顧客および／または用途に応じて、このようにさまざまな周波数をサポートしているとしてよい。スリープクロックが外部から供給される場合には、最も近い周波数を選択する際に、許容周波数をグループ分けする必要はない。これに代えて、１以上のコンパレータを用いて、複数の許容周波数から推定基準クロック周波数に最も近い周波数を選択するとしてよい。
【００３０】
周波数選択部２０６はメモリ２１４（例えば、リード・オンリー・メモリ（ＲＯＭ））を有するとしてよく、当該ＲＯＭに格納されるファームウェアまたはその他の情報は、特定の実施形態において、周波数の決定に有用となるように、または、周波数の決定を実施するように構成され得る。別の方法を１つ挙げると、アプリケーション・プログラミング・インターフェース（ＡＰＩ）用のドライバがＲＯＭに格納されることによって、ユーザはホストインターフェースを介して基準クロック周波数情報を明示的に提供できるようになる。また、さまざまな基準クロック周波数について複数の開発バージョンおよび／または顧客バージョンをサポートするべく、ファームウェア（例えば、ハードウェアおよび／またはソフトウェア）またはホストチップから提供されるその他の情報をダウンロードすることができる。別の方法を挙げると、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）が、オンチップまたはオフチップで設けられており、基準クロック周波数を格納するために利用され得る。この場合、基準クロック周波数は、アクセスされるとオンチップＲＯＭに移動させられるとしてよい。
【００３１】
スリープクロックは、ＩＣ１０２に外部から供給されるものとして、および／または、ＩＣ１０２の内部で生成されるものとして図２では図示されている。特定の実施形態では、外部から供給されるスリープクロックが検出されない場合、デフォルトとして内部で供給されるスリープクロックを利用するとしてよい。外部から供給されるスリープクロックは通常、内部で供給されるスリープクロックに比べると周波数の精度が高い。しかし、特定の実施形態では、内部で供給されるスリープクロックのばらつきが許容され得る。例えば、外部スリープクロックは通常、携帯電話システムで利用することができる。しかし、プリンタシステムおよびカメラシステムでは、外部スリープクロックの利用が容易ではない場合があるので、内部スリープクロックが利用され得る。
【００３２】
このように、本発明の実施形態では、スリープクロックを用いて基準クロック周波数を自動的に決定することができる。これは、スリープクロックがＳＯＣに対して内部または外部のいずれから供給されようとも、可能である。この方法によれば、４つ以上のストラップピンを利用するような従来の方法に比べて、コストが小さくなり、ボードが小型化され、ＰＬＬ初期化の信頼性が高くなる。
【００３３】
図３は、基準クロック信号およびスリープクロック信号を示す波形図である。例えば、基準クロック（例えば、波形３０２）の周波数は、約１ＭＨｚから約１００ＭＨｚ（例えば、１０ＭＨｚから５５ＭＨｚ）の範囲内にあり、スリープクロック（例えば、波形３０４）の周波数は、約１ｋＨｚから約１００ｋＨｚ（例えば、２５ｋＨｚから４０ｋＨｚ、一実施例では約３２ｋＨｚ）の範囲内にあるとしてよい。このため、基準クロックの波形３０２は、スリープクロックの波形３０４に比べると、実際の周期またはサイクルが、図３に図示している大きさの約１０分の１から１０００分の１（例えば、約１００分の１）であってよい。外部スリープクロックが供給される場合、周波数の精度は１％以下（例えば、１０００ｐｐｍ（０．１％）未満）であってよい。一実施例によると、外部スリープクロックの所定の精度は、約±２００ｐｍ、つまり、約±０．０２％である。しかし、内部スリープクロックの場合、周波数の精度は、最大で２５％（例えば、約±１５％または±２０％）となり得る。しかし、特定の実施形態では、周波数、周波数同士の関係（例えば、スリープクロックが基準クロックよりも周波数が高い）、および／または、スリープクロックおよび／または基準クロックの精度はどのようなものであっても許容され得る。
【００３４】
＜基準クロック周波数の決定に利用されるクロックキャリブレーション部＞
図４Ａは、本開示のさまざまな実施形態に係る第１のクロックキャリブレーション部を示す概略ブロック図２０４である。本例では、外部スリープクロックが供給されており、クロックカウンタ４０２は、基準クロック３０２およびスリープクロック３０４の両方を受信している。クロックカウンタ４０２は、スリープクロック３０４の所与の部分（例えば、１周期、１位相、複数のスリープクロックサイクル等）の間、基準クロック３０２のサイクルの数をカウントして、基準クロックサイクルカウント値４０６を提供するように構成されている。クロックカウンタ４０２は、スリープクロックのうち利用された特定の部分に基づきカウントするように構成され得る。例えば、スリープクロック３０４のうち１位相がスリープクロックの一部分として利用される場合、カウンタ４０２は、例えば、スリープクロック３０４がＨｉｇｈの場合に、基準クロック３０２のサイクルをカウントするようにイネーブルされ得る。クロックの取り決めおよび／または動作について、適宜上記以外の内容を任意に定めて、既知であるスリープクロックのクロックサイクル時間に対して基準クロックのサイクル数をカウントするとしてよい。周波数推定部４０４は、基準クロックサイクルカウント値４０６を受信して、基準クロックサイクルカウント値４０６および既知であるスリープクロック３０４の周波数（例えば、３２ｋＨｚ）に基づき、推定周波数２０８を提供するとしてよい。既知であるスリープクロックの周波数は、ＩＣ１０２上のメモリ４１６（例えば、ＲＯＭまたはレジスタ）に格納されている情報または外部の供給源から周波数推定部４０４に供給されるとしてよい。このように、自動的に基準クロック周波数を推定した結果は、信号２０８で供給されるとしてよい。ここで図２を再度参照すると、推定基準クロック周波数信号２０８は、（本明細書で説明するように）許容周波数を格納するメモリ２１４を有している周波数選択部２０６に送られるとしてよい。
【００３５】
図４Ｂは、本開示の実施形態に係る第２のクロックキャリブレーション部を示すブロック図２０４´である。具体的には、１以上のエンコーダ入力（例えば、入力１０４−０および１０４−１）を用いて、許容可能な基準クロック周波数または所定の基準クロック周波数のリストを複数のグループ（例えば、４つのグループ）に分割するとしてよい。このため、エンコーダ入力１０４−０および１０４−１は、デコーダ４０８によって復号化されて、周波数群選択信号４１０が、選択された許容基準クロック周波数群（例えば、４つの群のうち１つ）を示すようにするとしてよい。許容基準クロック周波数のグループ分けは、各周波数群が全ての利用可能な許容周波数から作成された部分集合となるように行われるとしてよい。尚、それぞれの周波数群に含まれる許容周波数間のスプレッド（または周波数差分）は、スリープクロックの所与の精度よりもはるかに大きい。例えば、所与の周波数群に含まれる各周波数は、当該周波数群内のほかの周波数との差分が、スリープクロックの所与の精度の２倍以上であるとしてよい。一例を挙げると、スリープクロックの所与の精度が１５％である場合、周波数群に含まれる所与の周波数は、当該周波数群に含まれる周波数のうち、次に低い周波数よりも少なくとも３０％は高く、次に高い周波数よりは少なくとも３０％は低いとしてよい。各周波数群において周波数間の差分をこのように設定することによって、基準クロック周波数の推定値に対して十分な許容誤差が与えられる。これは、この推定値の精度はスリープクロックの精度に基づいて決まるためである。しかし、２つの許容周波数間の差分がスリープクロックの所与の精度未満である（または、スリープクロックの所与の精度よりもわずかに大きい、例えば、スリープクロックの所与の精度の１倍から２倍の間である）場合には、これらの許容周波数は別々の周波数群に入れるのが良い。例えば、このような周波数のグループ分けは、以下の表１に示すように行われるとしてよい。表１では、周波数差分は周波数推定値許容誤差と示している。
【表１】
0005245183.tif 000002
【００３６】
図４Ａの回路と同様に、図４Ｂのクロックカウンタ４０２は、スリープクロックのうち所与の部分の間、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値４０６を提供するとしてよい。図４Ｂの例によると、周波数推定部４０４´は、基準クロックサイクルカウント値４０６および周波数群選択信号４１０を受信して、推定周波数２０８を提供するとしてよい（例えば、図２の周波数選択部２０６に供給されるとしてよい）。図４Ｂを再度参照して説明すると、一実施形態において、推定周波数２０８は、基準クロック周波数とスリープクロック周波数との比である。上述の段落００３１で説明した方法を用いると、基準クロック周波数とスリープクロック周波数との比は、周波数群選択信号４１０で選択される周波数群から最も近い許容周波数を選択する上で十分な精度を持つ。別の実施形態によると、スリープクロック周波数は、メモリ４１６に格納されており、推定周波数２０８を得るべく周波数推定部４０４´に供給される。これに代えて、周波数群選択信号４１０は、基準クロック周波数の選択に利用されるべく格納される（許容された）所与の周波数の数を低減するため、または、検索を絞り込むために、周波数選択部２０６（図２）に直接供給されるとしてよい。上述したように、周波数選択部２０６は、所定の基準クロック周波数または許容可能な基準クロック周波数を格納するべくメモリ２１４を有しているとしてよい。周波数選択部２０６は、メモリ２１４から、許容周波数のうち推定基準クロック周波数２０８に最も近い許容周波数を（例えば、比較回路を用いて）選択するとしてよい。
【００３７】
表１に示した周波数のグループ分けは、一群に含まれる周波数のスプレッドが、内部で供給されるスリープクロックに見られる比較的大きな周波数精度のばらつきを許容する大きさになるように定められる。このため、示されているように、各周波数群に含まれる周波数（例えば、周波数群０に含まれる１２ＭＨｚ、２４ＭＨｚ、および４４ＭＨｚ）を参照することによって、基準クロック周波数を正確に選択することが可能となる。例えば、周波数推定部４０４´は、基準クロックサイクルカウント値４０６に基づき、基準クロックの周波数を１５ＭＨｚと推定する場合がある。周波数選択部２０６は、周波数群０を選択すべき旨を示すストラップピン・デコーダ４０８の情報に基づいて作成される周波数群選択信号４１０を（直接、または、周波数推定部４０４´を介して）受信するとしてよい。この情報に基づき、１２ＭＨｚの基準クロック周波数が、周波数群０のうち推定された１５ＭＨｚに最も近い許容周波数として選択され、信号２１０でＰＬＬ２０２に供給されるとしてよい。例えば、最も近い許容周波数は、比較回路（例えば、図５を参照のこと）に基づき決定され、メモリ２１４に結合されている適切な組み合わせロジックを用いて選択するとしてよい。
【００３８】
このように、周波数精度のばらつきが比較的大きい（例えば、約±１５％）の内部供給スリープクロックを許容しつつも、エンコーダ入力を最小限に抑えて、自動的に基準クロック周波数を推定するとしてよい。外部供給スリープクロックが利用可能である場合、周波数推定値に基づき、外部ストラップピン等のエンコーダ入力を利用することなく、メモリに格納されている所定の周波数／許容周波数の中から、最も近い許容基準クロック周波数を直接選択するとしてよい。
【００３９】
図５は、周波数選択部２０６の一実施形態を示すブロック図である。この具体例では、４つの許容周波数５０２が図示されているが、言うまでもなく、許容周波数の総数、または、（例えば、内部供給スリープクロックの場合に利用される）１つの許容周波数群に含まれる許容周波数の数は任意の値に設定することが可能である。許容周波数５０２−０、５０２−１、５０２−２、および、５０２−３は、メモリ２１４でアクセスされ、対応するコンパレータ５０４−０、５０４−１、５０４−２、および、５０４−３に供給されるとしてよい。各コンパレータ５０４はさらに、推定周波数信号２０８を受信し、それぞれの許容周波数５０２と推定周波数２０８とを比較するとしてよい。コンパレータ５０４−０、５０４−１、５０４−２、および、５０４−３は、推定周波数２０８の値と許容周波数５０２−０、５０２−１、５０２−２、および、５０２−３の値との差分を表す、アナログまたはデジタル方式の出力５１４−０、５１４−１、５１４−２、および５１４−３を供給するとしてよい。所与の周波数群に含まれる許容周波数の値の差異は通常、既知であるスリープクロック周波数の精度またはばらつきよりも大きいので、推定周波数２０８と許容周波数５０２−０、５０２−１、５０２−２、および、５０２−３との比較によって得られる出力５１４−０、５１４−１、５１４−２、および５１４−３はそれぞれ値が異なることになる。
【００４０】
各コンパレータ５０４からの出力５１４−０、５１４−１、５１４−２、および５１４−３は、所定のしきい値と比較するべく、第２のレベルコンパレータ５０６（例えば、対応するコンパレータ５０６−０、５０６−１、５０６−２、および５０６−３）へと供給されるとしてよい。所定のしきい値とは、既知であるスリープクロック周波数の精度またはばらつきに対応する値を持つデジタル信号またはアナログ信号である。所与の周波数群に含まれる許容周波数の値の差異が通常、既知であるスリープクロック周波数の精度またはばらつきよりも大きい場合、出力５１４−０、５１４−１、５１４−２、および５１４−３のうち１つのみの値が所定のしきい値の値よりも小さい。
【００４１】
当業者であれば、このような複数のしきい値コンパレータ段（例えば、しきい値が徐々に小さくなっていくもの）、しきい値が連続した値となっている複数のコンパレータ５０６、および／または、その他のロジックまたは回路を用いて推定周波数２０８に最も近い許容周波数５０２を決定することに想到するであろう。この具体例によると、コンパレータ５０６から出力される出力５１６−０、５１６−１、５１６−２、および５１６−３は、最も近い許容周波数５０２を決定するべくロジック５０８に供給されるとしてよい。一般的に、許容周波数５０２−０、５０２−１、５０２−２、および、５０２−３のうち、出力５１６−０、５１６−１、５１６−２、および５１６−３のうち最も値が小さいものに対応するものが、最も近い許容周波数となる。最も近い許容周波数は選択信号５１０によってマルチプレクサ５１２に対して指示され、最も近い許容周波数５０２が信号２１０で（例えば、図２に示すようにＰＬＬ２０２に入力されるように）出力されるとしてよい。このように、ロジック５０８は、値が最も小さい、または、推定周波数２０８に最も近い許容周波数５０２を示すコンパレータ出力５１６に応じて許容周波数選択信号５１０を供給するように構成されるとしてよい。
【００４２】
＜基準クロック周波数を決定する方法＞
図６Ａは、本開示の実施形態に応じた基準クロック周波数を決定する第１の方法を示すフローチャート６００である。６０２において、一連の処理が開始される。６０４において、許容可能な基準クロックの周波数がメモリにプログラムされるとしてよい。例えば、特定のＩＣがサポートしている顧客および／またはアプリケーション毎に、基準クロック周波数を、図２に示すメモリ２１４に（例えば、金属、ヒューズ、ユーザインターフェース等を用いて）プログラミングするとしてよい。従来のクロック検出回路は、ＩＣに外部スリープクロックがあるか否かを（例えば、対応するピン、Ｉ／Ｏ端末、または、入力バッファにおいて所定期間中に外部スリープクロック信号の遷移があるか否かを検出することによって）判断して、６０６において、外部スリープクロックが検出されない場合には、図６Ｂに示すように内部スリープクロックが利用されるとしてよい。６０６において、外部スリープクロックが検出されれば、６０８において、外部スリープクロックの所定の部分（例えば、１位相、１サイクル、または、その他の部分の１つ分）における基準クロックのサイクル数をカウントするとしてよい。６１０において、この基準クロックサイクルカウント値に基づき、基準クロックの周波数を推定するとしてよい。６１２において、当該方法はさらに、推定周波数に最も近い許容周波数を選択する段階を含む。一実施形態によると、ＩＣ上のＲＯＭに前もって複数の許容周波数をプログラミングしておくとしてよく、多岐にわたる顧客および／またはアプリケーションのうち１以上をサポートするべく、特定の許容周波数の値を選択するとしてよい。６１４において、ロック周波数を目標として、ＰＬＬが基準クロックにロックし易くなるように、選択された周波数をＰＬＬに送るとしてよい。６１６において、一連の処理の実行は完了する。
【００４３】
上述したように、外部から供給されるスリープクロックは、内部で供給されるスリープクロックに比べて周波数の精度が高いので、この点において最初の選択肢となり得る。しかし、一部のアプリケーションでは外部からはスリープクロックが供給されない場合があるので、特定の実施形態では、デフォルトの内部生成スリープクロックもまた許容され得る。
【００４４】
図６Ｂは、基準クロック周波数を決定する第２の方法を示すフローチャート６００´である。６５２において、一連の処理が開始される。６５４において、内部スリープクロックの一部分（例えば、１位相、１サイクル、または、クロックサイクルのうちその他の所定の部分）における基準クロックのサイクル数をカウントする。６５６において、スリープクロックの周波数は既知であるので、基準クロックの周波数をこの基準クロックサイクルカウント値に基づき推定するとしてよい。６５８において、エンコーダ入力（例えば、ストラップピンまたはその他の固定値入力）を（例えば、図４Ｂのデコーダ４０８を用いて）復号化して、周波数群を決定するとしてよい。例えば、表１を参照しつつ上述したように、周波数をグループ分けするとしてよい。６６０において、選択された周波数群から推定周波数に最も近い許容周波数を選択するとしてよい。６６２において、ロック周波数を目標として、ＰＬＬが基準クロックにロックし易くなるように、選択された周波数をＰＬＬに送るとしてよい。６６４において、一連の処理の実行が完了する。
【００４５】
場合によっては、プログラムされた基準クロックの周波数を単に格納するために、ＥＥＰＲＯＭ、または、その他の不揮発性メモリあるいは再プログラミング可能なメモリを利用するとしてもよい。この場合、図６Ａおよび図６Ｂに示した一連の処理の一部（例えば、フローブロックのうち１以上）は省略してもよく、基準クロック周波数値を単に、対応するチップロジックによって、ＰＬＬに渡すとしてもよい。
【００４６】
ファームウェアおよび／またはＲＯＭコードを利用して、命令を格納したり、および／または、ＰＬＬが目標基準クロック周波数を受信するタイミングおよびＰＬＬがロック手順を開始することができるタイミングを制御するとしてよい。例えば、ＲＯＭコードは、ＰＬＬキャリブレーション・ビジー・レジスタ・ビットがアクティブ化される（例えば、「０」に設定される）まで待機している間、ＰＬＬキャリブレーション開始レジスタ・ビットを設定する（例えば、アクティブ状態に設定する）としてよい。ＰＬＬキャリブレーション・ロック・レジスタ・ビットは、アクティブ状態（例えば、値「１」）が検出されるまでチェックされることによって、ＰＬＬが基準クロックに適切にロックしていることを示す。ＰＬＬが基準クロックにロックしてＩＣに対して適切なＰＬＬクロック出力を生成している場合、ファームウェアおよび／またはＲＯＭコードはＩＣクロックからＰＬＬクロックへと切り替えるとしてよい。これは、クロックイネーブル信号をアクティブ化してＰＬＬからの出力を選択することによって実現され得る。
【００４７】
ＰＬＬキャリブレーション・ビジー・レジスタ・ビットがアクティブ状態から変わらず（例えば、Ｈｉｇｈ論理状態またはＨｉｇｈ論理レベルに固定されてしまい）、ＲＯＭコードに無限に待機させている場合、故障またはエラーが発生する可能性がある。このような問題は、ＰＬＬキャリブレーション・ビジー・レジスタ・ビットがアクティブ状態に設定される（例えば、Ｌｏｗ論理状態またはＬｏｗ論理レベルになる）もののＰＬＬキャリブレーション・ロック・レジスタ・ビットが非アクティブのままである（例えば、Ｌｏｗ状態に固定されている）場合にも発生し得る。このようなエラーは、基準クロックがデフォルトチップクロックとして使用されている間にデバッガを利用してＲＯＭコードを中断することによって修正され得る。（例えば、ＰＬＬキャリブレーション・ロック・ビットがアクティブ状態になることによって示されるように）ＰＬＬが適切に基準クロックにロックすれば、ＲＯＭコードはチップクロックをＰＬＬクロックに切り替える。
【００４８】
＜ソフトウェアの例＞
本開示はさらに、上述の方法のステップのうち１以上および／または上述のハードウェアの動作のうち１以上の動作を実行するように構成されている従来のデジタル・シグナル・プロセッサが備えられた汎用のコンピュータまたはワークステーションで実施可能および／または実行可能であるアルゴリズム、コンピュータプログラム、および／または、ソフトウェアを含む。このため、本開示の別の側面は、上述の方法を実施するためのアルゴリズムおよび／またはソフトウェアに関する。例えば、本開示はさらに、適切な処理デバイス（例えば、マイクロコントローラ、マイクロプロセッサ、または、ＤＳＰデバイス等の信号処理デバイス）で実行されると、上述の方法および／またはアルゴリズムを実行するよう構成されている一連の命令を含むコンピュータプログラム、コンピュータ可読媒体、または波形に関するとしてよい。
【００４９】
例えば、コンピュータプログラムは、任意の種類の可読媒体に格納されているとしてよい。コンピュータ可読媒体は、当該媒体に対して読出を行い、格納されているコードを実行するように構成されている処理デバイスによる読出が可能な任意の媒体を含むとしてよく、例えば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、磁気テープ、または、ハードディスクドライブが例示される。このようなコードは、オブジェクトコード、ソースコード、および／または、バイナリコードを含むとしてよい。
【００５０】
波形は通常、銅線、従来のツイスト・ペア線、従来のネットワークケーブル、従来の光データ送信ケーブル、または、大気あるいは真空（例えば、大気圏外空間）等、無線信号送信に適切な媒体を通って送信されるように構成されている。本発明に係る方法を実施するための波形および／またはコードは、通常デジタル波形であり、従来のデジタルデータプロセッサ（例えば、マイクロプロセッサ、マイクロコントローラ、または、プログラマブル・ゲート・アレイ、プログラマブル論理回路／論理デバイスあるいは特定用途向け（集積）回路等の論理回路）で処理されるように通常構成されている。
【００５１】
＜結論／要約＞
このように、本開示の実施形態は、基準クロック周波数の決定および／またはフェーズ・ロックド・ループ（ＰＬＬ）等のループ発振器のロックを行うための回路、アーキテクチャ、システム、方法、アルゴリズム、および、ソフトウェアを提供する。例えば、上述の回路および方法によって、比較的簡単なロジックを用いつつも、内部または外部から供給されるスリープクロック信号のいずれかを用いて基準クロック周波数を正確および／または確実に決定することができるようになる。上述のアーキテクチャおよびシステムは通常、上記の回路の側面のうち１以上を含み、上記のアルゴリズムおよびソフトウェアは通常、上記の方法の側面のうち１以上を含む。
【００５２】
本開示の具体的な実施形態を上述したが、本開示の例示および説明を目的としたものである。上述した本開示の具体的な実施形態は、本開示の内容を網羅したものではなく、また、開示した形態に正確に一致するものに本開示を限定するものでもなく、上述の教示内容を鑑みると多くの点で変形および変更が可能であることは明らかである。上述の実施形態は、本開示の原理および本開示の実用化を最も良く説明するものとして選択および記載されたものである。このため、当業者であれば、上述の実施形態を参照することによって、本開示内容およびさまざまな実施形態を、特定の用途に適合化されているさまざまな変形例と共に、最大限有効活用することができる。本発明の範囲は、特許請求の範囲に記載されている請求項およびその均等物によって定義されるものとする。
【図１】
0005245183.tif 000003
【図２】
0005245183.tif 000004
【図３】
0005245183.tif 000005
【図４Ａ】
0005245183.tif 000006
【図４Ｂ】
0005245183.tif 000007
【図５】
0005245183.tif 000008
【図６Ａ】
0005245183.tif 000009
【図６Ｂ】
0005245183.tif 000010