以下、本発明のデータ通信回路、及び、電子装置を適用した実施の形態について説明する。
<実施の形態1>
図1は、実施の形態1のデータ通信回路を含むLSI(Large Scale Integrated circuit:大規模集積回路)を示す図である。
LSIチップ10は、CPU(Central Processing Unit:中央演算処理装置)20、コントローラ30、送信器40、及び受信器50を含む。LSIチップ10は、電子装置の一例である。
LSIチップ10に含まれるコントローラ30、送信器40、及び受信器50は、データ通信回路の一例である。CPU20は、データ通信回路(コントローラ30、送信器40、及び受信器50)によって送信及び受信されるデータの処理を行う処理部の一例である。
コントローラ30、送信器40、及び受信器50はそれぞれ4つあり、平面視で矩形のCPU20の四辺に沿って、1つずつ配設されている。CPU20は、
このようなLSIチップ10は、例えば、サーバ又はPC(Personal Computer)等のような情報処理装置の内部に配設され、ハードディスクのような外部記憶装置、モニタのような表示部、マウス、キーボード等の入力部等の装置と専用のバスラインを介して接続されている。
LSIチップ10は、送信器40でデータをLSIチップ10の外の装置に送信するとともに、受信器50でLSIチップ10の外の装置からデータを受信する。送信器40と受信器50によるデータの送受信は、コントローラ30によって行われる。
コントローラ30は、SERDES(SERializer/DESerializer)の制御を行う制御部である。
ここで、送信器40及び受信器50は、それぞれ、n個のTX(送信部)及びn個のRX(受信部)を有しており、データの送信用又は受信用の複数の回路の一例である。送信器40は、コントローラ30から入力される送信データをパラレルデータからシリアルデータに変換して送信する。また、受信器50は、受信データをシリアルデータからパラレルデータに変換してコントローラ30に入力する。
図1には、データ通信回路が送信器40及び受信器50の両方を含む形態を示すが、データ通信回路は、送信器40又は受信器50のいずれか一方を含む形態であってもよい。
また、図1には、電子装置の一例としてLSIチップ10を示したが、電子装置は、例えば、携帯電話端末機、スマートフォンの端末機、PC(Personal Computer)、サーバ等であってもよい。
図2は、実施の形態1のデータ通信回路100を示す図である。
データ通信回路100は、PLL(Phase Locked Loop:位相同期回路)110、DLL(Delay Locked Loop:ディレイロックループ)120、SERDES制御部130、送信器140、及び受信器150を含む。
PLL110は、例えば、水晶発振器TCXOに接続されており、VCO(Voltage Controlled Oscillator:電圧制御発振器)、分周器、位相検出器、チャージポンプ、及びLPF(Low Pass Filter)で構築されるループ回路を含む。位相検出器には、水晶発振器TCXOによって出力される基準クロック(REF_CK(不図示))が分周器を介して入力するとともに、ループ回路に含まれる分周器から出力されるクロックが入力される。
PLL110は、位相検出器への2つの入力クロックの位相が等しくなるように制御を行い、VCOが出力するクロックをPLL110の出力として出力するクロック出力部の一例である。このようにして、PLL110からクロックPLL_CKが出力され、DLL120に入力される。クロックPLL_CKは、送信器140及び受信器150が通常動作を行う際に用いるクロックと同一の周波数を有するクロックである。通常動作とは、後述する遅延量の調整が終了した後に、データ通信回路100が行う動作をいう。
DLL120は、CP/LPF121、VDL122A〜122H、及びスキューアジャスタ(Skew Adjuster)123を含む位相調整部の一例である。
CP/LPF121は、チャージポンプ(CP:Charge Pump)とローパスフィルタ(LPF:Low Pass Filter)を一つのブロックとして表したものである。
CP/LPF121のCPには、スキューアジャスタ123からEARLY信号又はLATE信号が入力され、LPFは、CPから出力される電流を積分し、積分結果を表す制御電圧VCNTLを出力する。LPFが出力する制御電圧VCNTLは、VDL122A〜122HがクロックCK1〜CK8に与える遅延量を制御するための制御電圧であり、VDL122A〜122Hの各々に入力される。
CP/LPF121は、スキューアジャスタ123からEARLY信号が入力されると、クロックCKに対してクロックCK_RETURNの位相を進める(遅延量を減少させる)ための制御電圧VCNTLを出力する。
一方、CP/LPF121は、スキューアジャスタ123からLATE信号が入力されると、クロックCKに対してクロックCK_RETURNの位相を遅らせる(遅延量を増大させる)ための制御電圧VCNTLを出力する。
なお、制御電圧VCNTLの電圧値は、ここでは一例として、遅延量を増大させる際には低下し、遅延量を減少させる際には上昇するものとする。
VDL(Variable Delay Line)122A〜122Hは、遅延量制御端子122A1〜122H1にCP/LPF121のLPFから入力される制御電圧VCNTLに基づき、入力クロックCKに与える遅延量を設定する遅延素子の一例である。
VDL122A〜122Hは、それぞれ、入力クロックに所定の遅延量を与えることにより、クロックCK1〜CK8を出力する。VDL122Aは、スキューアジャスタ123から入力されるクロックCKに遅延量を与えてクロックCK1を出力する。
VDL122B〜122Hは、それぞれ、クロックCK1〜CK7に遅延量を与えることにより、クロックCK2〜CK8を出力する。なお、VDL122Hが出力するクロックCK8は、クロックCK_RETURNと同一である。
VDL122A〜122Hは、例えば、CMOS(Complementary Metal Oxide Semiconductor:相補的金属酸化膜半導体)インバータで構築され、制御電圧VCNTLに応じた所定の遅延量を入力クロックに与えて出力する遅延素子を用いることができる。
VDL122Aのクロック入力端子はスキューアジャスタ123に接続されており、クロックCKが入力される。
VDL122Aのクロック出力端子、VDL122B〜122Gのクロック入力端子及びクロック出力端子、及び、VDL122Hのクロック入力端子は、図2に示すように直列に接続されている。
また、VDL122A〜122Hのクロック出力端子は、それぞれ、送信器140のTX0〜TX3、及び、受信器150のRX0〜RX3に接続されている。このため、VDL122A〜122Hから出力されるクロックCK1〜CK8は、それぞれ、TX0〜TX3及びRX0〜RX3に動作基準クロックとして入力される。
VDL122Hのクロック出力端子は、スキューアジャスタ123に接続されており、VDL122Hのクロック出力端子から出力されるクロックCK_RETURNは、スキューアジャスタ123に入力される。
なお、図2では、見易さを優先してVDL122A〜122Hのクロック入力端子及びクロック出力端子には符号を付さずに示す。
スキューアジャスタ123は、PLL110から入力されるクロックPLL_CKが入力され、クロックPLL_CKのパルスの数を1/8にしたクロックCKを出力する。
また、スキューアジャスタ123は、クロックCKと、VDL122Hから入力されるクロックCK_RETURNとの位相差を検出し、位相差が所定の位相差になるように、EARLY信号又はLATE信号をCP/LPF121のCPに入力する。スキューアジャスタ123は、位相検出部の一例である。
スキューアジャスタ123は、検出する位相差が所望の位相差になるように、EARLY信号又はLATE信号を用いてCP/LPF121のCPの出力電流を増大又は減少させることにより、VDL122A〜122Hにおける遅延量を調整する。
スキューアジャスタ123は、パルスCKの生成、及び、EARLY信号又はLATE信号の出力をSERDES制御部130から入力される信号に基づいて行う。スキューアジャスタ123には、SERDES制御部130から、スキュー調整開始信号SKEW_ADJ_START、及び、DLLイネーブル信号DLL_AFTER_LOCK_ENが入力される。また、スキューアジャスタ123は、スキュー調整終了信号SKEW_ADJ_STOPをSERDES制御部130に入力する。
SERDES制御部130は、図1に示すコントローラ30に対応する制御部である。SERDES制御部130は、SERDESの制御を行う。
図2では、SERDES制御部130から送信器140のTX0〜TX3に伝送するNビットの送信データを、それぞれ、TXPDT0[N−1:0]〜TXPDT3[N−1:0]で示す。また、受信器150のRX0〜RX3から受信するNビットの受信データをRXPDT0[N−1:0]〜RXPDT3[N−1:0]で示す。なお、送信データ及び受信データのビット数Nは2以上の整数である。
また、SERDES制御部130は、スキュー調整開始信号SKEW_ADJ_START、及び、DLLイネーブル信号DLL_AFTER_LOCK_ENをスキューアジャスタ123に出力する。また、SERDES制御部130には、スキュー調整終了信号SKEW_ADJ_STOPがスキューアジャスタ123から入力される。
ここで、スキュー調整開始信号SKEW_ADJ_STARTは、遅延量の設定処理を開始する際に、SERDES制御部130からスキューアジャスタ123に出力される信号である。
また、DLLイネーブル信号DLL_AFTER_LOCK_ENは、遅延量の設定処理の終了後に、引き続き遅延量の調整を可能にする際に、SERDES制御部130からスキューアジャスタ123に出力される信号である。
また、スキュー調整終了信号SKEW_ADJ_STOPは、遅延量の設定処理が終了したときに、スキューアジャスタ123からSERDES制御部130に入力される信号である。
次に、図3を用いて、実施の形態1のデータ通信回路100のスキューアジャスタ123について説明する。
図3は、実施の形態1のデータ通信回路100のスキューアジャスタ123を示す図である。
スキューアジャスタ123は、セレクタ161、FF(Flip Flop)162、AND回路163〜165、OR回路166、FF167、カウンタ(CNTR)168、コンパレータ(CMP)169及び170を含む。
スキューアジャスタ123は、さらに、AND回路171、OR回路172、判定器173、EARLY/LATEコントローラ174、及びFF175を含む。
ここで、FF162、カウンタ168、判定器173、EARLY/LATEコントローラ174、及びFF175は、すべて、PLL110(図2参照)から出力されるクロックPLL_CKが入力されて動作を行う。
セレクタ161は、一方の入力端子にPLL110(図2参照)からクロックPLL_CKが入力され、他方の入力端子に固定値0(ゼロ)が入力される。セレクタ161は、選択信号入力端子にOR回路172から入力されるパルスイネーブル信号PULSE_ENがH(High)レベルのときにクロックPLL_CKを出力し、パルスイネーブル信号PULSE_ENがL(Low)のときに固定値0(ゼロ)を出力する。セレクタ161の出力はクロックCKであり、これは図2に示すスキューアジャスタ123から出力されるクロックCKに相当する。
FF162の入力端子は、SERDES制御部130に接続されるとともに、AND回路163の一方の入力端子(図3中の上側の入力端子)に接続されている。また、FF162の出力端子は、反転演算素子を介してAND163の他方の入力端子(図3中の下側の入力端子)に接続されるとともに、AND回路164の他方の入力端子(図3中の下側の入力端子)に接続されている。
FF162には、SERDES制御部130からスキュー調整開始信号SKEW_ADJ_STARTが入力される。
AND回路163は、一方の入力端子(図3中の上側の入力端子)がSERDES制御部130(図2参照)に接続されており、他方の入力端子(図3中の下側の入力端子)が反転演算素子を介してFF162の出力端子に接続されている。
また、AND回路163の出力端子は、FF167のセット端子Sに接続されるとともに、FF175のリセット端子Rに接続されている。AND回路163の出力は、スタート信号STARTとしてFF175のリセット端子Rに入力される。
AND回路164は、一方の入力端子(図3中の上側の入力端子)が反転演算素子を介してPLL110(図2参照)に接続されており、他方の入力端子(図3中の下側の入力端子)がFF162の出力端子に接続されている。AND回路164の出力端子は、OR回路166の一方の入力端子(図3中の上側の入力端子)に接続されている。
AND回路165の一方の入力端子(図3中の上側の入力端子)は、EARLY/LATEコントローラ174のロック信号LOCKを出力する出力端子に接続されている。AND回路165の他方の入力端子(図3中の下側の入力端子)は、反転演算素子を介してSERDES制御部130に接続されており、DLLイネーブル信号DLL_AFTER_LOCK_ENが入力される。AND回路165の出力端子は、OR回路166の他方の入力端子(図3中の下側の入力端子)に接続されている。
OR回路166の一方の入力端子(図3中の上側の入力端子)は、AND回路164の出力端子に接続されており、他方の入力端子(図3中の下側の入力端子)は、AND回路165の出力端子に接続されている。OR回路166の出力端子は、FF167のリセット端子Rに接続されている。
FF167は、セット端子SがAND回路163の出力端子に接続され、リセット端子RがOR回路166の出力端子に接続され、出力端子がカウンタ168の入力端子と、AND回路171の一方の入力端子(図3中の上側の入力端子)に接続されている。FF167の出力は、カウンタイネーブル信号CNTR_ENとしてAND回路171の一方の入力端子(図3中の上側の入力端子)に入力される。
カウンタ168は、入力端子がFF167の出力端子に接続され、出力端子がコンパレータ169及び170の入力端子に接続されている3ビットのカウンタである。このため、カウンタ168の出力は、3ビットのカウント信号CNTR[2:0]である。
カウンタ168は、FF167から入力されるコントロールイネーブル信号CNTR_ENがHレベルの間は、クロック入力端子に入力されるクロックPLL_CKをカウントし、カウント数を表す3ビットのカウント信号CNTR[2:0]を出力する。カウンタ168は、0から7までカウントすると、カウント値をリセットし、再び0からカウントを開始する。
コンパレータ169は、入力端子がカウンタ168の出力端子に接続され、出力端子が反転演算素子を介してAND回路171の他方の入力端子(図3中の下側の入力端子)に接続されている。
コンパレータ169は、カウンタ168が出力するカウント信号CNTR[2:0]の値が1である場合にHレベルの信号を出力し、カウンタ168が出力するカウント信号CNTR[2:0]の値が1以外である場合はLレベルの信号を出力する。
コンパレータ170は、入力端子がカウンタ168の出力端子に接続され、出力端子が判定器173の一方の入力端子(図3中の上側の入力端子)に接続されている。
コンパレータ170は、カウンタ168が出力するカウント信号CNTR[2:0]の値が3である場合にHレベルの信号を出力し、カウンタ168が出力するカウント信号CNTR[2:0]の値が3以外である場合はLレベルの信号を出力する。
コンパレータ170の出力は、判定イネーブル信号JUDGE_ENとして、判定器173の一方の入力端子(図3中の上側の入力端子)に入力される。
AND回路171は、一方の入力端子(図3中の上側の入力端子)がFF167の出力端子に接続され、他方の入力端子(図3中の下側の入力端子)が反転演算素子を介してコンパレータ169の出力端子に接続されている。AND回路171の出力端子は、反転演算素子を介してOR回路172の一方の入力端子(図3中の上側の入力端子)に接続されている。AND回路171の一方の入力端子(図3中の上側の入力端子)には、FF167からカウンタイネーブル信号CNTR_ENが入力される。
OR回路172は、一方の入力端子(図3中の上側の入力端子)が反転演算素子を介してAND回路171の出力端子に接続され、他方の入力端子(図3中の下側の入力端子)がFF175の出力端子に接続されている。OR回路172の出力端子はセレクタ161の選択信号入力端子に接続されており、OR回路172の出力は、パルスイネーブル信号PULSE_ENとして、セレクタ161の選択信号入力端子に入力される。
判定器173は、一方の入力端子(図3中の上側の入力端子)がコンパレータ170の出力端子に接続されており、他方の入力端子(図3中の左側の入力端子)がVDL122H(図2参照)のクロック出力端子に接続されている。判定器173の出力端子は、EARLY/LATEコントローラ174の入力端子に接続されている。
判定器173の一方の入力端子(図3中の上側の入力端子)には、コンパレータ170から判定イネーブル信号JUDGE_ENが入力され、他方の入力端子(図3中の左側の入力端子)には、VDL122HからクロックCK_RETURNが入力される。
判定器173は、コンパレータ170から判定イネーブル信号JUDGE_ENが入力されると、クロックPLL_CKの立ち上がりのタイミングにおいて、VDL122Hから入力されるクロックCK_RETURNの信号レベルを判定し、判定結果を表すデータ判定信号JUDGE_DTを出力する。
判定器173は、クロックCK_RETURNの信号レベルがHレベルであるときは、Hレベルのデータ判定信号JUDGE_DTを出力し、クロックCK_RETURNの信号レベルがLレベルであるときは、Lレベルのデータ判定信号JUDGE_DTを出力する。
判定器173が出力するデータ判定信号JUDGE_DTは、EARLY/LATEコントローラ174の入力端子に入力される。
EARLY/LATEコントローラ174は、入力端子が判定器173の出力端子に接続され、図3中の右側にある出力端子がAND回路165の一方の入力端子(図3中の上側の入力端子)に接続されるとともに、FF175のセット端子Sに接続されている。
EARLY/LATEコントローラ174の図3中の右側にある出力端子の出力は、ロック信号LOCKとして、AND回路165の一方の入力端子(図3中の上側の入力端子)とFF175のセット端子Sに入力される。
EARLY/LATEコントローラ174は、クロックCKに対するクロックCK_RETURNの位相を調整するために、EARLY信号又はLATE信号をCP/LPF121のCPに出力する。
EARLY信号は、クロックCKに対してクロックCK_RETURNの位相を進める(遅延量を減少させる)ための信号であり、LATE信号はクロックCKに対してクロックCK_RETURNの位相を遅らせる(遅延量を増大させる)ための信号である。
ここで、クロックPLL_CKの1ビットのデータ幅を1UI(Unit Interval)と記すと、クロックCKは、8UIに1つのパルスを有するクロックとなる。
実施の形態1では、クロックCKに対するクロックCK_RETURNの位相差が3UIに達していない状態(初期状態)から、遅延量の設定処理を行う場合について説明する。すなわち、初期状態では、VDL122A〜122Hによる遅延量の総和は3UIに達しておらず、この状態からクロックCK_RETURNの位相を遅延させる。
ここで、クロックCK_RETURNの位相を遅らせて行くと、判定器173が最初にクロックCK_RETURNの立ち下がりを検出することにより、データ判定信号JUDGE_DTの出力レベルはLレベルからHレベルに変化する。そして、次にデータ判定信号JUDGE_DTの出力レベルがHレベルからLレベルに変化するところが、クロックCK_RETURNの立ち上がりに相当する。
EARLY/LATEコントローラ174は、クロックCK_RETURNの立ち上がりを検出するまでは、クロックCK_RETURNの位相を遅延させるべく、LATE信号を出力する。
すなわち、EARLY/LATEコントローラ174は、判定器173が最初にクロックCK_RETURNの立ち下がりを検出してデータ判定信号JUDGE_DTがLレベルからHレベルに変化し、さらに、データ判定信号JUDGE_DTがHレベルからLレベルに変化してクロックCK_RETURNの立ち上がりが検出されるまで、LATE信号を出力する。
また、EARLY/LATEコントローラ174は、データ判定信号JUDGE_DTがHレベルからLレベルに変化してクロックCK_RETURNの立ち上がりが検出されると、EARLY信号を出力する。これによりクロックCK_RETURNの位相は進められ、クロックCK_RETURNの立ち上がりを正しく検出していれば、判定器173は、クロックCK_RETURNがHレベルに立ち上がっている区間を検出する。
そして、EARLY/LATEコントローラ174は、EARLY信号を出力した後に、判定器173がクロックCK_RETURNのHレベルを再び検出すると、LATE信号を出力する。
EARLY/LATEコントローラ174は、このようにLATE信号とEARLY信号とを繰り返し出力することにより、クロックCK_RETURNの立ち上がりの前後を判定器173に検出させる。
すなわち、クロックCK_RETURNの立ち上がりの前を判定器173が検出すれば、データ判定信号JUDGE_DTはLレベルであり、クロックCK_RETURNの立ち上がりの後を判定器173が検出すれば、データ判定信号JUDGE_DTはHレベルである。
EARLY/LATEコントローラ174は、このようにLATE信号とEARLY信号とを繰り返し出力することを4回繰り返した後に、LOCK信号を出力する。
LOCK信号は、クロックCKに対するクロックCK_RETURNの遅延量の設定が終了した後に、遅延量を設定(ロック)する際に、Hレベルにされる信号である。
以上のように、LATE信号とEARLY信号の出力を4回繰り返したときに、LOCK信号を出力するのは、クロックCKに対するクロックCK_RETURNの位相差が3UIに達したことを正しく検出していることを検証するためである。
LOCK信号は、AND回路165の一方の入力端子(図3中の上側の入力端子)と、FF175のセット端子Sとに入力される。
なお、このような動作を行うEARLY/LATEコントローラ174は、例えば、シーケンサによって実現することができる。
また、ここでは、EARLY/LATEコントローラ174がLATE信号とEARLY信号と4回繰り返して出力した後に、LOCK信号を出力する形態について説明するが、繰り返し回数は4回に限られず、何回に設定してもよい。また、LATE信号の後にEARLY信号を出力した際に(すなわち、最初にクロックCK_RETURNの立ち上がりを検出した際に)LOCK信号を出力するようにしてもよい。
FF175は、セット端子SがEARLY/LATEコントローラ174の図3中の右側にある出力端子に接続され、リセット端子RがAND回路163の出力端子に接続され、出力端子がOR回路172の他方の入力端子(図3中の下側の入力端子)とSERDES制御部130に接続されている。FF175の出力は、スキュー調整終了信号SKEW_ADJ_STOPとして、OR回路172の他方の入力端子(図3中の下側の入力端子)とSERDES制御部130に入力される。
次に、図4を用いて、実施の形態1のデータ通信回路100におけるクロックCKとクロックCK_RETURNの動作波形について説明する。
図4は、実施の形態1のデータ通信回路100におけるクロックCKとクロックCK_RETURNの動作波形を示す図であり、(A)は遅延量の調整中の動作波形を示し、(B)は遅延量の調整が終了した後の通常動作時の動作波形を示す。
図4(A)に示すように、実施の形態1のデータ通信回路100は、遅延量の調整中は、スキューアジャスタ123においてPLL110から入力されるクロックPLL_CKのパルス数を1/8に減らしたクロックCKを出力する。このようなクロックCKの生成は、スキューアジャスタ123のセレクタ161の選択信号入力端子に入力されるパルスイネーブル信号PULSE_ENを利用して行う。
ここで、クロックPLL_CKの1ビットのデータ幅を1UIとすると、クロックCKは、8UIに1つのパルスを有するクロックとなる。
このようなクロックCKは、セレクタ161の選択信号入力端子に入力するパルスイネーブル信号PULSE_ENを8UIに一度の割合でHレベルにすることによって、クロックPLL_CKの8UI分の8つのパルスから、1つのパルスだけを抜き出すことによって生成される。
このため、クロックCKのパルスの幅は、クロックPLL_CKのパルスの幅と同一である。なお、詳細は図5のタイミングチャートを用いて後述する。
また、実施の形態1のデータ通信回路100では、送信器140のTX0〜TX3と受信器150のRX0〜RX3の各々に入力されるクロック信号の位相をずらすために、VDL122Aに入力されるクロックCKと、VDL122Hから出力されるクロックCK_RETURNとの位相差が3UIになるように制御を行う。
このため、位相調整が完了する時点では、クロックCK_RETURNの位相は、図4(A)に示すように、クロックCKに対して、3UIだけ遅れることになる。
ここで、クロックCKとクロックCK_RETURNの位相差を3UIに設定するのは、送信器140のTX0〜TX3と受信器150のRX0〜RX3の8つの回路の各々に入力されるクロックCK1〜CK8の位相をすべて異なる位相にするためである。
換言すれば、送信器140のTX0〜TX3と受信器150のRX0〜RX3の8つの回路の各々に入力されるクロックCK1〜CK8の位相差に、整数倍の関係を持たせずに、非整数倍の関係を持たせるためである。
クロックCKとクロックCK_RETURNとの位相差を3UIに設定すれば、VDL122A〜122Hに動作基準クロックとして入力されるクロックCK1〜CK8の位相はすべて3UI/8ずつ異なり、送信器140のTX0〜TX3と受信器150のRX0〜RX3の8つの回路の回路動作のタイミングをずらすことができる。
このように回路動作のタイミングをずらすことにより、実施の形態1のデータ通信回路100は、ピーク電力の増大の抑制を実現する。
なお、遅延量の設定が終了した後は、セレクタ161(図3参照)の選択信号入力端子に入力されるパルスイネーブル信号PULSE_ENを常にHレベルに固定することにより、PLL110から入力されるクロックPLL_CKを図4(B)に示すように、クロックCKとして出力する。この場合に、クロックPLL_CKとクロックCKの位相は同一である。
また、この結果、VDL122Hから出力されるクロックCK_RETURNは、クロックCKに対して3UI位相が遅れたクロックとなる。これは、上述した遅延量の調整によるものである。
次に、図5及び図6のタイミングチャートを用いて、実施の形態1のデータ通信回路100における各クロック及び各信号の動作波形について説明する。
図5は、実施の形態1のデータ通信回路100において遅延量の調整を開始する時点におけるクロックと信号の動作波形の一例を示す図である。
図6は、実施の形態1のデータ通信回路100において遅延量の調整を終了する時点におけるクロックと信号の動作波形の一例を示す図である。
なお、図5及び図6では、クロック及び信号のHレベル及びLレベルの表記を省略するが、クロック及び信号のレベルが高い区間がHレベルの区間を表し、レベルが低い区間がLレベルの区間を表す。
図5では、クロックCKに対するクロックCK_RETURNの位相差が3UIに達していない状態(初期状態)から、遅延量の設定処理を行う場合について説明する。すなわち、初期状態では、VDL122A〜122Hによる遅延量の総和は3UIに達しておらず、この状態からクロックCK_RETURNの位相を遅延させるための遅延量の設定処理を行う場合について説明する。
また、実施の形態1では、遅延量を増大させる際には制御電圧VCNTLの電圧値を低下させ、遅延量を減少させる際には制御電圧VCNTLの電圧値を上昇させる。
このため、初期状態では、クロックCK_RETURNの位相を遅延させるために、CP/LPF121が出力する制御電圧VCNTLは、最大値に設定されているものとする。
まず、図5に示すように、遅延量の設定処理の開始時に、時刻t1において、SERDES制御部130から出力されるスキュー調整開始信号SKEW_ADJ_STARTがLレベルからHレベルに遷移する。
これにより、AND回路163が出力するスタート信号STARTがクロックPLL_CKの次の立ち上がりの時刻t2でHレベルになる。
さらにクロックPLL_CKの1周期分後の時刻t3で、FF162を介してAND回路163にHレベルが反転されて入力されるため、スタート信号STARTはLレベルに遷移する。
また、時刻t3では、時刻t2でのスタート信号STARTの立ち上がりを受けて、FF167が出力するカウンタイネーブル信号CNTR_ENがHレベルになる。これにより、カウンタ168がクロックPLL_CKのカウントを開始する。
また、時刻t3でカウンタイネーブル信号CNTR_ENがHレベルになることにより、AND回路171の出力が“1”になり、反転演算素子で反転されてOR回路172に入力されるため、OR回路172が出力するパルスイネーブル信号PULSE_ENは“0”(Lレベル)になる。このため、セレクタ161は固定値0(ゼロ)をクロックCKに反映する。
次に、クロックPLL_CKの1周期分後の時刻t4で、カウント信号CNTR[2:0]の値が1になることによってコンパレータ169の出力信号がHレベルになるため、AND回路171の出力が“0”になる。
このAND回路171の出力は反転演算素子で反転されてOR回路172に入力されるため、OR回路172の出力はHレベルになる。
すなわち、時刻t4でパルスイネーブル信号PULSE_ENがHレベルになる。
この結果、セレクタ161がクロックPLL_CKを選択してクロックCKとして出力するため、時刻t4でクロックCKはクロックPLL_CKのパルスを反映する。
次に、クロックPLL_CKの1周期分後の時刻t5では、カウント信号CNTR[2:0]の値が2になるため、コンパレータ169の出力信号がLレベルになる。このため、時刻t5において、OR回路172が出力するパルスイネーブル信号PULSE_ENがLレベル(“0”)になる。これにより、セレクタ161は固定値0(ゼロ)を選択してクロックCKに反映する。すなわち、時刻t5ではクロックCKは立ち上がらずにLレベルに保持される。
以後、カウンタ168がクロックPLL_CKをカウントすることにより、カウント信号CNTR[2:0]の値が3から7まで上昇するが、この間はコンパレータ169の出力信号がLレベルであるため、OR回路172が出力するパルスイネーブル信号PULSE_ENがLレベルである。
従って、カウント信号CNTR[2:0]の値が3から7の値を取る間は、クロックCKは立ち上がらずにLレベルに保持される。
以上により、クロックPLL_CKの8UIのうちに一度の割合でセレクタ161の選択信号入力端子に入力するパルスイネーブル信号PULSE_ENがHレベルになることにより、クロックPLL_CKの8UI分の8つのパルスから、1つのパルスだけを抜き出したクロックCKが生成される。
また、カウント信号CNTR[2:0]の値が3になる時刻t6では、コンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになる。
判定イネーブル信号JUDGE_ENがHレベルになり、次にクロックPLL_CKが立ち上がる時刻t7では、クロックCK_RETURNはLレベルであるため、判定器173から出力されるデータ判定信号JUDGE_DTはLレベルである。
また、EARLY/LATEコントローラ174は、クロックCK_RETURNの位相を遅延させるためにLATE信号をCP/LPF121に出力する。
そして、カウント信号CNTR[2:0]の値が再び1になる時刻t8以降において、クロックCK_RETURNの位相が少し遅延された状態で、時刻t1以降と同様の動作が繰り返し行われる。
カウント信号CNTR[2:0]の値が再び3になる時刻t9においても、クロックCK_RETURNとクロックCKの位相差は3UIに達していないため、クロックCK_RETURNは、CP/LPF121のCPにおいて、時刻t10で出力されるLATE信号によってさらに遅延される。
なお、カウンタ168のカウント値が3になって判定器173で位相の比較を行った後に、カウントが4から7になるまでの時間は、制御電圧VCNTLを安定化させるための時間として設けられている。
従って、制御電圧VCNTLを安定化させるための時間をより長く取る場合は、カウンタ168のビット数を増やしてカウント数の最大値を増大させればよい。
次に、図6を用いて、実施の形態1のデータ通信回路100において遅延量の調整を終了する時点の動作について説明する。
図6に示す動作は、EARLY/LATEコントローラ174によるLATE信号とEARLY信号の出力が3回繰り返された後の動作である。
まず、カウント信号CNTR[2:0]の値が3になってコンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになった後の時刻t11において、クロックCK_RETURNがHレベルであるため、判定器173はHレベルのデータ判定信号JUDGE_DTを出力する。
そして、時刻t11において、EARLY/LATEコントローラ174は、クロックCK_RETURNの立ち上がりを検出するために、LATE信号をCP/LPF121に出力する。これにより、CP/LPF121のLPFが出力する制御電圧VCNTLが低下する。
時刻t11よりもクロックPLL_CKの1周期後の時刻t12において、データ判定信号JUDGE_DTとLATE信号はLレベルになる。
そして、次に、カウント信号CNTR[2:0]の値が1になる時刻t13では、図5における時刻t4と同様に、コンパレータ169の出力信号がHレベルになるため、AND回路171の出力が“0”になる。
この結果、OR回路172の出力はHレベルになり、パルスイネーブル信号PULSE_ENがHレベルになる。
そして、セレクタ161がクロックPLL_CKを選択してクロックCKとして出力するため、時刻t13でクロックCKはクロックPLL_CKのパルスを反映する。
時刻t13よりもクロックPLL_CKの1周期後の時刻t14において、カウント信号CNTR[2:0]の値が2になるため、コンパレータ169の出力信号がLレベルになる。このため、時刻t13において、OR回路172が出力するパルスイネーブル信号PULSE_ENがLレベル(“0”)になり、クロックCKは立ち上がらずにLレベルに保持される。
そして、次に、カウント信号CNTR[2:0]の値が3になる時刻t15では、コンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになる。
時刻t15よりもクロックPLL_CKの1周期後の時刻t16では、クロックCK_RETURNがLレベルであるため、判定器173は、Lレベルのデータ判定信号JUDGE_DTを出力する。
また、Lレベルのデータ判定信号JUDGE_DTが入力されたEARLY/LATEコントローラ174は、時刻t16において、クロックCK_RETURNの位相を進めるためにEARLY信号をCP/LPF121に出力する。
また、EARLY/LATEコントローラ174は、LATE信号とEARLY信号の出力が4回繰り返したため、クロックCKに対するクロックCK_RETURNの位相差は3UIに達し、遅延量の設定処理が終了したと判定し、ロック信号LOCKをHレベルにする。
ロック信号LOCKがHレベルになると、FF175のセット端子SにHレベルのロック信号LOCKが入力されることにより、FF175からスキュー調整終了信号SKEW_ADJ_STOPがSERDES制御部130及びOR回路172に出力される。
Hレベルのスキュー調整終了信号SKEW_ADJ_STOPが入力されることにより、SERDES制御部130は、遅延量の設定処理を終了する。
スキュー調整終了信号SKEW_ADJ_STOPは、遅延量の設定処理が終了したときに、スキューアジャスタ123からSERDES制御部130に入力される信号である。
また、Hレベルのスキュー調整終了信号SKEW_ADJ_STOPがOR回路172に入力されることにより、OR回路172の出力は“1”にクリップされ、以後、セレクタ161は、PLL110から入力されるPLL_CKを選択してクロックCKとして出力する。
このため、時刻t16よりもクロックPLL_CKの1周期後の時刻t17以降では、クロックCKは、クロックPLL_CKを反映した波形のクロックとなる。
また、時刻t17では、t16でHレベルになったロック信号LOCKによってAND回路165の出力が“1”になり、これによりOR回路166の出力が“1”になることにより、FF167がリセットされ、FF167から出力されるカウンタイネーブル信号CNTR_ENがLレベルになる。カウンタイネーブル信号CNTR_ENがLレベルになると、カウンタ168によるカウントが停止する。
また、カウンタイネーブル信号CNTR_ENがLレベルになると、AND回路171の出力が“0”になり、OR回路172の出力が“1”になる。時刻t17では、このことによってもセレクタ161は、PLL110から入力されるPLL_CKを選択してクロックCKとして出力する。
時刻t17以降では、データ通信回路100は、時刻t16までに設定された遅延量を用いて通常動作を行う。
なお、以上のように遅延量の設定処理が終了する際に、引き続き遅延量の設定をしたい場合には、SERDES制御部130からスキューアジャスタ123にHレベルのDLLイネーブル信号DLL_AFTER_LOCK_ENを出力すればよい。
また、DLLイネーブル信号DLL_AFTER_LOCK_ENは、遅延量の設定処理の終了後に、引き続き遅延量の調整を可能にする際に、SERDES制御部130からスキューアジャスタ123に出力される信号である。
DLLイネーブル信号DLL_AFTER_LOCK_ENがHレベルになると、AND回路164及び165の出力が“0”になり、OR回路166の出力が0になるため、FF167はリセットされず、カウンタイネーブル信号CNTR_ENをHレベルにすることができる。これにより、データ通信回路100は、引き続き位相の調整を行うことができる状態になる。
以上で説明した遅延量の設定処理が終了し、通常動作に移行する時刻t17以降は、VDL122Aに入力するクロックCKと、VDL122Hから出力するクロックCK_RETURNとが3UIの位相差を有する。
このときにVDL122Aに入力するクロックCKと、VDL122Hから出力するクロックCK_RETURNとは、図4(B)に示すように3UIの位相差を有する。
3UIの位相差は、VDL122A〜122Hからそれぞれ出力されるクロックCK1〜CK8に均等に割り振られる。
すなわち、クロックCK1〜CK8は、それぞれ順番に3UI/8の位相差を有する状態で送信器140のTX0〜TX3及び受信器150のRX0〜RX3に入力される。
このため、送信器140のTX0〜TX3及び受信器150のRX0〜RX3は、それぞれ、3UI/8ずつ位相の異なるクロックCK1〜CK8を動作基準クロックとして動作を行うことになる。
従って、実施の形態1のデータ通信回路100によれば、送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作のタイミングをずらすことができるので、送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作に伴うピーク電力の増大を抑制することができる。
このように送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作のタイミングをずらすことは、クロックCK1〜CK8の位相差に非整数倍の関係を持たせたことによって実現されることである。
以上、実施の形態1によれば、ピーク電力の増大を抑制したデータ通信回路100を提供することができる。
また、以上で説明したように、実施の形態1のデータ通信回路100では、遅延量の設定処理を行う際にPLL110から出力されるクロックPLL_CKがクロックCKに変換されて通る信号経路と、通常動作に移行した後にPLL110から出力されるクロックPLL_CKが通る信号経路は同一である。
この信号経路とは、図2に示すPLL110からDLL120に入力されるクロックPLL_CKが、図3に示すセレクタ161を経て、VDL122A〜122Hに入力される信号経路である。
ここで、遅延量の設定処理における信号経路と、通常動作時の信号経路が異なると、遅延量の設定処理で設定した遅延量が通常動作時の信号経路において正確な値にならない場合がある。信号経路が異なれば、経路長が異なること、又は、信号経路の異なる部分に含まれる回路素子を経ること等により、厳密に言えば遅延時間が異なるからである。そして、このような信号経路の相違は、クロックPLL_CKの周波数が高くなるほど顕著になる。
これに対して、実施の形態1のデータ通信回路100によれば、遅延量を設定する際の信号経路と、通常動作に移行した後の信号経路が同一であることから、正確な遅延量を設定することができ、ピーク電力の増大を効果的に抑制することができる。
なお、以上では、クロックCK1〜CK8の位相差に非整数倍の関係を持たせるために、クロックCKとクロックCK_RETURNの位相差を3UIに設定する形態について説明した。
しかしながら、クロックCKとクロックCK_RETURNの位相差は3UIに限らず、5UI、6UI、又は、7UIに設定してもよい。これらの場合は、クロックCK1〜CK8が、それぞれ、5UI/8、6UI/8、又は、7UI/8の位相差を有することになり、クロックCK1〜CK8がすべて異なる位相を有することになる。
従って、クロックCKとクロックCK_RETURNの位相差を5UI、6UI、又は、7UIに設定した場合においても、上述のように位相差を3UIに設定した場合と同様に、ピーク電力の増大を抑制したデータ通信回路100を提供することができる。
また、クロックCKとクロックCK_RETURNの位相差を2UIに設定してもよい。この場合は、TX0とRX0、TX1とRX1、TX2とRX2、TX3とRX3の4組でそれぞれ回路動作のタイミングが同一になるが、8つの回路の回路動作が同一の場合に比べれば、データ通信回路100内でのピーク電力を1/4に抑制することができる。
また、クロックCKとクロックCK_RETURNの位相差を4UIに設定してもよい。この場合は、TX0、TX2、RX0、及びRX2と、TX1、TX3、RX1、及びRX3との2組でそれぞれ回路動作のタイミングが同一になるが、8つの回路の回路動作が同一の場合に比べれば、データ通信回路100内でのピーク電力を1/2に抑制することができる。
また、以上では、8つの送信用及び受信用の回路(TX0〜TX3及びRX0〜RX3)にクロックCK1〜CK8を供給する形態について説明したが、回路の数は8つに限られず、2つ以上あればよい。この場合に、クロックCKとクロックCK_RETURNの位相差は、すべての回路に供給されるクロックの位相が同一にならないように、少なくとも一部の回路に供給されるクロックが他の回路に供給されるクロックと異なるようにすればよい。
また、以上では、データ通信回路100が送信用及び受信用の両方の回路(TX0〜TX3及びRX0〜RX3)を含む形態について説明したが、送信用又は受信用のいずれか一方の回路を複数含む形態であってもよい。
また、以上では、VDL122A〜122HがCP/LPF121のLPFから入力される制御電圧VCNTLに応じてクロックCK1〜CK8の遅延量を設定する形態について説明した。このようなVDL122A〜122Hは、制御電圧VCNTLに基づいてクロックCK1〜CK8の位相をアナログ的に調整する回路である。
しかしながら、VDL122A〜122Hとしては、例えば、複数のインバータと複数のセレクタを交互に直列に接続した遅延素子を用いてもよい。この場合には、制御電圧VCNTLをデジタルデータに変換し、クロックCKが通過するインバータ及びセレクタの数をデジタル変換した制御電圧VCNTLで選択することにより、遅延量を設定することができる。
<実施の形態2>
実施の形態2のデータ通信回路200は、遅延量の設定処理の手法が実施の形態1のデータ通信回路100と異なる。また、これに伴い、実施の形態2のデータ通信回路200は、一部の回路構成が実施の形態1のデータ通信回路100と異なる。
以下、実施の形態1のデータ通信回路100と同様の構成要素には同一符号を付し、その説明を省略する。
図7は、実施の形態2のデータ通信回路200を示す図である。
データ通信回路200は、水晶発振器(TCXO)210、DLL220、SERDES制御部230、及び送信器240を含む。図8は、実施の形態2のデータ通信回路200のDLL220に含まれるVDLの回路構成を示す図である。
水晶発振器(TCXO)210は、クロック出力部の一例である。
DLL220は、CP/LPF121、VDL222A〜222H、及びPD(Phase Detector)223を含む。
VDL222A〜222Hには、遅延量制御端子222A1〜222H1にCP/LPF121(図7参照)から制御電圧VCNTLが入力されるとともに、SERDES制御部からスキュー調整シフト信号SKEW_ADJ_SFTが入力される。
VDL222A〜222Hは、直列に接続されており、VDL222Aに入力されるクロックCKを順次遅延させながら伝搬する。VDL222A〜222HのうちのVDL222A〜222Dは、それぞれ、スキュー調整シフト信号SKEW_ADJ_SFTに応じて、クロックCK1〜CK4を出力する。
図8に示すように、VDL222A〜222Hは、インバータ501〜504、セレクタ511、入力端子520、及び出力端子521及び522を含む。インバータ501〜504は、入力端子520と出力端子521の間で直列に接続されている。インバータ501〜503の出力端子は、それぞれ、次段のインバータ502〜504の入力端子に接続されるとともに、セレクタ511の入力端子に接続されている。インバータ504の出力端子は、出力端子521とセレクタ511の入力端子に接続されている。
インバータ501〜504には、CP/LPF121(図7参照)から制御電圧VCNTLが入力され、制御電圧VCNTLに応じてインバータ501〜504での遅延量が決定される。
インバータ501〜504での遅延量(入力端子520から出力端子521間での間で生じる遅延量)は、1UIに設定されている。インバータ501〜504の各々の遅延量は同一であるため、それぞれ、UI/4の遅延量を有する。
セレクタ511は、入力端子がインバータ501〜504の出力端子に接続され、選択信号入力端子がSERDES制御部230に接続され、出力端子が出力端子522に接続されている。
セレクタ511は、選択信号入力端子に入力されるスキュー調整シフト信号SKEW_ADJ_SFTに応じて、インバータ501〜504のいずれかの出力を選択して出力端子522に出力する。
VDL222Aの入力端子520にはクロックCKが入力される。VDL222B〜222Hの入力端子520には、前段のVDLで遅延されたクロックが入力される。
VDL222A〜222Gの出力端子521は、次段のVDLの入力端子520に接続されている。VDL222Hの出力端子521は、PD223にクロックCK_RETURNを出力する。
VDL222A〜222Dの出力端子522は、それぞれ、クロックCK1〜CK4を送信機240(TX0〜TX3)に入力する。VDL222E〜222Hの出力端子522は開放されている。
SERDES制御部230からセレクタ511の選択信号入力端子に入力されるスキュー調整シフト信号SKEW_ADJ_SFTは、2ビットの信号である。セレクタ511は、スキュー調整シフト信号SKEW_ADJ_SFTの値が“00”である場合は、インバータ501の出力を選択する。セレクタ511は、スキュー調整シフト信号SKEW_ADJ_SFTの値が“01”である場合は、インバータ502の出力を選択する。セレクタ511は、スキュー調整シフト信号SKEW_ADJ_SFTの値が“10”である場合は、インバータ502の出力を選択する。セレクタ511は、スキュー調整シフト信号SKEW_ADJ_SFTの値が“11”である場合は、インバータ504の出力を選択する。
セレクタ511は、スキュー調整シフト信号SKEW_ADJ_SFTが入力されると、スキュー調整シフト信号SKEW_ADJ_SFTによって決まるインバータ(501〜504のいずれか)の出力を選択して出力する。
PD223は、水晶発振器(TCXO)210によって出力される基準クロックREF_CKと、VDL222Hが出力するクロックCK_RETURNが入力され、基準クロックREF_CKとクロックCK_RETURNの位相差に応じた信号UP、DNを出力する。
PD223は、スキュー調整開始信号SKEW_ADJ_START、及び、DLLイネーブル信号DLL_AFTER_LOCK_ENに基づいて遅延量の設定処理を行う。
SERDES制御部230は、SERDESの制御を行う制御部である。
CP/LPF121は、PD223から入力される信号UP,DNをチャージポンプで電流に変換し、電流を積分して電圧に変換して制御電圧VCNTLを出力する。
図7では、SERDES制御部230から送信器140のTX0〜TX3に伝送するNビットの送信データを、それぞれ、TXPDT0[N−1:0]〜TXPDT3[N−1:0]で示す。
また、SERDES制御部230は、スキュー調整開始信号SKEW_ADJ_START、及び、DLLイネーブル信号DLL_AFTER_LOCK_ENをDLL220のPD223に出力する。また、SERDES制御部230は、スキュー調整シフト信号SKEW_ADJ_SFTをVDL222A〜222Hに出力する。
ここで、スキュー調整開始信号SKEW_ADJ_STARTは、遅延量の設定処理を開始する際に、SERDES制御部230からPD223に出力される信号である。
また、DLLイネーブル信号DLL_AFTER_LOCK_ENは、遅延量の設定処理の終了後に、引き続き遅延量の調整を可能にする際に、SERDES制御部230からPD223に出力される信号である。
また、スキュー調整シフト信号SKEW_ADJ_SFTは、2ビットの信号であり、セレクタ511が、インバータ501〜504のいずれかの出力を選択するために用いられる信号である。
実施の形態2のデータ通信回路200では、送信器240がVCO(Voltage Controlled Oscillator:電圧制御発振器)241〜244を含む。VCO241〜244は、VDL222A〜222Dから入力されるクロックCK1〜CK4を基準クロックとして動作しており、クロックCK1〜CK4の8倍の周波数で発振している。
実施の形態2では、VDL222A〜222Hは、送信器240のTX0〜TX3に含まれるVCO241〜244が出力するクロックの1ビットのデータ幅を1UI(Unit Interval)とすると、水晶発振器(TCXO)210から出力される基準クロックREF_CKを1UIずつ遅延させて出力する。
送信器240のTX0〜TX3は、VCO241〜244が発振するクロックに基づいて動作を行う。
また、実施の形態2のデータ通信回路200では、DLL220のVDL222E〜222Hに受信器が接続されていないが、実施の形態1のデータ通信回路100と同様に受信器を接続してもよい。
図9は、実施の形態2のデータ通信回路200におけるクロックCK1〜CK4の動作波形を示す図であり、(A)は遅延量の調整前の動作波形を示し、(B)は遅延量の調整が終了した後の通常動作時の動作波形を示す。
図9(A)に示すように、遅延量の調整前では、送信器240のTX0〜TX3に入力されるクロックCK1〜CK4は、水晶発振器(TCXO)210から出力される基準クロックREF_CKを1UIずつ遅延させた波形を有する。
また、SERDES制御部230からスキュー調整開始信号SKEW_ADJ_STARTがPD223に入力されると、PD223とCP/LPF121は、1UIずつ位相を遅延させるように電圧値を調整した制御電圧VCNTLを出力する。なお、このとき、スキュー調整シフト信号SKEW_ADJ_SFTは“00”であり、各VDL222A〜222Hの中では、セレクタ511は、インバータ501の出力を選択している。
この状態で、実施の形態2のデータ通信回路200は、一端ロック状態となる。
そして、ロック状態になった後、SERDES制御部230は、VDL222A〜222Dに入力するスキュー調整シフト信号SKEW_ADJ_SFTの値を“00”、“01”、“10”、“11”に設定する。なお、VDL222E〜222Hに入力するスキュー調整シフト信号SKEW_ADJ_SFTの値は“00”のままである。
これにより、VDL222A〜222Dの内部のセレクタ511は、それぞれ、インバータ501、502、503、504の出力を選択する。
このため、クロックCK1〜CK4の波形は、図9(B)に示すように、1UIの1/4ずつ(UI/4ずつ)遅延した波形になる。
以後、VDL222A〜222Hにおける遅延量は固定され、図9(B)に示すCK1〜CK4が送信器240のTX0〜TX3のVCO241〜244に入力され、VCO241〜244は、UI/4ずつ位相がずれたクロックを出力する。
従って、実施の形態2のデータ通信回路200によれば、送信器240のTX0〜TX3の動作のタイミングをずらすことができるので、送信器240のTX0〜TX3の動作に伴うピーク電力の増大を抑制することができる。
このように送信器240のTX0〜TX3の動作のタイミングをずらすことは、クロックCK1〜CK4の位相差に非整数倍の関係を持たせたことによって実現されることである。
以上、実施の形態2によれば、ピーク電力の増大を抑制したデータ通信回路200を提供することができる。
また、実施の形態2では、TCXOから出力される基準クロックREF_CKの周波数をTX0〜TX3を動作させるVCO241〜244の周波数の1/8の周波数に分周したクロックCK、CK_RETURNを用いて遅延量の設定処理を行うことにより、遅延量の設定処理中における消費電力を低減することができる。
なお、以上では、TCXOを用いる形態について説明したが、TCXOの代わりにインジェクション型のVCOを用いてもよい。
<実施の形態3>
図10は、実施の形態3のデータ通信回路300を示す図である。
データ通信回路300は、PLL110、DLL320、SERDES制御部130、送信器140、及び受信器150を含む。
DLL320は、CP/LPF121、VDL122A〜122H、及びスキューアジャスタ323を含む。
実施の形態3のデータ通信回路300は、DLL320のスキューアジャスタ323の構成が、実施の形態1のデータ通信回路100のDLL120のスキューアジャスタ123と異なる。
その他の構成要素は実施の形態1のデータ通信回路100と同様であるため、以下では、同様の構成要素には同一符号を付し、その説明を省略する。
スキューアジャスタ323は、PLL110から入力されるクロックPLL_CKが入力され、クロックPLL_CKの周波数を1/8にしたクロックCKを出力する。
また、スキューアジャスタ323は、クロックCKと、VDL122Hから入力されるクロックCK_RETURNとの位相差を検出し、位相差が所定の位相差になるように、EARLY信号又はLATE信号をCP/LPF121のCPに入力する。
スキューアジャスタ323は、パルスCKの生成、及び、EARLY信号又はLATE信号の出力をSERDES制御部130から入力される信号に基づいて行う。スキューアジャスタ323には、SERDES制御部130から、スキュー調整開始信号SKEW_ADJ_START、及び、DLLイネーブル信号DLL_AFTER_LOCK_ENが入力される。また、スキューアジャスタ323は、スキュー調整終了信号SKEW_ADJ_STOPをSERDES制御部130に入力する。
次に、図11を用いて、実施の形態3のデータ通信回路300のスキューアジャスタ323について説明する。
図11は、実施の形態3のデータ通信回路300のスキューアジャスタ323を示す図である。
スキューアジャスタ323は、FF361、FF162、AND回路163、164、FF367、カウンタ(CNTR)168、コンパレータ369及び170、AND回路371、判定器173、EARLY/LATEコントローラ174、及びFF175を含む。
ここで、FF162、カウンタ168、判定器173、EARLY/LATEコントローラ174、及びFF175は、すべて、PLL110(図10参照)から出力されるクロックPLL_CKが入力されて動作を行う。
実施の形態3のスキューアジャスタ323は、PLL110から入力されるクロックPLL_CKを8分周して得るクロックをクロックCKとしてVDL122Aに入力する点が実施の形態1のスキューアジャスタ123と異なる。また、この相違点に関連して、回路構成が異なる。
以下、実施の形態1のスキューアジャスタ123との相違点を中心に説明する。
FF361は、入力端子にAND回路371の出力端子が接続され、出力端子はVDL122Aに接続される。FF361は、クロック入力端子にクロックPLL_CKが入力されると、クロックCKを出力する。FF361の出力は、図10に示すスキューアジャスタ323から出力されるクロックCKに相当する。
FF162の入力端子は、SERDES制御部130に接続されるとともに、AND回路163の一方の入力端子(図11中の上側の入力端子)に接続されている。また、FF162の出力端子は、反転演算素子を介してAND163の他方の入力端子(図11中の下側の入力端子)に接続されるとともに、AND回路164の他方の入力端子(図11中の下側の入力端子)に接続されている。
FF162には、SERDES制御部130からスキュー調整開始信号SKEW_ADJ_STARTが入力される。
AND回路163は、一方の入力端子(図11中の上側の入力端子)がSERDES制御部130(図10参照)に接続されており、他方の入力端子(図11中の下側の入力端子)が反転演算素子を介してFF162の出力端子に接続されている。
また、AND回路163の出力端子は、FF367のセット端子Sに接続されるとともに、FF175のリセット端子Rに接続されている。AND回路163の出力は、スタート信号STARTとしてFF175のリセット端子Rに入力される。
AND回路164は、一方の入力端子(図11中の上側の入力端子)が反転演算素子を介してPLL110(図10参照)に接続されており、他方の入力端子(図11中の下側の入力端子)がFF162の出力端子に接続されている。AND回路164の出力端子は、FF367のリセット端子Rに接続されている。
FF367は、セット端子SがAND回路163の出力端子に接続され、リセット端子RがAND回路164の出力端子に接続され、出力端子がカウンタ168の入力端子と、AND回路371の一方の入力端子(図11中の上側の入力端子)に接続されている。FF367の出力は、カウンタイネーブル信号CNTR_ENとしてAND回路371の一方の入力端子(図11中の上側の入力端子)に入力される。
カウンタ168は、入力端子がFF367の出力端子に接続され、出力端子がコンパレータ369及び170の入力端子に接続されている3ビットのカウンタである。
カウンタ168は、FF367から入力されるコントロールイネーブル信号CNTR_ENがHレベルの間は、クロック入力端子に入力されるクロックPLL_CKをカウントし、カウント数を表す3ビットのカウント信号CNTR[2:0]を出力する。カウンタ168は、0から7までカウントすると、カウント値をリセットし、再び0からカウントを開始する。
コンパレータ369は、入力端子がカウンタ168の出力端子に接続され、出力端子がAND回路371の他方の入力端子(図11中の下側の入力端子)に接続されている。
コンパレータ369は、カウンタ168が出力するカウント信号CNTR[2:0]の2ビット目の値が0である場合にHレベル(“1”)を出力し、カウント信号CNTR[2:0]の2ビット目の値が1である場合はLレベル(“0”)を出力する。
すなわち、コンパレータ369は、カウンタ168のカウント信号CNTR[2:0]の値が0から3の間は2ビット目の値が0であるためHレベル(“1”)を出力し、カウンタ168のカウント信号CNTR[2:0]の値が4から7の間は2ビット目の値が1であるためLレベル(“0”)を出力する。
コンパレータ170は、入力端子がカウンタ168の出力端子に接続され、出力端子が判定器173の一方の入力端子(図11中の上側の入力端子)に接続されている。
コンパレータ170の出力は、判定イネーブル信号JUDGE_ENとして、判定器173の一方の入力端子(図11中の上側の入力端子)に入力される。
AND回路371は、一方の入力端子(図11中の上側の入力端子)がFF367の出力端子に接続され、他方の入力端子(図11中の下側の入力端子)がコンパレータ369の出力端子に接続されている。AND回路371の出力端子は、FF361の入力端子に接続されている。AND回路371の一方の入力端子(図11中の上側の入力端子)には、FF367からカウンタイネーブル信号CNTR_ENが入力される。
AND回路371は、FF367からHレベルのカウンタイネーブル信号CNTR_ENが入力されているときに、カウンタ168のカウント信号CNTR[2:0]の値が0から3で、コンパレータ369がHレベル(“1”)を出力する間は、1を出力する。
また、AND回路371は、FF367からHレベルのカウンタイネーブル信号CNTR_ENが入力されているときに、カウンタ168のカウント信号CNTR[2:0]の値が4から7で、コンパレータ369がLレベル(“0”)を出力する間は、0を出力する。
なお、AND回路371の出力は、クロックPLL_CKの1周期分遅れたタイミングでFF361の出力に反映される。FF361の出力はクロックCKとしてスキューアジャスタ323から出力されるため、遅延量の設定処理中におけるクロックCKの周波数は、クロックPLL_CKの1/8となる。
判定器173は、一方の入力端子(図11中の上側の入力端子)がコンパレータ170の出力端子に接続されており、他方の入力端子(図11中の左側の入力端子)がVDL122H(図10参照)のクロック出力端子に接続されている。判定器173の出力端子は、EARLY/LATEコントローラ174の入力端子に接続されている。
EARLY/LATEコントローラ174は、入力端子が判定器173の出力端子に接続され、図11中の右側にある出力端子がFF175のセット端子Sに接続されている。
EARLY/LATEコントローラ174の図11中の右側にある出力端子の出力は、ロック信号LOCKとしてFF175のセット端子Sに入力される。
FF175は、セット端子SがEARLY/LATEコントローラ174の図11中の右側にある出力端子に接続され、リセット端子RがAND回路163の出力端子に接続され、出力端子がSERDES制御部130に接続されている。FF175の出力は、スキュー調整終了信号SKEW_ADJ_STOPとして、SERDES制御部130に入力される。
次に、図12及び図13のタイミングチャートを用いて、実施の形態3のデータ通信回路300における各クロック及び各信号の動作波形について説明する。
図12は、実施の形態3のデータ通信回路300において遅延量の調整を開始する時点におけるクロックと信号の動作波形の一例を示す図である。
図13は、実施の形態3のデータ通信回路300において遅延量の調整を終了する時点におけるクロックと信号の動作波形の一例を示す図である。
なお、図12及び図13では、クロック及び信号のHレベル及びLレベルの表記を省略するが、クロック及び信号のレベルが高い区間がHレベルの区間を表し、レベルが低い区間がLレベルの区間を表す。
図12では、クロックCKに対するクロックCK_RETURNの位相が遅れている状態(初期状態)から、遅延量の設定処理を行う場合について説明する。また、この初期状態では、CP/LPF121が出力する制御電圧VCNTLは、最大値に設定されているものとする。
まず、図12に示すように、遅延量の設定処理の開始時に、時刻t21において、SERDES制御部130から出力されるスキュー調整開始信号SKEW_ADJ_STARTがLレベルからHレベルに遷移する。
これにより、AND回路163が出力するスタート信号STARTがクロックPLL_CKの次の立ち上がりの時刻t22でHレベルになる。
さらにクロックPLL_CKの1周期分後の時刻t23で、FF162を介してAND回路163にHレベルが反転されて入力されるため、スタート信号STARTはLレベルに遷移する。
また、時刻t23では、時刻t2でのスタート信号STARTの立ち上がりを受けて、FF367が出力するカウンタイネーブル信号CNTR_ENがHレベルになる。これにより、カウンタ168がクロックPLL_CKのカウントを開始する。
また、時刻t23でカウンタイネーブル信号CNTR_ENがHレベルになると、このときカウント信号CNTR[2:0]の値が0であり、カウンタ369の出力がHレベル(“1”)であるため、AND回路371の出力が“1”になる。
AND回路371の出力はFF361に入力されるため、時刻t23よりもクロックPLL_CKの1周期分後の時刻t24において、クロックCKはHレベルになる。クロックCKは、その後カウント信号CNTR[2:0]の値が4になるタイミングよりもクロックPLL_CKの1周期後の時刻t27でLレベルになるまでHレベルである。
また、時刻t24からは、カウンタ168によるカウントが開始される。
カウント信号CNTR[2:0]の値が3になる時刻t25では、コンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになる。
判定イネーブル信号JUDGE_ENがHレベルになり、次にクロックPLL_CKが立ち上がる時刻t26では、クロックCK_RETURNはHレベルであるため、判定器173から出力されるデータ判定信号JUDGE_DTはLレベルである。
また、EARLY/LATEコントローラ174は、クロックCK_RETURNの位相を遅延させるためにLATE信号をCP/LPF121に出力する。
また、時刻t26では、カウント信号CNTR[2:0]の値が4になる。
時刻t26よりもクロックPLL_CKの1周期後の時刻t27では、時刻t26でカウント信号CNTR[2:0]の値が4になったことにより、クロックCKがLレベルになる。クロックCKは、その後カウント信号CNTR[2:0]の値が再び0になるタイミングよりもクロックPLL_CKの1周期後の時刻t28でHレベルになるまでLレベルである。
そして、カウント信号CNTR[2:0]の値が再び0になった後の時刻t28において、時刻t1以降と同様の動作が繰り返し行われる。
カウント信号CNTR[2:0]の値が再び3になる時刻t29においても、クロックCK_RETURNとクロックCKの位相差は3UIに達していないため、クロックCK_RETURNは、CP/LPF121のCPにおいて、時刻t30で出力されるLATE信号によってさらに遅延される。
なお、カウンタ168のカウント値が3になって判定器173で位相の比較を行った後に、カウントが4から7になるまでの時間は、制御電圧VCNTLを安定化させるための時間として設けられている。
従って、制御電圧VCNTLを安定化させるための時間をより長く取る場合は、カウンタ168のビット数を増やしてカウント数の最大値を増大させればよい。
次に、図13を用いて、実施の形態3のデータ通信回路300において遅延量の調整を終了する時点の動作について説明する。
図13に示す動作は、EARLY/LATEコントローラ174によるLATE信号とEARLY信号の出力が3回繰り返された後の動作である。
まず、カウント信号CNTR[2:0]の値が3になってコンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになった後の時刻t31において、クロックCK_RETURNがHレベルであるため、判定器173はHレベルのデータ判定信号JUDGE_DTを出力する。
そして、時刻t31において、EARLY/LATEコントローラ174は、クロックCK_RETURNの立ち上がりを検出するために、LATE信号をCP/LPF121に出力する。これにより、CP/LPF121のLPFが出力する制御電圧VCNTLが低下する。
時刻t31よりもクロックPLL_CKの1周期後の時刻t32において、データ判定信号JUDGE_DTとLATE信号はLレベルになる。
そして、カウント信号CNTR[2:0]の値が0になった後の時刻t33において、クロックCKはHレベルになる。
そして、次に、カウント信号CNTR[2:0]の値が3になる時刻t34では、コンパレータ170が出力する判定イネーブル信号JUDGE_ENがHレベルになる。
時刻t34よりもクロックPLL_CKの1周期後の時刻t35では、クロックCK_RETURNがLレベルであるため、判定器173は、Lレベルのデータ判定信号JUDGE_DTを出力する。
また、Lレベルのデータ判定信号JUDGE_DTが入力されたEARLY/LATEコントローラ174は、時刻t35において、クロックCK_RETURNの位相を進めるためにEARLY信号をCP/LPF121に出力する。
また、EARLY/LATEコントローラ174は、LATE信号とEARLY信号の出力が4回繰り返したため、クロックCKに対するクロックCK_RETURNの位相差は3UIに達し、遅延量の設定処理が終了したと判定し、ロック信号LOCKをHレベルにする。
ロック信号LOCKがHレベルになると、FF175のセット端子SにHレベルのロック信号LOCKが入力されることにより、時刻t36でFF175からHレベルのスキュー調整終了信号SKEW_ADJ_STOPがSERDES制御部130に出力される。
Hレベルのスキュー調整終了信号SKEW_ADJ_STOPが入力されることにより、SERDES制御部130は、遅延量の設定処理を終了する。
時刻t36以降では、データ通信回路300は、時刻t35までに設定された遅延量を用いて通常動作を行う。
以上で説明した遅延量の設定処理が終了し、通常動作に移行する時刻t36以降は、VDL122Aに入力するクロックCKと、VDL122Hから出力するクロックCK_RETURNとが3UIの位相差を有する。
このときにVDL122Aに入力するクロックCKと、VDL122Hから出力するクロックCK_RETURNとは、図4(B)に示すように3UIの位相差を有する。
3UIの位相差は、VDL122A〜122Hからそれぞれ出力されるクロックCK1〜CK8に均等に割り振られる。
すなわち、クロックCK1〜CK8は、それぞれ順番に3UI/8の位相差を有する状態で送信器140のTX0〜TX3及び受信器150のRX0〜RX3に入力される。
このため、送信器140のTX0〜TX3及び受信器150のRX0〜RX3は、それぞれ、3UI/8ずつ位相の異なるクロックCK1〜CK8を動作基準クロックとして動作を行うことになる。
従って、実施の形態3のデータ通信回路300によれば、送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作のタイミングをずらすことができるので、送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作に伴うピーク電力の増大を抑制することができる。
このように送信器140のTX0〜TX3及び受信器150のRX0〜RX3の動作のタイミングをずらすことは、クロックCK1〜CK8の位相差に非整数倍の関係を持たせたことによって実現されることである。
以上、実施の形態3によれば、ピーク電力の増大を抑制したデータ通信回路300を提供することができる。
また、実施の形態3では、PLL110から供給されるクロックPLL_CKを1/8の周波数に分周したクロックCK、CK_RETURNを用いて遅延量の設定処理を行うことにより、遅延量の設定処理中における消費電力を低減することができる。
また、以上で説明したように、実施の形態3のデータ通信回路300では、遅延量の設定処理を行う際にPLL110から出力されるクロックPLL_CKがクロックCKに変換されて通る信号経路と、通常動作に移行した後にPLL110から出力されるクロックPLL_CKが通る信号経路は同一である。
この信号経路とは、図10に示すPLL110からDLL320に入力されるクロックPLL_CKが、図11に示すFF361を経て、VDL122A〜122Hに入力される信号経路である。
ここで、遅延量の設定処理における信号経路と、通常動作時の信号経路が異なると、遅延量の設定処理で設定した遅延量が通常動作時の信号経路において正確な値にならない場合がある。信号経路が異なれば、経路長が異なること、又は、信号経路の異なる部分に含まれる回路素子を経ること等により、厳密に言えば遅延時間が異なるからである。そして、このような信号経路の相違は、クロックPLL_CKの周波数が高くなるほど顕著になる。
これに対して、実施の形態3のデータ通信回路300によれば、遅延量を設定する際の信号経路と、通常動作に移行した後の信号経路が同一であることから、正確な遅延量を設定することができ、ピーク電力の増大を効果的に抑制することができる。
以上、本発明の例示的な実施の形態1乃至3のデータ通信回路、及び、電子装置について説明したが、本発明は、具体的に開示された実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
クロック出力部と、
前記クロック出力部から供給されるクロックに基づいて動作するデータ送信用又はデータ受信用の複数の回路と、
前記クロック出力部と前記複数の回路との間に接続され、前記複数の回路に供給されるクロックの位相をずらす位相調整部と
を含む、データ通信回路。
(付記2)
前記位相調整部は、
前記複数の回路に入力されるクロックの位相を遅延させる遅延素子と、
前記遅延素子の入力クロックと出力クロックとの位相差を検出する位相検出部と、
前記位相検出部で検出される前記位相差を表す電流を出力するチャージポンプと、
前記チャージポンプの出力電流を積分して得る電圧を前記遅延素子の遅延量制御端子に入力する積分器と
を有するディレイロックループである、付記1記載のデータ通信回路。
(付記3)
前記位相検出部は、検出する位相差が所望の位相差になるように、前記チャージポンプの出力電流を増大又は減少させることにより、前記遅延素子における遅延量を調整する、付記2記載のデータ通信回路。
(付記4)
前記遅延素子は複数あり、前記複数の回路の各々について1つずつ配設される、付記2又は3記載のデータ通信回路。
(付記5)
前記位相調整部は、前記位相調整部における遅延量を調整する際は、通常動作時に用いるクロックのパルス数を減らしたクロック、又は、通常動作時に用いるクロックを分周したクロックを用いる、付記1乃至4のいずれか一項記載のデータ通信回路。
(付記6)
前記複数の回路の各々に配設され、前記クロック出力部から供給されるクロックに基づき、当該クロックの逓倍の周波数のクロックを出力する発振器をさらに含み、
前記遅延素子は複数あり、前記複数の回路の各々について1つずつ配設されており、
前記ディレイロックループによるロック状態が得られた後に、当該ロック状態における前記複数の遅延素子の各々の遅延量をずらすことにより、前記複数の回路に供給されるクロックの位相をずらす、付記2記載のデータ通信回路。
(付記7)
前記複数の遅延素子は、直列に接続される、付記4乃至6のいずれか一項記載のデータ通信回路。
(付記8)
前記位相調整部は、前記複数の回路に供給されるクロックと、前記クロック出力部から出力されるクロックとの位相差が、クロック出力部から出力されるクロックの1サイクルの非整数倍になるように、前記複数の回路に供給されるクロックの位相をずらす、付記1乃至7記載のデータ通信回路。
(付記9)
付記1乃至8のいずれか一項記載のデータ通信回路と、
前記データ通信回路で送信又は受信されるデータを処理する処理部と
を含む、電子装置。