以下、実施形態を図面を用いて説明する。
図1は、一実施形態における位相補間回路PIの例を示している。位相補間回路PIは、例えば、LSIチップ内のモジュール間のデータ送受信やLSI間のデータ送受信を実施するデータ送受信回路のクロックの位相を調整する。例えば、位相補間回路PIは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
位相補間回路PIは、クロックCLK10および制御信号CNTAを受ける駆動回路10と、クロックCLK20および制御信号CNTBを受ける駆動回路20と、クロックCLK10を受けるオフセット回路30とを有している。なお、クロックCLK20は、クロックCLK10に比べて位相の遅れたクロックである。
駆動回路10、20およびオフセット回路30の各出力は、例えば、共通の出力端子PIOUTに接続されている。以下、出力端子PIOUTの電圧を出力電圧PIOUTとも称する。なお、出力端子PIOUTには、例えば、図9に示すように、インバータ等の出力バッファが接続される。
駆動回路10の駆動力は、例えば、制御信号CNTAにより可変設定される。そして、駆動回路10は、設定された駆動力に対応する電流をクロックCLK10に応じて生成する。これにより、駆動回路10は、例えば、出力端子PIOUTの負荷容量をクロックCLK10に応じて充放電する。
駆動回路20の駆動力は、例えば、制御信号CNTBにより可変設定される。そして、駆動回路20は、設定された駆動力に対応する電流をクロックCLK20に応じて生成する。これにより、駆動回路20は、例えば、出力端子PIOUTの負荷容量をクロックCLK20に応じて充放電する。
なお、例えば、駆動回路20の駆動力は、駆動回路10に設定される駆動力と駆動回路20に設定される駆動力との和が一定になるように、駆動回路10に設定される駆動力に応じて設定される。すなわち、駆動回路10の駆動力および駆動回路20の駆動力は、例えば、駆動回路10の電流および駆動回路20の電流の和が一定になるように設定される。
オフセット回路30は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路20の電流を相殺するための電流を生成する。すなわち、オフセット回路30は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路20の電流を相殺するための電流を生成する調整部として機能する。例えば、オフセット回路30は、貫通電流に相当する電流を駆動回路20に供給する。
これにより、この実施形態では、例えば、出力端子PIOUTの負荷容量を充放電する電流が制御信号CNTAで設定した駆動力に対応する電流より小さくなることを防止できる。すなわち、この実施形態では、駆動回路10の駆動力が制御信号CNTAで設定した駆動力より小さくなることを防止できる。
図2は、図1に示した駆動回路10、20およびオフセット回路30の一例を示している。駆動回路10は、クロックCLK10を共通に受けるn個(nは2以上の整数)のインバータINVE(INVE1、INVE2、・・・、INVEn)を有している。
各インバータINVEの出力は、出力端子PIOUTに接続されている。また、各インバータINVEは、制御端子GN、GPでそれぞれ受ける制御信号EN、ENXに応じて、オン/オフが制御される。制御信号EN、ENXの末尾の数字および“n”は、インバータINVEの末尾の数字および“n”にそれぞれ対応している。また、制御信号ENXは、例えば、制御信号ENの反転信号である。なお、インバータINVEが受ける制御信号EN、ENXは、図1に示した制御信号CNTAに対応している。
例えば、駆動回路10の駆動力は、オンさせるインバータINVEの個数を制御信号EN、ENXで調整することにより、可変設定される。すなわち、駆動回路10の駆動力の重み付けは、オンさせるインバータINVEの個数を制御信号EN、ENXで設定することにより、設定される。
駆動回路20は、クロックCLK20を共通に受けるn個のインバータINVL(INVL1、INVL2、・・・、INVLn)を有している。各インバータINVLの出力は、出力端子PIOUTに接続されている。なお、インバータINVLの末尾の数字および“n”は、制御信号EN、ENXの末尾の数字および“n”にそれぞれ対応している。各インバータINVLの構成および駆動力は、例えば、各インバータINVEと同じである。
例えば、各インバータINVLは、制御端子GN、GPでそれぞれ受ける制御信号ENX、ENに応じて、オン/オフが制御される。なお、インバータINVLの制御端子GNは、インバータINVEの制御端子GPに接続され、インバータINVLの制御端子GPは、インバータINVEの制御端子GNに接続されている。したがって、n個のインバータINVLのうち、オンに設定されるインバータINVLの個数は、n個のインバータINVEのうちのオフに設定されるインバータINVEの個数と同じである。例えば、m個(mは0以上n以下の整数)のインバータINVEがオンしているとき、(n−m)個のインバータINVLがオンする。
このように、駆動回路20の駆動力の重み付けは、駆動回路10の駆動力の重み付けに応じて、設定される。例えば、駆動回路20の駆動力は、オンさせるインバータINVLの個数を制御信号EN、ENXで調整することにより、可変設定される。したがって、インバータINVLが受ける制御信号EN、ENXは、図1に示した制御信号CNTBに対応している。
オフセット回路30は、クロックCLK10を受けるインバータINVCを有している。インバータINVCの駆動力は、n個のインバータINVLの駆動力の合計(駆動回路20の駆動力)以上である。また、例えば、インバータINVCの構成は、トランジスタのサイズを除いて、インバータINVEと同じである。インバータINVCの制御端子GNは、電源VDDに接続され、インバータINVCの制御端子GPは、接地されている。これにより、インバータINVCは、オン状態に維持される。
なお、インバータINVCの構成は、インバータINVEと異なっていてもよい。また、オフセット回路30は、インバータINVEと同じサイズのインバータをn個以上有してもよいし、インバータINVEと同じサイズのインバータをn個有してもよい。
図3は、図2に示したインバータINVE、INVL、INVCの一例を示している。図3の破線の矢印は、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのときに流れる電流の一例を示している。
各インバータINVEは、電源VDDと接地線(接地電圧が供給される電源線)との間に直列に接続されたpMOSトランジスタMP10、MP20、nMOSトランジスタMN20、MN10を有している。例えば、pMOSトランジスタMP10は、ソースが電源VDDに接続され、ドレインがpMOSトランジスタMP20のソースに接続され、ゲートがnMOSトランジスタMN10のゲートに接続されている。そして、pMOSトランジスタMP10は、ゲートでクロックCLK10を受ける。
pMOSトランジスタMP20は、ドレインが出力端子PIOUTおよびnMOSトランジスタMN20のドレインに接続され、ゲートが制御端子GPに接続されている。また、nMOSトランジスタMN20は、ソースがnMOSトランジスタMN10のドレインに接続され、ゲートが制御端子GNに接続されている。すなわち、nMOSトランジスタMN20およびpMOSトランジスタMP20は、制御信号EN、ENXに応じて、インバータINVEをオン/オフするスイッチとして機能する。
nMOSトランジスタMN10のソースは、接地されている。また、nMOSトランジスタMN10は、ゲートでクロックCLK10を受ける。すなわち、nMOSトランジスタMN10およびpMOSトランジスタMP10は、ゲートで共通のクロックCLK10を受ける。例えば、nMOSトランジスタMN10およびpMOSトランジスタMP10は、クロックCLK10を受けるインバータとして機能する。
インバータINVLの構成は、インバータINVEと同じである。例えば、nMOSトランジスタMN10およびpMOSトランジスタMP10は、クロックCLK20を受けるインバータとして機能する。また、例えば、nMOSトランジスタMN20およびpMOSトランジスタMP20は、制御信号ENX、ENに応じて、インバータINVEをオン/オフするスイッチとして機能する。
なお、インバータINVLのnMOSトランジスタMN20のゲートは、インバータINVEのpMOSトランジスタMP20のゲートに接続されている。また、インバータINVLのpMOSトランジスタMP20のゲートは、インバータINVEのnMOSトランジスタMN20のゲートに接続されている。したがって、符号の末尾の数字が同じインバータINVE、INVLの組みでは、一方がオンしているとき、他方がオフする。例えば、m個のインバータINVEがオンしているとき、(n−m)個のインバータINVLがオンする。
インバータINVCは、電源VDDと接地線との間に直列に接続されたpMOSトランジスタMP12、MP22、nMOSトランジスタMN22、MN12を有している。なお、インバータINVCの構成は、トランジスタMN12、MN22、MP12、MP22のサイズ(ゲート幅/ゲート長)を除いて、インバータINVEと同じである。例えば、各トランジスタMN12、MN22、MP12、MP22のサイズは、各トランジスタMN10、MN20、MP10、MP20のサイズのn倍以上である。
これにより、インバータINVCは、n個のインバータINVEの駆動力の合計(駆動回路10や駆動回路20の駆動力)以上の駆動力を有する。なお、nMOSトランジスタMN12は、n個以上のnMOSトランジスタMN10で形成されてもよいし、nMOSトランジスタMN22は、n個以上のnMOSトランジスタMN20で形成されてもよい。また、pMOSトランジスタMP12は、n個以上のpMOSトランジスタMP10で形成されてもよいし、pMOSトランジスタMP22は、n個以上のpMOSトランジスタMP20で形成されてもよい。
例えば、インバータINVCのトランジスタMN12、MN22、MP12、MP22のサイズがインバータINVEのトランジスタMN10、MN20、MP10、MP20のn倍のとき、オフセット回路30で生成される電流ICDは、式(1)で表される。なお、式(1)のIdは、1個のインバータINVEで生成される電流である。
ICD=n・Id ‥‥(1)
また、m個(mは0以上n以下の整数)のインバータINVEがオンしているときに、駆動回路10、20で生成される電流IED、ILDは、式(2)、(3)でそれぞれ表される。
IED=m・Id ‥‥(2)
ILD=(n−m)・Id ‥‥(3)
例えば、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのとき、インバータINVCのpMOSトランジスタMP12、インバータINVEのpMOSトランジスタMP10およびインバータINVLのnMOSトランジスタMN10がオンする。このため、電流ICD、IEDのうち、貫通電流に相当する電流ILDが駆動回路20に供給され、残りの電流が出力端子PIOUTに供給される。
したがって、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのときでは、出力端子PIOUTに供給される電流IDRは、式(4)で表される。なお、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのときでは、式(4)の電流IDRが出力端子PIOUTから引き抜かれる。
IDR=ICD+IED−ILD=2・m・Id ‥‥(4)
また、クロックCLK10、CLK20が共に低レベルのときでは、出力端子PIOUTに供給される電流IDR2は、式(5)で表される。なお、クロックCLK10、CLK20が共に高レベルのときでは、式(5)の電流IDR2が出力端子PIOUTから引き抜かれる。
IDR2=ICD+IED+ILD=2・n・Id ‥‥(5)
このように、例えば、クロックCLK10、CLK20のレベルが互いに異なる期間では、出力端子PIOUTの負荷容量を充放電する電流IDRは、オンさせるインバータINVEの個数“m”に比例して増加する。また、クロックCLK10、CLK20のレベルが互いに同じ期間では、出力端子PIOUTの負荷容量を充放電する電流IDR2は、オンさせるインバータINVEの個数“m”に拘わらず、一定に維持される。したがって、この実施形態では、オンさせるインバータINVEの個数“m”を可変設定することにより、出力端子PIOUTの負荷容量を充放電する電流を精度よく制御できる。これにより、この実施形態では、位相補間の線形性が貫通電流の影響により劣化することを防止できる。
なお、位相補間回路PIの構成は、この例に限定されない。例えば、インバータINVE、INVLは、ゲートで受ける信号をpMOSトランジスタMP10、MP20で逆にしてもよいし、ゲートで受ける信号をnMOSトランジスタMN10、MN20で逆にしてもよい。また、インバータINVCは、ゲートで受ける信号をpMOSトランジスタMP12、MP22で逆にしてもよいし、ゲートで受ける信号をnMOSトランジスタMN12、MN22で逆にしてもよい。
また、位相補間回路PIは、例えば、クロックCLK20をゲートで受けるダミーのnMOSトランジスタおよびpMOSトランジスタを有してもよい。例えば、ダミーのnMOSトランジスタは、ソースおよびドレインが接地されている。また、例えば、ダミーのpMOSトランジスタは、ソースおよびドレインが電源VDDに接続されている。
ダミーのnMOSトランジスタおよびpMOSトランジスタのサイズは、例えば、nMOSトランジスタMN12およびpMOSトランジスタMP12とそれぞれ同じである。この場合、クロックCLK10、CLK20の入力負荷が同じになるため、例えば、駆動回路10、20のスルーレートに差が生じることを防止できる。
図4は、図1に示した位相補間回路PIの動作の一例を示している。なお、図4は、インバータINVEが8個(n=8)のときの位相補間回路PIの動作の一例を示している。図の出力電圧PIOUTの実線は、全てのインバータINVEがオンに設定されているとき(m=n=8)の出力電圧PIOUTを示し、出力電圧PIOUTの破線は、全てのインバータINVEがオフに設定されているとき(m=0)の出力電圧PIOUTを示している。また、図の括弧内の波形(電圧OUT10、・・・、OUT18)は、例えば、出力端子PIOUTに接続されたインバータ(例えば、図9に示す出力バッファOBUF)の出力を示している。以下、出力端子PIOUTに接続されたインバータを出力バッファとも称する。
例えば、電圧OUT10は、全てのインバータINVEがオンに設定されているとき(m=n)の出力バッファの出力を示している。また、例えば、電圧OUT18は、全てのインバータINVEがオフに設定されているとき(m=0)の出力バッファの出力を示している。図4の例では、出力端子PIOUTに接続されたインバータの閾値電圧は、電源VDDの2分の1である。
先ず、時刻T10では、クロックCLK10は高レベルから低レベルに変化し、クロックCLK20は高レベルに維持される。このため、インバータINVCのnMOSトランジスタMN12およびインバータINVEのnMOSトランジスタMN10がオフする。そして、インバータINVCのpMOSトランジスタMP12およびインバータINVEのpMOSトランジスタMP10がオンする。また、インバータINVLのnMOSトランジスタMN10はオン状態に維持され、インバータINVLのpMOSトランジスタMP10はオフ状態に維持される。したがって、式(4)で示した電流IDRが出力端子PIOUTに供給される。
例えば、全てのインバータINVEがオンに設定されているとき(m=n)の出力電圧PIOUTは、電流IDR(IDR=2・n・Id)および出力端子PIOUTの負荷容量に基づく傾きで、時間の経過に伴い上昇する。出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)より低い期間(時刻T12より前の期間)では、電圧OUT10は、高レベルに維持される。
なお、全てのインバータINVEがオフに設定されているとき(m=0)の出力電圧PIOUTは、電流IDRが出力端子PIOUTに供給されないため、接地電圧GNDに維持される。したがって、時刻T10では、電圧OUT18は、高レベルに維持される。
時刻T12では、クロックCLK10は低レベルに維持され、クロックCLK20は高レベルから低レベルに変化する。このため、インバータINVCのnMOSトランジスタMN12およびインバータINVEのnMOSトランジスタMN10は、オフ状態に維持される。また、インバータINVCのpMOSトランジスタMP12およびインバータINVEのpMOSトランジスタMP10はオン状態に維持される。そして、インバータINVLのnMOSトランジスタMN10がオフし、インバータINVLのpMOSトランジスタMP10がオンする。したがって、式(5)で示した電流IDR2が出力端子PIOUTに供給される。
例えば、全てのインバータINVEがオンに設定されているときでは、電流IDR2は、電流IDRと同じである。このため、出力電圧PIOUTは、時刻T12以降も、時刻T12以前と同じ傾きで、時間の経過に伴い上昇する。例えば、時刻T10から時刻T12までの期間では、出力電圧PIOUTは、接地電圧GNDから電源VDDの2分の1まで上昇する。そして、時刻T12以降では、出力電圧PIOUTは、電源VDDの2分の1から電源VDDまで上昇する。
したがって、時刻T12では、出力電圧PIOUTは、出力バッファの閾値電圧(VDD/2)まで上昇する。これにより、電圧OUT10は、高レベルから低レベルに変化する。すなわち、電圧OUT10は、クロックCLK10が高レベルから低レベルに変化した時刻T10から、時間TD10経過後に低レベルに変化する。
なお、全てのインバータINVEがオフに設定されているときの出力電圧PIOUTは、電流IDR2(IDR2=2・n・Id)および出力端子PIOUTの負荷容量に基づく傾きで、時間の経過に伴い電源VDDまで上昇する。出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)より低い期間では、電圧OUT18は、高レベルに維持される。そして、出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)まで上昇したときに、電圧OUT18は、高レベルから低レベルに変化する。例えば、電圧OUT18は、クロックCLK10が高レベルから低レベルに変化した時刻T10から、時間TD18経過後に低レベルに変化する。
時刻T20では、クロックCLK10は低レベルから高レベルに変化し、クロックCLK20は低レベルに維持される。このため、インバータINVCのnMOSトランジスタMN12およびインバータINVEのnMOSトランジスタMN10がオンする。そして、インバータINVCのpMOSトランジスタMP12およびインバータINVEのpMOSトランジスタMP10がオフする。また、インバータINVLのnMOSトランジスタMN10はオフ状態に維持され、インバータINVLのpMOSトランジスタMP10はオン状態に維持される。したがって、式(4)で示した電流IDRが出力端子PIOUTから引き抜かれる。
例えば、全てのインバータINVEがオンに設定されているときの出力電圧PIOUTは、電流IDR(IDR=2・n・Id)および出力端子PIOUTの負荷容量に基づく傾きで、時間の経過に伴い下降する。出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)より高い期間(時刻T22より前の期間)では、電圧OUT10は、低レベルに維持される。
なお、全てのインバータINVEがオフに設定されているときの出力電圧PIOUTは、電流IDRが出力端子PIOUTから引き抜かれないため、電源VDDに維持される。したがって、時刻T20では、電圧OUT18は、低レベルに維持される。
時刻T22では、クロックCLK10は高レベルに維持され、クロックCLK20は低レベルから高レベルに変化する。このため、インバータINVCのnMOSトランジスタMN12およびインバータINVEのnMOSトランジスタMN10は、オン状態に維持される。また、インバータINVCのpMOSトランジスタMP12およびインバータINVEのpMOSトランジスタMP10はオフ状態に維持される。そして、インバータINVLのnMOSトランジスタMN10がオンし、インバータINVLのpMOSトランジスタMP10がオフする。したがって、式(5)で示した電流IDR2が出力端子PIOUTから引き抜かれる。
例えば、全てのインバータINVEがオンに設定されているときでは、電流IDR2は、電流IDRと同じである。このため、出力電圧PIOUTは、時刻T22以降も、時刻T22以前と同じ傾きで、時間の経過に伴い下降する。例えば、時刻T20から時刻T22までの期間では、出力電圧PIOUTは、電源VDDから電源VDDの2分の1まで下降する。そして、時刻T22以降では、出力電圧PIOUTは、電源VDDの2分の1から接地電圧GNDまで下降する。
したがって、時刻T22では、出力電圧PIOUTは、出力バッファの閾値電圧(VDD/2)まで下降する。これにより、電圧OUT10は、低レベルから高レベルに変化する。すなわち、電圧OUT10は、クロックCLK10が低レベルから高レベルに変化した時刻T20から、時間TD10経過後に高レベルに変化する。
なお、全てのインバータINVEがオフに設定されているときの出力電圧PIOUTは、電流IDR2(IDR2=2・n・Id)および出力端子PIOUTの負荷容量に基づく傾きで、時間の経過に伴い接地電圧GNDまで下降する。出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)より高い期間では、電圧OUT18は、低レベルに維持される。そして、出力電圧PIOUTが出力バッファの閾値電圧(VDD/2)まで下降したときに、電圧OUT18は、低レベルから高レベルに変化する。例えば、電圧OUT18は、クロックCLK10が低レベルから高レベルに変化した時刻T20から、時間TD18経過後に高レベルに変化する。
このように、クロックCLK10に対する電圧OUTの遅延時間TD(TD10、TD18)は、オンさせるインバータINVEの個数“m”に応じて変化する。例えば、全てのインバータINVEがオンに設定されているときの遅延時間TD10は、クロックCLK10に対する最小の遅延時間である。また、全てのインバータINVEがオフに設定されているときの遅延時間TD18は、クロックCLK10に対する最大の遅延時間である。なお、この実施形態では、図5に示すように、オンさせるインバータINVEの個数“m”を調整することにより、遅延時間TD10と遅延時間TD18との間の遅延時間に設定できる。
図5は、図2に示したインバータINVEのオンの個数と遅延時間との関係の一例を示している。なお、図5は、インバータINVEが8個(n=8)のときのインバータINVEのオンの個数“m”と遅延時間TDとの関係の一例を示している。また、図5の例では、インバータINVCのトランジスタMN12、MN22、MP12、MP22のサイズは、インバータINVEのトランジスタMN10、MN20、MP10、MP20の8倍(n倍)である。
電源電圧VDDの2分の1に到達するまでの出力電圧PIOUTの遅延時間TD(TD10−TD18)は、インバータINVEのオンの個数“m”の減少に伴い、増加する。ここで、例えば、図の“m=8”は、全て(8個)のインバータINVEがオンに設定され、全て(8個)のインバータINVLがオフに設定されているときの出力電圧PIOUTを示している。また、例えば、“m=7”は、7個のインバータINVEがオンに設定され、1個のインバータINVLがオンに設定されているときの出力電圧PIOUTを示している。
時刻T10から時刻T12までの期間では、駆動回路20の電流が相殺されるため、式(4)で示した電流IDR(IDR=2・m・Id)が出力端子PIOUTに供給される。したがって、出力端子PIOUTに供給される電流IDRは、インバータINVEのオンの個数“m”に比例して増加する。このため、時刻T12での出力電圧PIOUTは、式(6)に示すように、インバータINVEのオンの個数“m”に比例して増加する。ここで、式(6)のVt12は、時刻T12での出力電圧PIOUTを示している。また、式(6)の“C”は、出力端子PIOUTの負荷容量であり、TD10は、時刻T10から時刻T12までの時間である。
Vt12=IDR・TD10/C=2・m・Id・TD10/C ‥‥(6)
時刻T12以降では、式(5)で示した電流IDR2(IDR=2・n・Id)が出力端子PIOUTに供給される。したがって、駆動回路10、20のインバータINVE、INVLの個数“n”が一定のとき、出力端子PIOUTに供給される電流IDRは、インバータINVEのオンの個数“m”に拘わらず、一定である。このため、時刻T12以降では、出力電圧PIOUTは、インバータINVEのオンの個数“m”に拘わらず、一定の傾きで、電源VDDまで上昇する。
したがって、電源電圧VDDの2分の1まで到達する出力電圧PIOUTの遅延時間TDと“m”との関係は、式(7)で表される。
IDR2・(TD−TD10)=C・(VDD/2−Vt12) ‥‥(7)
また、図5の例では、全てのインバータINVEがオンに設定されるとき(m=n)、出力電圧PIOUTは、時間TD10で電源電圧VDDの2分の1まで到達する。したがって、式(6)のVt12および“m”にVDD/2および“n”をそれぞれ代入することにより、式(8)が与えられる。そして、遅延時間TDは、式(6)、(7)、(8)に基づいて、式(9)で与えられる。
VDD/2=2・n・Id・TD10/C ‥‥(8)
TD=TD10・(1+(n−m)/n) ‥‥(9)
式(9)の“n−m”は、インバータINVEのオフの個数に対応している。すなわち、遅延時間TDは、インバータINVEのオフの個数の増加に伴い、増加する。また、遅延時間TD10は、クロックCLK10に対するクロックCLK20の遅延時間に対応している。したがって、この実施形態では、遅延時間TD10のn分の1のステップで、遅延時間TDを精度よく調整できる。すなわち、この実施形態では、クロックCLK10、CLK20の位相差のn分の1のステップで、クロックの位相を精度よく調整できる。
なお、インバータINVE、INVL、INVCは、クロックCLK10が変化してからCLK20が変化する前に出力電圧PIOUTが閾値電圧(例えば、VDD/2)を超えないように設計される。例えば、インバータINVE、INVL、INVCは、全てのインバータINVEがオンに設定されているときにも、時刻T12での出力電圧PIOUTが閾値電圧(VDD/2)を超えないように設計される。この条件を満たしていれば、インバータINVCのトランジスタMN12、MN22、MP12、MP22のサイズがインバータINVEのトランジスタMN10、MN20、MP10、MP20の8倍(n倍)以上のときにも、クロックの位相を精度よく調整できる。
以上、この実施形態では、位相補間回路PIは、駆動回路20の電流を相殺するための電流を生成するオフセット回路30を有している。例えば、オフセット回路30は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路20の電流を相殺するための電流を生成する。これにより、この実施形態では、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路10のインバータINVEのオンの個数“m”に比例する電流で、出力端子PIOUTの負荷容量を充放電できる。すなわち、この実施形態では、駆動回路10のインバータINVEのオンの個数“m”を調整することにより、クロックの位相を精度よく調整できる。この結果、この実施形態では、位相補間の線形性を向上できる。
図6は、別の実施形態における位相補間回路PIの一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の位相補間回路PIは、図1に示した駆動回路20およびオフセット回路30の代わりに、駆動回路22およびオフセット回路32を有している。その他の構成は、上述した実施形態と同じである。例えば、位相補間回路PIは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
位相補間回路PIは、駆動回路10、22およびオフセット回路32を有している。例えば、駆動回路10、22およびオフセット回路32の各出力は、共通の出力端子PIOUTに接続されている。駆動回路10は、例えば、制御信号CNTAにより設定された駆動力に対応する電流を、クロックCLK10に応じて生成する。これにより、駆動回路10は、例えば、出力端子PIOUTの負荷容量をクロックCLK10に応じて充放電する。
駆動回路22は、クロックCLK20および制御信号CNTBを受ける。例えば、駆動回路22の駆動力は、制御信号CNTBにより可変設定される。そして、駆動回路22は、設定された駆動力に対応する電流をクロックCLK20に応じて生成する。これにより、駆動回路22は、例えば、出力端子PIOUTの負荷容量をクロックCLK20に応じて充放電する。なお、クロックCLK20は、クロックCLK10に比べて位相の遅れたクロックである。
オフセット回路32は、クロックCLK10および制御信号CNTBを受ける。例えば、オフセット回路32の駆動力は、制御信号CNTBにより可変設定される。また、オフセット回路32は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路22の電流を相殺するための電流を生成する。例えば、オフセット回路32は、貫通電流に相当する電流を駆動回路22に供給する。これにより、この実施形態では、例えば、出力端子PIOUTの負荷容量を充放電する電流が制御信号CNTAで設定した駆動力に対応する電流より小さくなることを防止できる。すなわち、この実施形態では、駆動回路10の駆動力が制御信号CNTAで設定した駆動力より小さくなることを防止できる。
図7は、図6に示した駆動回路10、22およびオフセット回路32の一例を示している。図7の破線の矢印は、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのときに流れる電流の一例を示している。また、インバータINVE、駆動部NDRV、PDRV、制御信号EN、ENXの末尾の数字および“n”の意味は、図3と同じである。駆動回路10は、図3に示した駆動回路10と同じである。したがって、インバータINVEが受ける制御信号EN、ENXは、図6に示した制御信号CNTAに対応している。
駆動回路22は、クロックCLK20を共通に受けるn個の駆動部NDRV(NDRV1、NDRV2、・・・、NDRVn)を有している。駆動部NDRVは、例えば、図3に示したインバータINVLの接地線側の回路に対応している。例えば、各駆動部NDRVは、出力端子PIOUTと接地線との間に直列に接続されたnMOSトランジスタMN20、MN10を有している。
nMOSトランジスタMN10は、ゲートでクロックCLK20を受ける。また、nMOSトランジスタMN20のゲートは、制御端子GNに接続されている。すなわち、nMOSトランジスタMN20は、制御信号ENXに応じて、駆動部NDRVをオン/オフするスイッチとして機能する。なお、駆動部NDRVが受ける制御信号ENXは、図6に示した制御信号CNTBに含まれる。
例えば、駆動部NDRVは、制御信号ENXによりオンに設定されているとき、クロックCLK20に応じて出力端子PIOUTから電流を引き抜く。すなわち、駆動部NDRVは、クロックCLK20に応じて出力端子PIOUTから電流を引き抜く電流生成部として機能する。
オフセット回路32は、クロックCLK10を共通に受けるn個の駆動部PDRV(PDRV1、PDRV2、・・・、PDRVn)を有している。駆動部PDRVは、例えば、図3に示したインバータINVLの電源VDD側の回路に対応している。例えば、各駆動部PDRVは、電源VDDと出力端子PIOUTとの間に直列に接続されたpMOSトランジスタMP10、MP20を有している。
pMOSトランジスタMP10は、ゲートでクロックCLK10を受ける。また、pMOSトランジスタMP20のゲートは、制御端子GPに接続されている。すなわち、pMOSトランジスタMP20は、制御信号ENに応じて、駆動部PDRVをオン/オフするスイッチとして機能する。例えば、駆動部PDRVが受ける制御信号ENは、図6に示した制御信号CNTBに含まれる。なお、制御信号ENXが制御信号ENの反転信号であるため、駆動部PDRVのオンの個数は、駆動部NDRVのオンの個数と同じである。
例えば、駆動部PDRVは、制御信号ENによりオンに設定されているとき、クロックCLK10に応じて出力端子PIOUTに電流を供給する。すなわち、駆動部PDRVは、クロックCLK10に応じて出力端子PIOUTに電流を流し込む電流生成部として機能する。
また、駆動部NDRVの制御端子GNは、インバータINVEの制御端子GPに接続され、駆動部PDRVの制御端子GPは、インバータINVEの制御端子GNに接続されている。したがって、オンに設定される駆動部NDRVの個数およびオンに設定される駆動部PDRVの個数は、n個のインバータINVEのうちのオフに設定されるインバータINVEの個数と同じである。例えば、m個(mは0以上n以下の整数)のインバータINVEがオンしているとき、(n−m)個の駆動部NDRVおよび(n−m)個の駆動部PDRVがオンする。
このように、駆動回路22およびオフセット回路32の駆動力の重み付けは、駆動回路10の駆動力の重み付けに応じて、設定される。例えば、駆動回路22およびオフセット回路32の駆動力は、オンさせる駆動部NDRV、PDRVの個数を制御信号ENX、ENで調整することにより、可変設定される。したがって、駆動部NDRVが受ける制御信号ENXおよび駆動部PDRVが受ける制御信号ENは、図6に示した制御信号CNTBに対応している。
ここで、例えば、各駆動部NDRVおよび各駆動部PDRVの駆動力は、各インバータINVEと同じである。したがって、例えば、オフセット回路32(より詳細には、オンに設定されている駆動部PDRV)は、駆動回路22(より詳細には、オンに設定されている駆動部NDRV)で生成される電流ILDに相当する電流ICDを生成する。
例えば、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルの期間では、駆動部PDRVのpMOSトランジスタMP10および駆動部NDRVのnMOSトランジスタMN10がオンする。これにより、電源VDDから出力端子PIOUTに流れる電流ICDがオフセット回路32で生成され、出力端子PIOUTから接地線に流れる電流ILDが駆動回路22で生成される。このように、駆動回路22で生成される電流ILDは、例えば、オフセット回路32で生成される電流ICDにより相殺される。
すなわち、オフセット回路32は、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルのとき、駆動回路22の電流ILDを相殺するための電流ICDを生成する。すなわち、オフセット回路32は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路22の電流ILDを相殺するための電流ICDを生成する調整部として機能する。例えば、クロックCLK10、CLK20がそれぞれ低レベルおよび高レベルの期間では、駆動回路10で生成された電流IEDに相当する電流IDRが、出力端子PIOUTに供給される。
なお、クロックCLK10、CLK20がそれぞれ高レベルおよび低レベルの期間では、駆動部PDRVのpMOSトランジスタMP10および駆動部NDRVのnMOSトランジスタMN10がオフする。このため、駆動部NDRVには、貫通電流は流れない。したがって、クロックCLK10、CLK20がそれぞれ高レベルおよび低レベルの期間では、駆動回路10で生成された電流IEDに相当する電流IDRが、出力端子PIOUTから引き抜かれる。
すなわち、クロックCLK10、CLK20のレベルが互いに異なる期間では、出力端子PIOUTの負荷容量は、駆動回路10で生成された電流IEDに相当する電流IDRにより充放電される。なお、電流IEDは、例えば、図3で説明した式(2)で与えられる(IED=m・Id)。したがって、電流IDRは、インバータINVEのオンの個数“m”に比例して増加する。
また、クロックCLK10、CLK20が共に低レベルの期間では、駆動部PDRVのpMOSトランジスタMP10がオンし、駆動部NDRVのnMOSトランジスタMN10がオフする。このため、駆動回路10で生成された電流IEDとオフセット回路32で生成された電流ICDとの和に相当する電流IDRが、出力端子PIOUTに供給される。
なお、この実施形態では、電流ICDは、電流ILDと等しいため、例えば、図3で説明した式(3)で与えられる(ICD=ILD=(n−m)・Id)。したがって、クロックCLK10、CLK20が共に低レベルの期間では、駆動回路10のインバータINVEの個数“n”が一定のとき、出力端子PIOUTに供給される電流IDRは、インバータINVEのオンの個数“m”に拘わらず、一定である。
クロックCLK10、CLK20が共に高レベルの期間では、駆動部PDRVのpMOSトランジスタMP10がオフし、駆動部NDRVのnMOSトランジスタMN10がオンする。このため、駆動回路10で生成された電流IEDと駆動回路22で生成された電流ILDとの和に相当する電流IDRが、出力端子PIOUTから引き抜かれる。なお、電流ILDは、例えば、図3で説明した式(3)で与えられる。
したがって、クロックCLK10、CLK20が共に低レベルの期間では、駆動回路10のインバータINVEの個数“n”が一定のとき、出力端子PIOUTから引き抜かれる電流IDRは、インバータINVEのオンの個数“m”に拘わらず、一定である。すなわち、クロックCLK10、CLK20のレベルが互いに同じ期間では、出力端子PIOUTの負荷容量は、一定の電流(n・Id)により充放電される。
このように、この実施形態では、オンさせるインバータINVEの個数“m”を可変設定することにより、出力端子PIOUTの負荷容量を充放電する電流を精度よく制御できる。これにより、この実施形態では、位相補間の線形性が貫通電流の影響により劣化することを防止できる。すなわち、この実施形態では、オンさせるインバータINVEの個数“m”を可変設定することにより、クロックの位相を精度よく制御できる。
なお、位相補間回路PIの構成は、この例に限定されない。例えば、pMOSトランジスタMP10のゲートで受ける信号とpMOSトランジスタMP20のゲートで受ける信号とを逆にしてもよい。また、nMOSトランジスタMN10のゲートで受ける信号とnMOSトランジスタMN20のゲートで受ける信号とを逆にしてもよい。
また、例えば、位相補間回路PIは、1つのnMOSトランジスタMN10に対して、クロックCLK20をゲートで受ける2つのダミーのpMOSトランジスタを有してもよい。例えば、ダミーのpMOSトランジスタは、ソースおよびドレインが電源VDDに接続されている。また、2つのダミーのpMOSトランジスタのそれぞれのサイズは、例えば、pMOSトランジスタMP10と同じである。この場合、クロックCLK10、CLK20の入力負荷が同じになるため、例えば、駆動回路10、22のスルーレートに差が生じることを防止できる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、オフセット回路32は、クロックCLK10が高レベルの期間では、電流を生成しない。このため、この実施形態では、位相補間回路PIの消費電力を抑制できる。
図8は、別の実施形態における位相補間回路PIの一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。図8の破線の矢印は、クロックCLK10、CLK20がそれぞれ高レベルおよび低レベルのときに流れる電流の一例を示している。また、インバータINVE、駆動部NDRV、PDRV、制御信号EN、ENXの末尾の数字および“n”の意味は、図7と同じである。
この実施形態の位相補間回路PIは、図6に示した駆動回路22およびオフセット回路32の代わりに、駆動回路24およびオフセット回路34を有している。その他の構成は、図6および図7で説明した実施形態と同じである。例えば、位相補間回路PIは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
位相補間回路PIは、駆動回路10、24およびオフセット回路34を有している。例えば、駆動回路10、24およびオフセット回路34の各出力は、共通の出力端子PIOUTに接続されている。駆動回路24は、クロックCLK10の代わりにクロックCLK20を受けることを除いて、図7に示したオフセット回路32と同じである。また、オフセット回路34は、クロックCLK20の代わりにクロックCLK10を受けることを除いて、図7に示した駆動回路22と同じである。
したがって、例えば、クロックCLK10、CLK20がそれぞれ高レベルおよび低レベルの期間では、駆動部PDRVのpMOSトランジスタMP10および駆動部NDRVのnMOSトランジスタMN10がオンする。この期間では、駆動回路24(より詳細には、オンに設定されている駆動部PDRV)で生成される電流ILDに相当する電流ICDがオフセット回路34(より詳細には、オンに設定されている駆動部NDRV)で生成されるため、駆動回路24の電流ILDが相殺される。すなわち、オフセット回路34は、クロックCLK10、CLK20のレベルが互いに異なるとき、駆動回路24の電流ILDを相殺するための電流ICDを生成する調整部として機能する。
なお、位相補間回路PIの構成は、この例に限定されない。例えば、pMOSトランジスタMP10のゲートで受ける信号とpMOSトランジスタMP20のゲートで受ける信号とを逆にしてもよい。また、nMOSトランジスタMN10のゲートで受ける信号とnMOSトランジスタMN20のゲートで受ける信号とを逆にしてもよい。
また、例えば、位相補間回路PIは、1つのpMOSトランジスタMP10に対して、クロックCLK20をゲートで受ける2つのダミーのnMOSトランジスタを有してもよい。例えば、ダミーのnMOSトランジスタは、ソースおよびドレインが接地されている。また、2つのダミーのnMOSトランジスタのそれぞれのサイズは、例えば、nMOSトランジスタMN10と同じである。この場合、クロックCLK10、CLK20の入力負荷が同じになるため、例えば、駆動回路10、24のスルーレートに差が生じることを防止できる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
図9は、上述した実施形態の位相補間回路PIが搭載される半導体装置SYSの一例を示している。半導体装置SYSは、例えば、データを送信する送信部130、132を含むモジュール100と、データを受信する受信部210、212を含むモジュール200とを有している。モジュール100は、例えば、位相補間部110、112、遅延回路120および送信部130、132を有している。例えば、送信部130、132は、メモリインターフェース回路の一部を形成する。
各位相補間部110、112は、位相補間回路PI、制御部PCTL、出力バッファOBUFを有している。制御部PCTLは、例えば、制御信号EN、ENXを用いて、位相補間回路PIを制御する。例えば、制御部PCTLは、モジュール200の受信部210が受けるデータの位相と受信部212が受けるデータの位相とが揃うように、制御信号EN、ENXを設定する。出力バッファOBUFは、例えば、インバータである。出力バッファOBUFは、位相補間回路PIの出力電圧PIOUTを受け、出力電圧OUT(以下、クロックOUTとも称する)を生成する。例えば、位相補間部110の出力バッファOBUFは、クロックOUTを送信部130に出力する。また、例えば、位相補間部112の出力バッファOBUFは、クロックOUTを送信部132に出力する。
遅延回路120は、クロックCLK10を受け、クロックCLK10を遅延させたクロックCLK20を生成する。そして、遅延回路120は、クロックCLK20を位相補間部110、112のそれぞれの位相補間回路PIに出力する。送信部130は、位相補間部110から供給されたクロックOUTに同期して動作し、モジュール200の受信部210にデータを送信する。また、送信部132は、位相補間部112から供給されたクロックOUTに同期して動作し、モジュール200の受信部212にデータを送信する。
各位相補間部110、112の出力バッファOBUFから出力されるクロックOUTは、位相補間回路PIにより位相が調整されたクロックである。したがって、半導体装置SYSは、例えば、送信部130および受信部210間の配線長と送信部132および受信部212間の配線長とが異なるときにも、受信部210が受けるデータと受信部212が受けるデータとの位相のずれを低減できる。
なお、位相補間部110、112等は、データの受信側(例えば、モジュール200)に設けられてもよい。また、モジュール100、200は、互いに異なるLSIチップに形成されてもよいし、同一のLSIチップに形成されてもよい。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
第1制御信号により駆動力が調整され、前記第1制御信号により設定された駆動力に対応する第1電流を、第1クロックに応じて生成する第1駆動回路と、
第2制御信号により駆動力が調整され、前記第2制御信号により設定された駆動力に対応する第2電流を、前記第1クロックに比べて位相の遅れた第2クロックに応じて生成する第2駆動回路と、
前記第1クロックおよび前記第2クロックのレベルが互いに異なるとき、前記第2電流を相殺するための第3電流を生成する調整部とを備え、
前記第1駆動回路の駆動力および前記第2駆動回路の駆動力は、前記第1電流および前記第2電流の和が一定になるように設定されること
を特徴とする位相補間回路。
(付記2)
前記第1駆動回路は、
前記第1クロックを共通に受け、出力が共通の出力ノードに接続され、前記第1制御信号によりオン/オフが個別に制御されるn個(nは2以上の整数)のインバータを有し、
前記第2駆動回路は、
前記第2クロックを共通に受け、出力が前記出力ノードに接続され、前記第2制御信号によりオン/オフが個別に制御されるn個のインバータを有し、
前記調整部は、
前記第1クロックを受け、出力が前記出力ノードに接続され、駆動力が前記第2駆動回路のn個のインバータの合計の駆動力以上のインバータを有し、
前記第2駆動回路のn個のインバータのうち、オンに設定されるインバータの個数は、前記第1駆動回路のn個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする位相補間回路。
(付記3)
前記調整部の駆動力は、前記第2駆動回路のn個のインバータの合計の駆動力と同じであること
を特徴とする付記2記載の位相補間回路。
(付記4)
前記第1駆動回路は、
前記第1クロックを共通に受け、出力が共通の出力ノードに接続され、前記第1制御信号によりオン/オフが個別に制御されるn個(nは2以上の整数)のインバータを有し、
前記第2駆動回路および前記調整部の一方は、
電源線と前記出力ノードとの間に並列に接続され、前記第1クロックおよび前記第2クロックの一方に応じて前記出力ノードに電流を流し込み、前記第2制御信号によりオン/オフが個別に制御されるn個の第1電流生成部を有し、
前記第2駆動回路および前記調整部の他方は、
前記出力ノードと接地線との間に並列に接続され、前記第1クロックおよび前記第2クロックの他方に応じて前記出力ノードから電流を引き抜き、前記第2制御信号によりオン/オフが個別に制御されるn個の第2電流生成部を有し、
オンに設定される前記第1電流生成部の個数およびオンに設定される前記第2電流生成部の個数は、前記第1駆動回路のn個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする付記1記載の位相補間回路。
(付記5)
前記n個の第1電流生成部は、前記第1クロックに応じて前記出力ノードに電流を流し込み、
前記n個の第2電流生成部は、オンに設定された前記第1電流生成部の個数と同じ個数だけオンに設定され、前記第2クロックに応じて前記出力ノードから電流を引き抜くこと
を特徴とする付記4記載の位相補間回路。
(付記6)
前記n個の第1電流生成部は、前記第2クロックに応じて前記出力ノードに電流を流し込み、
前記n個の第2電流生成部は、オンに設定された前記第1電流生成部の個数と同じ個数だけオンに設定され、前記第1クロックに応じて前記出力ノードから電流を引き抜くこと
を特徴とする付記4記載の位相補間回路。
(付記7)
位相補間回路を含むモジュールを備えた半導体装置であって、
前記位相補間回路は、
第1制御信号により駆動力が調整され、前記第1制御信号により設定された駆動力に対応する第1電流を、第1クロックに応じて生成する第1駆動回路と、
第2制御信号により駆動力が調整され、前記第2制御信号により設定された駆動力に対応する第2電流を、前記第1クロックに比べて位相の遅れた第2クロックに応じて生成する第2駆動回路と、
前記第1クロックおよび前記第2クロックのレベルが互いに異なるとき、前記第2電流を相殺するための第3電流を生成する調整部とを備え、
前記第1駆動回路の駆動力および前記第2駆動回路の駆動力は、前記第1電流および前記第2電流の和が一定になるように設定されること
を特徴とする半導体装置。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。