クロック発生回路
【課題】クロック逓倍してクロック信号を発生するクロック発生回路のロックインタイムを短縮する。
【解決手段】ロックイン状態において、2つの数値データCi,C(i+1)を積和演算器が出力し、各数値データに従って発振器11の発振周期を設定して、その出力クロック信号のパルス数をカウントして第1および第2のカウント値を生成する。これらの2つの数値データと2つのカウント値と周期目標データとに従って、発振器の発振周期を設定する第3の数値データを生成して、発振器の発振周期を設定する。
【解決手段】ロックイン状態において、2つの数値データCi,C(i+1)を積和演算器が出力し、各数値データに従って発振器11の発振周期を設定して、その出力クロック信号のパルス数をカウントして第1および第2のカウント値を生成する。これらの2つの数値データと2つのカウント値と周期目標データとに従って、発振器の発振周期を設定する第3の数値データを生成して、発振器の発振周期を設定する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はクロック発生回路に関し、特に数十kHz程度のクロック信号から数十MHz程度のクロック信号を生成する高逓倍のクロック逓倍器に関する。
【背景技術】
【0002】
マイクロコンピュータやプロセッサ等のLSI(Large Scale Integrated circuit)において、クロック信号は内部回路や外部デバイスとの同期を取るために必要とされる信号である。多くの場合、LSIには数十kHz程度の周波数のクロック信号から数十MHz程度のクロック信号を生成するクロック逓倍器が内蔵される。
【0003】
クロック逓倍器は数十kHz程度のクロック信号から1000逓倍以上という高逓倍のクロック信号を生成する。このためクロック逓倍器は、たとえば逓倍数をカウントするカウンタを備えた高精度のデジタルPLL(Phase Locked Loop)回路により構成される。
【0004】
デジタルPLL回路(以下、単に「PLL回路」とも称する)ではリファレンスクロック信号の1周期に出力されるクロック信号のパルス数(逓倍数)がターゲット値と比較される。発振器は制御コードに応じ、たとえばクロック信号の遅延時間を変化させて発振周期を変化させる。パルス数とターゲット値との比較結果に基づいて制御コードの更新(制御コードのインクリメントまたはデクリメント)が行なわれることで、パルス数とターゲット値とが一致する。
【0005】
PLL回路がロックした状態ではリファレンスクロックの1周期ごとに制御コードの更新が行なわれる。リファレンスクロック信号の周波数が32kHzの場合には、1周期すなわち約31μsに1回、制御コードが更新される。ロックイン時にはロック後の動作(通常動作)と異なるフローに従ってPLL回路の処理が実行される。
【0006】
ロックイン時には「クロック信号のパルス数のカウント」と「結果判定および制御コードの更新」とがリファレンスクロック信号の1周期ごとに繰返し行なわれる。つまり制御コードはリファレンスクロック信号の2周期(62μs)に1回更新される。ロックするまでに制御コードの設定が16回必要であれば、ロックインタイムは32周期(約1ms)となる。
【0007】
従来のデジタルPLL回路では精度を上げるため、制御コードの1ビットあたりの遅延値を小さくし、制御コードのビット数を増やすという手法が一般的に用いられる。しかし、この手法によればロックインタイムが増大するという問題が生じる。たとえば制御コードが16ビット(65536ステップ)のデジタルPLL回路の場合、制御コードの初期値を中央値に設定し、最小値または最大値まで制御コードを順次変化させると、処理ステップの数は32768になる。
【0008】
このような問題を解決するため、たとえば特開平10−22822号公報(特許文献1)に開示されたデジタルPLL回路では、ロックイン動作時には位相比較結果をもとにして、最上位のビット(MSB)から最下位のビット(LSB)に向けて制御コードを順次変化させる二分検索法が用いられる。この手法では制御コードが16ビットの場合、制御コードの値によらず16回コードを設定することによってクロック信号の周期を目標の周期に設定することができる。
【特許文献1】特開平10−22822号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
高精度のデジタルPLL回路により構成されるクロック逓倍器の場合には、位相差を正確に検出するために、リファレンスクロック信号の周波数が低い(1周期の時間が長い)ため、ロックインタイムが長くなるという問題がある。特開平10−22822号公報(特許文献1)に開示された手法を用いても同様の問題が生じる。この特許文献1の手法によれば、リファレンスクロックの周波数が32kHzで制御コードのビット数が16であれば、判定およびコード設定に2サイクルが必要とされ、ロックインタイムは約1msになる。二分検索の初期値の設定のためのサイクルを考慮すると、制御コードが、mビットのときには、リファレンスクロックの2・(m+1)サイクルが必要とされる。
【0010】
たとえば携帯電話に内蔵されるLSIにおいて、スタンバイモードでは消費電力の低減を図るためクロック逓倍器への電源供給が停止される。ロックインタイムが長くなるとスタンバイ状態からのリカバリ時間が長くなるため、LSIをスタンバイモードに移行させることが難しくなる。しかしながら、LSIをスタンバイモードに移行できないと、携帯電話の消費電力が増加する。従って、PLL回路のロックインタイムを短くすることが必要になる。
【0011】
リカバリ時間が長いということは、LSIが処理を再開できるようになるまでのペナルティ時間が長いということを意味する。LSIへの入力が無効となってからスタンバイモードへの移行の可否を判定するまでの期間を短くすれば、LSIはスタンバイモードに頻繁に移行することになる。この場合には、判定後に有効な入力が与えられる状態が増加し、スタンバイモードの期間が短くなるとともにLSIをスタンバイモードから復帰させる回数が増える。この結果、スタンバイモードの期間が短いにも関わらず、復帰させるごとに長いリカバリ時間が必要となり、LSIの処理の効率が落ちる。
【0012】
この発明の目的は、ロックインタイムを短くすることが可能なクロック発生回路を提供することである。
【課題を解決するための手段】
【0013】
この発明に係るクロック発生回路は、与えられた数値データに応じてクロック信号の周期を変化させる発振器と、クロック信号のパルス数を所定期間カウントし、カウント値を出力するカウンタと、カウント値に基づいて、クロック信号の周期を目標周期に設定するために発振器に与える数値データの演算を行なう演算器とを備える。演算器は、第1および第2の数値データを順次出力し、第1および第2の数値データの出力に応じて受ける第1および第2ののカウント値とから、与えられた目標周期に応じた第3の数値データを決定する。
【発明の効果】
【0014】
この発明のクロック発生回路によれば、2つの数値データ、および各数値データに応じたクロック信号のパルス数のカウント値から、クロック信号の周期を目標周期に設定するために発振器に与える数値データを演算しており、ロックインタイムを短縮できる。
【発明を実施するための最良の形態】
【0015】
以下、この発明の実施の形態について図面を参照して詳細に説明する。なお、各図中同一符号は、同一または相当部分を示す。
【0016】
[実施の形態1]
図1は、この発明に従うクロック発生回路の適用例を示す図である。図1を参照して、電子機器50は、通常動作状態とスタンバイ状態とを切換えることができる電子機器であり、たとえば携帯電話である。電子機器50は、各種機能を実現するための半導体集積回路100を含む。半導体集積回路100は、逓倍数の大きいクロック信号を必要とするLSIであればよく、特にその用途は限定されない。なお、図1に示さないが、電子機器50は、半導体集積回路100以外にも、各種の機能を実行するための回路(たとえば携帯電話における送受信回路等)を含む。
【0017】
半導体集積回路100は、クロック発生回路1と、クロック発生回路1から出力されるクロック信号CKoutに同期して処理を実行する処理部2とを備える。クロック発生回路1は、たとえば32kHzのリファレンスクロック信号CKrefを受けて、数十MHzのクロック信号CKoutを出力する。
【0018】
処理部2は、クロック発生回路1に対しターゲット値Nt、イネーブル信号EN、およびリセット信号RSTを送る。ターゲット値Ntは、クロック信号CKoutの目標周期に対応する値であり、具体的にはリファレンスクロック信号CKrefの1周期(たとえば31μsである)におけるクロック信号CKoutのパルス数(逓倍数)の目標値である。リファレンスクロック信号CKrefの1周期は、この発明に従うクロック発生回路における「所定期間」に相当する。
【0019】
イネーブル信号ENは、クロック発生回路1を動作状態に設定する信号である。リセット信号RSTは、クロック発生回路1の動作をリセットする信号である。
【0020】
ターゲット値Ntおよび信号ENは、処理部2に含まれるモード制御回路(図示せず)から送出され、リセット信号RSTは、処理部2に含まれるリセット回路(図示せず)から送出される。ただし、ターゲット値Ntおよび信号EN,RSTは、半導体集積回路100の外部から、例えばオペレータ操作に従って入力されてもよい。
【0021】
リファレンスクロックCKrefは、この電子機器50内において、特に限定されないが、例えば水晶発振子を用いた発振器から発生される。
【0022】
図2は、図1のクロック発生回路1の構成を概略的に示す図である。図2を参照して、クロック発生回路1は、入力される数値データに応じてクロック信号CKoutの周期を変化させる発振器11と、クロック信号CKoutのパルス数をカウントし、リファレンスクロック信号CKrefの1周期内にカウントしたパルス数をカウント値として出力するカウンタ12と、カウント値に従って、クロック信号CKoutの周期を目標周期に設定するために発振器11に与える数値データの演算を行なう積和演算器13と、ターゲット値Ntを一時的に格納するレジスタ14と、コードのインクリメント(またはデクリメント)を行なう加算器15とを含む。
【0023】
発振器11は、積和演算器13または加算器15から与えられた数値データの変化に対してクロック信号CKoutの遅延時間をリニアに変化させる。すなわち、発振器11は、例えば遅延列を含むリングオシレータで構成され、数値データに従って遅延列の遅延時間が設定されて、応じて、発振器11の発振周波数/位相が設定される。
【0024】
積和演算器13は、この発明に従うクロック発生回路における「演算器」に相当する。また、「目標周期」は、ターゲット値Ntの逆数で与えられる。
【0025】
ロックイン時には、発振器11、カウンタ12および積和演算器13によりPLL回路が構成され、ロック後は、発振器11、カウンタ12および加算器15によりPLL回路が構成される。クロック発生回路1における「ロック状態」とは、カウンタ12によるカウント値とターゲット値Ntとの差が0もしくは極めて小さい状態(許容誤差内の状態)を示す。ロックイン状態においては、ロック状態を設定する数値データを求める動作(ロック検索動作)が行なわれる。
【0026】
同期引き込みを行うロックイン状態においては、積和演算器13は、2つの数値データを出力する。カウンタ12は、各数値データが発振器11に設定されたときのクロック信号CKoutのパルス数をカウントする。積和演算器13は、第1および第2の数値データを順次出力し、第1および第2の数値データの出力にそれぞれ応じた第1および第2ののカウント値を受ける。積和演算器13は、これらの第1および第2のカウント値から、積和演算を行って、与えられた目標周期(ターゲット値Nt)に応じた数値データを決定する。後に詳細に説明するように、数値データのビット数に関係なく、数値データを3回設定するだけでクロック発生回路1をロックさせることができ、ロックインタイムを短くすることができる。
【0027】
なお、積和演算器13および加算器15から出力される数値データは、一定の規則に従って符号化されており、以下の説明においては、符号化された数値データのことを「コード」と称する。
【0028】
加算器15は、ロック後にカウント値Niとターゲット値Ntとを比較し、該比較結果に従って、ロックイン状態で決定されたコードのインクリメントまたはデクリメントを行なう。
【0029】
クロック発生回路1は、さらに、制御回路17から受ける信号に従って積和演算器13および加算器15の一方からのコードを選択して出力するセレクタ16と、各機能ブロックの動作タイミングを規定するタイミング信号を生成する制御回路17と、セレクタ16からレジスタ19を介して与えられたコードをデコードするデコーダ18とを含む。
【0030】
制御回路17からのタイミング信号に従って、ロック時には、リファレンスクロック信号CKrefの1周期ごとにコードが計算される。また、制御回路17は、リセット解除後、ロック検索動作のために、各機能ブロックに対するタイミング信号および制御信号を生成する。
【0031】
制御回路17は、ロックイン状態時に、積和演算器13における演算結果に基づいてロック判定を行ない、この判定結果に従ってセレクタ16の選択経路を制御する信号を生成する。この選択経路制御信号に従って、セレクタ16は、ロックイン時には積和演算器13から与えられるコードをレジスタ19に出力し、ロック後は加算器15から与えられるコードをレジスタ19に出力する。
【0032】
制御回路17は、さらに、イネーブル信号ENに応じて、ロック検索動作の過程(ロックイン状態)において、発振器11の発振を制御するための発振制御信号IENを生成する。この発振制御信号に従って、発振器11が、選択的に発振動作を行う。
【0033】
レジスタ19は、セレクタ16から送出されたコードを一時的に格納し、制御回路17から与えられる制御信号に応答して、格納したコードCiを出力する。すなわち、レジスタ19は、ロックイン時には、デコーダ18および積和演算器13にコードCiを送出し、ロック時には、デコーダ18および加算器15にコードCiを送出する。
【0034】
デコーダ18は、レジスタ19を介して受けるコードをデコードして、発振器11での遅延量(発振周波数)を決定する数値データを生成する。
【0035】
なお、カウンタ12、積和演算器13、加算器15、セレクタ16、制御回路17、デコーダ18は、たとえば論理合成によって生成される一般的な回路により構成される。
【0036】
図3は、図2に示す発振器11の構成の一例を示す図である。図3を参照して、発振器11は、遅延量が疎調整されるコース遅延回路11Cと、遅延量が微調整されるファイン遅延回路11Fと、発振器11の発振動作を発振制御信号IENに従って選択的に活性化/停止させるNAND回路NA1とを含む。
【0037】
ファイン遅延回路11Fは、コース遅延回路11Cと「粒度」が異なる回路である。「粒度」とは遅延回路においてユニットディレイ(コード1つ分の遅延値;遅延ステップ値)を意味する。たとえば、コース遅延回路11Cのユニットディレイが160psであり、ファイン遅延コードが5ビット(32個の状態を表現)で構成されているとすると、ファイン遅延回路11Fのユニットディレイは160/32=5psとなる。すなわち、ファイン遅延回路11Fは、コース遅延回路11Cよりもクロック信号CKoutの遅延時間を小さく変化させる回路である。
【0038】
コース遅延回路11Cは、デコーダ18から与えられる信号CC1〜CCn(nは自然数)に応じて遅延量が決定され、ファイン遅延回路11Fは、デコーダ18から与えられる信号F0およびFA1〜FAm(mは自然数であり、たとえばm=5)に応じて遅延量が決定される。これらのコース遅延回路11Cおよびファイン遅延回路11Fは、ともに、積和演算器13から送られるコードに対して遅延時間をリニアに変化させることができる。
【0039】
コース遅延回路11Cは、n個の縦続接続される遅延素子DL1〜DLnと、遅延素子DL1〜DLnの出力それぞれに対応して設けられるスイッチSW1〜SWnとを含む。スイッチSW1〜SWnは、コース遅延回路11Cの出力に並列に結合され、信号CC1〜CCnそれぞれに応答して導通する。信号CC1〜CCnは、デコーダ18により1つが選択状態とされ、応じて、スイッチSW1〜SWnの1つが導通状態に設定される。これにより、コース遅延回路11Cの遅延段数が設定され、応じて、遅延時間が決定される。なお、遅延素子DL1〜DLnは、それぞれ、同一の遅延時間を有し、各々の遅延量Tが、コース遅延回路11Cのユニットディレイに対応し、たとえば160psである。
【0040】
遅延素子DL1〜DLnは、それぞれ、遅延線で構成されてもよく、また、偶数段のインバータで構成されてもよい。それぞれが同一の遅延時間を与える構成であれば、このR遅延素子DL1〜DLnとしては、どのような構成が利用されてもよい。
【0041】
ファイン遅延回路11Fは、コース遅延回路11Cの出力信号を受ける入力ノードW1と内部ノードW3の間に接続される遅延素子DLAと、ノードW1およびW3の間に互いに並列に接続されるトライステートバッファ201〜20mと、内部ノードW3とファイン遅延回路11Fの出力ノードとの間に接続されるトライステートバッファ22と、内部ノードW3と接地ノードとの間に接続されるキャパシタ24とを備える。
【0042】
遅延素子DLAは、コース遅延回路11Cの遅延素子DL1〜DLnそれぞれと同一の遅延時間を有し、制御信号F0に従って選択的に活性状態とされる。この制御信号F0は、制御信号FA1〜FAmが全て非活性状態のときに活性状態に設定され、このファイン遅延回路11Fの初期遅延時間を与える。通常、ロックイン動作時においては、コース遅延回路11Cにより遅延時間を粗いステップで設定した後に、ファイン遅延回路11Fにより、粗く設定された遅延時間が微調整される。コース遅延回路11Cによる遅延時間の設定操作時においては、ファイン遅延回路11Fの遅延時間は、デフォルト値に設定され、このデフォルト値が遅延素子DLAにより与えられる。従って、この遅延素子DLAは、遅延時間が0のトランスミッションゲートで置き換えることも可能である。
【0043】
トライステートバッファ201−20mは、それぞれデコーダ18から与えられる制御信号FA1−FAmに従って選択的に動作状態とされ、非活性状態においては出力ハイインピーダンス状態に設定される。
【0044】
キャパシタ24は、内部ノードW3の供給される電流に応じて充電電圧を変化させる。このキャパシタ24の充電電圧の変化速度に応じて、遅延時間が設定される。
【0045】
トライステートバッファ22は、内部ノードW3の信号をバッファ処理して出力端子からクロック信号CKoutを出力する。
【0046】
トライステートバッファ201−20mは、各々、偶数段(例えば2段)の縦続接続されるクロックドインバータで構成される。トライステートバッファ201内のクロックドインバータを構成するPチャネルMOSトランジスタとNチャネルMOSトランジスタは、チャネル幅(以下単に「サイズ」という。)wを有し、トライステートバッファ202は、トランジスタは、サイズ2wを有し、トライステートバッファ20mは、トランジスタサイズ2m-1×wを有する。ただし、チャネル長Lを全て同じとしている。
【0047】
ここで、PチャネルMOSトランジスタとNチャネルMOSトランジスタとは、同じサイズ(チャネル幅)を有する必要はない。トライステートバッファ201〜20mにおいて、それぞれ、PチャネルMOSトランジスタおよびNチャネルMOSトランジスタそれぞれについて上述のサイズの関係が満たされていればよい。
【0048】
このトランジスタサイズの調整により、トライステートバッファ201−20mの電流駆動力が、2のべき乗に従って順次増大され、この結果、遅延時間が2のべき乗に従って減少される。
【0049】
トライステートバッファ201−20mは、ノードW1およびW3の間に並列に接続されており、デコーダからの信号FA1−FAmに従って、内部ノードW3に対する電流駆動力を調整することができ、キャパシタ24の充放電速度を調整することができ、応じて、内部ノードW3に伝達される信号に対する遅延時間を調整することができる(電流駆動力が大きくなれば、遅延時間が短くなる)。
【0050】
トライステートバッファ201〜20mの出力駆動トランジスタ(PおよびNチャネルMOSトランジスタ各々)の合成サイズwAは、サイズwのステップで、信号FA1〜FAmに従って、(2m−1)×wから0まで変化する。最小遅延時間を与えるトライステートバッファ20mの有する遅延時間をΔTとすると、合成サイズがw増加するごとに、遅延時間がΔTだけ短くされる。ノードW2から出力されるクロック信号CKoutは、ノードW1に入力される信号に対して、合成サイズwAに応じてユニットディレイ時間Tuステップで遅延する。具体的に、mビットの信号FA1〜FAmにより、合成サイズがwAのときの遅延時間ΔT(wA)は次式で与えられる。
【0051】
ΔT(wA)= (2(m+1)−(wA/w))ΔT
トライステートバッファ20mの有する遅延時間ΔTが、遅延素子DL1−DLnおよびDLA各々の有する遅延時間Tの1/2m倍に設定される。例えば、mが5ビットで、コースユニットディレイTが160psのときには,ファインユニットディレイΔTは、32psに設定される。
【0052】
NAND回路NA1は、発振制御信号IENとクロック信号CKoutとを受けて、コース遅延回路の初段の遅延素子DL1にその出力信号を供給する。発振制御信号IENが立上がると、NAND回路NA1がインバータとして動作し、リングオシレータが形成され、発振器11からクロック信号CKoutが出力可能になる。発振制御信号IENが立下がると、NAND回路NA1の出力信号がHレベルに固定され、発振器11の発振が停止する。
【0053】
なお、この発明の実施の形態1では、コース遅延回路11Cのみが用いられる。従って、実施の形態1では、発振器11は、コース遅延回路のみを含むように構成されていてもよい。また、実施の形態1では、ファイン遅延回路11Fに与えられる信号F0,FA1〜FAmが一定であってもよい(それぞれの電圧レベルが固定される)。この場合、信号F0が活性状態で、残りの信号F1〜Fmが非活性状態に設定されていてもよく、また、信号F0が非活性状態で、信号FA1〜FAmが、選択的に活性状態に設定されていてもよい。ファイン遅延回路11Fの遅延時間が固定されていればよい。以下では、説明の便宜上、発振器11はコース遅延回路11Cのみを含むものとして説明する。
【0054】
図4は、この発明の実施の形態1に従うロックイン状態での処理フローを示す図である。なお、以下に説明する発振器11、カウンタ12、積和演算器13の動作は、制御回路17により制御される。
【0055】
図4を参照して、処理が開始されると、まず、ステップS1において、レジスタ14に処理部2から与えられたターゲット値Ntが設定される。また、発振器11に含まれる遅延回路の遅延段数を初期設定するために、積和演算器13により初期コードC1が設定される。コードC1により、遅延段数は最終段までの段数nの1/2に設定される。コードC1は、たとえば7ビットのコード「1000000」で示される。セレクタ16は、積和演算器13の出力コードを選択する状態に設定される。積和演算器13からのコードに従って発振器11の発振周波数が設定される。
【0056】
ステップS2において、カウンタ12は、クロック信号CKoutのパルス数のカウント(クロックカウント)を行ない、レファレンスクロック信号CKrefの1周期内でカウント値N1を得る。
【0057】
ステップS3において、積和演算器13は、このカウント値N1に基づいてコードC2を設定する。コードC2によって、遅延段数は、最終段までの段数nの3/4に設定される。コードC2はたとえば「1100000」と示される。
【0058】
ステップS4において、カウンタ12は再びクロックカウントを行ない、カウント値N2を得る。
【0059】
ステップS5において、積和演算器13は、カウント値N1,N2からターゲット値Ntに対応するコードC3(第3の数値データ)を演算し、発振器11に対してコードC3を出力する。これにより、発振器11にはコードC3が設定される。ステップS5での処理が終了すると、ロックイン全体の処理が終了し、クロック発生回路1はロック後の動作、すなわち通常動作を行なう。すなわち、加算器15の出力コードに従って、発振器11の発振周波数の調整が行われる。
【0060】
この手法は、いわゆる二分検索法に一部類似するように見える。しかしながら、本実施の形態1においては、カウント値N1とターゲット値Ntとの比較の基づいて、第2のコードC2を設定するのではなく、この第2のコードC2のコード値は、予め定められている。発振器においては、コードCの値に従って遅延時間がリニアに変化しており、2つのコードC1、C2と対応のカウント値N1、N2とから、2点を通る直線を求め、この直線上でのターゲット値Ntに対応するコードC3を求める。
【0061】
従って、第2のコードC2が予め定められていても、ターゲット値Ntに対応するコードを算出することができる。勿論、カウント値N1とターゲット値Ntとの比較結果に従って、第2のコードC2が設定されてもよい。発振器の動作特性が、リニアリティからずれている場合、ターゲット値Ntに近い領域において直線近似を行うため、リニアリティからのずれが小さい領域でコード算出を行うことができる。
【0062】
なお、以後は説明の便宜のため、ステップS1〜S5の処理を「コード演算基本処理」と称し、ステップS1〜S5の処理を1つのステップS1Aにまとめて示す。
【0063】
図5は、ロックイン状態での処理を詳細に説明する図である。図5を参照して、リセット解除後のリファレンスクロック信号CKrefのn番目のサイクルをTnと示す。図5では、サイクルT1〜T8が示される。
【0064】
サイクルT1において、ターゲット値Ntがレジスタ14に設定され、積和演算器13によりコードC1が設定される。サイクルT2において、クロックカウントが行なわれてカウント値N1が求められる。
【0065】
サイクルT3において、積和演算器13によりコードC2が設定される。サイクルT4において、クロックカウントが行なわれ、カウント値N2が求められる。
【0066】
サイクルT5において、積和演算器13によりコードC1,C2およびカウント値N1,N2からコードC3が求められる。サイクルT6においてクロックカウントが行なわれ、カウント値N3が求められる。
【0067】
サイクルT7以後、ロック後の動作が行なわれる。サイクルT7において、加算器15が、カウント値N3とターゲット値Ntとを比較して(減算を行なって)、クロック信号CKoutの発振周波数を上げるか下げるかを判定する。発振周波数を上げる(カウント値を上げる)場合には、コードC3のデクリメントを行なう(遅延回路の遅延段数を低減する)。発振周波数を下げる(カウント値を下げる)場合には、コードC3のインクリメントを行なう(遅延回路の遅延段数を増大させる)。
【0068】
サイクルT7においては、また、更新後のコードに応じたクロックパルスのカウントが行なわれる。サイクルT8以後、サイクルT7と同様に、加算器15は、前のサイクルでのカウント値をターゲット値Ntと比較し、その比較結果に従って発振周波数を上げるか下げるかの判定を行なう。この判定結果に従ってコードのインクリメント(またはデクリメント)を行なう。また、同じサイクルにおいて、更新後のコードに従って設定されたクロックパルスのカウントが行なわれる。
【0069】
以下に、クロック信号CKoutの目標周期に対応するコードCTを求める演算式(1)を示す。式(1)において、iは2以上の整数であり、実施の形態1ではCT=C3である。なお、コードC(i−1),Ciは、それぞれ、この発明における「第1の数値データ」および「第2の数値データ」に対応し、カウント値N(i−1),Niは、それぞれ、この発明における「第1のカウント値」および「第2のカウント値」に相当する。また、各()内の数字は、式(1)内の下付の文字に対応する。
【0070】
【数1】
【0071】
発振器11は、数値データに対して遅延量、すなわち発振周期がリニアに変化するという特性を持つ。この発明に従うクロック発生回路は、このような特性を有する発振器を備えることにより、2つの数値データCi,Ci−1の差分と2つの発振周期の差分1/Ni、1/N(i−1)とから、周期の変化に対する数値データの変化の割合を用いて第3の数値データに対応するコードCTを算出することができる。発振周期は、カウント値の逆数で表わされるため、上述の式(1)が得られる。
【0072】
図6は、コード(第3の数値)CTを求める演算式を説明する図である。
図6を参照して、グラフの横軸は発振周期すなわちカウント値の逆数を示し、グラフの縦軸はコードを示す。発振周期に対しコードはリニアに変化する。グラフの直線の傾きは、(Ci−C(i+1))/(1/Ni−1/N(i+1))である。従って、この2点を通る直線を求めることにより、ターゲット値Ntに対応するコードを求めることができる。
【0073】
次に、実施の形態1による効果について説明する。たとえばコードが、mビット(mは自然数)の場合、特開平10−22822号公報(特許文献1)に示される二分検索法では、m回のコード設定およびクロックカウントが行なわれるため、ロックするまでにリファレンスクロックの2・mサイクルが必要になる。
【0074】
実施の形態1によれば、コードのビット数とロックインタイムとは関係しない。実施の形態1では、ロックイン状態において3回のコード生成/設定と2回のクロックカウントが行なわれればよい。従って、リファレンスクロック信号CKrefの6サイクル目でクロック発生回路1をロックさせることができる。
【0075】
以上のように、実施の形態1に従えば、コードを3回設定するだけでクロック発生回路をロックさせることができるので、ロックインタイムを短縮することができる。
【0076】
また、実施の形態1によれば、このクロック発生回路を内蔵するLSIにおいてスタンバイモードからのリカバリ時間を短縮することができる。リカバリ時間におけるロックイン時間の割合が高い(たとえば約60%)ほど、リカバリ時間が大幅に短縮される。
【0077】
さらに、実施の形態1によれば、クロック発生回路を内蔵するLSIのリカバリ時間が短縮されるので、このLSIを搭載したシステム(たとえば携帯電話)をスタンバイモードに遷移させる回数を増やすことができる。よって、システムの消費電力を下げることができる。
【0078】
[実施の形態2]
実施の形態2におけるクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であり、その詳細説明は省略する。
【0079】
図7は、実施の形態2におけるロックイン状態での処理フローを示す図である。
図7を参照して、処理が開始されると、まず、ステップS1〜S5においてコードC3が求められる。図7の処理フローにおけるステップS1〜S5でのそれぞれの処理は、図4の基本演算処理フローS1AにおけるステップS1〜S5におけるそれぞれの処理と同様であり、その詳細説明は省略する。基本演算処理ステップS1Aの実行後、ステップS6において、カウンタ12は、クロックカウントを行なって、コードC3に対応するカウント値N3を得る。
【0080】
ステップS7での判定条件は、コードCTの計算を終了する終了条件に相当する。この終了条件が満たされるまで、式(1)に従って繰り返し計算が実行される。ステップS7において、積和演算器13は、カウント値N3とターゲット値Ntとの差を求め、制御回路17に結果を出力する。差が0である場合、制御回路17は、クロック発生回路1がロックしたと判定し、ロック後の動作を行なうように、加算器15およびセレクタ16等を制御する。
【0081】
一方、ステップS7において差が0でない場合、ステップS8において、制御回路17は、積和演算器13にコードを再計算するよう指示する。積和演算器13は、前述の式(1)に従って、ターゲット値Ntを得るためのコードC(i+1)を演算する。ここで、iは、3以上の整数である。
【0082】
続いて、ステップS9において、発振器11は、コードC(i+1)に応じて遅延量を変化させる。カウンタ12はクロック信号CKoutのパルス数をカウントして、カウント値N(i+1)を得る。ステップS9での処理が終了すると、処理は、判定ブロックのステップS7に戻る。なお、ステップS9からステップS7に処理が戻る際に、iが1増分され、i=i+1と設定される。
【0083】
すなわち、演算の再実行時には、コードCi,C(i−1)(第1および第2のコード)として、前回の実行時におけるコードC(i+1),Ciがそれぞれ用いられる。また、演算の再実行時には、カウント値Ni,N(i−1)として、前回実行時におけるカウント値N(i+1)(前回実行時のコードC(i+1)に応じたカウント値)とカウント値Niとがそれぞれ用いられる。
【0084】
このように、実施の形態2においては、カウント値Ni(第3のカウント値)とターゲット値Ntが一致するまで、ステップS7〜S9の処理が繰返される。
【0085】
カウント値は、カウンタ12における切捨て操作により常に整数となる。しかしながら、リファレンスクロック信号CKrefの周期に対するクロック信号CKoutの周期の比は、実際には整数ではない可能性が高い。また、発振器11に含まれる遅延回路の各遅延素子の遅延値も、実際には同一ではなくばらつきが存在する。これらの理由により、実際には、発振周期は、コードに対してリニアに変化しない可能性が高い。
【0086】
式(1)に誤差が生じた場合、1回目の計算で得られたコードC3とコードCTとが異なる場合が生じる。しかしながら、コードC3はコードCTに近似する。従って、コードC2,C3を用いてコードCTの再計算を行なうことにより、前回の演算時よりもコードCTに近似したコードC4が得られる。式(1)の演算を繰返すたびに得られるコードは、コードCTに近づくので、従来よりもロックインタイムを短縮することができる。
【0087】
以上のように、実施の形態2に従えば、コードの計算を繰返し行なうことによって、発振器に含まれる遅延段の特性の誤差や計算の誤差があっても、従来のPLL回路よりもロックインタイムを短縮することができる。
【0088】
[実施の形態3]
実施の形態3に従うクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であり、その詳細説明は省略する。
【0089】
図8は、実施の形態3におけるロックイン状態での処理フローを示す図である。以下、実施の形態2の処理フローを示す図7と対比して、図8に示される実施の形態3の従う処理フローについて説明する。
【0090】
図8および図7を参照して、図8に示す処理フローは、図7に示すステップS7〜S9に代えてステップS11〜S14が含まれる点で、図7に示す処理フローと異なる。他の処理フローの部分は同様であり、以下においては、ステップS11〜S14についてのみ説明し、図7の処理フローと同様の処理ステップに関する説明は、省略する。
【0091】
ステップS11においては、積和演算器13は、式(1)に従ってコードC(i+1)を求める。ここで、iは3以上の整数である。ステップS12において、積和演算器13は、コードC(i+1)とコードCiとの差を求める。
【0092】
差が0である場合、ロック後の動作に移り、処理は終了する。すなわち、実施の形態3においては、コードC(i+1)とコードCiとが一致する場合に、この発明における「終了条件」が満たされる。一方、差が0でない場合には、ステップS13において、発振器11にコードC(i+1)が設定される。ステップS14においては、カウンタ12が、クロック信号CKoutのパルス数をカウントし、コードC(i+1)に応じたカウント値N(i+1)が求められる。ステップS14での処理が終了すると、処理はステップS11に戻る。ステップS14からステップS11に処理が戻る際に、iが1増分され、i=i+1となる。
【0093】
以後、コードC(i+1)がコードCiと一致するまで、ステップS11〜S14の処理が繰返される。
【0094】
デジタル制御の発振回路においては、遅延時間すなわち発振周波数は連続せずに量子化されている。このため、ターゲット値Ntに対応する発振周波数を実現するコードが存在しない場合がある。
【0095】
実施の形態3に従えば、カウント値ではなく、算出コードが変化しなくなるまで、すなわち、ターゲット値に対応したコード(量子化されたコード)に達するまでコードの計算が繰返される。従って、発振周波数が量子化されていても、PLL回路を確実にロックさせることができる。
【0096】
また、実施の形態3においても、コードの計算を繰返すほど、得られるコードがターゲットコードCTに近づくため、現サイクルにおいて計算により得られたコードと前回の計算によって得られたコードとの差が、計算回数が増加するに伴って小さくなるので、ロックインタイムを短縮することができる。
【0097】
[実施の形態4]
実施の形態4のクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であるので、その詳細説明は省略する。
【0098】
図9は、実施の形態4におけるロックイン状態での処理フローを示す図である。以下、図8と図9とを対比して、この発明の実施の形態4に従うロックイン処理動作について説明する。
【0099】
図9および図8を参照して、図9に示すこの発明の実施の形態4に従う処理フローは、ステップS13,S14に代えてステップS21〜S24が含まれる点で、図8に示す実施の形態3に従う処理フローと異なり、他の部分は図8の処理フローと同様である。従って、以下においては、ステップS21〜S24についてのみ説明し、図8の処理フローと同様の処理ステップに関する説明は、省略する。
【0100】
ステップS21において、コードC(i+1)とコードCiとの差が+1か−1かのいずれかであれば、ステップS22において、コードC(i+1)が発振器11に設定されて全体の処理が終了する。すなわち、実施の形態4においては、コードC(i+1)とコードCiとの差が所定の範囲内に含まれる場合に、この発明における「終了条件」が満たされる。
【0101】
一方、ステップS21においてC(i+1)−Ciの値が2以上または−2以下の場合には、ステップS23において、コードC(i+1)が発振器11に設定される。続いて、ステップS24において、クロックカウントが行なわれ、カウント値N(i+1)が求められる。ステップS24での処理が終了すると、再びステップS11においてコードの再計算が行なわれる。また、ステップS24からステップS11に処理が戻る際に、i=i+1と設定されて,iが1増分される。
【0102】
ロックイン終了時の周波数は、遅延段の特性、コード計算、またはデジタル制御による発振周波数の量子化によって、誤差を含んでいる。そのため、理想的なロック判定条件を設定すると、その条件は、ロック後のコード更新の条件よりも厳しくなる場合が多い。
【0103】
コード計算の繰返し回数が多くなると、ロックインタイムの削減効果が減少する。実施の形態4においては、ロック判定条件にある幅を持たせることによって、ロックイン達成を容易としており、ロックインタイムを短縮することができる。
【0104】
なお、先の実施の形態2においても、ロック判定条件(終了条件)に幅を持たせることができる。たとえば、図7のフローチャートにおいて、ステップS7での判定条件を、Ni=NtまたはNi=Nt±1、すなわち、|Ni−Ni+1|≦1に変更する。この条件を満たす場合に、ロックイン全体の処理を終了させることで、実施の形態4と同様の効果が得られる。
【0105】
以上のように、実施の形態4においては、ロック判定条件に幅を持たせており、ロックインタイムを短縮することができる。
【0106】
[実施の形態5]
実施の形態5のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様であるので、その詳細説明は省略する。
【0107】
図10は、この発明の実施の形態5に従うロックイン状態での処理フローを示す図である。以下、図9と図10とを対比して、この発明の実施の形態5に従うロックイン処理動作について説明する。
【0108】
図10および図9を参照して、図10に示すこの発明の実施の形態5に従う処理フローは、ステップS24の後にステップS25が追加されている点で、図9に示す処理フローと異なり、他の部分は図9の処理フローと同様である。従って、以下においては、ステップS25についてのみ説明し、図9の処理フローと同様の処理ステップに関する説明は省略する。
【0109】
ステップS25においては、積和演算器13がコードを計算した回数が、所定回数であるか否かが制御回路17によって判定される。所定回数は、たとえば8回である。計算回数iが、8未満の場合(判定ステップS25においてYES)、処理は、再びステップS11に戻る。一方、計算回数iが8以上の場合(判定ステップS25においてNO)、制御回路17が、積和演算器13に対して演算の終了を指示し、ロックインの全体の処理が終了する。
【0110】
なお、所定回数は、適切に設定される。所定回数が8回であれば、最大でもリファレンスクロック信号CKrefの16番目のサイクルT16においてロックイン時の処理が終了するので、従来の手法よりもロックインタイムを短縮できる。
【0111】
先に、実施の形態4において説明したように、ロック判定条件に幅を持たせることにより、ロックインタイムを短縮できる。しかし、判定条件の幅が小さすぎるとロックインタイムが長くなる。一方、判定条件の幅が大きすぎると、ターゲット値との誤差が大きい状態でロックしたと判定されてしまう。
【0112】
コードの計算回数を制限することにより、デジタル制御による量子化の誤差および/または動作環境の変動(たとえば電源電圧の変動やリファレンスクロックのジッタなど)が小さくなるので、ロック後のコード変動が小さいクロック逓倍器においては、精度よくロックさせることができる。また、上述の誤差が大きくロック後のコードの変動が大きくなるクロック逓倍器においては、発振周波数の精度を下げることにより、ロックインタイムを短縮することができる。
【0113】
なお、実施の形態2に対してもコードの計算回数を制限することにより、実施の形態5と同様の効果を得ることができる。
【0114】
以上のように、実施の形態5に従えば、コードの繰り返し計算回数を制限しており、ロックイン確立時のクロック信号の発振周波数に誤差が存在する場合においても、ロックイン完了とすることができ、ロックインタイムを短縮できる。
【0115】
[実施の形態6]
実施の形態6のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様である。ただし、実施の形態6においては、図3に示す発振器11においてコース遅延回路11Cとファイン遅延回路11Fの両方が用いられる点で、実施の形態1から実施の形態5と異なる。
【0116】
図11は、実施の形態6におけるロックイン状態での処理フローを示す図である。
図11を参照して、処理が開始されると、ステップS1A〜S29の処理においては、ファインコードが固定された状態で、コースコード(第3の数値データ)が決定される。ファインコードは、数値データとしてファイン遅延回路11Fに入力される微調整データに相当する。この微調整データに従って、先の図3に示す信号FA1−FAmが生成される。ファイン遅延回路11Fは、ファインコードに応じてクロック信号CKoutの遅延時間を変化させる。このときのファインコードFは、たとえば「00000」に固定される。この状態においては、図3に示すファイン遅延回路11Fにおいて、遅延素子DLAにより遅延時間Tが与えられる。このファイン遅延回路11Fの遅延時間は、0の状態に初期設定されていてもよく、また、その中央値に初期設定されている構成とされてもよい。
【0117】
上述のように、ステップS1Aでのコード演算基本処理は、図4に示すステップS1〜S5までの一連の処理に対応する。従って、ステップS1A〜S25の各ステップにおける処理は、図10の処理フローにおいて対応するステップの処理と同様であり、それらの詳細説明は省略する。
【0118】
ステップS12において、C(i+1)−Ci=0の場合、ステップS26において、積和演算器13により、発振周波数を高くするか低くするか、すなわち、位相をアップ(Up)するかダウン(Down)するかが判定される。なお、N(i+1)=Ntであれば、リファレンスクロック信号CKrefのエッジが、クロック信号CKoutのHレベルとLレベルとのどちらにあるかにより、位相をアップさせるかダウンさせるかが判定される。
【0119】
ステップS26において、位相をアップさせる場合には、ステップS27においてコースコードが(Ci)−1(コードCiから1を減じたコード)に設定され、遅延時間(発振周期)が短くされる。ステップS26において位相をダウンさせる場合には、ステップS28において、コースコードが(Ci)+1(コードCiに1を加えたコード)に設定され、遅延時間(発振周期)が長くされる。
【0120】
ステップS26〜S28の処理は、コースコードの決定後にファインコードFを計算するために必要なものである。ファインコードFは、最小ファイン遅延量を表現する制御ビットでコースコードを分割した分割数(解像度)を有する。すなわち、コースコードのステップをファインコードFの最大値により除算した幅で、各コースコードのステップが区分される。ファインコードに従ってリニアにファイン遅延回路の遅延時間が変化する。従って、連続した2つのコースコードと、各コースコードに応じたカウント値とから、2点を通る直線を求めて、ターゲット値に対応するカウント値を与える最適なファインコードFを決定することができる。
【0121】
ファイン遅延回路11Fの有する最大遅延時間は、コース遅延回路11CのユニットディレイTである。従って、あるコースコードが1つ前に求められたコースコードに対して±1だけ異なる場合には、1つ前のコースコードとそのコースコードに対応するカウント値とを用いて、ファインコードFを計算することができる。しかし、あるコースコードが1つ前に求められたコースコードと2以上の差がある場合、ファインコードFを計算するためには、+1または−1だけ互いに異なる2つのコースコードと各コースコードに応じたカウント値が必要になる。
【0122】
なお、ステップS12においてC(i+1)−Ci=0,±1であることが、この発明における「終了条件」に相当する。ステップS22,S27,S28において、コースコードが設定されると、続いて、ステップS29において、決定後のコースコードに応じてクロックカウントが行なわれ、カウント値N(i+1)が求められる。ステップS29に続いて、ステップS30においては、カウント値Ni,N(i+1)からファインコードFが計算され、計算後のファインコードFが、ファイン遅延回路11Fに設定される。
【0123】
ファインコードFは、最後に求められたコースコードC(n+1)、およびコースコードC(n+1)の1つ前のコースコードCnとを用いて計算される。ファインコードFを求める演算式を以下に示す。
【0124】
【数2】
【0125】
ここで、FmaxはファインコードFの解像度を示す。たとえばファインコードFのビット数が5であればFmax=32である。また、コードC(n+1),CnについてはC(n+1)=(Cn)±1の関係が成立する。
【0126】
上式(2)は、コードC(n)およびC(n+1)を結ぶ直線上で、ターゲット値Ntに対する解像度Fmaxの比例配分操作を行なうことを示す。
【0127】
なお、式(2)において、ファインコードFがオーバーフローまたはアンダーフローした場合には、ターゲット値がコードC(n)およびC(n+1)を結ぶ直線の間の単位遅延領域(Fmaxで表現可能な領域)にないことを示しており、オーバーフローおよびアンダーフローに応じて、コースコードの増減が行なわれる。このようなオーバーフローまたはアンダーフローは、計算回数の制限により生じる。また、後に詳細に説明するように、ファイン遅延回路の構成(ファインコードに従ってリニアに遅延時間が変化する構成)と設定されるコースコードの値との関係によっても生じる。
【0128】
図12は、図11の処理フローのステップS30における処理を詳細に示す図である。図12を参照して、処理が開始されると、まずステップS31において、カウント値Ni,N(i+1)からファインコードFが計算される。次に、ステップS32において、ファインコードFの計算時にオーバーフローまたはアンダーフローが発生したか否かが判定される。
【0129】
オーバーフローまたはアンダーフローが発生した場合(ステップS32においてYES)、ステップS33においてオーバーフローとアンダーフローとのうちのいずれが発生したかが判定される。オーバーフローが発生した場合には、ターゲット値が、コードC(n)およびC(n+1)により規定される領域よりも遅延時間(発振周期)が長い領域にあり、ステップS34においてコースコードC(n+1)のインクリメントが行なわれる。逆に、アンダーフローが発生した場合には、ステップS35において、コースコードC(n+1)のデクリメントが行なわれる。
【0130】
ステップS34またはステップS35において、コースコードの修正が行なわれると、ファインコード計算のステップS30の全体の処理が終了する。また、ステップS32において、オーバーフローおよびアンダーフローのいずれも発生していない場合(ステップS32においてNO)にも、ステップS30の全体の処理が終了する。
【0131】
図13は、図12に示すステップS31のファインコードの算出方法を説明するための図である。図13において、横軸に周期を取り、縦軸にコードの値を取る。図13において、ファイン遅延回路11Fにおいても、ファインコードに従ってその遅延時間がリニアに変化する。今、ファインコードが5ビットであり、その初期値が(00000)に設定されている状態が、最大遅延時間を与えるとする(図3の遅延素子DLAによる遅延時間)。ファイン遅延回路11Fの遅延ステップは、1/Fmaxである。
【0132】
コードC(i+1)の値がコードCiよりも高い場合を考える。コードCiによりカウント値Niであり、コードC(i+1)のときにカウント値N(i+1)である。この状態においては、図13に示すように、コードCiおよびC(i+1)とカウント値N(i+1)の2点を結ぶ直線を考える。コードCiおよびC(i+1)の差は1であり、この差1が、ファイン遅延回路(11F)の解像度Fmaxにより分割される。
【0133】
従って、直角3角形の相似から、比例配分により、または2点と通る直線の式から差分値FTが求められる。今、コースコードロックインにより、コードC(i+1)がコース遅延回路に設定されている。ファイン遅延回路において、1−FTに従って制御信号FA1−FAmを生成することにより、コースコードC(i+1)により設定された遅延時間を短くして、ターゲット値NTに対応する周期の発振信号を得ることができる。
【0134】
図14は、ファインコード算出時の他の例を示す図である。この図14に示す構成においては、コードCiの値がコードC(i+1)の値よりも大きい。図13に示す場合と同様に、2点を通る直線の式または、相似形に基づく比例配分に従ってファインコードFTを求める。この場合、コースコードC(i+1)が設定されており、ファイン遅延回路において遅延時間を長くして、周期1/Niよりも長いターゲット周期1/NTを設定する必要がある。図3に示すファイン遅延回路11Fの構成においては、遅延時間を短縮する方向にしか、遅延時間を調整することができない。従って、この場合には、前述の式(2)において、符号が負となり、制御信号FA1−FAmにより形成されるコード1−FTにおいて、オーバフローが生じるため、最終のコースコードとして、コースコードC(i+1)をインクリメントして、コードCiが設定される。これにより、正確にファインコードFTに従って、発振器の遅延時間を設定することができる。
【0135】
なお、このアンダーフロー/オーバーフローの発生の判定条件は、ファイン遅延回路の構成に応じて、異なり、ファイン遅延回路の構成に応じて適切に設定される。例えば、ファイン遅延回路において初期値(00000)により、遅延時間が最小値に設定される場合には、遅延時間を長くする方向にしか、遅延時間を調整することができない。この場合には、ファインコードFTに従って制御信号FA1−FAmが生成される。従って、コードC(i+1)がコードCiよりも大きいときに、アンダーフローが生じたと判定され、コードC(i+1)がデクレメントされ、コードCiが設定される。
【0136】
また、計算回数をステップS25において限定している。従って、この場合には、差分値C(i+1)−Ciが1より大きい場合が生じ、ファインコードFTにおいてアンダーフロー/オーバーフローが生じる。この場合においても、アンダーフローおよびオーバーフローの判定条件は、用いられるファイン遅延回路の構成に応じて設定される。
【0137】
図15は、図3に示すファイン遅延回路11FにおいてFA0−FAmとしてFA1−FA3が用いられ、mビットとして3ビットが利用される場合、合成サイズwAと遅延良との関係を一覧にして示す図である。
【0138】
図15において、トライステートバッファ201が、サイズWを有し、トライステートバッファ202が、サイズ2Wを有し、トライステートバッファ203が、サイズ4Wを有する。制御信号FA1−FA3は、最上位ビットがFA3、最下位ビットがFA1として、ファインコードFTとの間に1の補数の関係を満たす。制御信号F0がキャリとして利用される。従って、トライステートバッファの合成サイズwAが、ファインコードFTの値が増加するにつれて、順次減少し、応じて、遅延量が増大する。遅延素子DLAによる遅延時間Tに代えてトライステートバッファ201−203によりファインコードFTに応じた遅延時間が設定される。
【0139】
なお、ファイン遅延回路11Fの構成としては、図16に示すように、複数の縦続接続される遅延素子(遅延線)FDL1−FDLkが用いられてもよい。遅延素子FDL1−FDLkは、それぞれ遅延時間ΔTを有する。ファインコードがmビットのときには、ファイン遅延段数kは、2mで与えられる。遅延素子FDL1−FDLkの出力を、それぞれ、制御信号FC1−FCkに従って導通するスイッチング素子FSW1−FSWkにより選択して内部ノードW4へ、選択遅延素子の出力を結合する。前段のコース遅延回路の出力信号を受ける入力ノードW1に対してスイッチング素子FSW0を設け、入力ノードW1と内部ノードW4との間を短絡して、遅延時間0の状態を実現する。内部ノードW4の信号を駆動力の大きなバッファBFによりバッファ処理して、クロック信号CKoutを生成する。
【0140】
この図16に示すようなファイン遅延回路を利用しても、ファインコードに従って制御信号を選択的にかつ択一的に活性状態とすることにより、ファインコードに従ってリニアに遅延時間を変化させるファイン遅延回路を実現することができ、この実施の形態6に示されるファインコード設定手法に従って、ファインコードを算出してファイン遅延回路の遅延時間を設定することができる。
【0141】
また、図16に示すファイン遅延回路を利用する場合、2つのコースコードCiおよびC(i+1)のうち、コースコードとして値の小さなコースコードを設定して、ファインコードに従って、遅延量を増大させることも可能となる。
【0142】
実施の形態6のように、回路構成が異なる2つの遅延回路が発振器に含まれる場合、電圧依存性や温度依存性などの特性、あるいは仕上がりばらつきなどが異なる。従って、コース遅延回路およびファイン遅延回路を同時に動かしてコードの計算を行なうと、それぞれの誤差が重なり、計算結果の誤差が大きくなる。
【0143】
そこで、実施の形態6においては、まず、ファインコードFを固定してコースコードだけを求め、次に、ファインコードFを求める。実施の形態6では、このような手法に従って各コードを求めることにより、コード計算の誤差を抑えることができる。その結果、計算回数が削減できる可能性が大きくなり、ロックインタイムを短縮することができる。
【0144】
また、実施の形態6において、積和演算器は、コースコードとファインコードとを分けてコードを計算する。これによって、各コードのビット数を小さくすることができ、回路規模を削減することができる。
【0145】
さらに、実施の形態6では、一旦決定したコースコードを用いてファインコードの計算を行なった際に、オーバーフローまたはアンダーフローが生じた場合には、コースコードを変更する。これによって、より精度の高いコード(コースコードおよびファインコード)を得ることが可能になる。
【0146】
[実施の形態7]
実施の形態7のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様であるので、以後の説明は繰返さない。また、実施の形態7のクロック発生回路のロックイン時における処理フローは図4に示す処理フローと同様であるので、その詳細説明は省略する。
【0147】
実施の形態7においては、前述の式(1)に従ってコードを演算する。ただし、式(1)での除算(コードの差分を周期の差分で割る)において得られる商の符号と余りとを確認して、同じ方向に商の丸めを行なう。
【0148】
除算で得られた商を別の値に加算し、小数点以下の数を単に切捨てる丸め処理が行なわれたと仮定する。このような丸め処理では、商が正の場合、和に切り捨てが生じる。一方、商が負の場合、和に切上げが生じる。
【0149】
実施の形態7においては、除算により得られた商について、小数部を切捨てる。商の符号が正であれば、商に対して小数部の切り捨てのみ行なわれる。また、商の符号が負かつ余りが0のときにも、商に対して小数部の切り捨てのみが行なわれる。
【0150】
一方、商が負かつ余りが0でないときは、商の小数部を切り捨て、かつ、商から1を引く。これにより、式(1)に従って得られるコードは、商の符号に関係なく、値を小さくする切捨ての方向に丸め処理される。
【0151】
コードの計算ごとに丸め込みの方向が異なると、計算誤差が増大して、計算回数が増加する可能性がある。実施の形態7においては、商の符号に関係なく同じ方向に丸め込みの処理が行なわれる。これによって、計算誤差を抑制することができ、計算回数が増加するのを防ぐことができ、ロックインタイムを短縮することができる。
【産業上の利用可能性】
【0152】
この発明に従うクロック発生回路は、一般に、リファレンスクロック信号を逓倍してターゲットクロック信号を生成するクロック発生回路に適用することができ、高精度かつ低消費電力のクロック発生回路を実現することができる。従って、この発明に従うクロック発生回路を携帯端末の内部クロック発生回路に適用することにより、携帯端末の電池電源寿命を長くすることのできるクロック発生回路を実現することができる。また、プロセッサなどのLSIにおいてクロック発生回路に適用することにより、低消費電力のLSIを実現することができる。
【0153】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0154】
【図1】この発明のクロック発生回路の適用例を示す図である。
【図2】図1のクロック発生回路1の構成を示す概略図である。
【図3】図2の発振器11の構成例を示す図である。
【図4】実施の形態1におけるロックイン状態での処理フローを示す図である。
【図5】ロックイン状態での処理を詳細に説明する図である。
【図6】コードCTを求める演算式を説明する図である。
【図7】実施の形態2におけるロックイン状態での処理フローを示す図である。
【図8】実施の形態3におけるロックイン状態での処理フローを示す図である。
【図9】実施の形態4におけるロックイン状態での処理フローを示す図である。
【図10】実施の形態5におけるロックイン状態での処理フローを示す図である。
【図11】実施の形態6におけるロックイン状態での処理フローを示す図である。
【図12】図11の処理フローにおけるステップS30での処理を詳細に示す図である。
【図13】この発明の実施の形態6におけるファインコード算出を説明するための図である。
【図14】この発明の実施の形態6における別のコースコードの組合わせに対するファインコード算出を説明するための図である。
【図15】ファイン遅延回路の遅延制御信号および遅延量とファインコードとの対応関係の一例を一覧にして示す図である。
【図16】ファイン遅延回路の変更例を示す図である。
【符号の説明】
【0155】
1 クロック発生回路、2 処理部、11 発振器、11C コース遅延回路、11F ファイン遅延回路、12 カウンタ、13 積和演算器、14 レジスタ、15 加算器、16 セレクタ、17 制御回路、18 デコーダ、19 レジスタ、22 インバータ、24 キャパシタ、50 電子機器、100 半導体集積回路、201〜20m トライステートバッファ、DL1〜DLn,DLA 遅延素子、NA1 NAND回路、S1〜S35,S1A 基本演算処理ステップ、SW1〜SWn スイッチ、W1〜W3 ノード。
【技術分野】
【0001】
この発明はクロック発生回路に関し、特に数十kHz程度のクロック信号から数十MHz程度のクロック信号を生成する高逓倍のクロック逓倍器に関する。
【背景技術】
【0002】
マイクロコンピュータやプロセッサ等のLSI(Large Scale Integrated circuit)において、クロック信号は内部回路や外部デバイスとの同期を取るために必要とされる信号である。多くの場合、LSIには数十kHz程度の周波数のクロック信号から数十MHz程度のクロック信号を生成するクロック逓倍器が内蔵される。
【0003】
クロック逓倍器は数十kHz程度のクロック信号から1000逓倍以上という高逓倍のクロック信号を生成する。このためクロック逓倍器は、たとえば逓倍数をカウントするカウンタを備えた高精度のデジタルPLL(Phase Locked Loop)回路により構成される。
【0004】
デジタルPLL回路(以下、単に「PLL回路」とも称する)ではリファレンスクロック信号の1周期に出力されるクロック信号のパルス数(逓倍数)がターゲット値と比較される。発振器は制御コードに応じ、たとえばクロック信号の遅延時間を変化させて発振周期を変化させる。パルス数とターゲット値との比較結果に基づいて制御コードの更新(制御コードのインクリメントまたはデクリメント)が行なわれることで、パルス数とターゲット値とが一致する。
【0005】
PLL回路がロックした状態ではリファレンスクロックの1周期ごとに制御コードの更新が行なわれる。リファレンスクロック信号の周波数が32kHzの場合には、1周期すなわち約31μsに1回、制御コードが更新される。ロックイン時にはロック後の動作(通常動作)と異なるフローに従ってPLL回路の処理が実行される。
【0006】
ロックイン時には「クロック信号のパルス数のカウント」と「結果判定および制御コードの更新」とがリファレンスクロック信号の1周期ごとに繰返し行なわれる。つまり制御コードはリファレンスクロック信号の2周期(62μs)に1回更新される。ロックするまでに制御コードの設定が16回必要であれば、ロックインタイムは32周期(約1ms)となる。
【0007】
従来のデジタルPLL回路では精度を上げるため、制御コードの1ビットあたりの遅延値を小さくし、制御コードのビット数を増やすという手法が一般的に用いられる。しかし、この手法によればロックインタイムが増大するという問題が生じる。たとえば制御コードが16ビット(65536ステップ)のデジタルPLL回路の場合、制御コードの初期値を中央値に設定し、最小値または最大値まで制御コードを順次変化させると、処理ステップの数は32768になる。
【0008】
このような問題を解決するため、たとえば特開平10−22822号公報(特許文献1)に開示されたデジタルPLL回路では、ロックイン動作時には位相比較結果をもとにして、最上位のビット(MSB)から最下位のビット(LSB)に向けて制御コードを順次変化させる二分検索法が用いられる。この手法では制御コードが16ビットの場合、制御コードの値によらず16回コードを設定することによってクロック信号の周期を目標の周期に設定することができる。
【特許文献1】特開平10−22822号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
高精度のデジタルPLL回路により構成されるクロック逓倍器の場合には、位相差を正確に検出するために、リファレンスクロック信号の周波数が低い(1周期の時間が長い)ため、ロックインタイムが長くなるという問題がある。特開平10−22822号公報(特許文献1)に開示された手法を用いても同様の問題が生じる。この特許文献1の手法によれば、リファレンスクロックの周波数が32kHzで制御コードのビット数が16であれば、判定およびコード設定に2サイクルが必要とされ、ロックインタイムは約1msになる。二分検索の初期値の設定のためのサイクルを考慮すると、制御コードが、mビットのときには、リファレンスクロックの2・(m+1)サイクルが必要とされる。
【0010】
たとえば携帯電話に内蔵されるLSIにおいて、スタンバイモードでは消費電力の低減を図るためクロック逓倍器への電源供給が停止される。ロックインタイムが長くなるとスタンバイ状態からのリカバリ時間が長くなるため、LSIをスタンバイモードに移行させることが難しくなる。しかしながら、LSIをスタンバイモードに移行できないと、携帯電話の消費電力が増加する。従って、PLL回路のロックインタイムを短くすることが必要になる。
【0011】
リカバリ時間が長いということは、LSIが処理を再開できるようになるまでのペナルティ時間が長いということを意味する。LSIへの入力が無効となってからスタンバイモードへの移行の可否を判定するまでの期間を短くすれば、LSIはスタンバイモードに頻繁に移行することになる。この場合には、判定後に有効な入力が与えられる状態が増加し、スタンバイモードの期間が短くなるとともにLSIをスタンバイモードから復帰させる回数が増える。この結果、スタンバイモードの期間が短いにも関わらず、復帰させるごとに長いリカバリ時間が必要となり、LSIの処理の効率が落ちる。
【0012】
この発明の目的は、ロックインタイムを短くすることが可能なクロック発生回路を提供することである。
【課題を解決するための手段】
【0013】
この発明に係るクロック発生回路は、与えられた数値データに応じてクロック信号の周期を変化させる発振器と、クロック信号のパルス数を所定期間カウントし、カウント値を出力するカウンタと、カウント値に基づいて、クロック信号の周期を目標周期に設定するために発振器に与える数値データの演算を行なう演算器とを備える。演算器は、第1および第2の数値データを順次出力し、第1および第2の数値データの出力に応じて受ける第1および第2ののカウント値とから、与えられた目標周期に応じた第3の数値データを決定する。
【発明の効果】
【0014】
この発明のクロック発生回路によれば、2つの数値データ、および各数値データに応じたクロック信号のパルス数のカウント値から、クロック信号の周期を目標周期に設定するために発振器に与える数値データを演算しており、ロックインタイムを短縮できる。
【発明を実施するための最良の形態】
【0015】
以下、この発明の実施の形態について図面を参照して詳細に説明する。なお、各図中同一符号は、同一または相当部分を示す。
【0016】
[実施の形態1]
図1は、この発明に従うクロック発生回路の適用例を示す図である。図1を参照して、電子機器50は、通常動作状態とスタンバイ状態とを切換えることができる電子機器であり、たとえば携帯電話である。電子機器50は、各種機能を実現するための半導体集積回路100を含む。半導体集積回路100は、逓倍数の大きいクロック信号を必要とするLSIであればよく、特にその用途は限定されない。なお、図1に示さないが、電子機器50は、半導体集積回路100以外にも、各種の機能を実行するための回路(たとえば携帯電話における送受信回路等)を含む。
【0017】
半導体集積回路100は、クロック発生回路1と、クロック発生回路1から出力されるクロック信号CKoutに同期して処理を実行する処理部2とを備える。クロック発生回路1は、たとえば32kHzのリファレンスクロック信号CKrefを受けて、数十MHzのクロック信号CKoutを出力する。
【0018】
処理部2は、クロック発生回路1に対しターゲット値Nt、イネーブル信号EN、およびリセット信号RSTを送る。ターゲット値Ntは、クロック信号CKoutの目標周期に対応する値であり、具体的にはリファレンスクロック信号CKrefの1周期(たとえば31μsである)におけるクロック信号CKoutのパルス数(逓倍数)の目標値である。リファレンスクロック信号CKrefの1周期は、この発明に従うクロック発生回路における「所定期間」に相当する。
【0019】
イネーブル信号ENは、クロック発生回路1を動作状態に設定する信号である。リセット信号RSTは、クロック発生回路1の動作をリセットする信号である。
【0020】
ターゲット値Ntおよび信号ENは、処理部2に含まれるモード制御回路(図示せず)から送出され、リセット信号RSTは、処理部2に含まれるリセット回路(図示せず)から送出される。ただし、ターゲット値Ntおよび信号EN,RSTは、半導体集積回路100の外部から、例えばオペレータ操作に従って入力されてもよい。
【0021】
リファレンスクロックCKrefは、この電子機器50内において、特に限定されないが、例えば水晶発振子を用いた発振器から発生される。
【0022】
図2は、図1のクロック発生回路1の構成を概略的に示す図である。図2を参照して、クロック発生回路1は、入力される数値データに応じてクロック信号CKoutの周期を変化させる発振器11と、クロック信号CKoutのパルス数をカウントし、リファレンスクロック信号CKrefの1周期内にカウントしたパルス数をカウント値として出力するカウンタ12と、カウント値に従って、クロック信号CKoutの周期を目標周期に設定するために発振器11に与える数値データの演算を行なう積和演算器13と、ターゲット値Ntを一時的に格納するレジスタ14と、コードのインクリメント(またはデクリメント)を行なう加算器15とを含む。
【0023】
発振器11は、積和演算器13または加算器15から与えられた数値データの変化に対してクロック信号CKoutの遅延時間をリニアに変化させる。すなわち、発振器11は、例えば遅延列を含むリングオシレータで構成され、数値データに従って遅延列の遅延時間が設定されて、応じて、発振器11の発振周波数/位相が設定される。
【0024】
積和演算器13は、この発明に従うクロック発生回路における「演算器」に相当する。また、「目標周期」は、ターゲット値Ntの逆数で与えられる。
【0025】
ロックイン時には、発振器11、カウンタ12および積和演算器13によりPLL回路が構成され、ロック後は、発振器11、カウンタ12および加算器15によりPLL回路が構成される。クロック発生回路1における「ロック状態」とは、カウンタ12によるカウント値とターゲット値Ntとの差が0もしくは極めて小さい状態(許容誤差内の状態)を示す。ロックイン状態においては、ロック状態を設定する数値データを求める動作(ロック検索動作)が行なわれる。
【0026】
同期引き込みを行うロックイン状態においては、積和演算器13は、2つの数値データを出力する。カウンタ12は、各数値データが発振器11に設定されたときのクロック信号CKoutのパルス数をカウントする。積和演算器13は、第1および第2の数値データを順次出力し、第1および第2の数値データの出力にそれぞれ応じた第1および第2ののカウント値を受ける。積和演算器13は、これらの第1および第2のカウント値から、積和演算を行って、与えられた目標周期(ターゲット値Nt)に応じた数値データを決定する。後に詳細に説明するように、数値データのビット数に関係なく、数値データを3回設定するだけでクロック発生回路1をロックさせることができ、ロックインタイムを短くすることができる。
【0027】
なお、積和演算器13および加算器15から出力される数値データは、一定の規則に従って符号化されており、以下の説明においては、符号化された数値データのことを「コード」と称する。
【0028】
加算器15は、ロック後にカウント値Niとターゲット値Ntとを比較し、該比較結果に従って、ロックイン状態で決定されたコードのインクリメントまたはデクリメントを行なう。
【0029】
クロック発生回路1は、さらに、制御回路17から受ける信号に従って積和演算器13および加算器15の一方からのコードを選択して出力するセレクタ16と、各機能ブロックの動作タイミングを規定するタイミング信号を生成する制御回路17と、セレクタ16からレジスタ19を介して与えられたコードをデコードするデコーダ18とを含む。
【0030】
制御回路17からのタイミング信号に従って、ロック時には、リファレンスクロック信号CKrefの1周期ごとにコードが計算される。また、制御回路17は、リセット解除後、ロック検索動作のために、各機能ブロックに対するタイミング信号および制御信号を生成する。
【0031】
制御回路17は、ロックイン状態時に、積和演算器13における演算結果に基づいてロック判定を行ない、この判定結果に従ってセレクタ16の選択経路を制御する信号を生成する。この選択経路制御信号に従って、セレクタ16は、ロックイン時には積和演算器13から与えられるコードをレジスタ19に出力し、ロック後は加算器15から与えられるコードをレジスタ19に出力する。
【0032】
制御回路17は、さらに、イネーブル信号ENに応じて、ロック検索動作の過程(ロックイン状態)において、発振器11の発振を制御するための発振制御信号IENを生成する。この発振制御信号に従って、発振器11が、選択的に発振動作を行う。
【0033】
レジスタ19は、セレクタ16から送出されたコードを一時的に格納し、制御回路17から与えられる制御信号に応答して、格納したコードCiを出力する。すなわち、レジスタ19は、ロックイン時には、デコーダ18および積和演算器13にコードCiを送出し、ロック時には、デコーダ18および加算器15にコードCiを送出する。
【0034】
デコーダ18は、レジスタ19を介して受けるコードをデコードして、発振器11での遅延量(発振周波数)を決定する数値データを生成する。
【0035】
なお、カウンタ12、積和演算器13、加算器15、セレクタ16、制御回路17、デコーダ18は、たとえば論理合成によって生成される一般的な回路により構成される。
【0036】
図3は、図2に示す発振器11の構成の一例を示す図である。図3を参照して、発振器11は、遅延量が疎調整されるコース遅延回路11Cと、遅延量が微調整されるファイン遅延回路11Fと、発振器11の発振動作を発振制御信号IENに従って選択的に活性化/停止させるNAND回路NA1とを含む。
【0037】
ファイン遅延回路11Fは、コース遅延回路11Cと「粒度」が異なる回路である。「粒度」とは遅延回路においてユニットディレイ(コード1つ分の遅延値;遅延ステップ値)を意味する。たとえば、コース遅延回路11Cのユニットディレイが160psであり、ファイン遅延コードが5ビット(32個の状態を表現)で構成されているとすると、ファイン遅延回路11Fのユニットディレイは160/32=5psとなる。すなわち、ファイン遅延回路11Fは、コース遅延回路11Cよりもクロック信号CKoutの遅延時間を小さく変化させる回路である。
【0038】
コース遅延回路11Cは、デコーダ18から与えられる信号CC1〜CCn(nは自然数)に応じて遅延量が決定され、ファイン遅延回路11Fは、デコーダ18から与えられる信号F0およびFA1〜FAm(mは自然数であり、たとえばm=5)に応じて遅延量が決定される。これらのコース遅延回路11Cおよびファイン遅延回路11Fは、ともに、積和演算器13から送られるコードに対して遅延時間をリニアに変化させることができる。
【0039】
コース遅延回路11Cは、n個の縦続接続される遅延素子DL1〜DLnと、遅延素子DL1〜DLnの出力それぞれに対応して設けられるスイッチSW1〜SWnとを含む。スイッチSW1〜SWnは、コース遅延回路11Cの出力に並列に結合され、信号CC1〜CCnそれぞれに応答して導通する。信号CC1〜CCnは、デコーダ18により1つが選択状態とされ、応じて、スイッチSW1〜SWnの1つが導通状態に設定される。これにより、コース遅延回路11Cの遅延段数が設定され、応じて、遅延時間が決定される。なお、遅延素子DL1〜DLnは、それぞれ、同一の遅延時間を有し、各々の遅延量Tが、コース遅延回路11Cのユニットディレイに対応し、たとえば160psである。
【0040】
遅延素子DL1〜DLnは、それぞれ、遅延線で構成されてもよく、また、偶数段のインバータで構成されてもよい。それぞれが同一の遅延時間を与える構成であれば、このR遅延素子DL1〜DLnとしては、どのような構成が利用されてもよい。
【0041】
ファイン遅延回路11Fは、コース遅延回路11Cの出力信号を受ける入力ノードW1と内部ノードW3の間に接続される遅延素子DLAと、ノードW1およびW3の間に互いに並列に接続されるトライステートバッファ201〜20mと、内部ノードW3とファイン遅延回路11Fの出力ノードとの間に接続されるトライステートバッファ22と、内部ノードW3と接地ノードとの間に接続されるキャパシタ24とを備える。
【0042】
遅延素子DLAは、コース遅延回路11Cの遅延素子DL1〜DLnそれぞれと同一の遅延時間を有し、制御信号F0に従って選択的に活性状態とされる。この制御信号F0は、制御信号FA1〜FAmが全て非活性状態のときに活性状態に設定され、このファイン遅延回路11Fの初期遅延時間を与える。通常、ロックイン動作時においては、コース遅延回路11Cにより遅延時間を粗いステップで設定した後に、ファイン遅延回路11Fにより、粗く設定された遅延時間が微調整される。コース遅延回路11Cによる遅延時間の設定操作時においては、ファイン遅延回路11Fの遅延時間は、デフォルト値に設定され、このデフォルト値が遅延素子DLAにより与えられる。従って、この遅延素子DLAは、遅延時間が0のトランスミッションゲートで置き換えることも可能である。
【0043】
トライステートバッファ201−20mは、それぞれデコーダ18から与えられる制御信号FA1−FAmに従って選択的に動作状態とされ、非活性状態においては出力ハイインピーダンス状態に設定される。
【0044】
キャパシタ24は、内部ノードW3の供給される電流に応じて充電電圧を変化させる。このキャパシタ24の充電電圧の変化速度に応じて、遅延時間が設定される。
【0045】
トライステートバッファ22は、内部ノードW3の信号をバッファ処理して出力端子からクロック信号CKoutを出力する。
【0046】
トライステートバッファ201−20mは、各々、偶数段(例えば2段)の縦続接続されるクロックドインバータで構成される。トライステートバッファ201内のクロックドインバータを構成するPチャネルMOSトランジスタとNチャネルMOSトランジスタは、チャネル幅(以下単に「サイズ」という。)wを有し、トライステートバッファ202は、トランジスタは、サイズ2wを有し、トライステートバッファ20mは、トランジスタサイズ2m-1×wを有する。ただし、チャネル長Lを全て同じとしている。
【0047】
ここで、PチャネルMOSトランジスタとNチャネルMOSトランジスタとは、同じサイズ(チャネル幅)を有する必要はない。トライステートバッファ201〜20mにおいて、それぞれ、PチャネルMOSトランジスタおよびNチャネルMOSトランジスタそれぞれについて上述のサイズの関係が満たされていればよい。
【0048】
このトランジスタサイズの調整により、トライステートバッファ201−20mの電流駆動力が、2のべき乗に従って順次増大され、この結果、遅延時間が2のべき乗に従って減少される。
【0049】
トライステートバッファ201−20mは、ノードW1およびW3の間に並列に接続されており、デコーダからの信号FA1−FAmに従って、内部ノードW3に対する電流駆動力を調整することができ、キャパシタ24の充放電速度を調整することができ、応じて、内部ノードW3に伝達される信号に対する遅延時間を調整することができる(電流駆動力が大きくなれば、遅延時間が短くなる)。
【0050】
トライステートバッファ201〜20mの出力駆動トランジスタ(PおよびNチャネルMOSトランジスタ各々)の合成サイズwAは、サイズwのステップで、信号FA1〜FAmに従って、(2m−1)×wから0まで変化する。最小遅延時間を与えるトライステートバッファ20mの有する遅延時間をΔTとすると、合成サイズがw増加するごとに、遅延時間がΔTだけ短くされる。ノードW2から出力されるクロック信号CKoutは、ノードW1に入力される信号に対して、合成サイズwAに応じてユニットディレイ時間Tuステップで遅延する。具体的に、mビットの信号FA1〜FAmにより、合成サイズがwAのときの遅延時間ΔT(wA)は次式で与えられる。
【0051】
ΔT(wA)= (2(m+1)−(wA/w))ΔT
トライステートバッファ20mの有する遅延時間ΔTが、遅延素子DL1−DLnおよびDLA各々の有する遅延時間Tの1/2m倍に設定される。例えば、mが5ビットで、コースユニットディレイTが160psのときには,ファインユニットディレイΔTは、32psに設定される。
【0052】
NAND回路NA1は、発振制御信号IENとクロック信号CKoutとを受けて、コース遅延回路の初段の遅延素子DL1にその出力信号を供給する。発振制御信号IENが立上がると、NAND回路NA1がインバータとして動作し、リングオシレータが形成され、発振器11からクロック信号CKoutが出力可能になる。発振制御信号IENが立下がると、NAND回路NA1の出力信号がHレベルに固定され、発振器11の発振が停止する。
【0053】
なお、この発明の実施の形態1では、コース遅延回路11Cのみが用いられる。従って、実施の形態1では、発振器11は、コース遅延回路のみを含むように構成されていてもよい。また、実施の形態1では、ファイン遅延回路11Fに与えられる信号F0,FA1〜FAmが一定であってもよい(それぞれの電圧レベルが固定される)。この場合、信号F0が活性状態で、残りの信号F1〜Fmが非活性状態に設定されていてもよく、また、信号F0が非活性状態で、信号FA1〜FAmが、選択的に活性状態に設定されていてもよい。ファイン遅延回路11Fの遅延時間が固定されていればよい。以下では、説明の便宜上、発振器11はコース遅延回路11Cのみを含むものとして説明する。
【0054】
図4は、この発明の実施の形態1に従うロックイン状態での処理フローを示す図である。なお、以下に説明する発振器11、カウンタ12、積和演算器13の動作は、制御回路17により制御される。
【0055】
図4を参照して、処理が開始されると、まず、ステップS1において、レジスタ14に処理部2から与えられたターゲット値Ntが設定される。また、発振器11に含まれる遅延回路の遅延段数を初期設定するために、積和演算器13により初期コードC1が設定される。コードC1により、遅延段数は最終段までの段数nの1/2に設定される。コードC1は、たとえば7ビットのコード「1000000」で示される。セレクタ16は、積和演算器13の出力コードを選択する状態に設定される。積和演算器13からのコードに従って発振器11の発振周波数が設定される。
【0056】
ステップS2において、カウンタ12は、クロック信号CKoutのパルス数のカウント(クロックカウント)を行ない、レファレンスクロック信号CKrefの1周期内でカウント値N1を得る。
【0057】
ステップS3において、積和演算器13は、このカウント値N1に基づいてコードC2を設定する。コードC2によって、遅延段数は、最終段までの段数nの3/4に設定される。コードC2はたとえば「1100000」と示される。
【0058】
ステップS4において、カウンタ12は再びクロックカウントを行ない、カウント値N2を得る。
【0059】
ステップS5において、積和演算器13は、カウント値N1,N2からターゲット値Ntに対応するコードC3(第3の数値データ)を演算し、発振器11に対してコードC3を出力する。これにより、発振器11にはコードC3が設定される。ステップS5での処理が終了すると、ロックイン全体の処理が終了し、クロック発生回路1はロック後の動作、すなわち通常動作を行なう。すなわち、加算器15の出力コードに従って、発振器11の発振周波数の調整が行われる。
【0060】
この手法は、いわゆる二分検索法に一部類似するように見える。しかしながら、本実施の形態1においては、カウント値N1とターゲット値Ntとの比較の基づいて、第2のコードC2を設定するのではなく、この第2のコードC2のコード値は、予め定められている。発振器においては、コードCの値に従って遅延時間がリニアに変化しており、2つのコードC1、C2と対応のカウント値N1、N2とから、2点を通る直線を求め、この直線上でのターゲット値Ntに対応するコードC3を求める。
【0061】
従って、第2のコードC2が予め定められていても、ターゲット値Ntに対応するコードを算出することができる。勿論、カウント値N1とターゲット値Ntとの比較結果に従って、第2のコードC2が設定されてもよい。発振器の動作特性が、リニアリティからずれている場合、ターゲット値Ntに近い領域において直線近似を行うため、リニアリティからのずれが小さい領域でコード算出を行うことができる。
【0062】
なお、以後は説明の便宜のため、ステップS1〜S5の処理を「コード演算基本処理」と称し、ステップS1〜S5の処理を1つのステップS1Aにまとめて示す。
【0063】
図5は、ロックイン状態での処理を詳細に説明する図である。図5を参照して、リセット解除後のリファレンスクロック信号CKrefのn番目のサイクルをTnと示す。図5では、サイクルT1〜T8が示される。
【0064】
サイクルT1において、ターゲット値Ntがレジスタ14に設定され、積和演算器13によりコードC1が設定される。サイクルT2において、クロックカウントが行なわれてカウント値N1が求められる。
【0065】
サイクルT3において、積和演算器13によりコードC2が設定される。サイクルT4において、クロックカウントが行なわれ、カウント値N2が求められる。
【0066】
サイクルT5において、積和演算器13によりコードC1,C2およびカウント値N1,N2からコードC3が求められる。サイクルT6においてクロックカウントが行なわれ、カウント値N3が求められる。
【0067】
サイクルT7以後、ロック後の動作が行なわれる。サイクルT7において、加算器15が、カウント値N3とターゲット値Ntとを比較して(減算を行なって)、クロック信号CKoutの発振周波数を上げるか下げるかを判定する。発振周波数を上げる(カウント値を上げる)場合には、コードC3のデクリメントを行なう(遅延回路の遅延段数を低減する)。発振周波数を下げる(カウント値を下げる)場合には、コードC3のインクリメントを行なう(遅延回路の遅延段数を増大させる)。
【0068】
サイクルT7においては、また、更新後のコードに応じたクロックパルスのカウントが行なわれる。サイクルT8以後、サイクルT7と同様に、加算器15は、前のサイクルでのカウント値をターゲット値Ntと比較し、その比較結果に従って発振周波数を上げるか下げるかの判定を行なう。この判定結果に従ってコードのインクリメント(またはデクリメント)を行なう。また、同じサイクルにおいて、更新後のコードに従って設定されたクロックパルスのカウントが行なわれる。
【0069】
以下に、クロック信号CKoutの目標周期に対応するコードCTを求める演算式(1)を示す。式(1)において、iは2以上の整数であり、実施の形態1ではCT=C3である。なお、コードC(i−1),Ciは、それぞれ、この発明における「第1の数値データ」および「第2の数値データ」に対応し、カウント値N(i−1),Niは、それぞれ、この発明における「第1のカウント値」および「第2のカウント値」に相当する。また、各()内の数字は、式(1)内の下付の文字に対応する。
【0070】
【数1】
【0071】
発振器11は、数値データに対して遅延量、すなわち発振周期がリニアに変化するという特性を持つ。この発明に従うクロック発生回路は、このような特性を有する発振器を備えることにより、2つの数値データCi,Ci−1の差分と2つの発振周期の差分1/Ni、1/N(i−1)とから、周期の変化に対する数値データの変化の割合を用いて第3の数値データに対応するコードCTを算出することができる。発振周期は、カウント値の逆数で表わされるため、上述の式(1)が得られる。
【0072】
図6は、コード(第3の数値)CTを求める演算式を説明する図である。
図6を参照して、グラフの横軸は発振周期すなわちカウント値の逆数を示し、グラフの縦軸はコードを示す。発振周期に対しコードはリニアに変化する。グラフの直線の傾きは、(Ci−C(i+1))/(1/Ni−1/N(i+1))である。従って、この2点を通る直線を求めることにより、ターゲット値Ntに対応するコードを求めることができる。
【0073】
次に、実施の形態1による効果について説明する。たとえばコードが、mビット(mは自然数)の場合、特開平10−22822号公報(特許文献1)に示される二分検索法では、m回のコード設定およびクロックカウントが行なわれるため、ロックするまでにリファレンスクロックの2・mサイクルが必要になる。
【0074】
実施の形態1によれば、コードのビット数とロックインタイムとは関係しない。実施の形態1では、ロックイン状態において3回のコード生成/設定と2回のクロックカウントが行なわれればよい。従って、リファレンスクロック信号CKrefの6サイクル目でクロック発生回路1をロックさせることができる。
【0075】
以上のように、実施の形態1に従えば、コードを3回設定するだけでクロック発生回路をロックさせることができるので、ロックインタイムを短縮することができる。
【0076】
また、実施の形態1によれば、このクロック発生回路を内蔵するLSIにおいてスタンバイモードからのリカバリ時間を短縮することができる。リカバリ時間におけるロックイン時間の割合が高い(たとえば約60%)ほど、リカバリ時間が大幅に短縮される。
【0077】
さらに、実施の形態1によれば、クロック発生回路を内蔵するLSIのリカバリ時間が短縮されるので、このLSIを搭載したシステム(たとえば携帯電話)をスタンバイモードに遷移させる回数を増やすことができる。よって、システムの消費電力を下げることができる。
【0078】
[実施の形態2]
実施の形態2におけるクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であり、その詳細説明は省略する。
【0079】
図7は、実施の形態2におけるロックイン状態での処理フローを示す図である。
図7を参照して、処理が開始されると、まず、ステップS1〜S5においてコードC3が求められる。図7の処理フローにおけるステップS1〜S5でのそれぞれの処理は、図4の基本演算処理フローS1AにおけるステップS1〜S5におけるそれぞれの処理と同様であり、その詳細説明は省略する。基本演算処理ステップS1Aの実行後、ステップS6において、カウンタ12は、クロックカウントを行なって、コードC3に対応するカウント値N3を得る。
【0080】
ステップS7での判定条件は、コードCTの計算を終了する終了条件に相当する。この終了条件が満たされるまで、式(1)に従って繰り返し計算が実行される。ステップS7において、積和演算器13は、カウント値N3とターゲット値Ntとの差を求め、制御回路17に結果を出力する。差が0である場合、制御回路17は、クロック発生回路1がロックしたと判定し、ロック後の動作を行なうように、加算器15およびセレクタ16等を制御する。
【0081】
一方、ステップS7において差が0でない場合、ステップS8において、制御回路17は、積和演算器13にコードを再計算するよう指示する。積和演算器13は、前述の式(1)に従って、ターゲット値Ntを得るためのコードC(i+1)を演算する。ここで、iは、3以上の整数である。
【0082】
続いて、ステップS9において、発振器11は、コードC(i+1)に応じて遅延量を変化させる。カウンタ12はクロック信号CKoutのパルス数をカウントして、カウント値N(i+1)を得る。ステップS9での処理が終了すると、処理は、判定ブロックのステップS7に戻る。なお、ステップS9からステップS7に処理が戻る際に、iが1増分され、i=i+1と設定される。
【0083】
すなわち、演算の再実行時には、コードCi,C(i−1)(第1および第2のコード)として、前回の実行時におけるコードC(i+1),Ciがそれぞれ用いられる。また、演算の再実行時には、カウント値Ni,N(i−1)として、前回実行時におけるカウント値N(i+1)(前回実行時のコードC(i+1)に応じたカウント値)とカウント値Niとがそれぞれ用いられる。
【0084】
このように、実施の形態2においては、カウント値Ni(第3のカウント値)とターゲット値Ntが一致するまで、ステップS7〜S9の処理が繰返される。
【0085】
カウント値は、カウンタ12における切捨て操作により常に整数となる。しかしながら、リファレンスクロック信号CKrefの周期に対するクロック信号CKoutの周期の比は、実際には整数ではない可能性が高い。また、発振器11に含まれる遅延回路の各遅延素子の遅延値も、実際には同一ではなくばらつきが存在する。これらの理由により、実際には、発振周期は、コードに対してリニアに変化しない可能性が高い。
【0086】
式(1)に誤差が生じた場合、1回目の計算で得られたコードC3とコードCTとが異なる場合が生じる。しかしながら、コードC3はコードCTに近似する。従って、コードC2,C3を用いてコードCTの再計算を行なうことにより、前回の演算時よりもコードCTに近似したコードC4が得られる。式(1)の演算を繰返すたびに得られるコードは、コードCTに近づくので、従来よりもロックインタイムを短縮することができる。
【0087】
以上のように、実施の形態2に従えば、コードの計算を繰返し行なうことによって、発振器に含まれる遅延段の特性の誤差や計算の誤差があっても、従来のPLL回路よりもロックインタイムを短縮することができる。
【0088】
[実施の形態3]
実施の形態3に従うクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であり、その詳細説明は省略する。
【0089】
図8は、実施の形態3におけるロックイン状態での処理フローを示す図である。以下、実施の形態2の処理フローを示す図7と対比して、図8に示される実施の形態3の従う処理フローについて説明する。
【0090】
図8および図7を参照して、図8に示す処理フローは、図7に示すステップS7〜S9に代えてステップS11〜S14が含まれる点で、図7に示す処理フローと異なる。他の処理フローの部分は同様であり、以下においては、ステップS11〜S14についてのみ説明し、図7の処理フローと同様の処理ステップに関する説明は、省略する。
【0091】
ステップS11においては、積和演算器13は、式(1)に従ってコードC(i+1)を求める。ここで、iは3以上の整数である。ステップS12において、積和演算器13は、コードC(i+1)とコードCiとの差を求める。
【0092】
差が0である場合、ロック後の動作に移り、処理は終了する。すなわち、実施の形態3においては、コードC(i+1)とコードCiとが一致する場合に、この発明における「終了条件」が満たされる。一方、差が0でない場合には、ステップS13において、発振器11にコードC(i+1)が設定される。ステップS14においては、カウンタ12が、クロック信号CKoutのパルス数をカウントし、コードC(i+1)に応じたカウント値N(i+1)が求められる。ステップS14での処理が終了すると、処理はステップS11に戻る。ステップS14からステップS11に処理が戻る際に、iが1増分され、i=i+1となる。
【0093】
以後、コードC(i+1)がコードCiと一致するまで、ステップS11〜S14の処理が繰返される。
【0094】
デジタル制御の発振回路においては、遅延時間すなわち発振周波数は連続せずに量子化されている。このため、ターゲット値Ntに対応する発振周波数を実現するコードが存在しない場合がある。
【0095】
実施の形態3に従えば、カウント値ではなく、算出コードが変化しなくなるまで、すなわち、ターゲット値に対応したコード(量子化されたコード)に達するまでコードの計算が繰返される。従って、発振周波数が量子化されていても、PLL回路を確実にロックさせることができる。
【0096】
また、実施の形態3においても、コードの計算を繰返すほど、得られるコードがターゲットコードCTに近づくため、現サイクルにおいて計算により得られたコードと前回の計算によって得られたコードとの差が、計算回数が増加するに伴って小さくなるので、ロックインタイムを短縮することができる。
【0097】
[実施の形態4]
実施の形態4のクロック発生回路の構成自体は、図2に示すクロック発生回路1の構成と同様であるので、その詳細説明は省略する。
【0098】
図9は、実施の形態4におけるロックイン状態での処理フローを示す図である。以下、図8と図9とを対比して、この発明の実施の形態4に従うロックイン処理動作について説明する。
【0099】
図9および図8を参照して、図9に示すこの発明の実施の形態4に従う処理フローは、ステップS13,S14に代えてステップS21〜S24が含まれる点で、図8に示す実施の形態3に従う処理フローと異なり、他の部分は図8の処理フローと同様である。従って、以下においては、ステップS21〜S24についてのみ説明し、図8の処理フローと同様の処理ステップに関する説明は、省略する。
【0100】
ステップS21において、コードC(i+1)とコードCiとの差が+1か−1かのいずれかであれば、ステップS22において、コードC(i+1)が発振器11に設定されて全体の処理が終了する。すなわち、実施の形態4においては、コードC(i+1)とコードCiとの差が所定の範囲内に含まれる場合に、この発明における「終了条件」が満たされる。
【0101】
一方、ステップS21においてC(i+1)−Ciの値が2以上または−2以下の場合には、ステップS23において、コードC(i+1)が発振器11に設定される。続いて、ステップS24において、クロックカウントが行なわれ、カウント値N(i+1)が求められる。ステップS24での処理が終了すると、再びステップS11においてコードの再計算が行なわれる。また、ステップS24からステップS11に処理が戻る際に、i=i+1と設定されて,iが1増分される。
【0102】
ロックイン終了時の周波数は、遅延段の特性、コード計算、またはデジタル制御による発振周波数の量子化によって、誤差を含んでいる。そのため、理想的なロック判定条件を設定すると、その条件は、ロック後のコード更新の条件よりも厳しくなる場合が多い。
【0103】
コード計算の繰返し回数が多くなると、ロックインタイムの削減効果が減少する。実施の形態4においては、ロック判定条件にある幅を持たせることによって、ロックイン達成を容易としており、ロックインタイムを短縮することができる。
【0104】
なお、先の実施の形態2においても、ロック判定条件(終了条件)に幅を持たせることができる。たとえば、図7のフローチャートにおいて、ステップS7での判定条件を、Ni=NtまたはNi=Nt±1、すなわち、|Ni−Ni+1|≦1に変更する。この条件を満たす場合に、ロックイン全体の処理を終了させることで、実施の形態4と同様の効果が得られる。
【0105】
以上のように、実施の形態4においては、ロック判定条件に幅を持たせており、ロックインタイムを短縮することができる。
【0106】
[実施の形態5]
実施の形態5のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様であるので、その詳細説明は省略する。
【0107】
図10は、この発明の実施の形態5に従うロックイン状態での処理フローを示す図である。以下、図9と図10とを対比して、この発明の実施の形態5に従うロックイン処理動作について説明する。
【0108】
図10および図9を参照して、図10に示すこの発明の実施の形態5に従う処理フローは、ステップS24の後にステップS25が追加されている点で、図9に示す処理フローと異なり、他の部分は図9の処理フローと同様である。従って、以下においては、ステップS25についてのみ説明し、図9の処理フローと同様の処理ステップに関する説明は省略する。
【0109】
ステップS25においては、積和演算器13がコードを計算した回数が、所定回数であるか否かが制御回路17によって判定される。所定回数は、たとえば8回である。計算回数iが、8未満の場合(判定ステップS25においてYES)、処理は、再びステップS11に戻る。一方、計算回数iが8以上の場合(判定ステップS25においてNO)、制御回路17が、積和演算器13に対して演算の終了を指示し、ロックインの全体の処理が終了する。
【0110】
なお、所定回数は、適切に設定される。所定回数が8回であれば、最大でもリファレンスクロック信号CKrefの16番目のサイクルT16においてロックイン時の処理が終了するので、従来の手法よりもロックインタイムを短縮できる。
【0111】
先に、実施の形態4において説明したように、ロック判定条件に幅を持たせることにより、ロックインタイムを短縮できる。しかし、判定条件の幅が小さすぎるとロックインタイムが長くなる。一方、判定条件の幅が大きすぎると、ターゲット値との誤差が大きい状態でロックしたと判定されてしまう。
【0112】
コードの計算回数を制限することにより、デジタル制御による量子化の誤差および/または動作環境の変動(たとえば電源電圧の変動やリファレンスクロックのジッタなど)が小さくなるので、ロック後のコード変動が小さいクロック逓倍器においては、精度よくロックさせることができる。また、上述の誤差が大きくロック後のコードの変動が大きくなるクロック逓倍器においては、発振周波数の精度を下げることにより、ロックインタイムを短縮することができる。
【0113】
なお、実施の形態2に対してもコードの計算回数を制限することにより、実施の形態5と同様の効果を得ることができる。
【0114】
以上のように、実施の形態5に従えば、コードの繰り返し計算回数を制限しており、ロックイン確立時のクロック信号の発振周波数に誤差が存在する場合においても、ロックイン完了とすることができ、ロックインタイムを短縮できる。
【0115】
[実施の形態6]
実施の形態6のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様である。ただし、実施の形態6においては、図3に示す発振器11においてコース遅延回路11Cとファイン遅延回路11Fの両方が用いられる点で、実施の形態1から実施の形態5と異なる。
【0116】
図11は、実施の形態6におけるロックイン状態での処理フローを示す図である。
図11を参照して、処理が開始されると、ステップS1A〜S29の処理においては、ファインコードが固定された状態で、コースコード(第3の数値データ)が決定される。ファインコードは、数値データとしてファイン遅延回路11Fに入力される微調整データに相当する。この微調整データに従って、先の図3に示す信号FA1−FAmが生成される。ファイン遅延回路11Fは、ファインコードに応じてクロック信号CKoutの遅延時間を変化させる。このときのファインコードFは、たとえば「00000」に固定される。この状態においては、図3に示すファイン遅延回路11Fにおいて、遅延素子DLAにより遅延時間Tが与えられる。このファイン遅延回路11Fの遅延時間は、0の状態に初期設定されていてもよく、また、その中央値に初期設定されている構成とされてもよい。
【0117】
上述のように、ステップS1Aでのコード演算基本処理は、図4に示すステップS1〜S5までの一連の処理に対応する。従って、ステップS1A〜S25の各ステップにおける処理は、図10の処理フローにおいて対応するステップの処理と同様であり、それらの詳細説明は省略する。
【0118】
ステップS12において、C(i+1)−Ci=0の場合、ステップS26において、積和演算器13により、発振周波数を高くするか低くするか、すなわち、位相をアップ(Up)するかダウン(Down)するかが判定される。なお、N(i+1)=Ntであれば、リファレンスクロック信号CKrefのエッジが、クロック信号CKoutのHレベルとLレベルとのどちらにあるかにより、位相をアップさせるかダウンさせるかが判定される。
【0119】
ステップS26において、位相をアップさせる場合には、ステップS27においてコースコードが(Ci)−1(コードCiから1を減じたコード)に設定され、遅延時間(発振周期)が短くされる。ステップS26において位相をダウンさせる場合には、ステップS28において、コースコードが(Ci)+1(コードCiに1を加えたコード)に設定され、遅延時間(発振周期)が長くされる。
【0120】
ステップS26〜S28の処理は、コースコードの決定後にファインコードFを計算するために必要なものである。ファインコードFは、最小ファイン遅延量を表現する制御ビットでコースコードを分割した分割数(解像度)を有する。すなわち、コースコードのステップをファインコードFの最大値により除算した幅で、各コースコードのステップが区分される。ファインコードに従ってリニアにファイン遅延回路の遅延時間が変化する。従って、連続した2つのコースコードと、各コースコードに応じたカウント値とから、2点を通る直線を求めて、ターゲット値に対応するカウント値を与える最適なファインコードFを決定することができる。
【0121】
ファイン遅延回路11Fの有する最大遅延時間は、コース遅延回路11CのユニットディレイTである。従って、あるコースコードが1つ前に求められたコースコードに対して±1だけ異なる場合には、1つ前のコースコードとそのコースコードに対応するカウント値とを用いて、ファインコードFを計算することができる。しかし、あるコースコードが1つ前に求められたコースコードと2以上の差がある場合、ファインコードFを計算するためには、+1または−1だけ互いに異なる2つのコースコードと各コースコードに応じたカウント値が必要になる。
【0122】
なお、ステップS12においてC(i+1)−Ci=0,±1であることが、この発明における「終了条件」に相当する。ステップS22,S27,S28において、コースコードが設定されると、続いて、ステップS29において、決定後のコースコードに応じてクロックカウントが行なわれ、カウント値N(i+1)が求められる。ステップS29に続いて、ステップS30においては、カウント値Ni,N(i+1)からファインコードFが計算され、計算後のファインコードFが、ファイン遅延回路11Fに設定される。
【0123】
ファインコードFは、最後に求められたコースコードC(n+1)、およびコースコードC(n+1)の1つ前のコースコードCnとを用いて計算される。ファインコードFを求める演算式を以下に示す。
【0124】
【数2】
【0125】
ここで、FmaxはファインコードFの解像度を示す。たとえばファインコードFのビット数が5であればFmax=32である。また、コードC(n+1),CnについてはC(n+1)=(Cn)±1の関係が成立する。
【0126】
上式(2)は、コードC(n)およびC(n+1)を結ぶ直線上で、ターゲット値Ntに対する解像度Fmaxの比例配分操作を行なうことを示す。
【0127】
なお、式(2)において、ファインコードFがオーバーフローまたはアンダーフローした場合には、ターゲット値がコードC(n)およびC(n+1)を結ぶ直線の間の単位遅延領域(Fmaxで表現可能な領域)にないことを示しており、オーバーフローおよびアンダーフローに応じて、コースコードの増減が行なわれる。このようなオーバーフローまたはアンダーフローは、計算回数の制限により生じる。また、後に詳細に説明するように、ファイン遅延回路の構成(ファインコードに従ってリニアに遅延時間が変化する構成)と設定されるコースコードの値との関係によっても生じる。
【0128】
図12は、図11の処理フローのステップS30における処理を詳細に示す図である。図12を参照して、処理が開始されると、まずステップS31において、カウント値Ni,N(i+1)からファインコードFが計算される。次に、ステップS32において、ファインコードFの計算時にオーバーフローまたはアンダーフローが発生したか否かが判定される。
【0129】
オーバーフローまたはアンダーフローが発生した場合(ステップS32においてYES)、ステップS33においてオーバーフローとアンダーフローとのうちのいずれが発生したかが判定される。オーバーフローが発生した場合には、ターゲット値が、コードC(n)およびC(n+1)により規定される領域よりも遅延時間(発振周期)が長い領域にあり、ステップS34においてコースコードC(n+1)のインクリメントが行なわれる。逆に、アンダーフローが発生した場合には、ステップS35において、コースコードC(n+1)のデクリメントが行なわれる。
【0130】
ステップS34またはステップS35において、コースコードの修正が行なわれると、ファインコード計算のステップS30の全体の処理が終了する。また、ステップS32において、オーバーフローおよびアンダーフローのいずれも発生していない場合(ステップS32においてNO)にも、ステップS30の全体の処理が終了する。
【0131】
図13は、図12に示すステップS31のファインコードの算出方法を説明するための図である。図13において、横軸に周期を取り、縦軸にコードの値を取る。図13において、ファイン遅延回路11Fにおいても、ファインコードに従ってその遅延時間がリニアに変化する。今、ファインコードが5ビットであり、その初期値が(00000)に設定されている状態が、最大遅延時間を与えるとする(図3の遅延素子DLAによる遅延時間)。ファイン遅延回路11Fの遅延ステップは、1/Fmaxである。
【0132】
コードC(i+1)の値がコードCiよりも高い場合を考える。コードCiによりカウント値Niであり、コードC(i+1)のときにカウント値N(i+1)である。この状態においては、図13に示すように、コードCiおよびC(i+1)とカウント値N(i+1)の2点を結ぶ直線を考える。コードCiおよびC(i+1)の差は1であり、この差1が、ファイン遅延回路(11F)の解像度Fmaxにより分割される。
【0133】
従って、直角3角形の相似から、比例配分により、または2点と通る直線の式から差分値FTが求められる。今、コースコードロックインにより、コードC(i+1)がコース遅延回路に設定されている。ファイン遅延回路において、1−FTに従って制御信号FA1−FAmを生成することにより、コースコードC(i+1)により設定された遅延時間を短くして、ターゲット値NTに対応する周期の発振信号を得ることができる。
【0134】
図14は、ファインコード算出時の他の例を示す図である。この図14に示す構成においては、コードCiの値がコードC(i+1)の値よりも大きい。図13に示す場合と同様に、2点を通る直線の式または、相似形に基づく比例配分に従ってファインコードFTを求める。この場合、コースコードC(i+1)が設定されており、ファイン遅延回路において遅延時間を長くして、周期1/Niよりも長いターゲット周期1/NTを設定する必要がある。図3に示すファイン遅延回路11Fの構成においては、遅延時間を短縮する方向にしか、遅延時間を調整することができない。従って、この場合には、前述の式(2)において、符号が負となり、制御信号FA1−FAmにより形成されるコード1−FTにおいて、オーバフローが生じるため、最終のコースコードとして、コースコードC(i+1)をインクリメントして、コードCiが設定される。これにより、正確にファインコードFTに従って、発振器の遅延時間を設定することができる。
【0135】
なお、このアンダーフロー/オーバーフローの発生の判定条件は、ファイン遅延回路の構成に応じて、異なり、ファイン遅延回路の構成に応じて適切に設定される。例えば、ファイン遅延回路において初期値(00000)により、遅延時間が最小値に設定される場合には、遅延時間を長くする方向にしか、遅延時間を調整することができない。この場合には、ファインコードFTに従って制御信号FA1−FAmが生成される。従って、コードC(i+1)がコードCiよりも大きいときに、アンダーフローが生じたと判定され、コードC(i+1)がデクレメントされ、コードCiが設定される。
【0136】
また、計算回数をステップS25において限定している。従って、この場合には、差分値C(i+1)−Ciが1より大きい場合が生じ、ファインコードFTにおいてアンダーフロー/オーバーフローが生じる。この場合においても、アンダーフローおよびオーバーフローの判定条件は、用いられるファイン遅延回路の構成に応じて設定される。
【0137】
図15は、図3に示すファイン遅延回路11FにおいてFA0−FAmとしてFA1−FA3が用いられ、mビットとして3ビットが利用される場合、合成サイズwAと遅延良との関係を一覧にして示す図である。
【0138】
図15において、トライステートバッファ201が、サイズWを有し、トライステートバッファ202が、サイズ2Wを有し、トライステートバッファ203が、サイズ4Wを有する。制御信号FA1−FA3は、最上位ビットがFA3、最下位ビットがFA1として、ファインコードFTとの間に1の補数の関係を満たす。制御信号F0がキャリとして利用される。従って、トライステートバッファの合成サイズwAが、ファインコードFTの値が増加するにつれて、順次減少し、応じて、遅延量が増大する。遅延素子DLAによる遅延時間Tに代えてトライステートバッファ201−203によりファインコードFTに応じた遅延時間が設定される。
【0139】
なお、ファイン遅延回路11Fの構成としては、図16に示すように、複数の縦続接続される遅延素子(遅延線)FDL1−FDLkが用いられてもよい。遅延素子FDL1−FDLkは、それぞれ遅延時間ΔTを有する。ファインコードがmビットのときには、ファイン遅延段数kは、2mで与えられる。遅延素子FDL1−FDLkの出力を、それぞれ、制御信号FC1−FCkに従って導通するスイッチング素子FSW1−FSWkにより選択して内部ノードW4へ、選択遅延素子の出力を結合する。前段のコース遅延回路の出力信号を受ける入力ノードW1に対してスイッチング素子FSW0を設け、入力ノードW1と内部ノードW4との間を短絡して、遅延時間0の状態を実現する。内部ノードW4の信号を駆動力の大きなバッファBFによりバッファ処理して、クロック信号CKoutを生成する。
【0140】
この図16に示すようなファイン遅延回路を利用しても、ファインコードに従って制御信号を選択的にかつ択一的に活性状態とすることにより、ファインコードに従ってリニアに遅延時間を変化させるファイン遅延回路を実現することができ、この実施の形態6に示されるファインコード設定手法に従って、ファインコードを算出してファイン遅延回路の遅延時間を設定することができる。
【0141】
また、図16に示すファイン遅延回路を利用する場合、2つのコースコードCiおよびC(i+1)のうち、コースコードとして値の小さなコースコードを設定して、ファインコードに従って、遅延量を増大させることも可能となる。
【0142】
実施の形態6のように、回路構成が異なる2つの遅延回路が発振器に含まれる場合、電圧依存性や温度依存性などの特性、あるいは仕上がりばらつきなどが異なる。従って、コース遅延回路およびファイン遅延回路を同時に動かしてコードの計算を行なうと、それぞれの誤差が重なり、計算結果の誤差が大きくなる。
【0143】
そこで、実施の形態6においては、まず、ファインコードFを固定してコースコードだけを求め、次に、ファインコードFを求める。実施の形態6では、このような手法に従って各コードを求めることにより、コード計算の誤差を抑えることができる。その結果、計算回数が削減できる可能性が大きくなり、ロックインタイムを短縮することができる。
【0144】
また、実施の形態6において、積和演算器は、コースコードとファインコードとを分けてコードを計算する。これによって、各コードのビット数を小さくすることができ、回路規模を削減することができる。
【0145】
さらに、実施の形態6では、一旦決定したコースコードを用いてファインコードの計算を行なった際に、オーバーフローまたはアンダーフローが生じた場合には、コースコードを変更する。これによって、より精度の高いコード(コースコードおよびファインコード)を得ることが可能になる。
【0146】
[実施の形態7]
実施の形態7のクロック発生回路の構成自体は、図2のクロック発生回路1の構成と同様であるので、以後の説明は繰返さない。また、実施の形態7のクロック発生回路のロックイン時における処理フローは図4に示す処理フローと同様であるので、その詳細説明は省略する。
【0147】
実施の形態7においては、前述の式(1)に従ってコードを演算する。ただし、式(1)での除算(コードの差分を周期の差分で割る)において得られる商の符号と余りとを確認して、同じ方向に商の丸めを行なう。
【0148】
除算で得られた商を別の値に加算し、小数点以下の数を単に切捨てる丸め処理が行なわれたと仮定する。このような丸め処理では、商が正の場合、和に切り捨てが生じる。一方、商が負の場合、和に切上げが生じる。
【0149】
実施の形態7においては、除算により得られた商について、小数部を切捨てる。商の符号が正であれば、商に対して小数部の切り捨てのみ行なわれる。また、商の符号が負かつ余りが0のときにも、商に対して小数部の切り捨てのみが行なわれる。
【0150】
一方、商が負かつ余りが0でないときは、商の小数部を切り捨て、かつ、商から1を引く。これにより、式(1)に従って得られるコードは、商の符号に関係なく、値を小さくする切捨ての方向に丸め処理される。
【0151】
コードの計算ごとに丸め込みの方向が異なると、計算誤差が増大して、計算回数が増加する可能性がある。実施の形態7においては、商の符号に関係なく同じ方向に丸め込みの処理が行なわれる。これによって、計算誤差を抑制することができ、計算回数が増加するのを防ぐことができ、ロックインタイムを短縮することができる。
【産業上の利用可能性】
【0152】
この発明に従うクロック発生回路は、一般に、リファレンスクロック信号を逓倍してターゲットクロック信号を生成するクロック発生回路に適用することができ、高精度かつ低消費電力のクロック発生回路を実現することができる。従って、この発明に従うクロック発生回路を携帯端末の内部クロック発生回路に適用することにより、携帯端末の電池電源寿命を長くすることのできるクロック発生回路を実現することができる。また、プロセッサなどのLSIにおいてクロック発生回路に適用することにより、低消費電力のLSIを実現することができる。
【0153】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0154】
【図1】この発明のクロック発生回路の適用例を示す図である。
【図2】図1のクロック発生回路1の構成を示す概略図である。
【図3】図2の発振器11の構成例を示す図である。
【図4】実施の形態1におけるロックイン状態での処理フローを示す図である。
【図5】ロックイン状態での処理を詳細に説明する図である。
【図6】コードCTを求める演算式を説明する図である。
【図7】実施の形態2におけるロックイン状態での処理フローを示す図である。
【図8】実施の形態3におけるロックイン状態での処理フローを示す図である。
【図9】実施の形態4におけるロックイン状態での処理フローを示す図である。
【図10】実施の形態5におけるロックイン状態での処理フローを示す図である。
【図11】実施の形態6におけるロックイン状態での処理フローを示す図である。
【図12】図11の処理フローにおけるステップS30での処理を詳細に示す図である。
【図13】この発明の実施の形態6におけるファインコード算出を説明するための図である。
【図14】この発明の実施の形態6における別のコースコードの組合わせに対するファインコード算出を説明するための図である。
【図15】ファイン遅延回路の遅延制御信号および遅延量とファインコードとの対応関係の一例を一覧にして示す図である。
【図16】ファイン遅延回路の変更例を示す図である。
【符号の説明】
【0155】
1 クロック発生回路、2 処理部、11 発振器、11C コース遅延回路、11F ファイン遅延回路、12 カウンタ、13 積和演算器、14 レジスタ、15 加算器、16 セレクタ、17 制御回路、18 デコーダ、19 レジスタ、22 インバータ、24 キャパシタ、50 電子機器、100 半導体集積回路、201〜20m トライステートバッファ、DL1〜DLn,DLA 遅延素子、NA1 NAND回路、S1〜S35,S1A 基本演算処理ステップ、SW1〜SWn スイッチ、W1〜W3 ノード。
【特許請求の範囲】
【請求項1】
与えられる数値データに応じてクロック信号の周期を変化させる発振器と、
前記クロック信号のパルス数を所定期間カウントし、カウント値を出力するカウンタと、
前記カウント値に基づいて、前記クロック信号の周期を目標周期に設定するために前記発振器に与える前記数値データの演算を行なう演算器とを備え、
前記演算器は、第1および第2の数値データを順次出力し、前記第1および第2の数値データの出力に応じて受ける第1および第2のカウント値と前記目標周期を示すデータとから、前記目標周期に応じた第3の数値データを決定する、クロック発生回路。
【請求項2】
前記発振器は、前記数値データに対して前記クロック信号の周期をリニアに変化させる、請求項1に記載のクロック発生回路。
【請求項3】
前記演算器は、前記演算を終了する終了条件が満たされるまで、前記演算を繰り返し実行し、
前記演算の再実行時には、前記第1および第2の数値データとして、前回実行時における前記第2の数値データおよび前記第3の数値データがそれぞれ用いられ、前記第1および第2のカウント値として、前記前回実行時における前記第2のカウント値と前記第3の数値データに応じた第3のカウント値とがそれぞれ用いられる、請求項1に記載のクロック発生回路。
【請求項4】
前記終了条件は、前記第3のカウント値と前記目標周期に対応する値とが一致する条件である、請求項3に記載のクロック発生回路。
【請求項5】
前記終了条件は、前記第3の数値データが、前記前回実行時に得られた前記第3の数値データに一致する条件である、請求項3に記載のクロック発生回路。
【請求項6】
前記終了条件は、前記第3のカウント値と前記目標周期に対応する値との差が所定の範囲内に含まれる条件である、請求項3に記載のクロック発生回路。
【請求項7】
前記終了条件は、前記第3の数値データと、前記前回実行時に得られた前記第3の数値データとの差が、所定の範囲内に含まれる条件である、請求項3に記載のクロック発生回路。
【請求項8】
前記演算の回数が所定回数に達した場合に、前記演算を終了するよう前記演算器に指示する制御回路をさらに備える、請求項3に記載のクロック発生回路。
【請求項9】
前記発振器は、
前記第3の数値データを受けて前記クロック信号の遅延時間を変化させるコース遅延回路と、
前記数値データとして入力される微調整データに従って、前記コース遅延回路よりも前記遅延時間を小さく変化させるファイン遅延回路とを含み、
前記演算器は、前記第3の数値データを決定した後に、前記微調整データをさらに求める、請求項3に記載のクロック発生回路。
【請求項10】
前記演算器は、前記第3の数値データと前記前回実行時に得られた前記第3の数値データと前記目標周期を指示するデータとから前記微調整データを求める、請求項9に記載のクロック発生回路。
【請求項11】
前記演算器は、前記微調整データを求める際にオーバーフローまたはアンダーフローが発生した場合には、前記第3の数値データを修正する、請求項9に記載のクロック発生回路。
【請求項12】
前記演算器は、前記クロック信号の周期の変化に対する前記数値データの変化の割合を求め、前記変化の割合を用いて前記第3の数値データを決定する、請求項1に記載のクロック発生回路。
【請求項13】
前記演算器は、前記第1および第2の数値データから得られる数値データの差分を、前記第1および第2のカウント値から得られる前記周期の差分で除算して商と剰余とを求め、前記商が正の場合、または、前記商が負でありかつ前記剰余が0の場合には、前記商の小数部の切捨てを行なって前記変化の割合を求め、前記商が負でありかつ前記剰余が0でない場合には、前記小数部の切捨てを行なうとともに切捨て後の商から1を減算して前記変化の割合を求める、請求項12に記載のクロック発生回路。
【請求項1】
与えられる数値データに応じてクロック信号の周期を変化させる発振器と、
前記クロック信号のパルス数を所定期間カウントし、カウント値を出力するカウンタと、
前記カウント値に基づいて、前記クロック信号の周期を目標周期に設定するために前記発振器に与える前記数値データの演算を行なう演算器とを備え、
前記演算器は、第1および第2の数値データを順次出力し、前記第1および第2の数値データの出力に応じて受ける第1および第2のカウント値と前記目標周期を示すデータとから、前記目標周期に応じた第3の数値データを決定する、クロック発生回路。
【請求項2】
前記発振器は、前記数値データに対して前記クロック信号の周期をリニアに変化させる、請求項1に記載のクロック発生回路。
【請求項3】
前記演算器は、前記演算を終了する終了条件が満たされるまで、前記演算を繰り返し実行し、
前記演算の再実行時には、前記第1および第2の数値データとして、前回実行時における前記第2の数値データおよび前記第3の数値データがそれぞれ用いられ、前記第1および第2のカウント値として、前記前回実行時における前記第2のカウント値と前記第3の数値データに応じた第3のカウント値とがそれぞれ用いられる、請求項1に記載のクロック発生回路。
【請求項4】
前記終了条件は、前記第3のカウント値と前記目標周期に対応する値とが一致する条件である、請求項3に記載のクロック発生回路。
【請求項5】
前記終了条件は、前記第3の数値データが、前記前回実行時に得られた前記第3の数値データに一致する条件である、請求項3に記載のクロック発生回路。
【請求項6】
前記終了条件は、前記第3のカウント値と前記目標周期に対応する値との差が所定の範囲内に含まれる条件である、請求項3に記載のクロック発生回路。
【請求項7】
前記終了条件は、前記第3の数値データと、前記前回実行時に得られた前記第3の数値データとの差が、所定の範囲内に含まれる条件である、請求項3に記載のクロック発生回路。
【請求項8】
前記演算の回数が所定回数に達した場合に、前記演算を終了するよう前記演算器に指示する制御回路をさらに備える、請求項3に記載のクロック発生回路。
【請求項9】
前記発振器は、
前記第3の数値データを受けて前記クロック信号の遅延時間を変化させるコース遅延回路と、
前記数値データとして入力される微調整データに従って、前記コース遅延回路よりも前記遅延時間を小さく変化させるファイン遅延回路とを含み、
前記演算器は、前記第3の数値データを決定した後に、前記微調整データをさらに求める、請求項3に記載のクロック発生回路。
【請求項10】
前記演算器は、前記第3の数値データと前記前回実行時に得られた前記第3の数値データと前記目標周期を指示するデータとから前記微調整データを求める、請求項9に記載のクロック発生回路。
【請求項11】
前記演算器は、前記微調整データを求める際にオーバーフローまたはアンダーフローが発生した場合には、前記第3の数値データを修正する、請求項9に記載のクロック発生回路。
【請求項12】
前記演算器は、前記クロック信号の周期の変化に対する前記数値データの変化の割合を求め、前記変化の割合を用いて前記第3の数値データを決定する、請求項1に記載のクロック発生回路。
【請求項13】
前記演算器は、前記第1および第2の数値データから得られる数値データの差分を、前記第1および第2のカウント値から得られる前記周期の差分で除算して商と剰余とを求め、前記商が正の場合、または、前記商が負でありかつ前記剰余が0の場合には、前記商の小数部の切捨てを行なって前記変化の割合を求め、前記商が負でありかつ前記剰余が0でない場合には、前記小数部の切捨てを行なうとともに切捨て後の商から1を減算して前記変化の割合を求める、請求項12に記載のクロック発生回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2008−17422(P2008−17422A)
【公開日】平成20年1月24日(2008.1.24)
【国際特許分類】
【出願番号】特願2006−189375(P2006−189375)
【出願日】平成18年7月10日(2006.7.10)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】
【公開日】平成20年1月24日(2008.1.24)
【国際特許分類】
【出願日】平成18年7月10日(2006.7.10)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】
[ Back to top ]