(57)【特許請求の範囲】
【請求項１】
送信側から受信側へ転送中のデータを保持するＦＩＦＯのための複数のレベルの満杯状態を示すＦＩＦＩの状態レジスタであって、
（ａ）以下のｉ）乃至ｉｉｉ）を含むＦＩＦＯの満杯表示システムと、
ｉ）前記ＦＩＦＯのそれぞれの満杯レベルを示す複数の第１のＤ型フリップフロップ、
ｉｉ）前記複数の第１のＤ型フリップフロップの各出力信号を第１のクロック周波数に同期させる第１の同期手段、
ｉｉｉ）前記第１の同期手段の全出力がセットされたことを示す第１のロジック手段、
（ｂ）以下のｉ）乃至ｉｉｉ）を含むＦＩＦＯの空表示システムと、
ｉ）前記ＦＩＦＯのぞれぞれの空レベルを示す複数の第２のＤ型フリップフロップ、
ｉｉ）前記複数の第２のＤ型フリップフロップの各出力信号を第２のクロック周波数に同期させる第２の同期手段、
ｉｉｉ）前記第２の同期手段の全出力がセットされたことを示す第２のロジック手段、
（ｃ）前記ＦＩＦＯにデータが書き込まれるに従って、前記第１のＤ型フリップフロップのそれぞれのデータを書き換える手段と、
（ｄ）前記ＦＩＦＯのデータが読み取られるに従って、前記第２のＤ型フリップフロップのそれぞれのデータを書き換える手段と、を有し、
前記第１のロジック手段は、前記ＦＩＦＯの満杯状態を表示する信号を出力し、前記第２のロジック手段は、前記ＦＩＦＯの空状態を表示する信号を出力する、ことを特徴とする状態レジスタ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、２台のコンピュータ間でのデータ転送に使用する先入れ先出し（ＦＩＦＯ）レジスタの状態（空または満杯）を表わす状態インジケータに関する。上記状態インジケータは２種類の異なるクロックに同期した２つの出力を生成する。
【０００２】
【技術的背景】
ＢというコンピュータからＡというコンピュータへデータ転送を行なう方法は多数存在する。例えば、２台のコンピュータが異なるクロック周波数で作動している場合には、転送の際にＦＩＦＯ（先入れ先出し）バッファを使用することがある。ＦＩＦＯバッファはコンピュータＢからコンピュータＡへの転送中のデータ保持部である。
【０００３】
ＦＩＦＯはパイプラインであると考えても良い。送信側のコンピュータＢはデータ・ワードのシーケンス、例えばＷ１を読み込み、続けてＷ２、Ｗ３とパイプラインに送り込む。パイプラインはデータ・ワードを保持し、逐次的にコンピュータＡで利用できるようにする。受信側のコンピュータＡはパイプラインにデータが送り込まれたのと同じ順序でパイプラインからデータを読み取る。第１にＷ１を読み取り、続けてＷ２、Ｗ３と読み取る。
【０００４】
コンピュータＡでのＦＩＦＯの読み取りの順番は、コンピュータＢで送出した順番と同じであることから、「先入れ先出し（First In, First Out）」と呼ばれている。
【０００５】
このような方法の場合には２種類の問題がある。その第１は、ＦＩＦＯの容量が限られていることである。送出側はデータが満杯のＦＩＦＯへデータ・ワードを送出しようとすべきではない。第２に、受信側は空のＦＩＦＯからデータ・ワードを読み込もうとすべきではない。
【０００６】
これらの問題を解決するには幾つかの方法がある。その１つはデータをＦＩＦＯと正確に同じ大きさのブロックに分割することである。例えば、ＦＩＦＯが８ワード保持できる場合、送信側は８データ・ワードのバースト転送によってＦＩＦＯに全て送り出す。次に、送信側は適当な時間だけ待機し、その間に受信側が先の８ワードを読み取る。この後、送信側が別の８ワードを送出する。
【０００７】
要するに、この方法では転送時に遅延を必要とする。
【０００８】
別の方法は図１を参照して説明する。カウンタＣＯＵＮＴＥＲがＦＩＦＯ内に現在格納されているワード数を表わす出力を生成すると仮定する（図１では商業的に利用可能な７４−１９３型カウンタを図示している）。
【０００９】
図１の左上部の略図で示してあるように、データワードがＦＩＦＯへ送出されるまで、カウンタ出力は００００に設定されている。ここで、図１の右上部に図示してあるように、送信側Ｂが、Ｗ１〜Ｗ４の４ワードをＦＩＦＯへ送り込んだとする。
【００１０】
各々のワードが送り込まれるに従い、送信側はカウンタの計数入力（ＣＯＵＮＴ  ＵＰ）へパルスを送る。各々のパルスでカウンタの出力がインクリメントされる。最終出力は０１００（十進法の表記による４に等しい）となる。カウンタの出力０１００は、このカウンタが４ワードを格納していることを表わす。
【００１１】
次に、受信側がこれらのワードを読み取る。図１の左下に図示してあるように、受信側で各々のワードを読み取るごとに、カウンタの逆計数入力（ＣＯＵＮＴＤＯＷＮ）へパルスを送る。各パルスでカウンタの出力がデクリメントする。図の右下に図示してあるように、最終的なカウンタの出力は００００となり、ＦＩＦＯが空であることを表わす。
【００１２】
この方法による問題は、受信側がＣＯＵＮＴ  ＤＯＷＮパルスを送信中には、同時に送信側がＣＯＵＮＴ  ＵＰパルスを送信できないということである。カウンタはこれらの矛盾するパルスに応答することが出来ない。ＣＯＵＮＴ  ＵＰ信号とＣＯＵＮＴ  ＤＯＷＮ信号の同時発生を防止して、送信側からのデータ送り込みと受信側でのデータ読み取りが同時に発生しないようにする何らかの方法を提供する必要がある。
【００１３】
【発明が解決しようとする課題】
本発明の目的は送信側と受信側の間のデータ転送の改良を提供することである。
【００１４】
本発明のさらなる目的はデータ転送に使用するＦＩＦＯバッファの状態を監視し該ＦＩＦＯの状態にしたがって満杯（ｆｕｌｌ）および空（ｅｍｐｔｙ）信号を生成するようなシステムを提供することである。
【００１５】
【課題を解決するための手段】
本発明は、上記目的を達成するために、その１つの態様として、送信側から受信側へ転送中のデータを保持するＦＩＦＯのための複数のレベルの満杯状態を示すＦＩＦＩの状態レジスタであって、（ａ）以下のｉ）乃至ｉｉｉ）を含むＦＩＦＯの満杯表示システムと、ｉ）前記ＦＩＦＯのそれぞれの満杯レベルを示す複数の第１のＤ型フリップフロップ、ｉｉ）前記複数の第１のＤ型フリップフロップの各出力信号を第１のクロック周波数に同期させる第１の同期手段、ｉｉｉ）前記第１の同期手段の全出力がセットされたことを示す第１のロジック手段、（ｂ）以下のｉ）乃至ｉｉｉ）を含むＦＩＦＯの空表示システムと、ｉ）前記ＦＩＦＯのぞれぞれの空レベルを示す複数の第２のＤ型フリップフロップ、ｉｉ）前記複数の第２のＤ型フリップフロップの各出力信号を第２のクロック周波数に同期させる第２の同期手段、ｉｉｉ）前記第２の同期手段の全出力がセットされたことを示す第２のロジック手段、（ｃ）前記ＦＩＦＯにデータが書き込まれるに従って、前記第１のＤ型フリップフロップのそれぞれのデータを書き換える手段と、（ｄ）前記ＦＩＦＯのデータが読み取られるに従って、前記第２のＤ型フリップフロップのそれぞれのデータを書き換える手段と、を有し、前記第１のロジック手段は、前記ＦＩＦＯの満杯状態を表示する信号を出力し、前記第２のロジック手段は、前記ＦＩＦＯの空状態を表示する信号を出力する、ことを特徴とする状態レジスタを提供するものである。
【００１６】
本発明の重要な特徴はＦＩＦＯ用の状態インジケータが発生する信号の同期であるが、同期の説明は後述する。第１にＦＩＦＯ状態の考え方について説明し、次に状態信号をどのように生成するかを説明する。
【００１７】
【実施例】
図２０は本発明の１つの態様の略図である。本図についての説明は、図２から初めて順を追って段階的に行なう。
【００１８】
［ＦＩＦＯ＿ＥＭＰＴＹ信号の生成］
図２の左側には８個のメモリー・セルの列ＦＦ０〜ＦＦ７が図示してある（右側にもＦＦ列があるが、これについては後述する）。それぞれのセルＦＦは、右手に「レベル０」などと表記してある８レベルのＦＩＦＯのうちの１つのレベルに対応する。ＦＩＦＯ内の「レベル」は多ビットのデータワードを格納する記憶位置を表わす。
【００１９】
図２のメモリーセルは２台のコンピュータ間で送信されている実際のデータを保持せず、これはＦＩＦＯが行なう。その代わり、これらのメモリーセルはＦＩＦＯの各レベルの状態（空または満杯）を表わすビットを保持するので、セルＦＦは「ＦＩＦＯ状態セル」と呼ぶことが出来る。
【００２０】
ＦＩＦＯ内の所定のレベルは空の状態を有する目的で文字どおり空になる必要はない。例えば、受信側（例、コンピュータＡ）があるレベルを読み取った後、そのレベル内のデータを読み取り操作で実際に消去しなくとも、そのレベルは空になったものと見なされ、データはそのレベルに保存されている。「読み取り済み」のほうが術語として適しているかもしれないが、「空」という術語が従来から使用されている。
【００２１】
データ転送の初期化時には、データをＦＩＦＯ内へ読み込む前に、図２に図示したように全ての状態セルを「１」の状態にする。ＡＮＤゲートＡＮＤ＿１で全てのメモリーセルをＡＮＤ演算する。この時点でＡＮＤ＿１はＦＩＦＯ＿ＥＭＰＴＹ線に「１」を出力し、そのＦＩＦＯが空であることを表わす。
【００２２】
このＦＩＦＯ＿ＥＭＰＴＹ信号は受信側で使用する。受信側がＦＩＦＯ＿ＥＭＰＴＹ信号を検出した場合、受信側ではＦＩＦＯからのデータ読み取りを行なわない。
【００２３】
送信側がＦＩＦＯの第１のレベル「レベル０」へデータ・ワードを送出すると（本好適実施例において、各ワードは３２ビット幅である）、図３のＨＩ−ＬＯＷ遷移を表わす記号２で図示したように、送出側でＷＲＩＴＥ線を引き下げる。これでレベル０に対応する状態セルＦＦ０を切り換え、図示したようにＦＦ０で出力「０」が生成されるようにする。これでＦＩＦＯ＿ＥＭＰＴＹ信号は図示したように「０」に引き下げられる。ＦＩＦＯには１つのデータ・ワードが格納されたので、ＦＩＦＯ＿ＥＭＰＴＹ信号はＦＩＦＯが空であることをもはや示していない。
【００２４】
この「０」信号を検出すると、受信側ではＦＩＦＯにデータが格納されたことが分り、そのデータを読み出す。しかしここでは、読み取り操作が行われずに送信側がＦＩＦＯ内へのデータ・ワードの送出を単純に継続するものと仮定しておく。
【００２５】
送信側がＦＩＦＯのレベル１に第２のデータ・ワードを送出するとき、送信側は図４に図示したように「レベル１」の状態セルであるＦＦ１にＷＲＩＴＥ信号を印加する。状態セルＦＦ１は図示したように出力「０」に切り換わる。しかしＦＩＦＯ＿ＥＭＰＴＹ信号は図示したように「０」のままで、レベル１の書き込みがＦＩＦＯの非空き状態（レベル０にはすでにデータが格納されている）を変更しなかった事実と一致している。
【００２６】
送信側がＦＩＦＯの第１の７つのレベルの各々に書き込むと、ＷＲＩＴＥを各々のレベルの状態セルＦＦへ印加する。最後に、図５に図示してあるように、送信側は第８のレベルへ書き込み、レベル７の状態セルへＷＲＩＴＥ信号を発行する。
【００２７】
ここで、８つのレベル全部にデータが取り込まれると、図５の状態セルＦＦは全て「０」信号を発生する。ＦＩＦＯ＿ＥＭＰＴＹ信号は「０」である。
【００２８】
ここで受信側がＦＩＦＯ内に保持されているデータの読み込みを開始するものと仮定する。受信側がレベル０のデータを読み取るときに、図６のＲＥＡＤ信号をレベル０の状態セルに向けて発行する。このＲＥＡＤ信号で、図示したように状態セルＦＦ０を「０」から「１」へ切り換える。しかしＦＩＦＯがまだ空になっていないので、ＦＩＦＯ＿ＥＭＰＴＹ信号は変更されないまま（「０」のまま）である。
【００２９】
次に、受信側がレベル１のデータを読み取り、図７に図示したようにそのレベルの状態セルＦＦ１へＲＥＡＤ信号を印加する。この状態セルは「０」から「１」へ切り換わる。ＦＩＦＯ＿ＥＭＰＴＹ信号は依然として変わらない。
【００３０】
受信側は各レベルの読み取りを継続する。受信側が最後のレベルであるレベル７に達すると、図８に図示したように、ＲＥＡＤ信号をそのレベルの状態セルＦＦ７に印加する。この状態セルは「０」から「１」へ変化する。ここで、ＡＮＤ＿１は８入力の「１」を受信し、これの出力は「０」から「１」へ変わる。図示したようにＦＩＦＯ＿ＥＭＰＴＹ信号は「０」から「１」へ変化する。
【００３１】
ＦＩＦＯ＿ＥＭＰＴＹ信号が「１」であるということは、ＦＩＦＯが空であることを表わしている。受信側はＦＩＦＯ＿ＥＭＰＴＹ信号を監視し、ＦＩＦＯ＿ＥＭＰＴＹ信号「１」に応答してＦＩＦＯの読み取りを打ちきる。
【００３２】
従って、本発明は受信側によるＦＩＦＯの読み取りに追従し、ＦＩＦＯの全レベルが読み取られた後でＦＩＦＯ＿ＥＭＰＴＹ信号を生成する。
【００３３】
［ＦＩＦＯ＿ＦＵＬＬ信号の生成］
本明細書では次にＦＩＦＯ＿ＦＵＬＬ信号の生成を説明する。図９では８つの状態セルＦＦ８〜ＦＦ１５からなる第２の列を図示してある。各々はＦＩＦＯの１つのレベルに対応している（つまり、２つの状態セルがＦＩＦＯの各々のレベルに対応していることになる。ＦＦ０とＦＦ８はレベル０に対応し、ＦＦ１とＦＦ９はレベル２に対応する、という具合である）。図示したように、初期化時に、全ての状態セルＦＦ８〜ＦＦ１５は「０」出力状態となるように駆動される。これらの出力（今は値が「０」）は全てＡＮＤ＿２で論理積が取られる。ＡＮＤ＿２はここで出力「０」を生成する。ＡＮＤ＿２の出力はＦＩＦＯ＿ＦＵＬＬ信号徒渉する。この信号が「１」の場合、ＦＩＦＯは満杯であると見なす。送信側はこの信号を監視しており、この信号でＦＩＦＯが満杯であると示された場合、送信側はこれ以上ＦＩＦＯへのデータ書き込みを行なわないようにする。
【００３４】
送信側がＦＩＦＯの第１のレベルであるレベル０へデータ・ワードを書き込む場合、前述のようにＷＲＩＴＥ信号を図３のＦＦ０へ印加する。このＷＲＩＴＥ信号は図１０のＦＦ０のＷＲＩＴＥ入力で反復される。
【００３５】
さらに、同じＷＲＩＴＥ信号が図１０に図示したようにＦＦ８に印加される。ＦＦ０とＦＦ８はそれぞれ対向する方向へ状態が変わる。ＦＦ０は状態「１」から「０」へ変化し、一方ＦＦ８は状態「０」から状態「１」へ変化する。
【００３６】
ＦＩＦＯ＿ＦＵＬＬ信号は、実際にＦＩＦＯが満杯でないので変化しない。しかし前述のように、これまで空だったＦＩＦＯにデータ・ワードが読み込まれたので、ＦＩＦＯ＿ＥＭＰＴＹ信号がこの時点で変化する。
【００３７】
送信側が第２のデータ・ワードをレベル１のＦＩＦＯへ書き込む場合、ＷＲＩＴＥ信号をＦＦ１とＦＦ９両方のセルへ印加する。両方のセルは図示したように状態が変化する。ＦＩＦＯ＿ＥＭＰＴＹ信号とＦＩＦＯ＿ＦＵＬＬ信号はどちらも「０」のまま変化しない。
【００３８】
送信側はＦＩＦＯへのデータ・ワード書き込みを続け、各々のＦＦの対にＷＲＩＴＥ信号を印加して、図１２に図示したＦＦ７とＦＦ１５へ印加されるＷＲＩＴＥ信号で書き込みを終える。この時点でＦＩＦＯは満杯である。これらのＦＦはどちらも状態が変化する。しかし、ＦＦ１５の状態変化によってＡＮＤ＿２は８入力の「１」を受信し、ＡＮＤ＿２の状態が変化する。ここでＡＮＤ＿２は値「１」のＦＩＦＯ＿ＦＵＬＬ信号を生成する。
【００３９】
ＦＩＦＯ＿ＦＵＬＬ信号は、ＦＩＦＯの８つのレベル全部がデータを含むことを表わしている。送信側はこの信号を監視し、この時点でこれ以上のＦＩＦＯへのデータ書き込みをやめる。
【００４０】
［読み取り動作］
これまでの説明は書き込み動作を考えてきた。ここでは読み取り動作について考察する。
【００４１】
ＦＩＦＯが満杯だと仮定する。この時点で、図１３に図示したように、読み取り動作の前は、左側のＦＦ列（ＦＦ０〜ＦＦ７）全部がデータ「０」を保持しており、これらの対応するレベルが満杯であることを表わしている。同様に、右側のＦＦ列（ＦＦ８〜ＦＦ１５）は全部データ「１」を保持しており、これらの対応するレベルが満杯であることを表わしている。
【００４２】
受信側がＦＩＦＯのレベル０を読み取る時点で、図示したように、受信側はＦＦ０とＦＦ８両方のＲＥＡＤ線にＲＥＡＤ信号を印加する。ＦＦ０の出力は「１」から「０」に変化し、一方ＦＦ８の出力は「１」から「０」に変化する。ＦＩＦＯ＿ＦＵＬＬ信号は「１」から「０」に変化し、この時点でＦＩＦＯが満杯ではないと見なされていることを表わす。送信側は所望すれば別のデータ・ワードをこのＦＩＦＯへ送出することが出来る。
【００４３】
図１４において、受信側はＦＩＦＯの読み取りを継続している。受信側はレベル１を読み取り、レベル１の両方のＦＦ即ちＦＦ１とＦＦ９のＲＥＡＤ入力へＲＥＡＤ信号を印加する。
【００４４】
受信側は残りのレベルの読み取りを続け、各々のレベルに対応する２個のＦＦにＲＥＡＤ信号を印加する。読み取り動作はレベル７の読み取りで終了し、この時点で受信側は図１５に図示したようにＦＦ７とＦＦ１５へＲＥＡＤ信号を印加する。この最後の読み取り動作の後、ＦＩＦＯ＿ＥＭＰＴＹフラグは「１」になるので、ＦＩＦＯは空であると見なされる。
【００４５】
［部分的ＷＲＩＴＥと部分的ＲＥＡＤ］
これまでの説明ではＦＩＦＯ全部に書き込む書き込み動作のシーケンスと、それに続けてＦＩＦＯ全部を読み取る読み取り動作について考察してきた。ここではＦＩＦＯの部分的書き込みと部分的読み取りについて考察する。
【００４６】
図１６において、送信側はレベル０からレベル５までに６つのデータ・ワードを書き込む。つまり、破線のＷＲＩＴＥ信号と最後の実線のＷＲＩＴＥ信号で示したように、送信側はＷＲＩＴＥ信号をＦＦ０からＦＦ５までに順次印加する。６回の書き込み動作の後のＦＦの状態を図１７に図示してある。
【００４７】
ここで、極端な例として、送信側が第７のデータ・ワードを書き込みできる前に受信側がデータ・ワードのうちの５つを読み取ると仮定する。つまり、図１８に示したように、受信側はセルＦＦ０からＦＦ４までにＲＥＡＤ信号を印加する。つまり、読み取り動作の後、
−レベル０からレベル４に対応する状態セルは、これらのレベルが空であることを示す。
【００４８】
−レベル５に対応する状態セルは、このレベルが満杯であることを示す。
【００４９】
−レベル６とレベル７に対応する状態セルは、これらのレベルが空であることを示す。
【００５０】
ここで、図１９に図示したように、送信側がレベル６にデータを書き込む。図１９では、この最後の書き込み動作の後の、状態セルの現在の状態を表わしている。
【００５１】
これまでの説明ではＦＩＦＯ＿ＦＵＬＬ信号とＦＩＦＯ＿ＥＭＰＴＹ信号の生成を説明した。以下の説明では、これらの信号が異なる２種類のクロック、即ち送信側のクロックと受信側のクロックに対してどのように同期するかを説明する。
【００５２】
［メモリーセルＦＦの構造］
メモリーセルＦＦ０〜ＦＦ１５の各々は図２０の破線の囲みを各々が占有している。状態セルＦＦ０〜ＦＦ７は全て同一である。状態セルＦＦ８〜ＦＦ１５は全て同一である。これら状態セルの対は図３０に図示してある。状態セルＦＦ０〜ＦＦ１５の各々はＤＦＦＲＳＰとラベルを付けてあるＤ型フリップフロップ（同期セットおよびリセットを有するＤ型フリップフロップの略称）と、ＳＹＮＣＨ  ＲＰとラベルを付けたブロックとを含む。
【００５３】
ＳＹＮＣＨ  ＲＰの詳細については後述する。ここでは、ＳＹＮＣＨ  ＲＰが２つのことを行なうと分かっていれば十分である。その１つは、入力の信号ＳＤ（Ｄ：データ）を出力ＳＱに複写する（ＳＱバーはＱの反転である）ことである。
【００５４】
もう１つは、出力信号（ＳＱまたはＳＱバーの出力）をクロック入力ＳＣＫと同期させることである。つまり、「Ａ  ＣＬＯＣＫ」信号を受信する「Ａ  ＣＬＯＣＫ」信号と同期させ、一方「Ｂ  ＣＬＯＣＫ」信号を受信するＳＹＮＣＨ
ＲＰはその出力を「Ｂ  ＣＬＯＣＫ」信号と同期させる。
【００５５】
［ＤＦＦＲＳＰの動作］
図３１はＤＦＦＲＳＰ（本明細書においてはＤ型フリップフロップを指す）の入出力動作を図示している。Ｓ（セット）入力は出力ＱをＨＩにする。Ｒ（リセット）入力は出力ＱをＬＯにする。ＣＫ（クロック）入力はＤ（データ）入力に現われる信号（ＨＩまたはＬＯ）を出力Ｑに取り出す。ＱバーはＱの論理的反転である。
【００５６】
［ＳＹＮＣＨ  ＲＰの動作］
図３２はＳＹＮＣＨ  ＲＰの入出力動作を図示したものである。ＳＲ（リセット）入力は出力ＳＱをＨＩにする。ＳＣＫ（クロック）入力はＳＤ（データ）入力に現われる信号（ＨＩまたはＬＯ）を出力Ｑに取り出す。ＳＱバーはＳＱの論理的反転である。
【００５７】
［初期化：ＩＮＩＴ信号に対するＦＦの応答］
ＩＮＩＴ（初期化）信号は図３０に図示してある。同じ信号が図２０の左側上隅に図示してある。この信号はコンピュータ、プロセッサ、またはその他の、ＦＩＦＯ（図示していない）経由でデータを転送しようとする装置が発行する。ＩＮＩＴ信号は次のような動作を起こさせる。
【００５８】
図３０の、Ｄ型フリップフロップＤ１のＳ（セット）入力に信号が到達する。これによりそのフリップフロップのＱバーが図示したようにＬＯになる。このＬＯ信号はＦＦ０のＳＹＮＣＨ  ＲＰのＳＲ入力へ供給され、図示したようにＳＱバー出力をＨＩにする（ＳＱバーのＨＩ信号は実際には２クロック周期遅れて出現するが、これについては後述する）。このＨＩ信号は、例えば図２のＦＦ０で図示した「１」信号に対応する。このＨＩ（または「１」）信号はレベル０（ＦＦ０が対応しているレベル）が空であることを表わしている。
【００５９】
図３０のＩＮＩＴ信号はＦＦ８のＤ型フリップフロップのＳ（セット）入力にも到達する。これによって図示したようにフリップフロップの出力ＱがＨＩになる。このＨＩ出力はＦＦ８のＳＹＮＣＨ  ＲＰのＳＤ（Ｄ：データ）入力に供給される。ＨＩ信号はＳＹＮＣＨ  ＲＰを通って伝播し、２クロック遅れてＳＱバー出力に（反転した状態で）現われる（２クロックの遅延については後述する）。この（ＳＱバー出力での）ＬＯ信号は、例えば図２においてＦＦ８のＬＯ信号に対応するものである。このＬＯ（または「０」）信号は、レベル０（ＦＦ８が対応しているレベル）が空であることを表わしている。
【００６０】
つまり、ＩＮＩＴ信号は全てのＦＦを図２に図示した状態にセットする。図２のＦＩＦＯ＿ＥＭＰＴＹ信号はＨＩであり、ＦＩＦＯ＿ＦＵＬＬ信号はＬＯである。ＦＩＦＯはデータの受け入れ準備が完了する。
【００６１】
［ＷＲＩＴＥ信号に対するＦＦの応答］
送信側がＦＩＦＯ内のあるレベルにデータを書き込む場合、前述のように図２の対応するＦＦにＷＲＩＴＥ信号を印加する。図３３はＷＲＩＴＥ信号が各々のＦＦ内で（または状態セル内で）発生させる変化を表わしている。
【００６２】
ＷＲＩＴＥ信号はＦＦ０のＤ型フリップフロップＤ１のＲ（リセット）入力へ供給される。これによって図示したようにＱバー出力がＨＩになる。このＨＩ信号がＳＹＮＣＨ  ＲＰのＳＲ（Ｒ：リセット）入力へ供給され、ＳＹＮＣＨ  ＲＰをリセット状態から解放する（ＳＲへ印加したそれまでのＬＯ信号でＳＹＮＣＨ  ＲＰはリセット状態に保持されていた）。
【００６３】
ＳＹＮＣＨ  ＲＰはリセット状態から解放されたので、Ａ  ＣＬＯＣＫ信号が発生すると（Ａ  ＣＬＯＣＫ信号はシステムＡが使用するクロック信号で、今の例では受信側に相当する）、ＳＹＮＣＨ  ＲＰはＳＤ（Ｄ：データ）に存在するデータをラッチする。このデータ信号は常にＨＩである。２クロックパルス遅れて（これについては後述する）、データ信号がＳＱバーに現われるが、ここでは反転している。つまり、ＳＱバーはＬＯである。
【００６４】
ＳＱバーのＬＯ信号は図３のＦＦ０に現われるＬＯ（または「０」）信号に対応する。つまり、ＷＲＩＴＥ信号によってＦＦ０が「１」から「０」に変化し、データが存在することを表わす。
【００６５】
図３３において、ＷＲＩＴＥ信号はＦＦ８のＤ型フリップフロップＤ２のＲ（リセット）入力、およびＦＦ８のＳＹＮＣＨ  ＲＰのＳＲ（Ｒ：リセット）入力にも供給される。ＷＲＩＴＥ信号は第１にＳＹＮＣＨ  ＲＰをリセット状態に入れ、ＳＱバーは図示したようにＨＩになる。ＳＱバーのＨＩ状態はＤ型フリップフロップをリセット状態にすることで維持され、これによって図示したように出力ＱがＨＩになる。
【００６６】
繰り返すが、ＷＲＩＴＥ信号はＦＦ８のを即時的に切り換える。ＷＲＩＴＥ信号はいつまでも持続しないので、Ｄ型フリップフロップＤ２のＱに発生したＨＩを用いてＳＱバーをＨＩに維持する。ＱのＨＩ状態は、今の例では送信側の装置ＢのクロックであるＢ  ＣＬＯＣＫによりＳＹＮＣＨ  ＲＰを通してクロックされている。
【００６７】
［ＲＥＡＤ信号に対するＦＦの応答］
受信側がＦＩＦＯのあるレベルからデータを読み取る場合、前述のように対応するＦＦにもＲＥＡＤ信号を印加する。図３４はＲＥＡＤ信号によって発生する変化を図示したものである。
【００６８】
ＲＥＡＤ信号はＤ型フリップフロップＤ１およびＤ２のＣＫ（クロック）入力へ供給される。これによって図示したようにＤ１のＱバー出力がＬＯになる。
このＬＯ信号はＳＹＮＣＨ  ＲＰ１０のＳＲ（リセット）入力へ供給されてＳＹＮＣＨ  ＲＰ１０をリセット状態に保持する。図示したように、出力ＳＱバーはＨＩになる。このＨＩ信号は図２０のＡＮＤ＿１へ供給され、（あるレベルの読み出しでそのレベルが空と見なされることになるため）ＦＩＦＯ＿ＥＭＰＴＹ信号を発生させる。
【００６９】
ＲＥＡＤ信号は別のＤ型フリップフロップＤ２のＣＫ（クロック）入力の両方にも供給される。ＲＥＡＤ信号は第１にＤ２にＤ入力のＨＩ信号をラッチさせ、図示したように出力ＱをＨＩにする。
【００７０】
Ｄ２のＱにおけるＨＩ出力はＳＹＮＣＨ  ＲＰ１３のＳＤ（Ｄ：データ）入力に供給される。このＨＩ入力は、２クロック周期遅れてＳＱバー出力に反転して現われる。図示したようにＳＱバーはＬＯになる。
【００７１】
繰り返すが、ＲＥＡＤ信号はＳＹＮＣＨ  ＲＰ１０を即時的に切り換える（Ｄ１のＱバーがＳＹＮＣＨ  ＲＰをすぐに（厳密にはクロックの速度に比べて小さい伝播遅延の後）リセット状態にするため）。ＲＥＡＤ信号は永久に持続しないので、フリップフロップＤ１のＱバー出力に現われたＬＯを用いてＳＱバーのＨＩ状態を維持する。このＤ１のＱバーでのＬＯは、今の例では送信側の装置ＡのクロックであるＡ  ＣＬＯＣＫによりＳＹＮＣＨ  ＲＰを通してクロックされている。
【００７２】
［ＳＹＮＣＨ  ＲＰ］
図３５はＳＹＮＣＨ  ＲＰの内部構造を図示したものである。図３６は、図３５にも図示したＤＡＴＡ  ＩＮ信号がどのようにＣＬＯＣＫと同期するか、またどのように２クロック周期の遅延が挟まれるかを示している。
【００７３】
ＦＩＲＳＴ  ＯＵＴ端末はクロックと同期した信号を生成する（術語「同期」は技術用語の１つである。その定義は本明細書の後で示す。同期の概念における基本的前提は次のようなものである：ある信号があるクロック信号と同期するのは、その信号がクロック信号の発生と同時に（または所定の時間内に）読み取られる準備が出来ている場合である）。
【００７４】
ＳＹＮＣＨ  ＲＰにおいて、ＦＩＲＳＴ  ＯＵＴ信号はＩＮＰＵＴデータが安定した後発生するＣＬＯＣＫ信号の第１の立ち上がり縁に同期する。
【００７５】
ＳＥＣＯＮＤ  ＯＵＴ端末はこれもクロックと同期した信号を生成するが、１クロック周期だけＦＩＲＳＴ  ＯＵＴ信号より遅延する。
【００７６】
つまりＳＹＮＣＨ  ＲＰは（ａ）ＳＥＣＯＮＤ  ＯＵＴ信号をクロックと同期させるが、（ｂ）２クロック周期だけ遅延させる。
【００７７】
［カウンタとデコーダ：図２０］
これまでの説明では、ＲＥＡＤとＷＲＩＴＥ信号が図２のＦＦにシーケンスとして印加されると述べた。次に８つのＦＦへのシーケンスとしてのＲＥＡＤおよびＷＲＩＴＥ信号の生成を説明する。
【００７８】
受信側のコンピュータＡがＦＩＦＯを読み取る場合、図２０左上に図示したようにＡ＿ＲＤ（Ａ−ＲＥＡＤの略称）信号を生成する。各々のＡ＿ＲＤ信号は３ビットカウンタＣＴＲをクロックしている。つまり、第１の読み取り動作では、カウンタ出力は０００から００１へ変化する。第２の動作では、カウンタ出力は００１から０１１へ変化し、以下同様に続く。
【００７９】
カウンタＣＴＲは０００から１１１まで計数し、このあとまた０００からカウントを始める（カウンタＣＴＲは１方向にだけ連続的にカウントを行なう）。
カウンタＣＴＲの３ビット出力は、「３対８」とラベル付けしてある３対８デコーダに供給される。このデコーダはカウンタの３ビット出力に対応するバスＬＬの１つの線を引き上げる。例えば、カウンタの３ビット出力が０００の場合、デコーダは「Ｌ０」とラベルを付けてある線を高値にする（「Ｌ０」はＬ−ＺＥＲＯであって「ＬＯ（ロー）」ではない）。カウンタの３ビット出力が００１の場合には、デコーダはＬ１をＨＩにする。
【００８０】
つまり、線Ｌ０からＬ１が順にＨＩになる。このシーケンスによってＤ１フリップフロップのＣＫ入力が順番にＨＩになる。つまり、ＦＦ０のＤ１のＣＫが第１にＨＩになり、ＦＦ０からＦＦ７までの他の全てのＣＫはＬＯとなる。
【００８１】
次に、ＦＦ１のＤ１のＣＫがＨＩになり、ＦＦ０からＦＦ７までの他の全てのＣＫはＬＯとなる。
【００８２】
次に、ＦＦ２のＤ１のＣＫがＨＩになり、ＦＦ０からＦＦ７までの他の全てのＣＫはＬＯとなる。以下同様に続く。
【００８３】
ＮＡＮＤゲートＮとインバータＩは、カウンタＣＴＲと３対８でコーダと一緒にこの連続動作を行なわせる。当然のことながら、８本のＲＥＡＤ線を１回に１本づつ順番に作動させるための従来技術で周知の他の方法が存在する。
【００８４】
ここでは図３から図５を参照して前述したように、順番に各々のＦＦにＲＥＡＤ信号を印加する方法を説明した。ＷＲＩＴＥ信号は、図２０の左上の部分に図示したＢ＿ＷＲ（Ｂ  ＷＲＩＴＥの略称）によって供給されるカウンタＣＴＲによって、同じ方法で順番に各々のＦＦへ印加される。
【００８５】
［重要なポイント］
ポイント１．以下のことがらを説明する。
【００８６】
事項：図３３のＷＲＩＴＥ信号は、ＳＹＮＣＨ  ＲＰ１３が図２０のＡＮＤゲート２０へ供給されるので、ＦＩＦＯ＿ＦＵＬＬ信号を作動させることが出来る。
【００８７】
事項：逆に、同じＷＲＩＴＥ信号で、図３３のＳＹＮＣＨ  ＲＰ１０が図２０のＡＮＤゲート２３へ供給されるため、ＦＩＦＯ＿ＥＭＰＴＹ信号を作動停止させることが出来る。
【００８８】
事項：ＦＩＦＯ＿ＦＵＬＬ信号のこの動作はＷＲＩＴＥ信号により即時的に生成される。
【００８９】
事項：ＦＩＦＯ＿ＥＭＰＴＹ信号のこの動作は受信側のクロックと同期しており、同期遅延の後で発生する。
【００９０】
事項：図３４のＲＥＡＤ信号は、ＳＹＮＣＨ  ＲＰ１３が図２０のＡＮＤゲート２０へ供給されるので、ＦＩＦＯ＿ＦＵＬＬ信号を作動停止させることが出来る。
【００９１】
事項：逆に、同じＲＥＡＤ信号で、図３３のＳＹＮＣＨ  ＲＰ１０が図２０のＡＮＤゲート２３へ供給されるため、ＦＩＦＯ＿ＥＭＰＴＹ信号を作動させることが出来る。
【００９２】
事項：このＦＩＦＯ＿ＥＭＰＴＹ信号の作動はＲＥＡＤ信号により即時的に行われる。
【００９３】
事項：ＦＩＦＯ＿ＦＵＬＬ信号の作動停止は送信側のクロックと同期しており、同期遅延の後で発生する。
【００９４】
［事項の説明］
ここで考えている例では、コンピュータＢが送信側で、ＷＲＩＴＥ信号を発行している。またコンピュータＡが受信側で、ＲＥＡＤ信号を発行している。
【００９５】
［ＷＲＩＴＥ信号の効果］
図３３において、ＷＲＩＴＥ信号は主として２つの作用を起こす可能性を有している：図３３の「ＡＮＤ＿１へ」の線上の信号を経由して図２と図２０のＦＩＦＯ＿ＥＭＰＴＹ信号を作動停止させ、「ＡＮＤ＿２へ」と表記してある線上の信号を経由してＦＩＦＯ＿ＦＵＬＬ信号を作動させる。
【００９６】
つまり、０から６までの７つのレベルのＦＩＦＯが満杯であると仮定すると、図２と図２０のＡＮＤ＿２はＦＦ８〜ＦＦ１４の７つの状態セルから「１」信号を受信しており、ＦＦ１５状態セルからは「０」信号を受信している。このＡＮＤゲートは出力「０」を生成する。ＦＩＦＯ＿ＦＵＬＬ信号は発行されない。
【００９７】
コンピュータＢがＦＩＦＯのレベル８に書き込むと、ＷＲＩＴＥ信号がＦＦ１５に（ＲＥＡＤ信号による反転が発生していないとして）到達する。ＷＲＩＴＥ信号は図３３に図示してある。ＦＦ１５の出力は「１」となる。ここで図２０のＡＮＤ＿２は「０」から「１」へ切り換わり、ＦＩＦＯ＿ＦＵＬＬ信号を生成する。
【００９８】
同期は重要である。ＦＩＦＯ＿ＦＵＬＬ信号は図３３のＳＹＮＣＨ  ＲＰが発生する。前述したように、ＳＹＮＣＨ  ＲＰはＷＲＩＴＥ信号によって即時的に切り換わる。即ち、ＦＩＦＯ＿ＦＵＬＬ信号の起動時に同期遅延は起こらない。さらに、この信号を発行する装置（コンピュータＢ）もＦＩＦＯの満杯状態を引き起こす装置であり、この信号を必要とする。
【００９９】
逆の状態を考えると、（前述のような）ＦＩＦＯ＿ＦＵＬＬ信号を作動することの出来る同じＷＲＩＴＥ信号が図２と図２０のＡＮＤ＿１で生成されたＦＩＦＯ＿ＥＭＰＴＹ信号を作動停止することもできる。作動停止は図３３のフリップフロップＤ１に到達するＷＲＩＴＥ信号によって引き起される。
【０１００】
［異なる同期］
繰り返すと、ＷＲＩＴＥ信号はＦＩＦＯ＿ＦＵＬＬ信号を作動させることが出来、ＦＩＦＯ＿ＥＭＰＴＹ信号を作動停止させることが出来る。しかし、起動と作動停止は別個に同期している。
【０１０１】
ＦＩＦＯ＿ＦＵＬＬ信号の起動は図３３のＳＹＮＣＨ  ＲＰ１３のＷＲＩＴＥ信号リセット動作により行われる。このリセットによってＦＩＦＯ＿ＦＵＬＬ信号が即時的に（伝播遅延が起きる）発生する。
【０１０２】
逆に、ＦＩＦＯ＿ＥＭＰＴＹ信号の作動停止は図３３のフリップフロップＤ１のＷＲＩＴＥ信号切り換えにより行われる。作動停止はＳＹＮＣＨ  ＲＰ１０による同期遅延の後で発生する。送信側の生成するＷＲＩＴＥ信号の直後に作動停止は行われないが、これは、受信側のクロックであるＡ  ＣＬＯＣＫによってクロックされているＳＹＮＣＨ  ＲＰ１０で作動停止信号が生成されるためである。
【０１０３】
つまり、作動停止の場合には、送信側（コンピュータＢ）がＷＲＩＴＥ信号を発行し、これによってＦＩＦＯ＿ＥＭＰＴＹ信号の作動を停止する。しかし、信号の作動停止は、実際には受信側（コンピュータＡ）のクロックによって引き起こされ、またこれと同期している。
【０１０４】
［ＲＥＡＤ信号の効果］
図３４において、ＲＥＡＤ信号は主として２つの作用を引き起こす可能性を有している：図２と図２０のＦＩＦＯ＿ＥＭＰＴＹ信号を作動させ、同図に図示したＦＩＦＯ＿ＦＵＬＬ信号を停止させる。
【０１０５】
つまり、ＦＩＦＯの０から６までの７つのレベルが空だと仮定する。図２と図２０のＡＮＤ＿１は７つの状態セルＦＦ０〜ＦＦ６から「１」信号を受信しており、状態セルＦＦ７からの「０」信号を受信している。これによりＡＮＤゲートは出力「０」を生成する。ＦＩＦＯ＿ＥＭＰＴＹ信号は作動されない。
【０１０６】
コンピュータＡがＦＩＦＯのレベル７を読み込むとき、ＲＥＡＤ信号がＦＦ７に到達する（ＷＲＩＴＥ信号による反転が発生しないものと仮定する）。ＲＥＡＤ信号は図３４に図示してある。ＦＦ７の出力は「１」となる。ここで、図２０のＡＮＤゲート２３が「０」から「１」に切り換わり、ＦＩＦＯ＿ＥＭＰＴＹ信号を発生する。
【０１０７】
同期は重要である。ＦＩＦＯ＿ＥＭＰＴＹ信号は図２５のＳＹＮＣＨ  ＲＰ１０に起因する。ＳＹＮＣＨ  ＲＰは即時的に（Ｄ１とＳＹＮＣＨ  ＲＰ１０を通過する際の伝播遅延を除く）ＲＥＡＤ信号によって切り換わる。つまり、ＦＩＦＯ＿ＥＭＰＴＹ信号の作動時には同期遅延が発生しない。さらに、この信号を作動させる装置（コンピュータＡ）もＦＩＦＯ内の空の状態を発生させる装置であり、この信号を必要とする。
【０１０８】
逆の状況を考えてみると、（前述のように）ＦＩＦＯ＿ＥＭＰＴＹ信号を作動させることの出来るのと同じＲＥＡＤ信号で、図２と図２０のＡＮＤゲート２０により生成されたＦＩＦＯ＿ＦＵＬＬ信号を作動停止させることもできる。作動停止は図３４のフリップフロップＤ２に到達するＲＥＡＤ信号に起因する。
【０１０９】
繰り返すが、ＲＥＡＤ信号はＦＩＦＯ＿ＥＭＰＴＹ信号を作動させることが出来、ＦＩＦＯ＿ＦＵＬＬ信号を作動停止させることが出来る。しかし、起動と作動停止は別々に同期している。
【０１１０】
ＦＩＦＯ＿ＥＭＰＴＹ信号の作動は、Ｄ１のＱバー出力を経由したＲＥＡＤ信号による図３４のＳＹＮＣＨ  ＲＰ１０のリセットで発生する。ＦＩＦＯ＿ＥＭＰＴＹ信号はＲＥＡＤ信号の直後（伝播遅延が起こる）に発生する。
【０１１１】
逆に、ＦＩＦＯ＿ＦＵＬＬ信号の作動停止は図３４のフリップフロップＤ２がＲＥＡＤ信号によって切り換わることで発生する。作動停止はＳＹＮＣＨ  ＲＰ１３による同期遅延の後で発生する。受信側により生成されたＲＥＡＤ信号の直後に作動停止が発生しないのは、作動停止信号がＳＹＮＣＨ  ＲＰ１３で生成され、これが送信側のクロックであるＢ  ＣＬＯＣＫによりクロックされているためである。
【０１１２】
つまり、作動停止の場合、受信側（コンピュータＡ）はＲＥＡＤ信号を発行し、これによってＦＩＦＯ＿ＦＵＬＬ信号の作動停止を行なうことが出来る。しかし、この信号の作動停止は実際には送信側（コンピュータＢ）のクロックに起因しており、これと同期している。
【０１１３】
ポイント２．送信側から受信側への転送中にＦＩＦＯはデータを保持する。データ転送は一方通行である。受信側が送信側へデータを送信することを所望する場合、第２のＦＩＦＯと、図２０の本発明の複製を設けることが出来る。
【０１１４】
ポイント３．本発明により、ＦＩＦＯが満杯になるまで、送信側は送信側の各クロック周期毎に１つのデータ・ワードをＦＩＦＯへ書き込むことが出来る。この時点でＦＩＦＯ＿ＦＵＬＬフラグが立てられ（直後、伝播遅延が起こる）、送信側によるこれ以上のデータの書き込みを停止させる。
【０１１５】
逆に、本発明により、ＦＩＦＯが空になるまで、受信側は受信側の各クロック周期毎にＦＩＦＯから１つのデータ・ワードを読み出すことが出来る。この時点でＦＩＦＯ＿ＥＭＰＴＹフラグが立てられ（直後、伝播遅延が起こる）、受信側によるこれ以上のデータの読み込みを停止させる。
【０１１６】
例えば、図３７では送信側のクロックが受信側のクロックより速い場合を図示している。送信側による最後の４回の書き込み動作の後、図示してあるようにＦＩＦＯは満杯になる。受信側がＦＩＦＯを読み出す場合、図示したように、ＲＥＡＤ信号によって送信側の第２のクロック立ち上がり端でＦＩＦＯ＿ＦＵＬＬ信号が作動停止する。ここで送信側はさらにデータを書き込むことが出来るようになる。しかし、受信側のＦＩＦＯ読み取りは中断されない。受信側はそのクロックパルス毎に１つのデータ・ワードを読み出すことが出来る。
【０１１７】
一般に、受信側のクロックが送信側のクロックよりも遅い場合、受信側は受信側のクロックパルス毎に１つのデータ・ワードをＦＩＦＯから読み出すことが出来る。送信側には図３７に示した形式の遅延が発生する。
【０１１８】
逆に、送信側のクロックが受信側のクロックよりも遅い場合、送信側は送信側のクロックパルス毎に１つのデータ・ワードをＦＩＦＯへ書き込むことが出来る。
【０１１９】
両者のクロックが周波数的に十分近いけれども、同期してはいない場合、送信側はクロックパルス１つ毎に１つのデータ・ワードを書き込むことが出来、受信側はクロックパルス１つ毎にＦＩＦＯから１つのデータ・ワードを読み出すことが出来る。
【０１２０】
ポイント４．簡単な例で「同期」を説明する。だれかが光の点滅する回数を数えたいと仮定する。点滅は無作意な時刻に発生するものとする。光は送信側であり、この人の目は受信側である。しかし、その人がまばたきをするので、点滅の計数には問題が発生することがある。
【０１２１】
つまり、点滅した時点でその光が常に１秒間持続するものとし、またまばたきが１／１０秒で行なえるものと仮定すると、明らかなように、まばたきを行なった瞬間がどうあれ、まばたきによって計数が中断されることはない。
【０１２２】
しかし、光が１／１５秒間だけ転倒する場合には、点滅がまばたきと同時に発生し得ることが考えられ、計数できないことがある。この場合、ある人が無作意な点滅を正確に計数するのは不可能である。
【０１２３】
しかし、フラッシュが１秒間のブザー音が鳴っている間にだけ点滅することにするという規則を付け加えた場合、その人はブザー音の度に１秒間にわたって目を開いたままにしておくことが出来る。これで目と点滅を同期させることが出来、全ての点滅を計数することが出来るようになる。
【０１２４】
つまり、「同期」の１つの定義は、信号（点滅）がクロック（ブザー音）にたいして所定の時間枠内で発生する場合、信号とクロックが同期しているという。
他の「同期」の定義も可能である。
【０１２５】
ポイント５．送信側のクロックが受信側のクロックより大幅に速い場合、一般に、ＦＩＦＯ＿ＥＭＰＴＹ信号は発生しなくなるが、これはいつでも送信側がＦＩＦＯ＿ＦＵＬＬ信号の作動停止とほぼ同時にＦＩＦＯ内へ再書き込みを行なってしまうためである。受信側はＦＩＦＯを空にすることが出来なくなる。一般的には、ＦＩＦＯは少なくとも７つのデータ・ワードを含むことになる。
【０１２６】
逆に、受信側のクロックが送信側のクロックより大幅に速い場合、一般にＦＩＦＯ＿ＦＵＬＬ信号は発生しなくなるが、これは、ＦＩＦＯ＿ＥＭＰＴＹ信号が作動停止するとほぼ同時に受信側が常にＦＩＦＯを読み出してしまうためである。送信側はＦＩＦＯを満杯にすることが出来なくなる。一般的には、ＦＩＦＯは最大でも１つのデータ・ワードを含むだけである。
【０１２７】
つまり、１つの条件下で、ＦＩＦＯ＿ＦＵＬＬ信号はまったく使用されず、別の条件下では、ＦＩＦＯ＿ＥＭＰＴＹ信号がまったく使用されない。そのため、本発明では２種類のクロックが相互に近接しているような場合に広く適用範囲を求めることが出来る。
【０１２８】
ポイント６．図３０はフリップフロップＤ１とＤ２の両方が同じ入力を受信することを表わしている。その結果、各々のＦＦの対の２個のフリップフロップを、図３８のように接続した１つのフリップフロップＤ３に置き換えることが可能になる。
【０１２９】
ポイント７．ＦＩＦＯはコンピュータ間を移動するデータを保持する必要はない。他の形式の装置間でのデータ転送に本発明を使用することが可能である。
ポイント８．書き込み動作と読み出し動作は一般にＦＩＦＯの１つのレベルに処理を行なう動作と見なすことが出来る。書き込み動作はそのレベルにデータを書き込み、一方読み出し動作はあるレベルから読み出して、そのレベルを空にするものと考えられる。読みだしと書き込みの両方を「ＦＩＦＯレベル操作」と称することが出来る。
【０１３０】
【発明の効果】
本発明は送信側と受信側の間のデータ転送の改良を提供する。また、データ転送に使用するＦＩＦＯバッファの状態を監視し該ＦＩＦＯの状態にしたがって満杯（ｆｕｌｌ）および空（ｅｍｐｔｙ）信号を生成するようなシステムを提供する。
【図面の簡単な説明】
【図１】  カウンタ回路をＦＩＦＯの状態インジケータとして使用する方法を示し、発明者の創作である。
【図２】  初期化の直後の状態インジケータの半分の状態を図示する。
【図３】  状態レジスタの半分が８回の書き込み操作に応答する方法を図示する。
【図４】  状態レジスタの半分が８回の書き込み操作に応答する方法を図示する。
【図５】  状態レジスタの半分が８回の書き込み操作に応答する方法を図示する。
【図６】  図３から図５までの書き込み操作に続けて行なう８回の読み取り操作に対して状態レジスタが応答する方法を図示する。
【図７】  図３から図５までの書き込み操作に続けて行なう８回の読み取り操作に対して状態レジスタが応答する方法を図示する。
【図８】  図３から図５までの書き込み操作に続けて行なう８回の読み取り操作に対して状態レジスタが応答する方法を図示する。
【図９】  初期化直後の状態レジスタ全部の状態を図示する。
【図１０】  状態レジスタ全部が８回の書き込み操作に応答する方法を図示する。
【図１１】  状態レジスタ全部が８回の書き込み操作に応答する方法を図示する。
【図１２】  状態レジスタ全部が８回の書き込み操作に応答する方法を図示する。
【図１３】  図１０から図１２に図示した８回の書き込み操作に続けて、８回の読み取り操作に対し状態レジスタ全部が応答する方法を図示する。
【図１４】  図１０から図１２に図示した８回の書き込み操作に続けて、８回の読み取り操作に対し状態レジスタ全部が応答する方法を図示する。
【図１５】  図１０から図１２に図示した８回の書き込み操作に続けて、８回の読み取り操作に対し状態レジスタ全部が応答する方法を図示する。
【図１６】  状態レジスタ全部が６回の書き込み操作に対して応答する方法を図示する。
【図１７】  図１６の書き込み操作の後の状態レジスタの状態を図示する。
【図１８】  図１６の書き込み操作の直後に、書き込み操作と干渉しないで５回の読み取り操作に対し状態レジスタ全部が応答する方法を図示する。
【図１９】  図１８の６回の読み取り操作に続けて、さらに書き込み操作を続ける状態レジスタの状態を図示する。
【図２０】  本発明の１つの態様を図示する。
【図２１】  本発明の１つの態様を図示する。
【図２２】  本発明の１つの態様を図示する。
【図２３】  本発明の１つの態様を図示する。
【図２４】  本発明の１つの態様を図示する。
【図２５】  本発明の１つの態様を図示する。
【図２６】  本発明の１つの態様を図示する。
【図２７】  本発明の１つの態様を図示する。
【図２８】  本発明の１つの態様を図示する。
【図２９】  本発明の１つの態様を図示する。
【図３０】  図２０のＦＦ０〜ＦＦ８の内部構造と、ＦＦ０〜ＦＦ８がＩＮＩＴ（初期化）信号に応答する方法を図示する。
【図３１】  図３０の素子Ｄ１の入出力応答を図示する。
【図３２】  図３０の素子Ｄ２の入出力応答を図示する。
【図３３】  書き込み（ＷＲＩＴＥ）信号へのＦＦ０〜ＦＦ８の応答を図示する。
【図３４】  読み取り（ＲＥＡＤ）信号に対するＦＦ０〜ＦＦ８の応答を図示する。
【図３５】  ＦＦ０とＦＦ８の両方に図示したＳＹＮＣＨ  ＲＰの構造を図示する。
【図３６】  ＳＹＮＣＨ  ＲＰの動作を図示する。
【図３７】  受信側のクロックが送信側のクロックよりも遅い場合に発生する１シーケンスの動作を図示する。
【図３８】  図２０の状態レジスタＦＦの別の構造を図示する。
【符号の説明】
１０    ＳＹＮＣＨ  ＲＰ
１３    ＳＹＮＣＨ  ＲＰ
２０    ＡＮＤゲート
２３    ＡＮＤゲート
ＦＦ    状態セル
【図１】
0003765547.tif 000002
【図２】
0003765547.tif 000003
【図３】
0003765547.tif 000004
【図４】
0003765547.tif 000005
【図５】
0003765547.tif 000006
【図６】
0003765547.tif 000007
【図７】
0003765547.tif 000008
【図８】
0003765547.tif 000009
【図９】
0003765547.tif 000010
【図１０】
0003765547.tif 000011
【図１１】
0003765547.tif 000012
【図１２】
0003765547.tif 000013
【図１３】
0003765547.tif 000014
【図１４】
0003765547.tif 000015
【図１５】
0003765547.tif 000016
【図１６】
0003765547.tif 000017
【図１７】
0003765547.tif 000018
【図１８】
0003765547.tif 000019
【図１９】
0003765547.tif 000020
【図２０】
0003765547.tif 000021
【図２１】
0003765547.tif 000022
【図２２】
0003765547.tif 000023
【図２３】
0003765547.tif 000024
【図２４】
0003765547.tif 000025
【図２５】
0003765547.tif 000026
【図２６】
0003765547.tif 000027
【図２７】
0003765547.tif 000028
【図２８】
0003765547.tif 000029
【図２９】
0003765547.tif 000030
【図３０】
0003765547.tif 000031
【図３１】
0003765547.tif 000032
【図３２】
0003765547.tif 000033
【図３３】
0003765547.tif 000034
【図３４】
0003765547.tif 000035
【図３５】
0003765547.tif 000036
【図３６】
0003765547.tif 000037
【図３７】
0003765547.tif 000038
【図３８】
0003765547.tif 000039