(57)【要約】【課題】本発明は、エラスティックバッファのオーバーフロー状態とアンダーフロー状態とを検出することを特徴とする。【解決手段】第１、第２、第３の初期値データを転送する第１、第２、第３のリングカウンタと、第１のリングカウンタの出力を保持する第１の記憶回路と、第２のリングカウンタの出力と第１の記憶回路の出力が入力される第１のアンド回路群と、第３のリングカウンタの出力と第１の記憶回路の出力が入力される第２のアンド回路群と、第１のアンド回路群の出力が入力される第１のオア回路と、第２のアンド回路群の出力が入力される第２のオア回路と、第１のオア回路の出力を記憶する第２の記憶回路と、第２のオア回路の出力を記憶する第３の記憶回路と、第１、第２のオア回路の出力と第２、第３の記憶回路の出力とをデコードしてオーバーフロー信号およびアンダーフロー信号を出力するデコード回路とを具備している。【選択図】    図１
2006067107.tif 000002
【特許請求の範囲】
【請求項１】
互いに位相が異なる第１、第２のクロック信号に同期して動作する回路相互間でデータの受け渡しを行うエラスティックバッファにおいて、未読データを破壊したかまたは破壊しようとしているオーバーフロー状態と、既読または無効データを読み出したかまたは読み出そうとしているアンダーフロー状態とを検出する検出回路であって、
前記検出回路は、
前記第１のクロック信号に同期して第１の初期値データを転送する第１のリングカウンタと、
前記第２のクロック信号に同期して第２の初期値データを転送する第２のリングカウンタと、
前記第２のクロック信号に同期して第３の初期値データを転送する第３のリングカウンタと、
前記第２のクロック信号に同期して前記第１のリングカウンタの出力を取り込んで保持する第１の記憶回路と、
第１、第２の入力にそれぞれ前記第２のリングカウンタの出力と前記第１の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第１のアンド回路群と、
第１、第２の入力にそれぞれ前記第３のリングカウンタの出力と前記第１の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第２のアンド回路群と、
複数の入力に前記第１のアンド回路群の出力が入力される第１のオア回路と、
複数の入力に前記第２のアンド回路群の出力が入力される第２のオア回路と、
前記第１のオア回路の出力を記憶する第２の記憶回路と、
前記第２のオア回路の出力を記憶する第３の記憶回路と、
前記第１、第２のオア回路の出力と前記第２、第３の記憶回路の出力とをデコードしてオーバーフロー状態およびアンダーフロー状態を示す第１、第２の出力信号を生成するデコード回路とを具備したことを特徴とするエラスティックバッファ。
【請求項２】
互いに位相が異なる第１、第２のクロック信号に同期して動作する回路相互間でデータの受け渡しを行うエラスティックバッファであって、
前記第１のクロック信号に同期して内容を更新し、その内容を書き込みアドレスとして出力する第１のカウンタと、
前記第２のクロック信号に同期して内容を更新し、その内容を読み出しアドレスとして出力する第２のカウンタと、
前記第１のクロック信号で動作する前記回路からデータが入力され、前記書き込みアドレスで指定された記憶領域にそのデータを書き込むとともに、前記読み出しアドレスで指定された記憶領域の内容を出力データとして前記第２のクロック信号で動作する前記回路に出力する第１の記憶回路と、
前記第１の記憶回路に格納されている未読データを破壊したかまたは破壊しようとしているオーバーフロー状態と、前記第１の記憶回路に格納されている既読または無効データを読み出したかまたは読み出そうとしているアンダーフロー状態とを検出するオーバーフローおよびアンダーフロー検出回路とを具備し、
前記オーバーフローおよびアンダーフロー検出回路は、
前記第１のクロック信号に同期して第１の初期値データを転送する第１のリングカウンタと、
前記第２のクロック信号に同期して第２の初期値データを転送する第２のリングカウンタと、
前記第２のクロック信号に同期して第３の初期値データを転送する第３のリングカウンタと、
前記第２のクロック信号に同期して前記第１のリングカウンタの出力を取り込んで保持する第２の記憶回路と、
第１、第２の入力にそれぞれ前記第２のリングカウンタの出力と前記第２の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第１のアンド回路群と、
第１、第２の入力にそれぞれ前記第３のリングカウンタの出力と前記第２の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第２のアンド回路群と、
複数の入力に前記第１のアンド回路群の出力が入力される第１のオア回路と、
複数の入力に前記第２のアンド回路群の出力が入力される第２のオア回路と、
前記第１のオア回路の出力を記憶する第３の記憶回路と、
前記第２のオア回路の出力を記憶する第４の記憶回路と、
前記第１、第２のオア回路の出力と前記第３、第４の記憶回路の出力とをデコードして、前記第１の記憶回路におけるオーバーフロー状態およびアンダーフロー状態を示す第１、第２の出力信号を生成するデコード回路とを有することを特徴とするエラスティックバッファ。
【請求項３】
前記第１の初期値データは、隣接する２ビット以上の領域が同一の値であり、前記２ビット以上の領域以外の部分がそれらとは異なる値であることを特徴とする請求項１または２に記載のエラスティックバッファ。
【請求項４】
前記第２、第３の初期値データはそれぞれ、隣接する３ビット以上の領域が同一の値であり、前記３ビット以上の領域以外の部分がそれらとは異なる値であることを特徴とする請求項３に記載のエラスティックバッファ。
【請求項５】
前記第２の初期値データと前記第３の初期値データのそれぞれにおける前記３ビット以上の領域のうちの少なくとも１ビットが一致していることを特徴とする請求項４に記載のエラスティックバッファ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エラスティックバッファに関し、特にそのオーバーフロー状態およびアンダーフロー状態を検出する検出回路に関する。
【背景技術】
【０００２】
送信側と受信側の動作クロック信号が異なるディジタル回路間で時系列データの受け渡しを行う場合、特別な工夫が必要である。例えば、ハンドシェイクと呼ばれる通信方式では、送信側によってセットされ、受信側によってリセットされるフリップフロップが利用される。このフリップフロップに記憶される信号をフラグと呼ぶ。受信側に送信側のクロック信号で動作する１ワード分のバッファを準備し、１ワード分のデータ送信が終了した時点で、送信側がフラグをセットする。受信側はフラグを検知して、バッファからデータを受信側のクロック信号に同期して読み出し、フラグをリセットする。この方式は、非同期でデータ通信が行える反面、データ転送以外に、フラグのセットおよびリセットに時間がかかってしまう。また、フラグをセットするのに専用の通信線が必要となる。
【０００３】
送信側と受信側の動作クロック周波数が十分接近している場合には、エラスティックバッファによって両者間を結ぶことが可能である。エラスティックバッファを用いると、一定期間、時系列データを途切れることなく受け渡すことが可能となる。エラスティックバッファについては、例えば、特許文献１に開示されている。また、エラスティックバッファという呼称は用いられていないが、その基本的な構造は、特許文献２や特許文献３に開示されている。
【０００４】
図２３は、特許文献３に開示されているエラスティックバッファの構成を示している。このエラスティックバッファは、書き込みアドレスカウンタ１、読み出しアドレスカウンタ２、先入れ先出し（ＦＩＦＯ）方式の記憶回路３および比較回路４からなる。図中の太い信号線は、それが複数ビットから成ることを表す。
【０００５】
図２３において、記憶回路３のデータ及びクロック入力ポートには、入力データａと書き込み用クロック信号ｃｋ１とが入力されており、そのデータ出力ポートからは出力データｂが出力される。書き込みアドレスカウンタ１は、入力された書き込み用クロック信号ｃｋ１に同期して書き込みアドレスｃを生成する。読み出しアドレスカウンタ２は、入力された読み出し用クロック信号ｃｋ２に同期して読み出しアドレスｄを生成する。書き込みアドレスｃと読み出しアドレスｄとは、記憶回路３に入力されると共に、比較回路４にも入力される。記憶回路３は、書き込み用クロック信号ｃｋ１に同期して、その内部にある書き込みアドレスｃが指し示す場所（以下、書き込みポインタ位置と称する）に入力データａを書き込むと同時に、その内部にある読み出しアドレスｄが指し示す場所（以下、読み出しポインタ位置と称する）から出力データｂを読み出す。比較回路４は、アドレスｃとｄとを比較し、アンダーフロー信号ｅとオーバーフロー信号ｆとを出力する。
【０００６】
図２３の回路をエラスティックバッファとして動作させるには、まず書き込みアドレスカウンタ１を動作させ、入力データａを書き込み用クロック信号ｃｋ１に同期して与える。データが記憶回路３の記憶容量のうち半分まで蓄積された段階で、読み出しアドレスカウンタ２を動作させる。蓄積データが記憶回路３の記憶容量の半分まで達したことは、図示しない制御回路により内部フラグなどを利用して検知され、読み出しアドレスカウンタ２に伝達される。
【０００７】
書き込み用と読み出し用クロック信号ｃｋ１、ｃｋ２の位相がそろっていない場合でも、書き込みポインタ位置と読み出しポインタ位置とが異なっており、かつ一方が他方を追い越すことがなければ、常に正しいデータが書き込み用クロック信号ｃｋ１で動作する回路（クロックドメイン）から読み出し用クロック信号ｃｋ２のクロックドメインに受け渡される。しかし、２つのクロック信号相互間における位相差が遅れまたは進みの一定方向に蓄積すると、２つのポインタ位置は徐々に接近してゆき、ついには一致もしくは追い越しが起こる。
【０００８】
読み出し用クロック信号ｃｋ２に対する書き込み用クロック信号ｃｋ１の位相差が進み方向に蓄積すると、書き込みポインタ位置が読み出しポインタ位置に後ろから追いつき、未読データの破壊が起こる。これをオーバーフローと呼ぶ。これとは逆に、読み出し用クロック信号ｃｋ２に対する書き込み用クロック信号ｃｋ１の位相差が遅れ方向に蓄積すると、今度は読み出しポインタ位置が書き込みポインタ位置に後ろから追いつき、既読もしくはまだ書き込みがなされていない記憶場所からデータを読み出してしまう。これをアンダーフローと呼ぶ。
【０００９】
図２３の回路では、オーバーフローもしくはアンダーフローを検知するため、比較回路４で２つのアドレスｃとｄを比較している。しかしながら、クロック信号に同期して動作する同期回路の出力は、一般に、その値が安定した定常期間と変化の途中の遷移期間とを有している。遷移期間では、データを構成する各ビットがそれぞれ、ハイレベル（ここではデータ「１」に対応）とローレベル（ここではデータ「０」に対応）の中間的な値（これをメタステーブル状態という）をとるため、遷移期間における大小比較などのディジタル演算結果は利用できない。したがって、図２３に示した回路においては、書き込み用クロック信号ｃｋ１と読み出し用クロック信号ｃｋ２の位相関係は既知であるか、両者が変化しない期間が予め定められている必要がある。
【００１０】
次に、書き込み用クロック信号と読み出し用クロック信号の位相関係が未知の場合の対策について説明する。位相関係が未知の場合の一例としては、書き込み用クロック信号がＣＤＲ（clock data recovery）によって入力データ列から再生される場合がある。ＣＤＲとは、高速データ通信において、クロック信号とデータ信号のスキューによる誤動作を解消するため、クロック信号を送らずにデータ列だけを直列転送し、受信側でデータ列からクロック信号を再生する機構である。再生クロック信号はワード単位に分周され、受信された直列データは並列データに変換される。分周された再生クロック信号には、送信側と受信側の動作クロック周波数の違い、すなわち周波数オフセットと、伝送線路あるいは送受信回路内部で発生するデータ変化点の時間方向の揺らぎ、すなわちジッタとが含まれている。並列化された受信データをさらに受け渡すときには、エラスティックバッファが使用される。エラスティックバッファの書き込み用クロック信号には、分周された再生クロック信号が使用され、読み出し用クロック信号には受信側で発生された周期の安定したクロック信号が使用される。このとき、ジッタの影響で書き込み用クロック信号と読み出し用クロック信号の位相関係が乱され、周波数オフセットの影響で位相差は進みまたは遅れの一定方向に増大する。
【００１１】
図２４は、従来のエラスティックバッファの他の例の一部の構成を抜き出して示している。この例では、図２３中の書き込みアドレスカウンタ１の出力は一時記憶回路（テンポラリバッファ）５で記憶された後、図２３中の比較回路４に入力される。書き込みアドレスカウンタ１によって、書き込み用クロック信号ｃｋ１に同期して生成された書き込みアドレスｃは一時記憶回路５に入力される。一時記憶回路５は、読み出し用クロック信号ｃｋ２に同期して書き込みアドレスｃを内部に取り込み、一時記憶アドレスｃ´として比較回路４に出力する。一時記憶回路５として、例えばクロック信号の立ち上がりエッジで入力データを内部に取り込んで出力するレジスタが使用される。このようなレジスタを使用するときには、クロック信号の立ち上がりの前後に、入力データが不変のセットアップ時間とホールド時間とが要求される。
【００１２】
書き込み用クロック信号ｃｋ１と読み出し用クロック信号ｃｋ２の位相関係が未知のとき、一時記憶アドレスｃ´を書き込みアドレスｃの代わりに比較回路４に入力すれば、オーバーフロー信号ｆとアンダーフロー信号ｅとを、読み出し用クロック信号ｃｋ２で動作する回路で処理できるようになる。
【００１３】
しかし、読み出し用クロック信号ｃｋ２の立ち上がりエッジが、書き込みアドレスｃの遷移期間付近にあると、一時記憶回路５におけるクロック信号ｃｋ２の立ち上がりエッジを基準としたセットアップ時間およびホールド時間に対する要求が満たされなくなり、上述したメタステーブル状態のデータが読み込まれる。
【００１４】
図２５は、アドレスカウンタに二進（バイナリ）カウンタを用いた場合に生じるメタステーブル状態を説明する図である。図２５中のクロック信号ｃｋ１、ｃｋ２、アドレスｃ、ｃ´は図２４中のものに対応している。また二進符号中の記号ｘは、メタステーブル状態の読み込みにより生じた１または０の不定ビットを表す。このように、バイナリーカウンタを用いた場合には、全ビットが同時にメタステーブルになる可能性がある。
【００１５】
また、先の特許文献２に開示されているエラスティックバッファでは、アドレスカウンタとしてリングカウンタが用いられている。ここで用いられているリングカウンタは、先入れ先出し方式の記憶回路として用いられているレジスタアレイの中の唯１つのレジスタを指し示すものであるから、リングカウンタを構成するビット中の１ビットだけがアクティブ状態（ここでは１と仮定する）となるワンホット（ｏｎｅ−ｈｏｔ）符号が用いられる。特許文献２に開示されたリングカウンタにおいては、この唯一の「１」がクロック信号に同期して順次転送される。
【００１６】
図２４中の書き込みアドレスカウンタ１にワンホット符号を用いたリングカウンタを使用した場合、ワンホット符号がメタステーブル状態になると、不定ビットとして読み込まれるのは、その唯一の「１」と転送方向にある隣接ビットの２ビットだけである。しかし、その他のビットがすべて「０」のため、全ビットが「０」として読み込まれる危険性がある。なお、特許文献２のエラスティックバッファは、図２４中の一時記憶回路５に相当する手段を備えておらず、書き込み用クロック信号と読み出し用クロック信号の位相関係が未知の場合に、使用するのは困難である。また、オーバーフローとアンダーフローとを区別せずに、ポインタ位置どうしの重なりのみを検出している。
【００１７】
書き込み用クロック信号と読み出し用クロック信号の位相関係が未知の場合、上述したようなメタステーブル状態を回避するには、二進符号やワンホット符号に代わる符号を使用し、一時記憶回路５に読み込まれた不定ビットの影響が排除できるような比較回路４を設計しなければならない。
【００１８】
グレイ符号は、変化の前後で変化するビットが１つだけであり、メタステーブル状態による影響が及ぶ範囲をカウンタで計数される値の１つだけに制限できる。すなわち、不定ビットが０になったときと１になったときに生じる誤差が、カウント値１以内になる。ところが、グレイ符号を使用すると、カウント値どうし、すなわちアドレスどうしを比較するのが困難である。このため、従来は、グレイ符号を二進符号に変換して比較を行っており、比較回路の構成が複雑化し、高速化できないという問題がある。
【特許文献１】米国特許公報第３８６８４８１号
【特許文献２】米国特許公報第３４２１１４７号
【特許文献３】特開平０７−０３８５４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明は上記のような事情を考慮してなされたものであり、その目的は、書き込み用クロック信号と読み出し用クロック信号の位相関係が未知な場合であっても、オーバーフロー状態とアンダーフロー状態とをそれぞれ簡単な回路構成で高速に検出できるエラスティックバッファを提供することである。
【課題を解決するための手段】
【００２０】
本発明のエラスティックバッファは、互いに位相が異なる第１、第２のクロック信号に同期して動作する回路相互間でデータの受け渡しを行うエラスティックバッファにおいて、未読データを破壊したかまたは破壊しようとしているオーバーフロー状態と、既読または無効データを読み出したかまたは読み出そうとしているアンダーフロー状態とを検出する検出回路であって、前記検出回路は、前記第１のクロック信号に同期して第１の初期値データを転送する第１のリングカウンタと、前記第２のクロック信号に同期して第２の初期値データを転送する第２のリングカウンタと、前記第２のクロック信号に同期して第３の初期値データを転送する第３のリングカウンタと、前記第２のクロック信号に同期して前記第１のリングカウンタの出力を取り込んで保持する第１の記憶回路と、第１、第２の入力にそれぞれ前記第２のリングカウンタの出力と前記第１の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第１のアンド回路群と、第１、第２の入力にそれぞれ前記第３のリングカウンタの出力と前記第１の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第２のアンド回路群と、複数の入力に前記第１のアンド回路群の出力が入力される第１のオア回路と、複数の入力に前記第２のアンド回路群の出力が入力される第２のオア回路と、前記第１のオア回路の出力を記憶する第２の記憶回路と、前記第２のオア回路の出力を記憶する第３の記憶回路と、前記第１、第２のオア回路の出力と前記第２、第３の記憶回路の出力とをデコードしてオーバーフロー状態およびアンダーフロー状態を示す第１、第２の出力信号を生成するデコード回路とを具備したことを特徴とする。
【００２１】
本発明のエラスティックバッファは、互いに位相が異なる第１、第２のクロック信号に同期して動作する回路相互間でデータの受け渡しを行うエラスティックバッファであって、前記第１のクロック信号に同期して内容を更新し、その内容を書き込みアドレスとして出力する第１のカウンタと、前記第２のクロック信号に同期して内容を更新し、その内容を読み出しアドレスとして出力する第２のカウンタと、前記第１のクロック信号で動作する前記回路からデータが入力され、前記書き込みアドレスで指定された記憶領域にそのデータを書き込むとともに、前記読み出しアドレスで指定された記憶領域の内容を出力データとして前記第２のクロック信号で動作する前記回路に出力する第１の記憶回路と、前記第１の記憶回路に格納されている未読データを破壊したかまたは破壊しようとしているオーバーフロー状態と、前記第１の記憶回路に格納されている既読または無効データを読み出したかまたは読み出そうとしているアンダーフロー状態とを検出するオーバーフローおよびアンダーフロー検出回路とを具備し、前記オーバーフローおよびアンダーフロー検出回路は、前記第１のクロック信号に同期して第１の初期値データを転送する第１のリングカウンタと、前記第２のクロック信号に同期して第２の初期値データを転送する第２のリングカウンタと、前記第２のクロック信号に同期して第３の初期値データを転送する第３のリングカウンタと、前記第２のクロック信号に同期して前記第１のリングカウンタの出力を取り込んで保持する第２の記憶回路と、第１、第２の入力にそれぞれ前記第２のリングカウンタの出力と前記第２の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第１のアンド回路群と、第１、第２の入力にそれぞれ前記第３のリングカウンタの出力と前記第２の記憶回路の出力のそれぞれの対応するビットが入力される複数のアンド回路からなる第２のアンド回路群と、複数の入力に前記第１のアンド回路群の出力が入力される第１のオア回路と、複数の入力に前記第２のアンド回路群の出力が入力される第２のオア回路と、前記第１のオア回路の出力を記憶する第３の記憶回路と、前記第２のオア回路の出力を記憶する第４の記憶回路と、前記第１、第２のオア回路の出力と前記第３、第４の記憶回路の出力とをデコードして、前記第１の記憶回路におけるオーバーフロー状態およびアンダーフロー状態を示す第１、第２の出力信号を生成するデコード回路とを有することを特徴とする。
【発明の効果】
【００２２】
本発明のエラスティックバッファによれば、書き込み用クロック信号と読み出し用クロック信号の位相関係が未知な場合であっても、オーバーフロー状態とアンダーフロー状態とをそれぞれ簡単な回路構成で高速に検出できる。
【発明を実施するための最良の形態】
【００２３】
（第１の実施の形態）
図１は本発明に係るエラスティックバッファの第１の実施の形態の構成を示すブロック回路図である。図１において、１は書き込みアドレスカウンタ、２は読み出しアドレスカウンタ、３は先入れ先出し（ＦＩＦＯ）方式の記憶回路、６ａ乃至６ｃはそれぞれリングカウンタ、７は一時記憶回路、８ａおよび８ｂはそれぞれ複数のアンド回路からなるアンド回路群、９ａおよび９ｂはオア回路、１０ａおよび１０ｂはそれぞれ記憶回路、１１はデコード回路である。なお、図１において、太線は複数ビットの信号を表している。
【００２４】
記憶回路３のデータ及びクロック入力ポートには、入力データａと書き込み用クロックｃｋ１とが入力されており、そのデータ出力ポートからは出力データｂが出力される。書き込みアドレスカウンタ１は、入力された書き込み用クロック信号ｃｋ１に同期して、書き込みアドレスｃを生成する。読み出しアドレスカウンタ２は、入力された読み出し用クロック信号ｃｋ２に同期して、読み出しアドレスｄを生成する。書き込みアドレスｃと読み出しアドレスｄとは記憶回路３に入力される。記憶回路３は、書き込み用クロック信号ｃｋ１に同期して、アドレスｃが指し示す書き込みポインタ位置に入力データａを書き込むと同時に、アドレスｄが指し示す読み出しポインタ位置から出力データｂを読み出す。リングカウンタ６ａは、書き込み用クロック信号ｃｋ１に同期して、内部にある初期値データを転送して出力する。リングカウンタ６ｂおよび６ｃは、それぞれ書き込み用クロック信号ｃｋ２に同期して、内部にあるそれぞれの初期値データを転送して出力する。一時記憶回路７は、読み出し用クロック信号ｃｋ２に同期して、リングカウンタ６ａの出力ｇを内部に取り込んで出力する。アンド回路群８ａは、一時記憶回路７の出力ｈとリングカウンタ６ｂの出力ｉの各ビットの論理積（アンド）をとって出力する。アンド回路群８ｂは、一時記憶回路７の出力ｈとリングカウンタ６ｃの出力ｊの各ビットの論理積（アンド）をとって出力する。オア回路９ａおよび９ｂは、それぞれアンド回路群８ａおよび８ｂの出力ｋおよびｌの全ビットの論理和（オア）をとって出力する。記憶回路１０ａおよび１０ｂは、それぞれオア回路９ａおよび９ｂの出力ｍおよびｎを記憶する。デコード回路１１は、４つの信号、すなわちオア回路９ａ、９ｂの出力ｍ、ｎと、記憶回路１０ａ、１０ｂの出力ｏ、ｐとをデコードし、アンダーフロー信号ｅとオーバーフロー信号ｆとを出力する。
【００２５】
図１中のリングカウンタ６ａ乃至６ｂとして、それぞれ例えば図２に示すような回路を用いることができる。図２は、第１の実施の形態で用いられるリングカウンタ６ａが１６ビット構成のときの一例を示している。リングカウンタ６ａは、それぞれ１６個のフリップフロップ１２ａ乃至１２ｐおよびセレクタ１３ａ乃至１３ｐから構成されている。１６個のセレクタ１３ａ〜１３ｐの各一方の入力には、１６ビットからなる初期値ｓの対応する各ビットｓ０〜ｓ１５がそれぞれ入力されている。最上位ビットを除く１５個のセレクタ１３ａ〜１３ｏの各他方の入力には、フリップフロップ１２ｂ〜１２ｐの出力ｇ１〜ｇ１５がそれぞれ入力されており、最上位ビットのセレクタ１３ｐの他方の入力には、最下位ビットのフリップフロップ１２ａの出力ｇ０が入力されている。セレクタ１３ａ〜１３ｐの各制御端子には、同期プリセット信号ｑが並列に入力されている。フリップフロップ１２ａ〜１２ｐの各データ入力には、セレクタ１３ａ〜１３ｐの出力がそれぞれ入力されている。フリップフロップ１２ａ〜１２ｐの各クロック入力には、書き込み用クロックｃｋ１が並列に入力されており、各非同期リセット端子には、非同期リセット信号ｒが並列に入力されている。フリップフロップ１２ａ〜１２ｐの出力は出力信号ｇ０〜ｇ１５として出力される。
【００２６】
図２に示すリングカウンタ６ａでは、非同期リセット信号ｒが一定期間アクティブ状態（ここでは０）にされることによって、出力信号ｇ０〜ｇ１５の全ビットが０に初期化される。この後、同期プリセット信号ｑがアクティブ状態にされると、セレクタ１３ａ〜１３ｐで初期値ｓ０〜ｓ１５が選択され、クロック信号ｃｋ１の立ち上がりに同期してフリップフロップ１２ａ〜１２ｐに取り込まれ、出力信号ｇ０〜ｇ１５として出力される。
【００２７】
その後、同期プリセット信号ｑが非アクティブ状態にされると、フリップフロップ内部に取り込まれた初期値データが、クロック信号ｃｋ１が立ち上がるたびに、最上位ビットから最下位ビットに向かって１ビットずつ転送され、かつ最下位ビットから最上位ビットに戻される。
【００２８】
このリングカウンタ６ａは、任意の初期値がプリセットできるようにセレクタ１３ａ〜１３ｐを設けているが、フリップフロップ１２ａ〜１２ｐに非同期セット付きのものを使用し、非同期リセット信号ｒで固定の初期値をセットするようにすれば、セレクタ１３ａ〜１３ｐは省略することができる。逆に、このリングカウンタ６ａでは、非同期リセット信号ｒは無くてもよいが、非同期リセット信号ｒがエラスティックバッファ全体のリセット信号になっている場合は、これを入力することによって初期値を確定できる利点がある。図２に示すリングカウンタを図１中の他のリングカウンタ６ｂ、６ｃとして使用するには、初期値データを適当に変え、クロック信号をｃｋ１からｃｋ２に変更し、同期プリセット信号のタイミングを調節する。
【００２９】
図１中の一時記憶回路７として、例えば図３に示すものを用いることができる。図３は、第１の実施の形態で用いられる一時記憶回路７が１６ビット構成のときの一例を示している。一時記憶回路７は、１６個のフリップフロップ１４ａ乃至１４ｐによって構成されている。
【００３０】
図３において、フリップフロップ１４ａ〜１４ｐの各データ入力には、リングカウンタ６ａの１６ビットからなる出力信号ｇの対応するビットの信号ｇ０〜ｇ１５がそれぞれ入力されており、各クロック入力には、読み出し用クロック信号ｃｋ２が並列に入力されている。フリップフロップ１４ａ〜１４ｐの各非同期リセット端子には、非同期リセット信号ｒが並列に入力されている。フリップフロップ１４ａ〜１４ｐの出力からは、１６ビットの出力信号ｈ０〜ｈ１５が出力される。
【００３１】
この一時記憶回路７では、非同期リセット信号ｒが一定期間アクティブ状態にされることによって、出力信号ｈ０〜ｈ１５の全ビットが０に初期化される。この後、クロック信号ｃｋ２が立ち上がるたびに、入力信号ｇ０〜ｇ１５がフリップフロップ１４ａ〜１４ｐ内に取り込まれ、出力信号ｈ０〜ｈ１５として出力される。
【００３２】
図１中のアンド回路群８ａおよび８ｂとして、それぞれ例えば図４に示すものを構成のものを用いることができる。図４は、第１の実施の形態で用いられるアンド回路群８ａが１６ビット構成のときの一例を示している。アンド回路群８ａは１６個のアンド回路１５ａ乃至１５ｐによって構成されている。
【００３３】
図４において、アンド回路１５ａ〜１５ｐの各一方の入力には、一時記憶回路７から出力される１６ビットの出力信号ｈのうち対応するビットの信号ｈ０〜ｈ１５が入力されており、各他方の入力には、リングカウンタ６ｂから出力される１６ビットの出力信号ｉのうち対応するビットの信号ｉ０〜ｉ１５が入力されている。アンド回路１５ａ〜１５ｐの出力は出力信号ｋ０〜ｋ１５として出力される。
【００３４】
図１中の記憶回路１０ａと１０ｂとして、例えば図５に示すものを用いることができる。図５は、第１の実施の形態で用いられる記憶回路１０ａの一例の構成を示している。この記憶回路１０ａはフリップフロップ１４からなる。
【００３５】
図５に示すフリップフロップ１４は、図３に示す一時記憶回路７内のフリップフロップと同様に、非同期リセット信号ｒでリセットされ、クロック信号ｃｋ２に同期して、入力信号ｍがデータ入力から内部に取り込まれ、出力信号ｏとして出力される。図１では、記憶回路１０ａに供給されるクロック信号は、図を見やすくするために省略してある。しかし、アンダーフロー信号ｅとオーバーフロー信号ｆとが外部でラッチされるならば、記憶回路１０ａは、クロック信号を用いない遅延回路などで構成することもできる。
【００３６】
図１中のデコード回路１１として、例えば図６に示すものを用いることができる。図６は、第１の実施の形態で用いられるデコード回路１１の一例の構成を示している。このデコード回路１１は、２個のアンド回路１６ａ、１６ｂによって構成されている。
【００３７】
図６において、アンド回路１６ａの一方の入力には、オア回路９ｂの出力信号ｎが入力されており、他方の入力には記憶回路１０ａの出力信号ｏが入力されている。そして、アンド回路１６ａの出力はアンダーフロー信号ｅとして出力される。アンド回路１６ｂの一方の入力にはオア回路９ａの出力信号ｍが入力されており、他方の入力には記憶回路１０ｂの出力信号ｐが入力されている。そして、アンド回路１６ｂの出力はオーバーフロー信号ｆとして出力される。
【００３８】
次に、上記のような構成のエラスティックバッファの動作を説明する。まず、書き込みアドレスカウンタ１とリングカウンタ６ａとを同時に動作させ、入力データａを書き込み用クロック信号ｃｋ１に同期して与える。データが記憶回路３の記憶容量のうち半分まで蓄積された段階で、読み出しアドレスカウンタ２とリングカウンタ６ｂ、６ｃとを同時に動作させる。記憶回路３の蓄積データが記憶容量の半分まで達したことは、図示しない制御回路で内部フラグなどを利用して検知され、読み出しアドレスカウンタ２およびリングカウンタ６ｂ、６ｃに伝達される。
【００３９】
リングカウンタ６ａには、初期値として、隣接する２ビット以上の領域（ビットフィールド）が同一の値であり、この２ビット以上の領域以外の部分がそれらとは異なる値であるような１６ビットのデータがセットされる。ここでは、初期値として、例えば、左端の上位２ビットが１で、残りのビットが全て０であるような１６ビットのデータ、すなわち「１１００００００００００００００」を用いる場合を説明する。リングカウンタ６ａの１６ビットの出力信号ｇは、書き込み用クロック信号ｃｋ１に同期して以下のように変化する。
【００４０】
第１周期    １１００００００００００００００
第２周期    ０１１０００００００００００００
第３周期    ００１１００００００００００００
第４周期    ０００１１０００００００００００
第５周期    ００００１１００００００００００
第６周期    ０００００１１０００００００００
第７周期    ００００００１１００００００００
第８周期    ０００００００１１０００００００
第９周期    ００００００００１１００００００
第１０周期  ０００００００００１１０００００
第１１周期  ００００００００００１１００００
第１２周期  ０００００００００００１１０００
第１３周期  ００００００００００００１１００
第１４周期  ０００００００００００００１１０
第１５周期  ００００００００００００００１１
第１６周期  １００００００００００００００１
…                …  …  …  
第１７周期以後は、第１周期からの繰り返しになる。ここで、相隣り合う周期で変化しない、値が１のビットがある。右端を第０ビットとすると、第１周期と第２周期では、それは第１４ビットであり、第２周期と第３周期では、第１３ビットが変化しない。つまり、隣接する２つの「１」のうち、右側の「１」は次の周期においても保存される。
【００４１】
図７は、図１中のリングカウンタ６ａの出力信号ｇが、一時記憶回路７に取り込まれるときに生じるメタステーブル状態を説明するための図である。図７に示すクロック信号ｃｋ１、ｃｋ２および信号ｇ、ｈは、それぞれ図１中のものに対応している。図７においても、図２５の場合と同様に、読み出し用クロック信号ｃｋ２の立ち上がりエッジが出力信号ｇの遷移期間付近にあるので、一時記憶回路７におけるクロック信号ｃｋ２の立ち上がりエッジを基準としたセットアップ時間およびホールド時間に対する要求が満たされなくなり、メタステーブル状態のデータが読み込まれている。
【００４２】
しかし、リングカウンタ６ａの出力信号ｇの変化のしかたが上述のようであるため、メタステーブルとなるのは右側の「１」の左右のビットだけである。従って、一時記憶回路７では、図７ではｘで表示している不確定ビットが右側の「１」の左右に存在する。
【００４３】
次に、オーバーフロー状態およびアンダーフロー状態の検出動作について説明する。読み出しアドレスカウンタ２とリングカウンタ６ｂ、６ｃとは、記憶回路３の記憶容量が半分、入力データで埋まったときに動作を開始する。
【００４４】
図８は、記憶回路３にデータが半分（ここでは８個のデータが蓄積された状態）埋まった直後のリングカウンタ６ａ〜６ｃと一時記憶回路７の状態を示している。このとき、リングカウンタ６ｂと６ｃとは初期状態にある。リングカウンタ６ｂと６ｃには、初期値としてそれぞれ、隣接する３ビット以上の領域（ビットフィールド）が同一の値であり、この３ビット以上の領域以外の部分がそれらとは異なる値であるような１６ビットのデータがセットされる。ここでは、リングカウンタ６ｂの初期値として、例えば、上位側の左半分の８ビットが１で、残りの右半分の８ビットが全て０であるような１６ビットのデータ、すなわち「１１１１１１１１００００００００」を用い、リングカウンタ６ｃの初期値として、例えば、上位側の左端の３ビットと下位側の右端の５ビットが１で、その間の８ビットが全て０であるような１６ビットのデータ、すなわち「１１１００００００００１１１１１」を用いる場合を説明する。
【００４５】
図８において、ｃｋ１とｃｋ２は読み出し用クロック信号と書き込み用クロック信号であり、ｇはリングカウンタ６ａの出力信号である。リングカウンタ６ａの出力信号ｇは一時記憶回路７に入力されている。図を見やすくするため、他の信号は省略してある。図中の白丸は書き込みポインタ位置に相当するリングカウンタ６ａのビットであり、黒丸は読み出しポインタ位置に相当するリングカウンタ６ｂ、６ｃのビットを示している。白丸と黒丸とが水平方向で同じビット位置にあるとき、オーバーフローまたはアンダーフローが生じている。
【００４６】
図８に示した破線の領域に含まれる３ビットのデータは、リングカウンタ６ｂ、６ｃ共に０である。一時記憶回路７に記憶された０以外のビットがすべて破線の中の領域に納まるとき、図１中のオア回路９ａと９ｂの出力ｍとｎは共に０となる。ここでは、これを理想位置と呼ぶ。図８に示した一点鎖線の領域に含まれる３ビットのデータは、リングカウンタ６ｂ、６ｃ共に１である。一時記憶回路７に記憶された０以外のビットが一部でも一点鎖線内の領域にはいると、それが不確定ビットｘのときはｘ＝１の場合に、図１中のオア回路９ａと９ｂの出力ｍとｎは共に１になる。ここでは、これをトラップと呼ぶ。なお、上記の不確定ビットｘはメタステーブルではなく、その値は１か０であり、どちらになるか予見できないだけである。
【００４７】
図８では、一時記憶回路７に記憶された不確定ビットｘを含むパターン「ｘ１ｘ」は、理想位置にある。上記ｍとｎの値は、図１中の記憶回路１０ａと１０ｂとにそれぞれ記憶され、それぞれｏ、ｐとして出力される。以後、このｍとｎをそれぞれ遅れ接近信号、進み接近信号と呼び、ｏとｐをそれぞれ遅れ接近履歴、進み接近履歴と呼ぶ。
【００４８】
次に、書き込みポインタ位置が理想位置からはずれて、アンダーフローする方向に移動した場合について説明する。
【００４９】
図９は、書き込みポインタがアンダーフローする方向に移動した状態を示している。このときは、まだアンダーフローしていない。これは、書き込み用クロック信号の読み出し用クロック信号に対する位相差が遅れ方向に増大した結果である。このような状態をきたす主な原因は、書き込み用クロック周波数が読み出し用クロック周波数よりも低いことである。読み出しポインタと書き込みポインタとが図９に示す位置まで近づくと、一時記憶回路７に記憶されているデータ中の確定した「１」のビット位置が、リングカウンタ６ｂの値が１のビット（以後、これらのビットを検出ビットと呼ぶ）の位置と一致するため、遅れ接近信号ｍが確実に１になる。また一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」は、どのビットもリングカウンタ６ｃの検出ビットにかからない。このため、進み接近信号ｎは確実に０となる。つまり、図９は、一時記憶回路７中の不確定ビット「ｘ」の影響を受けずに、確実にｍ＝１、ｎ＝０になるポインタ位置関係を示している。
【００５０】
次に、アンダーフロー状態について説明する。図１０は、アンダーフローとして検出されるポインタ位置の相対関係を示している。これは、図９の状態から、書き込み用クロック信号の読み出し用クロック信号に対する位相差が、さらに遅れ方向に増大した結果である。読み出しポインタと書き込みポインタとが図１０に示す位置まで近づくと、一時記憶回路７に記憶されているデータ中の確定した「１」が、トラップにかかるため、遅れ接近信号ｍと進み接近信号ｎとは両方とも確実に１となる。
【００５１】
図１０の場合には、一時記憶回路７に記憶されているデータ中の不確定ビット「ｘ」の影響を受けずに、確実にｍ＝ｎ＝１になるポインタ位置関係を示しているが、被検出パターン「ｘ１ｘ」の左側にあるｘがトラップにかかったとき、ｘ＝１の場合、早めにｍ＝ｎ＝１になる。図１０に示すポインタ位置関係でも、ポインタどうしは重なっていないので、アンダーフローはまだ起きていない。ここでは、トラップを３ビット分確保し、リングカウンタ６ａ乃至６ｃの１ビット分だけアンダーフロー検出に余裕を持たせている。オーバーフローは、ポインタどうしが重なっても記憶回路３に実際にデータが書き込まれるまでは発生しないが、アンダーフローはポインタが重なっただけで発生するので、注意が必要である。
【００５２】
今度は、書き込みポインタ位置が理想位置からはずれて、オーバーフローする方向に移動した場合について説明する。図１１は、書き込みポインタがオーバーフローする方向に移動した状態を示している。このときは、まだオーバーフローしていない。これは、書き込み用クロック信号の読み出し用クロック信号に対する位相差が進み方向に増大した結果である。このような状態をきたす主な原因は、書き込み用クロック周波数が読み出し用クロック周波数よりも高いことである。読み出しポインタと書き込みポインタとが図１１に示す位置まで近づくと、一時記憶回路７に記憶されているデータ中の確定した「１」が、リングカウンタ６ｃの検出ビットにかかるため、進み接近信号ｎが確実に１になる。また一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」は、どのビットもリングカウンタ６ｂの検出ビットにかからないため、遅れ接近信号ｍは確実に０となる。図１１は、一時記憶回路７中の不確定ビット「ｘ」の影響を受けずに、確実にｍ＝０、ｎ＝１になるポインタ位置関係を示している。
【００５３】
次に、オーバーフロー状態について説明する。図１２は、オーバーフローとして検出されるポインタ位置の相対関係を示している。これは、図１１の状態から、書き込み用クロック信号の読み出し用クロック信号に対する位相差が、さらに進み方向に増大した結果である。読み出しポインタと書き込みポインタとが図１２に示す位置まで近づくと、一時記憶回路７に記憶されているデータ中の確定した「１」が、トラップにかかるため、遅れ接近信号ｍと進み接近信号ｎとは両方とも確実に１となる。
【００５４】
図１２は、一時記憶回路７に記憶されているデータ中の不確定ビット「ｘ」の影響を受けずに、確実にｍ＝ｎ＝１になるポインタ位置関係を示しているが、一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」の右側にある「ｘ」がトラップにかかったとき、ｘ＝１の場合、早めにｍ＝ｎ＝１になる。図１２のポインタ位置関係でも、ポインタどうしは重なっていないので、オーバーフローはまだ起きていない。ここでは、トラップを３ビット分確保し、リングカウンタ６ａ乃至６ｃの１ビット分だけオーバーフロー検出に余裕を持たせている。オーバーフローは、ポインタどうしが重なっても、記憶回路３に実際にデータが書き込まれるまでは起きないが、書き込み用クロック信号が読み出し用クロック信号よりも速く変化しているため、余裕を持たせたほうが安全である。
【００５５】
上述したように、オーバーフローまたはアンダーフローが起こると、どちらの場合でも遅れ接近信号ｍと進み接近信号ｎとは、ｍ＝ｎ＝１になってしまい、これらの信号だけからは、オーバーフロー、アンダーフローのいずれが起きたか判別できない。
【００５６】
しかし、図８に示したポインタが理想位置にある状態から直ちにオーバーフローやアンダーフローが起こることは応用上有り得ない。このような状況は、書き込み用と読み出し用のクロック信号の周波数比が、記憶回路３の記憶容量の半分程度もある場合であるし、すぐオーバーフローやアンダーフローが起きてしまうと、エラスティックバッファでデータを受け渡すことは不可能だからである。したがって、ｍ＝ｎ＝１になる前に、ｍとｎのどちらか一方だけが１で他方が０になる期間が存在する。その状態は、初めてｍ＝ｎ＝１になったときにはまだ、遅れ接近履歴ｏ、進み接近履歴ｐとして保存されている。上の説明から、アンダーフローする前はｏ＝１、ｐ＝０であり、オーバーフローする前はｏ＝０、ｐ＝１であることがわかる。よって、４つの信号ｍ、ｎ、ｏ、ｐをデコードしてやれば、オーバーフローとアンダーフローとを判別することができる。
【００５７】
下記の表１は、図６に示されるデコード回路１１で行われるデコードのようすを真理値表で示したものである。表中の横線「−」は、０でも１でもよいドントケア（don’t care）を表す（以後、同様）。このデコード回路１１は、オア回路９ａの出力ｍとオア回路９ｂの出力ｎおよび記憶回路１０ａの出力ｏと記憶回路１０ｂの出力ｐとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。
【００５８】
ｅ＝ｎｏ
ｆ＝ｍｐ
【表１】
2006067107.tif 000003
【００５９】
表１では、ｏ＝ｐ＝１でｍ＝ｎ＝１の場合にアンダーフロー信号ｅとオーバーフロー信号ｆとを両方１にして、検出後もオーバーフローまたはアンダーフローの状態が回復しなかったことを警告するようにしている。また、表１では、ｏ＝ｐ＝０の履歴があり、かつオーバーフローまたはアンダーフローが起きたことを示すｍ＝ｎ＝１の場合に、ｅ＝ｆ＝０としている。これは理想位置から直ちにオーバーフローまたはアンダーフローした、応用上有り得ない状態である。しかし、この場合もｅ＝ｆ＝１にすれば、異常事態を外部に知らせることができる。
【００６０】
図８乃至図１２の説明では、３ビットのトラップを用いているが、表１のデコードのしかたを適用すると、トラップを０ビットにできる。トラップが０ビットというのは、リングカウンタ６ｂと６ｃの検出ビットが重ならずに、読み出しポインタ付近で境界を接している状態である。このような場合、一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」がリングカウンタ６ｂと６ｃの検出ビットの両者にかかったとき、中央の１がかかっているのと異なる検出ビットにかかったｘが１のときには、ｍ＝ｎ＝１になるが、このｘが０のときには、ｍ＝ｎ＝１にならないことがある。その場合、ｏ＝１かつｍ＝０、ｎ＝１のときには、被検出パターン「ｘ１ｘ」が上記０ビットトラップを遅れ接近履歴がある状態ですり抜けたことがわかるため、アンダーフローとして検出でき、ｐ＝１かつｍ＝１、ｎ＝０のときには、上記０ビットトラップを進み接近履歴がある状態ですり抜けたことがわかるため、オーバーフローとして検出できる。
【００６１】
トラップが１ビット以上ある場合でも表１のデコードのしかたを採用すれば、何らかの理由で一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」が、読み出し用クロック信号の１周期の間に、トラップをすり抜けてしまっても、オーバーフローおよびアンダーフローを検出することができる。なお、図８乃至図１２に示したリングカウンタ６ａ〜６ｃの初期値（ビットパターン）は、本実施の形態を含めて以後説明するすべての実施の形態に用いることができる。
【００６２】
先に説明した図６に示すデコード回路１１は、表１の真理値表を実現する構成の一例であり、２入力のアンド回路２個だけから構成されている。本実施の形態によれば、このように簡単な回路でオーバーフローとアンダーフローの検出が行えるようになり、検出回路の動作の高速化を図ることができる。さらに、書き込みと読み出しのポインタ位置関係が、遅れ接近信号ｍと進み接近信号ｎとから把握できるという利点がある。これは、ポインタどうしの相対位置に応じて、ポインタ位置を補正する必要がある場合には必須の機能である。
【００６３】
ただし、表１の真理値表は、理想位置のすり抜けとトラップのすり抜けとを区別していないので、表１のデコードのしかたを採用するときは、理想位置が３ビット以上あり、一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」が理想位置をすり抜けてしまわないことが前提である。また、オーバーフローまたはアンダーフローから通常動作への復帰は、次の３つの方法のうちいずれかを採用すべきである。
【００６４】
復帰方法１．  読み出しと書き込みのポインタ相対位置を被検出パターン全体が理想位置に入るように初期化する。  
復帰方法２．  上記ポインタの初期化以外の方法によってオーバーフロー、アンダーフローを確実に解消すると同時に、記憶回路１０ａと１０ｂとをリセットする。  
復帰方法３．  上記ポインタの初期化以外の方法によってオーバーフロー、アンダーフローを確実に解消した後、読み出しの１サイクルだけ外部回路によりアンダーフロー、オーバーフロー信号ｅ、ｆを無視する。
【００６５】
その第１の理由は、トラップのすり抜けもしくは０ビットトラップを許したため、一度オーバーフローまたはアンダーフローしたあと、逆方向にすり抜けると、今度は逆にアンダーフローまたはオーバーフローとして検出されてしまうからである。第２の理由は、すり抜けずにオーバーフロー、アンダーフローした場合でも記憶回路１０ａと１０ｂにｏ＝ｐ＝１の履歴が残っているので、ｍ＝ｎ＝０にならない復帰のしかたをすると再び検出信号が発せられることである。第１の理由は、真理値表を修正しても解消されない。第２の理由は真理値表を修正すれば解消できる。
【００６６】
（第２の実施の形態）
図１３は、図１中のデコード回路１１の他の具体的な構成を示している。図１３に示すデコード回路１１は、３入力の２個のアンド回路１７ａ、１７ｂで構成されている。図１３中の信号ｍ、ｎ、ｏ、ｐ、ｅ、ｆは、図１中のものと対応している。アンド回路１７ａには、オア回路９ａの出力信号ｍと、オア回路９ｂの出力信号ｎと、記憶回路１０ａの出力信号ｏとが入力される。アンド回路１７ｂには、オア回路９ａの出力信号ｍと、オア回路９ｂの出力信号ｎと、記憶回路１０ｂの出力信号ｐとが入力される。
【００６７】
表２は、図１３に示すデコード回路に対応する真理値表である。先の表１の真理値表が一時記憶回路７に記憶されているデータ中の被検出パターン「ｘ１ｘ」によるトラップのすり抜けを許していたのに対し、表２は理想位置のすり抜けを許容している。ただし、理想位置は２ビット以上必要である。これを１ビット以下にすると被検出パターンが理想位置を通過するときにｍ＝ｎ＝１になることがあるため、オーバーフローまたはアンダーフローとして検出されてしまう。また、アンダーフロー信号ｅとオーバーフロー信号ｆとは、ｍ＝ｎ＝１のときにしか生成されないので、トラップは１ビット以上必要である。
【００６８】
このデコード回路１１は、オア回路９ａの出力信号ｍとオア回路９ｂの出力信号ｎおよび記憶回路１０ａの出力信号ｏと記憶回路１０ｂの出力信号ｐとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。
【００６９】
ｅ＝ｍｎｏ
ｆ＝ｍｎｐ
【表２】
2006067107.tif 000004
【００７０】
表２の真理値表に基づくデコード回路１１と、１ビット以上の幅を有するトラップとを採用するならば、オーバーフローまたはアンダーフローから通常動作への復帰に際して、上に示した方法１〜３を特に採用する必要はないが、採用してもよい。
【００７１】
表２によれば、ｏ＝ｐ＝１であってもｍまたはｎのどちらかが０ならば、ｅ＝ｆ＝０となる。このため、いかなる方法を用いた場合でも通常動作に復帰すれば、検出信号は生成されない。また、オーバーフロー、アンダーフローの解消のしかたが確実でなく、再びオーバーフロー、アンダーフローした場合には、アンダーフロー信号ｅとオーバーフロー信号ｆとを両方１にして、検出後もオーバーフローまたはアンダーフローの状態が回復しなかったことを警告するようにしている。
【００７２】
（第３の実施の形態）
図１４は、本発明のエラスティックバッファの第３の実施の形態の構成を示すブロック回路図である。なお、図１４において、先の図１のものと対応する箇所には同じ符号を付してその説明は省略し、以下、図１と異なる箇所のみを説明する。図１４に示すエラスティックバッファでは、デコード回路１１とは異なるデコード回路１８が設けられると共に、新たに２個の記憶回路１９ａ、１９ｂが追加されている。デコード回路１８はアンダーフロー信号ｅとオーバーフロー信号ｆとを出力し、アンダーフロー信号ｅとオーバーフロー信号ｆは、それぞれ記憶回路１９ａ、１９ｂに入力される。記憶回路１９ａと１９ｂの出力信号は、それぞれ状態信号ｕ、ｖとして、デコード回路１８に入力される。デコード回路１８は、信号ｍ、ｎ、ｏ、ｐと共にこの信号ｕとｖを合わせてデコードする。
【００７３】
図１４中のデコード回路１８として、例えば、図１５に示す回路を用いることができる。図１５に示すデコード回路１８は、２個のインバータ２０ａ、２０ｂと、４個のアンド回路２１ａ〜２１ｄと、２個のオア回路２２ａ、２２ｂとから構成されている。
【００７４】
インバータ２０ａは、記憶回路１９ｂの出力信号ｖが入力され、反転信号／ｖを出力する。アンド回路２１ａは、インバータ２０ａの出力信号／ｖと、オア回路９ｂの出力信号ｎと、記憶回路１０ａの出力信号ｏとが入力される。アンド回路２１ｃは、オア回路９ｂの出力信号ｎと、記憶回路１９ｂの出力信号ｕとが入力される。オア回路２２ａは、アンド回路２１ａおよび２１ｃの出力信号が入力され、アンダーフロー信号ｅを出力する。
【００７５】
インバータ２０ｂは、記憶回路１９ａの出力信号ｕが入力され、反転信号／ｕを出力する。アンド回路２１ｂは、インバータ２０ｂの出力信号／ｕと、オア回路９ａの出力信号ｍと、記憶回路１０ｂの出力信号ｐとが入力される。アンド回路２１ｄは、オア回路９ａの出力信号ｍと、記憶回路１９ｂの出力信号ｖとが入力される。オア回路２２ｂは、アンド回路２１ｂおよび２１ｄの出力信号が入力され、オーバーフロー信号ｆを出力する。
【００７６】
図１４中の記憶回路１９ａ、１９ｂとして、例えば、記憶回路１０ａ、１０ｂと同様に、図５に示すような構成の回路を用いることができる。なお、図１４では、記憶回路１９ａ、１９ｂに与える読み出し用クロック信号ｃｋ２を省略せずに示した。記憶回路１９ａ、１９ｂは、読み出し用クロック信号ｃｋ２の１周期のあいだデータを保持することが望ましい。
【００７７】
図１４に示すエラスティックバッファによれば、オーバーフローまたはアンダーフローが起きると、そのことが状態信号ｕ、ｖとして記憶回路１９ａ、１９ｂに記憶される。前述した第１および第２の実施の形態とは異なり、第３の実施の形態においては、この状態信号を用いて、オーバーフローとアンダーフローからの復帰条件を定めることができる。したがって、検出後もオーバーフローやアンダーフローが解消されなかった場合に、連続してオーバーフローとアンダーフローを検出することができる。
【００７８】
下記の表３は、図１５に示すデコード回路１８の動作を示す真理値表である。デコード回路１８は、オア回路９ａ、９ｂの出力信号ｍ、ｎと、記憶回路１０ａ、１０ｂ、１９ａ、１９ｂの出力信号ｏ、ｐ、ｕ、ｖとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。なお、下記の論理式において／ａは「ａ」の反転を表し、＋記号は論理和を表す。
【００７９】
ｅ＝／ｖｎｏ＋ｕｎ
ｆ＝／ｕｍｐ＋ｖｍ
【表３】
2006067107.tif 000005
【００８０】
表３において、ｕ＝ｖ＝０のときの入力信号ｍ、ｎ、ｏ、ｐと、出力信号ｅ、ｆとの関係は、表１の場合と全く同じである。つまり、検出パターンが理想位置にある状態から、初めてオーバーフロー、アンダーフロー検出が行われるときは、図１５のデコーダ回路は、図６のデコーダ回路とまったく同じ動作をする。ここでも、ｏ＝ｐ＝１でｍ＝ｎ＝１の場合にアンダーフロー信号ｅとオーバーフロー信号ｆとを両方１にしているが、これは警告のためというよりも起こり得ない場合として、このときのｅとｆの値を適当に定め、回路を簡略化する目的で行っている。起こり得ない理由は、この組み合わせになるためには、ｕ＝ｖ＝０かつｏ＝ｐ＝０のときに、ｍ＝ｎ＝０から１サイクルでｍ＝ｎ＝１になる必要があるからである。そうでない場合、ｍ＝ｎ＝１がオーバーフローまたはアンダーフローとして検知され、ｕ＝ｖ＝０でなくなる。しかし、万が一のときを考えてｕ＝ｖ＝１からの復帰条件も定めている。
【００８１】
ひとたびオーバーフローまたはアンダーフローが検出され、状態信号がｕ＝ｖ＝０でなくなると、遅れ接近履歴ｏと進み接近履歴ｐとは無視され、状態信号と遅れ、進み接近信号ｍ、ｎとからアンダーフロー、オーバーフロー信号ｅ、ｆが定まる。信号ｅ、ｆは、状態信号ｕ、ｖの読み出し用クロック信号ｃｋ２の次のサイクルにおける値を示しているため、状態遷移が起こる。
【００８２】
図１６は、表３に対応する状態遷移図である。表３に示す真理値表と図１６に示す状態遷移図とから、検出信号発生条件と状態遷移のようすは瞭然である。すなわち、ひとたびオーバーフローまたはアンダーフローが起こると、一時記憶回路７中の検出パターン「ｘ１ｘ」が、それまでトラップに対して移動していた方向と逆方向に移動するか、またはそのまま移動し続けて、被検出パターン中の値が１のビットがすべて理想位置内に納まるまで、オーバーフロー、アンダーフロー信号は不変である。
【００８３】
第２の実施の形態では、信号ｅ、ｆのどちらかが１になった後も被検出パターン中の値が１のビットがトラップにかかっていると、ｅ、ｆが両方とも１になってしまうため、外部の回路で信号ｅ、ｆをラッチしないと、オーバーフロー、アンダーフローのいずれが生じたのか区別できない。
【００８４】
これに対し、第３の実施の形態によれば、どちらが起きたかを外部回路を用いずに検出できる。なお、第３の実施の形態においても、被検出パターンによるトラップのすり抜けもしくは０ビットトラップが許される。ただし、第１の実施の形態の説明で述べたように、理想位置には３ビット以上のビット幅を割り当てる。よって、第３の実施の形態は、オーバーフローまたはアンダーフロー状態の解消手段が不完全である場合や、対応に遅れが生じるような場合にも応用できる。
【００８５】
（第４の実施の形態）
図１７は、図１４のエラスティックバッファで使用されるデコード回路１８の他の具体的な構成を示している。図１７のデコード回路１８が図１５のものと異なる箇所は、３入力のアンド回路２１ａ、２１ｂに変えて４入力のアンド回路２３ａ、２３ｂを設けた点である。その他の構成は図１５のものと同様である。４入力のアンド回路２３ａ、２３ｂに置き換わったことで、１つずつ増えた入力には、アンド回路２３ａでは遅れ接近信号ｍが、アンド回路２３ｂでは進み接近信号ｎがそれぞれ入力されている。
【００８６】
表４は、図１７に示したデコード回路の動作を示す真理値表である。このデコード回路は、オア回路９ａ、９ｂの出力信号ｍ、ｎと、記憶回路１０ａ、１０ｂ、１９ａ、１９ｂの出力信号ｏ、ｐ、ｕ、ｖとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。
【００８７】
ｅ＝／ｖｍｎｏ＋ｕｎ
ｆ＝／ｕｍｎｐ＋ｖｍ
表４において、ｕ＝ｖ＝０のときの入力信号ｍ、ｎ、ｏ、ｐと、出力信号ｅ、ｆとの関係は、表２と全く同じである。つまり、検出パターンが理想位置にある状態から、初めてオーバーフロー、アンダーフロー検出が行われるときは、図１７のデコード回路は、図１３のデコード回路とまったく同じ動作をする。ここでも、ｏ＝ｐ＝１でｍ＝ｎ＝１の場合にアンダーフロー信号ｅとオーバーフロー信号ｆとを両方１にしているが、これは警告という意味よりも起こり得ない場合として、このときのｅとｆの値を適当に定め、回路を簡略化している。また、ｕ＝ｖ＝０でないときの入力信号と出力信号との関係は、表３の場合と全く同じである。
【００８８】
図１８は、表４に対応する状態遷移図である。図１６との違いは、状態番号１（ｕｖ＝００）から、状態番号２（ｕｖ＝０１）、３（ｕｖ＝１０）に遷移する条件と、状態番号１（ｕｖ＝００）でループする（自身に遷移する）条件である。
【表４】
2006067107.tif 000006
【００８９】
真理値表と状態遷移図とから、図１７に示したデコード回路を用いた例では、検出パターンが理想位置にある状態から、初めてオーバーフロー、アンダーフロー検出が行われるとき（ｕ＝ｖ＝０）は、図１３のデコード回路を用いた場合と同じ動作をし、オーバーフローまたはアンダーフローが起きたことが状態信号として記憶されている状態（ｕ＝１またはｖ＝１）では、図１５のデコード回路を用いた場合と同じ動作をすることがわかる。
【００９０】
図１７のデコード回路を用いるならば、理想位置のビット幅を第２の実施の形態と同様、２ビットにできる。ただし、トラップの幅が１ビット以上必要なことも同様である。また、オーバーフローまたはアンダーフロー検出後の復帰条件が、第３の実施の形態と同じに定められているので、第２の実施の形態のように、検出後、再びオーバーフローまたはアンダーフローが検出された場合に、どちらが起きたかわからなくなることはない。
【００９１】
さらに、オーバーフローまたはアンダーフロー検出後に、放置されるなどして、被検出パターンがトラップを通過しても、被検出パターン「ｘ１ｘ」中にある値が１のビットが、通過直後にかかっていたのと同じリングカウンタ（６ｂまたは６ｃ）の検出ビットにかかっている間は、通過直前の検出信号出力が変わらず出力され続ける。よって、オーバーフローまたはアンダーフロー状態の解消手段が、不完全である場合や、対応に遅れが生じるような場合にも応用できる。
【００９２】
（第５の実施の形態）
図１９は、図１４のエラスティックバッファで使用されるデコード回路１８の他の具体的な構成を示している。このデコード回路１８は、２個のインバータ２４ａ、２４ｂと、４個のアンド回路２５ａ〜２５ｄと、２個のオア回路２６ａ、２６ｂとから構成されている。
【００９３】
インバータ２４ａは、記憶回路１９ｂの出力信号ｖが入力され、反転信号／ｖを出力する。アンド回路２５ａは、インバータ２４ａの出力信号／ｖと、記憶回路１０ａの出力信号ｏとが入力される。オア回路２６ａは、アンド回路２５ａの出力信号と記憶回路１９ａの出力信号ｕが入力される。アンド回路２５ｃは、オア回路９ｂの出力信号ｎとオア回路２６ａの出力信号とが入力され、アンダーフロー信号ｅを出力する。
【００９４】
インバータ２４ｂは、記憶回路１９ａの出力信号ｕが入力され、反転信号／ｕを出力する。アンド回路２５ｂは、インバータ２４ｂの出力信号／ｕと、記憶回路１０ｂの出力信号ｐとが入力される。オア回路２６ｂは、アンド回路２５ｂの出力信号と記憶回路１９ｂの出力信号ｖが入力される。アンド回路２５ｄは、オア回路９ａの出力信号ｍとオア回路２６ｂの出力信号とが入力され、オーバーフロー信号ｆを出力する。
【００９５】
図１９のデコード回路は、論理的に図１５のデコード回路と等価である。その動作は、第３の実施の形態と同様に、表３の真理値表と図１６の状態遷移図とから容易に把握できる。図１９のデコード回路は、図１５のデコード回路を変形して、動作の高速化を図った例である。デコード回路１８に入力される信号のうち、ｍとｎとは、図１４に示すように、アンド回路群８ａ、８ｂと、オア回路９ａ、９ｂとをそれぞれ経由して入力される。これに対し、他の信号ｏ、ｐ、ｕ、ｖは、図１４の記憶回路１０ａ、１０ｂ、１９ａ、１９ｂから直接入力される。このため、信号ｍ、ｎとその他の入力信号との間には、クロック信号（ｃｋ２）の変化から確定までの時間に差が生じる。
【００９６】
デコード回路１８の動作を早くするには、デコード回路のなるべく後段に信号ｍ、ｎを入力すると効果がある。図１９の回路は、このような原理に基づく高速化を行った例である。
【００９７】
（第６の実施の形態）
図２０は、図１４のエラスティックバッファで使用されるデコード回路１８のさらに他の具体的な構成を示している。このデコード回路１８は、図１９のデコード回路に対して新たにアンド回路２５ｅが追加されている。このアンド回路２５ｅには信号ｎ、ｍが入力されている。図１９のデコード回路において、アンド回路２５ｃ、２５ｄにそれぞれ供給されていた信号ｎ、ｍは共に、新たに追加されたアンド回路２５ｅの出力信号ｗに置き換えられている。その他、図１９と対応する箇所には同じ符号を付してその説明は省略する。
【００９８】
表５は、図２０に示したデコード回路の動作を示す真理値表である。このデコード回路は、オア回路９ａ、９ｂの出力信号ｍ、ｎと、記憶回路１０ａ、１０ｂ、１９ａ、１９ｂの出力信号ｏ、ｐ、ｕ、ｖとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。
【００９９】
ｅ＝ｍｎ（／ｖｏ＋ｕ）
ｆ＝ｍｎ（／ｕｐ＋ｖ）
【表５】
2006067107.tif 000007
【０１００】
表５において、ｕ＝ｖ＝０のときの入力信号ｍ、ｎ、ｏ、ｐと、出力信号ｅ、ｆとの関係は、表４または表２と全く同じである。つまり、検出パターンが理想位置にある状態から、初めてオーバーフロー、アンダーフロー検出が行われるときは、図２０のデコード回路は、図１７または図１３のデコード回路とまったく同じ動作をする。しかし、ｕ＝ｖ＝０でないときの入力信号と出力信号との関係は、表４または表３とは異なっている。この違いは、信号ｕとｖのどちらかが１である状態に留まる（次の状態も同じ）ためには、ｍ＝ｎ＝１でなければならないということである。
【０１０１】
図２１は、表５に対応する状態遷移図である。図１８と異なる点は、状態番号２〜４の各状態（ｕｖ＝０１、１０、１１）から状態１（ｕｖ＝００）に戻る条件と、状態４（ｕｖ＝１１）から状態２と３への遷移が行われなくなった点である。
【０１０２】
図１７に示した第４の実施の形態におけるデコード回路は、図１９と同じ方法で高速化を図るのが困難である。図２０は、図１７に示した第４の実施の形態のデコード回路の真理値表を変更して、遅れ接近信号ｍと進み接近信号ｎとの論理積（アンド）をデコード回路の最も出力側に近い論理ゲートに入力したものである。
【０１０３】
図２０中の２５ｃと２５ｄはアンド回路なので、これらを３入力のアンド回路に変更し、アンド回路２５ｅを省略して、信号ｍとｎを直接３入力のアンド回路２５ｃと２５ｄの両方に入力してもよい。このように変形することにより、図１９と同じ原理で高速化が図れる。ただし、真理値表と状態遷移図からわかるように、オーバーフローまたはアンダーフローを検出した後も、被検出パターンによるトラップの通過は許されない。この第６の実施の形態のデコード回路を用いる場合、非検出パターンがトラップを通り過ぎる前にオーバーフロー、アンダーフローを解消する必要がある。解消のされかたが不完全でも、被検出パターンがトラップを通り越すことがなければ、オーバーフロー、アンダーフロー検出ができる。トラップは１ビット以上の幅が必要であるが、理想位置のビット幅は２ビットでよい。
【０１０４】
（第７の実施の形態）
図２２は、図１４のエラスティックバッファで使用されるデコード回路１８のさらに他の具体的な構成を示している。このデコード回路１８は、２個のインバータ２７ａ、２７ｂと、４個のナンド（ＮＡＮＤ）回路２８ａ〜２８ｄと、３個のアンド回路２９ａ〜２９ｃとによって構成されている。
【０１０５】
インバータ２７ａは、記憶回路１９ｂの出力信号ｖが入力され、反転信号／ｖを出力する。ナンド回路２８ａは、インバータ２７ａの出力信号／ｖと、記憶回路１０ａの出力信号ｕとが入力される。ナンド回路２８ｃは、ナンド回路２８ａの出力信号と記憶回路１０ｂの出力信号ｐが入力される。アンド回路２９ａは、オア回路９ａ、９ｂの出力信号ｍ、ｎが入力される。アンド回路２９ｂは、ナンド回路２８ｃの出力信号およびアンド回路２９ａの出力信号ｗと、記憶回路１０ａの出力信号ｏとが入力され、アンダーフロー信号ｅを出力する。
【０１０６】
インバータ２７ｂは、記憶回路１９ａの出力信号ｕが入力され、反転信号／ｕを出力する。ナンド回路２８ｂは、インバータ２７ｂの出力信号／ｕと、記憶回路１０ｂの出力信号ｐと、記憶回路１９ｂの出力信号ｖとが入力される。ナンド回路２８ｄは、ナンド回路２８ｂの出力信号と記憶回路１０ａの出力信号ｏが入力される。アンド回路２９ｃは、アンド回路２９ａの出力信号ｗと、ナンド回路２８ｄの出力信号とが入力され、オーバーフロー信号ｆを出力する。
【０１０７】
表６は、図２２に示したデコード回路の動作を示す真理値表である。このデコード回路は、オア回路９ａ、９ｂの出力信号ｍ、ｎと、記憶回路１０ａ、１０ｂ、１９ａ、１９ｂの出力信号ｏ、ｐ、ｕ、ｖとから、下記の論理式によって計算される信号ｅをアンダーフロー信号、信号ｆをオーバーフロー信号として出力する。
【０１０８】
ｅ＝ｍｎｏ［／ｐ＋ｕ（／ｖ）］
ｆ＝ｍｎ［／ｏ＋ｐ（／ｕ）ｖ］
先の第６の実施の形態のように、オーバーフローまたはアンダーフローした後も、被検出パターンによるトラップの通過を許さないならば、すなわち、オーバーフローまたはアンダーフロー検出後、被検出パターンがトラップを通り過ぎる前にその処理がなされるならば、これまでとは別の視点からデコード回路を構成することができる。
【０１０９】
第２、第４および第６の実施の形態のように、トラップの幅が１ビット以上ある場合、オーバーフローまたはアンダーフローが検出されて状態信号ｕ、ｖのどちらかが１になるためには、遅れ接近信号ｍと進み接近信号ｎとがともにｍ＝ｎ＝１でなければならない。よって、ｕ＝１またはｖ＝１のときには、遅れ接近履歴ｏと進み接近履歴ｐとはともにｏ＝ｐ＝１であることが保証される。表６では、ｏ＝ｐ＝１のときだけ、状態信号ｕ、ｖを確認するようにしている。これは、表２の機能に、オーバーフロー、アンダーフロー検出後のｏ＝ｐ＝１の状態において、オーバーフローとアンダーフローのいずれが起きたかを検出する機能を加えたものである。ただし、表２では、ｏ＝ｐ＝０かつｍ＝ｎ＝１のときｅ＝ｆ＝０としていたが、表６では、これをオーバーフローとして検出している。また、ｅ＝ｆ＝１になる組み合わせを設けていない。表６は、ｕ＝ｖ＝１の状態においてもｕ＝ｖ＝０の状態においても同じように検出動作を行うため、強力な外乱によってｕ＝ｖ＝１になったとしても通常どおりの動作を続ける。ｕ＝ｖ＝１の状態は、ｅ＝ｆ＝１になる組み合わせが無いので、外乱による影響がなくなれば、すぐに解消される。なお、表６に対応する状態遷移図は省略する。
【表６】
2006067107.tif 000008
【０１１０】
第７の実施の形態の特徴は、表６に示すとおり、真理値表が小規模なことである。デコード回路の構成は、図２２に示すようにやや複雑となるが、ｍとｎとの論理積ｗがデコード回路の最終段に位置する論理ゲートであるアンド回路２９ｂ、２９ｃに入力されているため、第５、第６の実施の形態と同じ理由により、デコード回路の高速動作が可能である。また、２入力のアンド回路２９ｂ、２９ｃの代わりに３入力のアンド回路を設け、さらにアンド回路２９ａを省略して、信号ｍ、ｎを直接３入力のアンド回路に入力するように変形してもよい。トラップは１ビット以上の幅が必要であり、オーバーフロー、アンダーフローが検出された場合、被検出パターンがトラップにかかっている間に、オーバーフロー、アンダーフローの処理が行われる必要がある。理想位置のビット幅は２ビットでよい。
【図面の簡単な説明】
【０１１１】
【図１】本発明の第１の実施の形態に係るエラスティックバッファのブロック回路図。
【図２】図１中のエラスティックバッファで用いられるリングカウンタの一例を示す回路図。
【図３】図１中のエラスティックバッファで用いられる一時記憶回路の一例を示す回路図。
【図４】図１中のエラスティックバッファで用いられるアンド回路群の一例を示す回路図。
【図５】図１中のエラスティックバッファで用いられる記憶回路の一例を示す回路図。
【図６】図１中のエラスティックバッファで用いられるデコード回路の一例を示す回路図。
【図７】図１中のエラスティックバッファで用いられる一時記憶回路の入力側で生じるメタステーブル状態を説明するためのタイミングチャート。
【図８】第１の実施の形態において先入れ先出し方式の記憶回路にデータが半分埋まった直後の３つのリングカウンタと一時記憶回路の状態を示す図。
【図９】第１の実施の形態において書き込みポインタがアンダーフローする方向に移動したときの３つのリングカウンタと一時記憶回路の状態を示す図。
【図１０】第１の実施の形態においてアンダーフローとして検出されるときの３つのリングカウンタと一時記憶回路の状態を示す図。
【図１１】第１の実施の形態において書き込みポインタがオーバーフローする方向に移動したときの３つのリングカウンタと一時記憶回路の状態を示す図。
【図１２】第１の実施の形態においてオーバーフローとして検出される３つのリングカウンタと一時記憶回路の状態を示す図。
【図１３】本発明の第２の実施の形態に用いられるデコード回路の具体的な構成を示す回路図。
【図１４】本発明の第３の実施の形態に係るエラスティックバッファのブロック回路図。
【図１５】図１４のエラスティックバッファに用いられるデコード回路の具体的な構成を示す回路図。
【図１６】図１４のエラスティックバッファにおける状態遷移図。
【図１７】本発明の第４の実施の形態に係るエラスティックバッファに用いられるデコード回路の具体的な構成を示す回路図。
【図１８】図１７のエラスティックバッファの状態遷移図。
【図１９】本発明の第５の実施の形態に係るエラスティックバッファに用いられるデコード回路の具体的な構成を示す回路図。
【図２０】本発明の第６の実施の形態に係るエラスティックバッファに用いられるデコード回路の具体的な構成を示す回路図。
【図２１】本発明の第６の実施の形態に係るエラスティックバッファの状態遷移図。
【図２２】本発明の第７の実施の形態に係るエラスティックバッファに用いられるデコード回路の具体的な構成を示す回路図。
【図２３】従来のエラスティックバッファのブロック回路図。
【図２４】メタステーブル対策を施した従来のエラスティックバッファの一部の構成を示す回路図。
【図２５】従来のエラスティックバッファに使用される一時記憶回路の入力側で生じるメタステーブル状態を説明するための図。
【符号の説明】
【０１１２】
１…書き込みアドレスカウンタ、２…読み出しアドレスカウンタ、３…先入れ先出し方式の記憶回路、４…比較回路、７…一時記憶回路、６ａ〜６ｃ…リングカウンタ、８ａ、８ｂ…アンド回路群、９ａ、９ｂ、２２ａ、２２ｂ、２６ａ、２６ｂ…オア回路、１０ａ、１０ｂ、１９ａ、１９ｂ…記憶回路、１１、１８…デコード回路、１２ａ〜１２ｐ、１４、１４ａ〜１４ｐ…フリップフロップ、１３ａ〜１３ｐ…セレクタ、１５ａ〜１５ｐ、１６ａ、１６ｂ、１７ａ、１７ｂ、２１ａ〜２１ｄ、２３ａ、２３ｂ、２５ａ〜２５ｅ、２９ａ〜２９ｃ…アンド回路、２０ａ、２０ｂ、２４ａ、２４ｂ、２７ａ、２７ｂ…インバータ、２８ａ〜２８ｄ…ナンド（ＮＡＮＤ）回路。
【図１】
2006067107.tif 000009
【図２】
2006067107.tif 000010
【図３】
2006067107.tif 000011
【図４】
2006067107.tif 000012
【図５】
2006067107.tif 000013
【図６】
2006067107.tif 000014
【図７】
2006067107.tif 000015
【図８】
2006067107.tif 000016
【図９】
2006067107.tif 000017
【図１０】
2006067107.tif 000018
【図１１】
2006067107.tif 000019
【図１２】
2006067107.tif 000020
【図１３】
2006067107.tif 000021
【図１４】
2006067107.tif 000022
【図１５】
2006067107.tif 000023
【図１６】
2006067107.tif 000024
【図１７】
2006067107.tif 000025
【図１８】
2006067107.tif 000026
【図１９】
2006067107.tif 000027
【図２０】
2006067107.tif 000028
【図２１】
2006067107.tif 000029
【図２２】
2006067107.tif 000030
【図２３】
2006067107.tif 000031
【図２４】
2006067107.tif 000032
【図２５】
2006067107.tif 000033