(57)【要約】【課題】小容量の高速同期ＦＩＦＯを簡易な回路構成で連結し、大容量を得ることができ、データの転送を効率的かつ適正に行うことができるＦＩＦＯ回路を提供すること。【解決手段】書込み動作の際に、複数個のＦＩＦＯ２のうち現在書込みが行われているＦＩＦＯ２は、フル状態の前にオールモストフル信号をライト回路３へ出力し、ライト回路３は、次のＦＩＦＯ２への書込みに切り替えるようにし、読出し動作の際に、現在読出しが行われているＦＩＦＯ２は、エンプティ状態になったらエンプティ信号をリード回路４へ出力し、リード回路４は、次のＦＩＦＯ２からの読出しに切り替えるようにされてなること。【選択図】　　　図１
2004139377.tif 000002
【特許請求の範囲】
【請求項１】
データの書き込みおよび読み出しを可能とされたＦＩＦＯと、このＦＩＦＯに対して、ライト信号の入力を受けてデータの書き込み動作を行うライト回路と、リード信号の入力を受けてデータの読み出し動作を行うリード回路とを備えたＦＩＦＯ回路において、
複数個のＦＩＦＯが、順次にデータの書き込みまたは読み出しを行い得るように連結され、
前記書き込み動作の際には、前記複数個のＦＩＦＯのうち現在書き込みが行われている任意のＦＩＦＯは、フル状態になる前にオールモストフル信号を前記ライト回路へ出力するようにされ、かつ、前記ライト回路は、前記オールモストフル信号の入力を受けて現在書き込みが行われているＦＩＦＯに対する書き込み動作を中止して次に書き込みが行われるＦＩＦＯへのデータの書き込みに切り替えることによってＦＩＦＯの容量を使い切らないようにされ、
一方、前記読み出し動作の際には、現在読み出しが行われている任意のＦＩＦＯは、エンプティ状態になったらエンプティ信号を前記リード回路へ出力するようにされ、かつ、前記リード回路は、前記エンプティ信号の入力を受けて次に読み出しが行われるＦＩＦＯからのデータの読み出しに切り替えるようにされてなることを特徴とするＦＩＦＯ回路。
【請求項２】
前記読み出し動作の時間間隔は、前記エンプティ信号が出力される直前のリード信号の出力から当該エンプティ信号の出力までの時間よりも長くなるようにされてなることを特徴とする請求項１に記載のＦＩＦＯ回路。
【請求項３】
前記オールモストフル信号の出力から、実際に前記ＦＩＦＯがフル状態になるまでの時間は、前記ライト回路が前記オールモストフル信号の入力を受けてから現在書き込みが行われているＦＩＦＯに対する書き込み動作を中止するまでの時間よりも長くなるようにされてなることを特徴とする請求項１または請求項２に記載のＦＩＦＯ回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、ＦＩＦＯ回路に係り、特に、データの書き込みおよび読み出しを可能とされたＦＩＦＯと、このＦＩＦＯに対し、ライト信号の入力を受けてデータの書き込み動作を行うライト回路と、リード信号の入力を受けてデータの読み出し動作を行うリード回路とを備えたＦＩＦＯ回路に関する。
【０００２】
【従来の技術】
従来から、プリンタ等の制御回路においては、ラインバッファが使用されているが、このラインバッファは、通常ＦＩＦＯ、すなわち先入れ先出し（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）方式のバッファメモリ（本明細書においては単に「ＦＩＦＯ」と略称する）等によって構成されるようになっている。
【０００３】
【特許文献１】
特開平８−１２９８７３号公報（第１図）
【特許文献２】
特開平１０−５００５２号公報（第１図）
【特許文献３】
特開２０００−３２００１号公報（第１図）
【特許文献４】
特開２００１−９４６１２号公報（第１図）
【特許文献５】
特開２００１−１７６２６２号公報（第１図）
【０００４】
【発明が解決しようとする課題】
しかし、ＦＩＦＯの容量は、二のべき乗で増えていく為、丁度良い容量のＦＩＦＯがない場合、必要以上に容量の大きなＦＩＦＯを使用せざるを得ず、コストアップの原因となっていた。
【０００５】
例えば、ＦＰＧＡの内部ＲＡＭを使用してＦＩＦＯを組み込もうとする場合においても、同様の理由により、効率よくＦＩＦＯを構成することができず、容量が１ランク上のＦＰＧＡを使用してコストアップが生じてしまう場合があった。
【０００６】
このような問題を解決する手段として、小容量のＦＩＦＯを複数個接続し、各ＦＩＦＯに所定量のデータを順次分割して蓄積させることによって、理想の容量のＦＩＦＯを構成することも考えられる。
【０００７】
しかし、この場合においても、同期ＦＩＦＯを使用した場合、読み込みや書き込み動作をしてからＦＩＦＯのステータス信号が動作するまでが数クロックの時間を要するため、１個のＦＩＦＯがフル状態になってから次のＦＩＦＯへ制御を渡すのにタイミングが遅れるため、高速で動作させるのが困難であるといった問題が生じていた。
【０００８】
例えば、図８には、ライトインターバルが長い場合のタイムチャートを、図９には、ライトインターバルが短い場合のタイムチャートを示しているが、図８、図９の双方において、（１）のライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）が最終の書き込みとなり、この書き込みでＦＩＦＯがフル状態になると仮定する。この最終のライト信号が入力されることによって、ＦＩＦＯの容量が限界であることを知らせるためのフル信号（図８、図９においてＦＩＦＯ−　ＦＵＬＬ）が出力される。しかし、ＦＩＦＯ回路が、内部高速化のためパイプライン構造をとっている場合、例えば、図８、図９に示すように、フル信号（ＦＩＦＯ−　ＦＵＬＬ）の出力が、ライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）の入力から２クロック程度遅延してしまう。
【０００９】
この場合、たとえ、フル信号が出力されると同時に上位システムに対してライト信号を停止する指令を出したとしても、図９のような高速ライトを行う場合、最終の書き込み後に（２）に示す次のライトパルスが入力されてしまう。このため、前記のライト信号を停止する指令を出せば、（２）のライトパルスに対応するデータが破棄されることになってしまう。
【００１０】
このようなオーバーランエラーは、読み込み動作においても同様に発生する虞がある。
【００１１】
そこで、このようなオーバーランエラーを回避するために、例えば、１個のＦＩＦＯが完全にフル状態になる前に、このＦＩＦＯからオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）やオールモストエンプティ信号（ＡＬＭＯＳＴ−　ＥＭＰＴＹ）を出力して、この信号を受け取ったら、後続の制御において、ライトインターバルやリードインターバルを長くすることも考えられる。
【００１２】
しかし、この場合においても、回路の構成が複雑になりがちで、コストアップの要因となってしまう。
【００１３】
本発明は、このような問題点に鑑みなされたもので、小容量の高速同期ＦＩＦＯを比較的簡易な回路構成で連結し、大容量を得ることができ、さらに、データの転送を効率的かつ適正に行うことができるＦＩＦＯ回路を提供することを目的とするものである。
【００１４】
【課題を解決するための手段】
前記目的を達成するため本発明に係るＦＩＦＯ回路の特徴は、複数個のＦＩＦＯが、順次にデータの書き込みまたは読み出しを行い得るように連結され、書き込み動作の際には、前記複数個のＦＩＦＯのうち現在書き込みが行われている任意のＦＩＦＯは、フル状態になる前にオールモストフル信号をライト回路へ出力するようにされ、かつ、前記ライト回路は、前記オールモストフル信号の入力を受けて現在書き込みが行われているＦＩＦＯに対する書き込み動作を中止して次に書き込みが行われるＦＩＦＯへのデータの書き込みに切り替えることによってＦＩＦＯの容量を使い切らないようにされ、一方、読み出し動作の際には、現在読み出しが行われている任意のＦＩＦＯは、エンプティ状態になったらエンプティ信号をリード回路へ出力するようにされ、かつ、前記リード回路は、前記エンプティ信号の入力を受けて次に読み出しが行われるＦＩＦＯからのデータの読み出しに切り替えるようにされてなる点にある。
【００１５】
そして、このような構成を採用したことにより、オールモストフル信号を用いて選択されるＦＩＦＯを切り替えることができるため、ＦＩＦＯの最大書き込み周波数で書き込みを行った場合に、フル信号が遅れて出力されるか、または書き込みの間隔が開いてしまった場合であっても、データを取りこぼすことはなく高速の書き込み動作を適正に行うことができ、さらに、例えば、書き込み側において、オールモストフル信号の入力を受けて、このオールモストフル信号が出力されたＦＩＦＯに対するライトインターバルを長くしてこのＦＩＦＯに対するオーバーライトを防止するような複雑な制御回路を構成したり、また、読み出し側において、読み出し動作を高速で行うための複雑な制御回路を構成する必要がないため、回路構成を簡素化することができる。
【００１６】
また、本発明に係るＦＩＦＯ回路の特徴は、前記読み出し動作の時間間隔が、前記エンプティ信号が出力される直前のリード信号の出力から当該エンプティ信号の出力までの時間よりも長くなるようにされてなる点にある。
【００１７】
そして、このような構成を採用したことにより、読み出すべきデータがなくなったＦＩＦＯからのオーバーリードをさらに確実に防止することができる。
【００１８】
さらに、本発明に係るＦＩＦＯ回路の特徴は、前記オールモストフル信号の出力から、実際に前記ＦＩＦＯがフル状態になるまでの時間が、前記ライト回路が前記オールモストフル信号の入力を受けてから現在書き込みが行われているＦＩＦＯに対する書き込み動作を中止するまでの時間よりも長くなるようにされてなる点にある。
【００１９】
そして、このような構成を採用したことにより、フル状態のＦＩＦＯに対するオーバーライトをさらに確実に防止して、データの取りこぼしのない適正な高速書き込み動作を行うことができる。
【００２０】
【発明の実施の形態】
以下、本発明に係るＦＩＦＯ回路の実施形態について図１乃至図７を参照して説明する。
【００２１】
なお、本明細書においては、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）やエンプティ信号（ＥＭＰＴＹ（１）〜（３））等の各種信号を出力するというときは、これらの信号をアサートする、すなわち有効な状態にすることを意味するものとする。また、各信号の出力を中止するというときは、各信号をディアサートする、すなわち無効な状態にすることを意味するものとする。
【００２２】
図１に示すように、本実施形態におけるＦＩＦＯ回路１には、外部装置（上位装置および下位装置を含む、以下同様）から、同期駆動を行うためのクロック信号（ＣＬＯＣＫ）、リセット信号（ＲＥＳＥＴ）、ライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）、ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）およびリード信号（ＦＩＦＯ−　ＲＥＡＤ）の各信号あるいはデータが入力されるようになっている。
【００２３】
また、前記ＦＩＦＯ回路１から外部装置に対しては、フル信号（ＦＩＦＯ−　ＦＵＬＬ）、リードデータ（ＦＩＦＯ−　ＲＥＡＤ−　ＤＡＴＡ）の各信号あるいはデータが出力されるようになっている。
【００２４】
図２は、図１に示したＦＩＦＯ回路１の内部構造を示すブロック図であり、この図２に示すように、本実施形態におけるＦＩＦＯ回路１は、複数（図２においてＦＩＦＯ（１）〜（３）の３個）のＦＩＦＯ２を連結することによって構成されている。
【００２５】
前記ＦＩＦＯ回路１は、前記各ＦＩＦＯ２に接続されたライト回路３を有しており、このライト回路３によって各ＦＩＦＯ２に対して順次に書き込み動作、すなわち前記ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みのための種々の制御が行われるようになっている。
【００２６】
さらに、前記ＦＩＦＯ回路１は、前記各ＦＩＦＯ２に接続されたリード回路４を有しており、このリード回路４によって、各ＦＩＦＯ２に対して順次に読み出し動作、すなわち図４に示すリードデータ（ＦＩＦＯ−　ＲＥＡＤ−　ＤＡＴＡ）の読み出しのための種々の制御が行われるようになっている。
【００２７】
前記ライト回路３は、各ＦＩＦＯ２に対してライト信号（ＷＴ（１）〜（３））を出力するようになっており、このライト信号（ＷＴ（１）〜（３））によって、各ＦＩＦＯ２に対して前記ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みが行われるようになっている。
【００２８】
一方、各ＦＩＦＯ２は、前記ライト回路３に対してオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）を出力するようになっており、このオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）によって、現在書き込みが行われているＦＩＦＯ２がもう少しでフル状態すなわち容量の限界に達することを知らせるようになっている。また、各ＦＩＦＯ２には、上位装置から前記ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）が入力されて一時的に蓄積されるようになっている。
【００２９】
前記リード回路４は、各ＦＩＦＯ２に対してリード信号（ＲＤ（１）〜（３））を出力するようになっており、このリード信号（ＲＤ（１）〜（３））によって、各ＦＩＦＯ２からの前記リードデータ（ＦＩＦＯ−　ＲＥＡＤ−　ＤＡＴＡ）の読み出しが行われるようになっている。
【００３０】
一方、各ＦＩＦＯ２は、前記リード回路４に対してエンプティ信号（ＥＭＰＴＹ（１）〜（３））を出力するようになっており、このエンプティ信号（ＥＭＰＴＹ（１）〜（３））によって、現在読み出しが行われているＦＩＦＯ２が空状態でもはや読み出すべきデータが残存していないことを知らせるようになっている。
【００３１】
また、各ＦＩＦＯ２は、前記リード回路４に対して蓄積したデータをリードデータ（ＲＤ（１）〜（３））として出力するようになっている。
【００３２】
図３は、図２に示したライト回路３の内部構造を示すブロック図であり、この図３に示すように、前記ライト回路３は、書き込み動作を行うＦＩＦＯ２を選択するライトＦＩＦＯセレクタ回路５を有している。
【００３３】
このライトＦＩＦＯセレクタ回路５の出力側には、各ＦＩＦＯ２と同数（図３において３個）の書き込み用ＡＮＤ回路７が接続されている。
【００３４】
この書き込み用ＡＮＤ回路７には、上位装置から前記ライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）が入力されるようになっている。また、前記書き込み用ＡＮＤ回路７には、前記ライトＦＩＦＯセレクタ回路５からセレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）が入力されるようになっており、このセレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）によって、書き込みを行うＦＩＦＯ２が選択されるようになっている。
【００３５】
すなわち、各書き込み用ＡＮＤ回路７への前記セレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）の入力は択一的に行われ、セレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）とライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）との双方が入力された書き込み用ＡＮＤ回路７のみが、この書き込み用ＡＮＤ回路７に対応するＦＩＦＯ２（ＦＩＦＯ（１）〜（３））に対してライト信号（ＷＴ（１）〜（３））を出力するようになっている。
【００３６】
前記ライトＦＩＦＯセレクタ回路５には、外部装置から前記ライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）が入力されるようになっている。
【００３７】
また、前記ライトＦＩＦＯセレクタ回路５には、前記リセット信号（ＲＥＳＥＴ）が入力されるようになっており、このリセット信号（ＲＥＳＥＴ）の入力を受けて、前記ライトＦＩＦＯセレクタ回路５は「ＦＩＦＯ１−　ＳＥＬ」のセレクト信号を出力するようになっている。すなわち、リセット信号（ＲＥＳＥＴ）の入力時には、「ＦＩＦＯ（１）」が、ライトデータの書き込みを行うＦＩＦＯ２として選択されるようになっている。
【００３８】
さらに、前記ライトＦＩＦＯセレクタ回路５には、各ＦＩＦＯ２から前記オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（１）〜（３））と、前記エンプティ信号（ＥＭＰＴＹ（１）〜（３））とが入力されるようになっている。
【００３９】
そして、前記ライトセレクタ回路５は、これらオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（１）〜（３））とエンプティ信号（ＥＭＰＴＹ（１）〜（３））とを参照して、書き込みを行うＦＩＦＯ２の切り替えを判断、実行するようになっている。
【００４０】
すなわち、前記ライトＦＩＦＯセレクタ回路５は、現在選択されているＦＩＦＯ２（例えば、ＦＩＦＯ（１））からオールモストフル信号（例えば、ＡＬＭＯＳＴ−　ＦＵＬＬ（１））が出力され、かつ、次に選択されるＦＩＦＯ２（例えば、ＦＩＦＯ（２））からエンプティ信号（例えば、ＥＭＰＴＹ（２））が出力されていないときは、現在選択されているＦＩＦＯ２（例えば、ＦＩＦＯ（１））のセレクト信号（例えば、ＦＩＦＯ（１）−　ＳＥＬ）の出力を中止して、次に選択されるＦＩＦＯ２（例えば、ＦＩＦＯ（２））のセレクト信号（例えば、ＦＩＦＯ（２）−　ＳＥＬ）を出力するようになっている。なお、このときにライト信号（ＦＩＦＯ−　ＷＲＩＴＥ）は参照しないようになっている。
【００４１】
つまり、本実施形態においては、現在書き込み動作が行われているＦＩＦＯ２の容量が完全に使い切られる前に、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）を用いて書き込みが行われるＦＩＦＯ２を切り替えるようになっている。
【００４２】
これにより、書き込み動作の際にライト信号の周波数を最大にして書き込みを行った場合に、従来のようにフル信号が遅れて出力されたとしても、ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の消失を防止することができ、選択されたＦＩＦＯ２に対して書き込みを適正に行うことができるようになっている。また、書き込みの間隔が空いたとしても、ライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）を取りこぼすことはない。
【００４３】
さらに、例えば、前記オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）の入力を受けた後、このオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）が出力されたＦＩＦＯに対するライトインターバルを長くすることによってこのＦＩＦＯに対するオーバーライトを防止するような複雑な回路を構成する必要がないため、書き込み側の回路構成を簡易にすることができるようになっている。
【００４４】
また、本実施形態においては、ＦＩＦＯ２によるオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）の出力から、当該ＦＩＦＯ２が実際にフル状態になるまでの時間を、ライト回路３がオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）の入力を受けてから、現在書き込みが行われているＦＩＦＯ２に対する書き込み動作を中止するまでの時間すなわちライト信号（ＷＴ（１）〜（３））の出力を中止するまでの時間よりも十分に長い時間にするようになっている。
【００４５】
これにより、フル状態のＦＩＦＯに対するオーバーライトをさらに有効に防止して、データの取りこぼしのない適正な高速書き込み動作を行うことができるようになっている。
【００４６】
前記ライト回路３は、前記ライトＦＩＦＯセレクタ回路５には接続されていない書き込み禁止用ＡＮＤ回路８を有しており、この書き込み禁止用ＡＮＤ回路８には、各ＦＩＦＯ２からオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（１）〜（３））が入力されるようになっている。
【００４７】
そして、前記書き込み禁止用ＡＮＤ回路８は、全てのＦＩＦＯ２がオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（１）〜（３））を出力した場合は、フル信号（ＦＩＦＯ−　ＦＵＬＬ）を出力してＦＩＦＯ２に対する書き込みを禁止するように上位装置に指令するようになっている。
【００４８】
図４は、図２に示したリード回路４の内部構造を示すブロック図であり、この図４に示すように、前記リード回路４は、読み出し動作を行うＦＩＦＯ２を選択するリードＦＩＦＯセレクタ回路９を有している。
【００４９】
このリードＦＩＦＯセレクタ回路９の出力側には、各ＦＩＦＯ２と同数（図４において３個）の読み出し用ＡＮＤ回路１０が接続されている。
【００５０】
この読み出し用ＡＮＤ回路１０には、外部装置から前記リード信号（ＦＩＦＯ−　ＲＥＡＤ）が入力されるようになっている。また、前記読み出し用ＡＮＤ回路１０には、前記リードＦＩＦＯセレクタ回路９からセレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）が入力されるようになっており、このセレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）によって、読み出しを行うＦＩＦＯ２が選択されるようになっている。
【００５１】
すなわち、各読み出し用ＡＮＤ回路１０へのセレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）の入力は、択一的に行われ、セレクト信号（ＦＩＦＯ（１）−　ＳＥＬ〜ＦＩＦＯ（３）−　ＳＥＬ）とリード信号（ＦＩＦＯ−　ＲＥＡＤ）との双方が入力された読み出し用ＡＮＤ回路１０のみが、この読み出し用ＡＮＤ回路１０に対応するＦＩＦＯ（ＦＩＦＯ（１）〜（３））に対してリード信号（ＲＤ（１）〜（３））を出力するようになっている。
【００５２】
前記リードＦＩＦＯセレクタ回路９には、外部装置から前記リード信号（ＦＩＦＯ−　ＲＥＡＤ）が入力されるようになっている。
【００５３】
また、前記リードＦＩＦＯセレクタ回路９には、前記リセット信号（ＲＥＳＥＴ）が入力されるようになっており、このリセット信号（ＲＥＳＥＴ）の入力を受けて、前記リードＦＩＦＯセレクタ回路９は「ＦＩＦＯ（１）−　ＳＥＬ」のセレクト信号を出力するようになっている。すなわち、リセット信号（ＲＥＳＥＴ）の入力時には、「ＦＩＦＯ（１）」が、リードデータ（ＦＩＦＯ−　ＲＥＡＤ−　ＤＡＴＡ）の読み出しを行うＦＩＦＯ２として選択されるようになっている。
【００５４】
さらに、前記リードＦＩＦＯセレクタ回路９には、各ＦＩＦＯ２からエンプティ信号（ＥＭＰＴＹ（１）〜（３））が入力されるようになっており、このエンプティ信号（ＥＭＰＴＹ（１）〜（３））を参照することによって、前記リードＦＩＦＯセレクタ回路９は、読み出しを行うＦＩＦＯ２の切り替えを判断、実行するようになっている。
【００５５】
すなわち、前記リードＦＩＦＯセレクタ回路９は、現在選択されているＦＩＦＯ２（例えば、ＦＩＦＯ（１））からエンプティ信号（例えば、ＥＭＰＴＹ（１））が出力され、かつ、次に選択されるＦＩＦＯ２（例えば、ＦＩＦＯ（２））からエンプティ信号（例えば、ＥＭＰＴＹ（２））が出力されていないときは、現在選択されているＦＩＦＯ２（例えば、ＦＩＦＯ（１））のセレクト信号（例えば、ＦＩＦＯ（１）−　ＳＥＬ）の出力を中止して、次に選択されるＦＩＦＯ２（例えば、ＦＩＦＯ（２））のセレクト信号（ＦＩＦＯ（２）−　ＳＥＬ）を出力するようになっている。これにより、データの読み出しが行われるＦＩＦＯ２が切り替えられるようになっている。
【００５６】
従って、例えば、ＦＩＦＯから読み出すべきデータが空に近くなったことを知らせるオールモストエンプティ信号（ＡＬＭＯＳＴ−　ＥＭＰＴＹ）の入力を受けた後、この信号が出力されたＦＩＦＯに対するリードインターバルを長くすることによってこのＦＩＦＯからのオーバーリードを防止するような複雑な回路を構成する必要がないため、読み出し側の回路構成を簡易にすることができるようになっている。
【００５７】
図４に示すように、前記リード回路４は、各ＦＩＦＯ２と同数（図４において３個）のリードデータ用ＡＮＤ回路１２を有しており、各リードデータ用ＡＮＤ回路１２には、前記リードＦＩＦＯセレクタ回路９からセレクト信号（ＦＩＦＯ１−　ＳＥＬ〜ＦＩＦＯ３−　ＳＥＬ）が入力されるようになっている。
【００５８】
各リードデータ用ＡＮＤ回路１２には、各ＦＩＦＯ２からリードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））が入力されるようになっている。
【００５９】
前記セレクト信号（ＦＩＦＯ１−　ＳＥＬ〜ＦＩＦＯ３−　ＳＥＬ）の入力は択一的に行われ、セレクト信号（ＦＩＦＯ１−　ＳＥＬ〜ＦＩＦＯ３−　ＳＥＬ）とリードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））との双方が入力されたリードデータ用ＡＮＤ回路１２のみが、リードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））を出力するようになっている。
【００６０】
前記リードデータ用ＡＮＤ回路１２の出力側には、リードデータ用ＯＲ回路１３が接続されており、このリードデータ用ＯＲ回路１３は、前記リードデータ用ＡＮＤ回路１２から入力されたリードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））を、リードデータ（ＦＩＦＯ−　ＲＥＡＤ−　ＤＡＴＡ）として出力するようになっている。
【００６１】
そして、図５に例示すように、本実施形態においては、前記リード回路４によるリードデータ（　ＤＡＴＡ）の読み出し動作の時間間隔（図５におけるリード間隔）が、エンプティ信号（ＥＭＰＴＹ）が出力される直前のリード信号（ＲＤ）の出力から当該エンプティ信号（ＥＭＰＴＹ）の出力までの時間よりも十分長くとられている。この結果、例えば、図５において、エンプティ信号（ＥＭＰＴＹ）の出力からリード信号（ＲＤ）の停止までに最低１クロック（ＣＬＯＣＫ）分の時間を要すると仮定した場合においても、エンプティ信号（ＥＭＰＴＹ）の出力後にリード信号が出力されることはない。
【００６２】
これにより、読み出すべきデータがなくなったＦＩＦＯ２からのオーバーリードをさらに確実に防止することができるようになっている。
【００６３】
つまり、ＦＩＦＯ２からのエンプティ信号（ＥＭＰＴＹ（１）〜（３））の入力を受けてセレクト信号（ＦＩＦＯ１−　ＳＥＬ〜ＦＩＦＯ３−　ＳＥＬ）を切り替えるようにしてもタイミングは十分間に合い、リードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））の取りこぼしは生じない。
【００６４】
なお、読み出し動作の時間間隔を何クロック分にするかについては、先にも述べたエンプティ信号（ＥＭＰＴＹ）の出力からリード信号（ＲＤ）の停止までの時間等の諸条件によって異なり、コンセプトに応じて種々変更することができるものである。
【００６５】
前記リード回路４は、前記リードＦＩＦＯセレクタ回路９には接続されていない読み出し禁止用ＡＮＤ回路１４を有しており、この読み出し禁止用ＡＮＤ回路１４には、各ＦＩＦＯ２からエンプティ信号（ＥＭＰＴＹ（１）〜（３））が入力されるようになっている。
【００６６】
そして、前記読み出し禁止用ＡＮＤ回路１４は、全てのＦＩＦＯ２がエンプティ信号（ＥＭＰＴＹ（１）〜（３））を出力した場合に、エンプティ信号（ＦＩＦＯ−　ＥＭＰＴＹ）を出力してＦＩＦＯ２からの読み出しを禁止するように上位装置に指令を出すようになっている。
【００６７】
次に、本実施形態の作用について、図６および図７を参照して説明する。
【００６８】
なお、本実施形態においては、便宜上ＦＩＦＯ（１）乃至（３）の３個のＦＩＦＯ２に対して、順次にライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みまたはリードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））の読み出しを行うものとする。
【００６９】
図６に示すように、各ＦＩＦＯ２に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを行う場合、まず、前記ライトＦＩＦＯセレクタ回路５は、ステップ１（ＳＴ１）に示すように、ＦＩＦＯ（１）が現在選択されているＦＩＦＯ２であるかを判断する。
【００７０】
そして、ＦＩＦＯ（１）が現在選択されているＦＩＦＯ２ならば、ステップ２（ＳＴ２）に進み、そうでなければ、ステップ４（ＳＴ４）に進む。
【００７１】
ステップ２（ＳＴ２）においては、ＦＩＦＯ（１）からオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ１）が出力され、かつ、次に書き込みを行うＦＩＦＯ（２）からエンプティ信号（ＥＭＰＴＹ（２））が出力されているかを判断する。そして、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（１））、エンプティ信号（ＥＭＰＴＹ（２））がともに出力されているならば、ステップ３（ＳＴ３）に進み、そうでなければ、ステップ４に進む。
【００７２】
ステップ３（ＳＴ３）においては、ＦＩＦＯ（１）の選択を解除してこのＦＩＦＯ（１）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを中止するとともに、ＦＩＦＯ（２）を選択してこのＦＩＦＯ（２）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みに切り替える。
【００７３】
ステップ４（ＳＴ４）においては、ＦＩＦＯ（２）が現在選択されているＦＩＦＯ２であるかを判断する。そして、ＦＩＦＯ（２）が現在選択されているＦＩＦＯ２ならば、ステップ５（ＳＴ５）に進み、そうでなければ、ステップ７（ＳＴ７）に進む。
【００７４】
ステップ５（ＳＴ５）においては、ＦＩＦＯ（２）からオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（２））が出力され、かつ、次に書き込みを行うＦＩＦＯ（３）からエンプティ信号（ＥＭＰＴＹ（３））が出力されているかを判断する。そして、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（２））、エンプティ信号（ＥＭＰＴＹ（３））がともに出力されているならば、ステップ６（ＳＴ６）に進み、そうでなければ、ステップ７に進む。
【００７５】
ステップ６（ＳＴ６）においては、ＦＩＦＯ（２）の選択を解除してこのＦＩＦＯ（２）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを中止するとともに、ＦＩＦＯ（３）を選択してこのＦＩＦＯ（３）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みに切り替える。
【００７６】
ステップ７（ＳＴ７）においては、ＦＩＦＯ（３）が現在選択されているＦＩＦＯ２であるかを判断する。そして、ＦＩＦＯ（３）が現在選択されているＦＩＦＯ２ならば、ステップ８（ＳＴ８）に進み、そうでなければ、ステップ１（ＳＴ１）に進む。
【００７７】
ステップ８（ＳＴ８）においては、ＦＩＦＯ（３）からオールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（３））が出力され、かつ、次に書き込みを行うＦＩＦＯ（１）からエンプティ信号（ＥＭＰＴＹ（１））が出力されているかを判断する。そして、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ（３））、エンプティ信号（ＥＭＰＴＹ（１））がともに出力されているならば、ステップ９（ＳＴ９）に進み、そうでなければ、ステップ１（ＳＴ１）に進む。
【００７８】
ステップ９（ＳＴ９）においては、ＦＩＦＯ（３）の選択を解除してこのＦＩＦＯ（３）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを中止するとともに、ＦＩＦＯ（１）を選択してこのＦＩＦＯ（１）に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みに切り替える。
【００７９】
次に、図７に示すように、各ＦＩＦＯ２からのリードデータ（ＲＤ−　ＤＡＴＡ（１）〜（３））の読み出しを行う場合、まず、前記リードＦＩＦＯセレクタ回路９は、ステップ１（ＳＴ１）に示すように、ＦＩＦＯ（１）が現在選択されているＦＩＦＯ２であるかを判断する。そして、ＦＩＦＯ（１）が現在選択されているＦＩＦＯ２ならば、ステップ２（ＳＴ２）に進み、そうでなければ、ステップ４（ＳＴ４）に進む。
【００８０】
ステップ２（ＳＴ２）においては、ＦＩＦＯ（１）からエンプティ信号（ＥＭＰＴＹ（１））が出力され、かつ、次に読み出しを行うＦＩＦＯ（２）からエンプティ信号（ＥＭＰＴＹ（２））が出力されていないかを判断する。そして、ＦＩＦＯ（１）からエンプティ信号（ＥＭＰＴＹ（１））が出力され、かつ、次に読み出しを行うＦＩＦＯ（２）からエンプティ信号（ＥＭＰＴＹ（２））が出力されていなければ、ステップ３（ＳＴ３）に進み、そうでなければ、ステップ４に進む。
【００８１】
ステップ３（ＳＴ３）においては、ＦＩＦＯ（１）の選択を解除してこのＦＩＦＯ（１）からのリードデータ（ＲＤ−　ＤＡＴＡ（１））の読み出しを中止するとともに、ＦＩＦＯ（２）を選択してこのＦＩＦＯ（２）からのリードデータ（ＲＤ−　ＤＡＴＡ（２））の読み出しに切り替える。
【００８２】
ステップ４（ＳＴ４）においては、ＦＩＦＯ（２）が現在選択されているＦＩＦＯ２であるかを判断する。そして、ＦＩＦＯ（２）が現在選択されているＦＩＦＯ２ならば、ステップ５（ＳＴ５）に進み、そうでなければ、ステップ７（ＳＴ７）に進む。
【００８３】
ステップ５（ＳＴ５）においては、ＦＩＦＯ（２）からエンプティ信号（ＥＭＰＴＹ（１））が出力され、かつ、次に読み出しを行うＦＩＦＯ（３）からエンプティ信号（ＥＭＰＴＹ（３））が出力されていないかを判断する。そして、ＦＩＦＯ（２）からエンプティ信号（ＥＭＰＴＹ（１））が出力され、かつ、次に読み出しを行うＦＩＦＯ（３）からエンプティ信号（ＥＭＰＴＹ（３））が出力されていなければ、ステップ６（ＳＴ６）に進み、そうでなければ、ステップ７（ＳＴ７）に進む。
【００８４】
ステップ６（ＳＴ６）においては、ＦＩＦＯ（２）の選択を解除してこのＦＩＦＯ（２）からのリードデータ（ＲＤ−　ＤＡＴＡ（２））の読み出しを中止するとともに、ＦＩＦＯ（３）を選択してこのＦＩＦＯ（３）からのリードデータ（ＲＤ−　ＤＡＴＡ（３））の読み出しに切り替える。
【００８５】
ステップ７（ＳＴ７）においては、ＦＩＦＯ（３）が現在選択されているＦＩＦＯ２であるかを判断する。そして、ＦＩＦＯ（３）が現在選択されているＦＩＦＯ２ならば、ステップ８（ＳＴ８）に進み、そうでなければ、ステップ１（ＳＴ１）に進む。
【００８６】
ステップ８（ＳＴ８）においては、ＦＩＦＯ（３）からエンプティ信号（ＥＭＰＴＹ（３））が出力され、かつ、次に読み出しを行うＦＩＦＯ（１）からエンプティ信号（ＥＭＰＴＹ（１））が出力されていないかを判断する。そして、ＦＩＦＯ（３）からエンプティ信号（ＥＭＰＴＹ（３））が出力され、かつ、次に読み出しを行うＦＩＦＯ（１）からエンプティ信号（ＥＭＰＴＹ（１））が出力されていなければ、ステップ９（ＳＴ９）に進み、そうでなければ、ステップ１（ＳＴ１）に進む。
【００８７】
ステップ９（ＳＴ９）においては、ＦＩＦＯ（３）の選択を解除してこのＦＩＦＯ（３）からのリードデータ（ＲＤ−　ＤＡＴＡ（３））の読み出しを中止するとともに、ＦＩＦＯ（１）を選択してこのＦＩＦＯ（１）からのリードデータ（ＲＤ−　ＤＡＴＡ（１））の読み出しに切り替える。
【００８８】
したがって、本実施形態によれば、オールモストフル信号を参照してＦＩＦＯ２がフル状態になる前に書き込みを行うＦＩＦＯ２を切り替えることができるため、ＦＩＦＯ２に対するライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを、迅速かつ適正に行うことができ、かつ、このようなライトデータ（ＦＩＦＯ−　ＷＲＩＴＥ−　ＤＡＴＡ）の書き込みを簡易な回路構成によって実現することができる。
【００８９】
なお、本発明は前記実施形態のものに限定されるものではなく、必要に応じて種々変更することが可能である。
【００９０】
例えば、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）の出力タイミング、すなわち、例えば、オールモストフル信号（ＡＬＭＯＳＴ−　ＦＵＬＬ）をフル信号の何クロック前に出力するかについては、コンセプトに応じて種々の設定を行うことができる。
【００９１】
【発明の効果】
以上述べたように本発明に係るＦＩＦＯ回路によれば、小容量のＦＩＦＯを簡易な回路によって連結することによって大容量のＦＩＦＯを構成することができるため、コストアップを抑制しつつ、効率的なデータの転送を行うことができる。
【００９２】
また、本発明に係るＦＩＦＯ回路によれば、データのオーバーリードを防止してさらに適正な読み出し動作を実現することができる。
【００９３】
さらに、本発明に係るＦＩＦＯ回路によれば、データのオーバーライトを確実に防止して高速の書き込み動作をさらに適正に行うことができる。
【図面の簡単な説明】
【図１】本発明に係るＦＩＦＯ回路の実施形態を示すブロック図
【図２】図１の内部構造を示すブロック図
【図３】本発明に係るＦＩＦＯ回路の実施形態において、ライト回路の構成を示すブロック図
【図４】本発明に係るＦＩＦＯ回路の実施形態において、リード回路の構成を示すブロック図
【図５】本発明に係るＦＩＦＯ回路の実施形態において、読み出し動作の時間間隔を示すタイムチャート
【図６】本発明に係るＦＩＦＯ回路の実施形態において、各ＦＩＦＯに対するデータの書き込み処理を示すフローチャート
【図７】本発明に係るＦＩＦＯ回路の実施形態において、各ＦＩＦＯからのデータの読み出し処理を示すフローチャート
【図８】従来のＦＩＦＯ回路の問題点を指摘したタイムチャート
【図９】従来のＦＩＦＯ回路の問題点を図７とともに示したタイムチャート
【符号の説明】
１　ＦＩＦＯ回路
２　ＦＩＦＯ
３　ライト回路
４　リード回路
５　ライトＦＩＦＯセレクタ回路
７　リードＦＩＦＯセレクタ回路
【図１】
2004139377.tif 000003
【図２】
2004139377.tif 000004
【図３】
2004139377.tif 000005
【図４】
2004139377.tif 000006
【図５】
2004139377.tif 000007
【図６】
2004139377.tif 000008
【図７】
2004139377.tif 000009
【図８】
2004139377.tif 000010
【図９】
2004139377.tif 000011