(57)【要約】【課題】ＦＩＦＯ回路のメモリサイズを大きくすることなく、書込みクロックの位相変動に対して信号エラーを抑制する。【解決手段】伝送装置は、データ信号から再生される書込みクロックを利用して書込みポインタを生成する書込みポインタ制御部と、読出しクロックを生成する読出しクロック生成部と、読出しクロックを利用して読出しポインタを生成する読出しポインタ制御部と、書込みポインタにより指定されるビットにデータ信号が書き込まれ、読出しポインタにより指定されるビットからデータ信号が読み出されるメモリと、書込みポインタと読出しポインタとの間の差分に基づいてメモリの使用率を検出する検出部と、使用率が予め指定されている許容範囲外であったときに、読出しクロックの周波数を変化させる周波数制御信号を生成する周波数制御部と、を備える。【選択図】図２
2016130921.tif 000002
【特許請求の範囲】
【請求項１】
データ信号から再生される書込みクロックを利用して書込みポインタを生成する書込みポインタ制御部と、
読出しクロックを生成する読出しクロック生成部と、
前記読出しクロックを利用して読出しポインタを生成する読出しポインタ制御部と、
前記書込みポインタにより指定されるビットに前記データ信号が書き込まれ、前記読出しポインタにより指定されるビットから前記データ信号が読み出されるメモリと、
前記書込みポインタと前記読出しポインタとの間の差分に基づいて前記メモリの使用率を検出する検出部と、
前記使用率が予め指定されている許容範囲外であったときに、前記読出しクロックの周波数を変化させる周波数制御信号を生成する周波数制御部と、を備え、
前記読出しクロック生成部は、前記周波数制御信号に基づいて前記読出しクロックの周波数を制御する
ことを特徴とする伝送装置。
【請求項２】
前記周波数制御部は、前記使用率が前記許容範囲の上限値よりも高いときに前記読出しクロックの周波数を高くする第１の周波数制御信号を生成し、前記使用率が前記許容範囲の下限値よりも低いときに前記読出しクロックの周波数を低くする第２の周波数制御信号を生成する
ことを特徴とする請求項１に記載の伝送装置。
【請求項３】
前記読出しクロック生成部は、
与えられる指示信号に対応する周波数で発振して前記読出しクロックを生成する周波数可変発振器と、
前記読出しクロックを分周して分周クロックを生成する分周回路と、
前記分周クロックおよび基準クロックの位相差を表す前記指示信号を生成する位相比較回路と、を含み、
前記分周回路は、前記周波数制御部により前記第１の周波数制御信号が生成されたときは、前記分周クロックを遅らせるように分周動作をリセットし、前記周波数制御部により前記第２の周波数制御信号が生成されたときは、前記分周クロックを進めるように分周動作をリセットする
ことを特徴とする請求項２に記載の伝送装置。
【請求項４】
前記読出しクロック生成部は、
与えられる指示信号に対応する周波数で発振して前記読出しクロックを生成する周波数可変発振器と、
前記読出しクロックを分周して分周クロックを生成する分周回路と、
前記分周クロックおよび基準クロックの位相差を表す前記指示信号を生成する位相比較回路と、
前記周波数制御部により生成される周波数制御信号に応じて前記指示信号を調整する調整回路と、を含み、
前記調整回路は、前記周波数制御部により前記第１の周波数制御信号が生成されたときは、前記読出しクロックの周波数を高くするように前記指示信号を調整し、前記周波数制御部により前記第２の周波数制御信号が生成されたときは、前記読出しクロックの周波数を低くするように前記指示信号を調整する
ことを特徴とする請求項２に記載の伝送装置。
【請求項５】
前記検出部は、前記書込みポインタと前記読出しポインタとの間の差分、および前記メモリのサイズに基づいて前記メモリの使用率を検出する
ことを特徴とする請求項１〜４のいずれか１つに記載の伝送装置。
【請求項６】
複数のＦＩＦＯ（First-in First-out）メモリと、
読出しクロックを生成する読出しクロック生成部と、
各ＦＩＦＯメモリに書き込まれるデータ信号のクロックを利用して生成される書込みポインタ、及び前記読出しクロックを利用して生成される読出しポインタに基づいて、各ＦＩＦＯメモリの使用率をそれぞれ検出する検出部と、
前記複数のＦＩＦＯメモリの使用率の少なくとも１つが予め指定されている許容範囲外であったときに、前記読出しクロックの周波数を変化させる周波数制御信号を出力する周波数制御部と、を備え、
前記読出しクロック生成部は、前記周波数制御信号に基づいて前記読出しクロックの周波数を制御する
ことを特徴とする伝送装置。
【請求項７】
前記周波数制御部は、前記複数のＦＩＦＯメモリの使用率のなかで目標使用率からの差異が最も大きいＦＩＦＯメモリを特定し、特定したＦＩＦＯメモリの使用率が前記許容範囲の上限値よりも高いときに前記読出しクロックの周波数を高くする第１の周波数制御信号を生成し、特定したＦＩＦＯメモリの使用率が前記許容範囲の下限値よりも低いときに前記読出しクロックの周波数を低くする第２の周波数制御信号を生成する
ことを特徴とする請求項６に記載の伝送装置。
【請求項８】
データ信号のクロックを利用して生成される書込みポインタにより指定されるビットに前記データ信号が書き込まれ、読出しクロックを利用して生成される読出しポインタにより指定されるビットから前記データ信号が読み出されるメモリを含むＦＩＦＯ回路を制御する方法であって、
前記書込みポインタと前記読出しポインタとの間のポインタ差を検出し、
前記ポインタ差が前記メモリのサイズに基づいて決まる許容範囲外であったときに、前記読出しクロックの周波数を変化させる周波数制御信号を生成し、
前記周波数制御信号に基づいて前記読出しクロックの周波数を制御する
ことを特徴とするＦＩＦＯ回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送装置および伝送装置内で使用されるＦＩＦＯ回路の制御方法に係わる。
【背景技術】
【０００２】
光伝送技術の向上により、ネットワークの高速化が実現されている。ところが、電気信号の高速化には限界がある。このため、伝送装置（例えば、送受信器モジュール）内の回路においては、複数の電気信号を並列に処理する構成が採用されている。
【０００３】
電気領域において複数のデータ信号を並列に処理する場合、これら複数のデータ信号は互いに同期していることが好ましい。そして、複数のデータ信号の同期を確立する場合、例えば、データチャネル毎に設けられるＦＩＦＯ（First-in First-out）回路を利用してデータ信号のタイミングが制御される。
【０００４】
ＦＩＦＯ回路においては、書込みクロックに従って入力データ信号がメモリに書き込まれる。書込みクロックは、例えば、入力データ信号から再生される。メモリは、例えば、リングバッファである。そして、メモリに書き込まれたデータ信号は、読出しクロックに従って読み出される。書込みクロックの周波数および読出しクロックの周波数は、実質的に同じである。
【０００５】
複数のデータ信号を並列に処理する場合、各データ信号に対してそれぞれＦＩＦＯ回路が設けられる。そして、共通読出しクロックを使用して複数のＦＩＦＯ回路からデータ信号を読み出すことにより、複数のデータ信号の同期が確立される。
【０００６】
ただし、書込みクロックの周波数および読出しクロックの周波数は、互いに完全には一致していないことがある。そして、２つの周波数が一致していないときは、信号エラーが発生することがある。例えば、書込みクロックの周波数よりも読出しクロックの周波数の方が高い場合、バッファが「空」になり、データ信号を出力できない信号エラーが発生することがある。反対に、書込みクロックの周波数よりも読出しクロックの周波数の方が低い場合、バッファが「満杯」になり、データ信号が廃棄される信号エラーが発生することがある。
【０００７】
このため、リングバッファの「満杯（オーバフロー）」及び「空（アンダーフロー）」を検出する方法が提案されている（例えば、特許文献１、２）。また、特許文献３には関連する技術が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−１６０６５３号公報
【特許文献２】特開２００５−１４８９０４号公報
【特許文献３】特開２０００−１６５３６２号公報（特許第３４８８９０７号）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、ＦＩＦＯ回路を使用してデータ信号の同期を確立する構成においては、データ信号は、書込みクロックに従って対応するＦＩＦＯ回路のメモリに書き込まれる。ところが、書込みクロックの位相が変動すると、実質的に書込みクロックの周波数が変化することになるので、信号エラーに対するマージンが小さくなる。すなわち、書込みクロックの位相が変動したときは、信号エラーが発生するおそれがある。
【００１０】
この問題は、例えば、ＦＩＦＯ回路のメモリサイズを大きくすれば解決し得る。しかしながら、メモリサイズを大きくすると、ＦＩＦＯ回路（及び、ＦＩＦＯ回路が実装された送受信モジュール）のコストが高くなるので、好ましくない。
【００１１】
本発明の１つの側面に係わる目的は、ＦＩＦＯ回路のメモリサイズを大きくすることなく、書込みクロックの位相変動に対して信号エラーを抑制することである。
【課題を解決するための手段】
【００１２】
本発明の１つの態様の伝送装置は、データ信号から再生される書込みクロックを利用して書込みポインタを生成する書込みポインタ制御部と、読出しクロックを生成する読出しクロック生成部と、前記読出しクロックを利用して読出しポインタを生成する読出しポインタ制御部と、前記書込みポインタにより指定されるビットに前記データ信号が書き込まれ、前記読出しポインタにより指定されるビットから前記データ信号が読み出されるメモリと、前記書込みポインタと前記読出しポインタとの間の差分に基づいて前記メモリの使用率を検出する検出部と、前記使用率が予め指定されている許容範囲外であったときに、前記読出しクロックの周波数を変化させる周波数制御信号を生成する周波数制御部と、を備える。前記読出しクロック生成部は、前記周波数制御信号に基づいて前記読出しクロックの周波数を制御する。
【発明の効果】
【００１３】
上述の態様によれば、ＦＩＦＯ回路のメモリサイズを大きくすることなく、書込みクロックの位相変動に対して信号エラーを抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】ネットワークシステムの一例を示す図である。
【図２】第１の実施形態のＦＩＦＯ回路の一例を示す図である。
【図３】使用率の許容範囲について説明する図である。
【図４】ＰＬＬ回路の動作の一例を示す図である。
【図５】第１の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。
【図６】リングバッファが「満杯」になるおそれがあると判定されたときの動作を示すタイムチャートである。
【図７】リングバッファが「空」になるおそれがあると判定されたときの動作を示すタイムチャートである。
【図８】第１の実施形態のＦＩＦＯ回路の動作の一例を示す図である。
【図９】第１の実施形態による効果の一例を示す図である。
【図１０】第２の実施形態のＦＩＦＯ回路の一例を示す図である。
【図１１】第２の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。
【図１２】第２の実施形態のＦＩＦＯ回路の動作の一例を示す図である。
【図１３】同期化回路が使用される伝送装置の構成の一例を示す図である。
【図１４】第３の実施形態のＦＩＦＯ回路の一例を示す図である。
【図１５】第３の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。
【図１６】第３の実施形態による効果の一例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、本発明の１つの実施形態に係わる伝送装置が使用されるネットワークシステムの一例を示す。図１に示すネットワークシステムにおいては、伝送装置１から伝送装置２へ100Gbps信号が伝送される。100Gbps伝送は、この実施例では、25Gbps×4chのＷＤＭにより実現される。
【００１６】
伝送装置１は、ＭＡＣ回路１１、複数の再生回路（ＣＤＲ：Clock Data Recovery）１２、複数のＦＩＦＯ（First-in First-out）回路１３、ギアボックス１４、送信器（ＴＯＳＡ：Transmitter Optical Sub-Assembly）１５、発振器１６を備える。ＭＡＣ回路１１は、10Gbps×10chの信号を出力する。再生回路１２は、対応する入力信号からデータ信号およびクロックを再生する。ＦＩＦＯ回路１３は、バッファメモリを備える。このバッファメモリには、再生回路１２により再生されたクロックに従ってデータ信号が書き込まれる。そして、共通読出しクロックを利用して複数のＦＩＦＯ回路１３からデータ信号が読み出される。この構成により、複数のデータ信号の同期が確立される。
【００１７】
ギアボックス１４は、１０個のデータ信号を４個のデータ信号に変換する。すなわち、４個の25Gbpsデータ信号が生成される。なお、ＭＡＣ回路１１およびギアボックス１４は、発振器１６により生成されるクロックに基づいて動作する。送信器１５は、４個のデータ信号をそれぞれ光データ信号に変換する。そして、送信器１５は、４個の光データ信号を多重化してＷＤＭ信号を生成する。伝送装置１から送信されるＷＤＭ信号は、伝送装置２により受信される。
【００１８】
伝送装置２は、受信器（ＲＯＳＡ：receiver Optical Sub-Assembly）２１、ギアボックス２２、複数のＦＩＦＯ回路２３、ＭＡＣ回路２４を備える。受信器２１は、伝送装置１から送信されるＷＤＭ信号を波長ごとに分離して４個のデータ信号を再生する。ギアボックス２２は、４個のデータ信号を１０個のデータ信号に変換する。すなわち、１０個の10Gbpsデータ信号が再生される。そして、ＭＡＣ回路２４は、再生されたデータ信号を処理する。
【００１９】
＜第１の実施形態＞
図２は、本発明の第１の実施形態に係わるＦＩＦＯ回路の一例を示す。第１の実施形態のＦＩＦＯ回路１００は、ＦＩＦＯメモリ１１０、ポインタ差検出回路１２１、比較回路１２２、周波数制御回路１２３、ＰＬＬ回路１３０を備える。なお、図２に示すＦＩＦＯ回路１００は、例えば、図１に示す伝送装置１に実装されているＦＩＦＯ回路１３に相当する。よって、この実施例では、再生回路（ＣＤＲ）１２により再生されるデータ信号およびクロック信号がＦＩＦＯ回路１００に入力される。再生回路１２により再生されるクロックは、ＦＩＦＯ回路１００において、データ信号をメモリに書き込むために使用される。よって、以下の記載では、再生回路１２により再生されるクロックを「書込みクロック」を呼ぶことがある。
【００２０】
このように、ＦＩＦＯ回路１００は、たとえば、伝送装置の送信回路において使用される。ただし、ＦＩＦＯ回路１００は、伝送装置の受信回路において使用されるようにしてもよい。例えば、ＦＩＦＯ回路１００は、図１に示す伝送装置２に実装されているＦＩＦＯ回路２３として使用されるようにしてもよい。
【００２１】
ＦＩＦＯメモリ１１０は、リングバッファ１１１、書込みポインタ制御回路１１２、読出しポインタ制御回路１１３を含む。リングバッファ１１１は、データ信号を一時的に格納する。この実施例では、リングバッファ１１１は、１６ビットのデータを格納することができる。即ち、リングバッファ１１１は、メモリエレメントｂ１〜ｂ１６を有する。
【００２２】
書込みポインタ制御回路１１２は、書込みクロックを利用して書込みポインタを生成する。書込みポインタは、書込みクロックにより１ずつインクリメントされる。ただし、書込みポインタは、リングバッファ１１１のメモリエレメント数でサイクリックに書込みクロックをカウントする。すなわち、この実施例では、書込みポインタは、書込みクロックに従って「１」〜「１６」をサイクリックにカウントする。
【００２３】
読出しポインタ制御回路１１３は、読出しクロックを利用して読出しポインタを生成する。読出しポインタは、読出しクロックにより１ずつインクリメントされる。ただし、書込みポインタは、リングバッファ１１１のメモリエレメント数でサイクリックに読出しクロックをカウントする。すなわち、この実施例では、読出しポインタは、読出しクロックに従って「１」〜「１６」をサイクリックにカウントする。
【００２４】
上記構成のＦＩＦＯメモリ１１０において、書込みポインタにより指定されるビットにデータ信号が書き込まれ、読出しポインタにより指定されるビットからデータ信号が読み出される。このとき、書込みポインタは、１ずつインクリメントされる。よって、データ信号は、リングバッファ１１１のメモリエレメントｂ１から順番に書き込まれる。また、読出しポインタも、１ずつインクリメントされる。よって、リングバッファ１１１に格納されているデータ信号は、メモリエレメントｂ１から順番に読み出される。ここで、図２に示す例では、書込みポインタが「１４」であり、読出しポインタが「１１」である。すなわち、図２は、書込みポインタに従ってメモリエレメントｂ１４に新たなデータ信号が書き込まれ、読出しポインタに従ってメモリエレメントｂ１１からデータ信号が読み出された状態を示している。この結果、メモリエレメントｂ１２〜ｂ１４に有効なデータ信号が格納されている。
【００２５】
ポインタ差検出回路１２１は、書込みポインタと読出しポインタとの間の差分を検出する。このとき、ポインタ差検出回路１２１は、書込みポインタから読出しポインタを引算することにより差分を計算する。例えば、図２に示す例では、書込みポインタが「１４」であり、読出しポインタが「１１」である。よって、差分＝３が得られる。ただし、書込みポインタよりも読出しポインタの方が大きいときには、書込みポインタから読出しポインタを引算することにより得られる値に、リングバッファ１１１のメモリエレメント数を加算することにより「差分」が算出される。例えば、書込みポインタが「２」であり、読出しポインタが「１４」であるときは、「差分＝４（＝２−１４＋１６）」が得られる。なお、以下の記載では、書込みポインタと読出しポインタとの間の差分を「ポインタ差」と呼ぶことがある。
【００２６】
ポインタ差は、リングバッファ１１１に格納されている有効なデータ信号の量に対応する。図２に示す例では、ポインタ差は「３」である。また、３ビットのデータ信号がリングバッファ１１１のｂ１２〜ｂ１４に格納されている。なお、以下の記載では、リングバッファ１１１に格納されている有効なデータ信号の量を「有効データ長」と呼ぶことがある。
【００２７】
リングバッファ１１１のメモリサイズは既知である。したがって、ポインタ差は、実質的に、リングバッファ１１１の使用率を表す。リングバッファ１１１の使用率は、リングバッファ１１１のメモリサイズと有効データ長との比により表される。この実施例では、メモリサイズが「１６」であり、有効データ長が「３」なので、使用率は「３／１６」である。ここで、有効データ長は、ポインタ差に一意に対応する。したがって、ポインタ差検出回路１２１は、ポインタ差に基づいてリングバッファ１１１の使用率を検出することができる。また、リングバッファ１１１のポインタ差および使用率は、一意に対応する。
【００２８】
比較回路１２２は、ポインタ差（または、リングバッファ１１１の使用率）が予め指定されている許容範囲内であるか否かを判定する。ここで、この許容範囲は、予め指定された上限値および下限値により表される。よって、比較回路１２２は、ポインタ差と上限値とを比較し、また、ポインタ差と下限値とを比較する。以下、図３を参照しながら、ポインタ差（または、リングバッファ１１１の使用率）の許容範囲について説明する。
【００２９】
上述したように、書込みポインタは書込みクロックによりインクリメントされ、読出しポインタは読出しクロックによりインクリメントされる。よって、書込みクロックの周波数よりも読出しクロックの周波数の方が高いときは、図３（ａ）に示すように、ポインタ差が小さくなり、リングバッファ１１１の使用率が低下する。さらに、ポインタ差がゼロになると、リングバッファ１１１が「空」になり、データ信号を出力できない信号エラーが発生する。
【００３０】
これに対して、書込みクロックの周波数よりも読出しクロックの周波数の方が低いときは、図３（ｂ）に示すように、ポインタ差が大きくなり、リングバッファ１１１の使用率が上昇する。さらに、ポインタ差がリングバッファ１１１のメモリサイズにまで大きくなると、リングバッファ１１１が「満杯」になり、データ信号が廃棄される信号エラーが発生する
これらのことを考慮すると、リングバッファ１１１の使用率が５０パーセントであるときに、最も信号エラーが発生しにくいと推定される。すなわち、ポインタ差（或いは、有効データ長）の最適値は、リングバッファ１１１のメモリサイズの２分の１である。この実施例では、リングバッファ１１１のメモリサイズは「１６」である。したがって、ポインタ差（或いは、有効データ長）の最適値は「８」である。
【００３１】
ポインタ差の許容範囲は、ポインタ差の最適値に基づいて決定される。一例としては、許容範囲は、最適値±ｎで表される。ｎは、例えば、リングバッファ１１１のメモリサイズの４分の１よりも小さい整数である。一例としては、ｎは、リングバッファ１１１のメモリサイズの８分の１である。この場合、図２に示す実施例では、ｎ＝２なので、許容範囲は「６〜１０」である。即ち、ポインタ差の上限値および下限値は、それぞれ「１０」および「６」である。
【００３２】
周波数制御回路１２３は、比較回路１２２による比較結果に基づいて周波数制御信号を生成する。具体的には、ポインタ差が許容範囲の上限値よりも大きいときは、周波数制御回路１２３は、第１の周波数制御信号を生成する。第１の周波数制御信号は、読出しクロックの周波数を高くする指示を表す。一方、ポインタ差が許容範囲の下限値よりも小さいときは、周波数制御回路１２３は、第２の周波数制御信号を生成する。第２の周波数制御信号は、読出しクロックの周波数を低くする指示を表す。
【００３３】
なお、ポインタ差は、上述したように、リングバッファ１１１の使用率に一意に対応する。よって、周波数制御回路１２３の動作は、以下のように記載することもできる。すなわち、リングバッファ１１１の使用率が所定の許容範囲の上限値よりも高いときは、周波数制御回路１２３は、第１の周波数制御信号を生成する。一方、リングバッファ１１１の使用率が所定の許容範囲の上限値よりも低いときは、周波数制御回路１２３は、第２の周波数制御信号を生成する。
【００３４】
周波数制御回路１２３により生成される周波数制御信号は、ＰＬＬ回路１３０に与えられる。ＰＬＬ回路１３０は、ＶＣＯ（Voltage Controlled Oscillator）１３１、分周回路１３２、位相比較回路１３３を有する。
【００３５】
ＶＣＯ１３１は、与えられる指示信号に対応する周波数で発振して読出しクロックを生成する。指示信号は、位相比較回路１３３により生成される。分周回路１３２は、ＶＣＯ１３１により生成される読出しクロックを分周して分周クロックを生成する。位相比較回路１３３は、分周回路１３２により生成される分周クロックと基準クロックとの間の位相差を表す指示信号を生成する。指示信号は、ＶＣＯ１３１の発振周波数を制御する電圧信号である。なお、分周回路１３２は、周波数制御回路１２３から周波数制御信号が与えられたときに、分周動作をリセットする機能を備える。分周動作のリセットについては、後で詳しく説明する。
【００３６】
ＰＬＬ回路１３０は、分周クロックと基準クロックとの間の位相差がゼロになるように動作する。したがって、ＰＬＬ回路１３０は、基準クロックに同期した読出しクロックを生成する。
【００３７】
図４は、ＰＬＬ回路１３０の動作の一例を示す。この実施例では、分周回路１３２は、ＶＣＯ１３１の出力信号（即ち、読出しクロック）を８分周する。なお、図４では、分周動作の説明のために、読出しクロックに対してサイクル番号１〜８が付与されている。
【００３８】
分周回路１３２は、８サイクルの読出しクロックをカウントする期間に、１サイクルの分周クロックを生成する。図４に示す例では、読出しクロックの第１サイクルに同期して分周クロックが立ち上がり、読出しクロックの第５サイクルに同期して分周クロックが立ち下がるように、分周クロックが生成されている。そして、ＰＬＬ回路１３０は、分周クロックと基準クロックとの間の位相差がゼロになるように動作する。この結果、ＰＬＬ回路１３０は、基準クロックに同期した読出しクロックを生成する。
【００３９】
ＰＬＬ回路１３０は、ＶＣＯ１３１の代わりに他の周波数可変発信器を含む構成でもよい。例えば、ＰＬＬ回路１３０は、ＮＣＯ（Numerically Controlled Oscillator）を含む構成であってもよい。この場合、位相比較回路１３３により生成される指示信号は、分周クロックと基準クロックとの間の位相差を表すデジタルコードである。そして、ＮＣＯは、このデジタルコードに対応する周波数で発振して読出しクロックを出力する。
【００４０】
また、ＰＬＬ回路１３０は、位相比較回路１３３とＶＣＯ１３１との間にループフィルタ１３４を有する。ループフィルタ１３４は、位相比較回路１３３により生成される指示信号を平均化する。すなわち、ループフィルタ１３４は、指示信号を平均化することにより、ＶＣＯ１３１の発振周波数（すなわち、読出しクロックの周波数）の変化を緩やかにすることができる。
【００４１】
上記構成のＦＩＦＯ回路１００にデータ信号が入力されると、そのデータ信号は、書込みポインタに従ってリングバッファ１１１に書き込まれる。また、リングバッファ１１１に書き込まれたデータ信号は、読出しポインタに従って読み出される。リングバッファ１１１から読み出されたデータ信号は、信号処理回路１４０により処理される。
【００４２】
ここで、ＦＩＦＯ回路１００は、図１に示す伝送装置１に実装されているものとする。この場合、発振器１６により生成される基準クロックに同期しデータ信号が生成され、そのデータ信号から書込みクロックが再生される。一方、読出しクロックは、図２に示すように、ＰＬＬ回路１３０において基準クロックに同期して生成される。したがって、書込みクロックおよび読出しクロックは、互いに同期している。すなわち、書込みクロックおよび読出しクロックの平均周波数は、互いに実質的に同じである。
【００４３】
書込みクロックおよび読出しクロックの周波数が同じである場合、書込みポインタと読出しポインタとの間の差分は一定である。すなわち、ＦＩＦＯ回路の初期動作が適切に設定されていれば、リングバッファ１１１において「空」または「満杯」が発生することはない。
【００４４】
ところが、データ信号の位相は、時間に対して変動することがある。そして、データ信号の位相が変動すると、そのデータ信号から再生される書込みクロックの周波数が変動する。そうすると、書込みクロックおよび読出しクロックの周波数が互いに異なることとなり、書込みポインタと読出しポインタとの間の差分が変化してしまう。この場合、リングバッファ１１１において「空」または「満杯」が発生し得る。そこで、第１の実施形態のＦＩＦＯ回路１００は、書込みポインタと読出しポインタとの間の差分をモニタし、その差分に応じて読出しクロックの周波数を制御する機能を備える。
【００４５】
図５は、第１の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。このフローチャートの処理は、ＦＩＦＯ回路１００が動作しているときは、繰り返し実行される。
【００４６】
Ｓ１において、ポインタ差検出回路１２１は、リングバッファ１１１の書込みポインタと読出しポインタとの間の差分を検出する。以下の記載では、この差分を「ポインタ差」と呼ぶことがある。Ｓ２において、比較回路１２２は、ポインタ差が許容範囲内であるか判定する。許容範囲は、たとえば、ポインタ差の最適値±ｎである。ポインタ差の最適値は、例えば、リングバッファ１１１のメモリサイズの２分の１である。ポインタ差が許容範囲内であれば、制御動作はＳ１に戻る。一方、ポインタ差が許容範囲外であれば、制御動作はＳ３へ進む。
【００４７】
Ｓ３〜Ｓ４において、比較回路１２２は、リングバッファ１１１が「満杯」になるまでのマージンＭｆ、およびリングバッファ１１１が「空」になるまでのマージンＭｅを求める。マージンＭｆは、リングバッファ１１１のメモリサイズとポインタ差との間の差分に相当する。また、マージンＭｅは、ポインタ差と「ゼロ」の間の差分（すなわち、ポインタ差）に相当する。そして、マージンＭｆがマージンＭｅよりも小さいときは、リングバッファ１１１が「満杯」になるおそれがあると判定され、制御動作はＳ５へ進む。一方、マージンＭｆがマージンＭｅ以上であるときは、リングバッファ１１１が「空」になるおそれがあると判定され、制御動作はＳ８へ進む。
【００４８】
なお、Ｓ３〜Ｓ４の処理は、ポインタ差が許容範囲内であるかを判定することで実現してもよい。この場合、ポインタ差が許容範囲の上限値よりも大きければ、リングバッファ１１１が「満杯」になるおそれがあると判定され、制御動作はＳ５へ進む。一方、ポインタ差が許容範囲の下限値よりも小さければ、リングバッファ１１１が「空」になるおそれがあると判定され、制御動作はＳ８へ進む。
【００４９】
リングバッファ１１１が「満杯」になるおそれがあると判定されたときは、Ｓ５〜Ｓ７が実行される。すなわち、Ｓ５において、周波数制御回路１２３は、読出しクロックの周波数を高くする指示を表す第１の周波数制御信号を生成する。そうすると、ＰＬＬ回路１３０において、分周回路１３２は、分周クロックの位相が遅れるタイミングで分周動作をリセットする。この結果、分周クロックの位相が遅れることになる。Ｓ６において、ＰＬＬ回路１３０は、分周クロックと基準クロックとの間の位相差がゼロになるように動作する。すなわち、Ｓ５において遅延させられた分周クロックは、基準クロックの位相に追いつくように制御される。このとき、分周クロックの位相を進める制御が行われるので、実質的に、分周クロックの周波数が高くなる。したがって、Ｓ７において、読出しクロックの周波数も高くなる。
【００５０】
読出しクロックの周波数が高くなると、リングバッファ１１１からデータ信号を読み出す速度が速くなる。この結果、リングバッファ１１１の有効データ長が短くなり、リングバッファ１１１が「満杯」になる可能性が抑制される。
【００５１】
リングバッファ１１１が「空」になるおそれがあると判定されたときは、Ｓ８〜Ｓ１０が実行される。すなわち、Ｓ８において、周波数制御回路１２３は、読出しクロックの周波数を低くする指示を表す第２の周波数制御信号を生成する。そうすると、ＰＬＬ回路１３０において、分周回路１３２は、分周クロックの位相が進むタイミングで分周動作をリセットする。この結果、分周クロックの位相が進むことになる。Ｓ９において、ＰＬＬ回路１３０は、分周クロックと基準クロックとの間の位相差がゼロになるように動作する。すなわち、Ｓ８において進められた分周クロックは、基準クロックの位相に一致するように制御される。このとき、分周クロックの位相を遅延させる制御が行われるので、実質的に、分周クロックの周波数が低くなる。したがって、Ｓ１０において、読出しクロックの周波数も低くなる。
【００５２】
読出しクロックの周波数が低くなると、リングバッファ１１１からデータ信号を読み出す速度が遅くなる。この結果、リングバッファ１１１の有効データ長が長くなり、リングバッファ１１１が「空」になる可能性が抑制される。
【００５３】
Ｓ１１〜Ｓ１２において、ポインタ差検出回路１２１はリングバッファ１１１のポインタ差を検出し、比較回路１２２はそのポインタ差が最適値に一致しているか判定する。ポインタ差が最適値に一致していれば、制御動作はＳ１に戻る。一方、ポインタ差が最適値に一致していないときは、制御動作はＳ３へ進む。すなわち、ポインタ差が最適値に一致するまで、Ｓ３〜Ｓ１１の処理が繰り返し実行される。この結果、リングバッファ１１１は、「満杯」および「空」が発生しにくい状態に制御される。
【００５４】
図６は、リングバッファ１１１が「満杯」になるおそれがあると判定されたときの動作を示すタイムチャートである。なお、時刻Ｔ１以前は、分周クロックの位相は、基準クロックの位相に一致している。読出しクロックは、分周回路１３２により８分周される。すなわち、８サイクルの読出しクロックに対して１サイクルの分周クロックが生成される。以下の記載では、各分周クロックに対応する８サイクルの読出しクロックをＣＫ１〜ＣＫ８と呼ぶことがある。
【００５５】
リングバッファ１１１が「満杯」になるおそれがあると判定されると、上述のように、読出しクロックの周波数を高くする指示を表す第１の周波数制御信号がＰＬＬ回路１３０に与えられる。そうすると、分周回路１３２は、時刻Ｔ１において、分周回路１３２の分周動作をリセットする。分周動作のリセットは、例えば、分周回路１３２自身がリセットパルスを生成することにより実現される。この場合、リセットパルスは、分周クロックの位相を遅らせるタイミングで生成される。具体的には、新たな分周クロックが開始された直後にリセットパルスが生成される。一例としては、ＣＫ１においてリセットパルスが生成される。
【００５６】
上記タイミングで分周動作がリセットされると、分周回路１３２は、その直後に新たな分周クロックのサイクルを開始する。この結果、分周クロックは、基準クロックに対して遅延することになる。図６に示す例では、分周クロックは、基準クロックに対してΔＰだけ遅延している。
【００５７】
この後、ＰＬＬ回路１３０は、分周クロックの位相が基準クロックの位相に一致するように動作する。よって、位相比較回路１３３は、分周クロックの位相を進めるための指示信号を生成する。そうすると、ＶＣＯ１３１は、この指示信号に応じて発振周波数を変化させる。なお、分周クロックの位相を進めるためには、ＶＣＯ１３１の発振周波数を高くする必要がある。即ち、位相比較回路１３３は、分周クロックの位相を進めるために、ＶＣＯ１３１の周波数を高くする指示信号を生成する。この結果、ＶＣＯ１３１の発振周波数が高くなり、分周クロックの位相が進む。図６に示す例では、時刻Ｔ２において、分周クロックの位相が基準クロックの位相に一致している。
【００５８】
このように、時刻Ｔ１〜Ｔ２において、ＶＣＯ１３１の発振周波数は、基準クロックの周波数の８倍よりも高くなる。そして、時刻Ｔ２以降は、ＶＣＯ１３１の発振周波数は、基準クロックの周波数の８倍に保持される。
【００５９】
図７は、リングバッファ１１１が「空」になるおそれがあると判定されたときの動作を示すタイムチャートである。なお、時刻Ｔ３以前は、分周クロックの位相は、基準クロックの位相に一致している。
【００６０】
リングバッファ１１１が「空」になるおそれがあると判定されると、上述のように、読出しクロックの周波数を低くする指示を表す第２の周波数制御信号がＰＬＬ回路１３０に与えられる。そうすると、分周回路１３２は、時刻Ｔ３において、分周回路１３２の分周動作をリセットするためのリセットパルスを生成する。このリセットパルスは、分周クロックの位相を進めるタイミングで生成される。具体的には、分周クロックが終了する直前にリセットパルスが生成される。一例としては、ＣＫ８においてリセットパルスが生成される。
【００６１】
上記タイミングで分周動作がリセットされると、分周回路１３２は、その直後に新たな分周クロックのサイクルを開始する。この結果、分周クロックは、基準クロックに対して進むことになる。図７に示す例では、分周クロックは、基準クロックに対してΔＰだけ進んでいる。
【００６２】
この後、ＰＬＬ回路１３０は、分周クロックの位相が基準クロックの位相に一致するように動作する。よって、位相比較回路１３３は、分周クロックの位相を遅らせるための指示信号を生成する。そうすると、ＶＣＯ１３１は、この指示信号に応じて発振周波数を変化させる。なお、分周クロックの位相を遅らせるためには、ＶＣＯ１３１の発振周波数を低くする必要がある。即ち、位相比較回路１３３は、分周クロックの位相を遅らせるために、ＶＣＯ１３１の周波数を低くする指示信号を生成する。この結果、ＶＣＯ１３１の発振周波数が低くなり、分周クロックの位相が遅延する。図７に示す例では、時刻Ｔ４において、分周クロックの位相が基準クロックの位相に一致している。
【００６３】
このように、時刻Ｔ３〜Ｔ４において、ＶＣＯ１３１の発振周波数は、基準クロックの周波数の８倍よりも低くなる。そして、時刻Ｔ４以降は、ＶＣＯ１３１の発振周波数は、基準クロックの周波数の８倍に保持される。
【００６４】
図８は、第１の実施形態のＦＩＦＯ回路１００の動作の一例を示す。この実施例では、時刻Ｔ１以前は、ポインタ差は８である。すなわち、ポインタ差は、最適値に制御されている。
【００６５】
時刻Ｔ１〜Ｔ２において、入力データ信号の位相が変動し、書込みクロックの周波数が僅かに高くなっている。この結果、リングバッファ１１１からデータ信号を読み出す速度よりも、リングバッファ１１１へデータ信号を書き込む速度の方が速くなり、ポインタ差が大きくなっていく。
【００６６】
時刻Ｔ２において、ポインタ差が許容範囲の上限を超えてしまい、「満杯」に対するマージンＭｆが閾値よりも小さくなる。そうすると、読出しクロックの周波数を高くする指示を表す第１の周波数制御信号が生成され、ＰＬＬ回路１３０において、分周クロックを遅らせるタイミングで分周動作がリセットされる。ＰＬＬ回路１３０は、遅延させられた分周クロックを基準クロックに一致させるように、分周クロックの位相を進める。この結果、図６を参照しながら説明したように、ＶＣＯ１３１の発振周波数（即ち、読出しクロックの周波数）が高くなり、ポインタ差が減少する。
【００６７】
以降、ポインタ差が最適値に戻るまで、上述の動作が繰り返し実行される。図８に示す例では、入力データ信号の位相変動に起因して、書込みクロックの位相が４ＵＩだけ変動している。よって、時刻Ｔ２〜Ｔ３において、分周動作をリセットする動作が４回実行され、その結果、ポインタ差が最適値に調整されている。なお、ＵＩは、リングバッファ１１１のメモリサイズに対する「１ビット」の割合に相当する。
【００６８】
このように、第１の実施形態のＦＩＦＯ回路１００においては、ポインタ差が許容範囲から外れると、そのポインタ差を最適値に調整するように、読出しクロックの周波数が制御される。ここで、読出しクロックの周波数が変動すると、出力データ信号の周波数が変動することになる。そして、データ信号の周波数の変動が大きくなると、ビットエラーが発生し得る。このため、出力データ信号の周波数は、許容周波数範囲内に制御されることが要求される。
【００６９】
そこで、ＰＬＬ回路１３０は、分周動作のリセットに起因する読出しクロックの周波数変動を許容周波数範囲内に維持する機能を有する。ＰＬＬ回路１３０は、位相比較回路１３３により生成される指示信号をフィルタリングするループフィルタ１３４を備える。そして、分周動作をリセットすることに起因する書込みクロックの周波数変動が予め指定されている許容周波数範囲内となるように、ループフィルタ１３４のフィルタ係数が決定される。この構成により、出力データ信号の周波数は、許容周波数範囲内に制御される。
【００７０】
図９は、第１の実施形態による効果の一例を示す。この例では、リングバッファ１１１のポインタ差が「１１」であり、メモリ使用率「１１／１６」が検出される。なお、メモリ使用率は、ポインタ差とメモリサイズの比により計算される。また、メモリ使用率の最適値は、「８／１６」である。そして、検出されたメモリ使用率「１１／１６」は、予め指定されている許容範囲から外れているものとする。
【００７１】
この場合、ＦＩＦＯ回路１００は、図６または図８に示す制御動作を実行する。この結果、書込みクロックの周波数に対して読出しクロックの周波数が高くなり、周波数差Δｆが生じる。Δｆは、書込みクロックの周波数と読出しクロックの周波数との間の差分を表す。そうすると、ポインタ差は徐々に小さくなってゆく。すなわち、メモリ使用率は低下してゆく。そして、メモリ使用率が最適値に一致するまで、読出しクロックの周波数が高く制御される状態が継続する。図９に示す例では、メモリ使用率が許容範囲から外れた状態が検出されたときから、メモリ使用率が最適値に一致するまでの期間に、読出しクロックは３ビットだけ進んでいる。なお、図９に示す効果は、後述する第２の実施形態にも同様に適用される。
【００７２】
上述のように、ＦＩＦＯ回路１００は、バッファメモリ１１１のポインタ差または使用率に基づいて、読出しクロックの周波数を制御する機能を有している。ここで、ポインタ差は、バッファメモリ１１１の有効データ長に相当する。すなわち、ポインタ差は、バッファメモリ１１１の使用率に相当する。したがって、バッファメモリ１１１のポインタ差に基づいて読出しクロックの周波数を制御する動作と、バッファメモリ１１１の使用率に基づいて読出しクロックの周波数を制御する動作とは、実質的には等価である。
【００７３】
＜第２の実施形態＞
図１０は、本発明の第２の実施形態に係わるＦＩＦＯ回路の一例を示す。第２の実施形態のＦＩＦＯ回路２００は、図２に示す第１の実施形態のＦＩＦＯ回路１００と類似する構成を有する。ただし、第１の実施形態と第２の実施形態とでは、読出しクロックを生成する回路（この例では、ＰＬＬ回路１３０）の構成および動作が異なる。
【００７４】
第２の実施形態のＰＬＬ回路１３０は、図１０に示すように、ＶＣＯ１３１、分周回路１３２、位相比較回路１３３および加算回路１３５を有する。ＶＣＯ１３１、分周回路１３２、位相比較回路１３３は、第１および第２の実施形態において同じであってもよい。ただし、第２の実施形態において、分周回路１３２は、第１の実施形態のリセット機能を有している必要はない。また、位相比較回路１３３により生成される指示信号は、ＶＣＯ１３１の発振周波数を制御する制御電圧信号である。なお、この実施例では、印加される制御電圧が高いほど、ＶＣＯ１３１の発振周波数が高くなるものとする。
【００７５】
周波数制御回路１２３は、第１の実施形態と同様に、リングバッファ１１１のポインタ差（または、リングバッファ１１１の使用率）に基づいて周波数制御信号を生成する。ただし、第２の実施形態では、ポインタ差が許容範囲の上限値よりも大きいときは、周波数制御回路１２３は、第１の周波数制御信号として正電圧制御パルスを生成する。また、ポインタ差が許容範囲の下限値よりも小さいときは、周波数制御回路１２３は、第２の周波数制御信号として負電圧制御パルスを生成する。
【００７６】
加算回路１３５は、周波数制御回路１２３により生成される周波数制御信号に応じて、制御電圧信号を調整する。具体的には、加算回路１３５は、周波数制御回路１２３により生成される制御パルスを制御電圧信号に重畳する。例えば、リングバッファ１１１のポインタ差が許容範囲の上限値よりも大きいときは、周波数制御回路１２３により正電圧制御パルスが生成される。この場合、加算回路１３５により正電圧制御パルスが制御電圧信号に重畳され、正電圧制御パルスの分だけ制御電圧が高くなる。この結果、ＶＣＯ１３１の発振周波数（すなわち、読出しクロックの周波数）が一時的に高くなる。一方、リングバッファ１１１のポインタ差が許容範囲の下限値よりも小さいときは、周波数制御回路１２３により負電圧制御パルスが生成される。この場合、加算回路１３５により負電圧制御パルスが制御電圧信号に重畳され、負電圧制御パルスの分だけ制御電圧が低くなる。この結果、ＶＣＯ１３１の発振周波数が一時的に低くなる。
【００７７】
図１１は、第２の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。第２の実施形態のＦＩＦＯ回路の制御方法は、図５に示す第２の実施形態のＦＩＦＯ回路の制御方法と類意している。ただし、第２の実施形態では、マージンＭｆがマージンＭｅよりも小さいとき（すなわち、リングバッファ１１１が「満杯」になるおそれがあると判定されたとき）、図５に示すＳ５〜Ｓ６の代わりにＳ２１の処理が実行される。また、マージンＭｆがマージンＭｅ以上であるとき（すなわち、リングバッファ１１１が「空」になるおそれがあると判定されたとき）、図５に示すＳ８〜Ｓ９の代わりにＳ２２の処理が実行される。
【００７８】
リングバッファ１１１が「満杯」になるおそれがあると判定されたときは、Ｓ２１において、周波数制御回路１２３は、正電圧制御パルスを生成する。そうすると、ＰＬＬ回路１３０において、加算回路１３５は、この正電圧制御パルスを制御電圧信号に重畳する。よって、ＶＣＯ１３１に印加される制御電圧が一時的に高くなる。この結果、Ｓ７において、ＶＣＯ１３１の発振周波数（すなわち、読出しクロックの周波数）が高くなる。
【００７９】
リングバッファ１１１が「空」になるおそれがあると判定されたときは、Ｓ２２において、周波数制御回路１２３は、負電圧制御パルスを生成する。そうすると、ＰＬＬ回路１３０において、加算回路１３５は、この負電圧制御パルスを制御電圧信号に重畳する。よって、ＶＣＯ１３１に印加される制御電圧が一時的に低くなる。この結果、Ｓ１０において、ＶＣＯ１３１の発振周波数（すなわち、読出しクロックの周波数）が低くなる。
【００８０】
この後、Ｓ１１〜Ｓ１２において、ポインタ差検出回路１２１は、リングバッファ１１１のポインタ差が最適値に一致しているか判定する。そして、ポインタ差が最適値に一致していれば、制御動作はＳ１に戻る。一方、ポインタ差が最適値に一致していなければ、制御動作はＳ３へ進む。すなわち、ポインタ差が最適値に一致するまで、図１１に示すＳ３〜Ｓ１１の処理が繰り返し実行され、この結果、リングバッファ１１１は、「満杯」および「空」が発生しにくい状態に制御される。
【００８１】
図１２は、第２の実施形態のＦＩＦＯ回路２００の動作の一例を示す。なお、図８に示す実施例と同様に、時刻Ｔ１以前は、ポインタ差は最適値に制御されている。また、時刻Ｔ１〜Ｔ２において、入力データ信号の位相が変動し、リングバッファ１１１のポインタ差が徐々に大きくなっている。そして、時刻Ｔ２において、ポインタ差が許容範囲の上限値を超えてしまい、「満杯」に対するマージンＭｆが閾値よりも小さくなる。
【００８２】
ポインタ差が許容範囲の上限値を超えると、周波数制御回路１２３により正電圧制御パルスが生成され、ＰＬＬ回路１３０においてＶＣＯ１３１の制御電圧信号にその正電圧制御パルスが重畳される。すなわち、ＶＣＯ１３１の制御電圧がΔＶだけ高くなり、ＶＣＯ１３１の発振周波数（即ち、読出しクロックの周波数）がΔｆだけ高くなる。この結果、リングバッファ１１１のポインタ差が減少する。以降、ポインタ差が最適値に戻るまで、上述の動作が繰り返し実行される。
【００８３】
なお、この実施例では、ＶＣＯ１３１の発振周波数は、ＶＣＯ１３１に印加される制御電圧に一意に依存する。よって、制御電圧信号に制御パルスを重畳することに起因するＶＣＯ１３１の周波数の変動量Δｆは、制御パルス（正電圧制御パルスまたは負電圧制御パルス）の高さΔＶに依存する。ここで、読出しクロックの周波数変動は、所定の許容周波数範囲内に維持されることが要求される。よって、制御パルスの高さΔＶは、読出しクロックの周波数変動Δｆが所定の許容周波数範囲内に維持されるように決定される。
【００８４】
また、第１の実施形態と同様に、ＰＬＬ回路１３０は、ＶＣＯ１３１の代わりに、他の構成の周波数可変発信器を含む構成でもよい。例えば、ＶＣＯ１３１の代わりにＮＣＯが実装される場合、周波数制御回路１２３は、周波数の変化量を表す周波数制御データを生成する。また、加算回路１３５は、位相比較回路１３３により生成されるデジタルコードに対して、その周波数制御信号を加算する。そして、ＮＣＯは、このデジタルコードに対応する周波数で発振して読出しクロックを出力する。
【００８５】
＜第３の実施形態＞
図２〜図１２に示す実施例は、１つのＦＩＦＯ回路からデータ信号を読み出す構成に係わる。これに対して、以下に記載する実施例は、複数のデータ信号の同期を確立するために、複数のＦＩＦＯ回路から共通クロックでデータ信号を読み出す構成に係わる。
【００８６】
図１３は、本発明の実施形態に係わる同期化回路が使用される伝送装置の構成の一例を示す。この伝送装置５００は、光送受信モジュール５１０を含む。光送受信モジュール５１０は、複数のデータ信号からＷＤＭ信号を生成して送信する送信器回路、および受信したＷＤＭ信号から複数のデータ信号を再生する受信器回路を備える。
【００８７】
送信器回路に設けられる同期化回路５１１は、複数のＦＩＦＯメモリから並列に送信データ信号を読み出す制御を行う。また、受信器回路に設けられる同期化回路５１２は、複数のＦＩＦＯメモリから並列に受信データ信号を読み出す制御を行う。
【００８８】
図１４は、本発明の第３の実施形態に係わるＦＩＦＯ回路の一例を示す。第３の実施形態のＦＩＦＯ回路３００は、複数のＦＩＦＯメモリ１１０、複数のポインタ差検出回路１２１、比較回路１２２ａ、周波数制御回路１２３、ＰＬＬ回路１３０を備える。なお、図１４では省略されているが、各ＦＩＦＯメモリ１１０のリングバッファ１１１に対してそれぞれ書込みポインタ制御回路が設けられている。各書込みポインタ制御回路は、対応する再生回路（ＣＤＲ）１２により再生される書込みクロックを利用して書込みポインタを生成する。また、複数のＦＩＦＯメモリ１１０により共用される読出しポインタ制御回路が設けられている。この読出しポインタ制御回路は、ＰＬＬ回路１３０により生成される読出しクロックを利用して読出しポインタを生成する。
【００８９】
ＦＩＦＯ回路３００は、例えば、図１３に示す伝送装置５００において使用される。伝送装置５００の送信回路内でＦＩＦＯ回路３００が使用される場合、複数のポインタ差検出回路１２１、比較回路１２２ａ、周波数制御回路１２３、ＰＬＬ回路１３０は、同期化回路５１１を構成する。また、伝送装置５００の受信回路内でＦＩＦＯ回路３００が使用される場合、複数のポインタ差検出回路１２１、比較回路１２２ａ、周波数制御回路１２３、ＰＬＬ回路１３０は、同期化回路５１２を構成する。
【００９０】
比較回路１２２ａは、各ＦＩＦＯメモリ１１０において検出されるポインタ差を表すポインタ差データを収集する。そして、比較回路１２２ａおよび周波数制御回路１２３は、収集したポインタ差データに基づいて、読出しクロックの周波数を制御する。
【００９１】
図１５は、第３の実施形態のＦＩＦＯ回路の制御方法を示すフローチャートである。このフローチャートの処理は、ＦＩＦＯ回路３００が動作しているときは、繰り返し実行される。
【００９２】
Ｓ３１において、各チャネルのポインタ差検出回路１２１は、書込みポインタと読出しポインタとの間の差分を検出する。以下の記載では、この差分を「ポインタ差」と呼ぶことがある。Ｓ３２において、比較回路１２２ａは、すべてのチャネルのポインタ差が許容範囲内であるか判定する。許容範囲は、第１または第２の実施形態と同様である。すべてのチャネルのポインタ差が許容範囲内であれば、制御動作はＳ３１に戻る。一方、１または複数のチャネルのポインタ差が許容範囲外であれば、制御動作はＳ３３へ進む。
【００９３】
Ｓ３３〜Ｓ３４において、比較回路１２２ａは、各チャネルについて、リングバッファ１１１が「満杯」になるまでのマージンＭｆおよびリングバッファ１１１が「空」になるまでのマージンＭｅを求める。続いて、比較回路１２２ａは、全チャネルのマージンＭｆのなかで最小のマージンＭｉｎ＿Ｍｆを選択し、全チャネルのマージンＭｅのなかで最小のマージンＭｉｎ＿Ｍｅを選択する。そして、最小マージンＭｉｎ＿Ｍｆが最小マージンＭｉｎ＿Ｍｅよりも小さいときは、リングバッファ１１１が「満杯」になるおそれがあるチャネルが存在すると判定され、制御動作はＳ５へ進む。一方、最小マージンＭｉｎ＿Ｍｆが最小マージンＭｉｎ＿Ｍｅ以上であるときは、リングバッファ１１１が「空」になるおそれがあるチャネルが存在すると判定され、制御動作はＳ８へ進む。
【００９４】
Ｓ５〜Ｓ１０の処理は、第１の実施形態と実質的に同じである。すなわち、リングバッファ１１１が「満杯」になるおそれがあるチャネルが存在すると判定されたときは、読出しクロックの周波数を高くするようにＰＬＬ回路１３０が制御される。一方、リングバッファ１１１が「空」になるおそれがあるチャネルが存在すると判定されたときは、読出しクロックの周波数を低くするようにＰＬＬ回路１３０が制御される。なお、図１５に示す例では、第１の実施形態のＳ５〜Ｓ１０が実行されているが、第２の実施形態のＳ７、Ｓ８、Ｓ２１、Ｓ２２が実行されるようにしてもよい。
【００９５】
Ｓ３５〜Ｓ３６において、ポインタ差検出回路１２１は、各チャネルのポインタ差を検出する。比較回路１２２ａは、全チャネルのなかで最も大きいポインタ差および最も小さいポインタ差を検出する。また、比較回路１２２ａは、最大ポインタ差と最小ポインタ差との平均を計算する。そして、比較回路１２２ａは、この平均ポインタ差が最適値に一致しているか判定する。平均ポインタ差が最適値に一致していれば、制御動作はＳ３１に戻る。一方、平均ポインタ差が最適値に一致していなければ、制御動作はＳ３３へ進む。すなわち、平均ポインタ差が最適値に一致するまで、Ｓ３３〜Ｓ３５の処理が繰り返し実行される。この結果、各ＦＩＦＯメモリ１１０のリングバッファ１１１は、「満杯」および「空」が発生しにくい状態に制御される。
【００９６】
図１６は、第３の実施形態による効果の一例を示す。この例では、伝送装置は、複数のチャネルＣＨ１〜ＣＨｎを収容する。そして、図１６（ａ）に示すように、チャネルＣＨ１のポインタ差が最小であり、チャネルＣＨ２のポインタ差が最大である。また、リングバッファ１１１のメモリサイズが１６ビットなので、ポインタ差の最適値は８である。そして、チャネルＣＨ１のポインタ差「４」は、許容範囲外であるものとする。
【００９７】
この例では、チャネルＣＨ２のマージン（Ｍｉｎ＿Ｍｆ＝８）よりも、チャネルＣＨ１のマージン（Ｍｉｎ＿Ｍｅ＝４）の方が小さい。この場合、周波数制御回路１２３は、読出しクロックの周波数を低くするようにＰＬＬ回路１３０を制御する。このとき、比較回路１２２ａおよび周波数制御回路１２３は、チャネルＣＨ１のポインタ差とチャネルＣＨ２のポインタ差との平均が最適値に一致するように、ＰＬＬ回路１３０を制御する。すなわち、比較回路１２２ａおよび周波数制御回路１２３は、図１６（ｂ）に示す状態が得られるまでＰＬＬ回路１３０を制御する。この結果、チャネルＣＨ１のマージンは「６」に調整され、チャネルＣＨ２のマージンも「６」になる。すなわち、図１６（ａ）に示す状態と比較すると、最小のマージンが「４」から「６」に増大するので、各チャネルのリングバッファ１１１は、「満杯」および「空」が発生しにくくなる。
【００９８】
なお、第３の実施形態では、複数のチャネルに対して使用される共通読出しクロックの周波数が制御されるので、すべてのチャネルのリングバッファ１１１のポインタ差が同じ量だけ調整される。この例では、図１６（ａ）に示す状態から図１６（ｂ）に示す状態へ遷移するときに、すべてのチャネルのリングバッファ１１１のポインタ差が２だけ増加している。
【符号の説明】
【００９９】
１、２、５００  伝送装置
１００、２００、３００  ＦＩＦＯ回路
１１０  ＦＩＦＯメモリ
１１１  リングバッファ
１１２  書込みポインタ制御回路
１１３  読出しポインタ制御回路
１２１  ポインタ差検出回路
１２２、１２２ａ  比較回路
１２３  周波数制御回路
１３０  ＰＬＬ回路
１３１  ＶＣＯ
１３２  分周回路
１３３  位相比較回路
１３４  ループフィルタ
１３５  加算回路
５１１、５１２  同期化回路
【図１】
2016130921.tif 000003
【図２】
2016130921.tif 000004
【図３】
2016130921.tif 000005
【図４】
2016130921.tif 000006
【図５】
2016130921.tif 000007
【図６】
2016130921.tif 000008
【図７】
2016130921.tif 000009
【図８】
2016130921.tif 000010
【図９】
2016130921.tif 000011
【図１０】
2016130921.tif 000012
【図１１】
2016130921.tif 000013
【図１２】
2016130921.tif 000014
【図１３】
2016130921.tif 000015
【図１４】
2016130921.tif 000016
【図１５】
2016130921.tif 000017
【図１６】
2016130921.tif 000018