説明

基準クロック周波数の決定および/またはループ発振器のロックを行うための方法、アルゴリズム、回路、およびシステム

【解決手段】 基準クロックの周波数を決定する装置、方法、システム、アルゴリズム、および回路を開示する。一実施形態によると、基準クロックの周波数を検出する回路であって、周波数が既知であり、精度は所定の値であるスリープクロックの所定の部分の間、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を得るクロックカウンタと、基準クロックサイクルカウント値および既知であるスリープクロックの周波数に基づいて、基準クロックの周波数を推定する周波数推定部と、複数の許容周波数から、推定された基準クロックの周波数に最も近い周波数を選択する周波数選択部とを備える回路が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は概して、集積回路に関する。具体的には、本開示の実施形態は、基準クロック周波数の決定および/またはフェーズ・ロックド・ループ(PLL)等のループ発振器のロックを行うための回路および方法に関する。
【背景技術】
【0002】
[関連出願]
本願は、米国特許出願第12/578,536号(代理人整理番号:第MP2946号、出願日:2009年10月13日)による恩恵を主張する。当該米国特許出願は、米国特許仮出願第61/106,371号(代理人整理番号:第MP2946PR号、出願日:2008年10月17日)による恩恵を主張する。両出願の内容は全て、参照により本願に組み込まれる。
【0003】
フェーズ・ロックド・ループ(PLL)回路は、集積回路(IC)全体を伝播する1以上のクロック信号を生成および制御するべく利用され得る。システム・オン・チップ(SOC)およびその他のIC設計では、PLLはロック可能な周波数範囲が限られている。このようにロック可能な周波数範囲が制限されていてもPLLをロックさせるべく、電源投入または初期化の時点において基準クロックの周波数をPLLに供給することによって、出力PLLクロックを生成するべく基準クロックへのロックを容易にする。
【0004】
多くのICでは、数多くのさまざまな基準クロック周波数がサポートされている。一例を挙げると、1つのIC(例えば、1つのSOC)において、最多で10種類の異なる周波数が許容され得る。複数の異なる基準クロック周波数を符号化するべく4つのストラップピンを利用する方法がある。このような方法では、SOC、IC、および/または、アプリケーションは、1つの特定の基準クロック周波数をサポートするようにプログラミング可能である。しかし、ストラップピンを利用する方法では、外部抵抗を1以上追加で設ける必要があるのでプリント配線基板(PCB)スペースが大きくなり、入力バッファ、静電放電(ESD)、デコーダ、およびその他の関連回路のためのオンチップスペースが大きくなり、コストが結果として増加してしまうという問題がある。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の実施形態は、基準クロックの周波数を決定する回路および方法に関する。
【0006】
本開示の一側面は、基準クロックの周波数を検出する回路であって、スリープクロックの所定の部分の間にわたって、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供するクロックカウンタと、基準クロックサイクルカウント値に基づいて、基準クロックの周波数を推定する周波数推定部と、複数の許容周波数から、推定された基準クロックの周波数に最も近い周波数を選択する周波数選択部とを備える回路に関する。所与の実施形態によると、スリープクロックは、外部スリープクロックである。他の実施形態によると、スリープクロックは、内部スリープクロックである。
【0007】
内部スリープクロックの場合、当該回路はさらに、複数の入力を復号し、当該入力に基づき複数の許容周波数群のうち1つの許容周波数群を選択するデコーダを備えるとしてよく、複数の許容周波数群はそれぞれ、複数の一意的な許容周波数のうち一部を含む。周波数選択部は、選択される許容周波数群から、推定された基準クロックの周波数に最も近い周波数を選択するとしてよい。
【0008】
さまざまな実施形態によると、当該回路はさらに、スリープクロックを当該回路に供給する入力、および/または、最も近い周波数を最初の周波数として用いて基準クロックにロックするフェーズ・ロックド・ループ(PLL)を備えるとしてよい。また、周波数選択部はさらに、複数の許容周波数を格納するメモリ、および/または、最も近い周波数と複数の許容周波数のうちの少なくとも一部とを比較するコンパレータを有するとしてよい。
【0009】
本開示の別の側面は、基準クロックの周波数を決定する方法に関する。当該方法は概して、スリープクロックの所定の部分の間にわたって、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供する段階と、基準クロックサイクルカウント値およびスリープクロックの周波数に基づいて、基準クロックの周波数を推定する段階と、複数の許容周波数から、推定された基準クロックの周波数に最も近い周波数を選択する段階とを備える。スリープクロックの所定の部分は、スリープクロックのサイクルまたは位相を整数個含むとしてよい。さまざまな実施形態によると、当該方法はさらに、複数の許容周波数をメモリにプログラミングする段階および/または最も近い周波数をフェーズ・ロックド・ループ(PLL)に供給して、最も近い周波数を用いてPLLを基準クロックにロックさせる段階を備える。
【0010】
別の実施形態によると、スリープクロックは、外部クロックであってもよいし、または、内部クロックであってもよい。内部クロックの場合、当該方法はさらに、複数のエンコーダ入力を復号して、複数の許容周波数群のうち1つの許容周波数群を選択する段階を備えるとしてよい。通常、複数の許容周波数群はそれぞれ、複数の一意的な許容周波数のうち一部を含み、最も近い周波数は通常、選択された許容周波数群から選択される。
【0011】
本開示に係る回路、アーキテクチャ、システム、方法、アルゴリズム、および、ソフトウェアは、基準クロックの周波数の決定を確実に行いつつ、基準クロック周波数決定専用のストラップピンまたはその他の入力ピンの利用を抑制または不要とするメカニズムを提供するという利点を持つ。このため、本明細書に記載する技術によれば、ICおよびICを含むプリント配線基板の両方の製造コストが低減すると共に、基板スペースが小さくなる。上述およびその他の本発明の利点は、以下に記載するさまざまな実施形態の詳細な説明から容易に明らかとなるであろう。
【図面の簡単な説明】
【0012】
【図1】本開示のさまざまな実施形態に係るエンコーダ入力を持つ集積回路(IC)を示す概略ブロック図である。
【0013】
【図2】本開示の実施形態に係るクロック生成部を示す概略ブロック図である。
【0014】
【図3】本開示の実施形態に係る基準クロック信号およびスリープクロック信号を示す波形図である。
【0015】
【図4A】本開示の実施形態に係る第1のクロックキャリブレーション部を示すブロック図である。
【0016】
【図4B】本開示の実施形態に係る第2のクロックキャリブレーション部を示すブロック図である。
【0017】
【図5】本開示の実施形態に係る周波数選択部を示す概略ブロック図である。
【0018】
【図6A】本開示の実施形態に係る、基準クロック周波数を決定する第1の方法を示すフローチャートである。
【0019】
【図6B】本開示の実施形態に係る、基準クロック周波数を決定する第2の方法を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下では、本開示の実施形態を詳細に説明する。本開示の実施形態は添付図面に例示されている。さまざまな実施形態を参照しつつ本発明を説明するが、記載する実施形態は本発明を限定するものではないと理解されたい。逆に、本開示は、特許請求の範囲に記載する請求項が定める本開示の意図および範囲内に含まれる変更例、変形例および均等例を含むものとする。さらに、以下に記載する詳細な説明では、本開示を深く理解していただくべく具体的且つ詳細な事項を数多く挙げて説明している。しかし、本発明は、以下に挙げる具体的且つ詳細な事項を利用せずに実施し得るものである。また、公知の方法、手順、コンポーネント、および、回路については、本発明の側面を不要にあいまいにすることをさけるべく、詳細な説明を省略している。
【0021】
以下に記載する詳細な説明の一部では、コンピュータ、プロセッサ、コントローラおよび/またはメモリにおけるデータビット、データストリームまたは波形に対する動作をプロセス、プロシージャ、ロジックブロック、機能ブロック、処理等の象徴的な表現を用いている。このような説明および表現は、データ処理分野の当業者同士が作業内容を効率的に伝達する際に一般的に用いられているものである。プロセス、プロシージャ、ロジックブロック、機能、処理等は、本明細書において、そして、一般的に、所望および/または期待される結果を得るための矛盾のない一連のステップまたは命令と考えられている。各ステップでは通常、物理的な量を物理的に操作する。必ずしもそうとは限らないが、このような物理的な量は通常、コンピュータ、データ処理システム、または、論理回路での格納、転送、合成、比較等の操作が可能な電気信号、磁気信号、光学信号、または、量子信号である。上述したような信号については、主に一般的に用いられている用語で表現するため、ビット、波、波形、ストリーム、値、要素、シンボル、文字、項、数字等と呼ぶことが便宜上好ましい場合がある。
【0022】
上述および同様の用語は全て、適切な物理量と対応付けられ、対応する物理量に割り当てられた便宜上の呼称に過ぎない。具体的に明示していない限り、および/または、以下の記載から明らかであるように、本願において「処理」、「演算」、「算出」、「計算」、「決定」、「操作」、「変換」等の用語で説明される内容は、物理量(例えば、電子量)として表されるデータを操作および変換するコンピュータ、データ処理システム、論理回路、または、同様の処理デバイス(例えば、電気方式、光学方式、または量子方式の演算デバイスまたは処理デバイス)の動作および処理を意味するものと考えられる。上述の用語は、あるシステムまたはアーキテクチャの構成要素(例えば、レジスタ、メモリ、その他の同様の情報格納部、送信デバイス、または表示デバイス等)において物理量を操作または変換して、同一または別のシステムまたはアーキテクチャの別の構成要素において同様に物理量として表現される別のデータを生成する処理デバイスの動作、処理、および/または、プロセスを意味する。
【0023】
さらに、「信号」および「波形」といった用語は、便宜上同じ意味を持つ用語として利用されるが、関連技術分野で周知の意味も持つものである。また、便宜上、「クロック」、「時間」、「レート」、「期間」、および「周波数」といった用語は、同じ意味を持つ用語として利用され、「データ」、「データストリーム」、および「情報」といった用語も同様に同じ意味を持つ用語として利用され、一般的に、明確に文脈からそうでないと判断できる場合以外は、いずれかの用語を利用すると残りの用語をも含む。「ノード」、「入力」、「出力」、および、「ポート」といった用語は、同じ意味を持つ用語として利用するとしてよく、「接続」、「結合」、「連結」、「通信」といった用語(これらの用語は、明確に文脈からそうでないと判断できる場合以外は、構成要素間の接続、結合、および通信が直接的および/または間接的であることを意味するものである)も同じ意味を持つ用語として利用するとしてよい。しかし、上述した用語は通常、関連技術分野で周知の意味も持つものである。
【0024】
本開示を、さまざまな側面から、実施形態に基づき以下でさらに詳細に説明する。
【0025】
特定の実施形態によると、基準クロック周波数が自動的に決定され、対応するフェーズ・ロックド・ループ(PLL)は基準クロックに初期化および/またはロックされ得る。例えば、周波数および周波数の精度または公差が公知である「スリープ」クロックを別個に定義して利用することによって、基準クロック周波数を推定することができる。さまざまな実施形態では、周波数推定結果に基づき周波数を選択する際に、スリープクロックがチップあるいはデバイスの内部で生成されるか、または、外部から供給されるスリープクロックを利用するかのいずれであるかに応じて、2つの方法のうちいずれか一方を利用するとしてよい。一般的に、外部から供給されるスリープクロックの周波数は所与の精度の範囲内であり、基準クロック周波数の選択が比較的簡単である。一方、内部で生成されるスリープクロックは通常、精度が比較的低く、その周波数を決定するための処理は、より複雑で、および/または、より厳格になり得る。いずれにしろ、特定の実施形態によれば、いずれかの種類のスリープクロックを利用して、基準クロック周波数を決定することができる。
【0026】
図1は、本開示の実施形態に係る、エンコーダ入力を持つ集積回路(IC)を示すブロック図100である。例えば、IC102は、システム・オン・チップ(SOC)、特定用途向け集積回路(ASIC)、特定用途向け標準品(ASSP)、プロセッサ(例えば、マイクロプロセッサ、グラフィクスプロセッサ、ビデオプロセッサ、または、デジタル・シグナル・プロセッサ(DSP))、コントローラ(例えば、マイクロコントローラ)、チップセット、ネットワーク・インターフェース・チップ(例えば、送受信器、物理層(PHY)チップ、メディアアクセスコントローラ(MAC)チップ)、PC周辺機器インターフェースチップ、記憶媒体インターフェースチップ、無線通信チップ(例えば、RFチップ)、または任意のその他の適切な種類のICであってよい。また、エンコーダ入力104は外部ピンを含むとしてよい。当該ICに対する入力接続は、特定のバイナリ状態を示すべく、例えば、顧客の好み(例えば、基準クロック周波数)を伝達するべく、HighまたはLowに固定される。エンコーダ入力はさらに、任意のその他の適切なプログラミングメカニズム(例えば、ヒューズプログラミング、金属層プログラミング、EPROMプログラミング、回路基板プログラミング、レジスタプログラミング、ユーザソフトウェアベースのインターフェースプログラミング等)を利用するとしてよい。IC102は、基準クロックを受信し、IC102で利用されるPLLクロックを1以上供給するクロック生成回路110を備えるとしてよい。基準クロックは、図1の具体例においてIC102に入力されるものとして図示されているが、この構成に代えて、電圧制御発振器(VCO)、水晶発振器、RC発振器、またはその他の適切な発振器を用いてオンチップで生成されるとしてもよい。内部スリープクロック(不図示)が利用可能な場合、一部(例えば、1つ、2つ、3つ)のエンコーダ入力104(例えば、104−0および104−1)を利用して許容周波数群を選択するとしてよい。これについては、より詳細に後述する。エンコーダ入力104が外部ピンを含む場合、IC102上に対応して設けられている回路106を、ピンバイアス回路108(例えば、グラウンドに接続されている抵抗R1を含む)と共に、さらに利用するとしてよい。例えば、対応する回路106は、エンコーダ入力104においてデフォルト選択を行うべくプルアップ抵抗を含むとしてよい。デフォルト状態を伝達するためには、その他の種類の回路(例えば、論理回路、ステートマシン等)を利用することもできる。また、エンコーダ入力104は、外部ピンを含む場合、時分割多重方式を採用しており、IC102の電源投入段階の後、通常の機能ピン(例えば、I/Oピン、制御信号ピン等)として利用され得る。
【0027】
<基準クロック周波数決定回路を含むクロック生成部>
図2は、本発明の実施形態に係るクロック生成部110を示すブロック図である。クロック生成部110は通常、PLL202および初期化回路212を備える。PLL202は、基準クロック(例えば、水晶発振器(不図示)が生成した基準クロックまたは外部ピンまたは外部入力で受信した基準クロック)を受信して、1以上のPLLクロックをIC102に供給するとしてよい。PLL202は周波数ロック範囲が制限されているので、初期化回路212は、PLL202が基準クロックにロックしやすいように、決定された最初の基準クロックの周波数を供給するとしてよい。このようにすることで、PLL202は、適切な基準クロック周波数にロックする効果が得られるように構成され得る。場合によっては、最初の周波数は、基準クロック周波数と正確に同じではない場合もあるが、最初の周波数と基準クロック周波数との差分がPLL202のロック可能周波数範囲内であれば、PLL202は適切な基準クロック周波数にロックし得る。
【0028】
特定の実施形態によると、スリープクロック(例えば、常時バックグラウンドクロックおよび/または低電力モードクロック)を用いて、基準クロックの周波数を推定することができる。所与の実施形態では、周波数が、所与の精度の範囲内、所与の周波数マージン内、または、所与の周波数変動範囲内であり、既知であるクロックであれば、他のどのようなクロックでも利用することができる。推定結果は、PLL202に信号210で供給される基準クロック周波数を選択する際に利用され得る。クロックキャリブレーション部204は、基準クロックおよびスリープクロックを受信して、スリープクロックを利用して基準クロック周波数を推定するとしてよい。例えば、クロックキャリブレーション部204は、所与のスリープクロック期間にわたって、または、スリープクロックのうち適切な部分の間、基準クロックサイクルの数をカウントして、このクロックカウント数を用いて信号208で推定基準クロック周波数を供給する。これが可能となるのは、スリープクロックの周波数が既知であり、精度が既知または所定の値であるからである。例えば、既知であるスリープクロックの周波数は、外部の供給源またはメモリ216(例えば、ROMまたはレジスタ)に格納されている情報から供給され得る。
【0029】
図2に戻って、周波数選択部206は、推定周波数208を受信して、メモリ214に格納されている複数の所定の周波数から最も近い周波数を選択して、選択結果を信号210によってPLL202に送る。例えば、複数の所定の周波数(または許容周波数)は、例えば、約12MHz、約13MHz、約19.2MHz、約20MHz、約24MHz、約26MHz、約38.4MHz、約40MHz、約44MHz、および、約52MHzといった周波数を含むとしてよい。IC102は、複数の異なる顧客および/または用途に応じて、このようにさまざまな周波数をサポートしているとしてよい。スリープクロックが外部から供給される場合には、最も近い周波数を選択する際に、許容周波数をグループ分けする必要はない。これに代えて、1以上のコンパレータを用いて、複数の許容周波数から推定基準クロック周波数に最も近い周波数を選択するとしてよい。
【0030】
周波数選択部206はメモリ214(例えば、リード・オンリー・メモリ(ROM))を有するとしてよく、当該ROMに格納されるファームウェアまたはその他の情報は、特定の実施形態において、周波数の決定に有用となるように、または、周波数の決定を実施するように構成され得る。別の方法を1つ挙げると、アプリケーション・プログラミング・インターフェース(API)用のドライバがROMに格納されることによって、ユーザはホストインターフェースを介して基準クロック周波数情報を明示的に提供できるようになる。また、さまざまな基準クロック周波数について複数の開発バージョンおよび/または顧客バージョンをサポートするべく、ファームウェア(例えば、ハードウェアおよび/またはソフトウェア)またはホストチップから提供されるその他の情報をダウンロードすることができる。別の方法を挙げると、電気的消去可能ROM(EEPROM)が、オンチップまたはオフチップで設けられており、基準クロック周波数を格納するために利用され得る。この場合、基準クロック周波数は、アクセスされるとオンチップROMに移動させられるとしてよい。
【0031】
スリープクロックは、IC102に外部から供給されるものとして、および/または、IC102の内部で生成されるものとして図2では図示されている。特定の実施形態では、外部から供給されるスリープクロックが検出されない場合、デフォルトとして内部で供給されるスリープクロックを利用するとしてよい。外部から供給されるスリープクロックは通常、内部で供給されるスリープクロックに比べると周波数の精度が高い。しかし、特定の実施形態では、内部で供給されるスリープクロックのばらつきが許容され得る。例えば、外部スリープクロックは通常、携帯電話システムで利用することができる。しかし、プリンタシステムおよびカメラシステムでは、外部スリープクロックの利用が容易ではない場合があるので、内部スリープクロックが利用され得る。
【0032】
このように、本発明の実施形態では、スリープクロックを用いて基準クロック周波数を自動的に決定することができる。これは、スリープクロックがSOCに対して内部または外部のいずれから供給されようとも、可能である。この方法によれば、4つ以上のストラップピンを利用するような従来の方法に比べて、コストが小さくなり、ボードが小型化され、PLL初期化の信頼性が高くなる。
【0033】
図3は、基準クロック信号およびスリープクロック信号を示す波形図である。例えば、基準クロック(例えば、波形302)の周波数は、約1MHzから約100MHz(例えば、10MHzから55MHz)の範囲内にあり、スリープクロック(例えば、波形304)の周波数は、約1kHzから約100kHz(例えば、25kHzから40kHz、一実施例では約32kHz)の範囲内にあるとしてよい。このため、基準クロックの波形302は、スリープクロックの波形304に比べると、実際の周期またはサイクルが、図3に図示している大きさの約10分の1から1000分の1(例えば、約100分の1)であってよい。外部スリープクロックが供給される場合、周波数の精度は1%以下(例えば、1000ppm(0.1%)未満)であってよい。一実施例によると、外部スリープクロックの所定の精度は、約±200pm、つまり、約±0.02%である。しかし、内部スリープクロックの場合、周波数の精度は、最大で25%(例えば、約±15%または±20%)となり得る。しかし、特定の実施形態では、周波数、周波数同士の関係(例えば、スリープクロックが基準クロックよりも周波数が高い)、および/または、スリープクロックおよび/または基準クロックの精度はどのようなものであっても許容され得る。
【0034】
<基準クロック周波数の決定に利用されるクロックキャリブレーション部>
図4Aは、本開示のさまざまな実施形態に係る第1のクロックキャリブレーション部を示す概略ブロック図204である。本例では、外部スリープクロックが供給されており、クロックカウンタ402は、基準クロック302およびスリープクロック304の両方を受信している。クロックカウンタ402は、スリープクロック304の所与の部分(例えば、1周期、1位相、複数のスリープクロックサイクル等)の間、基準クロック302のサイクルの数をカウントして、基準クロックサイクルカウント値406を提供するように構成されている。クロックカウンタ402は、スリープクロックのうち利用された特定の部分に基づきカウントするように構成され得る。例えば、スリープクロック304のうち1位相がスリープクロックの一部分として利用される場合、カウンタ402は、例えば、スリープクロック304がHighの場合に、基準クロック302のサイクルをカウントするようにイネーブルされ得る。クロックの取り決めおよび/または動作について、適宜上記以外の内容を任意に定めて、既知であるスリープクロックのクロックサイクル時間に対して基準クロックのサイクル数をカウントするとしてよい。周波数推定部404は、基準クロックサイクルカウント値406を受信して、基準クロックサイクルカウント値406および既知であるスリープクロック304の周波数(例えば、32kHz)に基づき、推定周波数208を提供するとしてよい。既知であるスリープクロックの周波数は、IC102上のメモリ416(例えば、ROMまたはレジスタ)に格納されている情報または外部の供給源から周波数推定部404に供給されるとしてよい。このように、自動的に基準クロック周波数を推定した結果は、信号208で供給されるとしてよい。ここで図2を再度参照すると、推定基準クロック周波数信号208は、(本明細書で説明するように)許容周波数を格納するメモリ214を有している周波数選択部206に送られるとしてよい。
【0035】
図4Bは、本開示の実施形態に係る第2のクロックキャリブレーション部を示すブロック図204´である。具体的には、1以上のエンコーダ入力(例えば、入力104−0および104−1)を用いて、許容可能な基準クロック周波数または所定の基準クロック周波数のリストを複数のグループ(例えば、4つのグループ)に分割するとしてよい。このため、エンコーダ入力104−0および104−1は、デコーダ408によって復号化されて、周波数群選択信号410が、選択された許容基準クロック周波数群(例えば、4つの群のうち1つ)を示すようにするとしてよい。許容基準クロック周波数のグループ分けは、各周波数群が全ての利用可能な許容周波数から作成された部分集合となるように行われるとしてよい。尚、それぞれの周波数群に含まれる許容周波数間のスプレッド(または周波数差分)は、スリープクロックの所与の精度よりもはるかに大きい。例えば、所与の周波数群に含まれる各周波数は、当該周波数群内のほかの周波数との差分が、スリープクロックの所与の精度の2倍以上であるとしてよい。一例を挙げると、スリープクロックの所与の精度が15%である場合、周波数群に含まれる所与の周波数は、当該周波数群に含まれる周波数のうち、次に低い周波数よりも少なくとも30%は高く、次に高い周波数よりは少なくとも30%は低いとしてよい。各周波数群において周波数間の差分をこのように設定することによって、基準クロック周波数の推定値に対して十分な許容誤差が与えられる。これは、この推定値の精度はスリープクロックの精度に基づいて決まるためである。しかし、2つの許容周波数間の差分がスリープクロックの所与の精度未満である(または、スリープクロックの所与の精度よりもわずかに大きい、例えば、スリープクロックの所与の精度の1倍から2倍の間である)場合には、これらの許容周波数は別々の周波数群に入れるのが良い。例えば、このような周波数のグループ分けは、以下の表1に示すように行われるとしてよい。表1では、周波数差分は周波数推定値許容誤差と示している。
【表1】

【0036】
図4Aの回路と同様に、図4Bのクロックカウンタ402は、スリープクロックのうち所与の部分の間、基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値406を提供するとしてよい。図4Bの例によると、周波数推定部404´は、基準クロックサイクルカウント値406および周波数群選択信号410を受信して、推定周波数208を提供するとしてよい(例えば、図2の周波数選択部206に供給されるとしてよい)。図4Bを再度参照して説明すると、一実施形態において、推定周波数208は、基準クロック周波数とスリープクロック周波数との比である。上述の段落0031で説明した方法を用いると、基準クロック周波数とスリープクロック周波数との比は、周波数群選択信号410で選択される周波数群から最も近い許容周波数を選択する上で十分な精度を持つ。別の実施形態によると、スリープクロック周波数は、メモリ416に格納されており、推定周波数208を得るべく周波数推定部404´に供給される。これに代えて、周波数群選択信号410は、基準クロック周波数の選択に利用されるべく格納される(許容された)所与の周波数の数を低減するため、または、検索を絞り込むために、周波数選択部206(図2)に直接供給されるとしてよい。上述したように、周波数選択部206は、所定の基準クロック周波数または許容可能な基準クロック周波数を格納するべくメモリ214を有しているとしてよい。周波数選択部206は、メモリ214から、許容周波数のうち推定基準クロック周波数208に最も近い許容周波数を(例えば、比較回路を用いて)選択するとしてよい。
【0037】
表1に示した周波数のグループ分けは、一群に含まれる周波数のスプレッドが、内部で供給されるスリープクロックに見られる比較的大きな周波数精度のばらつきを許容する大きさになるように定められる。このため、示されているように、各周波数群に含まれる周波数(例えば、周波数群0に含まれる12MHz、24MHz、および44MHz)を参照することによって、基準クロック周波数を正確に選択することが可能となる。例えば、周波数推定部404´は、基準クロックサイクルカウント値406に基づき、基準クロックの周波数を15MHzと推定する場合がある。周波数選択部206は、周波数群0を選択すべき旨を示すストラップピン・デコーダ408の情報に基づいて作成される周波数群選択信号410を(直接、または、周波数推定部404´を介して)受信するとしてよい。この情報に基づき、12MHzの基準クロック周波数が、周波数群0のうち推定された15MHzに最も近い許容周波数として選択され、信号210でPLL202に供給されるとしてよい。例えば、最も近い許容周波数は、比較回路(例えば、図5を参照のこと)に基づき決定され、メモリ214に結合されている適切な組み合わせロジックを用いて選択するとしてよい。
【0038】
このように、周波数精度のばらつきが比較的大きい(例えば、約±15%)の内部供給スリープクロックを許容しつつも、エンコーダ入力を最小限に抑えて、自動的に基準クロック周波数を推定するとしてよい。外部供給スリープクロックが利用可能である場合、周波数推定値に基づき、外部ストラップピン等のエンコーダ入力を利用することなく、メモリに格納されている所定の周波数/許容周波数の中から、最も近い許容基準クロック周波数を直接選択するとしてよい。
【0039】
図5は、周波数選択部206の一実施形態を示すブロック図である。この具体例では、4つの許容周波数502が図示されているが、言うまでもなく、許容周波数の総数、または、(例えば、内部供給スリープクロックの場合に利用される)1つの許容周波数群に含まれる許容周波数の数は任意の値に設定することが可能である。許容周波数502−0、502−1、502−2、および、502−3は、メモリ214でアクセスされ、対応するコンパレータ504−0、504−1、504−2、および、504−3に供給されるとしてよい。各コンパレータ504はさらに、推定周波数信号208を受信し、それぞれの許容周波数502と推定周波数208とを比較するとしてよい。コンパレータ504−0、504−1、504−2、および、504−3は、推定周波数208の値と許容周波数502−0、502−1、502−2、および、502−3の値との差分を表す、アナログまたはデジタル方式の出力514−0、514−1、514−2、および514−3を供給するとしてよい。所与の周波数群に含まれる許容周波数の値の差異は通常、既知であるスリープクロック周波数の精度またはばらつきよりも大きいので、推定周波数208と許容周波数502−0、502−1、502−2、および、502−3との比較によって得られる出力514−0、514−1、514−2、および514−3はそれぞれ値が異なることになる。
【0040】
各コンパレータ504からの出力514−0、514−1、514−2、および514−3は、所定のしきい値と比較するべく、第2のレベルコンパレータ506(例えば、対応するコンパレータ506−0、506−1、506−2、および506−3)へと供給されるとしてよい。所定のしきい値とは、既知であるスリープクロック周波数の精度またはばらつきに対応する値を持つデジタル信号またはアナログ信号である。所与の周波数群に含まれる許容周波数の値の差異が通常、既知であるスリープクロック周波数の精度またはばらつきよりも大きい場合、出力514−0、514−1、514−2、および514−3のうち1つのみの値が所定のしきい値の値よりも小さい。
【0041】
当業者であれば、このような複数のしきい値コンパレータ段(例えば、しきい値が徐々に小さくなっていくもの)、しきい値が連続した値となっている複数のコンパレータ506、および/または、その他のロジックまたは回路を用いて推定周波数208に最も近い許容周波数502を決定することに想到するであろう。この具体例によると、コンパレータ506から出力される出力516−0、516−1、516−2、および516−3は、最も近い許容周波数502を決定するべくロジック508に供給されるとしてよい。一般的に、許容周波数502−0、502−1、502−2、および、502−3のうち、出力516−0、516−1、516−2、および516−3のうち最も値が小さいものに対応するものが、最も近い許容周波数となる。最も近い許容周波数は選択信号510によってマルチプレクサ512に対して指示され、最も近い許容周波数502が信号210で(例えば、図2に示すようにPLL202に入力されるように)出力されるとしてよい。このように、ロジック508は、値が最も小さい、または、推定周波数208に最も近い許容周波数502を示すコンパレータ出力516に応じて許容周波数選択信号510を供給するように構成されるとしてよい。
【0042】
<基準クロック周波数を決定する方法>
図6Aは、本開示の実施形態に応じた基準クロック周波数を決定する第1の方法を示すフローチャート600である。602において、一連の処理が開始される。604において、許容可能な基準クロックの周波数がメモリにプログラムされるとしてよい。例えば、特定のICがサポートしている顧客および/またはアプリケーション毎に、基準クロック周波数を、図2に示すメモリ214に(例えば、金属、ヒューズ、ユーザインターフェース等を用いて)プログラミングするとしてよい。従来のクロック検出回路は、ICに外部スリープクロックがあるか否かを(例えば、対応するピン、I/O端末、または、入力バッファにおいて所定期間中に外部スリープクロック信号の遷移があるか否かを検出することによって)判断して、606において、外部スリープクロックが検出されない場合には、図6Bに示すように内部スリープクロックが利用されるとしてよい。606において、外部スリープクロックが検出されれば、608において、外部スリープクロックの所定の部分(例えば、1位相、1サイクル、または、その他の部分の1つ分)における基準クロックのサイクル数をカウントするとしてよい。610において、この基準クロックサイクルカウント値に基づき、基準クロックの周波数を推定するとしてよい。612において、当該方法はさらに、推定周波数に最も近い許容周波数を選択する段階を含む。一実施形態によると、IC上のROMに前もって複数の許容周波数をプログラミングしておくとしてよく、多岐にわたる顧客および/またはアプリケーションのうち1以上をサポートするべく、特定の許容周波数の値を選択するとしてよい。614において、ロック周波数を目標として、PLLが基準クロックにロックし易くなるように、選択された周波数をPLLに送るとしてよい。616において、一連の処理の実行は完了する。
【0043】
上述したように、外部から供給されるスリープクロックは、内部で供給されるスリープクロックに比べて周波数の精度が高いので、この点において最初の選択肢となり得る。しかし、一部のアプリケーションでは外部からはスリープクロックが供給されない場合があるので、特定の実施形態では、デフォルトの内部生成スリープクロックもまた許容され得る。
【0044】
図6Bは、基準クロック周波数を決定する第2の方法を示すフローチャート600´である。652において、一連の処理が開始される。654において、内部スリープクロックの一部分(例えば、1位相、1サイクル、または、クロックサイクルのうちその他の所定の部分)における基準クロックのサイクル数をカウントする。656において、スリープクロックの周波数は既知であるので、基準クロックの周波数をこの基準クロックサイクルカウント値に基づき推定するとしてよい。658において、エンコーダ入力(例えば、ストラップピンまたはその他の固定値入力)を(例えば、図4Bのデコーダ408を用いて)復号化して、周波数群を決定するとしてよい。例えば、表1を参照しつつ上述したように、周波数をグループ分けするとしてよい。660において、選択された周波数群から推定周波数に最も近い許容周波数を選択するとしてよい。662において、ロック周波数を目標として、PLLが基準クロックにロックし易くなるように、選択された周波数をPLLに送るとしてよい。664において、一連の処理の実行が完了する。
【0045】
場合によっては、プログラムされた基準クロックの周波数を単に格納するために、EEPROM、または、その他の不揮発性メモリあるいは再プログラミング可能なメモリを利用するとしてもよい。この場合、図6Aおよび図6Bに示した一連の処理の一部(例えば、フローブロックのうち1以上)は省略してもよく、基準クロック周波数値を単に、対応するチップロジックによって、PLLに渡すとしてもよい。
【0046】
ファームウェアおよび/またはROMコードを利用して、命令を格納したり、および/または、PLLが目標基準クロック周波数を受信するタイミングおよびPLLがロック手順を開始することができるタイミングを制御するとしてよい。例えば、ROMコードは、PLLキャリブレーション・ビジー・レジスタ・ビットがアクティブ化される(例えば、「0」に設定される)まで待機している間、PLLキャリブレーション開始レジスタ・ビットを設定する(例えば、アクティブ状態に設定する)としてよい。PLLキャリブレーション・ロック・レジスタ・ビットは、アクティブ状態(例えば、値「1」)が検出されるまでチェックされることによって、PLLが基準クロックに適切にロックしていることを示す。PLLが基準クロックにロックしてICに対して適切なPLLクロック出力を生成している場合、ファームウェアおよび/またはROMコードはICクロックからPLLクロックへと切り替えるとしてよい。これは、クロックイネーブル信号をアクティブ化してPLLからの出力を選択することによって実現され得る。
【0047】
PLLキャリブレーション・ビジー・レジスタ・ビットがアクティブ状態から変わらず(例えば、High論理状態またはHigh論理レベルに固定されてしまい)、ROMコードに無限に待機させている場合、故障またはエラーが発生する可能性がある。このような問題は、PLLキャリブレーション・ビジー・レジスタ・ビットがアクティブ状態に設定される(例えば、Low論理状態またはLow論理レベルになる)もののPLLキャリブレーション・ロック・レジスタ・ビットが非アクティブのままである(例えば、Low状態に固定されている)場合にも発生し得る。このようなエラーは、基準クロックがデフォルトチップクロックとして使用されている間にデバッガを利用してROMコードを中断することによって修正され得る。(例えば、PLLキャリブレーション・ロック・ビットがアクティブ状態になることによって示されるように)PLLが適切に基準クロックにロックすれば、ROMコードはチップクロックをPLLクロックに切り替える。
【0048】
<ソフトウェアの例>
本開示はさらに、上述の方法のステップのうち1以上および/または上述のハードウェアの動作のうち1以上の動作を実行するように構成されている従来のデジタル・シグナル・プロセッサが備えられた汎用のコンピュータまたはワークステーションで実施可能および/または実行可能であるアルゴリズム、コンピュータプログラム、および/または、ソフトウェアを含む。このため、本開示の別の側面は、上述の方法を実施するためのアルゴリズムおよび/またはソフトウェアに関する。例えば、本開示はさらに、適切な処理デバイス(例えば、マイクロコントローラ、マイクロプロセッサ、または、DSPデバイス等の信号処理デバイス)で実行されると、上述の方法および/またはアルゴリズムを実行するよう構成されている一連の命令を含むコンピュータプログラム、コンピュータ可読媒体、または波形に関するとしてよい。
【0049】
例えば、コンピュータプログラムは、任意の種類の可読媒体に格納されているとしてよい。コンピュータ可読媒体は、当該媒体に対して読出を行い、格納されているコードを実行するように構成されている処理デバイスによる読出が可能な任意の媒体を含むとしてよく、例えば、フロッピー(登録商標)ディスク、CD−ROM、磁気テープ、または、ハードディスクドライブが例示される。このようなコードは、オブジェクトコード、ソースコード、および/または、バイナリコードを含むとしてよい。
【0050】
波形は通常、銅線、従来のツイスト・ペア線、従来のネットワークケーブル、従来の光データ送信ケーブル、または、大気あるいは真空(例えば、大気圏外空間)等、無線信号送信に適切な媒体を通って送信されるように構成されている。本発明に係る方法を実施するための波形および/またはコードは、通常デジタル波形であり、従来のデジタルデータプロセッサ(例えば、マイクロプロセッサ、マイクロコントローラ、または、プログラマブル・ゲート・アレイ、プログラマブル論理回路/論理デバイスあるいは特定用途向け(集積)回路等の論理回路)で処理されるように通常構成されている。
【0051】
<結論/要約>
このように、本開示の実施形態は、基準クロック周波数の決定および/またはフェーズ・ロックド・ループ(PLL)等のループ発振器のロックを行うための回路、アーキテクチャ、システム、方法、アルゴリズム、および、ソフトウェアを提供する。例えば、上述の回路および方法によって、比較的簡単なロジックを用いつつも、内部または外部から供給されるスリープクロック信号のいずれかを用いて基準クロック周波数を正確および/または確実に決定することができるようになる。上述のアーキテクチャおよびシステムは通常、上記の回路の側面のうち1以上を含み、上記のアルゴリズムおよびソフトウェアは通常、上記の方法の側面のうち1以上を含む。
【0052】
本開示の具体的な実施形態を上述したが、本開示の例示および説明を目的としたものである。上述した本開示の具体的な実施形態は、本開示の内容を網羅したものではなく、また、開示した形態に正確に一致するものに本開示を限定するものでもなく、上述の教示内容を鑑みると多くの点で変形および変更が可能であることは明らかである。上述の実施形態は、本開示の原理および本開示の実用化を最も良く説明するものとして選択および記載されたものである。このため、当業者であれば、上述の実施形態を参照することによって、本開示内容およびさまざまな実施形態を、特定の用途に適合化されているさまざまな変形例と共に、最大限有効活用することができる。本発明の範囲は、特許請求の範囲に記載されている請求項およびその均等物によって定義されるものとする。

【特許請求の範囲】
【請求項1】
基準クロックの周波数を検出する回路であって、
スリープクロックの所定の部分の間にわたって、前記基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供するクロックカウンタと、
前記基準クロックサイクルカウント値に基づいて、前記基準クロックの周波数を推定する周波数推定部と、
複数の許容周波数から、推定された前記基準クロックの周波数に最も近い周波数を選択する周波数選択部と
を備える回路。
【請求項2】
前記周波数選択部は、前記複数の許容周波数を格納するメモリを有する請求項1に記載の回路。
【請求項3】
前記周波数選択部はさらに、前記最も近い周波数と前記複数の許容周波数のうちの少なくとも一部とを比較するコンパレータを有する請求項2に記載の回路。
【請求項4】
前記スリープクロックは、外部スリープクロックであり、前記回路はさらに、前記外部スリープクロックを前記回路に供給する入力を備える請求項1に記載の回路。
【請求項5】
前記スリープクロックの所定の精度は、約1%以下である請求項4に記載の回路。
【請求項6】
前記スリープクロックは、内部スリープクロックであり、前記回路はさらに、前記内部スリープクロックを前記回路に供給する入力を備える請求項1に記載の回路。
【請求項7】
複数のエンコーダ入力を復号し、前記複数のエンコーダ入力の状態または値に基づき複数の許容周波数群のうち1つの許容周波数群を選択するデコーダをさらに備え、前記複数の許容周波数群はそれぞれ、前記複数の許容周波数のうち一部を含む請求項6に記載の回路。
【請求項8】
前記複数のエンコーダ入力は、少なくとも4つの許容周波数群を符号化し、前記少なくとも4つの許容周波数群はそれぞれ、少なくとも2つの許容周波数を含む請求項7に記載の回路。
【請求項9】
前記周波数選択部は、選択された許容周波数群から、前記推定された基準クロックの周波数に最も近い周波数を選択する請求項7に記載の回路。
【請求項10】
前記スリープクロックの所定の精度は、約25%以下である請求項7に記載の回路。
【請求項11】
前記最も近い周波数を最初の周波数として用いて前記基準クロックにロックするフェーズ・ロックド・ループ(PLL)をさらに備える請求項1に記載の回路。
【請求項12】
基準クロックの周波数を決定する方法であって、
スリープクロックの所定の部分の間にわたって、前記基準クロックのサイクル数をカウントして、基準クロックサイクルカウント値を提供する段階と、
前記基準クロックサイクルカウント値および前記スリープクロックの周波数に基づいて、前記基準クロックの周波数を推定する段階と、
複数の許容周波数から、推定された前記基準クロックの周波数に最も近い周波数を選択する段階と
を備える方法。
【請求項13】
前記最も近い周波数をフェーズ・ロックド・ループ(PLL)に供給して、前記最も近い周波数を用いて前記PLLを前記基準クロックにロックさせる段階をさらに備える請求項12に記載の方法。
【請求項14】
前記スリープクロックの前記所定の部分は、前記スリープクロックのサイクルまたは位相を整数個含む請求項12に記載の方法。
【請求項15】
前記複数の許容周波数をメモリにプログラミングする段階をさらに備える請求項12に記載の方法。
【請求項16】
前記スリープクロックは、外部スリープクロックであり、前記スリープクロックの所定の精度は、約1%以下である請求項12に記載の方法。
【請求項17】
前記スリープクロックは内部スリープクロックであり、
前記方法はさらに、複数のエンコーダ入力を復号して、複数の許容周波数群のうち1つの許容周波数群を選択する段階を備え、
前記複数の許容周波数群はそれぞれ、前記複数の許容周波数のうち一部を含む請求項12に記載の方法。
【請求項18】
前記最も近い周波数は、選択された前記許容周波数群から選択される請求項17に記載の方法。
【請求項19】
前記複数のエンコーダ入力は、少なくとも4つの許容周波数群を符号化する請求項17に記載の方法。
【請求項20】
前記スリープクロックの所定の精度は、約25%以下である請求項17に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate


【公表番号】特表2012−506095(P2012−506095A)
【公表日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2011−532213(P2011−532213)
【出願日】平成21年10月14日(2009.10.14)
【国際出願番号】PCT/US2009/060665
【国際公開番号】WO2010/045348
【国際公開日】平成22年4月22日(2010.4.22)
【出願人】(502188642)マーベル ワールド トレード リミテッド (302)
【Fターム(参考)】