(57)【特許請求の範囲】
【請求項１】
第１制御信号により駆動力が調整され、前記第１制御信号により設定された駆動力に対応する第１電流を、第１クロックに応じて生成する第１駆動回路と、
第２制御信号により駆動力が調整され、前記第２制御信号により設定された駆動力に対応する第２電流を、前記第１クロックに比べて位相の遅れた第２クロックに応じて生成する第２駆動回路と、
前記第１クロックおよび前記第２クロックのレベルが互いに異なるとき、前記第２電流を相殺するための第３電流を生成する調整部とを備え、
前記第１駆動回路の駆動力および前記第２駆動回路の駆動力は、前記第１電流および前記第２電流の和が一定になるように設定されること
を特徴とする位相補間回路。
【請求項２】
前記第１駆動回路は、
前記第１クロックを共通に受け、出力が共通の出力ノードに接続され、前記第１制御信号によりオン／オフが個別に制御されるｎ個（ｎは２以上の整数）のインバータを有し、
前記第２駆動回路は、
前記第２クロックを共通に受け、出力が前記出力ノードに接続され、前記第２制御信号によりオン／オフが個別に制御されるｎ個のインバータを有し、
前記調整部は、
前記第１クロックを受け、出力が前記出力ノードに接続され、駆動力が前記第２駆動回路のｎ個のインバータの合計の駆動力以上のインバータを有し、
前記第２駆動回路のｎ個のインバータのうち、オンに設定されるインバータの個数は、前記第１駆動回路のｎ個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする請求項１記載の位相補間回路。
【請求項３】
前記調整部の駆動力は、前記第２駆動回路のｎ個のインバータの合計の駆動力と同じであること
を特徴とする請求項２記載の位相補間回路。
【請求項４】
前記第１駆動回路は、
前記第１クロックを共通に受け、出力が共通の出力ノードに接続され、前記第１制御信号によりオン／オフが個別に制御されるｎ個（ｎは２以上の整数）のインバータを有し、
前記第２駆動回路および前記調整部の一方は、
電源線と前記出力ノードとの間に並列に接続され、前記第１クロックおよび前記第２クロックの一方に応じて前記出力ノードに電流を流し込み、前記第２制御信号によりオン／オフが個別に制御されるｎ個の第１電流生成部を有し、
前記第２駆動回路および前記調整部の他方は、
前記出力ノードと接地線との間に並列に接続され、前記第１クロックおよび前記第２クロックの他方に応じて前記出力ノードから電流を引き抜き、前記第２制御信号によりオン／オフが個別に制御されるｎ個の第２電流生成部を有し、
オンに設定される前記第１電流生成部の個数およびオンに設定される前記第２電流生成部の個数は、前記第１駆動回路のｎ個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする請求項１記載の位相補間回路。
【請求項５】
位相補間回路を含むモジュールを備えた半導体装置であって、
前記位相補間回路は、
第１制御信号により駆動力が調整され、前記第１制御信号により設定された駆動力に対応する第１電流を、第１クロックに応じて生成する第１駆動回路と、
第２制御信号により駆動力が調整され、前記第２制御信号により設定された駆動力に対応する第２電流を、前記第１クロックに比べて位相の遅れた第２クロックに応じて生成する第２駆動回路と、
前記第１クロックおよび前記第２クロックのレベルが互いに異なるとき、前記第２電流を相殺するための第３電流を生成する調整部とを備え、
前記第１駆動回路の駆動力および前記第２駆動回路の駆動力は、前記第１電流および前記第２電流の和が一定になるように設定されること
を特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、位相補間回路および半導体装置に関する。
【背景技術】
【０００２】
クロック同期式の半導体集積回路では、クロックの位相や周波数を調整する様々な手法が提案されている（例えば、特許文献１、特許文献２、特許文献３）。例えば、クロックの位相を調整する位相補間回路は、位相の異なる２つのクロックを受け、２つのクロックの位相を補間したクロックを出力する。位相補間回路は、例えば、相対的に位相の進んだクロック（以下、早いクロックとも称する）を受けるインバータ（以下、早い側インバータとも称する）と、相対的に位相の遅れたクロック（以下、遅いクロックとも称する）を受けるインバータ（以下、遅い側インバータとも称する）とを有している。
【０００３】
早い側インバータの出力および遅い側インバータの出力は、共通のノードに接続されている。これにより、共通のノードには、２つのクロックの位相を補間したクロックが出力される。なお、この種の位相補間回路では、２つのクロックのレベルが異なるとき、貫通電流が流れる。
【０００４】
近年、貫通電流を防止した位相補間回路が提案されている（例えば、特許文献４）。貫通電流を防止した位相補間回路では、例えば、早い側インバータおよび遅い側インバータの各インバータは、電源および接地線間に直列に接続された２つのｐＭＯＳトランジスタおよび２つのｎＭＯＳトランジスタを有している。なお、遅い側インバータは、例えば、早いクロックと遅いクロックの両方を受ける。
【０００５】
例えば、遅い側インバータは、ドレインが互いに接続されたｐＭＯＳトランジスタおよびｎＭＯＳトランジスタのゲートで、２つのクロックの一方を受け、残りのｐＭＯＳトランジスタおよびｎＭＯＳトランジスタのゲートで、他方のクロックを受ける。これにより、２つのクロックのレベルが異なるとき、遅い側インバータでは、２つのｐＭＯＳトランジスタのいずれかおよび２つのｎＭＯＳトランジスタのいずれかがオフする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−２７３０４８号公報
【特許文献２】特開２００２−２１５２６２号公報
【特許文献３】特開２００３−１２４７８７号公報
【特許文献４】特開２００４−１２９１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
早い側インバータおよび遅い側インバータの駆動力の重み付けを可変にした細かな位相調整を実施するとき、一般的な位相補間回路では、貫通電流により、重み付けに対する位相補間の線形性が劣化する。例えば、早いクロックが高レベルから低レベルに変化したとき、早い側インバータのｐＭＯＳトランジスタがオンする。このとき、遅い側インバータのｎＭＯＳトランジスタがオンしているため、早い側インバータのｐＭＯＳトランジスタから遅い側インバータのｎＭＯＳトランジスタに貫通電流が流れる。貫通電流により、早い側インバータの駆動電流（負荷を駆動するための電流）が減少する。このため、貫通電流が流れている期間では、早い側インバータは、設定した駆動力より小さい駆動力で負荷を駆動する。このため、駆動力の重み付けに対する位相補間の線形性が劣化する。
【０００８】
なお、貫通電流を防止した位相補間回路では、２つのインバータの駆動力の重み付けを可変にした細かな位相調整を実施していない。例えば、貫通電流を防止した位相補間回路では、予め設定された固定の重み付けに基づく位相（例えば、２つのクロックの中間の位相）のクロックが生成される。
【０００９】
本発明の目的は、位相補間の線形性を向上することである。
【課題を解決するための手段】
【００１０】
本発明の一形態では、位相補間回路は、第１制御信号により駆動力が調整され、第１制御信号により設定された駆動力に対応する第１電流を、第１クロックに応じて生成する第１駆動回路と、第２制御信号により駆動力が調整され、第２制御信号により設定された駆動力に対応する第２電流を、第１クロックに比べて位相の遅れた第２クロックに応じて生成する第２駆動回路と、第１クロックおよび第２クロックのレベルが互いに異なるとき、第２電流を相殺するための第３電流を生成する調整部とを有し、第１駆動回路の駆動力および第２駆動回路の駆動力は、第１電流および第２電流の和が一定になるように設定される。
【発明の効果】
【００１１】
位相補間の線形性を向上できる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態における位相補間回路の例を示している。
【図２】図１に示した駆動回路およびオフセット回路の一例を示している。
【図３】図２に示したインバータの一例を示している。
【図４】図１に示した位相補間回路の動作の一例を示している。
【図５】図２に示したインバータのオンの個数と遅延時間との関係の一例を示している。
【図６】別の実施形態における位相補間回路の一例を示している。
【図７】図６に示した駆動回路およびオフセット回路の一例を示している。
【図８】別の実施形態における位相補間回路の一例を示している。
【図９】上述した実施形態の位相補間回路が搭載される半導体装置の一例を示している。
【発明を実施するための形態】
【００１３】
以下、実施形態を図面を用いて説明する。
【００１４】
図１は、一実施形態における位相補間回路ＰＩの例を示している。位相補間回路ＰＩは、例えば、ＬＳＩチップ内のモジュール間のデータ送受信やＬＳＩ間のデータ送受信を実施するデータ送受信回路のクロックの位相を調整する。例えば、位相補間回路ＰＩは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
【００１５】
位相補間回路ＰＩは、クロックＣＬＫ１０および制御信号ＣＮＴＡを受ける駆動回路１０と、クロックＣＬＫ２０および制御信号ＣＮＴＢを受ける駆動回路２０と、クロックＣＬＫ１０を受けるオフセット回路３０とを有している。なお、クロックＣＬＫ２０は、クロックＣＬＫ１０に比べて位相の遅れたクロックである。
【００１６】
駆動回路１０、２０およびオフセット回路３０の各出力は、例えば、共通の出力端子ＰＩＯＵＴに接続されている。以下、出力端子ＰＩＯＵＴの電圧を出力電圧ＰＩＯＵＴとも称する。なお、出力端子ＰＩＯＵＴには、例えば、図９に示すように、インバータ等の出力バッファが接続される。
【００１７】
駆動回路１０の駆動力は、例えば、制御信号ＣＮＴＡにより可変設定される。そして、駆動回路１０は、設定された駆動力に対応する電流をクロックＣＬＫ１０に応じて生成する。これにより、駆動回路１０は、例えば、出力端子ＰＩＯＵＴの負荷容量をクロックＣＬＫ１０に応じて充放電する。
【００１８】
駆動回路２０の駆動力は、例えば、制御信号ＣＮＴＢにより可変設定される。そして、駆動回路２０は、設定された駆動力に対応する電流をクロックＣＬＫ２０に応じて生成する。これにより、駆動回路２０は、例えば、出力端子ＰＩＯＵＴの負荷容量をクロックＣＬＫ２０に応じて充放電する。
【００１９】
なお、例えば、駆動回路２０の駆動力は、駆動回路１０に設定される駆動力と駆動回路２０に設定される駆動力との和が一定になるように、駆動回路１０に設定される駆動力に応じて設定される。すなわち、駆動回路１０の駆動力および駆動回路２０の駆動力は、例えば、駆動回路１０の電流および駆動回路２０の電流の和が一定になるように設定される。
【００２０】
オフセット回路３０は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２０の電流を相殺するための電流を生成する。すなわち、オフセット回路３０は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２０の電流を相殺するための電流を生成する調整部として機能する。例えば、オフセット回路３０は、貫通電流に相当する電流を駆動回路２０に供給する。
【００２１】
これにより、この実施形態では、例えば、出力端子ＰＩＯＵＴの負荷容量を充放電する電流が制御信号ＣＮＴＡで設定した駆動力に対応する電流より小さくなることを防止できる。すなわち、この実施形態では、駆動回路１０の駆動力が制御信号ＣＮＴＡで設定した駆動力より小さくなることを防止できる。
【００２２】
図２は、図１に示した駆動回路１０、２０およびオフセット回路３０の一例を示している。駆動回路１０は、クロックＣＬＫ１０を共通に受けるｎ個（ｎは２以上の整数）のインバータＩＮＶＥ（ＩＮＶＥ１、ＩＮＶＥ２、・・・、ＩＮＶＥｎ）を有している。
【００２３】
各インバータＩＮＶＥの出力は、出力端子ＰＩＯＵＴに接続されている。また、各インバータＩＮＶＥは、制御端子ＧＮ、ＧＰでそれぞれ受ける制御信号ＥＮ、ＥＮＸに応じて、オン／オフが制御される。制御信号ＥＮ、ＥＮＸの末尾の数字および“ｎ”は、インバータＩＮＶＥの末尾の数字および“ｎ”にそれぞれ対応している。また、制御信号ＥＮＸは、例えば、制御信号ＥＮの反転信号である。なお、インバータＩＮＶＥが受ける制御信号ＥＮ、ＥＮＸは、図１に示した制御信号ＣＮＴＡに対応している。
【００２４】
例えば、駆動回路１０の駆動力は、オンさせるインバータＩＮＶＥの個数を制御信号ＥＮ、ＥＮＸで調整することにより、可変設定される。すなわち、駆動回路１０の駆動力の重み付けは、オンさせるインバータＩＮＶＥの個数を制御信号ＥＮ、ＥＮＸで設定することにより、設定される。
【００２５】
駆動回路２０は、クロックＣＬＫ２０を共通に受けるｎ個のインバータＩＮＶＬ（ＩＮＶＬ１、ＩＮＶＬ２、・・・、ＩＮＶＬｎ）を有している。各インバータＩＮＶＬの出力は、出力端子ＰＩＯＵＴに接続されている。なお、インバータＩＮＶＬの末尾の数字および“ｎ”は、制御信号ＥＮ、ＥＮＸの末尾の数字および“ｎ”にそれぞれ対応している。各インバータＩＮＶＬの構成および駆動力は、例えば、各インバータＩＮＶＥと同じである。
【００２６】
例えば、各インバータＩＮＶＬは、制御端子ＧＮ、ＧＰでそれぞれ受ける制御信号ＥＮＸ、ＥＮに応じて、オン／オフが制御される。なお、インバータＩＮＶＬの制御端子ＧＮは、インバータＩＮＶＥの制御端子ＧＰに接続され、インバータＩＮＶＬの制御端子ＧＰは、インバータＩＮＶＥの制御端子ＧＮに接続されている。したがって、ｎ個のインバータＩＮＶＬのうち、オンに設定されるインバータＩＮＶＬの個数は、ｎ個のインバータＩＮＶＥのうちのオフに設定されるインバータＩＮＶＥの個数と同じである。例えば、ｍ個（ｍは０以上ｎ以下の整数）のインバータＩＮＶＥがオンしているとき、（ｎ−ｍ）個のインバータＩＮＶＬがオンする。
【００２７】
このように、駆動回路２０の駆動力の重み付けは、駆動回路１０の駆動力の重み付けに応じて、設定される。例えば、駆動回路２０の駆動力は、オンさせるインバータＩＮＶＬの個数を制御信号ＥＮ、ＥＮＸで調整することにより、可変設定される。したがって、インバータＩＮＶＬが受ける制御信号ＥＮ、ＥＮＸは、図１に示した制御信号ＣＮＴＢに対応している。
【００２８】
オフセット回路３０は、クロックＣＬＫ１０を受けるインバータＩＮＶＣを有している。インバータＩＮＶＣの駆動力は、ｎ個のインバータＩＮＶＬの駆動力の合計（駆動回路２０の駆動力）以上である。また、例えば、インバータＩＮＶＣの構成は、トランジスタのサイズを除いて、インバータＩＮＶＥと同じである。インバータＩＮＶＣの制御端子ＧＮは、電源ＶＤＤに接続され、インバータＩＮＶＣの制御端子ＧＰは、接地されている。これにより、インバータＩＮＶＣは、オン状態に維持される。
【００２９】
なお、インバータＩＮＶＣの構成は、インバータＩＮＶＥと異なっていてもよい。また、オフセット回路３０は、インバータＩＮＶＥと同じサイズのインバータをｎ個以上有してもよいし、インバータＩＮＶＥと同じサイズのインバータをｎ個有してもよい。
【００３０】
図３は、図２に示したインバータＩＮＶＥ、ＩＮＶＬ、ＩＮＶＣの一例を示している。図３の破線の矢印は、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのときに流れる電流の一例を示している。
【００３１】
各インバータＩＮＶＥは、電源ＶＤＤと接地線（接地電圧が供給される電源線）との間に直列に接続されたｐＭＯＳトランジスタＭＰ１０、ＭＰ２０、ｎＭＯＳトランジスタＭＮ２０、ＭＮ１０を有している。例えば、ｐＭＯＳトランジスタＭＰ１０は、ソースが電源ＶＤＤに接続され、ドレインがｐＭＯＳトランジスタＭＰ２０のソースに接続され、ゲートがｎＭＯＳトランジスタＭＮ１０のゲートに接続されている。そして、ｐＭＯＳトランジスタＭＰ１０は、ゲートでクロックＣＬＫ１０を受ける。
【００３２】
ｐＭＯＳトランジスタＭＰ２０は、ドレインが出力端子ＰＩＯＵＴおよびｎＭＯＳトランジスタＭＮ２０のドレインに接続され、ゲートが制御端子ＧＰに接続されている。また、ｎＭＯＳトランジスタＭＮ２０は、ソースがｎＭＯＳトランジスタＭＮ１０のドレインに接続され、ゲートが制御端子ＧＮに接続されている。すなわち、ｎＭＯＳトランジスタＭＮ２０およびｐＭＯＳトランジスタＭＰ２０は、制御信号ＥＮ、ＥＮＸに応じて、インバータＩＮＶＥをオン／オフするスイッチとして機能する。
【００３３】
ｎＭＯＳトランジスタＭＮ１０のソースは、接地されている。また、ｎＭＯＳトランジスタＭＮ１０は、ゲートでクロックＣＬＫ１０を受ける。すなわち、ｎＭＯＳトランジスタＭＮ１０およびｐＭＯＳトランジスタＭＰ１０は、ゲートで共通のクロックＣＬＫ１０を受ける。例えば、ｎＭＯＳトランジスタＭＮ１０およびｐＭＯＳトランジスタＭＰ１０は、クロックＣＬＫ１０を受けるインバータとして機能する。
【００３４】
インバータＩＮＶＬの構成は、インバータＩＮＶＥと同じである。例えば、ｎＭＯＳトランジスタＭＮ１０およびｐＭＯＳトランジスタＭＰ１０は、クロックＣＬＫ２０を受けるインバータとして機能する。また、例えば、ｎＭＯＳトランジスタＭＮ２０およびｐＭＯＳトランジスタＭＰ２０は、制御信号ＥＮＸ、ＥＮに応じて、インバータＩＮＶＥをオン／オフするスイッチとして機能する。
【００３５】
なお、インバータＩＮＶＬのｎＭＯＳトランジスタＭＮ２０のゲートは、インバータＩＮＶＥのｐＭＯＳトランジスタＭＰ２０のゲートに接続されている。また、インバータＩＮＶＬのｐＭＯＳトランジスタＭＰ２０のゲートは、インバータＩＮＶＥのｎＭＯＳトランジスタＭＮ２０のゲートに接続されている。したがって、符号の末尾の数字が同じインバータＩＮＶＥ、ＩＮＶＬの組みでは、一方がオンしているとき、他方がオフする。例えば、ｍ個のインバータＩＮＶＥがオンしているとき、（ｎ−ｍ）個のインバータＩＮＶＬがオンする。
【００３６】
インバータＩＮＶＣは、電源ＶＤＤと接地線との間に直列に接続されたｐＭＯＳトランジスタＭＰ１２、ＭＰ２２、ｎＭＯＳトランジスタＭＮ２２、ＭＮ１２を有している。なお、インバータＩＮＶＣの構成は、トランジスタＭＮ１２、ＭＮ２２、ＭＰ１２、ＭＰ２２のサイズ（ゲート幅／ゲート長）を除いて、インバータＩＮＶＥと同じである。例えば、各トランジスタＭＮ１２、ＭＮ２２、ＭＰ１２、ＭＰ２２のサイズは、各トランジスタＭＮ１０、ＭＮ２０、ＭＰ１０、ＭＰ２０のサイズのｎ倍以上である。
【００３７】
これにより、インバータＩＮＶＣは、ｎ個のインバータＩＮＶＥの駆動力の合計（駆動回路１０や駆動回路２０の駆動力）以上の駆動力を有する。なお、ｎＭＯＳトランジスタＭＮ１２は、ｎ個以上のｎＭＯＳトランジスタＭＮ１０で形成されてもよいし、ｎＭＯＳトランジスタＭＮ２２は、ｎ個以上のｎＭＯＳトランジスタＭＮ２０で形成されてもよい。また、ｐＭＯＳトランジスタＭＰ１２は、ｎ個以上のｐＭＯＳトランジスタＭＰ１０で形成されてもよいし、ｐＭＯＳトランジスタＭＰ２２は、ｎ個以上のｐＭＯＳトランジスタＭＰ２０で形成されてもよい。
【００３８】
例えば、インバータＩＮＶＣのトランジスタＭＮ１２、ＭＮ２２、ＭＰ１２、ＭＰ２２のサイズがインバータＩＮＶＥのトランジスタＭＮ１０、ＭＮ２０、ＭＰ１０、ＭＰ２０のｎ倍のとき、オフセット回路３０で生成される電流ＩＣＤは、式（１）で表される。なお、式（１）のＩｄは、１個のインバータＩＮＶＥで生成される電流である。
ＩＣＤ＝ｎ・Ｉｄ    ‥‥（１）
また、ｍ個（ｍは０以上ｎ以下の整数）のインバータＩＮＶＥがオンしているときに、駆動回路１０、２０で生成される電流ＩＥＤ、ＩＬＤは、式（２）、（３）でそれぞれ表される。
ＩＥＤ＝ｍ・Ｉｄ    ‥‥（２）
ＩＬＤ＝（ｎ−ｍ）・Ｉｄ    ‥‥（３）
例えば、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのとき、インバータＩＮＶＣのｐＭＯＳトランジスタＭＰ１２、インバータＩＮＶＥのｐＭＯＳトランジスタＭＰ１０およびインバータＩＮＶＬのｎＭＯＳトランジスタＭＮ１０がオンする。このため、電流ＩＣＤ、ＩＥＤのうち、貫通電流に相当する電流ＩＬＤが駆動回路２０に供給され、残りの電流が出力端子ＰＩＯＵＴに供給される。
【００３９】
したがって、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのときでは、出力端子ＰＩＯＵＴに供給される電流ＩＤＲは、式（４）で表される。なお、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのときでは、式（４）の電流ＩＤＲが出力端子ＰＩＯＵＴから引き抜かれる。
ＩＤＲ＝ＩＣＤ＋ＩＥＤ−ＩＬＤ＝２・ｍ・Ｉｄ    ‥‥（４）
また、クロックＣＬＫ１０、ＣＬＫ２０が共に低レベルのときでは、出力端子ＰＩＯＵＴに供給される電流ＩＤＲ２は、式（５）で表される。なお、クロックＣＬＫ１０、ＣＬＫ２０が共に高レベルのときでは、式（５）の電流ＩＤＲ２が出力端子ＰＩＯＵＴから引き抜かれる。
ＩＤＲ２＝ＩＣＤ＋ＩＥＤ＋ＩＬＤ＝２・ｎ・Ｉｄ    ‥‥（５）
このように、例えば、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なる期間では、出力端子ＰＩＯＵＴの負荷容量を充放電する電流ＩＤＲは、オンさせるインバータＩＮＶＥの個数“ｍ”に比例して増加する。また、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに同じ期間では、出力端子ＰＩＯＵＴの負荷容量を充放電する電流ＩＤＲ２は、オンさせるインバータＩＮＶＥの個数“ｍ”に拘わらず、一定に維持される。したがって、この実施形態では、オンさせるインバータＩＮＶＥの個数“ｍ”を可変設定することにより、出力端子ＰＩＯＵＴの負荷容量を充放電する電流を精度よく制御できる。これにより、この実施形態では、位相補間の線形性が貫通電流の影響により劣化することを防止できる。
【００４０】
なお、位相補間回路ＰＩの構成は、この例に限定されない。例えば、インバータＩＮＶＥ、ＩＮＶＬは、ゲートで受ける信号をｐＭＯＳトランジスタＭＰ１０、ＭＰ２０で逆にしてもよいし、ゲートで受ける信号をｎＭＯＳトランジスタＭＮ１０、ＭＮ２０で逆にしてもよい。また、インバータＩＮＶＣは、ゲートで受ける信号をｐＭＯＳトランジスタＭＰ１２、ＭＰ２２で逆にしてもよいし、ゲートで受ける信号をｎＭＯＳトランジスタＭＮ１２、ＭＮ２２で逆にしてもよい。
【００４１】
また、位相補間回路ＰＩは、例えば、クロックＣＬＫ２０をゲートで受けるダミーのｎＭＯＳトランジスタおよびｐＭＯＳトランジスタを有してもよい。例えば、ダミーのｎＭＯＳトランジスタは、ソースおよびドレインが接地されている。また、例えば、ダミーのｐＭＯＳトランジスタは、ソースおよびドレインが電源ＶＤＤに接続されている。
【００４２】
ダミーのｎＭＯＳトランジスタおよびｐＭＯＳトランジスタのサイズは、例えば、ｎＭＯＳトランジスタＭＮ１２およびｐＭＯＳトランジスタＭＰ１２とそれぞれ同じである。この場合、クロックＣＬＫ１０、ＣＬＫ２０の入力負荷が同じになるため、例えば、駆動回路１０、２０のスルーレートに差が生じることを防止できる。
【００４３】
図４は、図１に示した位相補間回路ＰＩの動作の一例を示している。なお、図４は、インバータＩＮＶＥが８個（ｎ＝８）のときの位相補間回路ＰＩの動作の一例を示している。図の出力電圧ＰＩＯＵＴの実線は、全てのインバータＩＮＶＥがオンに設定されているとき（ｍ＝ｎ＝８）の出力電圧ＰＩＯＵＴを示し、出力電圧ＰＩＯＵＴの破線は、全てのインバータＩＮＶＥがオフに設定されているとき（ｍ＝０）の出力電圧ＰＩＯＵＴを示している。また、図の括弧内の波形（電圧ＯＵＴ１０、・・・、ＯＵＴ１８）は、例えば、出力端子ＰＩＯＵＴに接続されたインバータ（例えば、図９に示す出力バッファＯＢＵＦ）の出力を示している。以下、出力端子ＰＩＯＵＴに接続されたインバータを出力バッファとも称する。
【００４４】
例えば、電圧ＯＵＴ１０は、全てのインバータＩＮＶＥがオンに設定されているとき（ｍ＝ｎ）の出力バッファの出力を示している。また、例えば、電圧ＯＵＴ１８は、全てのインバータＩＮＶＥがオフに設定されているとき（ｍ＝０）の出力バッファの出力を示している。図４の例では、出力端子ＰＩＯＵＴに接続されたインバータの閾値電圧は、電源ＶＤＤの２分の１である。
【００４５】
先ず、時刻Ｔ１０では、クロックＣＬＫ１０は高レベルから低レベルに変化し、クロックＣＬＫ２０は高レベルに維持される。このため、インバータＩＮＶＣのｎＭＯＳトランジスタＭＮ１２およびインバータＩＮＶＥのｎＭＯＳトランジスタＭＮ１０がオフする。そして、インバータＩＮＶＣのｐＭＯＳトランジスタＭＰ１２およびインバータＩＮＶＥのｐＭＯＳトランジスタＭＰ１０がオンする。また、インバータＩＮＶＬのｎＭＯＳトランジスタＭＮ１０はオン状態に維持され、インバータＩＮＶＬのｐＭＯＳトランジスタＭＰ１０はオフ状態に維持される。したがって、式（４）で示した電流ＩＤＲが出力端子ＰＩＯＵＴに供給される。
【００４６】
例えば、全てのインバータＩＮＶＥがオンに設定されているとき（ｍ＝ｎ）の出力電圧ＰＩＯＵＴは、電流ＩＤＲ（ＩＤＲ＝２・ｎ・Ｉｄ）および出力端子ＰＩＯＵＴの負荷容量に基づく傾きで、時間の経過に伴い上昇する。出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）より低い期間（時刻Ｔ１２より前の期間）では、電圧ＯＵＴ１０は、高レベルに維持される。
【００４７】
なお、全てのインバータＩＮＶＥがオフに設定されているとき（ｍ＝０）の出力電圧ＰＩＯＵＴは、電流ＩＤＲが出力端子ＰＩＯＵＴに供給されないため、接地電圧ＧＮＤに維持される。したがって、時刻Ｔ１０では、電圧ＯＵＴ１８は、高レベルに維持される。
【００４８】
時刻Ｔ１２では、クロックＣＬＫ１０は低レベルに維持され、クロックＣＬＫ２０は高レベルから低レベルに変化する。このため、インバータＩＮＶＣのｎＭＯＳトランジスタＭＮ１２およびインバータＩＮＶＥのｎＭＯＳトランジスタＭＮ１０は、オフ状態に維持される。また、インバータＩＮＶＣのｐＭＯＳトランジスタＭＰ１２およびインバータＩＮＶＥのｐＭＯＳトランジスタＭＰ１０はオン状態に維持される。そして、インバータＩＮＶＬのｎＭＯＳトランジスタＭＮ１０がオフし、インバータＩＮＶＬのｐＭＯＳトランジスタＭＰ１０がオンする。したがって、式（５）で示した電流ＩＤＲ２が出力端子ＰＩＯＵＴに供給される。
【００４９】
例えば、全てのインバータＩＮＶＥがオンに設定されているときでは、電流ＩＤＲ２は、電流ＩＤＲと同じである。このため、出力電圧ＰＩＯＵＴは、時刻Ｔ１２以降も、時刻Ｔ１２以前と同じ傾きで、時間の経過に伴い上昇する。例えば、時刻Ｔ１０から時刻Ｔ１２までの期間では、出力電圧ＰＩＯＵＴは、接地電圧ＧＮＤから電源ＶＤＤの２分の１まで上昇する。そして、時刻Ｔ１２以降では、出力電圧ＰＩＯＵＴは、電源ＶＤＤの２分の１から電源ＶＤＤまで上昇する。
【００５０】
したがって、時刻Ｔ１２では、出力電圧ＰＩＯＵＴは、出力バッファの閾値電圧（ＶＤＤ／２）まで上昇する。これにより、電圧ＯＵＴ１０は、高レベルから低レベルに変化する。すなわち、電圧ＯＵＴ１０は、クロックＣＬＫ１０が高レベルから低レベルに変化した時刻Ｔ１０から、時間ＴＤ１０経過後に低レベルに変化する。
【００５１】
なお、全てのインバータＩＮＶＥがオフに設定されているときの出力電圧ＰＩＯＵＴは、電流ＩＤＲ２（ＩＤＲ２＝２・ｎ・Ｉｄ）および出力端子ＰＩＯＵＴの負荷容量に基づく傾きで、時間の経過に伴い電源ＶＤＤまで上昇する。出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）より低い期間では、電圧ＯＵＴ１８は、高レベルに維持される。そして、出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）まで上昇したときに、電圧ＯＵＴ１８は、高レベルから低レベルに変化する。例えば、電圧ＯＵＴ１８は、クロックＣＬＫ１０が高レベルから低レベルに変化した時刻Ｔ１０から、時間ＴＤ１８経過後に低レベルに変化する。
【００５２】
時刻Ｔ２０では、クロックＣＬＫ１０は低レベルから高レベルに変化し、クロックＣＬＫ２０は低レベルに維持される。このため、インバータＩＮＶＣのｎＭＯＳトランジスタＭＮ１２およびインバータＩＮＶＥのｎＭＯＳトランジスタＭＮ１０がオンする。そして、インバータＩＮＶＣのｐＭＯＳトランジスタＭＰ１２およびインバータＩＮＶＥのｐＭＯＳトランジスタＭＰ１０がオフする。また、インバータＩＮＶＬのｎＭＯＳトランジスタＭＮ１０はオフ状態に維持され、インバータＩＮＶＬのｐＭＯＳトランジスタＭＰ１０はオン状態に維持される。したがって、式（４）で示した電流ＩＤＲが出力端子ＰＩＯＵＴから引き抜かれる。
【００５３】
例えば、全てのインバータＩＮＶＥがオンに設定されているときの出力電圧ＰＩＯＵＴは、電流ＩＤＲ（ＩＤＲ＝２・ｎ・Ｉｄ）および出力端子ＰＩＯＵＴの負荷容量に基づく傾きで、時間の経過に伴い下降する。出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）より高い期間（時刻Ｔ２２より前の期間）では、電圧ＯＵＴ１０は、低レベルに維持される。
【００５４】
なお、全てのインバータＩＮＶＥがオフに設定されているときの出力電圧ＰＩＯＵＴは、電流ＩＤＲが出力端子ＰＩＯＵＴから引き抜かれないため、電源ＶＤＤに維持される。したがって、時刻Ｔ２０では、電圧ＯＵＴ１８は、低レベルに維持される。
【００５５】
時刻Ｔ２２では、クロックＣＬＫ１０は高レベルに維持され、クロックＣＬＫ２０は低レベルから高レベルに変化する。このため、インバータＩＮＶＣのｎＭＯＳトランジスタＭＮ１２およびインバータＩＮＶＥのｎＭＯＳトランジスタＭＮ１０は、オン状態に維持される。また、インバータＩＮＶＣのｐＭＯＳトランジスタＭＰ１２およびインバータＩＮＶＥのｐＭＯＳトランジスタＭＰ１０はオフ状態に維持される。そして、インバータＩＮＶＬのｎＭＯＳトランジスタＭＮ１０がオンし、インバータＩＮＶＬのｐＭＯＳトランジスタＭＰ１０がオフする。したがって、式（５）で示した電流ＩＤＲ２が出力端子ＰＩＯＵＴから引き抜かれる。
【００５６】
例えば、全てのインバータＩＮＶＥがオンに設定されているときでは、電流ＩＤＲ２は、電流ＩＤＲと同じである。このため、出力電圧ＰＩＯＵＴは、時刻Ｔ２２以降も、時刻Ｔ２２以前と同じ傾きで、時間の経過に伴い下降する。例えば、時刻Ｔ２０から時刻Ｔ２２までの期間では、出力電圧ＰＩＯＵＴは、電源ＶＤＤから電源ＶＤＤの２分の１まで下降する。そして、時刻Ｔ２２以降では、出力電圧ＰＩＯＵＴは、電源ＶＤＤの２分の１から接地電圧ＧＮＤまで下降する。
【００５７】
したがって、時刻Ｔ２２では、出力電圧ＰＩＯＵＴは、出力バッファの閾値電圧（ＶＤＤ／２）まで下降する。これにより、電圧ＯＵＴ１０は、低レベルから高レベルに変化する。すなわち、電圧ＯＵＴ１０は、クロックＣＬＫ１０が低レベルから高レベルに変化した時刻Ｔ２０から、時間ＴＤ１０経過後に高レベルに変化する。
【００５８】
なお、全てのインバータＩＮＶＥがオフに設定されているときの出力電圧ＰＩＯＵＴは、電流ＩＤＲ２（ＩＤＲ２＝２・ｎ・Ｉｄ）および出力端子ＰＩＯＵＴの負荷容量に基づく傾きで、時間の経過に伴い接地電圧ＧＮＤまで下降する。出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）より高い期間では、電圧ＯＵＴ１８は、低レベルに維持される。そして、出力電圧ＰＩＯＵＴが出力バッファの閾値電圧（ＶＤＤ／２）まで下降したときに、電圧ＯＵＴ１８は、低レベルから高レベルに変化する。例えば、電圧ＯＵＴ１８は、クロックＣＬＫ１０が低レベルから高レベルに変化した時刻Ｔ２０から、時間ＴＤ１８経過後に高レベルに変化する。
【００５９】
このように、クロックＣＬＫ１０に対する電圧ＯＵＴの遅延時間ＴＤ（ＴＤ１０、ＴＤ１８）は、オンさせるインバータＩＮＶＥの個数“ｍ”に応じて変化する。例えば、全てのインバータＩＮＶＥがオンに設定されているときの遅延時間ＴＤ１０は、クロックＣＬＫ１０に対する最小の遅延時間である。また、全てのインバータＩＮＶＥがオフに設定されているときの遅延時間ＴＤ１８は、クロックＣＬＫ１０に対する最大の遅延時間である。なお、この実施形態では、図５に示すように、オンさせるインバータＩＮＶＥの個数“ｍ”を調整することにより、遅延時間ＴＤ１０と遅延時間ＴＤ１８との間の遅延時間に設定できる。
【００６０】
図５は、図２に示したインバータＩＮＶＥのオンの個数と遅延時間との関係の一例を示している。なお、図５は、インバータＩＮＶＥが８個（ｎ＝８）のときのインバータＩＮＶＥのオンの個数“ｍ”と遅延時間ＴＤとの関係の一例を示している。また、図５の例では、インバータＩＮＶＣのトランジスタＭＮ１２、ＭＮ２２、ＭＰ１２、ＭＰ２２のサイズは、インバータＩＮＶＥのトランジスタＭＮ１０、ＭＮ２０、ＭＰ１０、ＭＰ２０の８倍（ｎ倍）である。
【００６１】
電源電圧ＶＤＤの２分の１に到達するまでの出力電圧ＰＩＯＵＴの遅延時間ＴＤ（ＴＤ１０−ＴＤ１８）は、インバータＩＮＶＥのオンの個数“ｍ”の減少に伴い、増加する。ここで、例えば、図の“ｍ＝８”は、全て（８個）のインバータＩＮＶＥがオンに設定され、全て（８個）のインバータＩＮＶＬがオフに設定されているときの出力電圧ＰＩＯＵＴを示している。また、例えば、“ｍ＝７”は、７個のインバータＩＮＶＥがオンに設定され、１個のインバータＩＮＶＬがオンに設定されているときの出力電圧ＰＩＯＵＴを示している。
【００６２】
時刻Ｔ１０から時刻Ｔ１２までの期間では、駆動回路２０の電流が相殺されるため、式（４）で示した電流ＩＤＲ（ＩＤＲ＝２・ｍ・Ｉｄ）が出力端子ＰＩＯＵＴに供給される。したがって、出力端子ＰＩＯＵＴに供給される電流ＩＤＲは、インバータＩＮＶＥのオンの個数“ｍ”に比例して増加する。このため、時刻Ｔ１２での出力電圧ＰＩＯＵＴは、式（６）に示すように、インバータＩＮＶＥのオンの個数“ｍ”に比例して増加する。ここで、式（６）のＶｔ１２は、時刻Ｔ１２での出力電圧ＰＩＯＵＴを示している。また、式（６）の“Ｃ”は、出力端子ＰＩＯＵＴの負荷容量であり、ＴＤ１０は、時刻Ｔ１０から時刻Ｔ１２までの時間である。
Ｖｔ１２＝ＩＤＲ・ＴＤ１０／Ｃ＝２・ｍ・Ｉｄ・ＴＤ１０／Ｃ    ‥‥（６）
時刻Ｔ１２以降では、式（５）で示した電流ＩＤＲ２（ＩＤＲ＝２・ｎ・Ｉｄ）が出力端子ＰＩＯＵＴに供給される。したがって、駆動回路１０、２０のインバータＩＮＶＥ、ＩＮＶＬの個数“ｎ”が一定のとき、出力端子ＰＩＯＵＴに供給される電流ＩＤＲは、インバータＩＮＶＥのオンの個数“ｍ”に拘わらず、一定である。このため、時刻Ｔ１２以降では、出力電圧ＰＩＯＵＴは、インバータＩＮＶＥのオンの個数“ｍ”に拘わらず、一定の傾きで、電源ＶＤＤまで上昇する。
【００６３】
したがって、電源電圧ＶＤＤの２分の１まで到達する出力電圧ＰＩＯＵＴの遅延時間ＴＤと“ｍ”との関係は、式（７）で表される。
ＩＤＲ２・（ＴＤ−ＴＤ１０）＝Ｃ・（ＶＤＤ／２−Ｖｔ１２）    ‥‥（７）
また、図５の例では、全てのインバータＩＮＶＥがオンに設定されるとき（ｍ＝ｎ）、出力電圧ＰＩＯＵＴは、時間ＴＤ１０で電源電圧ＶＤＤの２分の１まで到達する。したがって、式（６）のＶｔ１２および“ｍ”にＶＤＤ／２および“ｎ”をそれぞれ代入することにより、式（８）が与えられる。そして、遅延時間ＴＤは、式（６）、（７）、（８）に基づいて、式（９）で与えられる。
ＶＤＤ／２＝２・ｎ・Ｉｄ・ＴＤ１０／Ｃ    ‥‥（８）
ＴＤ＝ＴＤ１０・（１＋（ｎ−ｍ）／ｎ）    ‥‥（９）
式（９）の“ｎ−ｍ”は、インバータＩＮＶＥのオフの個数に対応している。すなわち、遅延時間ＴＤは、インバータＩＮＶＥのオフの個数の増加に伴い、増加する。また、遅延時間ＴＤ１０は、クロックＣＬＫ１０に対するクロックＣＬＫ２０の遅延時間に対応している。したがって、この実施形態では、遅延時間ＴＤ１０のｎ分の１のステップで、遅延時間ＴＤを精度よく調整できる。すなわち、この実施形態では、クロックＣＬＫ１０、ＣＬＫ２０の位相差のｎ分の１のステップで、クロックの位相を精度よく調整できる。
【００６４】
なお、インバータＩＮＶＥ、ＩＮＶＬ、ＩＮＶＣは、クロックＣＬＫ１０が変化してからＣＬＫ２０が変化する前に出力電圧ＰＩＯＵＴが閾値電圧（例えば、ＶＤＤ／２）を超えないように設計される。例えば、インバータＩＮＶＥ、ＩＮＶＬ、ＩＮＶＣは、全てのインバータＩＮＶＥがオンに設定されているときにも、時刻Ｔ１２での出力電圧ＰＩＯＵＴが閾値電圧（ＶＤＤ／２）を超えないように設計される。この条件を満たしていれば、インバータＩＮＶＣのトランジスタＭＮ１２、ＭＮ２２、ＭＰ１２、ＭＰ２２のサイズがインバータＩＮＶＥのトランジスタＭＮ１０、ＭＮ２０、ＭＰ１０、ＭＰ２０の８倍（ｎ倍）以上のときにも、クロックの位相を精度よく調整できる。
【００６５】
以上、この実施形態では、位相補間回路ＰＩは、駆動回路２０の電流を相殺するための電流を生成するオフセット回路３０を有している。例えば、オフセット回路３０は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２０の電流を相殺するための電流を生成する。これにより、この実施形態では、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路１０のインバータＩＮＶＥのオンの個数“ｍ”に比例する電流で、出力端子ＰＩＯＵＴの負荷容量を充放電できる。すなわち、この実施形態では、駆動回路１０のインバータＩＮＶＥのオンの個数“ｍ”を調整することにより、クロックの位相を精度よく調整できる。この結果、この実施形態では、位相補間の線形性を向上できる。
【００６６】
図６は、別の実施形態における位相補間回路ＰＩの一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の位相補間回路ＰＩは、図１に示した駆動回路２０およびオフセット回路３０の代わりに、駆動回路２２およびオフセット回路３２を有している。その他の構成は、上述した実施形態と同じである。例えば、位相補間回路ＰＩは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
【００６７】
位相補間回路ＰＩは、駆動回路１０、２２およびオフセット回路３２を有している。例えば、駆動回路１０、２２およびオフセット回路３２の各出力は、共通の出力端子ＰＩＯＵＴに接続されている。駆動回路１０は、例えば、制御信号ＣＮＴＡにより設定された駆動力に対応する電流を、クロックＣＬＫ１０に応じて生成する。これにより、駆動回路１０は、例えば、出力端子ＰＩＯＵＴの負荷容量をクロックＣＬＫ１０に応じて充放電する。
【００６８】
駆動回路２２は、クロックＣＬＫ２０および制御信号ＣＮＴＢを受ける。例えば、駆動回路２２の駆動力は、制御信号ＣＮＴＢにより可変設定される。そして、駆動回路２２は、設定された駆動力に対応する電流をクロックＣＬＫ２０に応じて生成する。これにより、駆動回路２２は、例えば、出力端子ＰＩＯＵＴの負荷容量をクロックＣＬＫ２０に応じて充放電する。なお、クロックＣＬＫ２０は、クロックＣＬＫ１０に比べて位相の遅れたクロックである。
【００６９】
オフセット回路３２は、クロックＣＬＫ１０および制御信号ＣＮＴＢを受ける。例えば、オフセット回路３２の駆動力は、制御信号ＣＮＴＢにより可変設定される。また、オフセット回路３２は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２２の電流を相殺するための電流を生成する。例えば、オフセット回路３２は、貫通電流に相当する電流を駆動回路２２に供給する。これにより、この実施形態では、例えば、出力端子ＰＩＯＵＴの負荷容量を充放電する電流が制御信号ＣＮＴＡで設定した駆動力に対応する電流より小さくなることを防止できる。すなわち、この実施形態では、駆動回路１０の駆動力が制御信号ＣＮＴＡで設定した駆動力より小さくなることを防止できる。
【００７０】
図７は、図６に示した駆動回路１０、２２およびオフセット回路３２の一例を示している。図７の破線の矢印は、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのときに流れる電流の一例を示している。また、インバータＩＮＶＥ、駆動部ＮＤＲＶ、ＰＤＲＶ、制御信号ＥＮ、ＥＮＸの末尾の数字および“ｎ”の意味は、図３と同じである。駆動回路１０は、図３に示した駆動回路１０と同じである。したがって、インバータＩＮＶＥが受ける制御信号ＥＮ、ＥＮＸは、図６に示した制御信号ＣＮＴＡに対応している。
【００７１】
駆動回路２２は、クロックＣＬＫ２０を共通に受けるｎ個の駆動部ＮＤＲＶ（ＮＤＲＶ１、ＮＤＲＶ２、・・・、ＮＤＲＶｎ）を有している。駆動部ＮＤＲＶは、例えば、図３に示したインバータＩＮＶＬの接地線側の回路に対応している。例えば、各駆動部ＮＤＲＶは、出力端子ＰＩＯＵＴと接地線との間に直列に接続されたｎＭＯＳトランジスタＭＮ２０、ＭＮ１０を有している。
【００７２】
ｎＭＯＳトランジスタＭＮ１０は、ゲートでクロックＣＬＫ２０を受ける。また、ｎＭＯＳトランジスタＭＮ２０のゲートは、制御端子ＧＮに接続されている。すなわち、ｎＭＯＳトランジスタＭＮ２０は、制御信号ＥＮＸに応じて、駆動部ＮＤＲＶをオン／オフするスイッチとして機能する。なお、駆動部ＮＤＲＶが受ける制御信号ＥＮＸは、図６に示した制御信号ＣＮＴＢに含まれる。
【００７３】
例えば、駆動部ＮＤＲＶは、制御信号ＥＮＸによりオンに設定されているとき、クロックＣＬＫ２０に応じて出力端子ＰＩＯＵＴから電流を引き抜く。すなわち、駆動部ＮＤＲＶは、クロックＣＬＫ２０に応じて出力端子ＰＩＯＵＴから電流を引き抜く電流生成部として機能する。
【００７４】
オフセット回路３２は、クロックＣＬＫ１０を共通に受けるｎ個の駆動部ＰＤＲＶ（ＰＤＲＶ１、ＰＤＲＶ２、・・・、ＰＤＲＶｎ）を有している。駆動部ＰＤＲＶは、例えば、図３に示したインバータＩＮＶＬの電源ＶＤＤ側の回路に対応している。例えば、各駆動部ＰＤＲＶは、電源ＶＤＤと出力端子ＰＩＯＵＴとの間に直列に接続されたｐＭＯＳトランジスタＭＰ１０、ＭＰ２０を有している。
【００７５】
ｐＭＯＳトランジスタＭＰ１０は、ゲートでクロックＣＬＫ１０を受ける。また、ｐＭＯＳトランジスタＭＰ２０のゲートは、制御端子ＧＰに接続されている。すなわち、ｐＭＯＳトランジスタＭＰ２０は、制御信号ＥＮに応じて、駆動部ＰＤＲＶをオン／オフするスイッチとして機能する。例えば、駆動部ＰＤＲＶが受ける制御信号ＥＮは、図６に示した制御信号ＣＮＴＢに含まれる。なお、制御信号ＥＮＸが制御信号ＥＮの反転信号であるため、駆動部ＰＤＲＶのオンの個数は、駆動部ＮＤＲＶのオンの個数と同じである。
【００７６】
例えば、駆動部ＰＤＲＶは、制御信号ＥＮによりオンに設定されているとき、クロックＣＬＫ１０に応じて出力端子ＰＩＯＵＴに電流を供給する。すなわち、駆動部ＰＤＲＶは、クロックＣＬＫ１０に応じて出力端子ＰＩＯＵＴに電流を流し込む電流生成部として機能する。
【００７７】
また、駆動部ＮＤＲＶの制御端子ＧＮは、インバータＩＮＶＥの制御端子ＧＰに接続され、駆動部ＰＤＲＶの制御端子ＧＰは、インバータＩＮＶＥの制御端子ＧＮに接続されている。したがって、オンに設定される駆動部ＮＤＲＶの個数およびオンに設定される駆動部ＰＤＲＶの個数は、ｎ個のインバータＩＮＶＥのうちのオフに設定されるインバータＩＮＶＥの個数と同じである。例えば、ｍ個（ｍは０以上ｎ以下の整数）のインバータＩＮＶＥがオンしているとき、（ｎ−ｍ）個の駆動部ＮＤＲＶおよび（ｎ−ｍ）個の駆動部ＰＤＲＶがオンする。
【００７８】
このように、駆動回路２２およびオフセット回路３２の駆動力の重み付けは、駆動回路１０の駆動力の重み付けに応じて、設定される。例えば、駆動回路２２およびオフセット回路３２の駆動力は、オンさせる駆動部ＮＤＲＶ、ＰＤＲＶの個数を制御信号ＥＮＸ、ＥＮで調整することにより、可変設定される。したがって、駆動部ＮＤＲＶが受ける制御信号ＥＮＸおよび駆動部ＰＤＲＶが受ける制御信号ＥＮは、図６に示した制御信号ＣＮＴＢに対応している。
【００７９】
ここで、例えば、各駆動部ＮＤＲＶおよび各駆動部ＰＤＲＶの駆動力は、各インバータＩＮＶＥと同じである。したがって、例えば、オフセット回路３２（より詳細には、オンに設定されている駆動部ＰＤＲＶ）は、駆動回路２２（より詳細には、オンに設定されている駆動部ＮＤＲＶ）で生成される電流ＩＬＤに相当する電流ＩＣＤを生成する。
【００８０】
例えば、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルの期間では、駆動部ＰＤＲＶのｐＭＯＳトランジスタＭＰ１０および駆動部ＮＤＲＶのｎＭＯＳトランジスタＭＮ１０がオンする。これにより、電源ＶＤＤから出力端子ＰＩＯＵＴに流れる電流ＩＣＤがオフセット回路３２で生成され、出力端子ＰＩＯＵＴから接地線に流れる電流ＩＬＤが駆動回路２２で生成される。このように、駆動回路２２で生成される電流ＩＬＤは、例えば、オフセット回路３２で生成される電流ＩＣＤにより相殺される。
【００８１】
すなわち、オフセット回路３２は、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルのとき、駆動回路２２の電流ＩＬＤを相殺するための電流ＩＣＤを生成する。すなわち、オフセット回路３２は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２２の電流ＩＬＤを相殺するための電流ＩＣＤを生成する調整部として機能する。例えば、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ低レベルおよび高レベルの期間では、駆動回路１０で生成された電流ＩＥＤに相当する電流ＩＤＲが、出力端子ＰＩＯＵＴに供給される。
【００８２】
なお、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ高レベルおよび低レベルの期間では、駆動部ＰＤＲＶのｐＭＯＳトランジスタＭＰ１０および駆動部ＮＤＲＶのｎＭＯＳトランジスタＭＮ１０がオフする。このため、駆動部ＮＤＲＶには、貫通電流は流れない。したがって、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ高レベルおよび低レベルの期間では、駆動回路１０で生成された電流ＩＥＤに相当する電流ＩＤＲが、出力端子ＰＩＯＵＴから引き抜かれる。
【００８３】
すなわち、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なる期間では、出力端子ＰＩＯＵＴの負荷容量は、駆動回路１０で生成された電流ＩＥＤに相当する電流ＩＤＲにより充放電される。なお、電流ＩＥＤは、例えば、図３で説明した式（２）で与えられる（ＩＥＤ＝ｍ・Ｉｄ）。したがって、電流ＩＤＲは、インバータＩＮＶＥのオンの個数“ｍ”に比例して増加する。
【００８４】
また、クロックＣＬＫ１０、ＣＬＫ２０が共に低レベルの期間では、駆動部ＰＤＲＶのｐＭＯＳトランジスタＭＰ１０がオンし、駆動部ＮＤＲＶのｎＭＯＳトランジスタＭＮ１０がオフする。このため、駆動回路１０で生成された電流ＩＥＤとオフセット回路３２で生成された電流ＩＣＤとの和に相当する電流ＩＤＲが、出力端子ＰＩＯＵＴに供給される。
【００８５】
なお、この実施形態では、電流ＩＣＤは、電流ＩＬＤと等しいため、例えば、図３で説明した式（３）で与えられる（ＩＣＤ＝ＩＬＤ＝（ｎ−ｍ）・Ｉｄ）。したがって、クロックＣＬＫ１０、ＣＬＫ２０が共に低レベルの期間では、駆動回路１０のインバータＩＮＶＥの個数“ｎ”が一定のとき、出力端子ＰＩＯＵＴに供給される電流ＩＤＲは、インバータＩＮＶＥのオンの個数“ｍ”に拘わらず、一定である。
【００８６】
クロックＣＬＫ１０、ＣＬＫ２０が共に高レベルの期間では、駆動部ＰＤＲＶのｐＭＯＳトランジスタＭＰ１０がオフし、駆動部ＮＤＲＶのｎＭＯＳトランジスタＭＮ１０がオンする。このため、駆動回路１０で生成された電流ＩＥＤと駆動回路２２で生成された電流ＩＬＤとの和に相当する電流ＩＤＲが、出力端子ＰＩＯＵＴから引き抜かれる。なお、電流ＩＬＤは、例えば、図３で説明した式（３）で与えられる。
【００８７】
したがって、クロックＣＬＫ１０、ＣＬＫ２０が共に低レベルの期間では、駆動回路１０のインバータＩＮＶＥの個数“ｎ”が一定のとき、出力端子ＰＩＯＵＴから引き抜かれる電流ＩＤＲは、インバータＩＮＶＥのオンの個数“ｍ”に拘わらず、一定である。すなわち、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに同じ期間では、出力端子ＰＩＯＵＴの負荷容量は、一定の電流（ｎ・Ｉｄ）により充放電される。
【００８８】
このように、この実施形態では、オンさせるインバータＩＮＶＥの個数“ｍ”を可変設定することにより、出力端子ＰＩＯＵＴの負荷容量を充放電する電流を精度よく制御できる。これにより、この実施形態では、位相補間の線形性が貫通電流の影響により劣化することを防止できる。すなわち、この実施形態では、オンさせるインバータＩＮＶＥの個数“ｍ”を可変設定することにより、クロックの位相を精度よく制御できる。
【００８９】
なお、位相補間回路ＰＩの構成は、この例に限定されない。例えば、ｐＭＯＳトランジスタＭＰ１０のゲートで受ける信号とｐＭＯＳトランジスタＭＰ２０のゲートで受ける信号とを逆にしてもよい。また、ｎＭＯＳトランジスタＭＮ１０のゲートで受ける信号とｎＭＯＳトランジスタＭＮ２０のゲートで受ける信号とを逆にしてもよい。
【００９０】
また、例えば、位相補間回路ＰＩは、１つのｎＭＯＳトランジスタＭＮ１０に対して、クロックＣＬＫ２０をゲートで受ける２つのダミーのｐＭＯＳトランジスタを有してもよい。例えば、ダミーのｐＭＯＳトランジスタは、ソースおよびドレインが電源ＶＤＤに接続されている。また、２つのダミーのｐＭＯＳトランジスタのそれぞれのサイズは、例えば、ｐＭＯＳトランジスタＭＰ１０と同じである。この場合、クロックＣＬＫ１０、ＣＬＫ２０の入力負荷が同じになるため、例えば、駆動回路１０、２２のスルーレートに差が生じることを防止できる。
【００９１】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、オフセット回路３２は、クロックＣＬＫ１０が高レベルの期間では、電流を生成しない。このため、この実施形態では、位相補間回路ＰＩの消費電力を抑制できる。
【００９２】
図８は、別の実施形態における位相補間回路ＰＩの一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。図８の破線の矢印は、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ高レベルおよび低レベルのときに流れる電流の一例を示している。また、インバータＩＮＶＥ、駆動部ＮＤＲＶ、ＰＤＲＶ、制御信号ＥＮ、ＥＮＸの末尾の数字および“ｎ”の意味は、図７と同じである。
【００９３】
この実施形態の位相補間回路ＰＩは、図６に示した駆動回路２２およびオフセット回路３２の代わりに、駆動回路２４およびオフセット回路３４を有している。その他の構成は、図６および図７で説明した実施形態と同じである。例えば、位相補間回路ＰＩは、サーバやパーソナルコンピュータ内のメモリインターフェース回路のクロックの位相を調整する。
【００９４】
位相補間回路ＰＩは、駆動回路１０、２４およびオフセット回路３４を有している。例えば、駆動回路１０、２４およびオフセット回路３４の各出力は、共通の出力端子ＰＩＯＵＴに接続されている。駆動回路２４は、クロックＣＬＫ１０の代わりにクロックＣＬＫ２０を受けることを除いて、図７に示したオフセット回路３２と同じである。また、オフセット回路３４は、クロックＣＬＫ２０の代わりにクロックＣＬＫ１０を受けることを除いて、図７に示した駆動回路２２と同じである。
【００９５】
したがって、例えば、クロックＣＬＫ１０、ＣＬＫ２０がそれぞれ高レベルおよび低レベルの期間では、駆動部ＰＤＲＶのｐＭＯＳトランジスタＭＰ１０および駆動部ＮＤＲＶのｎＭＯＳトランジスタＭＮ１０がオンする。この期間では、駆動回路２４（より詳細には、オンに設定されている駆動部ＰＤＲＶ）で生成される電流ＩＬＤに相当する電流ＩＣＤがオフセット回路３４（より詳細には、オンに設定されている駆動部ＮＤＲＶ）で生成されるため、駆動回路２４の電流ＩＬＤが相殺される。すなわち、オフセット回路３４は、クロックＣＬＫ１０、ＣＬＫ２０のレベルが互いに異なるとき、駆動回路２４の電流ＩＬＤを相殺するための電流ＩＣＤを生成する調整部として機能する。
【００９６】
なお、位相補間回路ＰＩの構成は、この例に限定されない。例えば、ｐＭＯＳトランジスタＭＰ１０のゲートで受ける信号とｐＭＯＳトランジスタＭＰ２０のゲートで受ける信号とを逆にしてもよい。また、ｎＭＯＳトランジスタＭＮ１０のゲートで受ける信号とｎＭＯＳトランジスタＭＮ２０のゲートで受ける信号とを逆にしてもよい。
【００９７】
また、例えば、位相補間回路ＰＩは、１つのｐＭＯＳトランジスタＭＰ１０に対して、クロックＣＬＫ２０をゲートで受ける２つのダミーのｎＭＯＳトランジスタを有してもよい。例えば、ダミーのｎＭＯＳトランジスタは、ソースおよびドレインが接地されている。また、２つのダミーのｎＭＯＳトランジスタのそれぞれのサイズは、例えば、ｎＭＯＳトランジスタＭＮ１０と同じである。この場合、クロックＣＬＫ１０、ＣＬＫ２０の入力負荷が同じになるため、例えば、駆動回路１０、２４のスルーレートに差が生じることを防止できる。
【００９８】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【００９９】
図９は、上述した実施形態の位相補間回路ＰＩが搭載される半導体装置ＳＹＳの一例を示している。半導体装置ＳＹＳは、例えば、データを送信する送信部１３０、１３２を含むモジュール１００と、データを受信する受信部２１０、２１２を含むモジュール２００とを有している。モジュール１００は、例えば、位相補間部１１０、１１２、遅延回路１２０および送信部１３０、１３２を有している。例えば、送信部１３０、１３２は、メモリインターフェース回路の一部を形成する。
【０１００】
各位相補間部１１０、１１２は、位相補間回路ＰＩ、制御部ＰＣＴＬ、出力バッファＯＢＵＦを有している。制御部ＰＣＴＬは、例えば、制御信号ＥＮ、ＥＮＸを用いて、位相補間回路ＰＩを制御する。例えば、制御部ＰＣＴＬは、モジュール２００の受信部２１０が受けるデータの位相と受信部２１２が受けるデータの位相とが揃うように、制御信号ＥＮ、ＥＮＸを設定する。出力バッファＯＢＵＦは、例えば、インバータである。出力バッファＯＢＵＦは、位相補間回路ＰＩの出力電圧ＰＩＯＵＴを受け、出力電圧ＯＵＴ（以下、クロックＯＵＴとも称する）を生成する。例えば、位相補間部１１０の出力バッファＯＢＵＦは、クロックＯＵＴを送信部１３０に出力する。また、例えば、位相補間部１１２の出力バッファＯＢＵＦは、クロックＯＵＴを送信部１３２に出力する。
【０１０１】
遅延回路１２０は、クロックＣＬＫ１０を受け、クロックＣＬＫ１０を遅延させたクロックＣＬＫ２０を生成する。そして、遅延回路１２０は、クロックＣＬＫ２０を位相補間部１１０、１１２のそれぞれの位相補間回路ＰＩに出力する。送信部１３０は、位相補間部１１０から供給されたクロックＯＵＴに同期して動作し、モジュール２００の受信部２１０にデータを送信する。また、送信部１３２は、位相補間部１１２から供給されたクロックＯＵＴに同期して動作し、モジュール２００の受信部２１２にデータを送信する。
【０１０２】
各位相補間部１１０、１１２の出力バッファＯＢＵＦから出力されるクロックＯＵＴは、位相補間回路ＰＩにより位相が調整されたクロックである。したがって、半導体装置ＳＹＳは、例えば、送信部１３０および受信部２１０間の配線長と送信部１３２および受信部２１２間の配線長とが異なるときにも、受信部２１０が受けるデータと受信部２１２が受けるデータとの位相のずれを低減できる。
【０１０３】
なお、位相補間部１１０、１１２等は、データの受信側（例えば、モジュール２００）に設けられてもよい。また、モジュール１００、２００は、互いに異なるＬＳＩチップに形成されてもよいし、同一のＬＳＩチップに形成されてもよい。
【０１０４】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
第１制御信号により駆動力が調整され、前記第１制御信号により設定された駆動力に対応する第１電流を、第１クロックに応じて生成する第１駆動回路と、
第２制御信号により駆動力が調整され、前記第２制御信号により設定された駆動力に対応する第２電流を、前記第１クロックに比べて位相の遅れた第２クロックに応じて生成する第２駆動回路と、
前記第１クロックおよび前記第２クロックのレベルが互いに異なるとき、前記第２電流を相殺するための第３電流を生成する調整部とを備え、
前記第１駆動回路の駆動力および前記第２駆動回路の駆動力は、前記第１電流および前記第２電流の和が一定になるように設定されること
を特徴とする位相補間回路。
（付記２）
前記第１駆動回路は、
前記第１クロックを共通に受け、出力が共通の出力ノードに接続され、前記第１制御信号によりオン／オフが個別に制御されるｎ個（ｎは２以上の整数）のインバータを有し、
前記第２駆動回路は、
前記第２クロックを共通に受け、出力が前記出力ノードに接続され、前記第２制御信号によりオン／オフが個別に制御されるｎ個のインバータを有し、
前記調整部は、
前記第１クロックを受け、出力が前記出力ノードに接続され、駆動力が前記第２駆動回路のｎ個のインバータの合計の駆動力以上のインバータを有し、
前記第２駆動回路のｎ個のインバータのうち、オンに設定されるインバータの個数は、前記第１駆動回路のｎ個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする位相補間回路。
（付記３）
前記調整部の駆動力は、前記第２駆動回路のｎ個のインバータの合計の駆動力と同じであること
を特徴とする付記２記載の位相補間回路。
（付記４）
前記第１駆動回路は、
前記第１クロックを共通に受け、出力が共通の出力ノードに接続され、前記第１制御信号によりオン／オフが個別に制御されるｎ個（ｎは２以上の整数）のインバータを有し、
前記第２駆動回路および前記調整部の一方は、
電源線と前記出力ノードとの間に並列に接続され、前記第１クロックおよび前記第２クロックの一方に応じて前記出力ノードに電流を流し込み、前記第２制御信号によりオン／オフが個別に制御されるｎ個の第１電流生成部を有し、
前記第２駆動回路および前記調整部の他方は、
前記出力ノードと接地線との間に並列に接続され、前記第１クロックおよび前記第２クロックの他方に応じて前記出力ノードから電流を引き抜き、前記第２制御信号によりオン／オフが個別に制御されるｎ個の第２電流生成部を有し、
オンに設定される前記第１電流生成部の個数およびオンに設定される前記第２電流生成部の個数は、前記第１駆動回路のｎ個のインバータのうちのオフに設定されるインバータの個数と同じであること
を特徴とする付記１記載の位相補間回路。
（付記５）
前記ｎ個の第１電流生成部は、前記第１クロックに応じて前記出力ノードに電流を流し込み、
前記ｎ個の第２電流生成部は、オンに設定された前記第１電流生成部の個数と同じ個数だけオンに設定され、前記第２クロックに応じて前記出力ノードから電流を引き抜くこと
を特徴とする付記４記載の位相補間回路。
（付記６）
前記ｎ個の第１電流生成部は、前記第２クロックに応じて前記出力ノードに電流を流し込み、
前記ｎ個の第２電流生成部は、オンに設定された前記第１電流生成部の個数と同じ個数だけオンに設定され、前記第１クロックに応じて前記出力ノードから電流を引き抜くこと
を特徴とする付記４記載の位相補間回路。
（付記７）
位相補間回路を含むモジュールを備えた半導体装置であって、
前記位相補間回路は、
第１制御信号により駆動力が調整され、前記第１制御信号により設定された駆動力に対応する第１電流を、第１クロックに応じて生成する第１駆動回路と、
第２制御信号により駆動力が調整され、前記第２制御信号により設定された駆動力に対応する第２電流を、前記第１クロックに比べて位相の遅れた第２クロックに応じて生成する第２駆動回路と、
前記第１クロックおよび前記第２クロックのレベルが互いに異なるとき、前記第２電流を相殺するための第３電流を生成する調整部とを備え、
前記第１駆動回路の駆動力および前記第２駆動回路の駆動力は、前記第１電流および前記第２電流の和が一定になるように設定されること
を特徴とする半導体装置。
【０１０５】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１０６】
１０、２０、２２、２４‥駆動回路；３０、３２、３４‥オフセット回路；ＩＮＶＣ、ＩＮＶＥ、ＩＮＶＬ‥インバータ；ＭＮ１０、ＭＮ１２、ＭＮ２０、ＭＮ２２‥ｎＭＯＳトランジスタ；ＭＰ１０、ＭＰ１２、ＭＰ２０、ＭＰ２２‥ｐＭＯＳトランジスタ；ＮＤＲＶ、ＰＤＲＶ‥駆動部
【図１】
0005772188.tif 000002
【図２】
0005772188.tif 000003
【図３】
0005772188.tif 000004
【図４】
0005772188.tif 000005
【図５】
0005772188.tif 000006
【図６】
0005772188.tif 000007
【図７】
0005772188.tif 000008
【図８】
0005772188.tif 000009
【図９】
0005772188.tif 000010