(57)【要約】【課題】回路規模が増大することなくＦＩＦＯの容量変動への追従性を向上できること。【解決手段】バッファ容量調整回路１００は、ＦＩＦＯ１０１と、ＦＩＦＯ１０１に対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、ＦＩＦＯ１０１に供給するＰＬＬ回路１０２と、ＦＩＦＯ１０１の現在のバッファ量をモニタし、ＦＩＦＯ１０１のバッファ容量の中心値に対する現在のバッファ量の差分に応じて、読み出しクロックの速度を調整する調整信号をＰＬＬ回路１０２に出力し、現在のバッファ量を前記中心値に収束させるモニタ回路１０３と、を備える。【選択図】図１
2018137692.tif 000002
【特許請求の範囲】
【請求項１】
ＦＩＦＯと、
前記ＦＩＦＯに対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、前記ＦＩＦＯに供給するＰＬＬ回路と、
前記ＦＩＦＯの現在のバッファ量をモニタし、前記ＦＩＦＯのバッファ容量の中心値に対する前記現在のバッファ量の差分に応じて、前記読み出しクロックの速度を調整する調整信号を前記ＰＬＬ回路に出力し、前記現在のバッファ量を前記中心値に収束させるモニタ回路と、
を備えることを特徴とするバッファ容量調整回路。
【請求項２】
前記モニタ回路は、
前記ＦＩＦＯのバッファ容量に対して所定の調整開始用閾値を設定し、前記現在のバッファ量が前記調整開始用閾値の範囲外のとき、前記調整信号を前記ＰＬＬ回路に出力することを特徴とする請求項１に記載のバッファ容量調整回路。
【請求項３】
前記モニタ回路は、
前記中心値の上下に一対の調整開始用閾値を設定し、
前記現在のバッファ量が前記中心値の上側の前記調整開始用閾値を超えているとき、および前記現在のバッファ容量が前記中心値の下側の前記調整開始用閾値を下回っているときに、それぞれ前記調整信号を前記ＰＬＬ回路に出力することを特徴とする請求項２に記載のバッファ容量調整回路。
【請求項４】
前記モニタ回路は、
前記中心値の上下に複数対で前記中心値側の第１の調整開始用閾値と、前記中心値から離れた側の第２の調整用閾値を設定し、
前記現在のバッファ量が前記第２の調整開始用閾値の範囲外のときには、前記現在のバッファ量が前記第１の調整開始用閾値の範囲外のときよりも、前記現在のバッファ容量を前記中心値に収束させる感度αを高める前記調整信号を前記ＰＬＬ回路に出力することを特徴とする請求項３に記載のバッファ容量調整回路。
【請求項５】
前記ＰＬＬ回路は、
前記ＦＩＦＯに対する書き込みクロックと、前記ＦＩＦＯの読み出しクロックを分周器により１／Ｎ分周したクロックとの差分をカウントし、前記モニタ回路が出力する調整信号の感度αに基づきカウント数を増減させるカウント増減部を有する位相比較器と、
前記位相比較器の出力をＤＣ化するローパスフィルタと、
前記ローパスフィルタの出力に対応した読み出しクロックを前記ＦＩＦＯに出力する電圧制御発振器と、
を含むことを特徴とする請求項１〜４のいずれか一つに記載のバッファ容量調整回路。
【請求項６】
前記カウント増減部は、前記調整信号の感度αに基づき、前記ＦＩＦＯに対する書き込みクロックと、前記ＦＩＦＯの読み出しクロックを前記分周器により１／Ｎ分周したクロックとの差分のカウント値を増減させることを特徴とする請求項５に記載のバッファ容量調整回路。
【請求項７】
前記モニタ回路は、
前記調整開始閾値よりも前記中心値側の近傍に一対の範囲内閾値を設定し、前記現在のバッファ量が範囲内閾値の範囲内となったとき、前記調整信号の出力を停止することを特徴とする請求項１〜６のいずれか一つに記載のバッファ容量調整回路。
【請求項８】
前記モニタ回路は、
α＝ＩＮＴ（（Ｆ＿ｖａｌ−Ｆ０）／Ｍ、但し、Ｆ＿ｖａｌ：現在のバッファ量、Ｆ０：バッファ容量の中心値、Ｍ：分解能）の算出式に基づき、前記調整信号の感度αを調整することを特徴とする請求項１，５〜７のいずれか一つに記載のバッファ容量調整回路。
【請求項９】
ＦＩＦＯと、前記ＦＩＦＯに対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、前記ＦＩＦＯに供給するＰＬＬ回路と、を含むバッファ容量調整回路のバッファ容量調整方法であって、
前記ＦＩＦＯの現在のバッファ量をモニタし、前記ＦＩＦＯのバッファ容量の中心値に対する前記現在のバッファ量の差分に応じて、前記読み出しクロックの速度を調整する調整信号を前記ＰＬＬ回路に出力し、前記現在のバッファ量を前記中心値に収束させる、
ことを特徴とするバッファ容量調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ容量を調整するバッファ容量調整回路およびバッファ容量調整方法に関する。
【背景技術】
【０００２】
電気信号や光信号の伝送装置等では、信号分離等のために受信データをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ，Ｆｉｒｓｔ  Ｏｕｔ）等のバッファに一旦格納し、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）で生成したクロックを用いてデータレートを変換する。ＦＩＦＯは、ライトイネーブル（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）が有効なタイミングの書き込みデータ（Ｗｒｉｔｅ  Ｄａｔａ）を蓄積する。
【０００３】
ＰＬＬは、入出力のデータレートの差分調整用のスタッフデータ（Ｓｔｕｆｆ  Ｄａｔａ）を削除することで生成されるギャップクロック（Ｇａｐｐｅｄ  ＣＬＫ）を平滑化する機能を有する。そして、ＰＬＬが同期したらリセット（Ｒｅｓｅｔ）信号をＦＩＦＯに送りバッファをクリアし、バッファ容量の１／２にデータが蓄積されたらデータの読み出し（Ｒｅａｄ  Ｄａｔａ）を開始する。この動作をＦＩＦＯセンタリングという。
【０００４】
従来、バッファを監視し、データの変動量からバッファの中心位置を任意の位置に変更する技術が開示されている（例えば、下記特許文献１参照。）。また、通信の遅延変動時にシステムクロックの周波数を調整することで同期外れに対応する技術が開示されている（例えば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１５２１８４号公報
【特許文献２】特開２００２−３４４４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来技術では、１．初期値のずれによるバッファマージン低下、２．回路規模、コスト、レイテンシーの悪化、の問題を有している。
【０００７】
１．初期値のずれによるバッファマージン低下について、ＰＬＬは、高速引込みで同期確立後、低速な応答特性に切り替わるが、この間、位相も緩やかに変動しながら収束点に向かう。このため、ＦＩＦＯセンタリング後も位相変動が生じ、オフセットを生じた位置に収束する。収束ポイントがＦＩＦＯセンタリング時の位相ポイントからずれると、バッファマージンが低下し、ＦＩＦＯに格納可能なデータ量が減少する。
２．回路規模、コスト、レイテンシーの悪化を回避するために、ＦＩＦＯの容量を大きくして対応すると、回路の実装面積やコストが増大し、ＦＩＦＯのメモリ量が大きいとレイテンシーが低下する問題が生じる。
【０００８】
一つの側面では、本発明は、回路規模が増大することなくＦＩＦＯの容量変動への追従性を向上できることを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、バッファ容量調整回路は、ＦＩＦＯと、前記ＦＩＦＯに対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、前記ＦＩＦＯに供給するＰＬＬ回路と、前記ＦＩＦＯの現在のバッファ量をモニタし、前記ＦＩＦＯのバッファ容量の中心値に対する前記現在のバッファ量の差分に応じて、前記読み出しクロックの速度を調整する調整信号を前記ＰＬＬ回路に出力し、前記現在のバッファ量を前記中心値に収束させるモニタ回路と、を備えることを要件とする。
【発明の効果】
【００１０】
一つの実施形態によれば、回路規模が増大することなくＦＩＦＯの容量変動への追従性を向上できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかるバッファ容量調整回路の回路構成例を示す図である。
【図２】図２は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整を説明する図である。
【図３】図３は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の処理例を示すフローチャートである。
【図４】図４は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整例を示すタイムチャートである。
【図５】図５は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の他の例を説明する図である。
【図６】図６は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の他の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（実施の形態）
実施の形態のバッファ容量調整回路は、ＦＩＦＯのバッファ容量の中心値に対する現在のバッファ量の差分に基づき、位相比較器のカウント数（収束の感度）を調整することで、ＦＩＦＯのバッファ量をＦＩＦＯの中心値付近に維持させる。これにより、回路規模を増大させることなくＦＩＦＯ容量の変動への追従性を向上させる。
【００１３】
図１は、実施の形態にかかるバッファ容量調整回路の回路構成例を示す図である。バッファ容量調整回路１００は、入力されるデータのバッファとして用いるＦＩＦＯ１０１、ＰＬＬ（デジタルＰＬＬ）回路１０２、モニタ回路１０３を含む。
【００１４】
ＦＩＦＯ１０１には、書き込みデータ（Ｗｒｉｔｅ  ＤＡＴＡ，Ｗｒｉｔｅ  ＣＬＫ，Ｗｒｉｔｅ  Ｅｎａｂｌｅ）が入力され、Ｒｅａｄ  ＣＬＫに基づきデータ（Ｒｅａｄ  ＤＡＴＡ）が読み出されて出力する。
【００１５】
ＰＬＬ回路１０２は、論理積回路（＆）１１１、位相比較器（ＰＤ）１１２、ローパスフィルタ（ＬＰＦ）１１３、電圧制御発振器（ＶＣＯ）１１４、Ｎ分周器（１／Ｎ）１１５、を含む。ＰＤは、Ｐｈａｓｅ  Ｃｏｍｐａｌａｔｏｒ、ＬＰＦはＬｏｗ  Ｐａｓｓ  Ｆｉｌｔｅｒ、ＶＣＯは、Ｖｏｌｔａｇｅ  Ｃｏｎｔｏｒｏｌｌｅｄ  Ｏｓｃｉｌｌａｔｏｒの略である。
【００１６】
論理積回路１１１は、ＦＩＦＯ１０１に入力される書き込みイネーブル信号（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）とデータの書き込みクロック（Ｗｒｉｔｅ  ＣＬＫ）の論理積を（ＲＥＦ  ＣＬＫ）として位相比較器１１２に出力する。
【００１７】
位相比較器１１２は、入力されるＲＥＦ  ＣＬＫと、ＦＢ  ＣＬＫ間の位相差を一定なＳＹＳＣＬＫでカウントし、カウント値に対応する位相差情報ＰＤ＿ＯＵＴをＬＰＦ１１３に出力する。ＬＰＦ１１３は、カウント値をＤＣ化した電圧Ｖｃを出力する。ＶＣＯ１１４は、入力された電圧Ｖｃに対応する読み出しクロック（Ｒｅａｄ  ＣＬＫ）をＦＩＦＯ１０１とＮ分周器１１５に出力する。Ｎ分周器１１５は、読み出しクロックを１／Ｎ分周したクロック（ＦＢ  ＣＬＫ）を位相比較器１１２にフィードバック出力する。
【００１８】
実施の形態では、モニタ回路１０３と、位相比較器１１２内にカウント増減部（α（±ｎ））１２１を設ける。モニタ回路１０３は、ＦＩＦＯ１０１の現在のバッファ量Ｆ＿ｖａｌに基づき、ＦＩＦＯ１０１に対するバッファ量の調整を行う調整信号（ＡＤＪ＿ＯＮ，ＡＤＪ＿ＰＤ）を位相比較器１１２のカウント増減部１２１に出力する。ＡＤＪ＿ＯＮは、バッファ量の調整開始の制御信号、ＡＤＪ＿ＰＤは、バッファ調整パラメータであり、カウント値をαで増減させる増減パラメータである。
【００１９】
位相比較器１１２のカウント増減部１２１は、モニタ回路１０３から出力される調整信号（ＡＤＪ＿ＯＮ，ＡＤＪ＿ＰＤ）に基づき、出力する位相差情報ＰＤ＿ＯＵＴのカウント値を増減させる。
【００２０】
図１に示すＦＩＦＯ１０１は各種メモリを用いることができ、ＰＬＬ回路１０２およびモニタ回路１０３はＦＰＧＡやＣＰＬＤを用いることができる。ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、ＣＰＬＤはＣｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅの略である。
【００２１】
このほか、モニタ回路１０３は、例えば、ＣＰＵおよびＲＯＭ，ＲＡＭ等のメモリを用いて実現することもできる。この場合、ＣＰＵは、モニタ回路の機能プログラムをＲＯＭから読み出し実行し、ＲＡＭを作業領域に用いることで実現できる。
【００２２】
図２は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整を説明する図である。モニタ回路１０３は、図２に示す各閾値Ｆｔｈの設定を有する。Ｆ０は、ＦＩＦＯ１０１のバッファ容量の中心値である。中心値Ｆ０の近傍の上下一対のバッファ容量にはそれぞれ範囲内閾値Ｆｔｈ＿ｉｎが設定される。また、中心値Ｆ０から離れた上下一対のバッファ容量にはそれぞれ調整開始閾値Ｆｔｈ＿ｏｕｔが設定される。
【００２３】
モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔの範囲外のときに調整動作を開始して調整信号（ＡＤＪ＿ＯＮ，ＡＤＪ＿ＰＤ）を位相比較器１１２のカウント増減部１２１に出力する。そして、バッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎの範囲内に収束すると調整動作を終了する。
【００２４】
図３は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の処理例を示すフローチャートである。図３の処理は、例えば、モニタ回路１０３のＣＰＵが実行する。はじめに、モニタ回路１０３は、ＦＩＦＯ１０１の現在のバッファ量Ｆ＿ｖａｌを取得する（ステップＳ３０１）。
【００２５】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔを超えているか判断する（ステップＳ３０２）。図示の処理例では、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分の絶対値が調整開始閾値Ｆｔｈ＿ｏｕｔを超えているかを判断している（｜Ｆ＿ｖａｌ−Ｆ０｜＞Ｆｔｈ＿ｏｕｔ）。
【００２６】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔを超えていなければ（ステップＳ３０２：Ｎｏ）、処理を終了する。一方、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔを超えていれば（ステップＳ３０２：Ｙｅｓ）、調整動作を開始する（ステップＳ３０３）。この際、モニタ回路１０３は、調整信号（ＡＤＪ＿ＯＮ）を１「調整開始」に設定し、位相比較器１１２のカウント増減部１２１に出力する。
【００２７】
次に、モニタ回路１０３は、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの上下位置を判断する（ステップＳ３０４）。例えば、Ｆ＿ｖａｌ−Ｆ０＞０に基づき判断する。そして、現在のバッファ量Ｆ＿ｖａｌが中心値より上であれば（ステップＳ３０４：Ｙｅｓ）、モニタ回路１０３は、位相比較器１１２のカウント増減部１２１に出力する調整パラメータＡＤＪ＿ＰＤの感度αの符号を＋ｎに設定する（ステップＳ３０５）。符号をプラス（＋）とすることで、中心値Ｆ０より上（大きい）に位置する現在のバッファ量Ｆ＿ｖａｌを中心値Ｆ０側に向けて減少させる制御を行う。
【００２８】
一方、現在のバッファ量Ｆ＿ｖａｌが中心値より下であれば（ステップＳ３０４：Ｎｏ）、モニタ回路１０３は、位相比較器１１２のカウント増減部１２１に出力する調整パラメータＡＤＪ＿ＰＤの感度αの符号を−ｎに設定する（ステップＳ３０６）。符号をマイナス（−）とすることで、中心値Ｆ０より下（小さい）に位置する現在のバッファ量Ｆ＿ｖａｌを中心値Ｆ０側に向けて増加させる制御を行う。
【００２９】
αに設定する±ｎは、任意の整数値（ｎ＝１，２，３，…）であり、収束精度と収束の速さに応じてユーザにより予め任意に設定される値である。ｎの値を大きくするほど、カウント数が大きく早く収束でき、ｎの値が小さいほどカウント数が小さく精度よく収束できる。
【００３０】
ステップＳ３０５あるいはステップＳ３０６の処理後、モニタ回路１０３は、再度現在のバッファ量Ｆ＿ｖａｌを取得する（ステップＳ３０７）。
【００３１】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束したか判断する（ステップＳ３０８）。図示の処理例では、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分の絶対値が範囲内閾値Ｆｔｈ＿ｉｎ内であるかを判断している（｜Ｆ＿ｖａｌ−Ｆ０｜＜Ｆｔｈ＿ｉｎ）。
【００３２】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束していなければ（ステップＳ３０８：Ｎｏ）、ステップＳ３０４に戻る。一方、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束していれば（ステップＳ３０８：Ｙｅｓ）、モニタ回路１０３は、調整信号（ＡＤＪ＿ＯＮ）の出力を停止し、以上の調整動作を終了する（ステップＳ３０９）。
【００３３】
この際、モニタ回路１０３は、調整信号のＡＤＪ＿ＯＮを０「調整開始」、調整パラメータＡＤＪ＿ＰＤのαの値を「０」に設定し、位相比較器１１２のカウント増減部１２１に出力する。
【００３４】
モニタ回路１０３は、上記のバッファ調整の動作を有効にすることで、ＰＬＬ回路１０２の引込時だけでなく、リアルタイムにバッファ量を中心値付近に維持できるようになる。
【００３５】
図４は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整例を示すタイムチャートである。図中横軸は時間、縦軸の（ａ）はＦＩＦＯ１０１の容量、（ｂ）はモニタ回路１０３が出力する調整信号（ＡＤＪ＿ＯＮ）、（ｃ）はモニタ回路１０３が出力する調整パラメータ（ＡＤＪ＿ＰＤ）である。
【００３６】
（ｄ）は位相比較器（ＰＤ）１１２によるＳＹＳＣＬＫのカウント数である。位相比較器（ＰＤ）１１２は、ＲＥＦ＿ＣＬＫとＦＢ＿ＣＬＫの位相差をＳＹＳＣＬＫでカウントする。また、Ｗｒｉｔｅ  ＤＡＴＡの速度と、Ｒｅａｄ  ＤＡＴＡの速度が一致している定常時のＳＹＳＣＬＫカウント数を「Ａ」とし、また、モニタ回路１０３のＡＤＪ＿ＰＤのパラメータ（±α）の入力に基づき、Ｂ＝Ａ＋α、Ｃ＝Ａ−αのカウント数としている。
【００３７】
（ｅ）は位相比較器（ＰＤ）１１２に入力されるＲＥＦ＿ＣＬＫ、（ｆ）はＦＢ＿ＣＬＫである。これらＲＥＦ＿ＣＬＫと、ＦＢ＿ＣＬＫはエッジだけを示している。（ｇ）は、位相比較器（ＰＤ）１１２の出力ＰＤ＿ＯＵＴである。（ｈ）はＰＬＬ回路１０２がＦＩＦＯ１０２に出力するＲｅａｄ  ＣＬＫの周波数であり、縦軸方向は周波数である。
【００３８】
図４はＶＣＯ正制御の例を示す。現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔの範囲内の間、モニタ回路１０３は調整動作を行わず、調整信号はＡＤＪ＿ＯＮが「０」、調整パラメータＡＤＪ＿ＰＤは「α＝０」である。
【００３９】
この後、時期ｔ１において、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔの範囲（上）を超えたとする。この場合、モニタ回路１０３は調整動作を開始し、調整信号はＡＤＪ＿ＯＮが「１」、調整パラメータＡＤＪ＿ＰＤをプラス（＋α）とする。
【００４０】
これにより、位相比較器（ＰＤ）１１２は、ＳＹＳＣＬＫが「Ｂ」となり、ＳＹＳＣＬＫが「Ｂ」の期間中、カウント数を＋αに増やす。そして、位相比較器（ＰＤ）１１２は、ＲＥＦ＿ＣＬＫ−ＦＢ＿ＣＬＫ間の位相差（出力するＰＤ＿ＯＵＴのパルス幅）を広げ、ＶＣＯ１１４に対するコントロール電圧Ｖｃを上げ、ＶＣＯ１１４は出力周波数（Ｒｅａｄ  ＣＬＫ）を上げる。これにより、ＦＩＦＯ１０１から読み出すデータ量が増加し、ＦＩＦＯ１０１の現在のバッファ量Ｆ＿ｖａｌが中心値Ｆに向かって低くなる。
【００４１】
この後、時期ｔ２において、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎの範囲内に収束したとする。この場合、モニタ回路１０３は調整動作を終了し、調整信号はＡＤＪ＿ＯＮが「０」、調整パラメータＡＤＪ＿ＰＤを（α＝０）とする。
【００４２】
この後、時期ｔ３において、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔの範囲（下）を下回ったとする。この場合、モニタ回路１０３は調整動作を開始し、調整信号はＡＤＪ＿ＯＮが「１」、調整パラメータＡＤＪ＿ＰＤをマイナス（−α）とする。
【００４３】
これにより、位相比較器（ＰＤ）１１２は、ＳＹＳＣＬＫが「Ｃ」となり、ＳＹＳＣＬＫが「Ｃ」の期間中、カウント数を−αに減らす。そして、位相比較器（ＰＤ）１１２は、ＲＥＦ＿ＣＬＫ−ＦＢ＿ＣＬＫ間の位相差（出力するＰＤ＿ＯＵＴのパルス幅）を狭め、ＶＣＯ１１４に対するコントロール電圧Ｖｃを下げ、ＶＣＯ１１４は出力周波数（Ｒｅａｄ  ＣＬＫ）を下げる。これにより、ＦＩＦＯ１０１から読み出すデータ量が減少し、ＦＩＦＯ１０１の現在のバッファ量Ｆ＿ｖａｌが中心値Ｆ０に向かって増加する。
【００４４】
以上のように、モニタ回路１０３を設けることにより、現在のバッファ量Ｆ＿ｖａｌが常にＦＩＦＯ１０１の中心値Ｆ０近傍に収束するように、ＦＩＦＯ１０１の読み出し速度を可変制御する。
【００４５】
図５は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の他の例を説明する図である。上述した説明では、位相カウントに用いる感度αをユーザ設定による固定値（整数値ｎ＝１，２，３，…）としたが中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分に応じて異なるα（ｎ）を用いてもよい。
【００４６】
例えば、調整開始閾値Ｆｔｈ＿ｏｕｔを中心値Ｆ０の上下に複数対（図では２対）設ける。図５の例では、中心値Ｆ０近傍で中心値Ｆ０を中心とする上下に一対の第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１をそれぞれ設け、中心値Ｆ０から離れた中心値Ｆ０を中心とする上下一対に第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２をそれぞれ設ける。
【００４７】
そして、モニタ回路１０３は、第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１に対応するｎ＝１とし、第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２に対応するｎ＝３とする。これにより、現在のバッファ量Ｆ＿ｖａｌが中心値Ｆ０より離れるほど収束の感度を高くする。例えば、現在のバッファ量Ｆ＿ｖａｌが第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１の範囲外のときには、所定の速度での収束を行わせる。さらに、現在のバッファ量Ｆ＿ｖａｌが第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２の範囲外のときには、第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１の速度よりもより高速な収束を行わせる。
【００４８】
図６は、実施の形態にかかるバッファ容量調整回路のバッファ容量調整の他の処理例を示すフローチャートである。図６の処理は、図５の各閾値の設定例に基づき、例えば、モニタ回路１０３のＣＰＵが実行する。はじめに、モニタ回路１０３は、ＦＩＦＯ１０１の現在のバッファ量Ｆ＿ｖａｌを取得する（ステップＳ６０１）。
【００４９】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１を超えているか判断する（ステップＳ６０２）。図示の処理例では、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分の絶対値が調整開始閾値Ｆｔｈ＿ｏｕｔ１を超えているかを判断している（｜Ｆ＿ｖａｌ−Ｆ０｜＞Ｆｔｈ＿ｏｕｔ１）。
【００５０】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔ１を超えていなければ（ステップＳ６０２：Ｎｏ）、処理を終了する。一方、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔ１を超えていれば（ステップＳ６０２：Ｙｅｓ）、調整動作を開始する（ステップＳ６０３）。この際、モニタ回路１０３は、調整信号（ＡＤＪ＿ＯＮ）を１「調整開始」に設定し、位相比較器１１２のカウント増減部１２１に出力する。
【００５１】
次に、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２以下であるか判断する（ステップＳ６０４）。図示の処理例では、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分の絶対値が調整開始閾値Ｆｔｈ＿ｏｕｔ２以下であるかを判断している（｜Ｆ＿ｖａｌ−Ｆ０｜≦Ｆｔｈ＿ｏｕｔ２）。
【００５２】
現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔ２以下であれば（ステップＳ６０４：Ｙｅｓ）、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔ１と、Ｆｔｈ＿ｏｕｔ２との間に位置していると判断する。そして、位相比較器（ＰＤ）１１２に対する調整信号のパラメータＡＤＪ＿ＰＤのｎの値を感度が低い「１」に設定する（ステップＳ６０５）。
【００５３】
一方、現在のバッファ量Ｆ＿ｖａｌが調整開始閾値Ｆｔｈ＿ｏｕｔ２を超えていれば（ステップＳ６０４：Ｎｏ）、モニタ回路１０３は、位相比較器（ＰＤ）１１２に対する調整信号のパラメータＡＤＪ＿ＰＤのα０の値の感度を高める。例えばｎを「３」に設定する（ステップＳ６０６）。
【００５４】
ステップＳ６０５、あるいはステップＳ６０６の実行後、モニタ回路１０３は、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの上下位置を判断する（ステップＳ６０７）。例えば、Ｆ＿ｖａｌ−Ｆ０＞０に基づき判断する。
【００５５】
そして、現在のバッファ量Ｆ＿ｖａｌが中心値より上であれば（ステップＳ６０７：Ｙｅｓ）、モニタ回路１０３は、位相比較器１１２のカウント増減部１２１に出力する調整パラメータＡＤＪ＿ＰＤの感度αの符号を＋（＋ｎ）に設定する（ステップＳ６０８）。符号をプラス（＋）とすることで、中心値Ｆ０より上（大きい）に位置する現在のバッファ量Ｆ＿ｖａｌを中心値Ｆ０側に向けて減少させる制御を行う。
【００５６】
一方、現在のバッファ量Ｆ＿ｖａｌが中心値より下であれば（ステップＳ６０７：Ｎｏ）、モニタ回路１０３は、位相比較器１１２のカウント増減部１２１に出力する調整パラメータＡＤＪ＿ＰＤの感度αの符号を−（−ｎ）に設定する（ステップＳ６０９）。符号をマイナス（−）とすることで、中心値Ｆ０より下（小さい）に位置する現在のバッファ量Ｆ＿ｖａｌを中心値Ｆ０側に向けて増加させる制御を行う。
【００５７】
ステップＳ６０８あるいはステップＳ６０９の処理後、モニタ回路１０３は、再度現在のバッファ量Ｆ＿ｖａｌを取得する（ステップＳ６１０）。
【００５８】
そして、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束したか判断する（ステップＳ６１１）。図示の処理例では、中心値Ｆ０に対する現在のバッファ量Ｆ＿ｖａｌの差分の絶対値が範囲内閾値Ｆｔｈ＿ｉｎ内であるかを判断している（｜Ｆ＿ｖａｌ−Ｆ０｜＜Ｆｔｈ＿ｉｎ）。
【００５９】
そして、モニタ回路１０３は、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束していなければ（ステップＳ６１１：Ｎｏ）、ステップＳ６０４に戻る。一方、現在のバッファ量Ｆ＿ｖａｌが範囲内閾値Ｆｔｈ＿ｉｎ内に収束していれば（ステップＳ６１１：Ｙｅｓ）、モニタ回路１０３は、調整信号（ＡＤＪ＿ＯＮ）の出力を停止し（ステップＳ６１２）、以上の調整動作を終了する。
【００６０】
この際、モニタ回路１０３は、調整信号のＡＤＪ＿ＯＮを０「調整開始」、調整パラメータＡＤＪ＿ＰＤのαの値を「０」に設定し、位相比較器１１２のカウント増減部１２１に出力する。
【００６１】
以上のように、調整開始閾値をＦＩＦＯのバッファ量内で複数設定し、閾値毎にＰＬＬ収束のための感度αを異ならせて設定する。上記の処理例では、現在のバッファ量Ｆ＿ｖａｌが中心値Ｆ０から大きく離れ、中心値Ｆ０から離れた第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２を超えた場合に、中心値近傍の第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１を超えた場合に対して３倍の速さで収束動作を行う。
【００６２】
また、現在のバッファ量Ｆ＿ｖａｌが第２の調整開始閾値Ｆｔｈ＿ｏｕｔ２の範囲内になればα＝１となり、さらに、中心値近傍の第１の調整開始閾値Ｆｔｈ＿ｏｕｔ１の範囲内になればα＝０となる。このように、現在のバッファ量Ｆ＿ｖａｌが中心値Ｆ０に近づくほど収束精度を向上できるようになり、収束速さと収束精度をいずれも向上できるようになる。
【００６３】
上記処理例に限らず、モニタ回路１０３が行うバッファ容量の調整方法としては他に、α＝ＩＮＴ（（Ｆ＿ｖａｌ−Ｆ０）／Ｍ）の算出式に基づき調整動作を行ってもよい。Ｍは、分解能を示す。これにより、ＦＩＦＯ１０１の残量に応じた可変のα値を与えることができ、さらにダイナミックにバッファ容量を調整できるようになる。
【００６４】
以上説明したバッファ容量調整回路は、例えば、ＯＴＮ（Ｏｐｔｉｃａｌ  Ｔｒａｎｓｐｏｒｔ  Ｎｅｔｗｏｒｋ）伝送を行う伝送装置に設けられ、受信したＯＴＮ信号から異なる周波数レートのクライアント信号を分離するデータレート変換部に適用できる。データレート変換部は、受信したデータを一時保存するＦＩＦＯと、クライアントクロックを生成するＰＬＬ回路から構成される。ＰＬＬ回路に上述したモニタ回路を追加して実現できる。
【００６５】
以上説明した実施の形態によれば、モニタ回路は、ＦＩＦＯのバッファ容量が常に中心値になるように調整を行う。この際、現在のバッファ量がバッファ容量の中心値を基準に設定した調整開始閾値の範囲外のとき、位相比較器によるカウントを可変させ、ＦＩＦＯからのデータの読み出し速度を可変させて現在のバッファ量を中心値に収束させる調整を開始する。これにより、ＦＩＦＯのバッファ量を常に中心値付近に維持できるようになる。また、モニタ回路の調整動作を引込時だけでなく、常時動作させることでバッファ量を常に中心値付近に維持することができる。
【００６６】
位相カウントの感度は、任意の固定値とする他に、中心値からのずれ量に応じた複数の調整開始閾値と、ずれ量が大きいほど高い収束の感度の値を複数設定することとしてもよい。これにより、現在のバッファ量に応じて中心値への収束速度と収束精度をいずれも向上できるようになる。
【００６７】
そして、実施の形態によれば、ＦＩＦＯセンタリング後の位相変動に基づきオフセットを生じた位置に収束することを防ぐことができ、バッファマージンを確保し、ＦＩＦＯに格納可能なデータ量を一定量確保できるようになる。さらに、ＦＩＦＯの容量を大きくすることなく、ＦＩＦＯに格納可能なデータ量を一定量確保できるため、回路の実装面積やコストが増大することがなく、ＦＩＦＯのレイテンシーの低下も防ぐことができる。
【００６８】
なお、本実施の形態で説明したバッファ容量調整方法は、予め用意された制御プログラムを対象機器（上記バッファ容量調整回路）等のコンピュータ（ＣＰＵ等）が実行することにより実現することができる。本制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００６９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７０】
（付記１）ＦＩＦＯと、
前記ＦＩＦＯに対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、前記ＦＩＦＯに供給するＰＬＬ回路と、
前記ＦＩＦＯの現在のバッファ量をモニタし、前記ＦＩＦＯのバッファ容量の中心値に対する前記現在のバッファ量の差分に応じて、前記読み出しクロックの速度を調整する調整信号を前記ＰＬＬ回路に出力し、前記現在のバッファ量を前記中心値に収束させるモニタ回路と、
を備えることを特徴とするバッファ容量調整回路。
【００７１】
（付記２）前記モニタ回路は、
前記ＦＩＦＯのバッファ容量に対して所定の調整開始用閾値を設定し、前記現在のバッファ量が前記調整開始用閾値の範囲外のとき、前記調整信号を前記ＰＬＬ回路に出力することを特徴とする付記１に記載のバッファ容量調整回路。
【００７２】
（付記３）前記モニタ回路は、
前記中心値の上下に一対の調整開始用閾値を設定し、
前記現在のバッファ量が前記中心値の上側の前記調整開始用閾値を超えているとき、および前記現在のバッファ容量が前記中心値の下側の前記調整開始用閾値を下回っているときに、それぞれ前記調整信号を前記ＰＬＬ回路に出力することを特徴とする付記２に記載のバッファ容量調整回路。
【００７３】
（付記４）前記モニタ回路は、
前記中心値の上下に複数対で前記中心値側の第１の調整開始用閾値と、前記中心値から離れた側の第２の調整用閾値を設定し、
前記現在のバッファ量が前記第２の調整開始用閾値の範囲外のときには、前記現在のバッファ量が前記第１の調整開始用閾値の範囲外のときよりも、前記現在のバッファ容量を前記中心値に収束させる感度αを高める前記調整信号を前記ＰＬＬ回路に出力することを特徴とする付記３に記載のバッファ容量調整回路。
【００７４】
（付記５）前記ＰＬＬ回路は、
前記ＦＩＦＯに対する書き込みクロックと、前記ＦＩＦＯの読み出しクロックを分周器により１／Ｎ分周したクロックとの差分をカウントし、前記モニタ回路が出力する調整信号の感度αに基づきカウント数を増減させるカウント増減部を有する位相比較器と、
前記位相比較器の出力をＤＣ化するローパスフィルタと、
前記ローパスフィルタの出力に対応した読み出しクロックを前記ＦＩＦＯに出力する電圧制御発振器と、
を含むことを特徴とする付記１〜４のいずれか一つに記載のバッファ容量調整回路。
【００７５】
（付記６）前記カウント増減部は、前記調整信号の感度αに基づき、前記ＦＩＦＯに対する書き込みクロックと、前記ＦＩＦＯの読み出しクロックを前記分周器により１／Ｎ分周したクロックとの差分のカウント値を増減させることを特徴とする付記５に記載のバッファ容量調整回路。
【００７６】
（付記７）前記モニタ回路は、
前記調整開始閾値よりも前記中心値側の近傍に一対の範囲内閾値を設定し、前記現在のバッファ量が範囲内閾値の範囲内となったとき、前記調整信号の出力を停止することを特徴とする付記１〜６のいずれか一つに記載のバッファ容量調整回路。
【００７７】
（付記８）前記モニタ回路は、
α＝ＩＮＴ（（Ｆ＿ｖａｌ−Ｆ０）／Ｍ、但し、Ｆ＿ｖａｌ：現在のバッファ量、Ｆ０：バッファ容量の中心値、Ｍ：分解能）の算出式に基づき、前記調整信号の感度αを調整することを特徴とする付記１，５〜７のいずれか一つに記載のバッファ容量調整回路。
【００７８】
（付記９）ＦＩＦＯと、前記ＦＩＦＯに対するデータの書き込みに対し、異なるレートでの読み出しのための読み出しクロックを生成し、前記ＦＩＦＯに供給するＰＬＬ回路と、を含むバッファ容量調整回路のバッファ容量調整方法であって、
前記ＦＩＦＯの現在のバッファ量をモニタし、前記ＦＩＦＯのバッファ容量の中心値に対する前記現在のバッファ量の差分に応じて、前記読み出しクロックの速度を調整する調整信号を前記ＰＬＬ回路に出力し、前記現在のバッファ量を前記中心値に収束させる、
ことを特徴とするバッファ容量調整方法。
【００７９】
（付記１０）前記ＦＩＦＯのバッファ容量に対して所定の調整開始用閾値を設定し、前記現在のバッファ量が前記調整開始用閾値の範囲外のとき、前記調整信号を前記ＰＬＬ回路に出力することを特徴とする付記９に記載のバッファ容量調整方法。
【符号の説明】
【００８０】
１００  バッファ容量調整回路
１０１  ＦＩＦＯ
１０２  ＰＬＬ回路
１０３  モニタ回路
１１１  論理積回路
１１２  位相比較器
１１３  ＬＰＦ
１１４  ＶＣＯ
１１５  Ｎ分周器
１２１  カウント増減部
Ｆ０  ＦＩＦＯの中心値
Ｆｔｈ＿ｏｕｔ  調整開始閾値
Ｆｔｈ＿ｉｎ  範囲内閾値
Ｆ＿ｖａｌ  現在のバッファ量
【図１】
2018137692.tif 000003
【図２】
2018137692.tif 000004
【図３】
2018137692.tif 000005
【図４】
2018137692.tif 000006
【図５】
2018137692.tif 000007
【図６】
2018137692.tif 000008