(57)【要約】【課題】周波数変調された入力クロックが入力された場合であっても、出力クロックの位相シフト量と理想の位相シフト量との間の量子化誤差を低減することができるクロック位相シフト回路を提供する。【解決手段】クロック位相シフト回路は、入力クロックの所定の周期にわたる測定期間に、遅延ラインを構成する遅延セルと同一の遅延セルを所定の段数接続して構成されたリングオシレータにより生成された発振クロックのクロック数をカウントして、そのカウント値を出力する周期測定回路と、カウント値を入力クロックの動作周期ｔｎの位相シフト量として、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成し、動作クロックのレベルに応じて、動作周期ｔｎの位相シフト量と補間位相シフト量とを切り換えて出力する第１誤差補正回路とを備える。【選択図】図１
2015061213.tif 000002
【特許請求の範囲】
【請求項１】
周波数変調された入力クロックの位相を遅延ラインを使用してシフトし、出力クロックとして出力するクロック位相シフト回路であって、
前記入力クロックを分周した所定の動作周期の動作クロックに同期して動作し、前記入力クロックの所定の周期にわたる測定期間に、前記遅延ラインを構成する遅延セルと同一の遅延セルを所定の段数接続して構成されたリングオシレータにより生成された前記入力クロックよりも高周波の発振クロックのクロック数をカウントして、そのカウント値を出力する周期測定回路と、
前記動作クロックに同期して動作し、前記カウント値を前記入力クロックの動作周期ｔｎの位相シフト量として、前記動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成し、前記動作クロックのレベルに応じて、前記動作周期ｔｎの位相シフト量と前記補間位相シフト量とを切り換えてシフト信号として出力する第１誤差補正回路とを備え、
前記遅延ラインは、所定の段数の前記遅延セルを直列に接続して構成され、前記シフト信号に対応する位相シフト量だけ前記入力クロックの位相をシフトし、前記出力クロックとして出力するものであることを特徴とするクロック位相シフト回路。
【請求項２】
前記第１誤差補正回路は、
前記動作クロックに同期して動作し、前記補間位相シフト量として、前記動作周期ｔｎの位相シフト量と前記動作周期ｔｎ−１の位相シフト量との差の平均値を算出する平均値算出回路と、
前記カウント値保持回路の出力信号と前記平均値とを加算する第１加算器と、
前記動作クロックのレベルに応じて、前記カウント値保持回路の出力信号と前記第１加算器の出力信号とを切り換えて前記シフト信号として出力する第１セレクタとを備える請求項１に記載のクロック位相シフト回路。
【請求項３】
前記動作クロックに同期して動作し、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、前記動作周期ｔｎの位相シフト量が減少中であると判別された場合に、前記動作周期ｔｎの位相シフト量から前記平均値を減算し、前記動作周期ｔｎの位相シフト量が増加中であると判別された場合に、前記動作周期ｔｎの位相シフト量と前記平均値を加算する第２誤差補正回路を備え、
前記第１誤差補正回路は、前記第２誤差補正回路の出力信号に基づいて、前記シフト信号を生成するものである請求項２に記載のクロック位相シフト回路。
【請求項４】
前記第２誤差補正回路は、
前記動作クロックに同期して動作し、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、増減判別信号を生成するアキュムレータと、
前記カウント値保持回路の出力信号から前記平均値を減算する第２減算器と、
前記カウント値保持回路の出力信号と前記平均値とを加算する第２加算器と、
前記第２誤差補正回路の出力信号として、前記増減判別信号に基づいて、前記動作周期ｔｎの位相シフト量が減少中であると判別された場合に、前記第２減算器の出力信号を出力し、前記動作周期ｔｎの位相シフト量が増加中であると判別された場合に、前記第２加算器の出力信号を出力する第２セレクタとを備える請求項３に記載のクロック位相シフト回路。
【請求項５】
前記第１誤差補正回路は、前記動作周期ｔｎの位相シフト量と前記動作周期ｔｎ−１の位相シフト量との間を補間した第１補間位相シフト量を生成した後、前記第１補間位相シフト量と、前記動作周期ｔｎの位相シフト量および前記動作周期ｔｎ−１の位相シフト量の各々との間を補間した第２補間位相シフト量を生成するものである請求項１〜４のいずれか１項に記載のクロック位相シフト回路。
【請求項６】
前記第１誤差補正回路は、前記第２補間位相シフト量を生成した後、前記第ｊ補間位相シフト量（ｊは、２以上の整数）と、前記動作周期ｔｎの位相シフト量および前記動作周期ｔｎ−１の位相シフト量の各々との間、ならびに、前記第１補間位相シフト量から前記第ｊ補間位相シフト量までの補間位相シフト量同士の間を補間した第ｊ＋１補間位相シフト量を生成することを１回以上繰り返すものである請求項５に記載のクロック位相シフト回路。
【請求項７】
前記平均値算出回路は、前記補間位相シフト量として、前記動作周期ｔｎ−ｉ（ｉは、１以上の整数）の位相シフト量と前記動作周期ｔｎ−ｉ−１の位相シフト量との差の平均値を算出するものである請求項４に記載のクロック位相シフト回路。
【請求項８】
前記アキュムレータは、前記平均値算出回路が、前記補間位相シフト量として、前記動作周期ｔｎ−ｉの位相シフト量と前記動作周期ｔｎ−ｉ−１の位相シフト量との差の平均値を算出することに応じて符号が反転した平均値の符号を反転させた後、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別するものである請求項７に記載のクロック位相シフト回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周波数変調された入力クロックの位相を遅延ラインを使用してシフトし、出力クロックとして出力するクロック位相シフト回路に関するものである。
【背景技術】
【０００２】
クロック位相シフト回路は、入力クロックの位相を遅延ラインやＤＬＬ（Delay Locked Loop）回路等を使用してシフトし、出力クロックとして出力するものであり、例えば、ＤＤＲ−ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）やＲＳＤＳ（Reduced Swing Differential Signaling）等のインターフェイス回路において、ＤＤＲ−ＳＤＲＡＭやＲＳＤＳ等に入力される入力クロックとデータとの間のタイミングを調整するために使用されている。
【０００３】
例えば、遅延ラインを使用したクロック位相シフト回路は、入力クロックの所定の周期にわたって、遅延ラインを構成する遅延セルと同一の遅延セルで構成されたリングオシレータの発振クロックをカウントし、そのカウント値に基づいて、入力クロックの１周期が遅延セルの何段分の遅延時間に相当するのかを計算し、所望の位相シフト量に応じて、入力クロックが通過する遅延ラインの遅延セルの段数を設定することにより、入力クロックの位相を所望の位相シフト量だけシフトし、出力クロックとして出力する。
【０００４】
以下、遅延ラインを使用したクロック位相シフト回路として、特許文献１に記載されたものを例に挙げて説明する。
【０００５】
図７に示すクロック位相シフト回路６０は、特許文献１に記載されたものであり、測定期間設定回路１２と、リングオシレータ１４と、カウンタ１６と、動作クロック生成回路１８と、フリップフロップ（ＦＦ）２０と、遅延ライン２４とによって構成されている。
ここで、リングオシレータ１４は、遅延ライン２４を構成する遅延セル３８と同一の遅延セルを所定の段数接続して構成されたものである。
【０００６】
クロック位相シフト回路６０の動作について、図８のタイミングチャートに示すように、動作クロック生成回路１８により、入力クロックCLKINの立ち上がりに同期して、入力クロックCLKINが１６分周された動作クロックTRGが生成された例で説明する。
動作クロックTRGの１周期、つまり、入力クロックCLKINの１６周期が、入力クロックCLKINの周期を測定するための動作周期となる。
【０００７】
一方、測定期間設定回路１２により、入力クロックCLKINの立ち上がりに同期して、動作クロックTRGがローレベル（Ｌ）の期間における、２〜７番目の入力クロックCLKINの６周期の期間、アクティブ状態のハイレベル（Ｈ）となるイネーブル信号ENABLEが生成される。
【０００８】
続いて、リングオシレータ１４により、イネーブル信号ENABLEがＨの期間に発振クロックRINGが生成され、カウンタ１６により、イネーブル信号ENABLEがＨの期間に発振する発振クロックRINGのクロック数がカウントされ、そのカウント値CNTが出力される。そして、ＦＦ２０により、動作クロックTRGの立ち上がりに同期して、カウンタ１６のカウント値CNTが保持され、シフト信号SHIFTとして出力される。
【０００９】
シフト信号SHIFT、つまり、カウント値CNTは、入力クロックCLKIN、つまり、出力クロックCLKOUTの動作周期ｔｎの位相シフト量Shift(tn)を表す。位相シフト量Shift(tn)は、式（１）により表される。
Shift(tn)=[Ideal(tn)+Ideal(tn-1)]/2  …  （１）
ここで、Idealは、出力クロックCLKOUTの理想の位相シフト量を表す。つまり、位相シフト量Shift(tn)は、動作周期ｔｎの理想の位相シフト量とその１周期前の動作周期ｔｎ−１の理想の位相シフト量の和の平均値（２つの位相シフト量の平均値）である。
【００１０】
最後に、遅延ライン２４により、シフト信号SHIFTに対応する位相シフト量だけ入力クロックCLKINの位相がシフトされ、出力クロックCLKOUTとして出力される。
【００１１】
図９は、図７に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。
このタイミングチャートに示すように、理想の位相シフト量は、例えば、最小値から、時間の経過とともに連続的に増加して最大値に到達し、その後、時間の経過とともに連続的に減少して最小値に到達することを繰り返す。
これに対し、クロック位相シフト回路６０の出力クロックCLKOUTの位相シフト量は、理想の位相シフト量から遅れて、動作周期ごとに量子化されて増減を繰り返す。
【００１２】
従来のクロック位相シフト回路６０には、図９のタイミングチャートから分かるように、以下の（１）および（２）に示す２つの問題がある。
【００１３】
（１）入力クロックCLKINは連続的に周波数変調されるため、理想の位相シフト量も連続的に変化するものとなる。一方で、クロック位相シフト回路６０は、入力クロックCLKINの周期を測定した後に出力クロックCLKOUTの位相シフト量を変更するという２段階のステップで動作する。そのため、出力クロックCLKOUTの位相シフト量が入力クロックCLKINの動作周期ごとに量子化され、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間に量子化の誤差が発生する。
【００１４】
（２）クロック位相シフト回路６０が測定した入力クロックCLKINの周期は、出力クロックCLKOUTの位相シフト量の変更以前の入力クロックCLKINの位相シフト量の平均値となる。一方で、入力クロックCLKINは連続的に周波数変調されるため、出力クロックCLKOUTの位相シフト量の変更時には、既に理想の位相シフト量が変わっている。言い換えると、周期測定から位相シフト量変更までの間にタイムラグがある。そのため、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間に出力タイミングの誤差が発生する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００８−１７２５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
本発明の第１の目的は、前記従来技術の問題点を解消し、周波数変調された入力クロックが入力された場合であっても、出力クロックの位相シフト量と理想の位相シフト量との間の量子化誤差を低減することができるクロック位相シフト回路を提供することにある。
本発明の第２の目的は、上記第１の目的に加えて、出力クロックの位相シフト量と理想の位相シフト量との間のタイミング誤差を低減することができるクロック位相シフト回路を提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するために、本発明は、周波数変調された入力クロックの位相を遅延ラインを使用してシフトし、出力クロックとして出力するクロック位相シフト回路であって、
前記入力クロックを分周した所定の動作周期の動作クロックに同期して動作し、前記入力クロックの所定の周期にわたる測定期間に、前記遅延ラインを構成する遅延セルと同一の遅延セルを所定の段数接続して構成されたリングオシレータにより生成された前記入力クロックよりも高周波の発振クロックのクロック数をカウントして、そのカウント値を出力する周期測定回路と、
前記動作クロックに同期して動作し、前記カウント値を前記入力クロックの動作周期ｔｎの位相シフト量として、前記動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成し、前記動作クロックのレベルに応じて、前記動作周期ｔｎの位相シフト量と前記補間位相シフト量とを切り換えてシフト信号として出力する第１誤差補正回路とを備え、
前記遅延ラインは、所定の段数の前記遅延セルを直列に接続して構成され、前記シフト信号に対応する位相シフト量だけ前記入力クロックの位相をシフトし、前記出力クロックとして出力するものであることを特徴とするクロック位相シフト回路を提供するものである。
【００１８】
ここで、前記第１誤差補正回路は、
前記動作クロックに同期して動作し、前記補間位相シフト量として、前記動作周期ｔｎの位相シフト量と前記動作周期ｔｎ−１の位相シフト量との差の平均値を算出する平均値算出回路と、
前記カウント値保持回路の出力信号と前記平均値とを加算する第１加算器と、
前記動作クロックのレベルに応じて、前記カウント値保持回路の出力信号と前記第１加算器の出力信号とを切り換えて前記シフト信号として出力する第１セレクタとを備えることが好ましい。
【００１９】
また、前記動作クロックに同期して動作し、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、前記動作周期ｔｎの位相シフト量が減少中であると判別された場合に、前記動作周期ｔｎの位相シフト量から前記平均値を減算し、前記動作周期ｔｎの位相シフト量が増加中であると判別された場合に、前記動作周期ｔｎの位相シフト量と前記平均値を加算する第２誤差補正回路を備え、
前記第１誤差補正回路は、前記第２誤差補正回路の出力信号に基づいて、前記シフト信号を生成するものであることが好ましい。
【００２０】
また、前記第２誤差補正回路は、
前記動作クロックに同期して動作し、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、増減判別信号を生成するアキュムレータと、
前記カウント値保持回路の出力信号から前記平均値を減算する第２減算器と、
前記カウント値保持回路の出力信号と前記平均値とを加算する第２加算器と、
前記第２誤差補正回路の出力信号として、前記増減判別信号に基づいて、前記動作周期ｔｎの位相シフト量が減少中であると判別された場合に、前記第２減算器の出力信号を出力し、前記動作周期ｔｎの位相シフト量が増加中であると判別された場合に、前記第２加算器の出力信号を出力する第２セレクタとを備えることが好ましい。
【００２１】
また、前記第１誤差補正回路は、前記動作周期ｔｎの位相シフト量と前記動作周期ｔｎ−１の位相シフト量との間を補間した第１補間位相シフト量を生成した後、前記第１補間位相シフト量と、前記動作周期ｔｎの位相シフト量および前記動作周期ｔｎ−１の位相シフト量の各々との間を補間した第２補間位相シフト量を生成するものであることが好ましい。
【００２２】
また、前記第１誤差補正回路は、前記第２補間位相シフト量を生成した後、前記第ｊ補間位相シフト量（ｊは、２以上の整数）と、前記動作周期ｔｎの位相シフト量および前記動作周期ｔｎ−１の位相シフト量の各々との間、ならびに、前記第１補間位相シフト量から前記第ｊ補間位相シフト量までの補間位相シフト量同士の間を補間した第ｊ＋１補間位相シフト量を生成することを１回以上繰り返すものであることが好ましい。
【００２３】
また、前記平均値算出回路は、前記補間位相シフト量として、前記動作周期ｔｎ−ｉ（ｉは、１以上の整数）の位相シフト量と前記動作周期ｔｎ−ｉ−１の位相シフト量との差の平均値を算出するものであることが好ましい。
【００２４】
前記アキュムレータは、前記平均値算出回路が、前記補間位相シフト量として、前記動作周期ｔｎ−ｉの位相シフト量と前記動作周期ｔｎ−ｉ−１の位相シフト量との差の平均値を算出することに応じて符号が反転した平均値の符号を反転させた後、前記平均値の累積加算値に基づいて、前記動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別するものであることが好ましい。
【発明の効果】
【００２５】
本発明によれば、第１誤差補正回路が、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成するため、周波数変調された入力クロックが入力された場合であっても、出力クロックの位相シフト量と理想の位相シフト量との間の量子化誤差を低減することができる。
また、本発明によれば、第２誤差補正回路が、動作周期ｔｎの位相シフト量が減少中であると判別された場合に、動作周期ｔｎの位相シフト量から平均値を減算し、位相シフト量が増加中であると判別された場合に、動作周期ｔｎの位相シフト量と平均値とを加算するため、出力クロックの位相シフト量と理想の位相シフト量との間のタイミング誤差を低減することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明のクロック位相シフト回路の構成を表す第１実施形態のブロック図である。
【図２】図１に示すクロック位相シフト回路の動作を表す一例のタイミングチャートである。
【図３】図１に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。
【図４】本発明のクロック位相シフト回路の構成を表す第２実施形態のブロック図である。
【図５】図４に示す第２誤差補正回路の動作を表す一例の状態遷移図である。
【図６】図４に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。
【図７】従来のクロック位相シフト回路の構成を表す一例のブロック図である。
【図８】図７に示すクロック位相シフト回路の動作を表す一例のタイミングチャートである。
【図９】図７に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。
【発明を実施するための形態】
【００２７】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のクロック位相シフト回路を詳細に説明する。
【００２８】
図１は、本発明のクロック位相シフト回路の構成を表す第１実施形態のブロック図である。同図に示すクロック位相シフト回路１０は、図７に示す従来のクロック位相シフト回路６０において、さらに、第１誤差補正回路２２を備えている。
つまり、クロック位相シフト回路１０は、測定期間設定回路１２と、リングオシレータ１４と、カウンタ１６と、動作クロック生成回路１８と、フリップフロップ（ＦＦ）２０と、第１誤差補正回路２２と、遅延ライン２４とによって構成されている。
【００２９】
測定期間設定回路１２には、入力クロックCLKINが入力されている。
測定期間設定回路１２は、入力クロックCLKINに同期して動作し、入力クロックCLKINの周期を測定するための、入力クロックCLKINのｍ周期（ｍは、１以上の整数）にわたる測定期間を設定するイネーブル信号ENABLEを生成するものである。
本実施形態の場合、測定期間は、入力クロックCLKINの６周期に設定され、イネーブル信号ENABLEは、入力クロックCLKINに同期して、入力クロックCLKINの６周期の期間、アクティブ状態となる。
測定期間を長くするほど、入力クロックCLKINの周期の測定精度を向上させることができるが、測定に要する時間が長くなるため、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差は大きくなる。
【００３０】
リングオシレータ１４には、イネーブル信号ENABLEが入力されている。
リングオシレータ１４は、遅延ライン２４を構成する遅延セル３８と同一の遅延セルを所定の段数接続して構成され、イネーブル信号ENABLEがアクティブ状態の期間に、入力クロックCLKINよりも高周波の発振クロックRINGを生成するものである。
【００３１】
カウンタ１６には、発振クロックRINGが入力されている。
カウンタ１６は、イネーブル信号ENABLEがアクティブ状態の期間に発振する発振クロックRINGのクロック数をカウントし、そのカウント値CNTを出力するものである。
【００３２】
動作クロック生成回路１８には、入力クロックCLKINが入力されている。
動作クロック生成回路１８は、入力クロックCLKINに同期して動作し、入力クロックCLKINをｎ分周（ｎは、ｍ＋１以上の整数）した動作周期の動作クロックTRGを生成するものである。
動作クロックTRGは、クロック位相シフト回路１０の各部の動作を制御する動作クロックとして使用される。
本実施形態の場合、動作クロックTRGは、入力クロックCLKINを１６分周して生成され、その動作周期は、入力クロックCLKINの１６周期分となる。
【００３３】
ＦＦ２０のデータ入力端子Ｄには、カウンタ１６のカウント値CNTが入力され、クロック入力端子には、動作クロックTRGが入力されている。
ＦＦ２０は、本発明のカウント値保持回路の一例であり、動作クロックTRGの立ち上がりに同期して動作し、カウント値CNTを保持してデータ出力端子Ｑから出力するものである。
【００３４】
ここで、測定期間設定回路１２、リングオシレータ１４、カウンタ１６、動作クロック生成回路１８、および、ＦＦ２０は、入力クロックCLKINを分周した所定の動作周期の動作クロックTRGに同期して動作し、入力クロックCLKINの所定の周期にわたる測定期間に、リングオシレータ１４により生成された発振クロックRINGのクロック数をカウントして、そのカウント値CNTを出力する、本発明の周期測定回路の一例である。
【００３５】
第１誤差補正回路２２には、動作クロックTRGおよびＦＦ２０の出力信号が入力されている。
第１誤差補正回路２２は、動作クロックTRGに同期して動作し、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の量子化誤差を補正するために、ＦＦ２０の出力信号を入力クロックCLKINの動作周期ｔｎの位相シフト量として、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成し、動作クロックTRGのレベルに応じて、動作周期ｔｎの位相シフト量と補間位相シフト量とを切り換えてシフト信号として出力するものである。
第１誤差補正回路２２は、１／２除算回路２６と、２つのＦＦ２８，３０と、減算器３２と、加算器３４と、セレクタ３６とによって構成されている。
【００３６】
１／２除算回路２６には、ＦＦ２０の出力信号が入力されている。
１／２除算回路２６は、ＦＦ２０の出力信号を１／２に除算するものである。
【００３７】
ＦＦ２８のデータ入力端子Ｄには、１／２除算回路２６の出力信号が入力され、反転クロック入力端子には、動作クロックTRGが入力されている。
ＦＦ２８は、本発明の第１保持回路の一例であり、動作クロックTRGの立ち下がりに同期して動作し、１／２除算回路２６の出力信号を保持してデータ出力端子Ｑから出力するものである。
【００３８】
ＦＦ３０のデータ入力端子Ｄには、ＦＦ２８の出力信号が入力され、反転クロック入力端子には、動作クロックTRGが入力されている。
ＦＦ３０は、本発明の第２保持回路の一例であり、動作クロックTRGの立ち下がりに同期して、ＦＦ２８の出力信号を保持してデータ出力端子Ｑから出力するものである。
【００３９】
減算器３２には、ＦＦ２８およびＦＦ３０の出力信号が入力されている。
減算器（第１減算器）３２は、ＦＦ２８の出力信号から、ＦＦ３０の出力信号を減算するものである。
【００４０】
ここで、１／２除算回路２６、ＦＦ２８，３０、および、減算器３２は、動作クロックTRGに同期して動作し、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との差の平均値（位相シフト量の変化量の半分の値）を算出する本発明の平均値算出回路の一例である。
【００４１】
加算器３４には、減算器３２の出力信号およびＦＦ２０の出力信号が入力されている。
加算器（第１加算器）３４は、ＦＦ２０の出力信号と減算器３２の出力信号とを加算するものである。
【００４２】
セレクタ３６の入力端子０には、加算器３４の出力信号が入力され、入力端子１には、ＦＦ２０の出力信号が入力され、選択入力端子には、動作クロックTRGが入力されている。
セレクタ（第１セレクタ）３６は、動作クロックTRGのレベルに応じて、ＦＦ２０の出力信号と加算器３４の出力信号とを切り換えてシフト信号SHIFTとして出力するものである。
本実施形態の場合、セレクタ３６は、シフト信号SHIFTとして、動作クロックTRGがハイレベル（Ｈ）の場合に、ＦＦ２０の出力信号を出力し、動作クロックTRGがローレベル（Ｌ）の場合に、加算器３４の出力信号を出力する。
【００４３】
最後に、遅延ライン２４には、シフト信号SHIFTおよび入力クロックCLKINが入力されている。
遅延ライン２４は、所定の段数の遅延セル３８を直列に接続して構成され、シフト信号SHIFTに対応する位相シフト量だけ入力クロックCLKINの位相をシフトし、出力クロックCLKOUTとして出力するものである。
【００４４】
次に、図２に示すタイミングチャートを参照しながら、クロック位相シフト回路１０の動作を説明する。
【００４５】
測定期間設定回路１２、リングオシレータ１４、カウンタ１６、動作クロック生成回路１８、および、ＦＦ２０の動作は、従来のクロック位相シフト回路６０の場合と同様である。
つまり、ＦＦ２０からは、動作クロックTRGの立ち上がりに同期して、カウンタ１６のカウント値CNTが出力される。カウント値CNTは、入力クロックCLKIN、つまり、出力クロックCLKOUTの動作周期ｔｎの位相シフト量Shift(tn)=[Ideal(tn)+Ideal(tn-1)]/2を表す。
【００４６】
続いて、第１誤差補正回路２２では、１／２除算回路２６により、ＦＦ２０の出力信号が１／２に除算される。
【００４７】
続いて、ＦＦ２８により、動作クロックTRGの立ち下がりに同期して、１／２除算回路２６の出力信号が保持されて出力され、ＦＦ３０により、動作クロックTRGの立ち下がりに同期して、ＦＦ２８の出力信号が保持されて出力される。
【００４８】
続いて、減算器３２により、ＦＦ２８の出力信号から、ＦＦ３０の出力信号が減算され、加算器３４により、減算器３２の出力信号とＦＦ２０の出力信号とが加算される。
【００４９】
ＦＦ２８の出力信号、つまり、１／２除算回路２６の出力信号は、Shift(tn)/2を表し、ＦＦ３０の出力信号は、Shift(tn-1)/2を表す。
従って、減算器３２の出力信号は、[Shift(tn)-Shift(tn-1)]/2を表す。つまり、減算器３２の出力信号は、動作周期ｔｎの位相シフト量Shift(tn)とその１つ前の動作周期ｔｎ−１の位相シフト量Shift(tn-1)との差の平均値（位相シフト量の変化量の半分の値）である。
加算器３４の出力信号は、Shift(tn)+[Shift(tn)-Shift(tn-1)]/2を表す。つまり、加算器３４の出力信号は、動作周期ｔｎの位相シフト量Shift(tn)に対して、動作周期ｔｎの位相シフト量Shift(tn)とその１つ前の動作周期ｔｎ−１の位相シフト量Shift(tn-1)との差の平均値を加算したものであり、動作周期ｔｎの位相シフト量Shift(tn)と１つ後の動作周期ｔｎ＋１の位相シフト量Shift(tn+1)との間を補間した動作周期ｔｎ＋０．５の位相シフト量Shift(tn+0.5)を表す。
【００５０】
そして、セレクタ３６により、シフト信号SHIFTとして、動作クロックTRGがＨの場合に、ＦＦ２０の出力信号が出力、動作クロックTRGがＬの場合に、加算器３４の出力信号が出力される。
【００５１】
つまり、シフト信号SHIFTは、動作クロックTRGがＨの場合に、ＦＦ２０の出力信号、つまり、動作周期ｔｎの位相シフト量Shift(tn)を表し、動作クロックTRGがＬの場合に、加算器３４の出力信号、つまり、動作周期ｔｎの位相シフト量Shift(tn)と１つ後の動作周期ｔｎ＋１の位相シフト量Shift(tn+1)との間を補間した動作周期ｔｎ＋０．５の位相シフト量Shift(tn+0.5)を表す。
【００５２】
このように、第１誤差補正回路２２が、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量を生成するため、周波数変調された入力クロックCLKINが入力された場合であっても、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の量子化誤差を低減することができる。
【００５３】
最後に、遅延ライン２４により、シフト信号SHIFTに対応する位相シフト量だけ入力クロックCLKINの位相がシフトされ、出力クロックCLKOUTとして出力される。
【００５４】
カウント値CNTは、イネーブル信号ENABLEがアクティブ状態の期間、つまり、入力クロックCLKINの周期を測定するための測定期間をｍ、入力クロックCLKINの周期をＴ、発振クロックRINGの周期をｔとすると、式（２）により表される。
CNT=mT/t  …  （２）
発振クロックRINGの周期ｔは、リングオシレータ１４を構成する遅延セルの段数をｋ、遅延セル１段の遅延時間をＤとすると、式（３）で表される。
t=2kD  …  （３）
従って、式（２）に式（３）を代入すると、式（４）で表される。
CNT=mT/2kD=m/2k*T/D  …  （４）
ここで、T/Dは、入力クロックCLKINの１周期が、遅延セルの何段分の遅延時間に相当するかを表すので、入力クロックCLKINを、入力クロックCLKINの１周期分だけシフトさせるために必要な遅延セル３８の段数T/Dは、式（５）で表される。
T/D=m/2k*CNT  …  （５）
【００５５】
入力クロックCLKINを、入力クロックCLKINの１周期分だけシフトさせるために必要な遅延セル３８の段数Ｔ／Ｄは、例えば、入力クロックCLKINの周期を測定するための測定期間ｍ＝６、リングオシレータ１４を構成する遅延セルの段数ｋ＝６とすると、式（６）で表される。
T/D=6/(2*6)*CNT=CNT/2  …  （６）
このように、入力クロックCLKINの周期を測定するための測定期間ｍと、リングオシレータ１４を構成する遅延セルの段数ｋとが同一の値、もしくは、ｍ／２ｋの演算結果が割り切れるように設定されている場合、ｍ／２ｋの演算を簡略化することができるため、入力クロックCLKINを、入力クロックCLKINの１周期分だけシフトさせるために必要な遅延セルの段数Ｔ／Ｄを求める演算回路を簡略化することができる。
【００５６】
これに対し、入力クロックCLKINの周期を測定するための測定期間ｍと、リングオシレータ１４を構成する遅延セルの段数ｋとが、ｍ／２ｋの演算結果が割り切れるように設定されていない場合、その端数は、切り捨てる、もしくは、切り上げることができる。言い換えると、遅延ライン２４では、例えば、ｍ／２ｋ＊Ｔ／Ｄの演算結果の整数部分に対応する段数の遅延セルが使用される。
前述のように、クロック位相シフト回路１０は、ＤＤＲ−ＳＤＲＡＭやＲＳＤＳ等のインターフェイス回路において、ＤＤＲ−ＳＤＲＡＭやＲＳＤＳ等に入力される入力クロックとデータとの間のタイミングを調整するために使用される。ＤＤＲ−ＳＤＲＡＭやＲＳＤＳ等は、入力クロックとデータとの間のタイミングが、理想のタイミングから遅延セル１個分の遅延時間ずれたとしても動作許容範囲内であり、問題なく動作する。
【００５７】
また、入力クロックCLKINを、入力クロックCLKINの１周期分だけ遅延させるために必要な遅延セルの段数Ｔ／Ｄから、入力クロックCLKINの、１／２周期、１／４周期、１／８周期、１／１６周期、…等のように、所望の位相シフト量に応じて、入力クロックCLKINが通過する遅延ライン２４の遅延セル３８の段数を設定することにより、入力クロックCLKINの位相を所望の位相シフト量だけシフトさせることができる。
【００５８】
また、プロセス条件、電源電圧、温度等の変動により遅延セルの遅延時間が増減したとしても、リングオシレータ１４を構成する遅延セルが、遅延ライン２４を構成する遅延セル３８と同一の遅延セルを使用して構成されているため、リングオシレータ１４の遅延セルの遅延時間は、遅延ライン２４の遅延セル３８の遅延時間と同様に変動する。従って、クロック位相シフト回路１０では、プロセス条件、電源電圧、温度等の変動の影響を受けることなく、入力クロックCLKINの周期を測定することができる。
【００５９】
図３は、図１に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。このタイミングチャートの縦軸は、出力クロックCLKOUTの位相シフト量、横軸は、時間（動作周期）の経過を表す。
このタイミングチャートに示すように、理想の位相シフト量は、例えば、最小値から、時間の経過とともに連続的に増加して最大値に到達し、その後、時間の経過とともに連続的に減少して最小値に到達することを繰り返す。
【００６０】
これに対し、クロック位相シフト回路１０の出力クロックCLKOUTの位相シフト量は、動作周期ごとに量子化されて増減を繰り返す。
しかし、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した補間位相シフト量が生成されているため、クロック位相シフト回路１０の出力クロックCLKOUTの位相シフト量は、従来のクロック位相シフト回路６０の出力クロックCLKOUTの位相シフト量と比べて、量子化誤差が低減されている。
【００６１】
次に、第２の実施形態のクロック位相シフト回路について説明する。
【００６２】
図４は、本発明のクロック位相シフト回路の構成を表す第２実施形態のブロック図である。同図に示す第２実施形態のクロック位相シフト回路４０は、図１に示す第１実施形態のクロック位相シフト回路１０において、さらに、第２誤差補正回路４２を備えている。
つまり、クロック位相シフト回路４０は、測定期間設定回路１２と、リングオシレータ１４と、カウンタ１６と、動作クロック生成回路１８と、ＦＦ２０と、第１誤差補正回路２２と、第２誤差補正回路４２と、遅延ライン２４とによって構成されている。
【００６３】
測定期間設定回路１２、リングオシレータ１４、カウンタ１６、動作クロック生成回路１８、ＦＦ２０、第１誤差補正回路２２、および、遅延ライン２４については、その繰り返しの説明を省略する。
【００６４】
第２誤差補正回路４２には、動作クロックTRG、ＦＦ２０の出力信号および減算器３２の出力信号が入力されている。
第２誤差補正回路４２は、動作クロックTRGに同期して動作し、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間のタイミング誤差を補正するために、減算器３２の出力信号、つまり、前述の平均値の累積加算値に基づいて、動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、動作周期ｔｎの位相シフト量が減少中であると判別された場合に、動作周期ｔｎの位相シフト量から平均値を減算し、動作周期ｔｎの位相シフト量が増加中であると判別された場合に、動作周期ｔｎの位相シフト量と平均値とを加算するものである。
第２誤差補正回路４２は、アキュムレータ４４と、減算器４６と、加算器４８と、セレクタ５０とによって構成されている。
【００６５】
アキュムレータ４４には、動作クロックTRGおよび減算器３２の出力信号が入力されている。
アキュムレータ４４は、動作クロックTRGに同期して動作し、減算器３２の出力信号を累積加算し、その累積加算値に基づいて、動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別し、増減判別信号ＵＤを生成するものである。
アキュムレータ４４は、減算器３２の出力信号を累積加算する場合に、累積加算値の最小値（つまり、位相シフト量の最小値）および最大値（つまり、位相シフト量の最大値）を保存しておく。増減判別信号ＵＤは、本実施形態の場合、動作周期ｔｎの累積加算値ACM(tn)が、累積加算値の最小値−１のACM(tnmin-1)となった場合に、Ｈとなり、累積加算値の最大値−１のACM(tnmax-1)となった場合に、Ｌとなる。
【００６６】
減算器４６には、ＦＦ２０の出力信号および減算器３２の出力信号が入力されている。
減算器（第２減算器）４６は、ＦＦ２０の出力信号から、減算器３２の出力信号を減算するものである。
【００６７】
加算器４８には、ＦＦ２０の出力信号および減算器３２の出力信号が入力されている。
加算器（第２加算器）４８は、ＦＦ２０の出力信号と減算器３２の出力信号とを加算するものである。
【００６８】
セレクタ５０の入力端子０には、減算器４６の出力信号が入力され、入力端子１には、加算器４８の出力信号が入力され、選択入力端子には、増減判別信号ＵＤが入力されている。
セレクタ（第２セレクタ）５０は、第２誤差補正回路４２の出力信号として、増減判別信号ＵＤに基づいて、動作周期ｔｎの位相シフト量が減少中であると判別された場合に、減算器４６の出力信号を出力し、動作周期ｔｎの位相シフト量が増加中であると判別された場合に、加算器４８の出力信号を出力するものである。
【００６９】
次に、クロック位相シフト回路４０の動作を説明する。
【００７０】
測定期間設定回路１２、リングオシレータ１４、カウンタ１６、動作クロック生成回路１８、および、ＦＦ２０の動作は、従来のクロック位相シフト回路６０の場合と同様である。
つまり、ＦＦ２０からは、動作クロックTRGの立ち上がりに同期して、カウンタ１６のカウント値CNTが出力される。カウント値CNTは、動作周期ｔｎの位相シフト量[Ideal(tn)+Ideal(tn-1)]/2を表す。
【００７１】
続いて、第２誤差補正回路２２では、アキュムレータ４４により、動作クロックTRGに同期して、減算器３２の出力信号が累積加算される。
図５の状態遷移図に示すように、動作周期ｔｎの累積加算値ACM(tn)が、累積加算値の最大値−１のACM(tnmax-1)になると、次の動作周期から入力クロックCLKINの位相シフト量が減少すると判別されて増減判別信号ＵＤがＬとなる。
一方、動作周期ｔｎの累積加算値ACM(tn)が、累積加算値の最小値−１のACM(tnmin-1)になると、次の動作周期から入力クロックCLKINの位相シフト量が増加すると判別され、増減判別信号ＵＤがＨとなる。
【００７２】
一方、減算器４６により、ＦＦ２０の出力信号から、減算器３２の出力信号が減算され、加算器４８により、ＦＦ２０の出力信号と減算器３２の出力信号とが加算される。
【００７３】
そして、セレクタ５０により、測定期間ｔｎの入力クロックCLKINの位相シフト量Shift(tn)として、増減判別信号ＵＤがＬの場合に、減算器４６の出力信号が出力され、増減判別信号ＵＤがＨの場合に、加算器４８の出力信号が出力される。
【００７４】
前述のように、ＦＦ２０の出力信号、つまり、カウント値CNTは、動作周期ｔｎの入力クロックCLKINの位相シフト量[Ideal(tn)+Ideal(tn-1)]/2を表し、減算器３２の出力信号は、[Shift(tn)-Shift(tn-1)]/2を表す。
従って、減算器４６の出力信号は、Shift(tn)=[Ideal(tn)+Ideal(tn-1)]/2-[Shift(tn)-Shift(tn-1)]/2を表す。つまり、減算器４６の出力信号は、動作周期ｔｎの入力クロックCLKINの位相シフト量[Ideal(tn)+Ideal(tn-1)]/2から、動作周期ｔｎの入力クロックCLKINの位相シフト量Shift(tn)と１つ前の動作周期ｔｎ−１の入力クロックCLKINの位相シフト量Shift(tn-1)との差の平均値（位相シフト量の変化量の半分の値）を減算したものである。
加算器４８の出力信号は、Shift(tn)=[Ideal(tn)+Ideal(tn-1)]/2+[Shift(tn)-Shift(tn-1)]/2を表す。つまり、加算器４８の出力信号は、動作周期ｔｎの入力クロックCLKINの位相シフト量[Ideal(tn)+Ideal(tn-1)]/2に対して、動作周期ｔｎの入力クロックCLKINの位相シフト量Shift(tn)と１つ前の動作周期ｔｎ−１の入力クロックCLKINの位相シフト量Shift(tn-1)との差の平均値（位相シフト量の変化量の半分の値）を加算したものである。
【００７５】
図３のタイミングチャートに示すように、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間には出力タイミングの誤差がある。そのため、出力クロックCLKOUTの動作周期ｔｎの位相シフト量は、位相シフト量が減少中の場合に、同じ動作周期ｔｎの理想の位相シフト量よりも大きくなり、位相シフト量が増加中の場合に、同じ動作周期ｔｎの理想の位相シフト量よりも小さくなる。
【００７６】
従って、上記のように、第２誤差補正回路４２が、動作周期ｔｎの位相シフト量が減少中であると判別された場合に、動作周期ｔｎの位相シフト量からタイミング誤差に相当する平均値を減算し、動作周期ｔｎの位相シフト量が増加中であると判別された場合に、動作周期ｔｎの位相シフト量とタイミング誤差に相当する平均値とを加算することにより、出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間のタイミング誤差を低減することができる。
【００７７】
第１誤差補正回路２２の動作は、クロック位相シフト回路１０の場合と同様である。
【００７８】
図６は、図４に示す出力クロックCLKOUTの位相シフト量と理想の位相シフト量との間の誤差を表す一例のタイミングチャートである。
このタイミングチャートに示すように、クロック位相シフト回路４０の出力クロックCLKOUTの位相シフト量は、クロック位相シフト回路１０の場合と同様に、量子化誤差が低減され、かつ、動作周期ｔｎの位相シフト量が減少中であると判別された場合に、動作周期ｔｎの位相シフト量から平均値が減算され、動作周期ｔｎの位相シフト量が増加中であると判別された場合に、動作周期ｔｎの位相シフト量と平均値とが加算されているため、従来のクロック位相シフト回路６０の出力クロックCLKOUTの位相シフト量と比べて、理想の位相シフト量との間のタイミグ誤差が低減されている。
【００７９】
なお、第１誤差補正回路２２は、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した第１補間位相シフト量を生成した後、第１補間位相シフト量と、動作周期ｔｎの位相シフト量および動作周期ｔｎ−１の位相シフト量の各々との間を補間した第２補間位相シフト量を生成してもよい。これにより、量子化誤差をさらに低減することができる。
【００８０】
例えば、第１誤差補正回路２２は、動作周期ｔｎの位相シフト量と動作周期ｔｎ−１の位相シフト量との間を補間した動作周期ｔｎ−０．５の第１補間位相シフト量を生成した後、動作周期ｔｎ−０．５の第１位相シフト量と、動作周期ｔｎの位相シフト量および動作周期ｔｎ−１の位相シフト量の各々との間を補間した動作周期ｔｎ−０．７５およびｔｎ−０．２５の第２補間位相シフト量を生成することができる。
【００８１】
さらに、第１誤差補正回路２２は、第２補間位相シフト量を生成した後、第ｊ補間位相シフト量（ｊは、２以上の整数）と、動作周期ｔｎの位相シフト量および動作周期ｔｎ−１の位相シフト量の各々との間、ならびに、第１補間位相シフト量から第ｊ補間位相シフト量までの補間位相シフト量同士の間を補間した第ｊ＋１補間位相シフト量を生成することを１回以上繰り返してもよい。
【００８２】
また、第１誤差補正回路２２は、ＦＦ２０の出力信号を入力クロックCLKINの動作周期ｔｎの位相シフト量として、動作周期ｔｎ−ｉ（ｉは、１以上の整数）の位相シフト量と動作周期ｔｎ−ｉ−１の位相シフト量との間を補間した補間位相シフト量を生成してもよい。つまり、平均値算出回路は、補間位相シフト量として、動作周期ｔｎ−ｉの位相シフト量と動作周期ｔｎ−ｉ−１の位相シフト量との差の平均値ｔｎ−ｉを算出してもよい。
入力クロックCLKINは連続的に変化するため、連続する動作周期ｔｎ−ｉおよびｔｎ−ｉ−１の位相シフト量同士の間を補間すれば、同じ補間位相シフト量を得ることができる。
【００８３】
一方、アキュムレータ４４は、減算器３２の出力信号、つまり、平均値算出回路の出力信号である平均値の累積加算値に基づいて、動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別する。そのため、アキュムレータ４４は、平均値算出回路が、どの動作周期の位相シフト量に基づいて補間位相シフト量を算出するのかに基づいて、動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別する必要がある。
【００８４】
例えば、第１誤差補正回路２２が、図３に示すタイミングチャートの動作周期ｔ５において、平均値算出回路が、動作周期ｔ５およびｔ４の間を補間して補間位相シフト量を生成する場合、動作周期ｔ５およびｔ４の間の位相シフト量は減少中である。これに対し、平均値算出回路が、動作周期ｔ４およびｔ３の間を補間して補間位相シフト量を生成する場合、動作周期ｔ４およびｔ３の間の位相シフト量は増加中となる。
【００８５】
このように、動作周期ｔｎ−ｉの位相シフト量と動作周期ｔｎ−ｉ−１の位相シフト量との間を補間した補間位相シフト量を生成すると、生成した補間位相シフト量の符号（極性）が反転する場合がある。そのため、アキュムレータ４４は、符号が反転した補間位相シフト量、つまり、平均値の符号を反転した後、平均値の累積加算値に基づいて、動作周期ｔｎの位相シフト量が減少中なのか増加中なのかを判別する必要がある。
【００８６】
また、測定期間設定回路１２、リングオシレータ１４、カウンタ１６、動作クロック生成回路１８、カウント値保持部２０、第１誤差補正回路２２、第２誤差補正回路４２、および、遅延ライン２４の具体的な構成は何ら限定されず、同様の機能を実現することができる各種構成のものが利用可能である。また、各信号の極性も何ら限定されず、各信号の極性に応じて回路構成を適宜変更することができる。
【００８７】
リングオシレータ１４が、イネーブル信号ENABLEがアクティブ状態の期間にのみ、発振クロックRINGを生成することは必須ではなく、発振クロックRINGを常時生成してもよい。この場合、カウンタ１６は、イネーブル信号ENABLEがアクティブ状態の期間に発振する発振クロックRINGをカウントするのではなく、イネーブル信号ENABLEがアクティブ状態の期間に、発振クロックRINGのクロック数をカウントする。
【００８８】
本発明は、基本的に以上のようなものである。
以上、本発明について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【符号の説明】
【００８９】
１０、４０  クロック位相シフト回路
１２  測定期間設定回路
１４  リングオシレータ
１６  カウンタ
１８  動作クロック生成回路
２０、２８，３０  フリップフロップ（ＦＦ）
２２  第１誤差補正回路
２４  遅延ライン
２６  １／２除算回路
３２、４６  減算器
３４、４８  加算器
３６、５０  セレクタ
３８  遅延セル
４２  第２誤差補正回路
４４  アキュムレータ
【図１】
2015061213.tif 000003
【図２】
2015061213.tif 000004
【図３】
2015061213.tif 000005
【図４】
2015061213.tif 000006
【図５】
2015061213.tif 000007
【図６】
2015061213.tif 000008
【図７】
2015061213.tif 000009
【図８】
2015061213.tif 000010
【図９】
2015061213.tif 000011